Add cheatsheet for net security exam
This commit is contained in:
parent
4eda9008dd
commit
9791aabf17
1 changed files with 172 additions and 0 deletions
172
content/secu_reseaux/99_commandes_utiles/index.md
Normal file
172
content/secu_reseaux/99_commandes_utiles/index.md
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
---
|
||||||
|
title: "Sécurité des réseaux : Commandes utiles"
|
||||||
|
date: 2022-12-01
|
||||||
|
tags: ["nmap", "tcpdump", "MitM"]
|
||||||
|
categories: ["Sécurité des réseaux", "TD"]
|
||||||
|
---
|
||||||
|
|
||||||
|
Le but de cet article est de répertorier les commandes uiles que nous avons
|
||||||
|
utilisés lors de différents TD et d'expliquer le contexte d'utilisation.
|
||||||
|
|
||||||
|
## Nmap
|
||||||
|
|
||||||
|
map est le couteau suisse du scan de port. Il ppeut être utilisé en attaque mais
|
||||||
|
aussi en défense préventive (test de sa propre infrasctucture).
|
||||||
|
|
||||||
|
### découverte de l'hôte seulement
|
||||||
|
|
||||||
|
```
|
||||||
|
nmap -sn <adresse>
|
||||||
|
```
|
||||||
|
|
||||||
|
### déterminer les versions
|
||||||
|
|
||||||
|
```
|
||||||
|
nmap -A -sV <adresse>
|
||||||
|
```
|
||||||
|
|
||||||
|
* `-sV`: lance un scan en essayant de déterminer la version des services en
|
||||||
|
écoute
|
||||||
|
* `-A`: affiche plus d'informations
|
||||||
|
|
||||||
|
### Les différents type de scan
|
||||||
|
|
||||||
|
* `nmap -sS <addr>`: *SYN* scan
|
||||||
|
* `nmap -sX <addr>`: *XMAS* scan
|
||||||
|
* `nmap -sF <addr>`: *FIN* scan
|
||||||
|
|
||||||
|
### Temporiser
|
||||||
|
|
||||||
|
Il est possible de temporiser les différents scan afin de se rendre un peu plus
|
||||||
|
discret avec l'option `-T <num>`. `<num>` étant un chiffre de 0 (plus lent) à 5
|
||||||
|
plus rapide.
|
||||||
|
|
||||||
|
## Spoof ARP
|
||||||
|
|
||||||
|
La command `arpspoof` permet de faire de l'*ARP* cache poisoning en utilisant la
|
||||||
|
technique du *flood* afn de noyer les hôtes du réseau d'annonces.
|
||||||
|
|
||||||
|
```
|
||||||
|
arpspoof -i <dev> -r -t <addr_target> <host>
|
||||||
|
```
|
||||||
|
|
||||||
|
Empoisoser le cache de `<addr_target>` -- ou de tout le reseau si `-t` n;est pas
|
||||||
|
utilisé -- pour détourner le trafic de `<host>`
|
||||||
|
|
||||||
|
## TCP dump
|
||||||
|
|
||||||
|
`tcpdump` est un outils de capture de trame réseau en ligne de commande. Il est
|
||||||
|
possible de le lancer simplement afin qu'il affiche les informations sur la
|
||||||
|
sortie standard:
|
||||||
|
|
||||||
|
```
|
||||||
|
tcpdump -i <dev> -n
|
||||||
|
```
|
||||||
|
* `-i` périphériue à écouter
|
||||||
|
* `-n` ne résout pas les adresse IP vers le nom d'hôte
|
||||||
|
|
||||||
|
Dans le cadre d'un TD cette méthode peut suffire, mais dès que le traffic réseau
|
||||||
|
devient plus important, il est plus difficile de suivre. On peut alors capturer
|
||||||
|
le trafic pour l'analyse avec un outils comme *Wireshark*:
|
||||||
|
|
||||||
|
```
|
||||||
|
tcpump -i <dev> -n -s 1500 -w <file>
|
||||||
|
```
|
||||||
|
|
||||||
|
Ici `-s 1500` limite la taille des paquets à capturer à 1500 bits hitoire de ne
|
||||||
|
pas tronquer les trames. On peut spécifier `-s0` pour ne pas donner de limite.
|
||||||
|
|
||||||
|
`-w <file>` écrit la capture dans le fichier `<file>` en mode binaire
|
||||||
|
|
||||||
|
### requête
|
||||||
|
|
||||||
|
Il est aussi possible de faire en sorte de filter le traffic capturé.
|
||||||
|
|
||||||
|
```
|
||||||
|
tcpdump -i <dev> 'tcp and src <ip> and 80'
|
||||||
|
```
|
||||||
|
|
||||||
|
Ici on capture les trames *TCP* donc la source est `<ip>` et sur le port 80.
|
||||||
|
|
||||||
|
### Utiliser les outils usuel
|
||||||
|
|
||||||
|
Pour utiliser les outils usuels tels que `grep`, `awk` ou `sed` avec *tcpdump*,
|
||||||
|
il faut activer le mode *buffered line* avec le drapeau `-l`, il est aussi
|
||||||
|
conseillé d'activer le mode verbeux avec `-v` (ou `-vv` pour avoir plus de
|
||||||
|
détails):
|
||||||
|
|
||||||
|
```
|
||||||
|
tcpdump -v -l -n 'port http' | grep 'Host\|User-Agent'
|
||||||
|
```
|
||||||
|
|
||||||
|
L'exemple ci-dessus affiche le champs `Host` et `User-Agent` d'une connexion
|
||||||
|
http.
|
||||||
|
|
||||||
|
## Iptables
|
||||||
|
|
||||||
|
### rediriger le traffic sur la machine locale
|
||||||
|
|
||||||
|
Lors d'un forward, il est possible de rediriger le traffic sur la machine locale
|
||||||
|
avec l'option `-j REDIRECT`. Cette option s'utilise sur la table `nat`. voici un
|
||||||
|
exemple pour le traffic http:
|
||||||
|
|
||||||
|
```
|
||||||
|
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 8080
|
||||||
|
```
|
||||||
|
|
||||||
|
## Gnutls
|
||||||
|
|
||||||
|
### Mettre en place un serveur / client (tester les certificats)
|
||||||
|
|
||||||
|
Il est possible d'utiliser gnutls pour tester des certificats et s'assurer que
|
||||||
|
tout fonctionne correctement (le certificat de l'autorité de certification par
|
||||||
|
exemple).
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
# sur le serveur
|
||||||
|
gnutls-serv --x509keyfile=<file.key> --x509certfile=<file.crt>
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
# le client
|
||||||
|
gnutls-cli --x509cafile=<file.pem>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Openssl
|
||||||
|
|
||||||
|
### Création de sa propre CA
|
||||||
|
|
||||||
|
Voici la commande pour générer la clé et le certificate de notre CA.
|
||||||
|
|
||||||
|
```
|
||||||
|
openssl req -x509 -new -newkey rsa:<keysize> -noenc \
|
||||||
|
-key $CANAME.key -sha256 -days 1826 \
|
||||||
|
-out <ca.crt> \
|
||||||
|
-keyout <ca.key> \
|
||||||
|
-subj '<subject>'
|
||||||
|
```
|
||||||
|
|
||||||
|
NMous allons pouvoir fournir le certificat aux machines voulues pour qu'elle
|
||||||
|
acceptent nos certificats et signer les requêtes en signature.
|
||||||
|
|
||||||
|
### Création de certificat
|
||||||
|
|
||||||
|
Il est d'abord nécessaire de créer une clé et une requête en signature. Ces deux
|
||||||
|
étapes sont réalisable en une seule commande:
|
||||||
|
|
||||||
|
```
|
||||||
|
# générer la clé
|
||||||
|
openssl req -new -newkey rsa:<keysize> -sha256 -noenc -out <filename.csr> \
|
||||||
|
-keyout <filename.key>
|
||||||
|
-subj <subject>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Signer la CSR
|
||||||
|
Voici la commande pour signer lea requête en signature avec la clé de notre
|
||||||
|
autorité. C'est ici que nous alons définir la durée de validiter du certificat
|
||||||
|
signé.
|
||||||
|
|
||||||
|
```
|
||||||
|
openssl x509 -req -days 365 -in <filename.csr> -out <filename.crt> -signkey <ca.key>
|
||||||
|
```
|
Loading…
Add table
Add a link
Reference in a new issue