Cerner une cible

 

Pour combattre un ennemi il faut le connaître. C'est pareil pour un hack, il va falloir obtenir un certain nombre de renseignements (le plus possible d'ailleurs) sur la machine que l'ont veut hacker, on va l'appeler la machine "cible". Pour celà on dispose de pas mal d'outils. Tous ne s'appliqueront pas à toutes les machines car leur niveau de sécurité diffère et certains se révéleront inefficaces.

Là on ne parle pas de hack foireux à la BO (Back Orifice) ou avec quelques autres taupes et troyens. Là c'est du hack de serveurs qu'il sagit et plus du pc de grand mère sous win9X. Les risques commencent véritablement pour vous ici mais comme j'imagine que vous en êtes conscient, on va commencer.

Dans cet article je ne donne pas d'adresse précise de serveur comme j'ai fais pour le hack par ftp car ça redonnerait encore lieu à des abus. Donc le serveur sera celui de la boite "assassin" et son adresse DNS (domain name service) sera http://www.assassin.com/. Toutes les manip que j'expliquerais dans cet article seront réalisées sous windows mais se font très bien (j'ai entendu mieux dans la salle?) sous linux seulement les commandes diffèrent et je ne les expliquerais pas ici. Je vais revenir rapidement sur les différences entre les adresses ip, DNS et URL. Tous les serveurs ont une adresse ip (et ouais car la définition d'un serveur c'est un ordinateur connecté à un réseau et à d'autres ordinateurs qui peuvent consulter celui la) sauf quand ils ne sont pas connectés. Pour la définition précise d'une adresse ip je vous reporte à l'article que j'ai écrit dessus. Une adresse DNS est une adresse du type: http: ... . J'écrit pas www car ça dépend des adresses DNS il y en a qui n'ont pas DNS mais qui commencent par autre chose genre http://perso.infonie.fr ou par ww2 ou www3 ... C'est vrai que c'est plus facile à retenir www.assassin.com que 167.34.217.65. Pour obtenir une adresse DNS, la société à qui appartient le serveur doit débourser une somme comprise entre 500 et 1000 Frs à un organisme chargé d'attribuer ces adresses et qui fait gaffe à ce que deux serveurs différents n'en utilisent pas deux identiques. Enfin une adresse URL c'est les deux choses citées au dessus. On parle d'adresse URL en pour spécifier à quelqu'un que c'est bien de l'adresse d'un serveur par le port 80 (port utilisé pour le www, les pages web quoi) dont on parle et non d'une adresse E mail. Alors quand on demande l'url d'un site généralement on vous donne l'adresse DNS mais on pourrait très bien vous donner son ip ca ne changerait rien pour vous. Car bien sur si vous tapez l'ip d'un serveur dans netscape ou son adresse DNS vous arriverez aux mêmes pages. Sous réserve bien sûr que ce serveur ait bien un site web.

Maintenant que ceci est éclairci on va en revenir au coeur de notre affaire. Avec une adresse DNS on ne peut pas faire grand chose, il va nous falloir l'adresse ip du serveur et pour ça on va faire un ping. Pour celà on tape sous dos:
ping -a www.assassin.com et ça va vous donner son ip :-) ainsi que la qualité de la connection et la rapidité de la liaison mais ça on s'en fout un peu il faut dire.

Maintenant on va voir combien il y a de machines entre nous et le serveur assassin. Pour celà plusieurs méthodes. Ou vous utilisez un prog genre visual route (payant aux dernières nouvelles) ou neotrace ou d'autres encore ou alors on utilise une commande dos qui s'appelle tracert. Les progs je n'explique pas comment ils marchent, c'est super simple et ils ont l'avantage d'être graphique mais pour ceux qui préfèrent les lignes de texte, c'est l'option dos qu'il vous faut. D'ailleurs je l'explique rapidement et même si vous êtes un fan des programmes j'imagine que vous n'avez rien contre un peu de culture générale:
Donc sous dos vous allez taper: tracert url_du_serveur


exemple: tracert 167.34.217.65 ou tracert www.assassin.com (les deux marchent)
Si il y a marqué "host unreachable" c'est que vous avez mal recopié l'ip trouvée précédemment ou l'url ou que le serveur n'est plus connecté.
Toutes les machines se trouvant entre vous et le serveur ciblé se marqueront avec leur ip. Notez ça dans un coin ou faites une capture d'écran (Impr écran). La dernière ip marquée sera celle de la cible. Et si celle juste avant celle de la cible a les trois mêmes numéros que celle de votre cible c'est que la cible à laquelle vous tentez de vous attaquer est plus que probablement secure. Ca va être drôle. En langage de néophyte c'est qu'il y a une machine disposé sur le LAN (Un LAN est la ligne entre le réseau interne et le réseau externe) entre la machine cible et Internet et qui assure sa protection. C'est a dire que l'administrateur system a investi dans une machine (il peut y en avoir même plusieurs) qui ne sert qu'à la sécurité et a rien d'autre. C'est soit un firewall soit un routeur filtrant soit un bastion soit un bunker soit un garde-barrière soit une proxy ou je ne sais quelle autre saloperie de ce genre :-). Si une telle machine placée sur le LAN n'existe pas quand vous avez fait le tracert ce n'est pas pour cela qu'une protection du même type n'est pas incluse dans le serveur assassin lui même (c'est presque toujours le cas d'ailleurs) mais généralement c'est un indice assez fiable du niveau de sécurité d'un réseau.

Si vous avez lu l'article sur les ip vous savez que les trois premiers nombre d'une ip correspondent à un domaine et que le dernier nombre correspond a une machine de ce réseau. Dans cet exemple le domain est 167.34.217 puisque l'ip du serveur assassin est 167.34.217.65 et la machine est sur le "poste" 65. Dans la très grande majorité des cas (que dis je, la totalité) il y a plusieurs machines dans un même domaine et elle doit avoir un numéro de "poste" situé entre 0 et 255. Bien sûr il y a des domaines qui ont plus de 256 serveurs reliés entre eux et dans ce cas ils ont soit plusieurs domaines reliés à internet (c'est le cas d'aol qui en a des centaines qui commencent par 162, 171, 172,...) soit ont des sous réseaux à l'intérieur des domaines qui ne sont pas reliés directement à internet et qui utilisent des ip peut être déjà utilisées pas d'autre serveurs sur internet mais comme elles n'ont pas de connection directe à internet aucun problème ne se pose. Et si elles veulent se connecter quand même à internet elle s'y connectent à travers un proxy et prennent donc l'ip de ce proxy pour obtenir les réponses provenant de l'internet ou du réseau externe. Un proxy est un type de firewall qui transmet des requêtes entre un réseau interne et un réseau externe mais ne donne pas de contact direct entre deux machines (bah ouais sécurité oblige) et s'il y avait contact directe, la machine du sous réseau créerait un conflit d'ip car elle récupérait son ip de départ. Compliqué tout ça? Ce sera expliqué en détail dans l'article sur les firewalls. Ca vous rappelle pas quelque chose le fait de passer par un proxy qui fait changer l'ip? Et oui le spoofing! Arf la vie est belle quand même mais là c'est pas nous qui l'utilisons. Donc chassez ça de votre pensée sinon vous allez vous embrouiller pour la suite. Pour l'instant votre ip n'est pas spooffé mais ça viendra. :-)


Donc je disais que le serveur assassin devait être relié à d'autre machines de son sous réseau et ben pour le savoir on a plusieurs méthodes:
- La première c'est de prendre un programme qui s'appelle un scanner d'ip et de rentrer dedans l'ip du serveur assassin. Ca cherchera tous les serveurs ayant des ip contenus entre 167.34.217.0 et 167.34.217.255 puisque l'ip de la cible est 167.34.217.65. Le programme vous sortira plein (espérons) d'ip que vous noterez consciencieusement.
- La deuxième est d'utiliser une mine d'informations existant sur une grande partie des serveurs du monde reliés à internet et disponible à tous. Tous les serveurs ayant une adresse DNS (et les autres aussi peut être. Là je sais pas) doivent recenser un certain nombre d'infos comme le nombre de machines ayant accès à leur serveur, la taille (en nombre d'ip ou de machine) de leur domaine... Cette mine d'info est disponible par telnet ce qui veut dire qu'il va falloir lancer telnet. Il existe plusieurs serveurs qui fournissent ce genre d'infos et notamment Internic (whois.internic.net) et Netcraft (www.netcraft.com) mais on y reviendra en détail dans un autre article car les possibilités de cette recherche sont assez allucinantes. Sachez pour l'instant juste que ça existe.
- La troisième est de faire un expn sur un snmp d'une des bécanes du réseau. Et si celà vous renvoit une adresse mail sur un serveur différent mais d'un même domaine vous serez fixé. Je rappelle que le smtp c'est le port 25. Vous vous y connectez par win ou par linux et vous tapez :HELO nom du serveur puis une fois que celui ci vous aura salué à son tour vous ferez EXPN ROOT. Bien sûr il faut que le login ROOT existe car bien sûr le root n'a pas toujours le login root et même loin de là. Il se peut même que le login root n'est qu'un statut d'user. Essayez donc toujours EXPN ROOT et voyez ce que celà donne si ca met "login inconnu" essayez les autres login bâteau utilisés par les root tels que sysop, admin,... et puis si ça ne donne rien et que le serveur que vous attaquez a une page web vous pourrez essayer de chercher des infos sur les différents email sur ce site. Bien sûr le expn ne marche pas que pour le root mais pour n'importe quel user.
- La quatrième est de faire un nslookup sur un serveur mais cela ne marche que sous Linux. pour cela faites: nslookup www.assassin.com (en mode console bien sûr)
- Le cinquième est de faire un dig. Toujours en mode console sous Linux: dig www.assassin.com.
- Le dernier moyen c'est d'utiliser certains ports spécifiques comme le finger (79) et le whois (43), qui, quand il ne sont pas fermés ou inutilisables par une machine étrangère sont très instructifs pour savoir quelles sont les machines et les users connectés à cette machine ainsi que leur ip et leurs droits. Pour savoir quels ports sont ouverts (comme le ftp, le telnet, le finger...) on utilise un scanner de ports. Bien sûr pour qu'un serveur puisse savoir quelles personnes sont autorisées à entrer, il a des critères qu'il vérifie comme le login, le pass, l'ip, les ports sources, le protocole des paquets,... Avec les infos que l'on vient de récolter on va pouvoir utiliser des méthodes pour falsifier ces critères et contourner les sécurités. Mais ça c'est pour un autre article...


Maintenant on va essayer de voir sur quel OS tourne un serveur. Ca nous servira énormement pour savoir quel méthode de hack utiliser. Pour celà il y a aussi plusieur méthodes malheureusement la plupart de celle que je connais passent par linux. On ira pas jusqu'à dire Linux ou mourrir mais si on est pas un expert Windows (un véritable expert), il y a plein de choses que vous ne pourrez pas exploiter sans programme spécifique et les programme (je parle ici de programme de hackers genre Satan, nmap,...) sous windows se font très rares. On est d'ailleurs obligé de faire soit même la conversion linux win ou programmer soi même sa propre application pour que win commence à ressembler à quelque chose d'exploitable. Les moyens de trouver sur quel OS tourne un serveur sont nombreux. Voici plusieurs méthodes:
- La première c'est le ftp. On va faire comme pour le hack par ftp et des la connection on va voir apparaître une ligne que le serveur nous enverra avec le type d'OS qu'il utilise. Ceci n'est pas une science exacte car pas mal de serveur enlèvent cette ligne ou la remplace par une fausse ou par une bande de pub (secure ou commercial :-( ). Alors si vous êtes sous windows ca s'arrête là mais si vous êtes sous linux, il vous suffit de faire SYST pour avoir un complément d'informations sur l'OS du serveur.
- la deuxième se passe sous linux, il sagit de faire:
playground~ telnet hpux.u-aizu.ac.jp
Trying 163.143.103.12...
Connected to hpux.u-aizu.ac.jp.
escape character is '^]'.
HP-UX hpux B.10.01 A 9000/715 (ttyp2)
login:
(tiré du mag américain Phrack)

La vous voyez bien la version de l'OS du serveur (5ème ligne pour ceux qui n'auraient pas vu).
- La troisième méthode se passe également sous linux:

playground echo 'GET / HTTP/1.0\n' | nc hotbot.com 80 | egrep '^Server:'
Server: Microsoft-IIS/4.0
playground
(toujours trié du même zine)
- Enfin la dernière et la meilleure passe encore par linux car il s'agit d'utiliser les paquets TCP renvoyés par un serveur pour savoir de quel serveur il sagit. En effet le plupars des serveurs ont des gestions de couches de paquets tcp propres et donc differentes entre chaque serveur ce qui fait qu'en connaissant bien toutes les versions de tous les OS mondiaux, et en integrant leur particularité pour les renvois de paquets de protocole tcp, udp et même des fois icmp, le programme pourra presque avec certitude dire quel est l'OS qui tourne sur un serveur. En effet en envoyant un paquet quel que soit le protocole (tcp ou udp. Icmp étant à part car il ne sert que pour les paquets erreur ou redirigés avec retour car entête incorrect) le serveur altere un peu l'entête du paquet tcp sans pour autant toucher aux données utilles pour les users normaux. Cette altération va être mémorisée et analysée. Chaque OS l'altérant différement, son type et sa version seront imédiatement détectés. Ce programme s'appelle nmap et est disponible à l'adresse suivante: http://www.insecure.org/nmap.

Quelque chose qui peut peut être aussi vous servir c'est de mettre un "=" derrière un cgi-bin si le serveur possède une faille ça vous donnera la version de l'OS, du kernel, des scripts ... mais bon généralement on a besoin de ce genre d'infos avant d'être logué sur la bécane et ces infos vous ne les optiendrez que si vous avez un accès en lecture via http par les cgi-bin. Par exemple si un serveur nommé assassion a des scripts cgi php buggés il vous suffira de faire ça: www.assassin.com/cgi-bin/php.cgi?/=.

Bien sûr toutes les étapes précédentes ne sont pas indispensables, c'est rare quand toutes ces étapes sont obligatoires mais quand on n'arrive pas à rentrer dans un serveur directement on essaye de rentrer par un moins sécurisé auquel il fait confiance et c'est à ça que sert de savoir avec lesquels il communique

 

Clik pour imprimer cette page