Análisis de malware
Análisis de botnets Win32/Lethic
julio 2, por Chamán Vilén
Introducción
Lethic es una botnet de spam que consta de entre 210.000 y 310.000 máquinas individuales que se dedican principalmente al spam farmacéutico y de réplicas. En el apogeo de su existencia, la botnet era responsable del 8-10% de todo el spam enviado en todo el mundo.
A principios de enero de, los empleados de Neustar desmantelaron la botnet y se pusieron en contacto con varios proveedores de servicios de Internet de Lethic en un intento por tomar el control de los servidores de comando y control de la botnet. Esta medida provocó temporalmente que el spam de las botnets disminuyera a un mínimo de su volumen original.
¡Conviértete en un ingeniero inverso certificado!
Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender
En febrero de, los propietarios de la botnet lograron restablecer el control sobre la botnet, utilizando nuevos servidores de comando y control ubicados en los Estados Unidos. Sin embargo, la eliminación ha disminuido el volumen de spam de la botnet. En febrero de, la cantidad de spam de las botnets se había reducido a un tercio de su nivel original. En abril de, la botnet tenía una cuota estimada del 1,5% del mercado de spam y enviaba alrededor de 2.000 millones de mensajes de spam al día.
Este artículo presenta una visión del malware y sus capacidades, cómo se comunica con el CnC, el esquema de cifrado utilizado y los diferentes mecanismos de protección para dificultar el trabajo del analista de malware.
Herramientas
- OllyDBG/IDA Pro.
- Muestra letica (MD5 = 23DE74A6122A8AB3B02EFD3B2C481978, contraseña = infectado)
- Lethic Unpacked (contraseña = infectado)
Vector de infección
Esta botnet llega como archivos adjuntos a mensajes spam disfrazados de notificaciones de contactos conocidos.
Análisis de robots
No hablaré del proceso de desembalaje porque no hay información relevante al respecto. El archivo de compilación original de Lethic pesa aproximadamente 17 kb. No es la botnet más pequeña jamás vista, Tinba o Gamarue tienen un tamaño más pequeño, pero es una botnet de perfil bajo con muchas infecciones que pueden ser el secreto de su longevidad.
Vamos, enciende OllyDBG. Bien, estás en el punto de entrada del malware. Al mirar la sección de datos, puede ver algunas cadenas interesantes, como nombres de API que se resolverán, módulos que se cargarán, también dirección IP de CnC, etc. Con solo mirar este volcado, básicamente podría obtener una imagen completa sobre el funcionamiento interno de este bot.
Lo primero, intentará resolver la API dinámicamente usando LoadLibrary y GetProcAddress. Coloque un BP en la instrucción RET para ver toda la tabla de importación llena de punteros de funciones:
- A continuación se crea un directorio en el directorio APPDATA con el nombre de:
«C:Documentos y configuracionesAdministradorDatos de aplicaciónWindowsActualizar»
Luego, hace una copia del archivo con el nombre de «MSupdate.exe» en este directorio y elimina el archivo original.
- A continuación, para iniciar automáticamente Windows, crea dos claves de registro en:
«HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon» bajo el nombre » Taskman » que apunta al archivo ejecutable especificado anteriormente.
- Y otra clave bajo el nombre de » Windows Update Manager » en:
«HKEY_LOCAL_USERSoftwareMicrosoftWindowsCurrentVersionRun»
- Además, modifica la entrada del registro » shell » ubicada en:
«HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon» con el valor:
explorer.exe,C:Documentos y configuracionesAdministradorDatos de aplicaciónWindowsUpdateMSupdate.exe
A continuación, comprueba si el sistema operativo es un entorno de 32 o 64 bits llamando a IsWoW64Process. En mi caso, estoy ejecutando Windows XP de 32 bits; Esto generalmente se hace antes de realizar la inyección de código.
Inyección de proceso
El método de inyección de código utilizado en Lethic es VirtualAllocEx/WriteProcessMemory /CreateRemoteThread en el proceso explorer.exe. Para seguir la depuración en el proceso explorer.exe, puede reemplazar el primer byte del búfer con 0xCC y hacer de OllyDBG un depurador JIT, y cuando pase por CreateRemoteThread, se activará una nueva instancia de OllyDBG y se adjuntará a su proceso. luego puede restaurar el primer byte a su estado original. Por otro lado, puede mirar el parámetro de dirección de inicio en CreateRemoteThread, iniciar una nueva instancia de OllyDBG y ponerle un BP.
Una vez que haya terminado con este paso, Lethic crea un nuevo nombre de exclusión mutua «VAmazinsdvd010 para evitar que se ejecuten procesos duplicados en la misma máquina. A continuación, carga algunas bibliotecas en el espacio de memoria del explorador y justo después; comienza a preparar la comunicación con CC utilizando las API de Winsock.
Comunicación CC
Luego recibe exitosamente los datos del CnC, dependiendo del valor del comando.
Enumeremos y expliquemos cuáles pueden ser y qué hacen los diferentes comandos enviados por el CC:
- Agregar servidor (0x01): los datos incluyen una dirección IP del servidor de correo público y un puerto. Luego, Lethic crea un socket y se conecta a dicho servidor de correo. Si tiene éxito, inicializa un nuevo MailServerRecord con ID, la IP y el puerto proporcionados, el socket y luego inserta el registro en cc_hdr-Chain. Ahora que el registro se ha agregado a la cadena, si alguna de las siguientes operaciones en el registro falla, Lethic informará al servidor CC; y este último enviará un comando «Eliminar servidor» para eliminar el registro defectuoso.
- Eliminar servidor (0x02): elimina el registro correspondiente al ID de la cadena de registros del servidor de correo.
- Enviar correo (0x03): envía los datos del buffer a un servidor de correo, a través del MailServerRecord señalado por ID. El resultado se envía de vuelta al servidor CC, que a su vez decide si debe configurar el indicador RecvFeedBack o no.
- Limpiar (0x04, 0x05): realice algunos trabajos de limpieza, como liberar toda la cadena MailServerRecords, eliminar el instalador de malware y salir.
- Reservado (0x06), no se realizan más operaciones excepto enviar los datos recibidos.
- Agregar servidor por nombre (0x11), igual que Agregar servidor, la única diferencia es que se proporciona un nombre de host en lugar de una dirección IP.
- Recibir FeedBack (0x13), un indicador que se utiliza para configurar MailServerRecord.bfbFlag.
Si el buffer recibido no incluye ninguno de los comandos antes mencionados, Lethic verifica cada registro de la cadena. Si bfbFlag está configurado en TRUE, eso significa que la operación de envío de correo fue exitosa y se recibió respuesta del servidor de correo. Por lo tanto, inicializa FEEDBACK con el ID del registro, el comando, los datos de retroalimentación y el tamaño, y lo envía todo al servidor CC.
En todos los aspectos, el Zombie actúa como un relevo de correo ligeramente mejorado; reenvía los datos recibidos del servidor CC a los servidores de correo elegidos en una lista administrada. Esto no es muy eficiente, en términos de consumo de ancho de banda, en comparación con el enfoque tradicional basado en plantillas: de hecho, aquí, el servidor CC tiene que enviar casi tantos datos como los que envía cada Zombie. Lógicamente, parece indicar que todas las botnets Lethic deben ser pequeñas para funcionar sin problemas.
La 4 muestra un ejemplo del contenido spam.
¡Conviértete en un ingeniero inverso certificado!
Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender
Conclusiones
Lethic es otro robot de spam que se une a la refriega. No está claro qué le depara el futuro y no sabemos cuándo surgió. Sin embargo, esto muestra cuán «completo» está el «ecosistema» de spambots. La complejidad de Lethic es mínima en comparación con otras botnets de spam (no se ve ningún rootkit, etc.), pero parece bastante eficaz en este momento.