Commençons par voir ce qu'il se passe sur une machine « propre », c'est-à-dire non infectée par des chevaux de Troie, ou toute application destinée à en prendre le contrôle à distance.
L'expérience est tentée sur deux postes Windows 98, l'un avec le partage de fichiers activé et l'autre non. Nous faisons un scan de ports TCP et UDP avec nmap depuis un poste Linux situé sur le réseau :
Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ ) Interesting ports on michele.maison.mrs (192.168.0.2): (The 1522 ports scanned but not shown below are in state: closed) Port State Service 139/tcp open netbios-ssn TCP Sequence Prediction: Class=trivial time dependency Difficulty=2 (Trivial joke) Remote operating system guess: Windows NT4 / Win95 / Win98 Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ ) Warning: No TCP ports found open on this machine, OS detection will be MUCH less reliable Interesting ports on michele.maison.mrs (192.168.0.2): (The 1446 ports scanned but not shown below are in state: closed) Port State Service 137/udp open netbios-ns 138/udp open netbios-dgm Too many fingerprints match this host for me to give an accurate OS guess Nmap run completed -- 1 IP address (1 host up) scanned in 8 seconds
Ce qu'il est intéressant de constater au premier abord, c'est que les mêmes ports sont ouverts, que l'on ait activé le partage des fichiers ou non. La seule chose qui diffère, c'est que le poste sur lequel le partage n'a pas été activé n'est pas visible dans le voisinage réseau.
Les seuls ports ouverts sont ceux utilisés par NetBIOS.
Prenons un autre exemple un peu plus compliqué, mon poste de travail sous Windows 2000. (Je vous rappelle qu'il n'est pas directement connecté à l'Internet, j'ai une passerelle Linux entre les deux
Ce poste est considéré comme une station de travail et en aucun cas comme un serveur. Il ne doit donc théoriquement pas y avoir de ports à l'écoute sur l'Internet.
Sur ce poste, j'utilise Frontpage 2000, j'ai donc un serveur web personnel (proposé par Windows 2000). Voici ce que donne un scan de ports TCP avec Nmap depuis ma passerelle Linux:
Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ ) Interesting ports on chris.maison.mrs (192.168.0.10): (The 1517 ports scanned but not shown below are in state: closed) Port State Service 80/tcp open http 135/tcp open loc-srv 139/tcp open netbios-ssn 443/tcp open https 445/tcp open microsoft-ds TCP Sequence Prediction: Class=random positive increments Difficulty=14803 (Worthy challenge) Remote operating system guess: Windows 2000 RC1 through final release Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
Comme vous le constatez, il y a 5 ports ouverts en écoute sur cette machine. Parmi ceux-ci, il y en a un bon nombre qui présentent des dangers.
C'est normal, PWS est actif (Personal Web Server). Ce serveur HTTP est utile pour la composition de sites avec Frontpage, pour la mise à disposition de documents sur le réseau privé, en revanche, il pourrait être dangereux de le laisser visible sur l'Internet…
Celui-ci doit présenter quelques dangers…
C'est le serveur RPC (Remote Procedure Call), c'est-à-dire le mécanisme qui permet à distance de déclencher l'exécution de procédures sur ma machine (par un administrateur uniquement). Il est clair que ce port ne doit pas être accessible depuis l'Internet.
Ah, celui là est bien connu. C'est un des mécanismes de service de noms NetBIOS (le voisinage réseau). Absolument rien à faire sur l'Internet…
HTTP « sécurisé » (HTTPS). Ouvert également par PWS.
Celui-ci, c'est une originalité de Windows 2000. Pour le service de noms, Microsoft a toujours utilisé son système WINS, basé sur NetBIOS. Depuis Windows 2000, il existe également un service de noms basé sur un DNS dynamique, qui n'utilise pas NetBIOS. Ce port est ouvert pour ce nouveau service et ne devrait se rencontrer que sur les machines Windows 2000 et suivants
Passons maintenant à un scan de ports UDP:
Starting nmap V. 2.53 by fyodor@insecure.org ( www.insecure.org/nmap/ ) Warning: No TCP ports found open on this machine, OS detection will be MUCH less reliable Interesting ports on chris.maison.mrs (192.168.0.10): (The 1442 ports scanned but not shown below are in state: closed) Port State Service 135/udp open loc-srv 137/udp open netbios-ns 138/udp open netbios-dgm 445/udp open microsoft-ds 500/udp open isakmp 3456/udp open vat Too many fingerprints match this host for me to give an accurate OS guess Nmap run completed -- 1 IP address (1 host up) scanned in 9 seconds
Nous avons déjà vu le port 135. Les ports 137 et 138 sont des services NetBIOS toujours pour la résolution des noms et les ouvertures de sessions. Nous avons également déjà rencontré le port 445, spécifique à Windows 2000.
Le port 500 est utilisé par HTTPS, pour la négociation de clés de cryptage. Encore un port ouvert par PWS.
IIS n'est pas installé. Un scan TCP :
Starting Nmap 4.53 ( http://insecure.org ) at 2008-05-26 09:30 CEST Initiating ARP Ping Scan at 09:30 Scanning 172.16.129.250 [1 port] Completed ARP Ping Scan at 09:30, 0.01s elapsed (1 total hosts) Initiating Parallel DNS resolution of 1 host. at 09:30 Completed Parallel DNS resolution of 1 host. at 09:30, 0.00s elapsed Initiating SYN Stealth Scan at 09:30 Scanning 172.16.129.250 [1714 ports] Discovered open port 3389/tcp on 172.16.129.250 Discovered open port 135/tcp on 172.16.129.250 Discovered open port 139/tcp on 172.16.129.250 Discovered open port 445/tcp on 172.16.129.250 Completed SYN Stealth Scan at 09:30, 1.29s elapsed (1714 total ports) Initiating Service scan at 09:30 Scanning 4 services on 172.16.129.250 Completed Service scan at 09:30, 6.00s elapsed (4 services on 1 host) Initiating OS detection (try #1) against 172.16.129.250 Retrying OS detection (try #2) against 172.16.129.250 Retrying OS detection (try #3) against 172.16.129.250 Retrying OS detection (try #4) against 172.16.129.250 Retrying OS detection (try #5) against 172.16.129.250 SCRIPT ENGINE: Initiating script scanning. SCRIPT ENGINE: rpcinfo.nse is not a file. SCRIPT ENGINE: Aborting script scan. Host 172.16.129.250 appears to be up ... good. Interesting ports on 172.16.129.250: Not shown: 1710 closed ports PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 3389/tcp open microsoft-rdp Microsoft Terminal Service MAC Address: 00:11:2F:41:C7:57 (Asustek Computer) No exact OS matches for host (If you know what OS is running on it, see http://insecure.org/nmap/submit/ ). Network Distance: 1 hop TCP Sequence Prediction: Difficulty=258 (Good luck!) IP ID Sequence Generation: Incremental Service Info: OS: Windows Read data files from: /usr/share/nmap OS and Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ . Nmap done: 1 IP address (1 host up) scanned in 17.615 seconds Raw packets sent: 1938 (88.840KB) | Rcvd: 1800 (85.270KB)
Avec le pare-feu actif, en autorisant les exceptions suivantes :
Starting Nmap 4.53 ( http://insecure.org ) at 2008-05-26 09:36 CEST Initiating ARP Ping Scan at 09:36 Scanning 172.16.129.250 [1 port] Completed ARP Ping Scan at 09:36, 0.01s elapsed (1 total hosts) Initiating Parallel DNS resolution of 1 host. at 09:36 Completed Parallel DNS resolution of 1 host. at 09:36, 0.00s elapsed Initiating SYN Stealth Scan at 09:36 Scanning 172.16.129.250 [1714 ports] Discovered open port 3389/tcp on 172.16.129.250 Discovered open port 135/tcp on 172.16.129.250 Discovered open port 139/tcp on 172.16.129.250 Discovered open port 445/tcp on 172.16.129.250 Completed SYN Stealth Scan at 09:36, 8.66s elapsed (1714 total ports) Initiating Service scan at 09:36 Scanning 4 services on 172.16.129.250 Completed Service scan at 09:36, 6.00s elapsed (4 services on 1 host) Initiating OS detection (try #1) against 172.16.129.250 Retrying OS detection (try #2) against 172.16.129.250 SCRIPT ENGINE: Initiating script scanning. SCRIPT ENGINE: rpcinfo.nse is not a file. SCRIPT ENGINE: Aborting script scan. Host 172.16.129.250 appears to be up ... good. Interesting ports on 172.16.129.250: Not shown: 1710 filtered ports PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 3389/tcp open microsoft-rdp Microsoft Terminal Service MAC Address: 00:11:2F:41:C7:57 (Asustek Computer) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose|authentication server Running (JUST GUESSING) : Microsoft Windows XP|2000|2003 (98%), Juniper Windows 2000 (90%) Aggressive OS guesses: Microsoft Windows XP SP2 (98%), Microsoft Windows 2000 SP4 or Windows XP SP2 (93%), Microsoft Windows 2003 Small Business Server (93%), Microsoft Windows XP Professional SP2 (93%), Microsoft Windows Server 2003 SP0 or Windows XP SP2 (93%), Microsoft Windows Server 2003 SP1 or SP2 (91%), Microsoft Windows XP SP 2 (91%), Microsoft Windows XP SP2 (firewall disabled) (91%), Microsoft Windows XP Professional SP2 (firewall enabled) (91%), Microsoft Windows Server 2003 SP2 (90%) No exact OS matches for host (test conditions non-ideal). Network Distance: 1 hop TCP Sequence Prediction: Difficulty=260 (Good luck!) IP ID Sequence Generation: Incremental Service Info: OS: Windows Read data files from: /usr/share/nmap OS and Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ . Nmap done: 1 IP address (1 host up) scanned in 19.020 seconds Raw packets sent: 3493 (157.302KB) | Rcvd: 31 (2132B)
Pas grand chose de changé ici.
Voyons maintenant avec le pare-feu actif, sans aucune exception :
Starting Nmap 4.53 ( http://insecure.org ) at 2008-05-26 09:45 CEST Initiating ARP Ping Scan at 09:45 Scanning 172.16.129.250 [1 port] Completed ARP Ping Scan at 09:45, 0.02s elapsed (1 total hosts) Initiating Parallel DNS resolution of 1 host. at 09:45 Completed Parallel DNS resolution of 1 host. at 09:45, 0.00s elapsed Initiating SYN Stealth Scan at 09:45 Scanning 172.16.129.250 [1714 ports] Completed SYN Stealth Scan at 09:45, 36.54s elapsed (1714 total ports) Initiating Service scan at 09:45 Initiating OS detection (try #1) against 172.16.129.250 Retrying OS detection (try #2) against 172.16.129.250 SCRIPT ENGINE: Initiating script scanning. SCRIPT ENGINE: rpcinfo.nse is not a file. SCRIPT ENGINE: Aborting script scan. Host 172.16.129.250 appears to be up ... good. All 1714 scanned ports on 172.16.129.250 are filtered MAC Address: 00:11:2F:41:C7:57 (Asustek Computer) Too many fingerprints match this host to give specific OS details Network Distance: 1 hop Read data files from: /usr/share/nmap OS and Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ . Nmap done: 1 IP address (1 host up) scanned in 39.523 seconds Raw packets sent: 3477 (157.546KB) | Rcvd: 18 (936B)
La moralité de l'histoire, c'est que dans ce cas, plus aucun port n'est accessible, ce qui est plutôt une bonne nouvelle si votre machine est directement connectée à l'internet.
Il est clair qu'il y a toujours quelques ports ouverts sur un hôte, sauf dans le cas de Windows XP (SP3 ici), avec le pare-feu actif sans aucune exception. Si les ports UDP ne présentent pas trop de dangers encore que…), les ports TCP sont plus inquiétants.
Par ailleurs, certaines machines de marque comme Compaq ou Hewlett Packard installent des dispositifs d'administration distante qui ouvrent également des ports à l'écoute et l'utilisateur ne le sait pas forcément.
Il importe donc de savoir avec le plus de précision possible qu'est ce qui est installé sur sa machine, volontairement ou involontairement.