* CHAPITRE 2, où le hacking commence à devenir vraiment redhibitoire.... [ Identification de la cible ] En réalité, les hackers procédent le plus souvent à une identification partielle de la cible, qui consiste juste à scanner les ports de la bécane. Ce qui n'est pas complétement idiot puisque je doute qu'il fasse disposer du nom de tous les utilisateurs d'un site pour pouvoir le pirater par la suite... Les techniques que nous allons donc aborder dans ce chapitre seront pour la plupart facultatives, à moins que vous ayez décidé de mapper le réseau du fbi.... Bon, sans plus tarder, we let's go... a) Recensement des noms d'utilisateurs 1. Par finger (79) Choper des noms d'utilisateurs est un art assez bénin... La méthode la plus sûre consiste à faire un finger sur le site cible, mais dans ce cas il faut que le service finger (qui tourne sur le port 79), soit activé... Il vous faudra donc effectuer un balayage des ports voilà. Si le port 79 est ouvert, tapez donc : >>> finger -1 @sitealacon.com My god, et si ca marche, vous verrez une liste de noms d'utilisateurs s'afficher devant vos yeux ebahis.... Vous pouvez d'ailleurs, toujours par le moyen de la commande finger, obtenir des renseignements un peu plus précis sur les noms d'utilisateurs. Exemple : >>> finger -1 @pseudo.sitealacon.com Et vous obtiendrez des tas d'info sur le shell, le nom, et le repertoire de l'utilisateur cible. 2. Par whois Et si le service finger n'est pas disponible, et bien vous pourrez toujours utiliser le célèbre whois, qui vous donnera beacoup d'information sur le système cible, les noms d'user bien sur, mais aussi leur n° de tel, ou leur adresse e-mail, chose pas très bien utile à d'ailleurs, à moins que vous vouliez faire du Social Engeneering... Les outils whois sont très nombreux : Si vous avez Linux vous disposez déjà de l'outil fwhois, intégré au système. Pour Windows, y'en a beucoup, mais je vous conseile surtout The Analyser (trouvable je sais plus où :() ou WS_PING_PRO_PACK (http://www.ipswitch.com) 3. Par Netbios Autre technique, si le système cible a le port 139 ouvert, vous pouvez être (quasi) sûr de deux choses. - La cible est sous Windows - Vous pouvez obtenir les noms d'utilisateurs en moins de deux. Et pour cela, vous suffit d'ouvrir une session dos et de taper : >>> NBTSTAT -A ip-de-la-cible Et vous aurez une liste de noms d'oiseaux, euh d'utilisateurs plutôt... Vous pouvez également vous servir de netuse si le port 139 est ouvert... Mais je ne préfère pas en dire plus, reportez vous au chapitre suivant pour savoir koman kon hacke un serveur windows... 4. Par lecture du code source Ca, c'est carrèment la méthode la plus débile, mieux vaut être un passionné de html... Bon, en quoi consiste cete méthode ? Et bien tout hacker bizaremment constitué pourra effeuiller les codes sources à la recherche d'informations concernant par exemple l'équipement de l'entreprise, des liens des contacts etc.... Cela sera surtout les commentaires qui nous interesseront (si si vous savez ces chtites phrases dans les codes sources placés entre les balises ...). 5. Vive Sendmail ! Si le réseau à la chance d'être équipé d'un serveur SMTP Sendmail, vous allez pouvoir vérifier les logins précédemment trouvés. Pour ça connectez vous par telnet au serveur SMTP du réseau, si il y'en a un : >>> telnet serveur_smtp Le serveur va maintenant s'identifier à vous, vous pourrez donc voir si il s'agit oui ou non d'un Sendmail. Si oui, vous pourrez entrez les commandes suivantes : Pour vérifier un pseudo tapez : >>> VRFY pseudo Pour obtenir une adresse e-mail à partir d'un pseudo : >>> EXPN pseudo Huhu, voilà... Sinon vous pouvez toujours envoyer des xterm, ou rapatrier le fichier etc/passwd , mais ça on y reviendra tout à l'heure.... :) b) Obtenir des informations sur le serveur C'est évidemment ce qui nous interesse le plus. On va commencer déjà par envoyer un ping (=requête) pour déterminer si le système cible existe bel et bien , et surtout scanner les systèmes actifs sur le réseau, il vous faudra bien entendu executer ce scan en LOCAL... Pour cela vous pouvez telechargez fping, et spécifiez les ip du réseau cible que vous voulez scanner, pour ça créez un fichier texte et mettez dedans les ip, genre : 192.168.1.0 192.168.1.1 192.168.1.2 ... 192.168.1.255 Puis avec fping, installé sous linux : >>> fping -f fichierdesips.txt fping est trouvable je sais plus ou... Mais bon le fping ne concerne que les attaques en local et est donc inutilisable si vous n'avez pas déjà accès au réseau mdr... Bon, plus sérieuresement, vous pouvez chercher à avoir un aperçu de ce qu'il y'a sur le réseau. Depuis Windows : >>> tracert www.site.com Ou depuis Linux : >>> traceroute www.site.com Comme ça vous aurez le nom des serveurs existants, l'ip des routeurs, leur localisation, si il existe des firewall ou non, en fait vous aurez une vue globale sur l'ensemble du réseau. Si vous voulez des résultats encore plus précis, vous pouvez essayer de mapper le réseau, pour cela il existe des logiciels spéciaux, citons par exemple le célèbre VisualRoute (www.visualroute.com) bon évidemment c'est pas gratuit mais bon... ;) c) Balayage des ports Le balayage des ports est une étape obligatoire si vous avez l'intention d'infiltrer quelconque serveur... En ce qui concerne les scanneurs de ports, il y'en a beacoup, et les meilleurs sont sans doute Pscan11 pour Windows et le fantastique nmap pour Linux... Vous pouvez également créer vous même votre scanneur de ports, le principe est très simple. En gros, on va créer une socket en local que l'on va ensuite esayer de connecter à une socket distante, placée sur un serveur, et assignée à un numéro de port bien précis. Si la connection est possible, si la tentative de connection renvoie une valeur supérieure à un, cela signifie que la socket est ouverte, le scanneur va donc nous renvoyer le numéro du port ouvert associé à la socket. Ci-dessous un petit scanneur de ports très simple, codé en c : -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= /*********************************/ /* KefScan - By [Kefka] */ /* nickairmax@caramail.com */ /* ou retrouvez moi sur */ /* irc.jeuxvideo.com */ /* ---All right reserved--- */ /*********************************/ /* Déclaration des directives */ #include #include #include #include #include /* Fonction sockscan() */ int sockscan(char nomduserveur[], int nbredePorts) { /* Déclaration de la structure sockaddr */ struct sockaddr_in addrSocket; /* Déclaration du pointeur serveur sur la structure hostent */ struct hostent *serveur; /* Déclaration des variables, initialisation des variables à zéro (fd pour la socket, i pour le compteur de la boucle for, et portsOuverts pour le nombre de ports ouverts :))) */ int fd, i, portsOuverts = 0; /* Conversion de l'adresse du serveur en format réseau */ serveur = gethostbyname(nomduserveur); /* Initialisation de la structure sockaddr */ addrSocket.sin_family = AF_INET; addrSocket.sin_addr = *(struct in_addr*) serveur->h_addr; /* Affichage du nom de la machine contenue dans la structure hostent */ printf("\n(scan sur %s)", serveur->h_name); /* Déclaration de la boucle for, pour i=1, on incrémente 1 à i jusqu'à ce que i soit égal au nombre de ports */ for(i=1;i<=nbredePorts;i++) { /* Création de la socket en mode connecté sur TCP */ fd = socket(AF_INET,SOCK_STREAM,0); /* Initialisation du numéro de port en format réseau avec htons() */ addrSocket.sin_port = htons(i); /* Vérifie si la connection sur le socket a pu être établie. Si supérieur à zéro, alors la connection a réussi, sinon ca n'a pas marché :p */ if(connect(fd,(struct sockaddr *)&addrSocket, sizeof addrSocket)>=0) { /* Si la connection a réussi, on incrémente le nombre de ports ouverts */ portsOuverts++; /* Et on affiche le numéro du port ouvert */ printf("\n%d : open", i); } /* On ferme notre socket */ close(fd); } /* Renvoie à la fonction main() le nombre de ports ouverts */ return (portsOuverts); } /* Fonction main() */ /* Déclaration de la fonction */ int main() { /* Déclaration des variables */ char *nomduserveur; int nbredePorts, PortsOuverts; /* On demande à l'utilisateur de rentrer ses données */ printf("\n\n##### KefScan #####\n"); printf(" coded by [Kefka]\n"); printf("Tous droits reservés\n"); printf("\nEntrez l'adresse du serveur : "); scanf("%s", nomduserveur); printf("Combien de ports souhaitez vous scannez? ( max: 65535)"); scanf("%d", &nbredePorts); if ((nbredePorts < 0) || (nbredePorts > 65535)) { printf("\nIncorrect, retentez : "); scanf("%d", &nbredePorts); } printf("\nVeuillez patientez, scan en cours......"); /* On fait appel à la fonction sockscan() qui va afficher les numéros de ports ouverts et renvoyer le nombre de ports ouverts */ PortsOuverts = sockscan(nomduserveur, nbredePorts); /* Maintenant on affiche les résultats globaux du scan */ printf("\n\n\nScan termine !!!\n************\n"); printf("\nNombre de ports scannes : %d", nbredePorts); printf("\nNombre de ports ouverts : %d", PortsOuverts); return 0; } /* Fin du programme */ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Voici maintenant une petite liste des ports succeptibles d'être dangeureux, accompagnée dans chaque cas du type de l'infiltration... >>> nmap -I ip_cible N° de port / Nom du service / Type du port /Type(s) d'attaques(s) possibles(s) -------------------------------------------------------------------------------- 20 / FTP-Data / TCP / Possibilité d'installer un sniffer 21 / FTP / TCP / Buffer Overflow Dénis de service (DoS) Attaque brute-force Intrusion possible 22 / SSH / TCP / Buffer Overflow Attaque brute-force Intrusion possible 23 / Telnet / TCP / Buffer overflow Dénis de service (DoS) Attaqe brute-force Intrusion Possible Possibilité d'installer un sniffer 25 / STMP / TCP / Buffer overflow Dénis de service (DoS) Mine d'information Intrusion possible 43 / Ipswitch / TCP / Dénis de service (DoS) IMail 5.0 (Prog) 53 / DOMAIN / TCP/UDP / Buffer overflow Dénis de service (DoS) Intrusion possible 69 / Trivial FTP / UDP / Intrusion possible 70 / Gopher / TCP / Possibilité d'installer un sniffer 79 / Finger / TCP / Mine d'informarions 80 / HTTP / TCP / Attaques CGI Buffer overflow Dénis de service (DoS) Mine d'informations Intrusion possible Possibilité d'installer un sniffer 110 / POP3 / TCP / Buffer overflow Dénis de service (DoS) Attaques brute-force Intrusion possible 137 / NetBios ns / TCP/UDP / Dénis de service (DoS) 138 / NetBios dgm / TCP/UDP / Dénis de service (DoS) 139 / NetBios ssn / TCP/UDP / Dénis de service (DoS) Attaques brute-force Intrusion possible Mine d'informations 149 / IMAP / TCP / Buffer overflow Intrusion possible 389 / Ipswitch / TCP / Buffer overflow IMail 5.0 Intrusion possible (Prog) Dénis de service (DoS) 505 / pbbser / TCP / Intrusion possible (Backdoor) 513 / Rlogin / TCP / Possibilité d'installer un sniffer Intrusion possible 555 / phAse Zero / TCP / Intrusion possible (Backdoor) 1243 / SubSeven / TCP / Intrusion possible (Backdoor) 2080 / Qbik WinGate/ TCP / Dénis de service (DoS) 3.0 (Prog) 2140,3150 / DeepThroat / UDP / Intrusion possible 1,2 & 3 (Backdoor) 3389 / Microsoft / TCP / Dénis de service (DoS) Windows NT Terminal Server 5631 / PCAnywhere32/ TCP / Dénis de service (DoS) (Prog) 6000 / X Server / TCP / Possibilité d'installer un sniffer Intrusion possible 6549 / APC / UDP / Dénis de service (DoS) PowerChute PLUS (Prog) 6969 / GateCrasher / TCP / Intrusion possible 1.2 (Backdoor) 8080 / HTTP / TCP / Attaques CGI Buffer overflow Dénis de service (DoS) Mine d'informations Intrusion possible 8181 / Ipswitch / TCP / Dénis de service (DoS) IMail 5.0 (Prog) 8383 / Ipswitch / TCP / Dénis de service (DoS) IMail 5.0 (Prog) 10067 / Portal of / UDP / Intrusion possible Doom (Backdoor) 10167 / Portal of / UDP / Intrusion possible Doom (Backdoor) 12345 / NetBus / TCP / Intrusion possible (Backdoor) 14238 / HotSync / TCP / Buffer overflow Manager 3.0.4 (Prog) 17300 / kuang2v / TCP / Intrusion possible (Backdoor) 20034 / NetBus 2.0 / TCP / Intrusion possible (Backdoor) 21554 / GirlFriend / TCP / Intrusion possible 1.3x (Backdoor) 23456 / EvilFTP / TCP / Intrusion possible (Backdoor) 26092 / QIB / TCP / Intrusion possible (Backdoor) 27374 / SubSeven / TCP / Intrusion possible (Backdoor) 30100 / NetSphere / TCP / Intrusion possible 1.30 (Backdoor) 30102 / NetSphere / TCP / Intrusion possible 1.30 (Backdoor) 31337 / Back Orifice/ TCP / Instrusion possible (Backdoor) 31457 / Tetrinet / TCP / Dénis de service (DoS) (Prog) 31785 / Hack'a'Tack / TCP / Intrusion possible (Backdoor) 31789 / Hack'a'Tack / UDP / Intrusion possible (Backdoor) 31791 / Hack'a'Tack / UDP / Intrusion possible (Backdoor) 46256 / ANTI-prym/ / TCP / Intrusion possible h4g1s (Backdoor) Voilà donc, nous reparlerons de ces vulnérabilités dans un prochain chapitre, patience ! Le chapitre tire presque à sa fin ... d) O.S fingerprint La technique de l'o.s fingerprint consiste à detecter le système d'exploitation qu'utilisent les serveurs dans un réseau. Le meilleur moyen, d'après moi, c'est avec nmap, mais il faut avoir Linux. Nmap est disponible sur www.insecure.org (qui est par ailleurs un excellent site de hacking !!!). Bon, on vient de voir que nmap pouvait nous servir pour effectuer un balayage systèmatique des ports, et bien il est également très utile pour détecter les systèmes d'exploitation... La commande à taper, sous un shell Linux je rapelle ;)) , sera celle-ci : >>> nmap -p80 -O ip_serveur Un balayage des ports s'effectuera donc sur ip_serveur, et en bas qu'est ce qu'on voit ? Chouette, le système d'exploitation de la bécane scannée ! Bon, sinon pour les malheureux qui n'ont pas Linux chez eux, une connection par telnet ou par ftp sur le serveur cible vous donnera peut être de précieux indices, tout de fois bien sûr si le serveur daigne se présenter à vous... La technique de l'O.S fingerprint est très pratique à partir du moment où on cherche à exploiter des failles en fonction du système d'exploitation du serveur... ;) e) Conclusion Ca y'est t'as réussi à choper des infos sur le site que tu veux hacker ? Yes, t'es bien un hacker, tu cartonnes mec !!! Mais maintenant, va falloir se servir des informations que tu as récupéré pour pouvoir le hacker ce putain de site !!! Comment faire ? C'est justement ce que j'explique dans le chapitre précédent, allez du nerf, courage !!! Alors, je vous propose dans un premier temps d'étudier le hacking windows, 9x et NT (ces o.s sont entièrement différents l'un de l'autre), puis dans un second temps, le hacking linux, avec tout le bordel qui s'en suit... Vous prêts ? Nous commencons...