Nmap est un outil, très populaire dans le milieu de la sécurité informatique, créé par un certain Fyodor.
Dans un premier temps, nous allons simplement lancer un scan simple pour voir comment réagit le logiciel :
adminbdd ~ # nmap 127.0.0.1 Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-04-26 11:37 CEST Interesting ports on adminbdd (127.0.0.1): Not shown: 1671 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 80/tcp open http 199/tcp open smux 443/tcp open https 3306/tcp open mysql 5432/tcp open postgres 8009/tcp open ajp13 Nmap finished: 1 IP address (1 host up) scanned in 0.063 seconds
Le scanne s'effectue très rapidement. Véfifions avec la commande netstap si les informations correspondent :
adminbdd ~ # netstat -tpan | grep LISTEN tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN 23441/snmpd tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 15040/mysqld tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 7633/vsftpd tcp 0 0 0.0.0.0:8182 0.0.0.0:* LISTEN 29881/imdc tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 5675/sshd tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 29697/postmaster tcp 0 0 127.0.0.1:8185 0.0.0.0:* LISTEN 29870/imdc tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 5487/sendmail tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 9960/sshd tcp 0 0 0.0.0.0:8091 0.0.0.0:* LISTEN 3350/mysqld tcp 0 0 :::8009 :::* LISTEN 3298/java tcp 0 0 :::80 :::* LISTEN 17075/httpd tcp 0 0 :::8181 :::* LISTEN 28261/intermapperd tcp 0 0 :::22 :::* LISTEN 5675/sshd tcp 0 0 ::1:6010 :::* LISTEN 9960/sshd tcp 0 0 :::8090 :::* LISTEN 3298/java tcp 0 0 :::443 :::* LISTEN 17075/httpd tcp 0 0 ::ffff:127.0.0.1:8092 :::* LISTEN 3298/java
On peut constater une légère différence entre ce que nmap et netstat mais globalement cela correspond.
Essayons maintenant l'option pour découvrir sur quel système je tourne actuellement :
adminbdd ~ # nmap -O 127.0.0.1 Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-04-26 11:45 CEST Interesting ports on adminbdd (127.0.0.1): Not shown: 1671 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 25/tcp open smtp 80/tcp open http 199/tcp open smux 443/tcp open https 3306/tcp open mysql 5432/tcp open postgres 8009/tcp open ajp13 No exact OS matches for host (If you know what OS is running on it, see http://www.insecure.org/cgi-bin/nmap-submit.cgi). TCP/IP fingerprint: SInfo(V=4.11%P=x86_64-redhat-linux-gnu%D=4/26%Tm=4F99193E%O=21%C=1) TSeq(Class=RI%gcd=1%SI=45E7A0%IPID=Z%TS=1000HZ) TSeq(Class=RI%gcd=1%SI=45E799%IPID=Z%TS=1000HZ) TSeq(Class=RI%gcd=1%SI=45E8AC%IPID=Z%TS=1000HZ) T1(Resp=Y%DF=Y%W=8000%ACK=S++%Flags=AS%Ops=MNNTNW) T2(Resp=N) T3(Resp=Y%DF=Y%W=8000%ACK=S++%Flags=AS%Ops=MNNTNW) T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) PU(Resp=Y%DF=N%TOS=C0%IPLEN=164%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E) Uptime 20.997 days (since Thu Apr 5 11:49:42 2012) Nmap finished: 1 IP address (1 host up) scanned in 10.737 seconds
Le scanne a un peu de mal à trouver les bonnes informations. Que nous dit uname ?
adminbdd ~ # uname -a Linux adminbdd 2.6.18-164.11.1.el5 #1 SMP Wed Jan 20 07:32:21 EST 2010 x86_64 x86_64 x86_64 GNU/Linux
On se rapproche de la vérité mais je n'ai pas eu la bonne réponse. En fait, je suis actuellement sur un serveur VMware ESXi dans une machine virtuelle sous CentOS 5.4
De plus, comme il est rappelé dans le cours, il y a de forte chance que la base de signature soit dépassée.
Par défaut, nmap ne scanne que les services TCP contrairement à l'UDP qui nécessite d'être demandé explicitement :
adminbdd ~ # nmap -sU 127.0.0.1 Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-04-26 12:11 CEST Interesting ports on adminbdd (127.0.0.1): Not shown: 1484 closed ports PORT STATE SERVICE 68/udp open|filtered dhcpc 161/udp open|filtered snmp 162/udp open|filtered snmptrap Nmap finished: 1 IP address (1 host up) scanned in 1.231 seconds
Essayons maintenant de savoir exactement quelles sont les versions des logiciels serveurs :
adminbdd ~ # nmap -A 127.0.0.1 Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-04-26 12:18 CEST Interesting ports on adminbdd (127.0.0.1): Not shown: 1671 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.5 22/tcp open ssh OpenSSH 4.3 (protocol 2.0) 25/tcp open smtp Sendmail 8.13.8/8.13.8 80/tcp open http Apache httpd 199/tcp open smux Linux SNMP multiplexer 443/tcp open ssl/http Apache httpd 3306/tcp open mysql MySQL 5.0.77 5432/tcp open postgres? 8009/tcp open ajp13? 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi : SF-Port5432-TCP:V=4.11%I=7%D=4/26%Time=4F99210D%P=x86_64-redhat-linux-gnu% SF:r(SMBProgNeg,97,"E\0\0\0\x96SFATAL\0C0A000\0MProtocole\x20non\x20suppor SF:t\xc3\xa9e\x20de\x20l'interface\x2065363\.19778\x20:\x20le\x20serveur\x SF:20supporte\x20de\x201\.0\x20\xc3\xa0\n3\.0\0Fpostmaster\.c\0L1454\0RPro SF:cessStartupPacket\0\0"); No exact OS matches for host (If you know what OS is running on it, see http://www.insecure.org/cgi-bin/nmap-submit.cgi). TCP/IP fingerprint: SInfo(V=4.11%P=x86_64-redhat-linux-gnu%D=4/26%Tm=4F99211D%O=21%C=1) TSeq(Class=RI%gcd=1%SI=C46E8%IPID=Z%TS=1000HZ) TSeq(Class=RI%gcd=1%SI=C477F%IPID=Z%TS=1000HZ) TSeq(Class=RI%gcd=1%SI=C46CF%IPID=Z%TS=1000HZ) T1(Resp=Y%DF=Y%W=8000%ACK=S++%Flags=AS%Ops=MNNTNW) T2(Resp=N) T3(Resp=Y%DF=Y%W=8000%ACK=S++%Flags=AS%Ops=MNNTNW) T4(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T5(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) T6(Resp=Y%DF=Y%W=0%ACK=O%Flags=R%Ops=) T7(Resp=Y%DF=Y%W=0%ACK=S++%Flags=AR%Ops=) PU(Resp=Y%DF=N%TOS=C0%IPLEN=164%RIPTL=148%RID=E%RIPCK=E%UCK=E%ULEN=134%DAT=E) Uptime 21.020 days (since Thu Apr 5 11:49:43 2012) Service Info: Host: localhost.localdomain; OSs: Unix, Linux Nmap finished: 1 IP address (1 host up) scanned in 22.549 seconds
Nmap a également du mal à détecter la version de certains services comme Postgres. La bonne version était :
adminbdd home # postgres --version postgres (PostgreSQL) 8.1.23
Exercice : Vous vous trouvez sur un réseau qui possède en plus de votre ordinateur, un autre ordinateur qui possède un firewall mal configuré. Vous avez besoin de savoir quels sont les services à l’écoute sur cet ordinateur. Un premier scan vous a appris que le service 53/udp n’est pas filtré. Cherchez dans les options de nmap une solution pour passer par dessus ce filtrage et retourner les informations nécessaires, depuis votre ordinateur, sans avoir accès à l’ordinateur distant, autre que par le service dns.
De nombreuses options sont disponibles, vous permettant entre autre différents types de scans, sur des rangs de ports et d’ip. N’hésitez pas à passer par le frontend pour découvrir des options et vous plonger dans le manuel.
Nikto est un scanner de serveur web. Contrairement à nmap, il ne va pas s’intéresser à la pile tcp/ip de la machine, mais plus principalement, dans notre cas, au serveur apache. C’est un outil très utile lorsque l'on met en place des serveurs, pour vérifier la pertinence de la sécurité web. Pour plus d'information, il peut être intéressant d'aller jeter un oeil sur le site.
$ nikto -g -h eof.eu.org -------------------------------------------- - Nikto 1.34/1.31 - www.cirt.net + Target IP: 195.115.89.182 + Target Hostname: eof.eu.org + Target Port: 80 + Start Time: Wed Aug 31 00:18:50 2005 -------------------------------------------- + Server: Apache/1.3.33 (Debian GNU/Linux) PHP/4.3.10-15 - Retrieved X-Powered-By header: PHP/4.3.10-15 + PHP/4.3.10-15 appears to be outdated (current is at least 5.0.1) + Apache/1.3.33 appears to be outdated (current is at least Apache/2.0.52). Apache 1.3.31 is still maintained and considered secure. + PHP/4.3.10-15 appears to be outdated (current is at least 5.0.1) + PHP/4.3.1 - PHP below 4.3.3 may allow local attackers to safe mode and gain access to unauthorized files. BID-8203.
On s’aperçoit tout d’abord que c’est un logiciel très verbeux, mais qui semble au fait de ce qui se passe sur la machine. On constatera par contre un faux positif sur la dernière ligne, c’est à dire une remontée d’alarme qui ne devrait pas nous être donnée.
Attention, ce logiciel est très bavard lorsqu'on l’utilise, mais cela va dans les deux sens, ce qui signifie que l’administrateur retrouvera votre trace dans les logs de son serveur web.
Exercice : lancez nikto sur votre propre serveur web et relevez les faux positifs. Analysez-les et remontez le tout par mail à votre professeur.
Je n'ai pas de véritable serveur Web mais pour le besoin du test, je lance un scanne sur ma propre machine équipé du daemon httpd.
adminbdd nikto-2.1.4 # perl nikto.pl -h 127.0.0.1 - ***** SSL support not available (see docs for SSL install) ***** - Nikto v2.1.4 --------------------------------------------------------------------------- + Target IP: 127.0.0.1 + Target Hostname: adminbdd + Target Port: 80 + Start Time: 2012-04-27 16:07:18 --------------------------------------------------------------------------- + Server: Apache + No CGI Directories found (use '-C all' to force check all possible dirs) + ETag header found on server, inode: 32770, size: 57, mtime: 0x4bd66aae08f80 + Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE + OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST + OSVDB-3268: /manual/: Directory indexing found. + OSVDB-3092: /manual/: Web server manual found. + OSVDB-3268: /icons/: Directory indexing found. + OSVDB-3268: /manual/images/: Directory indexing found. + OSVDB-3233: /icons/README: Apache default file found. + 6448 items checked: 1 error(s) and 8 item(s) reported on remote host + End Time: 2012-04-27 16:07:45 (27 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
D'après le rapport de Nikto, je suis vulnérable aux faille du type XST (Cross Site Tracing). Un faille XST, contrairement à la faille XSS, permet d'exploiter les contrôles qui autorise l'exécution de HTTP TRACE. Je suis loin de pouvoir donner plus de détail mais en cherchant un peu je suis tombé sur ce site qui explique pas mal de chose.
Nessus est un scanner de sécurité, écrit par Renaud Deraison en 1998, et qui a su s’attirer les honneurs de la profession. Basé sur un langage propre à lui, le nasl, nessus utilise un grand nombre de plugin pour vérifier la vulnérabilité d’un ou plusieurs hôtes. Décomposé en une solution client-serveur, il autorise ainsi une souplesse plus grande dans son utilisation. Solution multi-utilisateurs, vous pouvez choisir d’autoriser ceux-ci sous certaines conditions et les authentifier soit par mot de passe, soit par certificat. Lorsque vous lancez nessus, il vous demande au préalable de vous authentifier. Par la suite, vous avez accès à la liste des plugins, d’abord générale, puis particulière.
En fonction de l’environnement que vous souhaitez auditer, ne sélectionnez pas toutes les options (dans le cas contraire, l’audit se voit rallongé en temps).
À la fin de son travail, une fenêtre d’analyse de résultat vous permet de prendre connaissance des faiblesses de votre système. Vous pouvez sauvegarder ces résultats sous différentes formes.
Exercice : Installez nessus et lancez un audit de votre machine, comme présenté dans la démo de nessus. Analysez les résultats.