es este tipo de archivo. dll un virus?
1. Biblioteca de enlaces dinámicos
Biblioteca de enlaces dinámicos, nombre completo: biblioteca de enlaces dinámicos, abreviatura: DLL, se utiliza para proporcionar funciones extendidas para aplicaciones. Si una aplicación quiere llamar a un archivo DLL, debe estar "vinculada dinámicamente" con él desde una perspectiva de programación, la aplicación necesita conocer las funciones API exportadas desde el archivo DLL antes de poder llamarlas. Se puede ver que el archivo DLL en sí no se puede ejecutar y la aplicación debe llamarlo. Solo porque el archivo DLL debe insertarse en el módulo de memoria de la aplicación en tiempo de ejecución, el archivo DLL no se puede eliminar. Esto se debe al mecanismo interno de Windows: los programas en ejecución no se pueden cerrar. ¡Por lo tanto, nació la puerta trasera DLL!
2. Los principios y características de las puertas traseras DLL
Escriba el código que implementa la función de puerta trasera en un archivo DLL y luego insértelo en un archivo EXE para que sea ejecutable, de modo que que no hay necesidad de ocupar Los procesos que no tienen números PID correspondientes se pueden ocultar en el Administrador de tareas. El archivo DLL en sí no es muy diferente del archivo EXE, pero el programa (EXE) debe llamarlo para ejecutar el archivo DLL. La ejecución del archivo DLL requiere cargar el archivo EXE, pero el EXE necesita conocer la función de entrada de un archivo DLL (es decir, la función de exportación del archivo DLL) para poder cargar el archivo DLL. Por lo tanto, de acuerdo con los estándares de escritura de archivos DLL, EXE debe ejecutar DLLMain () en el archivo DLL como condición de carga (al igual que main () de EXE). Hay dos métodos básicos para crear una puerta trasera DLL: 1) implementar todas las funciones en el archivo DLL 2) convertir la DLL en un archivo de inicio e iniciar la puerta trasera EXE normal si es necesario;
Métodos de escritura comunes:
(1) Solo hay un archivo DLL.
Este tipo de puerta trasera es muy simple. Cree un archivo DLL y use Rundll32.exe para iniciarlo automáticamente en la clave Ejecutar del registro u otros lugares que el sistema pueda cargar automáticamente. ¿Qué es Rundll32.exe? Gu Ming cree que "ejecutar archivos DLL de 32 bits". Su función es ejecutar las funciones internas en el archivo DLL, de modo que en el proceso solo haya Rundll32.exe y no haya ningún proceso de puerta trasera DLL, logrando así ocultar el proceso. No entre en pánico si ve varios Rundll32.exe en su sistema, esto demuestra cuántos archivos DLL se inician con Rundll32.exe. Por supuesto, ¿cuáles son estos archivos DLL que ejecuta Rundll32.exe? Podemos encontrarlos desde donde el sistema los carga automáticamente.
Ahora permítanme presentarles el archivo Rundll32.exe, lo que significa que su función es llamar a la biblioteca de enlaces dinámicos a través de la línea de comando. También hay un archivo Rundll.exe en el sistema, que significa "ejecutar archivo DLL de 16 bits". Por favor preste atención aquí. Echemos un vistazo al prototipo de función utilizado por Rundll32.exe:
Nombre de la función de devolución de llamada nula (
HWND hwnd,
HINSTANCE hinst,
LPTSTR lpCmdLine,
Int nCmdShow
);
El método de uso bajo la línea de comando es: Rundll32.exe dllname, nombre de función [argumentos] .
DLLname es el nombre del archivo DLL que se ejecutará; Functionname es la función derivada específica del archivo DLL que se ejecutará; [Argumentos] son los parámetros específicos de la función derivada.
(2) Reemplazar el archivo DLL en el sistema
Este tipo de puerta trasera es un poco más avanzado que el anterior. Convierte el código que implementa la función de puerta trasera en un archivo DLL que coincide con el sistema y cambia el nombre del archivo DLL original.
Cuando una aplicación solicita el archivo DLL original, la puerta trasera de DLL inicia una función de reenvío y pasa los "parámetros" al archivo DLL original. Si se encuentra una solicitud especial (como un cliente), la puerta trasera DLL se inicia, se inicia y se ejecuta. Para este tipo de puerta trasera, lo más seguro es implementar todas las operaciones en un archivo DLL, pero también requiere muchos conocimientos de programación y es muy difícil de escribir. Por lo tanto, este tipo de puerta trasera generalmente convierte el archivo DLL en un archivo de "inicio" e inicia una puerta trasera EXE normal en circunstancias especiales (como la solicitud del cliente, después de que el cliente finaliza la conexión, detiene la puerta trasera EXE y luego); el archivo DLL entrará en estado de "suspensión" y no se iniciará hasta la siguiente conexión del cliente. Sin embargo, con la introducción de las funciones de "firma digital" y "recuperación de archivos" de Microsoft, esta puerta trasera ha ido disminuyendo gradualmente.
Consejos:
En el directorio WINNT/system32, hay una carpeta dllcache, que contiene muchos archivos DLL (incluidos algunos archivos EXE importantes). Después de que el archivo DLL se modifique ilegalmente, el sistema restaurará el archivo DLL modificado desde aquí. Si desea modificar un archivo DLL, primero debe eliminar o cambiar el nombre del archivo DLL con el mismo nombre en el directorio dllcache; de lo contrario, el sistema se recuperará automáticamente.
(3) Sistema integrado dinámico
Este es el método más utilizado para puertas traseras DLL. La importancia es incrustar el archivo DLL en el proceso del sistema en ejecución. En los sistemas Windows, cada proceso tiene su propio espacio de memoria privado, pero todavía existen varios métodos para ingresar al espacio de memoria privado de su proceso para lograr una incrustación dinámica. Debido a que los procesos clave del sistema no se pueden finalizar, esta puerta trasera está muy oculta y es difícil de detectar. Las incrustaciones dinámicas comunes incluyen: "API de gancho", "gancho global", "hilo remoto", etc.
La tecnología de subprocesos remotos se refiere a la creación de un subproceso remoto en un proceso para ingresar al espacio de direcciones de memoria del proceso. Cuando el vector EXE (o Rundll32.exe) crea un subproceso remoto en el proceso insertado y le ordena que ejecute un archivo DLL, nuestra puerta trasera DLL se suspenderá y ejecutará, y no se generará ningún proceso nuevo aquí. Si queremos detener la puerta trasera de la DLL, debemos detener el proceso que vincula la puerta trasera de la DLL. Pero si está vinculado a algunos procesos clave del sistema, no se puede cancelar. Si mata un proceso del sistema, ¡Windows finalizará inmediatamente! ! !
3. Características de inicio de la puerta trasera de DLL
EXE, el soporte para iniciar la puerta trasera de DLL, es indispensable y muy importante. Se llama cargador. Si no hay un cargador, ¿cómo se puede iniciar nuestra puerta trasera DLL? Por lo tanto, una buena puerta trasera DLL hará todo lo posible para proteger su cargador para que no muera. Hay muchas formas de cargar el cargador, puede ser un archivo EXE escrito especialmente para nuestra puerta trasera DLL. También puede ser Rundll32.exe que viene con el sistema. Incluso si se detiene Rundll32.exe, el cuerpo de la puerta trasera DLL permanece. 3721 Network Real Name es un ejemplo, aunque no es una puerta trasera "real".
En segundo lugar, eliminación de DLL
Esta sección toma como ejemplos tres puertas traseras de DLL conocidas, a saber, "SvchostDLL.dll", "BITS.dll" y "QoServer.dll". Su método de eliminación manual se explica en detalle. Espero que después de leer estos tres métodos para limpiar las puertas traseras de DLL, pueda aplicarlos de manera flexible y no tener miedo de las puertas traseras de DLL. De hecho, es relativamente sencillo eliminar manualmente la puerta trasera de la DLL. No es más que hacer un escándalo en el registro. Para obtener detalles sobre cómo hacer esto, consulte a continuación.
1. Puerta trasera sin puerto
Este es un programa de puerta trasera de DLL muy potente. Además del Shell con permisos del sistema local (consulte la ayuda del programa para obtener más detalles), también admite "detección". de clones" Cuenta", "Instalar Servicios de Terminal" y una serie de funciones, adecuadas para Windows2000/xp/2003 y otros sistemas. Svchost.exe se utiliza para iniciar el programa. Si el puerto no está abierto normalmente, se puede conectar al revés (la característica más importante es esta).
Esta característica es perfecta para hosts con firewalls _blank ">.
Antes de presentar el método de limpieza, presentemos brevemente los servicios clave de svchost.exe:
Como host del servicio, Svchost no implementa ninguna función. Si necesita utilizar svchost para iniciar el servicio, el servicio se implementa en forma de DLL y el cargador del operador de la DLL apunta a Svchost. Por lo tanto, al iniciar el servicio, svchost llama al. DLL del servicio Para lograr el propósito de inicio. El archivo DLL utilizado para iniciar el servicio está determinado por los parámetros en el registro. Hay una subclave de parámetros en el servicio que se iniciará, donde ServiceDll indica qué archivo Dll es responsable. el servicio. Este archivo DLL debe exportar una función ServiceMain() para brindar soporte para el procesamiento de tareas de servicio.
¡Jaja! No se preocupe, echemos un vistazo a los detalles). El sistema HKEY_Local_Machine ve la subclave Parámetros en el servicio de control actual sRPCSS, y su valor clave es systemroot system32RPCSS.dll. Esto significa que cuando se inicia el servicio RpcSs, Svchost llama a rpcss.dll. en el directorio WINNTsystem32
Este es el software HKEY _local_machine Microsoft Windows ntcurrentversionSvchost en el registro, que almacena el grupo iniciado por Svchost y los servicios en el grupo. Entre ellos, el grupo netsvcs tiene la mayor cantidad de servicios. Para usar Svchost para iniciar el servicio, el nombre del servicio aparecerá en HKEY_. Hay cuatro formas de lograr esto en el software local_machine Microsoft Windows ntcurrentversionsvchost:
1.
2. Agregar a un grupo existente
3. Utilice el nombre del servicio directamente en el grupo existente, pero no hay ningún servicio instalado en esta computadora. p>4. Modificar el grupo existente. Hay un servicio y apunta su ServiceDll a su propia puerta trasera Dll.
El tercer método que probé es la puerta trasera sin puerto. Si quieres ver el principio anterior, definitivamente puedes pensar en nuestro método para borrar la puerta trasera sin puerto. Así es, estamos haciendo un escándalo bajo la clave Svchost en el registro.
Nota: dado que este artículo solo presenta. El método de limpieza se omite aquí. Cómo usarlo.
El cargador de puerta trasera inserta SvchostDLL.dll en el proceso Svchost, por lo que primero abrimos Windows Process Management 2.5 en el optimizador de Windows y verificamos la información del módulo. el proceso de Svchost. SvchostDLL.dll se ha insertado en el proceso Svchost. Según el mensaje "Utilice directamente un nombre de servicio en un grupo existente, pero el servicio no está instalado en esta máquina", se puede concluir que habrá un nuevo servicio: "Servicio" en las "Herramientas de administración". Como prueba de mi afirmación, el nombre del servicio es: IPRIP, iniciado por Svchost, -k netsvcs indica que este servicio está incluido en el grupo de servicios netsvcs.
Detengamos el servicio, luego abramos el Editor del Registro (Iniciar-Ejecutar-Edición del Registro) y vayamos a HKEY_Local_Machine System Current Control Settings Service SiPrep para verificar su subclave de parámetros). El valor clave de la clave del programa SvcHostDLL.exe es la puerta trasera; el valor clave de ServiceDll C: WINNTsystem32svchostDLL. dll es el archivo llamado dll, que es el archivo DLL de la puerta trasera.
Ahora eliminamos la subclave IPR (o la eliminamos con SC), luego vamos a HKEY_Local_Machine Software Microsoft Windows ntcurrentversionsvchost, editamos el grupo de servicios netsvcs, eliminamos 49 00 70 00 72 00 69 00 70 00 00 00 00, que es el nombre del servicio IPR. . Luego salga y reinicie. Después de reiniciar, elimine los archivos de puerta trasera en el directorio WINNTsystem32.
2. BITS.dll
Este es el trabajo de Brother Rong, y también es una puerta trasera DLL. Tiene básicamente el mismo principio que SvchostDLL.dll, pero el cuarto. El método introducido anteriormente se utiliza aquí: "modificar el servicio existente en el grupo existente y apuntar su ServiceDll a su propia puerta trasera DLL". En otras palabras, la puerta trasera modifica un servicio existente y apunta la DLL de su servicio original a sí mismo (es decir, BITS.dll) para lograr el propósito de la carga automática; en segundo lugar, la puerta trasera no tiene su propio cargador, sino que utiliza el; propio cargador del sistema. Rundll32.exe para cargar. Utilicemos Windows Process Management 2.5. En la Figura 7, podemos ver que bits.dll se ha insertado en el proceso Svchost.
Bien, ahora echemos un vistazo a los métodos de eliminación específicos. Debido a que la puerta trasera modifica los servicios existentes, no sabemos qué servicio se modifica específicamente, por lo que buscamos bits.dll en el registro y finalmente buscamos bits.dll en el sistema HKEY_local_machine CurrentControlSetServicesRasauto. Mire ServiceDll en la subclave Parámetros. Su valor clave es C: WINNTsystem32bits.dll (como se muestra en la Figura 8). Resulta que la puerta trasera reemplazó el archivo DLL original del servicio RasAuto con bits.dll para lograr la carga automática. Es fácil ver por qué. Ahora cambiamos el valor clave de ServiceDll al archivo Dll original del servicio RasAuto, que es systemroot system32Rasauto. Salir y reiniciar. Luego elimine bits.dll en el directorio WINNTsystem32.
3. Black Queen
NOIR-QUEEN es una puerta trasera DLL; un programa troyano que el servidor inserta en el proceso Lsass.exe del sistema en forma de archivo DLL. Debido a que Lsass.exe es un proceso crítico del sistema, no se puede finalizar. Antes de presentar el método de eliminación, permítanme presentarles primero el proceso Lsass.exe:
Este es un servicio de autorización de seguridad local que generará un proceso para los usuarios autorizados que utilizan el servicio Winlogon. Si la autorización es exitosa, Lsass generará el token de entrada del usuario, que iniciará el shell inicial. Los procesos iniciados por otros usuarios heredarán este token.
De la introducción anterior, podemos ver la importancia de Lsass para el sistema, entonces, ¿cómo eliminarlo? Vea abajo.
Después de instalar correctamente la puerta trasera, se agregará un servicio llamado QoSserver. El archivo de puerta trasera QoSserver.dll se insertará en el proceso Lsass, de modo que el proceso pueda ocultarse e iniciarse automáticamente (. como se muestra en la Figura 9). Ahora abrimos el registro, ingresamos HKEY_Local_Machine System Current Control Settings Service sQosserver, eliminamos directamente la clave Qosserver y luego reiniciamos. Después de reiniciar, cuando lleguemos a la lista de servicios, veremos que el servicio QoSserver sigue ahí, pero no se ha iniciado. La categoría es automática, por lo que la cambiamos a "Desactivada". Luego, si busca, encontrará un servicio llamado AppCPI y su programa ejecutable apunta a QoSserver.exe (por razones de las que hablaré más adelante), como se muestra en la Figura 11.
Abrimos nuevamente el registro, ingresamos HKEY_local_MachineSystemCurrentControlSetServiceAppCPI, eliminamos la clave AppCPI, reiniciamos, eliminamos QoSserver y finalmente eliminamos el archivo de puerta trasera en el directorio WINNTsystem32.
Luché con esta puerta trasera durante más de 3 horas y la reinicié n veces. La razón es que incluso si se elimina el servicio QoSserver, la puerta trasera todavía se está ejecutando y el servicio QoSserver en la lista de servicios "resucita". Más tarde descubrí el motivo: después de que eliminé el servicio del servidor qoss y lo reinicié, el archivo QoSserver.dll insertado en el proceso Lsass restauró el servicio del servidor qoss y generó otro servicio AppCPI. Entonces tenemos que eliminar el servicio AppCPI en el registro para borrar la puerta trasera. Se puede ver que las medidas de protección actuales para la puerta trasera son realmente un problema.
Nota: Después de eliminar y reiniciar el servicio QoSserver, la categoría de inicio del QoSserver restaurado debe cambiarse a "Desactivado"; de lo contrario, el servicio QoSserver se volverá a ejecutar incluso si se elimina el servicio AppCPI.
En tercer lugar, prevención de DLL
Después de leer los ejemplos anteriores, creo que todos tienen una cierta comprensión del método para eliminar puertas traseras de DLL, pero en realidad, las puertas traseras de DLL no se utilizan de forma predeterminada. nombre del archivo, por lo que no está seguro de si tiene una puerta trasera DLL. Para las puertas traseras de DLL, el directorio system32 es un buen lugar, como lo son la mayoría de las puertas traseras, así que preste especial atención aquí. Permítanme presentarles en detalle cómo encontrar la puerta trasera de DLL. Espero que sea útil para todos.
1. Después de instalar el sistema y todas las aplicaciones, haga una copia de seguridad de los archivos EXE y DLL en el directorio system32: abra CMD, vaya al directorio WINNTsystem32 y ejecute: dir *. exe gtexe.txt ampdir *. dll gtDll.txt, de esta manera, se realizará una copia de seguridad de todos los archivos EXE y Dll en archivos exe.txt y dll.txt. Si se encuentra alguna anomalía en el futuro, puede usar el mismo comando para hacer una copia de seguridad de los archivos EXE y DLL; nuevamente (aquí asumimos que es exe0.txt y dll0.txt), use: fc EXE .txt EXE 0 .txt gt; exedll.txt ampfc dll 0 . Comando para ejecutar el archivo EXE y el archivo dll dos veces. Compare y guarde los resultados de la comparación en el archivo exedll.txt. De esta manera, puede encontrar archivos EXE y DLL redundantes y determinar si son puertas traseras DLL según el tamaño del archivo y el tiempo de creación.
2. Utilice herramientas de memoria/módulo para ver los archivos DLL llamados por el proceso, como Windows Process Management 2.5 en el optimizador de Windows. De esta manera, puede averiguar qué archivo DLL llamó el proceso y combinar los resultados con el comando FC anterior para determinar aún más si se ha capturado la puerta trasera de la DLL. Si no tiene un optimizador, puede usar TaskList. Este gadget también puede mostrar los archivos DLL llamados por el proceso y también tiene el código fuente para una fácil modificación.
3. Las conexiones de puerta trasera ordinarias requieren abrir puertos específicos, y las puertas traseras DLL no son una excepción, no importa cuán ocultas estén, los puertos deben abrirse durante la conexión. Podemos usar netstat -an para verificar las conexiones en todos los puertos TCP/UDP y encontrar conexiones ilegales. Todos deberían saber qué puertos han abierto y comprender el atributo de estado en netstat -an. Por supuesto, también puede utilizar Fport para mostrar el proceso correspondiente al puerto, de modo que pueda tener una comprensión panorámica de cualquier conexión y puerto desconocido en el sistema.
4. Verifique periódicamente los lugares donde el sistema se carga automáticamente, como el registro, Winstart.bat, Autoexec.bat, win.ini, system.ini, wininit.ini, Autorun.inf, Config. sistema, etc En segundo lugar, administre los servicios y comprenda los servicios predeterminados del sistema. Cuando se descubre un servicio problemático, se puede eliminar utilizando el SC del Kit de recursos de Windows 2000 Server. Todos estos lugares se pueden utilizar para cargar cargadores de puerta trasera de DLL. ¿Qué puedo preguntar si elimino el cargador de puerta trasera de DLL? ¿Cómo funcionan las puertas traseras DLL? !
Al utilizar el método anterior, creo que la mayoría de las puertas traseras de DLL pueden quedar "expuestas". Si normalmente realiza más copias de seguridad, encontrar puertas traseras DLL obtendrá el doble de resultado con la mitad de esfuerzo.
PD
Este artículo presenta en detalle algunos conocimientos sobre las puertas traseras de DLL. De hecho, no es difícil ver en lo anterior que la puerta trasera de DLL no da tanto miedo como se imagina y es relativamente sencillo de limpiar. El comienzo del artículo dice: Su objetivo es brindarles a todos una "introducción rápida" a las puertas traseras de DLL, así que espero que este torpe artículo pueda ayudarlo. Si hay algún error en el texto, perdóname, ¡gracias!