Download - Análisis técnico de win32 georbot
Fernando de la Cuadra, director de Educación ([email protected])
Josep Albors, director de Comunicación ([email protected])
Nuevos ESET Smart Security 5 y
ESET NOD32 Antivirus 5
Desde Georgia, con amor
¿Está alguien intentando espiar a Georgia?
Win32/Georbot
A principios de año, nuestros investigadores recibieron
un nuevo ejemplar de malware que les llamó la
atención. Uno de nuestros analistas se dio cuenta de
que el este ejemplar se comunicaba con un dominio
perteneciente al Gobierno de Georgia* para
actualizarse.
Tras un análisis, nos dimos cuenta que este malware
era un troyano diseñado para robar información
específica de ciudadanos de Georgia. Igualmente,
tuvimos acceso al panel de control de la amenaza, y
descubrimos el alcance y la intención de esta
operación.
En este documento os dejamos toda la información
acerca de esta operación. Es importante destacar que
tanto la Agencia de Intercambio de Datos del
Ministerio de Justicia de Georgia así como su CERT
nacional estaban al corriente de la situación desde
2011 y que han cooperado con ESET en esta
investigación.
Resumen
El malware, denominado Win32/Georbot, tiene las siguientes
funcionalidades diseñadas para robar información de un
sistema infectado:
• Envía cualquier fichero desde el disco duro local a un
servidor remoto.
• Roba certificados.
• Busca en el disco duro documentos Word.
• Busca en el disco duro ficheros de configuración del
escritorio remoto.
• Realiza capturas de pantalla.
• Graba audio usando el micrófono.
• Graba vídeo utilizando la webcam.
• Analiza la red local para identificar ordenadores en la
misma red.
• Ejecuta comandos arbitrarios en el sistema infectado.
Los comandos se activan de forma manual enviando las
órdenes individualmente a cada ordenador infectado, en vez
de lanzar comandos a toda la red de forma general.
*Georgia el país, no el estado. Ver https://www.cia.gov/library/publications/the-world-factbook/geos/gg.html para más información
Win32/Georbot
Vector de instalación
En el dominio .gov.ge también encontramos un iframe apuntando a un servidor
hospedado en la República Checa. El servidor no respondió cuando intentamos
obtener el fichero, sin embargo encontramos otra URL con el mismo patrón en
otro servidor utilizado como C&C por Georbot. El fichero contenía un javascript
ofuscado que llamaba a un iframe en otro dominio, legalcrf.in. Mientras que el
servidor se encontraba de nuevo inactivo, el servicio de navegación segura de
Google indicaba que este dominio había servido exploits en el pasado, así que
puede decirse que este había sido el principal vector de instalación del malware.
En algunas variantes hemos encontrado que el ejemplar revisaba con el sistema
determinadas zonas horarias. Antes de instalarse, el bot analizaba si el
ordenador estaba situado en las zonas UTC+3 o UTC+4. Solo los ordenadores
situados en dichas coordenadas eran infectados. La siguiente imagen muestra
los países situados en dichas franjas horarias. Esta revisión previa a la
instalación se ha eliminado en las versiones más actuales del bot que hemos
analizado.
Win32/Georbot
Ofuscación
Las familias de malware más modernas utilizan packers hechos a medida para
evitar ser detectados por los productos de seguridad. En este caso, el autor o
autores de Win32/Georbot ofuscaron el malware ellos mismos. Y aunque la
técnica de evasión es rudimentaria, el malware ha sido capaz de evitar ser
detectado por algunos motores antivirus durante un período de tiempo.
Ofuscación de la información
Para ocultar cadenas como URL, direcciones IP y librerías DLL, Win32/Georbot
utiliza una clave única localizada justo después de la sección que contiene la
información ofuscada. Cuando el malware se ejecuta, descifra toda la sección de
una vez. La función de descifrado realiza una simple resta en cada byte.
Llamadas al API ofuscadas
Las llamadas al API de Windows también están ocultas en el ejecutable. Antes
de cada llamada al API, una función llamada hashedCall() toma como argumento
el nombre de la DLL y un hash calculado a partir del nombre de la función
hashedCall() carga la librería, calculando el hash para cada función exportada y
devolviendo un puntero donde se localiza la correspondiente función API.
Tabla !: la rutina hashedCall()
De esta manera, Win32/Georbot esconde las funciones del API que está
utilizando porque el binario solo incluye los hashes. Al generar una tabla de
hashes de todas las funciones exportadas de los nombres de las DLL
encontradas en el binario (después de descifrar la información), hemos podido
identificar las llamadas.
Win32/Georbot
Ofuscación del flujo
Para engañar a los análisis estáticos, Win32/Georbot ofusca también la
secuencia de instrucciones. Coloca instrucciones de retorno en el medio de las
funciones. Los compiladores utilizan esta instrucción solo al final de la función,
por lo tanto, la mayoría de los desensambladores estáticos pensarán que es el
final de la función en la sentencia retn. La instrucción retn coge la dirección de la
pila y la sitúa en el EIP. Win32/Georbot realiza esta acción para ofuscar las
instrucciones jmp.
Otra técnica utilizada por Win32/Georbot es la ofuscación de las instrucciones de
llamada. Una instrucción de llamada hace dos cosas: fuerza el paso a la
siguiente instrucción en la pila y entonces salta a la dirección suministrada. El
malware realiza frecuentes llamadas con dos instrucciones equivalentes en su
lugar. Un compilador nunca lo haría. Por ejemplo:
es equivalente a:
Estos dos controles de ofuscación del flujo se utilizan a veces a la vez. Aquí
encontramos la sentencia push;retn entrelazada con un corto jmp.
La siguiente imagen muestra el efecto de arreglar el control de flujo convirtiendo
las secuencias de instrucciones a su homólogo original.
Win32/Georbot
Automatizando el descifrado de estas tres técnicas es mucho más fácil entender
el comportamiento del malware: Historial de versiones
Este bot reporta su número de versión al servidor C&C cuando se conecta a él, lo
que nos ha ayudado a reconstruir la historia del malware. La siguiente lista
muestra el historial de versiones que nos ha permitido averiguar cuándo ha sido
lanzado cada ejemplar.
Septiembre 2010 Sin número de versión
Febrero 2011 2.4.1
Abril 2011 3.3
Julio 2011 4.1
Enero 2012 5.2, 5.3, 5.4
Febrero 2012 5.5
Win32/Georbot
Comandos del bot
En la última versión, el bot puede recibir hasta 19 comandos diferentes. La
técnica de ofuscación del API también se utiliza para los nombres de comando
en el ejecutable, pero sorprendentemente los comandos son envíados en texto
plano por el servidor C&C. Como no hemos visto todos los nombres de
comandos en las trazas de red, hemos obtenido el resto extrayendo los hashes
del ejecutable y utilizando la fuerza bruta con un diccionario.
find [PATTERN] Busca nombres de ficheros que contengan el patrón
dir [FOLDER] Lista el directorio de una carpeta
load [URL] Descarga el ejecutable específico y lo añade al autorun
Upload [PATH] Sube el fichero específico al C&C
upload_dir [FOLDER] Sube el contenido de una carpeta al C&C
main Lista los directorios y los envía al C&C
list [FOLDER] Lista los ficheros de una carpeta
ddos [domain] Arranca un ataque DDoS contra un dominio
scan Devuelve una lista de todos los nombres de dominios de
una red local
word [KEYWORDS] Busca documentos de Word que contengan una de las
palabras clave
system Envía las letras de las unidades de disco al C&C
dump Envia el contenido de carpetas y subcarpetas al C&C
photo Captura pantallazos del escritorio
audio Captura audio del micrófono
rdp Roba configuraciones RDP (.rdp)
video Captura vídeo de una webcam
passwords Roba passwords del navegador (Internet Explorer,Opera)
history Roba el historial del navegador (Internet Explorer,Opera)
screenshot Captura un pantallazo y lo envía al C&C.
Win32/Georbot
Comunicación con el centro de mando y control
Protocolo de comunicación
Win32/Georbot utiliza HTTP (HyperText Transfer Protocol) para comunicarse con
su centro de mando y control (C&C). A lo largo del tiempo, algunos centros de
control han sido utilizados en diferentes países, como en Alemania, República
Checa y Estados Unidos. Para reportar al servidor central y pedir instrucciones, el
bot utiliza una petición HTTP GET cada minuto con los siguientes parámetros:
ver la versión del bot
cam averigua si el sistema infectado tiene una camara
p un identificador del bot. Todas las variantes que hemos
analizado utilizan la cadena “bot123”
id Un identificador único usado para diferenciar entre bots. Se
forma a partir del número de serie del primer disco duro.
Por ejemplo:
Después de recibir la consulta, el servidor central responde con contenido en
HTML (HyperText Markup Language) como el siguiente:
En este ejemplo, el botmaster ordena al bot capturar un pantallazo y subirlo al
servidor central.
Mecanismo de actualización
Win32/Georbot se conecta regularmente con su servidor central para buscar la última
versión del ejecutable del bot. Estas conexiones también se realizan utilizando
HTTP. El servidor devuelve un binario, coficiado en base64, embebido en una página
HTML. Hemos identificado más de mil actualizaciones, las más antiguas de
Septiembre de 2010. El bot se actualiza cada par de días, y algunas veces introduce
nuevas funcionalidades, pero en la mayoría de los casos simplemente son
mecanismos para evadir la detección antivirus.
Mecanismos alternativos
Si un sistema infectado es incapaz de conectarse al servidor central, vuelve a lanzar
sus consultas pero a una página alojada en un dominio del Gobierno de Georgia. Ha
sido precisamente este dominio alternativo lo que nos llamó la atención y el origen de
la investigación.
Win32/Georbot
Figura 2: Mecanismo alternativo utilizado por Win32/Georbot
En primer lugar, el malware intenta alcanzar el centro de control mediante el
comando que contiene su binario. Si el centro de mando y control no responde,
Georbot busca un documento alojado en el website del Gobierno de Georgia.
Seguidamente, lleva a cabo un análisis buscando el marcador ‘||||’. Si está
presente, este marcador oculta la dirección IP del centro de control o servidor
central.
A partir de aquí, Georbot continúa con sus operaciones normales utilizando la
dirección IP obtenida como servidor central.
Win32/Georbot
Interfaz de control y hosts objetivo
Hemos tenido acceso al panel de control de la botnet, que nos ha suministrado
información detallada de la operación y detalles de los motivos de los
cibercriminales. El panel contiene unos doscientos hosts infectados.
Tabla 2: Panel de control de Georbot.
De todos los hosts infectados, el 70% están localizados en Georgia, seguidos de
Estados Unidos, Alemania y Rusia. El panel web también tiene una funcionalidad
que permite el marcado de host interesantes. Seis hosts habían sido marcados
cuando accedimos al panel: tres en Georgia, uno en Rusia, uno en Suecia y otro
más en China.
El panel de control también contiene el historial de los comandos enviados a los
bots. Mientras que la funcionalidad de grabación de vídeo vía webcam, la captura de
pantallazos o lanzar ataques DDoS se ha usado un par de veces, la mayoría de los
comandos eran para obtener listados de directorios, para realizar búsquedas y para
descargar ficheros y analizar la red. Sobre todo, la información más interesante que
hemos podido recopilar del panel ha sido la lista de palabras clave utilizada para
buscar documentos. Las siguientes listas han sido utilizadas para encontrar
documentos que contenían al menos una de las palabras, sin dejar lugar a dudas
sobre la intención de los operadores de esta botnet.
País Porcentaje de infecciones
Georgia 70,45%
Estados Unidos 5,07%
Alemania 3,88%
Rusia 3,58%
Canadá 1,49%
Ucrania 1,49%
Francia 1,19%
Otros 12,83%
Win32/Georbot
Todos los documentos descargados habían sido borrados del servidor, por lo que
no podemos afirmar si la búsqueda fue exitosa o no.
Conclusión
Las características de Win32/Georbot indica que ha sido creado para recopilar
información de los ordenadores infectados. Esta amenaza tiene todas las
capacidades necesarias para infectar y robar información. El hecho de que
utilicen una dirección web de Georgia para actualizar sus comandos y la
información de control, y que probablemente utiliza el mismo dominio para
difundirse parece indicar que los ciudadanos de Georgia son su principal
objetivo. Por otro lado, el nivel de sofisticación de esta amenaza es bajo.
Pensamos que si esta operación hubiera sido promovida por un estado,
hubiese sido más profesional y sigilosa.
La hipótesis quizá más acertada es que Win32/Georbot ha sido creado por un
grupo de cibercriminales que intentaban acceder a información sensible para
venderla a otras organizaciones. Deben operar desde Georgia y han sido
afortunados al conseguir controlar el dominio del gobierno, utilizándolo como
parte de su operación.
El desarrollo de este malware continúa: hemos encontrado nuevas variantes
distribuyéndose. La más reciente, del 8 de marzo. Así que seguimos
investigando.
Win32/Georbot
Anexo: hashes MD5 analizados
Para otros investigadores interesados en investigar este malware, esta es la lista
de hashes de ficheros que hemos visto en la familia de malware Win32/Georbot.
Están listados en orden cronológico.