Heredero de Zeus: por qué el troyano IcedID es peligroso para los clientes bancarios

Los expertos del Grupo IB analizaron el troyano que ataca a los clientes de los bancos estadounidenses y pusieron a disposición del público los resultados de un análisis profundo del formato de datos de configuración dinámica con scripts de Python e información en servidores CnC.

imagen

En noviembre de 2017, un equipo de investigadores de IBM X-Force publicó un informe sobre un nuevo troyano, IcedID , que está dirigido principalmente a clientes de bancos estadounidenses. El bot tiene muchas características del infame malware Zeus, que incluyen: descargar y ejecutar módulos, recopilar y transmitir datos de autenticación al servidor, información sobre el dispositivo infectado y llevar a cabo un ataque de hombre en el navegador (MITB). A pesar de que, en su funcionalidad, el nuevo troyano resultó ser similar a otros banqueros populares: Trickbot, GOZI, Dridex, que atacan activamente a los clientes bancarios, IcedID utiliza un formato binario no estándar para almacenar datos de configuración. Otra característica distintiva de este malware es la capacidad de implementar un servidor proxy directamente en la máquina infectada para realizar un ataque MITB.

Texto: Ivan Pisarev, Especialista en Análisis de Malware del Grupo IB

Inmediatamente, IcedID no está tan extendido en comparación con otros troyanos, pero ahora tiene suficiente funcionalidad para lograr sus objetivos, de los cuales el robo de las credenciales de la víctima es el principal. Esto se puede lograr de muchas maneras, comenzando por el robo banal de archivos y entradas de registro de una computadora infectada, y terminando con la interceptación y el cambio del tráfico cifrado del navegador (ataque del hombre en el navegador).

En el caso de IcedID, los datos fueron robados de las cuentas: Windows Live Mail, Windows Mail, RimArts, Poco Systems Inc, IncrediMail, The Bat! y Outlook. El ataque MITB se realiza usando un servidor proxy, que recoge un troyano en un dispositivo infectado, pasando así todo el tráfico de red a través de sí mismo y modificándolo. IcedID también tiene un módulo de procesamiento de comandos del servidor que le permite descargar y ejecutar el archivo de forma remota (por ejemplo, en el caso en estudio, la muestra cargó el módulo VNC, cuyo código de programa tiene secciones de código similares con IcedID).

El uso de un servidor proxy para MITB es un comportamiento atípico para este tipo de troyano. Más a menudo, el malware se incrusta en el contexto del navegador y las llamadas de función redirigidas de las bibliotecas estándar a sus funciones de controlador (ejemplo: WinHttpConnect () , InternetConnect () , InternetReadFile () , WinHttpReadData () , etc.). Anteriormente, el truco de proxy ya se usaba en GootKit .

IcedID se distribuyó usando otro malware, Emotet (actualmente se usa a menudo como un gestor de arranque, aunque tiene una funcionalidad avanzada) y ya al principio incluía una extensa lista de métodos modernos para robar datos de los usuarios.

Ahora el troyano tiene mecanismos anti-análisis bastante débiles (encriptación de cadenas, encabezado corrupto) y no tiene métodos de detección de VM. Desde el punto de vista del investigador, el malware todavía está en desarrollo y estos mecanismos de protección se agregarán más adelante.

El sistema de inteligencia cibernética Group-IB Threat Intelligence no detectó las ventas de IcedID en foros temáticos, lo que significa la aparición de un nuevo grupo en la arena de troyanos bancarios o la venta del troyano a través de canales privados. Los objetivos del bot, a juzgar por los datos de configuración dinámica (en adelante denominados configs), se encuentran principalmente en los EE. UU.

Lista de objetivos
Perseguir
Charles schwab
Banco de america
USAA
Expreso americano
Wells fargo
Capital uno
Td banca comercial
TD Bank
Banco central
Banco de los Estados Unidos
Union Bank of California
Amazonas
PNC Online Banking
Sinovial
BB&T Bank
Citibank
eBanking
Huntington
ashanalyzer
Comercio electrónico
JPMorgan Chase
Cibc
Regiones OnePass
Banco de roble de poste
Comerica
Descubrir banco
Keybank
Gerente de caja de Frost
Hsbc
Rbc
Halifax
Verizon Wireless
Banco Lloyds
M&T Bank
Virwox
ADP

Este artículo incluye un análisis detallado del troyano, un análisis profundo del formato de configuraciones dinámicas con scripts Python e información sobre CnC.

Parte técnica


Descripción general del trabajo del troyano.


Inicialmente, la sección .data del troyano está encriptada. En primer lugar, después de iniciarlo, descifra la sección de acuerdo con el algoritmo:

imagen

Las variables initial_seed y size_seed se encuentran al principio de la sección de datos (los primeros 8 bytes de la sección), después de lo cual se encuentran los datos cifrados de bytes de tamaño . La función make_seed () es una función única de generador de números pseudoaleatorios ( PRNG) para IcedID, a la que volveremos más de una vez. Puede encontrar la versión de Python de la función aquí .

Inicialmente, el bot contiene cadenas encriptadas. Para facilitar el análisis, se decodificó un script para IDA Pro para descifrar las cadenas (debe insertar la dirección de la función de descifrado en su muestra).

El siguiente paso es agregar un controlador de excepciones utilizando la función SetUnhandledExceptionFilter () . Si se produce alguna excepción durante el funcionamiento de la aplicación, simplemente se reinicia.

Después de agregar un controlador de excepciones, el troyano recopila información sobre el sistema infectado:

  1. Versión del sistema operativo
  2. Número de compilación del sistema operativo
  3. Versión del paquete de servicio
  4. Capacidad del sistema
  5. Tipo de sistema operativo

La aplicación crea un descriptor de seguridad: D: (A ;; GA ;;; WD) (A ;; GA ;;; AN) S: (ML ;; NW ;;; S-1-16-0) , y luego asigna memoria para registrar información durante la operación del troyano. Ejemplo de cadenas registradas (las cadenas se obtuvieron usando un script en la IDA):

  1. E | C | IN | INS | ISF | CP% u
  2. I | C | IN | INT | CI | % u
  3. W | C | IN | INT | CI | CRLL

IcedID puede tomar varios parámetros. Entre ellos están:

  • --svc = - guarda la cadena del parámetro en el registro mediante una clave con el nombre IcedID_reg ("* p *") , donde IcedID_reg (str) es la función de generar el nombre de la clave desde la cadena str (el algoritmo para generar nombres de clave de registro se describirá más adelante), después de lo cual el troyano accede a un evento con el nombre Global \ <% Cadena de caracteres aleatorios%> . En caso de error, el bot crea una copia de su proceso con el parámetro / w = . Si esto no se puede hacer, crea un valor en el registro:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run \ <% Una cadena de longitud 9 de caracteres aleatorios en el alfabeto [az]%>

asegurando así una persistencia en el sistema. Esta clave está destinada al lanzamiento inicial del troyano.

  • / u : de forma predeterminada, el malware intenta ejecutarse como administrador de dominio (utilizando el programa runas ). Si este indicador está presente, el troyano no realiza esta operación y simplemente crea su copia en el directorio C: \ Users \ <% username%> \ AppData \ Local \ <% Una cadena de longitud 9 de caracteres aleatorios del alfabeto [az]%> con el nombre <% Una cadena de longitud 9 de caracteres aleatorios del alfabeto [az]%>. Exe , y escribe la ruta al archivo en el registro, asegurando así una persistencia en el sistema.

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Run \ <% Una cadena de longitud 9 de caracteres aleatorios en el alfabeto [az]%>

Parece que esta clave se usa al actualizar un banquero. Antes de reiniciar el troyano "se queda dormido" durante 5 segundos.

  • / c - antes de ejecutar funciones maliciosas, el troyano "se queda dormido" durante 5 segundos
  • / w = : guarda una cadena del parámetro en el registro mediante una clave con el nombre IcedID_reg ("* p *")

Después de procesar los parámetros, la aplicación accede al registro y obtiene los datos de configuración dinámica que contienen direcciones CnC, así como inyecciones web. El formato para almacenar datos en el registro se describe en las siguientes secciones.

Después de acceder al registro, el programa crea un hilo que, una vez cada 5 o 10 minutos (dependiendo del indicador interno), contacta a CnC para recibir comandos. Aquí vale la pena señalar el mecanismo no estándar de "quedarse dormido" del bot entre llamadas a CnC: los desarrolladores no usaron la función Sleep () estándar, en su lugar crearon un evento en un estado sin señal y sin llamarlo en el estado de señal, llamar a la función WaitForSingleObject () . Función de creación de flujo de llamadas CnC:

imagen

El análogo de la función Sleep () en IcedID:

imagen

El largo período de acceso al servidor, así como la "función de suspensión" no estándar probablemente estén diseñados para contrarrestar el análisis.

SSL se utiliza para ocultar el tráfico entre el servidor y la aplicación.

Después de iniciar el hilo, el bot "eleva" el servidor Proxy en la máquina local para procesar el tráfico en la máquina infectada.

El protocolo de comunicación del servidor y el dispositivo infectado se discutirá en las siguientes secciones. Sin embargo, vale la pena señalar que el malware en el comando del servidor puede actualizar las configuraciones, iniciar y detener el servidor VNC, ejecutar comandos cmd.exe, descargar archivos.

Interacción entre IcedID y el servidor CnC


La lista de direcciones CnC se almacena en el cuerpo del banquero en forma cifrada, así como en el registro en forma de una configuración dinámica. La interacción entre el servidor y el troyano se lleva a cabo utilizando el protocolo HTTPS. Envía datos al servidor con solicitudes POST, usa GET para recibir datos.

La cadena de consulta del servidor es la siguiente:

<% CnC%> /forum/viewtopic.php?a=<%Integer%>&b=<%Long integer%> & d = <% Integer%> & e = <% Integer%> & <% Otros datos%>

Valor de campo:

  • a - tipo de solicitud, este campo puede tomar valores:
    ValorAcción
    0.1Enviar información sobre una máquina infectada
    2,3Enviar otros datos al servidor
    4 4Obtenga la última versión de las configuraciones dinámicas y colóquelas en el registro utilizando la clave con el nombre IcedID_reg ("* cfg1")
    5 5Obtenga la última versión de las configuraciones dinámicas y colóquelas en el registro utilizando la clave con el nombre IcedID_reg ("* cfg0")
    6 6Obtenga la última versión de las configuraciones dinámicas y colóquelas en el registro utilizando la clave con el nombre IcedID_reg ("* rtd") (direcciones CnC)
    7 7Obtenga la última versión del módulo VNC
    8Obtenga la última versión de bot
  • b - ID del bot
  • d - bandera
  • e - constante, ubicada directamente en el código bot

Además, los valores del campo dependen del campo "a". Si es 0 o 1, la consulta se ve así:

POST /forum/viewtopic.php?a=<%0 or 1%> & b = <% BotID%> & d = <% Integer%> & e = <% Constant%> & f = <% Cfg1 Checksum%> & g = <% Cfg0 Checksum%> & h = <% Rtd Checksum%> & r = <% VNC Checksum%> & i = <% Tiempo de solicitud%> HTTP / 1.1
Conexión: cerrar
Tipo de contenido: application / x-www-form-urlencoded
Longitud del contenido:

El cuerpo de la solicitud contiene información sobre la máquina infectada. La información se proporciona en forma de:

k = <% String%> & l = <% String%>% j = <% Integer%> & n = <% Integer%> & m = <% String%>

Donde:

  • k - nombre de la computadora en UNICODE
  • l - miembro de dominio en UNICODE
  • m - Información del sistema:
    1. Versión del sistema operativo
    2. Número de compilación del sistema operativo
    3. Versión del paquete de servicio
    4. Capacidad del sistema
    5. Tipo de sistema operativo

Si el campo es 2 o 3, la consulta se ve así:

POST /forum/viewtopic.php?a=<%3 or 2%> & b = <% BotID%> & d = <% Integer%> & e = <% Constant%> HTTP / 1.1
Conexión: cerrar
Tipo de contenido: aplicación / octeto-flujo
Longitud del contenido:

De lo contrario, la solicitud es la siguiente:

OBTENER /forum/viewtopic.php?a=<%4-8%>&b=<%BotID%>&d=<%Integer%>&e=<%Constant%>&o=<%Object Checkum%>
HTTP / 1.1
Conexión: cerrar

Tipo de contenido: application / x-www-form-urlencoded
Longitud del contenido:

Ejemplos de consultas se presentan en las siguientes figuras. Encabezado del paquete al acceder al servidor:

imagen

Cuerpo del mensaje:

imagen

El troyano puede recibir comandos del servidor. Los comandos se representan como valores enteros. Todos los comandos llegan al bot en forma de cadenas, cuyos parámetros están separados por el símbolo ";". El programa puede procesar 23 comandos:

El equipoValor
0 0No hace nada (probablemente en el futuro se agregará funcionalidad)
1Actualice el valor con la clave de registro denominada IcedID_reg ("* cfg0")
2Actualice el valor con una clave de registro denominada IcedID_reg ("* cfg1")
3Actualice el valor de la clave de registro con el nombre IcedID_reg ("* rtd")
4 4Descargue el archivo, guárdelo en el directorio AppData y ejecútelo
5 5Ejecute el programa, el nombre y los argumentos de inicio vienen como parámetros
6 6Obtenga información sobre los procesos en ejecución, incluidos: PID y nombre del proceso
7 7Apague la computadora con la información, como parámetros de función:
SHTDN_REASON_FLAG_PLANNED
SHTDN_REASON_MINOR_INSTALLATION
SHTDN_REASON_MAJOR_APPLICATION
8Escriba el valor en el registro (el nombre se genera según el algoritmo que se describe a continuación)
9 9Lea el valor en el registro (el nombre se genera según el algoritmo que se describe a continuación)
10Elimine la clave del registro (el nombre se genera según el algoritmo que se describe a continuación)
11Ejecute el módulo avanzado para procesar comandos desde el servidor
12Detenga el módulo extendido para procesar comandos desde el servidor
13Actualizar el módulo VNC (ubicado en el directorio% TEMP%)
14Obtenga una lista de archivos en el escritorio de un dispositivo infectado
15Descargue el archivo, guárdelo con el nombre <% Cadena de caracteres aleatorios%>. Tmp y ejecútelo con la tecla \ u . Parece que este comando es necesario para actualizar la versión del bot en un dispositivo infectado.
16Eliminar un archivo cuyo nombre contiene una cadena (viene como un parámetro)
17Inicie el módulo de distribución de red. La distribución se produce copiando e iniciando el bot en el directorio de Windows en otro dispositivo usando el protocolo LDAP.
18 añosObtener datos de registro de bot
19Establecer el evento de acceso al servidor en estado de alarma
20Obtenga información de la cuenta para las siguientes aplicaciones: Windows Live Mail, Windows Mail, RimArts, Poco Systems Inc, IncrediMail, The Bat! y perspectivas
21Cambiar el intervalo entre llamadas al servidor
22Obtenga la ruta de la variable de entorno, descargue el archivo y guárdelo en esta ruta
21Cargue el archivo en el directorio AppData, ejecútelo con los parámetros / t = <% Handle del evento especialmente generado%> / f = <% Handle 2 del evento especialmente generado%> . Después de traducir los eventos a un estado de alarma, el archivo descargado se elimina del directorio AppData

Si el comando se ejecuta con éxito, el troyano envía la cadena "Verdadero" al servidor, de lo contrario, "Falso".

En el caso de recibir un comando para iniciar el módulo de comandos avanzados, la aplicación envía dos bytes al servidor, luego de lo cual espera una respuesta. El primer byte recibido del servidor corresponde al comando extendido de la tabla:

El equipoValor
5 5Inicie un hilo ejecutando comandos cmd.exe en la máquina infectada.
6 6Inicie el servidor VNC. En el caso en estudio, el servidor VNC se presentó como una biblioteca DLL, que tenía un algoritmo de cifrado de cadena similar.
7 7Ejecute el comando de la tabla anterior. Para recibir un comando normal, el troyano envía dos caracteres al servidor, notificando al servidor que está listo al aceptar un comando bot.

Un servidor VNC se puede iniciar de dos formas posibles (dependiendo del indicador interno):

  1. Usando la función CreateProcessA () con el parámetro rundll32.exe kernel32, Sleep -s <% param%>
  2. Uso de la función CreateProcessA () con el parámetro svchost.exe -s <% param%>

donde <% param%> es 16 bytes en la representación de cadena, llenada de la siguiente manera:

imagen

Inmediatamente después de comenzar, el módulo VNC verifica la presencia del modificador -s , después de lo cual lee el parámetro pasado y verifica la condición:
paramValue[0] == paramValue[1] ^ (paramValue[3] | (paramValue[2] << 16)) 

y el uso de la función DuplicateHandle () crea una copia del controlador de socket para una mayor interacción con el servidor.

El parámetro StartupInfo de la función CreateProcessA () contiene el nombre del Desktop'a especialmente generado: Predeterminado <% flag%> . Además, antes de la llamada a la función, la dirección del módulo VNC se coloca en el parámetro ProcessInformation :

imagen


Como se puede ver en la lista, IcedID tiene una amplia gama de capacidades para el control completo de la máquina infectada. Incluso si el operador encuentra el problema de la falta de alguna función, simplemente descargará otro programa con la ayuda de un troyano y realizará las tareas que se le asignen. Por ejemplo, a fines de diciembre de 2017, registramos la distribución de TrickBot por parte de este banquero.

Información de configuración


Generación de nombres para entradas de registro.


Todos los datos de configuración que el programa recibe del servidor se almacenan en el registro del dispositivo infectado (excepto el módulo VNC, que se almacena en el directorio% TEMP% en el formato tmp% 0.8X01.dat ).

Los nombres de las claves de registro que almacenan los datos de configuración que nos interesan se calculan mediante la siguiente función:

imagen

Como puede ver en la figura, el nombre de la clave es un valor hash MD5 de dos variables: str y computerSeed . El tipo de datos almacenados en la variable de registro depende del valor de la primera variable. Por ejemplo, con un valor variable de * cfg0 o * cfg1, la clave de registro almacena las inyecciones web, con un valor de * rtd, la clave almacena una lista de CnC.

computerSeed es una variable exclusiva del usuario. Se calcula en función del SID del usuario. El script proporciona una versión en python del cálculo de esta variable.

Ruta completa a las entradas de configuración en el registro:

HKEY_CLASSES_ROOT \ CLSID \ <% MD5 valor en el formato: {% 0.8X-% 0.4X-% 0.4X-% 0.4X-% 0.4X% 0.8X}%>

El algoritmo descrito anteriormente es precisamente el algoritmo para generar el nombre IcedID_reg () , que se mencionó repetidamente anteriormente.

Encontramos los siguientes valores de cadena que están involucrados en la generación de nombres de registro de información importante para el banquero:

  • * cfg0 : contiene una lista común de inyecciones web
  • * cfg1 : contiene una lista de direcciones y cadenas para robar completamente los datos de la página
  • * rtd : una lista de direcciones CnC
  • * bc * : notifica el estado del módulo para procesar comandos extendidos desde el servidor. Si esta entrada está en el registro, el módulo se está ejecutando
  • * p * - guarda los parámetros de inicio con las teclas --svc = y / w =

Estructura de almacenamiento de archivos de configuración dinámica.


Las configuraciones dinámicas se almacenan en el registro en forma cifrada. El servidor VNC, que se encuentra en el directorio% TEMP%, se cifra de la misma manera.

Se utilizan dos algoritmos para el cifrado de datos: algoritmo troyano patentado y RC4. Esquema de algoritmo de descifrado:

imagen

Pasemos de la teoría a la práctica. Inicialmente datos cifrados después de leer del registro:

imagen

Después de recibir los datos, el malware los descifra usando su propio algoritmo:

imagen

Y de nuevo nos encontramos con la función make_seed () !

Después del descifrado que tenemos (preste atención a las direcciones, se descifra en la misma sección de la memoria):

imagen

Después del segundo descifrado en la memoria, vemos lo siguiente:

imagen

Después de descomprimir y analizar los datos. Cabe destacar que antes de liberar los datos, los datos se vuelven a cifrar utilizando RC4, protección contra el análisis dinámico de la aplicación.

La estructura de datos adicional depende del tipo de datos de configuración. Por ejemplo, los datos de configuración con el prefijo rtd se almacenan en el formato:

 typedef struct CNCStruct { char signedMD5sum[128]; int checksum; BStrings cnc[N]; } CNCStruct; typedef struct BStrings { int length; char str[length]; } BStrings; 

Lista de direcciones CnC en un estudio:

imagen

Antes de acceder a las direcciones CnC de la lista recibida, el bot verifica la firma digital. La clave pública para verificar la firma se almacena en el cuerpo del bot en forma cifrada. Después del procedimiento de verificación de firma, la aplicación "sobrescribe" la clave pública, primero con datos aleatorios y luego con ceros:

imagen

Las configuraciones con el prefijo cfg se almacenan en el formato:

 typedef struct CfgStruct { int checksum; int elements_count; char config[]; } CfgStruct; 

En el caso estudiado, vimos los siguientes datos:

imagen

Los datos se almacenan en un formato binario único, que se discutirá más adelante.

Puede ver el algoritmo para generar claves de registro y descifrar datos de configuración en un script .

Algoritmo de análisis de datos de configuración


Después de descifrar los datos, el programa los analiza y los guarda en forma de una lista vinculada, que luego participa en el análisis del tráfico en el dispositivo infectado (MITB). En primer lugar, los datos se dividen en bloques que tienen la estructura:

 typedef struct BaseBlock { int size; char type; char global_flag; char data[size - 6]; } BaseBlock; 

La estructura del campo de datos depende del indicador de tipo . El indicador en esta estructura indica lo que sucede cuando se encuentra una cadena en la URL / cuerpo de la solicitud. El campo puede tomar los siguientes valores:

BanderaValor
0x10Reemplazo parcial del cuerpo de la página, como parámetros: etiquetas entre las que es necesario reemplazar, así como el valor por el cual se reemplazará el cuerpo
0x11.0x13Reemplazo parcial del cuerpo de la página, como parámetros: la parte de la página que debe reemplazarse, así como el valor por el cual se reemplazará el cuerpo.
0x12Reemplazo de cuerpo de página completa
0x20Robo del cuerpo de la página. Como parámetros - etiquetas, entre las cuales hay una sección de página de interés
0x21Robo de página completa
0x22Robo completo del cuerpo de la página, el cuerpo se guarda en el registro
0x2EBusque en el cuerpo de la página las líneas con las etiquetas 0x40 y 0x41, en caso de detección - robo del cuerpo de la página
0x30Solicitar bloqueo
0x31Tome una captura de pantalla de la página.
0x32,0x33Redireccionar a otra página (la ruta a la página es uno de los parámetros). Además, el parámetro es la cadena <% Registry Salt%> # <% URL%> , el bot accede a <% URL%> , carga los datos desde allí y luego los guarda en el registro utilizando la clave IcedID_reg (<% Registry Salt%>)
0x34Redireccionar a otra página (la ruta a la página es uno de los parámetros)
0x40,0x41Cuerdas del cuerpo en el cuerpo de la página
0x51Ignorar página
0x60Guarde el valor de la variable en el registro (reemplaza el cuerpo de la página con "Verdadero" o "Falso" dependiendo del resultado del comando, el nombre se genera en función del algoritmo descrito anteriormente)
0x61Demostrar una variable del registro (el nombre se genera en función del algoritmo descrito anteriormente)
0x62Eliminar una variable del registro (reemplaza el cuerpo de la página con "Verdadero" o "Falso" dependiendo del resultado del comando, el nombre se genera en función del algoritmo descrito anteriormente)
0x63Ejecute el módulo avanzado para procesar comandos desde el servidor (reemplaza el cuerpo de la página con "Verdadero" o "Falso" dependiendo del resultado del comando)
0x64Guarde el cuerpo de la página en la memoria del bot (reemplaza el cuerpo de la página con "Verdadero" o "Falso" según el resultado del comando)
La estructura del campo de datos si el tipo es 0x40 o 0x41:

 typedef struct ConfigBlock { BStrings patterns[N]; int(0); } ConfigBlock; 

De lo contrario, la estructura del campo:

 typedef struct BaseBlock { int typeSizeStr; string urlStr; int flagSize; char flag[flagSize]; int firstOptStrSize; char firstOptStr[firstOptStrSize]; int secondOptStrSize; char secondOptStr[secondOptStrSize]; int thirdOptStrSize; char thirdOptStr[thirdOptStrSize]; } BaseBlock; 

Echemos un vistazo más de cerca a uno de los bloques de muestra:

imagen

En primer lugar, preste atención al campo "Tipo de bloque de configuración" en el bloque "Información común del bloque de configuración". Es 0x11, lo que significa que cuando un usuario carga una página cuya URL cae bajo la regla de expresión regular ^ [^ =] * \ / wcmfd \ / wcmpw \ / CustomerLogin $ , la línea <cuerpo (segundo argumento) se reemplaza por la línea < body style = "display: none;" (tercer argumento).

En la memoria de la aplicación, se crea una lista vinculada para cada tipo. El algoritmo de análisis para listas vinculadas se presenta en la figura a continuación como una pantalla IDA Pro. Puede ver el script de Python para los pares de datos de configuración aquí .

imagen

Información de CnC


Después de varios meses de monitorear el desarrollo de IcedID, encontramos muchos dominios que el troyano incluyó en la lista de configuraciones dinámicas en la sección CnC. Representaremos dominios en forma de correspondencia (correo electrónico desde el cual se realizó el registro → dominio):
MailDominios
davidphugley@jourrapide.compercalabia.com
borrespons.com
divorough.com
eyrannon.com
britically.com
joshuastaube@dayrep.commanismay.com
deterhood.com
marrivate.com
greatoric.com
phonetarif.com
CynthiaTHeller@grr.labinncu.net
PatriceAAdams@grr.laarcadyflyff.com
LindaJRowan@dayrep.comyutlitsi.com
SeanHumphreys@pokemail.neturnachay.com
RuthFThigpen@pokemail.netoksigur.net
FlorenceTButler@pokemail.netrfisoty.com
FreidaDDelgado@pokemail.neturnisim.net
TinaLHobson@grr.lacupicratings.com
ElisaRTucker@pokemail.netfreegameshacks.net
DaleKMontes@pokemail.netgordondeen.net
patrickggutierez@dayrep.compoorloo.com
despedsey.com
euphratt.com
detrole.com
JustineRBoatner@pokemail.netlumpyve.com
MatthewAPerkins@grr.lagooblesooq.com
fzlajsf.net
JosephLSmith@grr.lanewpctoday.com
triodgt.com
DominicNDecker@pokemail.netonsunga.net
MarcellaBCraighead@pokemail.netrybatas.com
KellyJMaldonado@grr.lanetocraze.net
irtazin.net

Echemos un vistazo más de cerca a los usuarios para los que se han registrado los dominios:

Información sobre registrantes
Correo electrónico davidphugley@jourrapide.com :

  • Registrador: PDR Ltd. d / b / a PublicDomainRegistry.com
  • Nombre: David P. Hugley (registrante, administrador, técnico)
  • Calle: 2453 Round Table Drive (registrante, administrador, técnico)
  • Ciudad: Hamilton (registrante, administrador, técnico)
  • Estado: Ohio (registrante, administrador, técnico)
  • Postal: 45011 (registrante, administrador, técnico)
  • País: EE. UU. (Registrante, administrador, técnico)
  • Teléfono: 15138878784 (registrante, administrador, técnico)

Correo electrónico joshuastaube@dayrep.com :

  • Registrador: PDR Ltd. d / b / a PublicDomainRegistry.com
  • Nombre: Joshua S. Taube (registrante, administrador, técnico)
  • Organización:
  • Calle: 2173 Kyle Street (registrante, administrador, técnico)
  • Ciudad: Hay Springs (registrante, administrador, técnico)
  • Estado: Nevada (registrante, administrador, técnico)
  • Postal: 69347 (registrante, administrador, técnico)
  • País: EE. UU. (Registrante, administrador, técnico)
  • Teléfono: 13086385612 (registrante, administrador, técnico)

Correo electrónico CynthiaTHeller@grr.la :

  • Registrador: Eranet International Limited
  • Nombre: Cynthia Heller (registrante, administrador, facturación, tecnología)
  • Organización:
  • Calle: 396 Tennessee Avenue (registrante, administrador, facturación, tecnología)
  • Ciudad: Southfield (registrante, administrador, facturación, tecnología)
  • Estado: MX (registrante, administrador, facturación, tecnología)
  • Postal: 48034 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 12482469621 (registrante, administrador, facturación, tecnología)

Correo electrónico PatriceAAdams@grr.la :

  • Registrador: Eranet International Limited
  • Nombre: Patrice Adams (registrante, administrador, facturación, tecnología)
  • Organizacion
  • Calle: 3997 Marietta Street (registrante, administrador, facturación, tecnología)
  • Ciudad: Cazadero (registrante, administrador, facturación, tecnología)
  • Estado: JL (registrante, administrador, facturación, tecnología)
  • Postal: 95421 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 17076322681 (registrante, administrador, facturación, tecnología)

Correo electrónico LindaJRowan@dayrep.com :

  • Registrador: Eranet International Limited
  • Nombre: Linda Rowan (registrante, administrador, facturación, tecnología)
  • Organización:
  • Calle: 1908 Luke Lane (registrante, administrador, facturación, tecnología)
  • Ciudad: Elk City (registrante, administrador, facturación, tecnología)
  • Estado: EK (registrante, administrador, facturación, tecnología)
  • Postal: 73644 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 15802259140 (registrante, administrador, facturación, tecnología)

Correo electrónico SeanHumphreys@pokemail.net :

  • Registrador: Eranet International Limited
  • Nombre: Sean Humphreys (registrante, administrador, facturación, tecnología)
  • Organización:
  • Calle: 4661 Kincheloe Road (registrante, administrador, facturación, tecnología)
  • Ciudad: Portland (registrante, administrador, facturación, tecnología)
  • Estado: EL (registrante, administrador, facturación, tecnología)
  • Postal: 97205 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 16384273711 (registrante, administrador, facturación, tecnología)

Correo electrónico RuthFThigpen@pokemail.net :

  • Registrador: Eranet International Limited
  • Nombre: Ruth Thigpen (registrante, administrador, facturación, tecnología)
  • Organizacion
  • Calle: 765 Michael Street (registrante, administrador, facturación, tecnología)
  • Ciudad: Houston (registrante, administrador, facturación, tecnología)
  • Estado: DK (registrante, administrador, facturación, tecnología)
  • Postal: 77021 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 17137485876 (registrante, administrador, facturación, tecnología)

Correo electrónico FlorenceTButler@pokemail.net :

  • Registrador: Eranet International Limited
  • Nombre: Florence Butler (registrante, administrador, facturación, técnico)
  • Organización:
  • Calle: 4554 Par Drive (registrante, administrador, facturación, tecnología)
  • Ciudad: Lompoc (registrante, administrador, facturación, tecnología)
  • Estado: JL (registrante, administrador, facturación, tecnología)
  • Postal: 93436 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 198058660048 (registrante, administrador, facturación, tecnología)

Correo electrónico FreidaDDelgado@pokemail.net :

  • Registrador: Eranet International Limited
  • Nombre: Freida Delgado (registrante, administrador, facturación, tecnología)
  • Organización:
  • Calle: 4439 Burning Memory Lane (registrante, administrador, facturación, tecnología)
  • Ciudad: Filadelfia (registrante, administrador, facturación, tecnología)
  • Estado: BX (registrante, administrador, facturación, tecnología)
  • Postal: 19115 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 12153306416 (registrante, administrador, facturación, tecnología)

Correo electrónico TinaLHobson@grr.la :

  • Registrador: Eranet International Limited
  • Nombre: Tina Hobson (registrante, administrador, facturación, tecnología)
  • Organización:
  • Calle: 3960 Woodridge Lane (registrante, administrador, facturación, tecnología)
  • Ciudad: Memphis (registrante, administrador, facturación, tecnología)
  • Estado: TN (registrante, administrador, facturación, tecnología)
  • Postal: 38110 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 19012994734 (registrante, administrador, facturación, tecnología)

Correo electrónico ElisaRTucker@pokemail.net :

  • Registrador: Eranet International Limited
  • Nombre: Elisa Tucker (registrante, administrador, facturación, tecnología)
  • Organizacion
  • Calle: 3316 Corbin Branch Road (registrante, administrador, facturación, tecnología)
  • Ciudad: Johnson City (registrante, administrador, facturación, tecnología)
  • Estado: TN (registrante, administrador, facturación, tecnología)
  • Postal: 37601 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 14234332211 (registrante, administrador, facturación, tecnología)

Correo electrónico DaleKMontes@pokemail.net :

  • Registrador: Eranet International Limited
  • Nombre: Dale Montes (registrante, administrador, facturación, técnico)
  • Organización:
  • Calle: 2719 Norman Street (registrante, administrador, facturación, tecnología)
  • Ciudad: Los Ángeles (registrante, administrador, facturación, tecnología)
  • Estado: JL (registrante, administrador, facturación, tecnología)
  • Postal: 90008 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 13232919311 (registrante, administrador, facturación, tecnología)

Correo electrónico patrickggutierez@dayrep.com :

  • Registrador: PDR Ltd. d / b / a PublicDomainRegistry.com
  • Nombre: Patrick G. Gutierez (registrante, administrador, técnico)
  • Organización:
  • Calle: 1146 Mount Olive Road (registrante, administrador, técnico)
  • Ciudad: Atlanta (registrante, administrador, tecnología)
  • Estado: Georgia (registrante, administrador, técnico)
  • Postal: 30328 (registrante, administrador, técnico)
  • País: EE. UU. (Registrante, administrador, técnico)
  • Teléfono: 16789874672 (registrante, administrador, técnico)

Correo electrónico JustineRBoatner@pokemail.net :

  • Registrador: Eranet International Limited
  • Nombre: Justine Boatner (registrante, administrador, facturación, tecnología)
  • Organización:
  • Calle: 2875 Kemper Lane (registrante, administrador, facturación, tecnología)
  • Ciudad: Kearns (registrante, administrador, facturación, tecnología)
  • Estado: YT (registrante, administrador, facturación, tecnología)
  • Postal: 84118 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 18019026902 (registrante, administrador, facturación, tecnología)

Correo electrónico MatthewAPerkins@grr.la :

  • Registrador: Eranet International Limited
  • Nombre: Matthew Perkins (registrante, administrador, facturación, técnico)
  • Organización:
  • Calle: 2507 Locust Street (registrante, administrador, facturación, tecnología)
  • Ciudad: Ellaville (registrante, administrador, facturación, tecnología)
  • Estado: QZ (registrante, administrador, facturación, tecnología)
  • Postal: 31806 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 12299379022 (registrante, administrador, facturación, tecnología)

Correo electrónico JosephLSmith@grr.la :

  • Registrador: Eranet International Limited
  • Nombre: Joseph Smith (registrante, administrador, facturación, técnico)
  • Organización:
  • Calle: 2808 Ruckman Road (registrante, administrador, facturación, tecnología)
  • Ciudad: Oklahoma City (registrante, administrador, facturación, tecnología)
  • Estado: EK (registrante, administrador, facturación, tecnología)
  • Postal: 73102 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 14058506091 (registrante, administrador, facturación, tecnología)

Correo electrónico DominicNDecker@pokemail.net :

  • Registrador: Eranet International Limited
  • Nombre: Dominic Decker (registrante, administrador, facturación, tecnología)
  • Organización:
  • Calle: 1169 Golden Ridge Road (registrante, administrador, facturación, tecnología)
  • Ciudad: Gloversville (registrante, administrador, facturación, tecnología)
  • Estado: NY (registrante, administrador, facturación, tecnología)
  • Postal: 12078 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 15187485876 (registrante, administrador, facturación, tecnología)

Correo electrónico MarcellaBCraighead@pokemail.net :

  • Registrador: Eranet International Limited
  • Nombre: Marcella Craighead (registrante, administrador, facturación, tecnología)
  • Organización:
  • Calle: 1659 Lilac Lane (registrante, administrador, facturación, tecnología)
  • Ciudad: Savannah (registrante, administrador, facturación, tecnología)
  • Estado: QZ (registrante, administrador, facturación, tecnología)
  • Postal: 31401 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 19125956971 (registrante, administrador, facturación, tecnología)

Correo electrónico KellyJMaldonado@grr.la :

  • Registrador: Eranet International Limited
  • Nombre: Kelly Maldonado (registrante, administrador, facturación, tecnología)
  • Organización: NA
  • Calle: 4391 Ben Street (registrante, administrador, facturación, tecnología)
  • Ciudad: Albany (registrante, administrador, facturación, tecnología)
  • Estado: NY (registrante, administrador, facturación, tecnología)
  • Postal: 12207 (registrante, administrador, facturación, tecnología)
  • País: EE. UU. (Registrante, administrador, facturación, tecnología)
  • Teléfono: 15182623616 (registrante, administrador, facturación, tecnología)


Finalmente, considere la cronología de cambiar las direcciones IP de dominio. Todas las direcciones IP se han agregado a la tabla desde noviembre de 2017:

Tabla de direcciones IP
DominioIPPaisVisto por primera vez en la naturaleza
gooblesooq.com185.127.26.227RU07/11/2017
irtazin.net185.127.26.227RU07/11/2017
netocraze.net185.5.251.33RU07/11/2017
triodgt.com185.5.251.33RU07/11/2017
newpctoday.com185.5.251.33RU07/11/2017
fzlajsf.net185.127.26.227RU25/11/2017
netocraze.net185.48.56.139Nl27/11/2017
triodgt.com185.48.56.139Nl27/11/2017
newpctoday.com185.48.56.139Nl29/11/2017
netocraze.net185.22.65.17KZ12/1/2017
triodgt.com185.22.65.17KZ12/1/2017
newpctoday.com185.22.65.17KZ12/1/2017
gordondeen.net185.127.26.227RU11/11/2017
netocraze.net46.148.26.106UA11/11/2017
arcadyflyff.com46.148.26.106UA12/12/2017
cupicratings.com46.148.26.106UA12/12/2017
freegameshacks.net185.127.26.227RU12/12/2017
newpctoday.com46.148.26.106UA12/12/2018
onsunga.net107.150.99.20CN12/12/2017
oksigur.net107.150.99.20CN12/12/2017
rfisoty.com107.150.99.20CN12/12/2017
rybatas.com107.150.99.20CN12/12/2017
urnachay.com107.150.99.20CN12/12/2017
rfisoty.com46.148.26.106UA24/01/2018
rybatas.com185.127.26.227RU24/01/2018
urnachay.com185.127.26.227RU24/01/2018
yutlitsi.com185.127.26.227RU24/01/2018
urnisim.net185.127.26.227RU24/01/2018
oksigur.net185.127.26.227RU26/01/2018
urnachay.com109.234.35.121RU31/01/2018
oksigur.net109.234.35.121RU31/01/2018
yutlitsi.com109.234.35.121RU1/2/2018
urnisim.net109.234.35.121RU1/2/2018
divorough.com46.148.26.106UA21/02/2018
percalabia.com109.234.35.121RU22/02/2018
borrespons.com46.148.26.106UA26/02/2018
britically.com46.148.26.106UA26/02/2018
eyrannon.com109.234.35.121RU26/02/2018
deterhood.com109.234.35.121RU1/3/2018
greatoric.com109.234.35.121RU1/3/2018
manismay.com46.148.26.106UA1/3/2018
marrivate.com109.234.35.121RU1/3/2018
moindal.com46.148.26.106UA1/3/2018
phonetarif.com46.148.26.106UA1/3/2018
moindal.com185.169.229.119CH5/3/2018
despedsey.com46.148.26.106UA3/4/2018
euphratt.com109.234.35.121RU4/4/2018
percalabia.com46.148.26.11UA3/4/2018
deterhood.com46.148.26.11UA24/04/2018
eyrannon.com46.148.26.11UA24/04/2018
greatoric.com46.148.26.11UA24/04/2018
marrivate.com46.148.26.11UA24/04/2018
euphratt.com46.148.26.11UA25/04/2018
borrespons.com185.48.56.134Nl7/5/2018
britically.com185.48.56.134Nl7/5/2018
despedsey.com185.48.56.134Nl7/5/2018
divorough.com185.48.56.134Nl7/5/2018
rfisoty.com185.48.56.134Nl7/5/2018
detrole.com109.236.87.25Nl8/05/2018
manismay.com185.48.56.134Nl8/05/2018
phonetarif.com185.48.56.134Nl13/05/2018
binncu.net46.148.26.106UA17/05/2018
urnisim.net46.148.26.11UA17/05/2018
urnachay.com46.148.26.11UA18/05/2018
yutlitsi.com46.148.26.11UA18/05/2018
oksigur.net46.148.26.11UA21/05/2018
greatoric.com5.187.0.158DE22/05/2018
marrivate.com5.187.0.158DE22/05/2018
percalabia.com5.187.0.158DE22/05/2018
urnachay.com5.187.0.158DE22/05/2018
yutlitsi.com5.187.0.158DE22/05/2018
lumpyve.com185.48.56.134Nl24/05/2018
urnisim.net5.187.0.158DE27/05/2018
borrespons.com85.143.202.82RU6/7/2018
manismay.com85.143.202.82RU6/7/2018
phonetarif.com85.143.202.82RU6/7/2018
rfisoty.com85.143.202.82RU6/7/2018
borrespons.com212.83.61.213DE20/06/2018
manismay.com212.83.61.213DE20/06/2018
rfisoty.com212.83.61.213DE20/06/2018
lumpyve.com212.83.61.213DE20/06/2018
phonetarif.com212.83.61.213DE20/06/2018


Después de estudiar los datos presentados, podemos resumir que todos los dominios están registrados en el correo generado mediante el servicio de correo temporal. La ubicación del solicitante de registro ficticio se encuentra en los Estados Unidos, mientras que los dominios se encuentran en Rusia, Ucrania, los Países Bajos, China, Kazajstán y Alemania (recientemente ha habido una tendencia a "mover" los dominios a Ucrania y Alemania). Todos los dominios están en las zonas de dominio "com" y "net". El alfabeto en el que consiste el dominio incluye solo las letras del alfabeto inglés. En el lado de CnC, se abre el servidor web OpenResty.

Conclusión


A pesar de la "antigüedad" de los troyanos tipo Zeus, su relevancia no cae. Como resultado, IcedID aparece en la arena de los troyanos destinados a clientes bancarios. Aunque el banquero ya tenía una extensa lista de oportunidades al principio, todavía está mejorando: los métodos de desempaque se están volviendo más complicados y la lista de objetivos se está expandiendo. Lo más probable es que, en el futuro, el malware adquiera mecanismos antianálisis y el servidor CnC administre inyecciones web selectivas a los dispositivos infectados. Mientras tanto, los troyanos no satisfacen todos los requisitos de sus "usuarios", como lo demuestra el uso de TrickBot en diciembre junto con IcedID.

Group-IB sabe todo sobre el cibercrimen, pero cuenta las cosas más interesantes.

El canal Telegram lleno de acción (https://t.me/Group_IB) sobre seguridad de la información, piratas informáticos y ataques cibernéticos, piratas informáticos y piratas de Internet. Investigaciones del cibercrimen sensacionalista por pasos, casos prácticos utilizando tecnologías del Grupo IB y, por supuesto, recomendaciones sobre cómo no convertirse en una víctima en Internet.

Grupo de canales de YouTube -IB
Grupo-IB Photowire en Instagram www.instagram.com/group_ib
Noticias breves de Twitter twitter.com/GroupIB

Group-IB es uno de los desarrolladores líderes de soluciones para detectar y prevenir ataques cibernéticos, detectar fraudes y proteger la propiedad intelectual en una red con sede en Singapur.

Source: https://habr.com/ru/post/es418189/


All Articles