Large panorama des méthodes informatiques criminalistiques
Techniques
En raison de la richesse du sujet, nous n'aborderons que 3 techniques seulement utilisées par l’expert dans cette partie intéressante :- La stéganographie et la stéganalyse
- Les métadonnées
- La cryptographie et la cryptanalyse
- La lutte contre les intrusions dans un système : les IDS
La stéganographie et la stéganalyse
La stéganographie est une technique souvent utilisée par les pirates pour cacher des informations illicites (mots de passe, adresses IP, numéros de comptes bancaires volés, …) au sein de photographies mais pas seulement.
Dans cette scène, un message stéganographié est présent dans le coin en bas à gauche.
Il s'agit en effet d'une citation en braille dont la signification est la suivante : "Si un aveugle conduit un autre aveugle, ils tomberont tous les deux dans la fosse. Matthieu 15:14".
Son fonctionnement repose sur le choix d'un algorithme de chiffrement. Nous allons nous intéresser à l'exemple d’un algorithme faible :
- Prendre une image
- Rédiger un message secret
- Pour chaque bit du message secret, prendre le pixel courant de l’image et récupérer le bit de poid faible
- Appliquer une opération logique (XOR par exemple) entre les deux bits
- Tant qu’il existe des bits dans le message secret, passer au bit suivant du message secret et au pixel suivant de l’image
- Une image de 640 x 480 pixels de taille 4 Mo impose une certaine méfiance face à une image de même dimension dont la taille avoisine 140 Ko. La compression du contenu caché est donc un point faible de la stéganalyse.
- La stéganalyse nécessite souvent d’avoir l’original de l’image pour la comparer à l’image stéganographiée. Cela permet d’en extraire les endroits modifiés et de déchiffrer plus facilement le contenu caché (la charge utile = payload).
- Le pattern de construction d’une image est défini. Si une image ne respecte pas ce motif, nous pouvons suspecter qu’un contenu caché est présent.
- Réduire manuellement le jeu de photos (copie)
- Ne garder que les photos suspectes
- Vérifier que les photos suspectes contiennent une charge utile
- Détecter les points de modification de chaque fichier
- Déchiffrer et extraire la charge utile
Les métadonnées
Des métadonnées peuvent être présentes dans les fichiers, les emails, les conversations réseaux, ... et contenir des informations souvent sous forme de données brutes (paquet réseau, musique, texte…). Tout fichier non brut dispose de métadonnées (HTML, Word, MP3, …). Prenons l'exemple de la photo (libre de droits) ci-dessous :
Rien de plus innocent à première vue. Mais un petit tour sur un lecteur de métadonnées EXIF comme http://regex.info/exif.cgi ou encore http://www.viewexifdata.com/index.php permet d’obtenir les informations confidentielles suivantes :
- Géolocalisation / Son adresse
- Nom du propriétaire de la prise photo
- Nom de l’appareil ayant servi à la prise photo
- Horodatages / La date de création et modification
- Le type de fichier
- Des commentaires
Outre les sites Web, des librairies existent en PHP, Javascript, … et des logiciels aussi pour la plus grande joie des développeurs.
La cryptographie et la cryptanalyse
Il n'est plus nécessaire de présenter la cryptographie et la cryptanalyse, dont les concepts sont devenus vieux comme le monde, comme le fait de chiffrer et déchiffrer par tous les moyens efficients possibles une information avec ou à partir d'un mot de passe.
Parfois, l'expert en informatique légale peut, lors d'une enquête, rencontrer des archives sécurisées à accès restreint par un mot de passe. Dans le cadre de sa profession, le juge peut exiger d'en connaître la teneur. L'expert va donc soumettre l'archive a des outils qui vont tenter de casser ce mot de passe de diverses manières. Les méthodes les plus classiques consistent à tester toutes les combinaisons de mots de passe (force brute), un sous-ensemble connu (dictionnaire, joker) ou, le cas échéant, interroger directement le suspect et son entourage voire étudier l'environnement du suspect pour en déduire le mot de passe (ingénierie sociale).
Il s'avère que ces méthodes ont de grossiers défauts :
- La force brute prend un temps de calcul monstrueusement long pour les mots de passe supérieurs à 8 caractères et encore plus long selon la table d'encodage (caractères spéciaux, majuscules, minuscules, alphabétique, numérique, alphanumérique, ...)
- Les techniques par dictionnaire et joker sont simples à utiliser mais efficaces uniquement si nous savons que le mot de passe est d'usage commun ou si nous avons une portion du mot de passe. D'où l'utilité de s'armer de dictionnaires, des fichiers textes de mots couramment usités, que l'on peut trouver un peu partout sur Internet.
- L'ingénierie sociale dépend du bon vouloir et de la naïveté des personnes concernées par ce mot de passe ainsi que de la pertinence de l'environnement du suspect pour sa déduction

Comment une table arc-en-ciel fonctionne t’elle ?
Dans un premier temps, nous allons enregistrer disons 250 couples { mots de passe – hash } dans la table comme vous pouvez le voir ci-dessus.
Pour le mot de passe abcd, nous allons calculer son hash (fff75abc), puis le réduire, ce qui nous donnera un second mot de passe (dsae). A celui-ci on va calculer son hash etc…
On itère un nombre défini de fois jusqu’à obtenir l’empreinte 3257785a. Puis, on va enregistrer le couple { abcd, 3257785a } dans la table.
Dans un second temps, nous allons tenter de cracker un hash. Il y a trois cas de figures :
- On cherche le hash 3257785a en parcourant la table depuis le début.
L’empreinte est présente directement dans cette table mais ne correspond pas au mot de passe abcd associé dans la chaîne.
On va devoir reparcourir la chaîne depuis abcd pour obtenir le mot de passe associé qui est dqqa. - On cherche le hash ad4a4563.
Celui-ci n’existe pas dans la table. On va donc parcourir chaque chaîne du tableau à la recherche du mot de passe correspondant à ce hash.
Il s’avère que le hash existe dès la première chaîne et par conséquent nous obtenons aussi son mot de passe (qsdd) - On cherche le hash xyz12300.
Celui-ci n’existe pas dans la table. On va donc parcourir chaque chaîne du tableau à la recherche du mot de passe correspondant à ce hash.
Nous n'avons pas pu trouver ce hash ni son mot de passe. Il est donc nécessaire de créer de nouveaux couples dans la table arc-en-ciel pour avoir un panel de recherche plus grand.
Risques de collisions des hashs | Parfois, il se peut qu’une collision apparaisse et retourne le même mot de passe pour deux hashs différents. Une solution pour pallier à cela est de créer une fonction de réduction différente par colonne de chaîne. C’est de cette forme que l’algorithme possède le nom de « tables arc-en-ciel » ! Nous pouvons aussi éventuellement réduire la probabilité de tomber sur le même mot de passe en salant les hashs avec une unité de temps. |
Attaque par botnet | Un botnet (réseau de machines zombies) équipé d’un algorithme de déchiffrement par Rainbow Tables peut attaquer un serveur d’authentification et générer les hashs des mots de passe possibles très rapidement et efficacement. D'où l'utilité de se protéger côté serveur par une authentification forte (double ou triple serait un plus) avec une demande de reconnexion exponentielle dans le temps (Après un échec de connexion, la tentative de reconnexion s'effectuera dans 2 secondes, puis 4, 8, 16, ...) en plus de gérer une blacklist pour filtrer les adresses IP liées aux attaques. |
La lutte contre les intrusions dans un système : les IDS
Les attaques de type intrusives sont un combat à part entière pour les experts en informatique légale. Les victimes de ce genre d'attaque sont en principe des entreprises (banque, assurance, du domaine de la défense et militaire), des personnes parfois influentes (politicien, diplomate, journaliste). L'attaquant s'est introduit dans leur système informatique au travers d'une faille (souvent humaine, parfois organisationnelle ou technique). L'expert doit donc enquêter sur ces 3 catégories de faiblesse pour en connaître la source qui remet en question la solidité des quatres règles fondamentales de la sécurité des systèmes d'information de l'entreprise victime : Disponibilité, Intégrité, Confidentialité, Traçabilité.
Il existe bien entendu des solutions de lutte contre les intrusions (Firewall, Antivirus, réseaux privés virtuels de type VPN) mais utilisées individuellement elles ne garantissent pas une sécurité optimale. L'intérêt recherché est de pouvoir détecter mais aussi de prévenir les risques. C'est le rôle d'un "Intrusion Detection System" (IDS). Il peut se trouver à l'état matériel ou logiciel et effectue de la surveillance dans un réseau (Network-based IDS) ou sur une machine précise (Host-based IDS). Tout évènement suspect est détecté, signalé par une alerte, traité et le système est prémunis contre les attaques du même acabit à l'avenir. L'intérêt de cet outil est d'automatiser un travail fastidieux que ne pourrait faire l'expert seul.
Le pirate informatique peut utiliser des attaques massives (Deni de service, éventuellement distribué, pour saturer de requêtes un équipement et le rendre KO un moment, ...) ou furtives (voler des données et effacer les logs serveurs pour ne pas se faire repérer, ...). L'expert détectera aisément avec l'IDS adéquat la première action par le flot de requêtes simultanées arrivant sur le serveur de l'entreprise victime. En bloquant le trafic de l'attaque, il pourra stopper l'attaque. Dans le second cas, l'expert devra être plus méticuleux car la détection d'une présence furtive est comme la recherche dans une botte de foin. Il faut savoir où chercher ! Certains IDS proposent de faire un hash md5 des fichiers critiques du système. Ainsi, s'ils ont été modifiés par un pirate, l'IDS détectera les différences à partir des empreintes comparées des hash entre le fichier original et le fichier courant. Puis, il signalera cela à l'expert.
J'ai rencontré récemment un script PHP qui possédait du code obfusqué en base64 pour rendre illisible sa compréhension par un utilisateur néophyte. En réalité, cela ressemblait à cet exemple :
eval(gzinflate(base64_decode('aGVsbG8geW91bmcgcGFkYXdhbiwgSSdt IGEgdmlydXMgdG8gZGVzdHJveSB5b3Vy IHdlYnNpdGUuLi4=')));
Comme vous pouvez le constater, la chaîne aGVsbG8geW91bmcgcGFkYXdhbiwgSSdt IGEgdmlydXMgdG8gZGVzdHJveSB5b3Vy IHdlYnNpdGUuLi4= est humainement illisible. Une fois ce code déchiffré lors de l'exécution du script (Vous pouvez le décoder à l'aide de ce site), l'évaluation du contenu dézippé décodé en base 64 donnait le contenu de la charge utile de l'attaque. Dans notre exemple, nous obtenons :
echo 'hello young padawan, I'm a virus to destroy your website...';
Le script du pirate avait un rôle plus vicieux. Il chargeait des fichiers et librairies depuis un serveur pour les exécuter localement comme une boîte de Pandore qui venait de s'ouvrir. Le pirate venait de transformer la machine infectée en zombie contrôlé à distance, de manière indétectable puisque le code vérolé en base 64 n'a pas été remarqué par l'Intrusion Protection Système (un IDS amélioré et étendu, apte à prendre des contre-mesures pour riposter à une attaque).
C'est de cette manière que j'ai appris comment un pirate pouvait déjouer la détection d'un IPS ou d'un IDS. Il existe toutefois des solutions pour se prémunir de ce genre d'attaques comme placer les lignes suivantes dans le fichier php.ini de votre serveur Web pour interdire l'exécution des fonctions PHP concernées et des URL à distance :
allow_url_fopen = Off; disable_functions = exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source,phpinfo,proc_open,base64_decode,base64_encodem,proc_terminate;
Toutefois, lors d'une enquête, l'expert en informatique légale va dans un premier temps tenter de comprendre la situation avant de répliquer à l'attaque. Pour cela, une idée est d'installer un honeypot (un pot de miel virtuel). Il s'agit d'une machine-leurre qui dispose de services et de failles bien-connues de l'expert, sur laquelle viendront s'exercer les pirates lors de leurs attaques. Comme cette machine-leurre est interfacée en amont du système d'informations de l'entreprise victime, l'expert pourra étudier les attaques et comprendre les intentions des hackers avant qu'ils n'atteignent le coeur du système d'informations.
Il reste néanmoins qu'aucun système n'est infaillible. C'est pour cela qu'il faut régulièrement mettre à jour ses logiciels et équipements, se former aux nouvelles technologies et s'informer des techniques et des failles récentes. C'est ce que l'expert en informatique légale s'est engagé à faire pour respecter sa mission.