Análisis de SkypeACLKeyGen.exe para equipo de hacking
Así que...
¿qué analizamos hoy? bueno, hoy analizamos un software del hacking team. ¿Va sobre Skype? ¿por qué hacemos esto? no sé, me resulta interesante.
En fin, empezamos inspeccionando el comportamiento en tiempo de ejecución. Como podéis ver, requiere un nombre de usuario y una ruta de plugin, y genera una ACL? así queee... ¿¿¿de qué va estooo??? Bueno, inspeccionando este https://airbus-seclab.github.io/skype/vskype-part2.pdf , nos dice que - "Skype implementa un sistema similar a ACL para permitir o denegar que los plugins se adjunten a una instancia en ejecución. Una ”firma” de plugin se añade al archivo de configuración según la respuesta del usuario a un diálogo de advertencia" - . Entonces, ¿qué hay en la carpeta de ese software?
Bueno, emmm, vale... sigue sin decirnos nada. Bien, vemos un shellcode de etapa 1 con final "office" en esa carpeta, lo que puede indicar un exploit de Office (aún sin confirmar), fakeport que es una app de C#, tracer.exe y otras cosas. Genial, mi corazonada es que el plugin real que se registrará es tracer.exe. ¿Por qué? Bueno, del mismo PDF - "El motor de voz de Skype puede generar archivos de traza cifrados si Logging y Logging2 están configurados. El cifrado es mucho más simple, un XOR básico con una clave de 31 bytes" - . Así que vamos a hacer un análisis del generador real de la ACL, y después pasaremos a tracer, y quizá en otro post al shellcode ;)
Empezamos con esto
Luego pasamos a esto
Y finalmente desembocamos en estas
Desde ahí pasamos a esto
Genial, otro comportamiento dinámico tipo huevo de pascua es este: cuando introduces usuario y plugin a ejecutar obtienes .png)
En fin, seguimos adelante y analizamos
Así que, desde una vista de arriba hacia abajo, calcula el sha2 del contenido del archivo y también mapea su contenido en memoria. Desafortunadamente para mí, dinámicamente falló y no hizo nada :/ ¿qué podemos hacer? Seguimos adelante. Entramos en probably_do_hash_based_function_function_recovery.
Lamentablemente es el mismo caso que el anterior, donde fallamos al mapearlo en memoria y salimos de la función. No obstante, solo calculamos md5 y probablemente hacemos alguna recuperación de función basada en la comparación de md5.
Luego seguimos y hacemos algo de malloc y memset
.png)
Después convertimos el nombre de archivo a mayúsculas
Lo mismo para el nombre de usuario
Genial, y a continuación hacemos esto:
Básicamente creamos nuestra propia ACL para permitirnos ejecutar nuestro plugin. En este caso, ahora supongo que será Tracer.exe, que teóricamente registrará los archivos de traza generados por el motor de voz de Skype.

Resultado de salida de la función de las imágenes de arriba

Resultado de salida de la función de las imágenes de arriba
Eso es todo por ahora. Más tarde hoy volveré y actualizaré esto. Por ahora lo que queda es analizar solo esta mitad de la función