Los grupos APT chinos fueron especialmente activos el año pasado. Al mismo tiempo, cada uno de ellos tenía su propio conjunto de herramientas único. Después de examinar millas de líneas de código malicioso capturado durante la investigación de incidentes, encontramos muchos trucos interesantes, que discutiremos en este artículo.
Tabla de contenidos
CheckRes
Descargar
Este malware utiliza cinco archivos para lanzar su payload principal, que secuencialmente se lanzan entre sí. El funcionamiento se puede ver en la siguiente figura. La carga principal la inicia el archivo cmd, que aparece en el sistema al comienzo del malware. Pero al mismo tiempo, el archivo en sí
cmd se inicia mediante un script VBS que aún no existe en el sistema. Tal enfoque integrado para lanzar la carga principal probablemente sea necesario para evitar el análisis de comportamiento.
Esquema de descarga de CheckRes
Módulos
Al comienzo de la carga útil, los módulos se cargan desde el servidor remoto.
Solicitud POST para obtener el módulo
CORREO
/
cgi- papelera/pd.
<
p id="p3">cgi/
http/parámetro_
<
p id="p4">
identificación.
000 HTTP/
una.0
Aceptar :
imagen/gif,
imagen/
X-
xbitmap,
imagen /
jpeg, imagen/ pjpeg,
aplicación licación/
vnd.
milisegundo-sobresalir,
aplica cación/MS Word,
aplicación/vnd.
milisegundo-
PowerPoint, */
Aceptar-
Modismo:
Delaware-
en
Usuario-
Agente:
Mozilla/
cuatro.0 ( compatible;MSIE
6.0;
Ventanas
NT
5. 0)
Anfitrión:
<
IP>
Contenido-
Escriba: aplicación/x-
www - formulario-
codificado en URL
Contenido-
Longitud:
31
Conexión:
Mantener-
Vivo
laboratorio =3999/
06171252&tamaño e=1&
datos=F
Se pueden cargar hasta 16 módulos desde el servidor.
Cargando módulos CheckRes
Los módulos vienen en el cuerpo de una solicitud HTTP. Están envueltos, codificados en Base64 y rodeados por la etiqueta
< actualizar>.
Los módulos son archivos DLL donde el encabezado del resguardo de MS-DOS está lleno de ceros (como se ve en la captura de pantalla a continuación). Al cargar desde C&C, se analiza la tabla de importaciones y reubicaciones. A continuación, se llama al punto de entrada del archivo DLL donde se crea el subproceso para ejecutar el módulo. Es necesario crear un subproceso si desea que el módulo se ejecute continuamente, porque el archivo ejecutable se ejecuta en un solo subproceso.
Encabezado del módulo CheckRes
Cada módulo genera información sobre su trabajo en un archivo ubicado en la siguiente ruta :
%perfildetodoslosusuarios%{F3F85CAE-
3398-45f6- 98C2-
7DBFD3F3042C}
El archivo de salida de cada módulo tiene su propia extensión (por ejemplo, .cap, .ks t, .rdd). El contenido del archivo se cifra mediante la operación XOR con el generador de números pseudoaleatorios "Mersenne Twirl".
Mersenne Twirl
Módulos para cifrar los datos de salida, utilice un generador de números pseudoaleatorios no criptográficos "vórtice de Mersenne" con el valor inicial (semilla) 11. Todos los parámetros siguen el algoritmo estándar para generar valores de 32 bits. Cada módulo tiene varios rasgos característicos relacionados con la implementación del algoritmo. Primero, esta es la inicialización inicial de la matriz, que se repite dos veces: en el primer llenado, el valor inicial se establece en 5489. Luego, sin afectar el llenado anterior, la matriz se vuelve a llenar con un valor inicial de 11
Array de inicialización doble
Hay una característica más: se usa una matriz que es igual a dos órdenes de la secuencia recurrente, a saber, 1248. Por lo tanto, la primera mitad de la matriz se inicializa inicialmente , después de lo cual, según el algoritmo, la segunda mitad de la matriz se genera en base a la primera parte. Cuando se utilizan los 624 elementos generados de la segunda mitad, se sobrescribe el primero. Y sobre la base de la segunda mitad, la primera mitad ya está llena de acuerdo con la relación de recurrencia
Como resultado, la mitad de la matriz siempre contiene datos para generar la otra mitad. Se podría suponer que esto se hizo para simplificar la implementación: usar un bucle para llenar la matriz con números ya pseudoaleatorios en lugar de dos. Pero al llenar la primera parte, aún debe dividir el algoritmo de llenado de matriz en dos ciclos, como se implementa aquí.
Y la última característica se refiere al "endurecimiento" de un número pseudoaleatorio. Al principio El algoritmo lógico asume primero un cambio de bit por una constante, y luego se realiza un Y lógico bit a bit.Aquí, se cambia el orden, lo que afectó a las constantes utilizadas para esta operación. Entonces, la constante 0xefc60000 se representa aquí como el valor 0xFFFFDF8C.
Endurecimiento de números pseudoaleatorios
ShadowPad Light 2021
ShadowPad Light es una versión ligera del ShadowPad original sin ofuscación de código. Aunque esta muestra es muy similar a la ShadowPad original, tiene sus propias peculiaridades.
Cargando
ShadowPad Light viene en tres archivos:
hpdigital.
<
div class="wrapper" readability="7">exe es un archivo ejecutable legítimo firmado por HP;
hpqhvsei.
<
div class="wrapper" readability="7">dll: una biblioteca maliciosa que se carga mediante la técnica de secuestro de DLL; hpqlpvdt.
tmp
es una carga cifrada que contiene un descompresor y una carga útil maliciosa, y también almacena el conjunto inicial de módulos necesarios para el funcionamiento.