Étiquette : nmap

9 janvier 2019 /
Scan rapide des ports 0 à 65535
 nmap -p0-65535 192.168.0.14 -T5
18 mai 2017 /

Voici comment détecter rapidement les machines vulnérable à l’exploit WannaCry grâce à Nmap (version 7 minimum) et  du plugin associé à l’exploit : smb-vuln-ms17-010.nse.

Vous pouvez vérifié votre version de Nmap avec la commande suivante:

nmap -V

Nmap version 5.51 ( http://nmap.org )

Si vous avez une version inférieur à la 7, il faudra compiler Nmap à partir de la dernière version disponible (nmap-7.40.tar.bz2 actuellement).

cd /usr/share/
wget https://nmap.org/dist/nmap-7.40.tar.bz2
bzip2 -cd nmap-7.40.tar.bz2 | tar xvf -
cd nmap-7.40
./configure
make
make install

Maintenant que Nmap est installé et en version au moins égale à la 7.4, nous allons installer le plugin nécessaire pour identifier les machines vulnérable à Wannacry.

Pour cela nous devons trouver le répertoire contenant les scripts Nmap, vous pouvez pour cela vous aider de cette commande:

locate -i *.nse

ou

locate -i nmap | grep -i script

Une fois trouvé, on se rend dedans et on télécharge le plugin:

cd /usr/share/nmap-7.40/scripts/
wget https://raw.githubusercontent.com/cldrn/nmap-nse-scripts/master/scripts/smb-vuln-ms17-010.nse

On met à jour la base de donnée de Nmap:

cd /usr/share/nmap-7.40/
./nmap --script-updatedb

Pour scanner une machine en 192.168.0.33 et générer le résultat dans un fichier HTLM:

./nmap -sC -p 445 --script smb-vuln-ms17-010.nse 192.168.0.33 -oX scan.xml && xsltproc scan.xml -o "wannacry_192.168.0.33_`date +%d%m%y`.html"

 

On peut ensuite consulter le fichier HTML contenant rapport généré par Nmap:

 

 

Pour scanner le réseau 192.168.0.0/24 et générer le résultat dans un fichier HTLM:

./nmap -sC -p 445 -max-hostgroup 3 -open --script smb-vuln-ms17-010.nse 192.168.0.0/24 -oX scan.xml && xsltproc scan.xml -o "wannacry_192.168.0.0-24_`date +%d%m%y`.html"

 

On peut ensuite consulter le fichier HTML contenant rapport généré par Nmap:

 

 

Pour scanner une liste d’adresse IP et générer le résultat dans un fichier HTLM:

vi ip.txt

Dans le fichier ip.txt nous allons mettre toute nos adresse IP à scanner (une adresse ip par ligne) et on le donne en argument à Nmap:

./nmap -sC -p 445 -max-hostgroup 3 -open --script smb-vuln-ms17-010.nse -iL ip.txt -oX scan.xml && xsltproc scan.xml -o "wannacry_listeIP_`date +%d%m%y`.html"

 

Si aucune machine vulnérable à l’exploit SMBv1 n’est détectée (ou que le service n’est pas activé, patché ou pas), la sortie sera vide.
Si une machine à le protocole SMBv1 activé mais qu’il a été patché, la sortie affichera « Could not connect to ‘IPC$’ « .

Mais si une machine vulnérable à l’exploit SMBv1 est détectée (service activé et non patché), voici la sortie que vous allez avoir:

Starting Nmap 7.40 ( https://nmap.org ) at 2017-05-18 12:16 CEST
Nmap scan report for 192.168.0.33
Host is up (0.0013s latency).
PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: 00:0C:29:E5:8A:29 (VMware)

Host script results:
| smb-vuln-ms17-010:
|   VULNERABLE:
|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)

|     State: VULNERABLE

|     IDs:  CVE:CVE-2017-0143

|     Risk factor: HIGH

|       A critical remote code execution vulnerability exists in Microsoft SMBv1

|        servers (ms17-010)
.
|
|     Disclosure date: 2017-03-14
|     References:
|       https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|       https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143

Nmap done: 1 IP address (1 host up) scanned in 13.61 seconds

 

Et voila, vous savez maintenant le nombre machine Windaube qu’il faut patcher…

 

1 mai 2016 /

Telnet, (depuis un serveur distant)

telnet 192.168.0.14 20000

Si le port est ouvert:

Trying 192.168.0.14...
Connected to entropia (192.168.0.14).
Escape character is '^]'.

Si le port est fermé (ou service non démarré):

Trying 192.168.0.14...
telnet: connect to address 192.168.0.14: Connection refused
telnet: Unable to connect to remote host: Connection refused

Netstat, (pour tester en local)

netstat -paunt | grep 3306; echo $?

Si le port est ouvert:

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1979/mysqld
0

Si le port est fermé (ou service non démarré):

1

Netcat, (depuis un serveur distant)

nc -v -z 192.168.0.14 3306; echo $?

Si le port est ouvert:

Connection to 192.168.0.14 3306 port [tcp/mysql] succeeded!
0

Si le port est fermé (ou service non démarré):

nc: connect to 192.168.0.14 port 3306(tcp) failed: Connection refused
1

nc  192.168.0.14 3306< /dev/null ; echo $?

Si le port est ouvert:

4
5.1.73▒d))4f*<,i▒N*'%#~rC8/#`0

Si le port est fermé (ou service non démarré):
1

Wget pour tester un serveur web, (depuis un serveur distant)

wget -qO- 192.168.0.14:80 ; echo $?

wget -q --spider 192.168.0.14:80 ; echo $?

Curl, (depuis un serveur distant)

curl telnet://192.168.0.14:22

Si le port est ouvert, la commande restera bloquée car elle attend que l’on saisisse quelque chose. ctrl+c pour sortir.

Si le port est fermé:

curl: (7) couldn't connect to host

Bash, (depuis un serveur distant)

timeout 1 bash -c 'cat < /dev/null > /dev/tcp/192.168.0.14/22' ; echo $?

Si le port est ouvert:
0
Si le port est fermé:

bash: connect: Connexion refusée
bash: /dev/tcp/192.168.0.14/22: Connexion refusée
1

Nmap, (depuis un serveur distant)

nmap -p 80 192.168.0.14

Si le port est ouvert:

Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-29 10:00 CEST
Nmap scan report for entropia.local (192.168.0.14)
Host is up (0.00068s latency).
PORT   STATE SERVICE
80/tcp open  http
MAC Address: 00:50:56:01:27:55 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

Si le port est fermé:

Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-29 10:06 CEST
Nmap scan report for entropia.local (192.168.0.14)
Host is up (0.00045s latency).
PORT   STATE  SERVICE
80/tcp closed http
MAC Address: 00:50:56:01:27:55 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

Pour tester plusieurs port en même temps:

nmap -p 22,1944,20000 192.168.0.14

Python, (depuis un serveur distant)

python
import socket
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('192.168.0.14' , 80))
clientsocket.sent('\n')

Si le port est ouvert, vous arriverez à faire un « clientsocket.sent(‘\n’) » (qui vous retournera surement cette une erreur):
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: '_socketobject' object has no attribute 'sent'

Si le port est fermé, au moment du « clientsocket.connect((‘192.168.0.14’ , 80)) » :
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused