# Labo 1 - SRX
Auteurs: Leonard Klasen, Nathan Rayburn, Léo Zmoos
## Distribution des fichiers de configuration
> Pour simplifier ce labo, je vous ai directement envoyé les fichiers de configuration. Mais dans un environnement où on ne fait pas forcément confiance au serveur, ni à la personne qui distribue les fichiers, ceci n'est pas une bonne pratique.
Quels sont les vecteurs d'attaque pour cette distribution? Qui est une menace?
Réponse:
- Altération des fichiers sur le serveur : un attaquant pourrait modifier les fichiers sur le serveur
- Interception des fichiers en transit: un attaquant pourrait potentiellement récupérer des paquets (man-in-the-middle)
Comment est-ce qu'il faudrait procéder pour palier à ces attaques? Qui devrait envoyer quelle information à qui? Et dans quel ordre?
Réponse:
C'est le client qui doit contacter directement le distributeur. Il faudrait mettre en place une communication sécurisé (TLS par exemple) et le fichier devrait être transmis de cette manière pour éviter les attaques MITM.
## Scanning du réseau (découverte de hôtes)
> a. Quelles options sont proposées par Nmap pour la découverte des hôtes ? Servez-vous du menu « help » de Nmap (nmap -h), du manuel complet (man nmap) et/ou de la documentation en ligne.
Réponse:
| Option | Description |
|-------------------------|-------------------------------------------------------------------------------------------------|
| sn | Scan de ping (pas de scan de port) |
| Pn | Ignorer la découverte d'hôtes et aller directement au scan des ports |
| PS/PA/PU/PY[portlist] | Scans TCP SYN/ACK/UDP/ICMP Echo pour découvrir les hôtes |
| PE/PP/PM | Scans ICMP Echo, Timestamp, et Netmask pour découvrir les hôtes |
| PO[protocol list] | Scans IP Protocol pour découvrir les hôtes |
| disable-arp-ping | Désactive le ping ARP pour la découverte d'hôtes |
| traceroute | Utilise la fonction de traçage de route pour découvrir les hôtes |
> b. Essayer de dresser une liste des hôtes disponibles dans le réseau en utilisant d’abord un « ping scan » (No port scan) et ensuite quelques autres méthodes de scanning (dans certains cas, un seul type de scan pourrait rater des hôtes).
Réponse :
Scan avec l'option -sn
| IP Address | Hostname | Status | Latency |
|-----------------------------|---------------------------------------------|--------|---------|
| 10.1.1.2 | | Up | 0.017s |
| 10.1.1.3 | | Up | 0.017s |
| heig-srx_web_1.heig-srx_customnetwork | | Up | 0.017s |
| 10.1.1.5 | | Up | 0.017s |
| 10.1.1.10 | | Up | 0.018s |
| heig-srx_dns_1.heig-srx_customnetwork | | Up | 0.017s |
| 10.1.1.12 | | Up | 0.017s |
| 10.1.1.14 | | Up | 0.017s |
| heig-srx_jupyter_1.heig-srx_customnetwork | | Up | 0.018s |
| 10.1.1.21 | | Up | 0.018s |
| 10.1.1.22 | | Up | 0.018s |
| heig-srx_mysql_1.heig-srx_customnetwork | | Up | 0.017s |
> c. Avez-vous constaté des résultats différents en utilisant les différentes méthodes ? Pourquoi pensez-vous que ça pourrait être le cas ?
Réponse:
Oui, sachant que nous avions utilisé ping pour découvrir les hôtes, nous avons un potentiel que le firewall d'une machine protège et ne renvoie pas de réponse.
> d. Quelles options de scanning sont disponibles si vous voulez être le plus discret possible ?
Réponse:
L'option -sS permet de faire du scan de port en utilisant SYN.
Le scan SYN est relativement discret et furtif, vu qu'il ne termine jamais les connexions TCP (le handshake n'est pas terminé).
> e. tableau:
| PORT | STATE | SERVICE | VERSION |
|--------|-------|---------|----------------------------------|
| 20/tcp | closed| ftp-data| |
| 21/tcp | closed| ftp | |
| 22/tcp | closed| ssh | |
| 23/tcp | closed| telnet | |
| 25/tcp | closed| smtp | |
| 53/tcp | open | domain | (generic dns response: SERVFAIL) |
| 67/tcp | closed| dhcps | |
| 68/tcp | closed| dhcpc | |
| 69/tcp | closed| tftp | |
| 80/tcp | closed| http | |
|110/tcp | closed| pop3 | |
|443/tcp | closed| https | |
|3306/tcp| closed| mysql | |
> f. Par défaut, si vous ne donnez pas d’option à Nmap concernant les port, quelle est la politique appliquée par Nmap pour le scan ? Quels sont les ports qui seront donc examinés par défaut ? Servez-vous de la documentation en ligne pour trouver votre réponse.
Réponse:
Par défaut, nmap fait un TCP SYN scan. Il scan les ports de 1-1024.
> g. Selon la documentation en ligne de Nmap, quels sont les ports TCP et UDP le plus souvent ouverts ? Quels sont les services associés à ces ports ?
Réponse:
| Port | Protocol | Service |
|---------|----------|----------------------------------------------|
| 80 | TCP | HTTP (Hypertext Transfer Protocol) |
| 443 | TCP | HTTPS (Hypertext Transfer Protocol Secure) |
| 22 | TCP | SSH (Secure Shell) |
| 21 | TCP | FTP (File Transfer Protocol) |
| 25 | TCP | SMTP (Simple Mail Transfer Protocol) |
| 53 | TCP | DNS (Domain Name System) |
| 3389 | TCP | RDP (Remote Desktop Protocol) |
| 445 | TCP | SMB (Server Message Block) |
| 110 | TCP | POP3 (Post Office Protocol version 3) |
| 143 | TCP | IMAP (Internet Message Access Protocol) |
| 53 | UDP | DNS (Domain Name System) |
| 67 | UDP | DHCP (Dynamic Host Configuration Protocol) |
| 123 | UDP | NTP (Network Time Protocol) |
| 161 | UDP | SNMP (Simple Network Management Protocol) |
| 137-139 | UDP | NetBIOS |
h. Dans les commandes Nmap, de quelle manière peut-on cibler un numéro de port spécifique ou un intervalle de ports ? Servez-vous du menu « help » de Nmap (nmap -h), du manuel complet (man nmap) et/ou de la documentation en ligne.
```bash=
nmap -p 80,443,8080 [IP]
```
i. Quelle est la méthode de scanning de ports par défaut utilisée par Nmap si aucune option n’est donnée par l’utilisateur ?
La méthode de scan est TCP SYN.
```bash=
nmap [IP]
```
j. Compléter le tableau suivant avec les options de Nmap qui correspondent à chaque méthode de scanning de port :
| Type de scan | Option nmap |
|-----------------------|-----------------|
| TCP (connect) | -sT |
| TCP SYN | -sS |
| TCP NULL | -sN |
| TCP FIN | -sF |
| TCP XMAS | -sX |
| TCP idle (zombie) | -sI |
| UDP | -sU |
k. Lancer un scan du réseau entier utilisant les méthodes de scanning de port TCP, SYN, NULL et UDP. Y a-t-il des différences au niveau des résultats pour les scans TCP ? Si oui, lesquelles ? Avez-vous un commentaire concernant le scan UDP ?
La commande nmap avec l'option -sS, va effectuer une requête SYN sans attendre l'établissement complète de la connection. Elle est donc plus furtive qu'avec l'option -sT, selon la photo ci-dessous, la requête s'arrêtera à l'étape 3 tandis qu'avec -sT on va effectuer les 5 étapes.
Concernant l'option -sN, c'est la plus furtive car nous allons simplement pas envoyer de SYN et observer la réponse de chaque port.

Concernant le scan UDP, il convient de noter que le protocole UDP est sans connexion et n'envoie pas de réponses de confirmation comme le fait TCP. Le scan ne se termine jamais car aucune réponse est retournée.!
l. Ouvrir Wireshark, capturer sur votre interface réseau et relancer un scan TCP (connect) sur une seule cible spécifique. Observer les échanges entre le scanner et la cible. Lancer maintenant un scan SYN en ciblant spécifiquement la même machine précédente. Identifier les différences entre les deux méthodes et les contraster avec les explications théoriques données en cours. Montrer avec des captures d’écran les caractéristiques qui définissent chacune des méthodes.
nmnap avec ST port 53

nmap avec SS port 53

On voit la différence entre ST et SS. ST qui fait le SYN, SYN ACK et ACK qui est le 3 way handshake, alors que le SS fait le SYN, SYN ACK et arrête le handshake avec le RST par la suite.
m. Quelle est l’adresse IP de la machine avec le plus grand nombre de services actifs ?

n. Trouver l’option de Nmap qui permet d’identifier les services (servez-vous du menu « help » de Nmap (nmap -h), du manuel complet (man nmap) et/ou de la documentation en ligne). Utiliser la commande correcte sur l’un des hôtes que vous avez identifiés avec des ports ouverts (10.1.1.10 vivement recommandé…). Montrer les résultats.
```bash=
a completer
```
o. Chercher l’option de Nmap qui permet d’identifier le système d’exploitation (servez-vous du menu « help » de Nmap (nmap -h), du manuel complet (man nmap) et/ou de la documentation en ligne). Utiliser la commande correcte sur la totalité du réseau. Montrer les résultats.
```bash=
sudo nmap -O 10.1.1.0/24
```
p. Avez-vous trouvé l’OS de toutes les machines ? Sinon, en utilisant l’identification de services, pourrait-on se faire une idée du système de la machine ?
```bash=
Nmap scan report for heig-srx_solr_1.heig-srx_customnetwork (10.1.1.22)
Host is up (0.019s latency).
All 1000 scanned ports on heig-srx_solr_1.heig-srx_customnetwork (10.1.1.22) are in ignored states.
Not shown: 1000 closed tcp ports (reset)
Too many fingerprints match this host to give specific OS details
Network Distance: 2 hops
```
On peut supposer que c'est linux car les paquets reçu par la machine envoie des paquets avec un TTL de 64.
q. Vous voyez une différence entre les machines misent à disposition pour le cours et les machines connectées au réseau. Expliquez pourquoi cette différence est là.
```bash=
a completer
```
r. Essayez de trouver des services vulnérables sur la machine que vous avez scanné avant (vous pouvez aussi le faire sur d’autres machines. Elles ont toutes des vulnérabilités !).
```bash=
a completer
```
Challenge: L’une des vulnérabilités sur la machine 10.1.1.2 est directement exploitable avec rien d’autre que Netcat. Est-ce que vous arrivez à le faire ?
```bash=
a completer
```