APT34-Glimpse y problema del túnel DNS

APT34-Glimpse y problema del túnel DNS

Antecedentes:

El 18 de abril de 2019, una organización de piratas informáticos utilizó el seudónimo de Lab Dookhtegan para vender las herramientas de piratería del equipo APT34, la información de los miembros, la infraestructura relacionada, los resultados de los ataques y otra información en el canal de Telegram, lo que provocó inteligencia de amenazas de la industria y personal de seguridad en el campo del Equipo Rojo Seguir
Inserte la descripción de la imagen aquí
Entre ellos, APT34 también se conoce como OilRig (Crambus, organización "Human Face Horse", Cobalt Gypsy). Es una organización APT de Irán. Desde 2014, la organización APT34 ha estado activa. La organización ha llevado a cabo una serie de ataques contra Irán. . Los objetivos de ataque clave se encuentran en Medio Oriente, y los ataques principales están dirigidos a las finanzas, el gobierno, la energía, la química, las telecomunicaciones y otras industrias. Incluyendo Etihad Airways, el aeropuerto de Abu Dhabi, la UAE National Petroleum Corporation, Lamprell Energy Company, Kuwait Amilidwan Bay, el Tribunal Administrativo de Omán, la Oficina del Primer Ministro de los EAU, etc.
Inserte la descripción de la imagen aquí
En este artículo, Metron Security Lab analizará el proyecto APT34-Glimpse y los problemas del túnel DNS para todos

Introducción al túnel 0x01 DNS

El protocolo DNS es una base de datos de red distribuida de cliente / servidor. La razón de la distribución es que no hay un único sitio en Internet que pueda conocer toda la información. El acceso a DNS se realiza a través de la biblioteca de aplicaciones del solucionador de direcciones. Antes de solicitar que TCP abra una conexión o use UDP para enviar datos de unidifusión, debe conocer la dirección IP. El túnel DNS es un tipo de conexión de túnel establecida a través de DNS.

Análisis de estructura 0x02 APT34-Glimpse

Glimpse es un conjunto de herramientas de control remoto que utilizan túneles DNS. La siguiente figura muestra la lista de archivos Glimpse
Inserte la descripción de la imagen aquí
Agente:
Panel del programa cliente : Panel gráfico de la herramienta
Servidor: Programa servidor
Readme.txt: Documento de instrucciones de implementación
Inserte la descripción de la imagen aquí
runner_.vbs script utilizado para iniciar el directorio actual Bajo el archivo de secuencia de comandos de PowerShell, debe cooperar con otros métodos de ejecución para comenzar la ejecución; las
funciones de los tres archivos de secuencia de comandos dns.ps1, dns_main.ps1, refineddns_main.ps1 son básicamente las mismas, y los otros dos archivos han creado confusión en los nombres variables en función de dns_main.ps1 ;
Inserte la descripción de la imagen aquí
NewPanel-dbg.exe es un programa de interfaz desarrollado por C #, que es una interfaz de control de caballo de Troya, que incluye mostrar la lista en línea del agente, la ejecución de comandos, la carga y descarga de archivos, ver los resultados de ejecución, cambiar el modo de solicitud de DNS, actualizar y otras funciones
Inserte la descripción de la imagen aquí
sacr.js Utilice el desarrollo de nodejs como servidor para proporcionar servicios DNS para la interacción con los agentes;

Proceso de comunicación 0x03

Antes de hablar sobre el proceso de comunicación, permítanme hablar brevemente sobre varios tipos de registros de recursos en el protocolo DNS:
registro de host (registro A), registro AAAA, registro de resolución IPV6, PTR, registro CNAME, reenvío de URL, registro de ubicación de servicio, registro NS, registro TXT:
El registro A se refiere a la asignación del nombre de dominio en el DNS a una dirección IPv4. El registro TXT generalmente establece instrucciones para un determinado registro, por ejemplo, se crea un nuevo registro TXT para a.example.com. El contenido del registro TXT es "esta es una prueba TXT record. ", y luego use nslookup -qt = txt a.example.com, puede ver las palabras" este es un registro TXT de prueba ".

El proceso de transmisión es el siguiente: el
Inserte la descripción de la imagen aquí
servidor es el nodo de control, también conocido como servidor C2, que ejecuta srvr.js en el servidor puede iniciar un servidor DNS, esperando la solicitud de conexión del cliente, y el agente también es el cliente. La comunicación entre las dos partes es a través del registro A / TXT del túnel DNS para distribuir el comando y devolver el comando después de la ejecución.

Después de analizar las muestras de ataque específicas en Metron Security Lab, se descubrió que Glimpse usa PowerShell como agente para ejecutar el código, y antes de la ejecución, debe secuestrar el servidor DNS de la víctima para la redirección de DNS para resolver el sufijo de nombre de dominio especificado por el atacante. Al utilizar un algoritmo específico para generar el nombre del subdominio, la máquina víctima envía la solicitud de consulta DNS del registro A / TXT del subdominio al servidor DNS, Servidor C2, y obtiene la dirección IPv4 proporcionada por C2 para la comunicación. Además, el script de PowerShell debe ejecutarse regularmente en forma de tarea programada para obtener información del servidor C2 para ejecutar comandos.

Análisis de función 0x04 del agente

dns_main.ps1 tiene la misma función que los otros dos archivos, excepto que el nombre de la variable se reemplaza por una cadena ofuscada sin sentido
. La función de dns_main.ps1 es la siguiente:

  1. Crear carpeta% Public% \ Libraries
  2. Determine si el archivo% Public% \ Libraries \ Lock existe
    ~ Si no existe, cree el archivo y escriba al pid del proceso PoweSshell actual
    ~ Si existe, lea el tiempo de creación del archivo, si el tiempo está a más de 10 minutos, salga del proceso y Eliminar archivo de bloqueo
    Inserte la descripción de la imagen aquí
  3. Genere un logotipo propietario para el sistema actual y escriba en el archivo% Public% \ Libraries \ quid
  4. 创建 以下 文件 夹
    ~% Public% \ Libraries \ files
    ~% Public% \ Libraries
    ~% Public% \ Libraries \ Receivebox
    ~% Public% \ Libraries \ sendbox
    ~% Public% \ Libraries \ done
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
  5. Reciba comandos de control del servidor C2 a través del registro DNS A o el registro TXT DNS
  6. Ejecute el comando y devuelva el resultado.

Pero descubrimos que aunque el script crea carpetas de "archivos", el programa troyano no parece usar estas carpetas en el código. El caballo de Troya utiliza la carpeta "acceptbox" para almacenar los archivos obtenidos del servidor C2, y la carpeta "sendbox" se usa para almacenar los archivos que el troyano cargará en el servidor.

Análisis de la función 0x05 del servidor

  1. Recibir pseudo solicitud DNS del agente
  2. Utilice las reglas locales para analizar la información del Agente
    . El formato del contenido de la solicitud de pseudo-DNS es: Datos. MainData. MainData2. MainData3. Las cuatro partes almacenan diferentes contenidos.
    Parte de datos:
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    datarand: registro de acción y ayuda, la posición de los datos es variable, determinada por dos valores de reqNoIndex y actionIndex
    aid: información de identificación de este paquete de datos, el servidor genera el directorio del servidor en función de esta
    acción: comportamiento del agente correspondiente
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

Proceso de infección 0x06 APT34-Glimpse

  1. La infección comienza con la propagación de un script VBS llamado runner_.vbs en el cliente, que también es el corredor para la mayoría de las cargas útiles de PowerShell.

  2. Ejecute el script srvr.js en el lado de control. La carga útil de PowerShell es un script complejo. Primero, se realiza el bucle principal de suavizado.
    Inserte la descripción de la imagen aquí

  3. Durante este proceso, el programa del servidor creará subcarpetas como esperar, recibir, realizar, enviar y enviar en el directorio / Glimpse / dns / agentid /, y comunicarse con el agente leyendo y escribiendo archivos en estos subdirectorios.

  4. Al ejecutar este script, Payload esperará instrucciones en un bucle. Una vez que se obtiene el comando del servidor C2, comenzará a realizar acciones específicas y responderá a C2
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    Payload solicitando un nombre de subdominio falsificado basado en la variable $ aa_domain_bb . La función más importante implementada es liberar y ejecutar otras herramientas Conjunto. De hecho, la carga útil es un módulo de propagación basado en canales secretos DNS mezclados con otras funciones de control.
    Inserte la descripción de la imagen aquí
    Aquí utilicé el servicio de resolución de nombres de dominio proporcionado por Tencent Cloud
    Inserte la descripción de la imagen aquí

  5. Ejecute el archivo dns_main.ps1 en el cliente, cree un archivo / Libraries / path y conéctese al servidor
    Inserte la descripción de la imagen aquí

  6. La variable $ aa_domain_bb en Dns_main.ps1 contiene C2 como el nombre de dominio principal del servidor de nombres de dominio autorizado. Si no hay comando o acción de C2, el agente infectado hará ping periódicamente a C2 para proporcionar información básica sobre la máquina de la víctima.
    Una de las funciones más importantes es el administrador de comunicación aa_AdrGen_bb, que implementa la capa de control para enviar y recibir información de control, como comandos, bytes recibidos y si la transferencia de archivos está cerrada y en espera. La acción decodificada se almacena en la variable aa_act_bb de la siguiente manera:
    Inserte la descripción de la imagen aquí

  7. Cuando el servidor resuelve con éxito el nombre de dominio y genera la primera conexión en el cliente, se creará un archivo llamado 10100 en la carpeta de espera. Una vez completada la ejecución, se transferirá a la carpeta extendida. El contenido del comando es whoami e ipconfig.

  8. El programa dns_main.ps1 del cliente se comunica con el servidor mediante el modo ping y el modo texto. Recibe instrucciones del servidor y las guarda en forma de archivo en el directorio del agente \ Receivebox \, con rcvd como prefijo del nombre del archivo. Juzgar las instrucciones del servidor por los caracteres al final del archivo y realizar las acciones correspondientes (controladas)
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí

Formato de túnel 0x07

El servidor sirve como un servidor DNS falso, responde a la solicitud de DNS del agente y responde con la cadena de IP especificada. Las diferentes cadenas de IP se refieren a diferentes contenidos de comunicación.

La cadena ip corresponde a lo siguiente:
Inserte la descripción de la imagen aquí

Use el túnel DNS para transferir datos sin procesar:

El proceso de transmisión de datos original en Glimpse busca registros A específicos en las respuestas de la consulta DNS, como se muestra en la siguiente figura. El troyano procesó el registro A en la respuesta C2 para obtener el nombre del archivo. El nombre del archivo buscó específicamente la dirección IPv4 en el registro A. Los primeros dos octetos fueron "24.125". El caballo de Troya agrega los dos octetos restantes de este registro A a la cadena "rcvd" y lo usa como un nombre de archivo para guardar datos futuros en la carpeta "Receivebox". La dirección IP también le indica al troyano que trate el siguiente registro DNS A como datos. El siguiente registro DNS A se divide en ".", Y cada uno de los primeros tres octetos se considera datos, mientras que el cuarto octeto se utiliza como contador para obtener el bloque de datos correcto. Finalmente, el troyano busca el registro A "1.2.3" como una señal para escribir los datos proporcionados en el archivo especificado.
Inserte la descripción de la imagen aquí

Use el túnel DNS para transferir nuevos datos:

Este ejemplo de Glimpse tiene un nuevo método para obtener archivos de un servidor C2 utilizando una serie de consultas DNS TXT. Este método sigue un proceso similar al método original, pero utiliza el resultado TXT de DNS para obtener el nombre del archivo y escribir los datos en el archivo. Después de escribir datos en el sistema de archivos, este método utilizará el mismo controlador de comandos que el método original para procesar el contenido del archivo en función de los caracteres finales del nombre del archivo.

C2 puede iniciar una nueva función de procesamiento de comandos utilizando el registro DNS A "99.250.250.199" en respuesta a la baliza inicial. El script ingresará en un bucle e intentará comunicarse con C2 cada 50 milisegundos para encontrar una serie de respuestas con caracteres específicos. El script utilizará estas respuestas como instrucciones para determinar cómo procesar los resultados del registro TXT, como se muestra en la siguiente figura. El troyano separará cada registro TXT de la respuesta C2 en el carácter ">". Los datos en el lado izquierdo del carácter ">" se usan como una instrucción, y los datos en el lado derecho de los datos se usan como datos.
Inserte la descripción de la imagen aquí

Resumen 0x08

El proyecto Glimpse filtrado es una herramienta de control remoto de módulos múltiples. Mediante el análisis de TTP, podemos confirmar aproximadamente que el análisis del conjunto de herramientas OilRig en la herramienta de fuga y la inteligencia de amenazas públicas es consistente, pero también vemos que falta el archivo del proyecto y el error de codificación (o Tampered) y otras situaciones. Además, la operación exitosa del proyecto Glimpse debe completarse con el secuestro de DNS, y la operación es relativamente complicada. Suponemos que no se abusará de la herramienta en grandes cantidades. También vale la pena señalar que la información DNS utiliza archivos de manera interactiva para almacenar información y sincronizar operaciones. Esta es una implementación inusual. Supongo que muchos paneles pueden controlar C2 al mismo tiempo. En cualquier caso, esta filtración ha proporcionado más o menos valor a la simulación técnica y la inteligencia de amenazas de los oponentes del Equipo Rojo.
Debido al gran espacio disponible de esta herramienta y al profundo nivel de amenaza, los detalles técnicos de la construcción del entorno específico y la utilización del ataque no se pueden ampliar directamente. Metron Security Lab aquí también les recuerda a todos matar regularmente virus y verificar computadoras, especialmente para determinar Si el servidor de resolución DNS es normal y si se modifica el archivo de hosts.

Publicó 21 artículos originales · ganó 14 · visitó 4075

Supongo que te gusta

Origin blog.csdn.net/m0_38103658/article/details/101538184
Recomendado
Clasificación