¿Qué es un caballo de Troya?
¿Qué es un caballo de Troya?
El caballo de Troya (en adelante, caballo de Troya) se llama "casa de Troya" en inglés. Su nombre proviene del caballo de Troya de la mitología griega. .
Es una herramienta de piratería basada en control remoto y tiene las características de ocultación y no autorización.
El llamado ocultamiento significa que para evitar que el troyano sea descubierto, los diseñadores del troyano utilizarán varios métodos para ocultarlo, incluso si se descubre que el servidor está en peligro. infectado con el troyano, a menudo sólo puede mirarlo porque no puede determinar su ubicación específica", suspiró "Horse".
La llamada no autorización significa que una vez que el terminal de control está conectado al servidor, el terminal de control disfrutará de la mayoría de los derechos operativos del servidor, incluida la modificación de archivos, la modificación del registro y el control del mouse, teclado, etc., y estos El poder no lo proporciona el servidor, sino que se lo roba a través del programa troyano.
Desde la perspectiva del desarrollo de un troyano, básicamente se puede dividir en dos etapas.
Al principio, cuando Internet todavía se basaba en la plataforma UNIX, se produjeron caballos de Troya. Las funciones de los programas de caballos de Troya en ese momento eran relativamente simples. A menudo incrustaban un programa en un archivo del sistema. utilizaba instrucciones de salto para ejecutar algunas funciones del caballo de Troya. Durante este período, la mayoría de los diseñadores y usuarios de caballos de Troya eran personal técnico y debían tener un conocimiento considerable de redes y programación.
A medida que la plataforma WINDOWS se hizo cada vez más popular, aparecieron algunos programas troyanos basados en operaciones gráficas. La mejora de la interfaz de usuario permitió a los usuarios operar troyanos con habilidad sin tener que tener demasiados conocimientos profesionales. Las intrusiones también se producen con frecuencia y, como las funciones de los caballos de Troya se han vuelto cada vez más perfectas durante este período, el daño al servidor también es mayor.
Así que los troyanos se han desarrollado hasta el día de hoy y han utilizado todos los métodos posibles. Una vez controlados por los troyanos, su computadora no tendrá ningún secreto.
Referencia: /365000/ShowPost.aspx
Respuesta: Wanyan Kangkang - Tanhua Nivel 11 9-18 12:40
---- --- ----------------------------------------- --- -----------------------
Troyano DLL revelado
Creo que los amigos que suelen jugar troyanos Todo el mundo lo sabe las características de algunos troyanos y tiene sus propios troyanos favoritos. Sin embargo, muchos amigos aún no saben cuáles son los "troyanos DLL" que han surgido en los últimos años. ¿Qué es un "troyano DLL"? ¿En qué se diferencia de los troyanos comunes?
1. Comencemos con la tecnología DLL
Para entender los troyanos DLL, debes saber qué significa esta “DLL”. Entonces, retrocedamos a hace unos años, cuando DOS. Los sistemas eran días muy populares. En ese momento, escribir programas era algo engorroso, porque el código de cada programa era independiente. A veces, para implementar una función, era necesario escribir mucho código para ella. Más tarde, con el desarrollo de la tecnología de programación, muchos programadores. Las colecciones de códigos de uso común (código general) se colocan en un archivo separado, y este archivo se llama "Biblioteca". Al escribir un programa, puede agregar este archivo de biblioteca al compilador y puede usar esta biblioteca para incluir todas las funciones sin necesidad de tenerlas. escribir mucho código usted mismo. Esta tecnología se llama "enlace estático". La tecnología de enlace estático permite a los programadores cansados dar un suspiro de alivio y todo parece estar bien. Pero resulta que las cosas buenas no duran mucho, porque los enlaces estáticos son como un vendedor grosero, quieras o no un folleto, lo pone todo en tus manos. Si escribe un programa que solo quiere usar un determinado efecto gráfico contenido en un archivo de biblioteca, debido a esto, debe agregar todos los efectos gráficos que contiene el archivo de biblioteca al programa y conservarlos como adornos de jarrón. importante, pero estos jarrones bloquearon el camino: la tecnología de enlace estático hizo que el programa final fuera voluminoso, porque el compilador incluía todo el archivo de la biblioteca.
A medida que evolucionan los tiempos, la tecnología de enlaces estáticos no puede satisfacer los deseos de los programadores debido a deficiencias inherentes. La gente comienza a buscar una mejor manera de resolver el problema de la duplicación de código. Más tarde apareció el sistema Windows y finalmente apareció el hito de la época.
Los sistemas Windows utilizan una nueva tecnología de enlace llamada "Dynamic Link" que también utiliza archivos de biblioteca. Microsoft los llama "Dynamic Link Library" - Biblioteca de enlaces dinámicos, así es como surgió. El enlace dinámico en sí no es diferente del enlace estático. También escribe código común en algunos archivos independientes. Sin embargo, en términos de compilación, Microsoft ha dado vueltas y no ha agregado archivos de biblioteca al programa. archivos Los archivos de programa compilados tienen una interfaz para intercambiar datos. Cuando el programador escribe un programa, una vez que quiere usar una función de un determinado archivo de biblioteca, el sistema transfiere el archivo de la biblioteca a la memoria y se conecta al programa para ocuparlo. proceso de tarea, y luego ejecuta la función que será utilizada por el programa y devuelve el resultado al programa para su visualización. En nuestra opinión, es como la función del programa en sí. Después de completar las funciones requeridas, la DLL deja de ejecutarse y finaliza todo el proceso de llamada. Microsoft permite que varios programas llamen a estos archivos de biblioteca, logrando un intercambio relativamente perfecto, no importa qué programa quiera escribir un programador, puede usar todas sus funciones agregando una declaración de llamada a la DLL relevante en el código. Lo más importante es que DLL nunca te permitirá conseguir un jarrón extra. Te dará lo que quieras y no te dará nada que no quieras. De esta manera, el programa escrito ya no puede transportar mucha basura; nunca te permitirá llevarte las sobras a casa, de lo contrario te multarán, es un buffet.
El nacimiento de la tecnología DLL ha hecho que escribir programas sea una cuestión sencilla. Windows nos proporciona miles de interfaces de funciones, que son suficientes para satisfacer las necesidades de la mayoría de los programadores. Además, el propio sistema Windows está compuesto por miles de archivos DLL. Estos archivos DLL se apoyan entre sí para formar un potente sistema Windows. ¿Qué tamaño tendría Windows si utilizara tecnología de enlace estático? No me atrevo a pensar en eso.
2. API de interfaz de programación de aplicaciones
Arriba hemos realizado un análisis general de la tecnología DLL. En él, mencioné "interfaz". Debido a que DLL no se puede incluir en un programa como un archivo de biblioteca estática, cómo informarle al programa el código y los archivos que implementan la función se convierte en un problema. Microsoft ha creado especificaciones estándar para la tecnología DLL, lo que hace que un archivo DLL se abra como queso con muchos. archivos pequeños, cada orificio está marcado con el nombre de la función almacenada en él. El programa puede obtener lo que desea siempre que encuentre el orificio correspondiente de acuerdo con la especificación estándar. Este orificio es la "Interfaz de programación de aplicaciones". Interfaz de programación de aplicaciones). Cada DLL viene con todas las interfaces diferentes, lo que reduce la duplicación de código tanto como sea posible. Para usar las palabras de Steven: API es una caja de herramientas. Sacas el destornillador y la llave según sea necesario y luego los vuelves a colocar en su lugar después de usarlos. En Windows, los tres archivos DLL más básicos son kernel32.dll, user32.dll y gdi32.dll. Juntos constituyen el marco básico del sistema.
3. DLL y troyanos
DLL es un código compilado, que no es muy diferente de los programas normales, excepto que no puede ejecutarse de forma independiente y debe ser llamado por el programa. Entonces, ¿cuál es la relación entre DLL y el caballo de Troya? Si ha estudiado programación y escrito una DLL, encontrará que el código de la DLL es casi el mismo que el de otros programas. Solo la interfaz y el modo de inicio son diferentes. Siempre que cambie la entrada del código, la DLL se vuelve independiente. programa. Por supuesto, los archivos DLL no tienen lógica de programa. Esto no significa que DLL = EXE. Sin embargo, DLL aún puede considerarse como un EXE que carece de la entrada principal. Cada función del DLL puede considerarse como varios módulos de funciones de un programa. . Un troyano DLL es un código que implementa la función del troyano, además de algunos códigos especiales escritos en un archivo DLL, y exporta API relacionadas. A los ojos de otros, esto es solo un DLL común, pero este DLL incluye funciones de troyano completas. es el concepto de troyano DLL.
Algunas personas pueden preguntar, dado que el mismo código puede realizar la función troyana y luego simplemente programarlo directamente, ¿por qué molestarse en escribirlo en una DLL? Esto es para ocultarlo, porque cuando la DLL se está ejecutando, se cuelga directamente en el proceso del programa que la llama y no se genera ningún otro proceso, por lo que es difícil de detectar en comparación con los troyanos EXE tradicionales.
4. Operación de DLL
Aunque la DLL no puede ejecutarse por sí sola, cuando Windows carga la DLL, necesita una función de entrada, al igual que el archivo principal de EXE; de lo contrario, el sistema no puede hacer referencia a ella. DLL. Por lo tanto, de acuerdo con la especificación escrita, Windows debe encontrar y ejecutar una función DllMain en la DLL como base para cargar la DLL. Esta función no se exporta como una API, sino como una función interna. La función DllMain permite que la DLL permanezca en la memoria. Algunas DLL no tienen una función DllMain, pero aún se pueden usar. Esto se debe a que cuando Windows no puede encontrar DllMain, encontrará un valor predeterminado que no realiza ninguna operación desde otro tiempo de ejecución. bibliotecas La función DllMain inicia la DLL para que pueda cargarse. Esto no significa que la DLL pueda abandonar la función DllMain.
5. Análisis técnico de los troyanos DLL
En este punto, puede que estés pensando que, dado que los troyanos DLL tienen tantos beneficios, ¿no sería mejor utilizar el método DLL al escribir? ¿Troyanos en el futuro? Aunque esto es cierto, los troyanos DLL no son tan fáciles de escribir como algunas personas piensan. Para escribir un troyano DLL que funcione, necesita saber más.
1. El cuerpo principal del caballo de Troya
Nunca escriba el módulo del caballo de Troya como una biblioteca API. Esto no está desarrollando WINAPI. El troyano DLL puede exportar varias funciones auxiliares, pero debe haber un proceso responsable de la ejecución principal del código; de lo contrario, el DLL solo puede ser un conjunto de funciones API fragmentadas, y mucho menos funcionar.
Si hay algún código común involucrado, puede escribir algunas funciones internas en la DLL para que las use su propio código, en lugar de abrir todo el código en interfaces, lo que será difícil de llamar por sí solo, y mucho menos imposible jugar un papel.
El punto de entrada de ejecución estándar de los troyanos DLL es DllMain, por lo que el código para ejecutar troyanos DLL debe escribirse en DllMain o apuntar al módulo de ejecución de los troyanos DLL.
2. Tecnología de incrustación dinámica
En Windows, cada proceso tiene su propio espacio de memoria privado y otros procesos no pueden operar en este espacio privado. Sin embargo, en realidad podemos hacerlo. Todavía se utilizan varios métodos para ingresar y operar la memoria privada del proceso. Esta es la incrustación dinámica, que es una tecnología para incrustar el propio código en un proceso en ejecución. Hay muchos tipos de incrustación dinámica, los más comunes son los ganchos, las API y la tecnología de subprocesos remotos. La mayoría de los troyanos DLL ahora utilizan tecnología de subprocesos remotos para colgarse en un proceso normal del sistema. De hecho, la incrustación dinámica no es infrecuente. El controlador MouseWare de Logitech se bloquea en cada proceso del sistema. -_-
La tecnología de subprocesos remotos ingresa a ese proceso creando un subproceso remoto (RemoteThread) en otro espacio de direcciones de memoria. En la categoría de troyanos DLL, esta tecnología también se denomina "inyección". Cuando el operador crea un subproceso remoto en el proceso inyectado y le ordena que cargue la DLL, el troyano se colgará y se ejecutará, y no se generará ningún proceso nuevo. Si desea dejarlo, la única forma de detener el troyano es dejar que salga el proceso que monta el DLL del troyano. Sin embargo, muchas veces estamos indefensos: se bloquea con Explorer.exe. ¿Está seguro de que desea cerrar Windows?
3. Inicio de troyanos
Algunas personas pueden estar impacientes por decir que basta con agregar esta DLL al proyecto de inicio del sistema. La respuesta es NO. Como se mencionó anteriormente, la DLL no se puede ejecutar de forma independiente, por lo que no se puede iniciar directamente en el proyecto de inicio. Para que el troyano se ejecute, necesita un EXE para utilizar tecnología de incrustación dinámica para permitir que la DLL se ponga al día con otros procesos normales. Deje que el proceso incrustado llame a la función DllMain de la DLL para activar la ejecución del troyano. el troyano finaliza y el inicio del troyano finaliza.
El EXE que inicia el troyano DLL juega un papel importante. Se llama cargador. Sin el cargador, el troyano DLL estará hecho pedazos. Por lo tanto, un troyano DLL maduro encontrará formas de proteger su cargador. . puede ser destruido tan fácilmente. ¿Recuerdas la historia del lobo y el gángster? El troyano DLL es la vergüenza que se arrastra en el cargador de lobo.
Los cargadores pueden ser de varios tipos. Algunos troyanos DLL también utilizan Windows rundll32.exe. Este tipo de troyano generalmente no tiene tecnología de incrustación dinámica. Cuelga directamente el proceso rundll32 para ejecutarse. Uso El método de rundll32 (rundll32.exe [nombre de DLL], [función] [parámetro]) se refiere a la función de inicio de esta DLL como llamar a una API para activar el módulo troyano para que comience a ejecutarse. Incluso si elimina rundll32, el troyano. El cuerpo todavía está allí, un ejemplo final. Un ejemplo común es el nombre real chino 3721, aunque no es un caballo de Troya.
Algunos troyanos también utilizan la clave AppInit_DLLs del registro para ejecutarse, como el virus de la carta de presentación. Usar el registro para iniciar es permitir que el sistema ejecute DllMain para lograr el propósito de iniciar el troyano. Debido a que es transferido por el kernel, tiene grandes requisitos en cuanto a la estabilidad de esta DLL. Un pequeño error provocará que el sistema falle, por lo que este tipo de troyano rara vez se ve.
Hay algunos troyanos DLL más complejos que se inician a través de svchost.exe. Este tipo de troyano DLL debe escribirse como NT-Service y la función de entrada es ServiceMain. Generalmente es raro, pero el ocultamiento. Este tipo de troyano también es bueno y Loader está garantizado.
4. Otros
En este punto también debes tener conocimientos sobre los troyanos DLL. ¿Realmente quieres escribir uno? No se preocupe, me pregunto si alguna vez lo ha pensado. Dado que los troyanos DLL son tan buenos, ¿por qué se pueden encontrar tan pocos troyanos DLL hasta ahora? Ahora permítanme echarle agua fría. Sólo hay una razón más importante: porque el troyano DLL se bloquea en el proceso del sistema para ejecutarse, si no está bien escrito, por ejemplo, no hay código para evitar errores de ejecución o lo hay. Si no hay una especificación estricta de la entrada del usuario, la DLL generará un error y fallará. No se ponga nervioso, el EXE general también termina así, pero la falla de la DLL hará que el programa que está adjunto sufra. No olvide que está adjunto al proceso del sistema. horrible. Por lo tanto, escribir un troyano DLL que pueda publicarse requiere más trabajo de depuración y verificación que los troyanos EXE comunes. Si escribe demasiado, se irritará...
6.
Comprueba con frecuencia si hay elementos inexplicables en los elementos de inicio. Aquí es donde está el cargador. Mientras mates al lobo, ya no podrás volverte loco. El troyano DLL en sí es más difícil de encontrar. Debe tener ciertos conocimientos de programación y habilidades de análisis para encontrar el nombre de la DLL en el cargador o ver qué DLL desconocidas están adjuntas al proceso. Es más difícil Ah, es más difícil, así que el método más simple es: software antivirus y firewall (no es una panacea, no lo tomes por mucho tiempo).