Cómo cambiar la firma sin matar el software
Seleccione [Generar instantáneas de todos los proyectos] en el cuadro de diálogo emergente (Figura 2). Luego guarde la instantánea. Ahora que RegSnap ha sido configurado, ejecutemos nuestro programa troyano (recordatorio: al evitar matar, debe recordar mantener el buen hábito de guardar copias en cualquier momento para evitar que se modifiquen errores o dañen o eliminen el troyano durante el experimento). Después de que se ejecuta el caballo de Troya, seguimos el método anterior para crear una nueva instantánea y guardarla, luego presionamos la tecla de acceso directo F5, seleccionamos la instantánea que acabamos de guardar en el cuadro de diálogo emergente "Comparar instantáneas" y nos seleccionamos en el "Primera instantánea" Para la instantánea que acabamos de guardar, archive la instantánea que guardamos en la "segunda instantánea" y los resultados aparecerán rápidamente (Figura 3).
Algunos amigos se sienten incapaces de analizar la información recopilada mediante RegSnap y se quejan de que se recopilan demasiadas cosas. Aquí lo presentaré brevemente. En primer lugar, preste atención al tiempo mínimo entre las dos instantáneas para comparar, use OpenSaveMRU para excluir valores de clave de registro y registre las operaciones de creación, lectura y escritura de archivos *. archivo rsnp. A continuación extraeremos información útil y la analizaremos una por una. La lista de archivos está en C:\WINDOWS\*. *Nuevo archivo troyano. informe de registro exe. Nueva clave principal HKEY_Current_Users\Software\Microsoft\Windows\Shellnoroom\mui cache\C:\Documents and Settings\a 1 pass-admin\Desktop\huigezi\copy Server02.exe Valor de clave: cadena: "copiar servidor 02" HKEY_local_machine\system \controlset 001\enum\root\legacy_*6728*9a6c*670d*52a1\0000.
clave de clase: cadena: "controlador heredado" HKEY_Local_Machine\System\ControlSet001\Enums\Root\legacy_*6728*9a6c*670d*52a1\0000\class clave de guid: cadena: "{ 8 ECC 055d-047 f-111-A537- 000 f 8753 ed 1legacy_*6728*9a6c*670d*52a 1\0000\Control\active service Clave: Cadena: "Servidor troyano" HKEY_local_machine\system\ Control set 001\services\Trojan server\Descripción Clave: Cadena: ". ..Aquí sólo extraigo algunos registros clave de acciones troyanos; consulte el CD para ver todos los registros. A través de la lista de archivos, podemos saber que el troyano genera un nuevo archivo en el directorio de la ventana. A través de la información de monitoreo del registro, también sabemos cómo el troyano se registra como un servicio del sistema y se ejecuta automáticamente. Luego, volvamos a la sala de investigación y análisis de Rising y veamos qué harán los grandes... Hermano Rising: "¡Esta paloma gris ha estado muy desenfrenada recientemente! ¿Deberíamos definir más conjuntos de códigos de características? Hermana Rising: "Sí, no está mal. ! Primero definimos un conjunto de firmas en el registro. " A1Pass: "¡Para! ! "(Al ver que la imagen se congela repentinamente, A1Pass minimiza al reproductor. De la conversación anterior, podemos saber que quieren definir un personaje como un código de característica en el registro. A juzgar por los registros analizados por RegSnap anteriormente, realmente eligieron también Más ! Entonces, ¿qué usarán? De hecho, como hacker, siempre que no afecte el funcionamiento normal del servidor, debes cambiar todos los caracteres del troyano. Por supuesto, es imposible cambiarlos todos a menos que lo hagas. Escriba el troyano usted mismo. Los amigos quieren preguntar, ¿no pueden cambiar nada excepto el registro? Por supuesto, la respuesta es no, como generar el nombre y la ruta de un nuevo archivo, inyectar el nombre del proceso, etc. Puede utilizar la función de WINDOWS para ser insensible a las letras, directamente. Reemplazar las mayúsculas y minúsculas le permite reemplazar directamente los caracteres que pueden aparecer o aparecerán durante la operación con otra cosa. proceso Como podemos ver en la Figura 4, gris. El proceso de "IEXPLORE.EXE" es necesario para iniciar y ejecutar la paloma. Según el razonamiento del registro, podemos pensar que el servidor sin shell debería tener la cadena "IEXPLORE.EXE". ". En este caso, saquemos lo primero. ¡Arma "WinHex"!
WinHex es un editor de 16 estrellas muy famoso. Tiene la calificación de cinco estrellas más alta de ZDNetSoftwareLibrary. Aquí, solo Úselo para editar archivos, y no mucho más. Primero, usamos WinHex para abrir nuestro archivo troyano "Server.exe", como se muestra en la Figura 5.
Luego presionamos la tecla [Ctrl] [. F] para abrir el cuadro de diálogo de búsqueda de texto, ingrese IEXPLORE.EXE y haga clic en "Sí" (como se muestra en la Figura 6).
Los resultados se muestran en la Figura 7. Primero convertimos. a mayúsculas y minúsculas, y haga clic en la letra que desea cambiar (como I), luego presione I en el teclado para completar el cambio, como si usara el Bloc de notas de WINDOWS. Después de realizar los cambios, presione [Ctrl] [S]. para guardar.
¡Eso es todo! Otros, como el registro, el nombre y la ruta del nuevo archivo generado, etc., se pueden cambiar mediante este método. Para lidiar con el software antivirus de Jinshan, Jiangmin y otras marcas. Para lidiar con la eliminación de estos software antivirus, necesitamos procesar aún más nuestros caballos de Troya.
¡A continuación comenzamos a aprender la función de la tabla de entrada (APIName) para evitar matar! 2.) Modificar la tabla de entrada. Me pregunto si algún amigo sabe que el funcionamiento normal de un archivo PE no se puede separar de su función de tabla de entrada interna, y los nombres de las funciones de la tabla de entrada interna en diferentes programas y sus posiciones en el archivo. son diferentes, por lo que la función de tabla de entrada se ha convertido en uno de los lugares a los que los trabajadores de defensa antivirus prestan mucha atención al crear códigos de firma. Según el código de característica de Gray Pigeon que encontré, "Brother Sheng" ha utilizado una de sus funciones de tabla de entrada como código de característica. Por lo tanto, es imperativo que los nuevos amigos dominen las habilidades de exención de la función de la tabla de entrada.
[Poco conocimiento sobre archivos PE: los archivos PE son estructuras de archivos únicas en el sistema WINDOWS, incluidos encabezados de archivos PE, tablas de entrada y archivos de recursos relacionados. ] Después de mis pruebas, modificar directamente la función de la tabla de entrada en el archivo hará que el programa se ejecute de manera anormal o incluso falle. ¿Entonces no hay nada que podamos hacer? ¡No me rindo tan fácilmente! Después de una dura lucha, finalmente encontré una solución en el artículo de FoBnN que también me dio mucha inspiración... Primero abramos LordPE, hagamos clic en el botón [PE Editor] y seleccionemos Trojan en el cuadro de diálogo emergente. archivo, haga clic en [Directorio] (como se muestra en la Figura 8). Haga clic en [...] detrás de la tabla de importación (como se muestra en la Figura 9). En el cuadro de diálogo emergente, seleccionamos InternetOpenUrlA en wininet.dll (Figura 10). Algunos amigos quieren preguntar, ¿por qué no elegir InternetOpenUrlA como función de tabla de entrada? ¡Ja ja! Esto se debe a que hay un código de característica en esta tabla de entrada. Explicaré cómo determinar la firma más adelante, así que no te preocupes.
Bien, paremos aquí. Usemos WinHex para encontrar la posición de la función de la tabla de entrada InternetOpenUrlA y completemos 0 (método de operación: haga clic en la información básica 16 en el lado derecho de WinHex e ingrese 0) (Figuras 11 y 12).
Luego escriba en el área en blanco (el área donde se muestra 000000) y asegúrese de escribir desde el principio, para que no sea fácil cometer errores al calcular la dirección en el futuro. Además, preste atención a la capitalización de las funciones de la tabla de entrada (Figura 13). Después de guardar, regresaremos a LordPE, haremos clic derecho en la función de la tabla de entrada InternetOpenUrlA que debe cambiarse, seleccionaremos Editar en el menú emergente y cambiaremos la información en Thunk a 000B9D5E (Figura 14). Algunos amigos quieren preguntar, ¿no acabamos de poner la función de tabla de entrada en 000B9D60? ¿Por qué se convirtió aquí en 000B9D5E? De hecho, el principio es muy simple, porque hay un espacio delante de cada función de la tabla de entrada. Aunque realmente no necesitamos agregar ese espacio, debemos dejarlo en blanco al completar su dirección, ¡de lo contrario ocurrirá un error! La dirección de 000B9D60 menos un espacio es exactamente 000B9D5E. Para aquellos que no saben mucho, miren más de cerca la Figura 13. Volvamos a LordPE y veamos cómo se ve nuestra función de tabla de entrada modificada (Figura 15). ¡Ja ja! Entonces, ¿qué debemos hacer? De hecho, es muy sencillo: simplemente cambie el nombre de la función de la tabla de entrada (Figura 16). A veces, debido a que la dirección que completamos llega relativamente tarde, por ejemplo, el 000B9D5E que estamos cambiando ahora solo puede contener dos bytes, por lo que solo podemos escribir dos palabras cuando cambiamos la función de la tabla de entrada. En este caso, primero podemos cambiar la información en el Thunk a la dirección inicial, como 000B9D60, y luego cambiar el nombre de la función de la tabla de entrada al valor inicial (es decir, 000B9D5E) después del cambio. exitoso. ¡Después de la prueba, todas las funciones de la paloma son normales! Intente usar Rising (Figura 18), los resultados son evidentes...
3.) Modifique el código de función, aunque hemos logrado matar y evitar aquí, para aprender más técnicas, dejemos. Como las palomas vivimos más tiempo, les presentaré las técnicas para encontrar y modificar firmas. Los patrones son el corazón del software antivirus, ¡pero también son el corazón de nosotros! Depende de quién encuentre primero el corazón de la otra persona y pueda asestarle un golpe fatal, ¡quien gane! Cuando se trata de buscar firmas, tenemos que hablar de MyCCL y CCL.
Creo que los amigos que han prestado atención a la tecnología antivirus no desconocerán los nombres de estos dos software. Sin embargo, debido al funcionamiento torpe del software, la introducción de CCL suele ser solo un vistazo pasajero, ¡lo cual es realmente una experiencia dolorosa para los principiantes! En esta sección, primero presentaré el uso de MyCCL... primero comprenda MyCCL (Figura 19). Basándonos en esta imagen, introduzcamos brevemente cómo utilizar MyCCL. Primero haga clic en 1 para seleccionar el archivo, luego ingrese el número de bloques en el segundo dígito. Cuanto mayor sea el número de bloques, más preciso será el posicionamiento, pero menor será la velocidad de generación y mayor será el tamaño total del archivo generado. Al igual que un servidor del tamaño de Gray Pigeon, si el número de bloques es 300, el tamaño total de los archivos generados superará los 230 millones. Por lo tanto, no se recomienda completar demasiados números aquí. Generalmente, 400 yuanes son suficientes para un servidor como Grey Pigeon. Después de la generación, aparecerá un cuadro de diálogo para recordarle que vaya al directorio correspondiente del antivirus. La imagen muestra la carpeta "E:\Articles\Extreme Antivirus\Pigeon\Output". Iniciaremos el antivirus en esa carpeta y, si se encuentra un virus, el software antivirus lo eliminará por completo. ¡Tenga en cuenta que esto es importante! Una vez completado el procesamiento, haga clic en el segundo procesamiento en el tercer lugar y luego haga clic en el botón [Intervalo de función] arriba de [Generar] y se mostrará un cuadro de diálogo a la derecha. Hacemos clic con el botón derecho en el intervalo del código de característica en "Configuración de intervalo" y seleccionamos "Características de posicionamiento preciso compuestas aquí" en el menú emergente (Figura 20), y luego repetimos las operaciones anteriores hasta que crea que la [longitud de la unidad] es lo suficientemente pequeña. para cambiar fácilmente el posicionamiento del código de característica. Está bien, dije todo eso de una vez. No sé si los principiantes conocen algún uso de MyCCL... Pero estamos apuntando a firmas de archivos y las firmas de memoria no están definidas. Aquí necesitamos utilizar la función de posicionamiento de firma de memoria de CCL. Después de abrir CCL, seleccionamos [Archivo] → [Verificación de firma] → [Firma de memoria] (Figura 21).
En el cuadro de diálogo emergente, seleccione el troyano que queremos evitar y luego ingrese a la "Ventana de selección de rango de ubicación" (como se muestra en la Figura 22). Como se puede ver en la figura, el desplazamiento del primer segmento de código es 00000400, lo que significa que podemos usar 00000400 como posición inicial, por lo que completaremos 0000400 en la "posición inicial" del área de entrada del usuario. ¿Cómo completar las siguientes dimensiones de prueba? ¿Ve el "Tamaño de archivo actual" subrayado en la Figura 22? Podemos usar la calculadora que viene con el sistema WINDOWS para realizar cálculos y configurar el menú "Ver" de la calculadora en Científico, Hexadecimal y Cuatro caracteres (Figura 23). Luego reste el valor inicial 00000400 del tamaño del archivo actual y el resultado es 000B9A00. Luego completaremos 000B9A00 después de "Tamaño de prueba" y haremos clic en el botón "Agregar pieza" (como se muestra en la Figura 24). Finalmente, haga clic en Aceptar y luego haga clic en Ejecutar en el nuevo cuadro de diálogo emergente. Sin embargo, cabe señalar que en este paso todas las funciones del software antivirus deben estar activadas. Todo lo que tienes que hacer es esperar... Sin embargo, no basta con encontrar la firma, ¡también necesitas aprender a cambiarla! Aquí, para facilitar a los lectores la aplicación de lo que han aprendido, solo presentaré algunos conocimientos teóricos y me centraré en operaciones prácticas. Sin embargo, quiero recordarles que el método anti-kill, al igual que el caballo de Troya que usted completó, tiene. un tiempo de supervivencia. Después de este tiempo, este método para evitar matar dejará de ser práctico o el efecto de evitar matar se reducirá considerablemente. Por lo tanto, si realmente quiere convertirse en un experto en antivirus, debe sentar una base sólida y crear constantemente nuevos métodos antivirus, ¡porque estamos "peleando" con el personal profesional y técnico de los fabricantes de software antivirus! Hablemos primero de los problemas que necesitan atención. Déjame mostrarte cómo cambiar el código de característica ahora. 1. El reemplazo de mayúsculas y minúsculas (solo aplicable a archivos que no se escanean ni eliminan) se aplica cuando aparecen letras o frases en inglés reconocibles y se determina que no son funciones relacionadas (como funciones de tabla de entrada). Cómo hacerlo: simplemente reemplace el estuche como se describe en la primera sección de nuestro "Tutorial práctico". Por ejemplo, si A aparece en el código de firma, solo necesita reemplazarlo con A. Motivo: el sistema WINDOWS no distingue entre mayúsculas y minúsculas, pero el software antivirus distingue entre mayúsculas y minúsculas para lograr el propósito de eliminar. 2. Completar con 00 es adecuado para casi cualquier situación, pero la tasa de éxito no es muy alta.
Método de operación: por ejemplo, si encontramos un código de característica 0009EE7F_00000005, basándonos en la información de este código de característica, podemos saber que su ubicación es 0009EE7F y su tamaño es de 5 bytes, que es el contenido de 0009EE7F-0009EE83 (Figura 25).
Los amigos que han estado prestando atención a la práctica de los artículos deben tener preguntas. ¿Cómo encontraste esa dirección? ¿Por qué no puedo encontrarlo? Esto se debe a que el desplazamiento predeterminado de WinHex está en modo decimal, por lo que podemos cambiarlo al modo base 16 haciendo clic en la columna Desplazamiento (como se muestra en la Figura 26).
Luego completamos selectivamente 00 en todas partes (como se muestra en la Figura 27). Recuerda intentarlo varias veces. En 80, puedes encontrar un área que pueda evitar matar y no afectar el funcionamiento normal del programa. Para la firma de memoria definida, solo necesita usar un pequeño programa llamado "Cheap Converter" para convertir su dirección de memoria en un desplazamiento de 16 direcciones base y luego realizar las operaciones correspondientes. Motivo: debido al formato especial del archivo PE y al lenguaje de compilación del programa, la eficiencia de generar el código de destino no es alta e inevitablemente aparecerá cierta "información basura". La existencia de esta información no juega un papel decisivo. en el funcionamiento normal del programa. Cuando esta parte de la "información basura" del caballo de Troya se define como una firma, podemos eliminarla por completo. El método de eliminación es reemplazarlo con 00 sin sentido. 3. Saltar al área en blanco es adecuado: en casi cualquier caso, la tasa de éxito es relativamente alta. Cómo operar: tome el código de característica 0009EE7F_00000005 como ejemplo. Si falla el llenado con 00, no lo pienses mucho. Entonces prueba OllyDbg ahora. No lo presentaré mucho. Esta es una herramienta de depuración/desmontaje dinámico excelente y muy profesional. Aquí sólo lo usamos para ayudarnos a evitar matar. Lo primero que tenemos que hacer es convertir nuestro desplazamiento binario de 16 0009EE7F en una dirección de memoria, porque OllyDbg funciona liberando primero el programa en el espacio de memoria y luego puede realizar operaciones relacionadas... Lo que usaremos aquí es un pequeño programa llamado convertidor de volumen barato La dirección de memoria obtenida después de la conversión es 0049FA7F (Figura 28).
Usemos OllyDbg para abrir nuestro servidor troyano. Primero busque un área en blanco y escriba la dirección 004A24A5. Luego busque la dirección 0049FA7F que acabamos de convertir. Primero seleccione las siguientes tres líneas de datos que comienzan con. 0049FA7F y luego haga clic con el botón derecho en Copiar → Conectar al portapapeles (Figura 29). Cópielo en este documento para su uso posterior y luego NOP estas tres líneas de código una por una (como se muestra en la Figura 30). Finalmente, haga clic derecho en 0049FA7F, seleccione ensamblaje en el cuadro de diálogo emergente y escriba la instrucción de ensamblaje "jmp 004A24A5" (Figura 31). Recuerde, debe quitar la marca de verificación frente a "Rellenar NOP" antes de hacer clic en el botón [Ensamblar]. Luego escribimos la dirección 0049FA84 debajo del 0049FA7F compilado (observe detenidamente la Figura 31). Bien, volvamos a 004A24A5, la dirección en blanco que acabamos de encontrar (Figura 32).
Luego use el método de ensamblaje de ahora para ensamblar la información redundante en este documento oración por oración, y luego agregue la línea "jmp 0049FA84" a la siguiente línea de la última oración del código (como se muestra en la Figura 33). Luego haga clic derecho → [Copiar a archivo ejecutable] → [Todas las modificaciones] (Figura 34).
Seleccione "Copiar todo" en el cuadro de diálogo emergente y guarde. Para escanear y eliminar la memoria, se omite el paso de traducción de la dirección de la memoria. Motivo: veamos primero la Figura 35. Como se puede ver en la figura, al igual que el nombre de este método "saltar al área en blanco", el principio de este método es transferir la información que originalmente contenía el código de característica al área en blanco, NOP toda la información en el original. ubicación y agregue una instrucción de salto allí para saltar a 004A24A5, que es el área en blanco que encontramos, y mueva la información originalmente en 0049FA84 aquí para completar la adición de la información.
4. Adecuado para swaps superiores e inferiores: en casi cualquier caso, la tasa de éxito es relativamente alta.
Método de operación: primero use OllyDbg para cargar el programa troyano. Supongamos que su código de firma es 0009EE7F_00000005. Todavía usamos el convertidor Offset para convertirlo en una dirección de memoria. Ya sabemos que la dirección de memoria correspondiente a 0009EE7F es 0049FA7F, así que busque la ubicación correspondiente en OllyDbg y utilice el método de modificación descrito en "Saltar al área en blanco" anterior para cambiar las posiciones de las oraciones superior e inferior de 0049FA7F. Para escanear y eliminar la memoria, se omite el paso de traducción de la dirección de la memoria. Motivo: el posicionamiento del código de función del software antivirus se basa estrictamente en el desplazamiento relevante de la dirección de memoria. Sin embargo, de hecho, el orden de ejecución del código de máquina en nuestra aplicación generalmente no es fijo. y hacia abajo El software antivirus, naturalmente, no lo sabrá. 5. El intercambio de agregar y SUB es adecuado para: si la instrucción ADD o SUB aparece en el código de característica de la memoria, la tasa de éxito es relativamente alta. Método de operación: use OllyDbg para cargar el programa troyano, suponiendo que la dirección correspondiente a su código de característica contiene una instrucción add o SUB, como 0018a 88: xxxxx 00000088 ADD ECX 10000000. Podemos cambiar el código de máquina de Agregar ECX10000000 a SubECXF000000 y guardarlo como EXE después del cambio. Razón: todos sabemos que 1 1 = 2, y también sabemos que 1- (-1) = 2, que es el uso de este principio. La instrucción ADD significa suma y SUB significa resta. Aunque lo cambiamos, el resultado final siguió siendo el mismo, pero después de cambiarlo, el software antivirus no lo supo. Aquí se acabó la búsqueda y modificación de firmas, pero ¿qué más? ¡La respuesta es que hay muchos más! ! Veamos otras formas de evitar matar. 4.) Utilice otros métodos para cambiar el encabezado del archivo sin matarlo: Cambiar el encabezado del archivo aquí incluye agregar y eliminar encabezados de archivo, así como agregar flores al archivo. Todavía usamos OllyDbg para agregar encabezados. Después de cargar con OllyDbg, OllyDbg se detendrá automáticamente en el punto de entrada (como se muestra en la Figura 36).
Copiamos y guardamos las tres primeras líneas de código máquina, luego buscamos el área en blanco y las escribimos una a una en ensamblador (Figura 37). Luego escriba una instrucción JMP al final para saltar a la cuarta línea del punto de entrada inicial. Creo que los amigos que hayan leído este artículo con atención comprenderán su principio. Si lo olvida, puede ver el tercer método para modificar el código de característica anterior. El principio es similar a este. Modificado de la siguiente manera: 004A2A73 0000 más byte ptr ds: [eax], al004A2A75 0000 más byte ptr ds: [eax], al004A2A77 55 push ebp004A2A78 8BEC mov ebp, esp004a2a7a b9 04000000 mov ecx, 04 a 2a 7 f ^ e9 cc F3 ffff servidor jmp. 004 a1e 5000
Agregar bytes ptr ds: [eax], al es el llamado área en blanco. Vemos que el archivo de encabezado modificado está ubicado en 004A2A77, por lo que necesitamos usar PEditor para cambiar el punto de entrada, abrir PEditor, cargar el archivo, cambiar la dirección del punto de entrada a nuestra nueva dirección del archivo de encabezado 004A2A77 (como se muestra en la Figura 38) y luego guarde.