Red de conocimiento informático - Aprendizaje de código fuente - Análisis de secuestro de imágenes: análisis de tecnología de secuestro de imágenes

Análisis de secuestro de imágenes: análisis de tecnología de secuestro de imágenes

Después de jugar con la computadora en la oficina durante media hora, el ingeniero del departamento de informática sintió que sus párpados seguían temblando porque había estado haciendo un trabajo inútil desde que asumió la tarea: llevar la U. Muchos de Todos los kits de herramientas de mantenimiento de los que estaba orgulloso en el disco se perdieron en esta máquina, ya sea que se ejecutaron directamente en la unidad flash USB o se copiaron en cualquier directorio, el sistema informó "archivo no encontrado" o simplemente no se pudo ejecutar. "No importa si lo ejecuta directamente en la unidad flash USB o lo copia en cualquier directorio, el sistema siempre informa "archivo no encontrado" o no se ejecuta. Por primera vez, sintió miedo. El archivo estaba justo delante de sus narices. , pero no pudo encontrarlo o se negó a ejecutarlo, ¿podría ser que el virus había dañado la máquina? Tuvo que abrir la página web e intentar descargarlo nuevamente, pero pronto se desesperó debido a la herramienta que acababa de descargar. También falló.

Ante la expectativa de muchos empleados, no tuvo más remedio que decir: "Los archivos del sistema están gravemente dañados y no se pueden reparar, por lo que solo podemos reinstalarlos". "

Después de instalar el sistema y el software de oficina común, salió de la oficina como un ladrón, temiendo causar problemas si se quedaba por un tiempo, pero no sabía que el "problema" había Ya se instaló en la oficina que acababa de usar. En el disco U. Cuando regresó a la computadora, simplemente hizo clic derecho en el disco U y vio que el mouse estuvo ocupado más de lo habitual. Luego, el software antivirus y el firewall de la red. En el área de la bandeja desapareció. Entró en pánico y corrió apresuradamente al oficial de Super Patrulla, pero el sistema informó que "no se puede encontrar el archivo", se quedó frente a la computadora sin comprender: la plaga viene con la puerta...

Como dice el viejo refrán: "El camino tiene sólo un pie de altura". El diablo mide diez pies de altura. Esta filosofía clásica ha sido rápidamente promovida y aplicada en Internet. A principios de este año, se aplicó una función de depuración del sistema de larga data a la tecnología de virus, transformándose así en un abogado del diablo. Los usuarios comunes están a punto de enfrentar un desastre de virus inexplicable: el "secuestro de imágenes". Secuestro de imágenes "también conocido como "IFEO" (Opciones de ejecución de archivos de imágenes, en realidad debería llamarse "Secuestro de imágenes"), al menos debería llamarse "Secuestro de imágenes", o al menos "Secuestro de IFEO", no solo "IFEO" ¡sí mismo! ). En la arquitectura de Windows NT, el propósito de IFEO es proporcionar configuraciones de entorno especiales para ciertos programas ejecutables que pueden causar errores cuando se ejecutan en el entorno predeterminado del sistema. En la era de Windows NT, el sistema utilizaba un mecanismo de administración de pila (área de memoria administrada por aplicaciones) temprano, lo que hacía que algunos programas se ejecutaran de manera diferente a la actual. Más tarde, a medida que se actualizó el sistema, el proveedor modificó la pila del sistema. introduce un esquema de asignación de memoria dinámica Para resolver estos programas problemáticos, Microsoft proporciona configuraciones de entorno especiales para los archivos ejecutables del programa a través de la función "pila". Para cuidar estos programas, Microsoft diseñó la tecnología "IFEO" con una actitud "reflexiva", y esto no es un "secuestro" en absoluto. ¡Su intención original no es secuestrar en absoluto, sino "parámetros de ejecución de archivos de imagen"!

IFEO establece algunos parámetros relacionados con la asignación de pila Cuando un programa ejecutable está bajo el control de IFEO, su asignación de memoria se establecerá de acuerdo con los parámetros del programa. La respuesta es sencilla. La arquitectura de Windows NT reserva una interfaz interactiva para los usuarios, que se encuentra en "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" en el registro, utilizando el nombre del archivo del programa ejecutable que coincide con el proyecto como control. base para cargar el programa y, finalmente, configurar el mecanismo de administración de la pila del programa y algunos mecanismos auxiliares, etc. Probablemente se deba a que Microsoft consideró que agregar control de ruta generará juicios problemáticos y operaciones inflexibles, y también puede conducir fácilmente a la redundancia del registro. Por lo tanto, IFEO adopta el método de ignorar la ruta que coincide con el nombre del archivo de programa a controlar. Por ejemplo, si IFEO especifica controlar un archivo de programa ejecutable llamado "AAA.EXE", no importa en qué directorio se encuentre. Mientras su nombre también se llame "AAA.EXE", solo puede revolcarse en la montaña de cinco dedos de IFEO.

Lo anterior es puramente conceptual, entonces ¿cómo funciona IFEO? Por ejemplo, hay un archivo de programa llamado "lk007.exe". Debido al uso del antiguo mecanismo de administración de pila, no puede ejecutarse normalmente o incluso se ejecuta ilegalmente en el nuevo sistema para reemplazar el sistema con la administración de pila anterior. mecanismo, necesitamos que IFEO intervenga, debe realizar los siguientes pasos:

1. Asegúrese de ejecutar regedit.exe en modo administrador y busque la siguiente clave de registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows NT\CurrentVersion\Image File Execution Options

2. p>

2. En "Image File Execution Options", cree una subclave que no distinga entre mayúsculas y minúsculas. para "lk007.exe". Ahora asegúrese de que en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lk007.exe\, cree una clave de registro de tipo cadena llamada "DisableHeapLookAside" con un valor de "1"

3. Ejecute lk007.exe nuevamente para verificar el estado de ejecución. Ejecute lk007.exe nuevamente para verificar el estado de ejecución. Si el problema realmente es causado por el mecanismo de administración de la pila, no necesita ejecutar el programa. De lo contrario, el programa está fuera del alcance de la intervención de IFEO, o es necesario intentar utilizar otros parámetros para utilizar el programa.

Los parámetros IFEO conocidos son los siguientes:

ApplicationGoo

Debugger

PageHeapFlags

DisableHeapLookAside

DebugProcessHeapOnly

PageHeapSizeRangeStart

PageHeapSizeRangeEnd

PageHeapRandomProbability

PageHeapDllRangeStart

PageHeapDllRangeEnd

GlobalFlag

BreakOnDllLoad

ShutdownFlags

Para decirlo sin rodeos, IFEO es esencialmente el diseño del proveedor del sistema, con el propósito de proporcionar algunos patrones que puedan estar en el diseño inicial Proporcionar ciertas medidas de protección para el software que se ejecuta en él. Para decirlo sin rodeos, IFEO es esencialmente un producto de diseño de proveedores de sistemas. El propósito es proporcionar un cierto grado de protección para algunos programas que pueden ejecutarse en los primeros modos de diseño. Después de la expansión, forma un conjunto de programas simples que se pueden usar. para la depuración, como los parámetros "BreakOnDllLoad", puede establecer puntos de interrupción al cargar una determinada DLL para facilitar a los programadores la depuración de la interfaz ISAPI; el parámetro "Rango varios" con la palabra "Rango" se usa para limitar el tamaño del montón;

Hay un parámetro que causa esta situación: el depurador. Esta puede ser la intención original de Microsoft. El propósito es facilitar a los programadores hacer doble clic en el archivo ejecutable con la lista de control IFEO y llamar directamente al depurador. tener que abrirlo y cargar archivos para depurarlo para aumentar la productividad.

Para que IFEO afecte cualquier solicitud de inicio del programa, la arquitectura NT establece la prioridad de IFEO muy alta. Básicamente, cuando el usuario solicita ejecutar un programa, el sistema primero determinará si el archivo del programa es ejecutable y luego ingresará la entrada de IFEO para que coincida con el nombre del archivo. No es hasta que se pasa este paso de IFEO que el proceso realmente. comienza a aplicarse para la creación de memoria.

Si el sistema coincide con el nombre del archivo que se está ejecutando actualmente en la lista de programas IFEO, leerá los parámetros bajo el nombre del archivo. Estos parámetros tienen un valor predeterminado antes de configurarse manualmente y también tienen prioridades. "Depurador" tiene la prioridad más alta, por lo que es el primer parámetro que se lee. Parámetros, si no se configuran parámetros, no se procesarán de forma predeterminada. Si se configuran parámetros, la situación se complica... Todos deberíamos comprender la naturaleza de IFEO. A partir del fenómeno real, IFEO se denomina directamente "secuestro de imágenes". Llamar a IFEO "secuestro de imágenes" es un poco inapropiado, porque la mayoría de sus parámetros no conducirán a la situación actual. Sólo hay un parámetro que causará problemas, y ese es el "depurador", que IFEO identifica como "secuestro de imágenes". tal vez porque alguien en China aplicó directamente la "opción de ejecución de archivos de imágenes". En la terminología relativamente estandarizada de Sysinternals, el uso de esta vulnerabilidad de diseño técnico para llevar a cabo actividades ilegales debería denominarse "secuestro de imágenes", que también es el término más común para usar IFEO. . ¡El verdadero significado de "secuestro" es "imagen de secuestro"!

El parámetro Debugger se traduce literalmente como "depurador" y es el primer parámetro procesado por IFEO. Su efecto es bastante sorprendente si el sistema encuentra el. archivo de programa en la lista IFEO, el parámetro del depurador se leerá primero. Si el parámetro no está vacío, el sistema enviará el archivo al parámetro del depurador. Si el parámetro no está vacío, el sistema considerará el nombre del archivo del programa especificado en. el parámetro del depurador como el usuario de ejecución que intenta iniciar la solicitud del programa y envía el nombre del archivo del programa especificado en los parámetros del depurador como parámetro. El concepto por sí solo puede ser suficiente para abrumar a algunas personas, así que hagámoslo simple. Dos invitados están cenando juntos en la cafetería. Uno de los invitados (el usuario) le pide al otro invitado (el sistema) que le devuelva algo de comida (esta es una solicitud para iniciar el programa), pero el sistema regresa después de cargar un plato. de comida para el usuario Sin embargo, cuando el sistema cargó un plato para el usuario y planeó regresar, descubrió que había un invitado en otra mesa (el archivo de programa especificado por el parámetro del depurador) era en realidad la persona que le gustaba en elemental. escuela! Entonces el sistema fue directamente a la mesa de los invitados con la comida que originalmente estaba destinada a ser llevada al usuario, y *** fue con los recuerdos del pasado (la imagen del archivo solicitada para ser ejecutada por el programa de inicio) el nombre y los parámetros iniciales se combinan en un nuevo parámetro de línea de comando...), y el invitado del depurador es, naturalmente, quien finalmente come la comida (obtiene los parámetros de la línea de comando). En este punto, el sistema está ocupado ejecutando el programa de inicio. solicitud del invitado del depurador, y olvídese del usuario que realizó la solicitud inicial del iniciador y el plato de comida (entregado al invitado del depurador como argumento de la línea de comando)

En la lógica de ejecución del sistema, esto significa que cuando el usuario utiliza el argumento de línea de comando "- nohome bbs.nettf.nxet" Al ejecutar "iexplore.exe", el depurador del proyecto IFEO se especifica como "notepad.exe" y "iexplore.exe" se especifica como "notepad" por el parámetro "-nohome bbs.nettf.nxet" .exe". Parámetros de línea de comando de "nxet" "-nohome bbs.nettf.nxet" Al solicitar "iexplore.exe", el sistema ingresa a IFEO y ejecuta notepad.exe Y el nombre del archivo y los parámetros de la solicitud de ejecución original se convierten en el parámetro de línea de comando completo "C: (Archivos de programa\Internet.exe)". \Convierta "Archivos de programa\Internet Explorer\IEXPLORE.EXE - nohome bbs.nettf.nxet" a notepad.exe, por lo que la ejecución final es "notepad.exe C:\ Archivos de programa\Internet Explorer\IEXPLORE.EXE - nohome bbs. nettf.nxet".

Archivos de programa\Internet Explorer\IEXPLORE.EXE - nohome bbs.nettf.nxet", es decir, el nombre del archivo de programa original del usuario iexplore.exe fue reemplazado por notepad.exe, y la serie original de líneas de comando más iexplore.exe en sí, se envían a notepad.exe como nuevos parámetros de línea de comando para su ejecución, por lo que lo último que ve el usuario es la interfaz del bloc de notas, y puede haber dos situaciones: una es que el bloc de notas lea el iexplore.exe completo como texto, y el. otra es que el Bloc de notas lee el iexplore.exe completo como texto. Una es que el Bloc de notas lee el iexplore.exe completo como texto. La otra es que el Bloc de notas muestra un mensaje de error que informa "Nombre de archivo incorrecto", dependiendo de si se trataba de iexplore.exe. originalmente se solicitó que se ejecutara como un comando básico (no viene con parámetros de línea de comando en ejecución) o usa parámetros de línea de comando para ejecutar

La existencia de parámetros del depurador es para permitir a los programadores hacer doble clic en el archivo del programa. para ingresar directamente al depurador para depurar sus propios programas Los usuarios que han depurado programas pueden tener preguntas, porque el programa debe pasar por el paso IFEO al iniciarse y luego hacer clic en el depurador para iniciar el programa recién ingresado por los parámetros del depurador. ¿La razón de la existencia de esta ley hará que el depurador se vuelva a crear? ¿El proceso Microsoft no es estúpido? Lo tienen en cuenta como algo natural, entonces, ¿un programa llamará a IFEO al iniciarse? Depende de si se "llama desde la línea de comando", entonces, ¿qué quiere decir con "llamado desde la línea de comando"? ¿Qué significa? Por ejemplo, si ejecutamos taskmgr.exe en el símbolo del sistema, este es un típico "desde" "Solicitud de ejecución de la línea de comando", y cuando hacemos clic en taskmgr.exe en el menú de aplicaciones comunes del escritorio, el sistema será tratado como una solicitud de ejecución pasada por el programa shell Explorer.exe. Cuando hacemos clic en taskmgr.exe en el En el escritorio o en el menú normal de la aplicación, el sistema lo tratará como una solicitud de ejecución pasada por el programa shell Explorer.exe. Por lo tanto, también pertenece al alcance de "llamar desde la línea de comando" y activa la regla IFEO. para distinguirlo de las operaciones del usuario, los programas cargados por el propio sistema y los programas iniciados en el depurador no pertenecen al alcance de "llamar desde la línea de comando". Esto evita IFEO y evita el bucle sin fin del proceso de carga. >

Desde una perspectiva de programación, "llamar desde la línea de comando" depende de si CreateProcess usa lpCommandLine o lpApplicationName para iniciar el programa.

La convención de llamada escrita por los programadores es lpCommandLine - llamada de línea de comando

BOOL CreateProcess

(

LPCTSTR lpApplicationName,

LPTSTR lpCommandLine,

LPSECURITY_ATTRIBUTES lpProcessAttributes.

LPSECURITY_ATTRIBUTES lpThreadAttributes,

BOOL bInheritHandles,

DWORD dwCreationFlags,

LPVOID lpEnvironment,

LPCTSTR lpCurrentDirectory,

LPSTARTUPINFO lpStartupInfo,

LPPROCESS_INFORMATION lpProcessInformation

);

Debido a este cambio en el parámetros del depurador Una función especial, también se llama "Redirección", y el ataque que la utiliza también se llama "Redirection Hijack", que tiene el mismo nombre que Image Hijack o IFEO Hijack, pero en realidad es la misma tecnología.

Después de explicar el papel de los parámetros del depurador, echemos un vistazo a de qué se trata el "secuestro de imágenes". Al encontrar virus populares de "secuestro de imágenes", el sistema indicará "no encontrado" para software antivirus, cortafuegos, herramientas de seguridad, etc. etc., todos indican "archivo no encontrado" o ejecución que no responde, por lo que la mayoría de los usuarios solo pueden reinstalar el sistema, pero los usuarios experimentados o Wai Guoren encontrarán que puede volver a ejecutarse normalmente después de cambiar el nombre del programa. ¿Por qué? La respuesta es que IFEO establece la lista de nombres de archivos ejecutables para estas herramientas populares, y los parámetros del depurador apuntan a archivos que no existen e incluso apuntan al virus mismo.

Tome el archivo ejecutable principal AST.exe de Super Patrol como ejemplo. Primero, un programa malicioso llamado kkk.exe escribe AST.exe en la lista IFEO y configura su depurador para que apunte a kkk.exe. entonces el sistema pensará que kkk.exe es el depurador de AST.exe. De esta manera, cada vez que el usuario hace clic en el archivo ejecutable AST.exeAST.exe, el sistema realmente ejecuta kkk.exe como depurador. para el AST.exe que debe ejecutarse, solo se puede pasar como parámetro de ejecución de kkk.exe en este momento. Debido al propio kkk.kkk.exe, cada vez que el usuario hace clic en esas herramientas de seguridad "no se pueden abrir". , ¡en realidad es equivalente a ejecutar el cuerpo de un programa malicioso! Este truco es el preferido por la mayoría de los programas maliciosos que utilizan tecnología de "secuestro de imágenes". Con OSO, un virus de disco súper USB y un terminador AV (virus de números aleatorios, virus de alfabeto de 8 bits), estos dos tipos de virus matan a la mayoría de ellos. Los programas maliciosos de herramientas de seguridad populares y software antivirus devastaron Internet y todo el país entró en pánico por un tiempo. De hecho, el núcleo de su mayor mejora tecnológica fue el uso de herramientas de seguridad "incapaces de abrir". equivalente a otro programa malicioso. El cuerpo! El núcleo de su tecnología de mayor mejora es utilizar IFEO para configurarse como un depurador de varias herramientas de seguridad populares. El método de descifrado también es muy simple. Solo necesita cambiar el nombre del archivo de la herramienta de seguridad de ejecución, y esta herramienta de seguridad. No le importa en absoluto que existan mutuamente excluyentes, entonces puede ejecutarse normalmente, a menos que tenga la suerte de cambiar el nombre de otro archivo en la lista negra, como cambiar AST.exe a IceSword.exe. exe a IceSword.exe.

Consejos: exclusión mutua

Para evitar que los usuarios simplemente cambien el nombre del archivo para escapar de la mayoría de las herramientas de seguridad, algunos troyanos también utilizan un método llamado técnicas de exclusión mutua para evitarlo. herramientas de seguridad se ejecuten.

En el sistema, existe un tipo especial de objetos del sistema llamados "mutex". Existen para reducir la sobrecarga del sistema. Por ejemplo, algunas herramientas detectarán si ya se está ejecutando otra copia de sí mismas. para crear un mutex la primera vez que lo ejecuta y luego detectarlo la próxima vez que lo ejecute. La forma más eficaz es crear un mutex en la primera ejecución y luego detectarlo en ejecuciones posteriores. En realidad, este es un método muy simple, porque el sistema guardará el mutex creado para nosotros hasta que el programa requiera que se destruya; de lo contrario, siempre existirá. Ahora surge la pregunta: ¿qué pasa si un programa malicioso obtiene el mutex de alguna herramienta de seguridad y lo falsifica? Estas herramientas de seguridad perderán el derecho a continuar porque detectarán que “ya están ejecutándose” y el programa malicioso no tendrá dónde esconderse.

También están esos programas de doble clic, el archivo está justo frente a ti, pero el sistema reporta un error que dice "Archivo no encontrado", ¿qué está pasando? Esta es otra aplicación de IFEO. El secreto es apuntar el parámetro del depurador a una ubicación de archivo inexistente, de modo que el sistema no pueda encontrar el depurador y no pueda ejecutarlo con éxito si el sistema informa honestamente "depurador no encontrado" El mensaje de error. Estaría bien, ¡pero no sé nada de Microsoft! ¿Es por encubrir el hecho de que IFEO existe o por alguna razón y negarse a admitir que el depurador al que hace referencia el depurador no existe para causar el error, pero ha sido "mutado" en un comando que no puede ingresar al sistema? ?Parámetros de línea, utilizando el mecanismo de creación de procesos para reemplazar la solicitud de ejecución original. La solicitud de ejecución original ha sido "mutada" en un parámetro de línea de comando y no puede ingresar al mecanismo de creación de procesos del sistema. Se informa al usuario como "Archivo no encontrado". ", por lo que no se entiende. Los usuarios de IFEO sólo pueden mirar con confusión esta herramienta de seguridad que el sistema "no reconoce".