WordPress, la zona de juego de los Ciberdelincuentes (Parte I)
Analizando malware de un WordPress
A menudo llegan retos por los caminos más insospechados, como esta historia, que empezó con un post en Twitter de Érica Aguado. Hablaba sobre un código sospechoso encontrado dentro de un WordPress que había reparado.
Tras leer el resto de respuestas del post y viendo el código, había un elemento claro casi al final del código de la imagen que podía servir para ir tirando del hilo. La línea que contenía la comprobación de un parámetro en la querystring “isset($_GET[‘daksldlkdsadas’])“.
Una rápida búsqueda en Google mostraba bastantes (miles) sitios web (WordPress probablemente) que parecían estar infectados con dicho código malicioso. Esto evidenciaba a que estaban expuestos a “no se sabe qué” acciones por parte de terceras personas que seguramente desconocían los propietarios y/o administradores de dichos sitios web.
Si cargamos el sitemap del primer sitio que aparece en la imagen anterior podemos ver como aparece este texto generado para que quede indexado por los buscadores y con el valor ‘t’ asignado al parámetro.
Sospechoso ¿verdad?
Tras unos intercambios de mensajes, Erica me proporciono los ficheros fuente encontrados en dicho WordPress pues yo le dije que si descargaban algún binario me gustaría verlo (tenerlo) para hacerle “ingeniería inversa”.
Así que me envió un archivo con todos los archivos del sitio web y ya en la raíz aparecían algunos archivos que no eran habituales de WordPress.
Si a esto le añadimos, que tras abrir alguno de estos archivos, aparece todo el código ofuscado, es más que evidente la presencia de malware y actividad de algún ciberdelincuente.
Del resto de carpetas, existía una con nombre “jbh” que también era sospechosa pues todo el código que había en sus archivos también estaba ofuscado.
Daba la sensación de que los archivos utilizaban diferentes métodos de ofuscación combinados, por un lado, y por otro había partes claras y sin ofuscar.
Desofuscando con herramientas online
Hay diversas herramientas para desofuscar código en php, de la misma manera que existen diferentes herramientas para ofuscar que emplean variadas técnicas y métodos para hacerlo y por lo tanto no son todas útiles o igual de efectivas.
Una de estas herramientas que está claramente enfocada a desofuscar código de malware es la página https://malwaredecoder.com/ y otra es https://www.unphp.net/
Si cogemos uno de los archivos ofuscados, como el que se muestra en la siguiente imagen, y lo procesamos.
Se puede observar, tras desofuscar el código, que se pueden apreciar algunas palabras clave. Pero no lo revela todo. Ha hecho una parte del trabajo, pero no toda. Y si nos fijamos al pie de la imagen se puede ver la parte de código que nos llevó hasta aquí: isset($_GET[‘daksldlkdsadas’])“.
Codificación Hexadecimal
Si nos fijamos en el código ofuscado podemos ver un patrón claro en algunas cadenas, en las que se muestran una colección de caracteres precedidos siempre por “\x”. Esto no es otra cosa que la codificación en Hexadecimal de los caracteres ASCII.
Por ejemplo, esta cadena “\x47\x4c\x4f\x42\x41\x4c\x53” decodificada corresponde a la palabra “GLOBAL”, la cadena “\x57\x6f\x72\x64\x50\x72\x65\x73\x73” corresponde a la palabra “WordPress”, y la cadena “\x4f\x4f\x30\x4f\x5f\x30\x5f\x4f\x30\x5f” se corresponde a la secuencia “OO0O_0_O0_” que después se utiliza como nombre de variable.
De hecho, si buscamos esta última cadena en Google también aparecen unos cuantos resultados.
Un problema en Windows
Este primer análisis lo hice en una máquina Windows (alterno entre Windows y Linux indistintamente). Y tras mirar los diferentes archivos llegué a uno que se había descomprimido correctamente del archivo “.tar.gz” que me habían proporcionado, pero no lo podía abrir. Se trataba del archivo “con.php”.
¿Por qué pasa esto? Esto es porque Windows tiene una serie de nombres reservados para nombrar a unos dispositivos (con, prn, aux, nul, com1, com2, lpt1, lpt2,… etc). Estos dispositivos, a nivel interno se tratan como archivos y ahí es donde entra el conflicto.
Así que a partir de aquí seguí analizando utilizando Kali Linux. 😏
Jugando con el código
La sustitución de la codificación hexadecimal no era problema, pero igualmente no quedaban claras algunas partes del código. Y me interesaba ver el contenido de todas estas variables que empezaban por “$O_0_0…” que se formaban a partir de la primera variable “$O_0_O0O_O0”.
Así que separé las líneas para identificar claramente las diferentes variables, y al final añadí un “echo” para que mostrara el contenido de cada una de las variables y una finalización del script. De esta manera podía ver que se generaba y tener un control por partes del flujo del programa.
Y finalmente obtuve la lista de funciones que utiliza este código. El siguiente paso era sustituir las variables correspondientes por su nombre y ya tendríamos un código más legible.
Aquí tendríamos el código de la primera parte donde se descubren los nombres de las diferentes funciones.
Haciendo una sustitución manual de estos identificadores en el código se puede empezar a intuir que es lo que hace, archivos y carpetas que modifica, etc...
Ofuscación recursiva
Otro de los archivos de la raíz del sitio, de nombre “idq.php” tenía una ofuscación recursiva. Hasta 5 veces estaban los datos codificados y comprimidos uno dentro de otro, usando combinaciones de gzinflate(), base64_decode(), rawurldecode() y urldecode() de manera que me obligó a ir revisando paso a paso hasta llegar al código final.
En el siguiente cuadro se puede ver el archivo idq_de-obfuscated.php el cual ya deja ver mejor parte de los procesos que ejecuta, a pesar de que aún es necesario poder identificar algunas variables para que se pueda entender mejor el funcionamiento. A primera vista parece ser que gestiona suscripciones a listas de correo, pero no voy a entrar en más detalles ni voy a seguir haciendo cambios en este archivo. Prefiero para pasar a ver el contenido de otra carpeta a ver que sacamos.
Carpeta “jbh”
Entramos de lleno en la carpeta “jbh” de la que inicialmente tenía mis dudas si tenía relación con los archivos anteriores, pues bien podrían tratarse de archivos (y actuaciones) de diferentes “atacantes” y que ambos habían aprovechado vulnerabilidades del sistema para subir sus archivos y tomar el control. Pero los métodos de ofuscación y algunas variables aleatorias generadas eran similares al anterior, por lo tanto, si nos atenemos a las “tácticas, técnicas y procedimientos” (TTPs), podríamos afirmar que todo procede del mismo actor.
Si miramos el archivo apple.php podemos ver que es el que origino el inicio del hilo de twitter de Érica Aguado, y también que coincide con el contenido ofuscado en el archivo aindex.php que estaba fuera de la carpeta “jbh”.
Sin haber entrado en detalle en todo lo que hacía cada archivo, me hace pensar que los archivos de la raíz son los que probablemente se encargaban de crear la carpeta “jbh” y escribir el contenido de esta. Pero, insisto, todo son hipótesis que pueden cambiar a medida que se investigue con más profundidad.
Tras un primer análisis de todos los archivos hice la instalación en mi servidor Apache local y me dispuse a probar algunos archivos.
Empiezo con sad.php, que es completamente diferente a los demás archivos. No está ofuscado. En realidad, es un sencillo webshell que permite navegar entre las carpetas, subir archivos, cambiar permisos, renombrar y editar. No forma parte de los otros, aunque si es un complemento añadido para poder subir y gestionar con más facilidad los archivos en el sitio web. De hecho, ni tan siquiera tiene autenticación, así que, una vez subido al servidor, si ese directorio estuviera indexado por cualquier buscador, incrementaría las posibilidades de acceso por parte de otros atacantes diferentes al original.
Si miramos el archivo con.php , el cual, sí que está ofuscado, ya nos aparece una primera pantalla de autenticación; nos pide usuario y contraseña.
También tenemos una firma, “UBH Team”.
Termino aquí esta primera parte, y dejo abierto el tema para ampliar información en una segunda entrega.
Otros artículos que te pueden interesar
Te dejo a continuación otros artículos míos relacionados con la Ciberseguridad que a lo mejor te pueden interesar: