Investigación forense de un Email suplantado
En esta ocasión os vamos a contar un caso de phishing y cómo fuimos deshaciendo el entramado.
Todo empieza con un proveedor y un cliente, donde el cliente abona cierta cantidad de dinero por ciertos servicios o productos, y este dinero no llega nunca a su destino.
Ya sabéis que los malos no eligen a sus víctimas sin más, normalmente realizan un estudio financiero suculento para ver si merece la pena invertir tiempo y recursos.
Capítulo 1. Introducción
No he podido determinar con certeza el método de acceso u obtención de credenciales, pero viendo las evidencias y conociendo las herramientas utilizadas, aparentemente el vector de entrada (medio escogido por los piratas para enviar un código malicioso a otro equipo) parece ser un correo de phishing forzando un cambio o actualización de contraseñas, la otra opción que me planteo es que han tenido acceso al equipo o a las contraseñas guardadas por el navegador, y es que el dominio en cuestión aparece en diferentes indicadores y Sandbox como lugar favorito.
Se puede suponer que en algún momento de la conversación entre cliente y proveedor el pirata ha conseguido acceso a la conversación de alguna forma, ya que conoce los intervinientes y el objeto de la conversación.
También conocemos que hay una conversación para la realización de una compra al proveedor, y que en el momento de empezar a comentar los detalles de pago nuestro protagonista pirata empieza su jugada.
Capítulo 2. Datos y contexto
Analicemos los datos:
Por un lado tenemos el email del proveedor “ventas@proveedor.es”, por otro lado tenemos al cliente “jhonstomteas@gmail.com”, hasta aquí todo correcto; y vemos que han mantenido una conversación lícita donde el cliente muestra el interés de comprar un producto al proveedor.
En ese momento el proveedor recibe un email de “jhonstomteas@email.com” configurando en la cabecera el NAME del correo “jhonstomteas@gmail.com”, si os fijáis bien el dominio es completamente diferente pero fácil de confundir con gmail.com/email.com.
En este momento el proveedor sin saberlo envía al pirata un pdf con el número de cuenta del proveedor donde el cliente debe realizar el primer pago.
Acto seguido el pirata crea otra cuenta para suplantar al proveedor de una forma similar a esta “ventas.proveedor@dominio.es” y una vez modificado el número de cuenta envía el correo al cliente “real”.
Este no se percata del engaño y entra en la conversación realizando así diferentes transferencias, hasta que el cliente va a recoger su producto y el proveedor le indica que está pendiente de pago…
Capítulo 3. Deshaciendo el entramado
Primero hacemos análisis de las cabeceras de los correos y de los dominios, luego identificamos información, solicitamos registros al proveedor del correo y en general realizamos un análisis exhaustivo, descubrimos que el pirata había estado leyendo el correo del proveedor (localizamos las direcciones IP de Rusia).
Ejemplo del log de un email server, rip es la que nos interesa “remote ip”
Oct 29 21:43:21 lin232 dovecot[266764]: imap-login: Login: user=<ventas@proveedor.es>, method=PLAIN, rip=xxxxxxxxx, lip=yyyyyyyyyyy
Ahora tenemos un listado login.txt con cientos de miles de registros y tenemos que quedarnos únicamente con el campo rip=, os muestro como hacerlo en bash linux, $10 es la posición en la que aparece y podéis adaptarla a vuestro caso, cut recorta y muestra solo los caracteres del 5 al 18, así limpiamos todo lo que no es la IP.
cat login.txt | awk {'print $10'}|cut -b 5-18 > parse_ip.txt
Bien, ahora tenemos un listado de direcciones IP y necesitamos ver cuáles son sus localizaciones geográficas para ver si nos da más pistas, pero tenemos 13mil registros .. para reducir este listado usaremos el comando uniq.
cat parse_ip.txt |uniq > unicas.txt
Ahora ya tenemos un listado único pero necesitamos identificar su localización, para ello usaremos ipinfo.io que nos devuelve información sobre las direcciones, y añadiremos estas líneas en un pequeño script.
input="unicas.txt"
while IFS= read -r line
do
echo "$line"
curl ipinfo.io/$line
done < "$input"
El paso siguiente es ejecutar el script anterior “sh script.sh > resultado.txt” y lo guardamos en resultado.txt, el script consultará la api de ipinfo y nos devuelve la geolocalización de cada dirección IP.
Un ejemplo del resultado
Y realizamos una investigación, en la que descubrimos que para leer el correo habían utilizado una pasarela, básicamente una web que hace de intermediario entre el servidor de correo y el usuario que lo lee, de esta forma no aparecerá la IP real de quién está leyendo el correo.
Si os fijáis, ofrecen diferentes opciones para hacer de intermediario del correo electrónico
Capítulo 4. Conclusión
Espero que este ejemplo os sirva de ayuda, o al menos si os aparece un caso similar lo recordéis y no caigáis en la trampa. Siempre que tengáis que realizar cualquier transacción por email debéis estar muy atentos a la dirección de quién os está escribiendo, y si tenéis una mínima sospecha poneros en contacto por teléfono con la otra parte implicada, así no tendréis que lamentaros después.