servicio de red svchost.exe 1572K
Proceso normal
Pero si buscas, si hay un SVCHOST.EXE en mayúscula en tu sistema, es un virus.
Puedes consultar el siguiente proceso.
Estos son procesos del sistema, echemos un vistazo.
Smss.exe Conference Manager
Proceso del servidor del subsistema Csrss.exe
Inicio de sesión del usuario administrador de Winlogon.exe.
Services.exe contiene muchos servicios del sistema.
Lsass.exe administra las políticas de seguridad IP e inicia ISAKMP/Oakley (IKE) y los controladores de seguridad IP.
svchost.exe Sistema de protección de archivos de Windows 2000/XP
SPOOLSV.EXE carga archivos en la memoria para imprimirlos más tarde.
Administrador de recursos de Explorer.exe
El ícono Pinyin en el área de la bandeja de internat.exe
Mstask.exe permite que el programa se ejecute en un momento específico.
Regsvc.exe permite operaciones de registro remoto. (Servicio del sistema)→Registro remoto
Tftpd.exe implementa el estándar de Internet TFTP. Este estándar no requiere un nombre de usuario y contraseña.
Servicio de grabación de certificados Llssrv.exe
Ntfrs.exe mantiene la sincronización de archivos del contenido del directorio de archivos entre múltiples servidores.
RsSub.exe controla los medios utilizados para almacenar datos de forma remota.
Locator.exe administra la base de datos del servicio de nombres RPC.
Clipsrv.exe admite un visor de portapapeles para que los recortes se puedan ver desde un portapapeles remoto.
Las transacciones paralelas de Msdtc.exe se distribuyen entre más de dos bases de datos, colas de mensajes, sistemas de archivos u otros administradores de recursos de protección de transacciones.
Grovel.exe escanea los volúmenes de almacenamiento de respaldo cero (SIS) en busca de archivos duplicados y apunta los archivos duplicados a puntos de almacenamiento de datos para ahorrar espacio en el disco (solo sistema de archivos NTFS).
Snmp.exe contiene agentes que monitorean la actividad del dispositivo de red y reportan a la estación de trabajo de la consola de red.
Estos procesos son muy importantes para el funcionamiento del ordenador. No los "mates" a voluntad, de lo contrario puede afectar directamente al funcionamiento normal del sistema.
Explorando métodos de eliminación de virus que consumen recursos de CPU
Fuente: NetEase [2005-11-03 10:26:15] Autor: Editor anónimo: Lin Jixiong
Ayer varias máquinas de la empresa se infectaron con virus. Tardaron mucho en limpiarlo porque no eran expertos. Pensé que podría escribirlos y comunicárselos.
El primero es el descubrimiento de los virus. Ayer aparecieron dos síntomas.
Primero, los paquetes de difusión (ARP) explotaron en la LAN e incluso la salida quedó bloqueada.
En segundo lugar, los recursos de CPU de la máquina están agotados.
Utilizando el administrador de tareas, puedes ver que los procesos sospechosos explored.exe y services.exe juntos ocupaban casi el 100% de la CPU (más tarde supe que esto se debía a que el virus se inició a través de servicios). y el proceso no puede parar. Clave de registro:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Este proyecto existe aquí. Incluso si se elimina, seguirá igual después de reiniciar. Este archivo existe en el directorio SYSTEM32 de WINDOWS, pero las máquinas libres de virus no lo tienen. Básicamente se puede confirmar que el proceso es un virus.
Luego está el análisis de virus. Hay dos problemas con este proceso. En primer lugar, Rising no se pudo actualizar al principio porque el propio virus bloqueó la salida y el flujo TCP no se pudo transmitir normalmente.
Lo probamos y descubrimos que podemos usar un firewall (como Skynet) para aislar el programa antivirus y luego conectarnos a la red para actualizarlo. El segundo problema es que el proceso de detección de virus de Rising es relativamente lento (la tarjeta de red se deshabilitó antes de la detección del virus). Esto se debe a que el programa antivirus en cuestión consume demasiada CPU. Si el proceso no se puede eliminar, puede usar el administrador de tareas para aumentar la prioridad del proceso de Rising (como en tiempo real), de modo que Rising pueda tomar recursos de CPU del virus y ejecutarse normalmente.
Esta vez, sin embargo, Rising sólo eliminó el gusano disfrazado de svchost.exe y la exploración continuó.
No nos queda más remedio que utilizar una forma estúpida de eliminar explorados, que es entrar en modo seguro y eliminar directamente los archivos del directorio System32 de Windows. Por cierto, también eliminé la entrada del registro que comenzó a ejecutarse.
Después de reiniciar, me apareció un error de servicio.
Finalmente descubrí la verdadera identidad del virus cuando revisé "Servicios" en la herramienta de administración: hay una columna "Inicio de sesión de Windows" en "Servicios", el nombre del servicio es "MpR" y la ruta del archivo ejecutable es "C: \winnt\system32\ explorado .exe-servicios".
Esto explica por qué el proceso no se puede detener y eliminar los elementos de inicio del sistema en el registro es inútil. En otras palabras, debes detener el servicio en Servicios en lugar de intentar eliminarlo en el Administrador de tareas.
Finalmente, resumamos la experiencia de eliminación de virus: todos los ataques de virus anteriores tienen ciertos signos, como que la CPU está llena y el ancho de banda de la red está lleno (se puede ver en el estado de la conexión de la red que si no hay ningún proceso ejecutándose en segundo plano, la cantidad de paquetes enviados y recibidos por la interfaz de red ha aumentado considerablemente, lo que puede deberse a un envenenamiento o una máquina en la red conectada está envenenada), porque debe estar más atento y verificar en busca de virus si encuentra alguna anomalía.
Lo mejor es utilizar un software de detección de virus. A veces te pueden engañar utilizando el administrador de tareas. Hoy en día, los nombres de los virus suelen ser similares o incluso iguales a los nombres de los programas del sistema, como explored, smsss (smss es un programa del sistema), svchost, etc. Lo mejor es conocer el directorio donde se encuentran los programas reales del sistema. Por ejemplo, el sistema svchost.exe debería estar en system32 y el virus puede estar oculto en system32\drivers.
El virus puede iniciarse de diversas formas: a través del registro, a través de un archivo INI o incluso, como Discovery, a través de un servicio.
En lugar de controlar y matar después de haber sido envenenado, es mejor tomar medidas de protección: parches, protección antivirus y firewalls.
Caja de herramientas
Publicado en: fxj1588
Descubriendo el misterio del proceso SVCHOST.exe
Autor: Fecha: julio de 2004 Tipo de documento el 2 de marzo: Reimpreso de: Tianji. com
Número total de visitas: 240819 | Año: 184705 | Trimestre: 49433 | Mes: 15355 | Semana: 2124 |
Svchost.exe es un proceso muy importante en el sistema central nt y es indispensable para 2000 y xp. Muchos virus y troyanos también lo llaman así. Por lo tanto, un conocimiento profundo de este programa es uno de los cursos necesarios para jugar en la computadora.
Todo el mundo está familiarizado con el sistema operativo Windows, pero ¿has notado el archivo "svchost.exe" en el sistema? Los amigos cuidadosos encontrarán que hay varios procesos "svchost" en Windows (use las teclas "ctrl+alt+del" para abrir el Administrador de tareas, que se puede ver en la pestaña "Procesos" aquí). ¿Por qué? Desmitificémoslo.
Descubrido
En la familia de sistemas operativos Windows basados en el kernel NT, hay diferentes números de procesos "svchost" en diferentes versiones del sistema Windows. Los usuarios pueden verificar el recuento de sus procesos utilizando el Administrador de tareas. En términos generales, win2000 tiene dos procesos svchost, winxp tiene más de cuatro procesos svchost (no juzgue inmediatamente que el sistema tiene un virus cuando vea varios procesos de este tipo en el sistema) y el servidor win2003 tiene más. Estos procesos svchost proporcionan muchos servicios del sistema, como: servicio rpcss (llamada a procedimiento remoto), servicio dmserver (administrador de disco lógico), servicio dhcp (cliente dhcp), etc.
Si desea saber cuántos servicios del sistema proporciona cada proceso svchost, puede ingresar el comando "tlist -s" en la ventana del símbolo del sistema de win2000, que proporciona la herramienta de soporte de win2000. En winxp, utilice el comando "lista de tareas /svc".
Svchost puede contener múltiples servicios.
Profundizar
Los procesos del sistema Windows se pueden dividir en procesos independientes y procesos compartidos. El archivo "svchost.exe" existe en el directorio "%systemroot% system32" y es un proceso compartido. A medida que la cantidad de servicios del sistema Windows continúa aumentando, para ahorrar recursos del sistema, Microsoft ha compartido muchos servicios y los ha entregado al proceso svchost.exe para que se inicie. Sin embargo, como host de servicios, el proceso svchost no puede implementar ninguna función de servicio, es decir, solo puede proporcionar condiciones para que otros servicios comiencen aquí, pero no puede proporcionar ningún servicio a los usuarios. Entonces, ¿cómo se implementan estos servicios?
Resulta que estos servicios del sistema se implementan en forma de bibliotecas de enlaces dinámicos (dll). Apuntan el programa ejecutable a svchost, y svchost llama al dll del servicio correspondiente para iniciar el servicio. Entonces, ¿cómo sabe svchost a qué biblioteca de vínculos dinámicos debe llamar un servicio del sistema? Esto se logra mediante parámetros establecidos en el registro por el servicio del sistema. Tomemos el servicio rpcss (llamada a procedimiento remoto) como ejemplo para ilustrar.
Como se puede ver en los parámetros de inicio, el servicio se inicia mediante svchost.
Ejemplo
Tome Windows XP como ejemplo, haga clic en Inicio/Ejecutar, ingrese el comando "services.msc" para que aparezca el cuadro de diálogo de servicio y luego abra el "Procedimiento remoto". Llamar al cuadro de diálogo de propiedades. Puede ver que la ruta al archivo ejecutable del servicio rpcss es "C:\Windows\System32\svchost-krpcss". Esto muestra que el servicio rpcss se implementa llamando al parámetro "rpcss" a través de svchost, y el contenido del parámetro se almacena en el registro del sistema.
Ingrese "regedit.exe" en el cuadro de diálogo de ejecución, presione Entrar, abra el editor de registro, busque el elemento [HKEY _ local _ Machine system currentcontrolsetservicesrpcss] y busque la clave de registro de tipo "reg_expand_sz". "camino mágico". Su valor clave es "% systemroot % system32 SVC host-krpcss" (este es el comando de inicio del servicio que ve en la ventana de servicio), y en la subclave "parámetros" hay una clave llamada "servicedll" con el valor "%systemroot %system32rpcss.dll", donde "rpcss.dll" es el archivo de biblioteca de vínculos dinámicos que utilizará el servicio rpcss. De esta manera, el proceso svchost puede iniciar el servicio leyendo la información del registro del servicio "rpcss".
Salir de dudas
Dado que el proceso svchost inicia varios servicios, virus y troyanos hacen todo lo posible para aprovecharse de él, intentando utilizar sus características para confundir a los usuarios y lograr el propósito de infección. , invasión y destrucción (como la variante del virus de la onda de choque "w32.welchia.worm"). Sin embargo, es normal que existan múltiples procesos svchost en los sistemas Windows. ¿Cuál es el proceso del virus en la máquina infectada? He aquí sólo un ejemplo para ilustrar.
Supongamos que el sistema Windows XP está infectado por "w32.welchia.worm". El archivo svchost normal existe en el directorio "c:\windows\system32", así que tenga cuidado si encuentra el archivo en otros directorios. El virus "w32.welchia.worm" existe en el directorio "c:\windows\system32wins". Utilice el administrador de procesos para ver la ruta del archivo ejecutable del proceso svchost. Es fácil encontrar si el sistema está infectado con el virus. . El administrador de tareas que viene con el sistema Windows no puede ver la ruta del proceso. Puede utilizar software de gestión de procesos de terceros, como el administrador de procesos "Windows Optimizer". A través de estas herramientas, puede ver fácilmente las rutas de los archivos de ejecución de todos los procesos svchost. Una vez que se descubre que las rutas de ejecución se encuentran en ubicaciones inusuales, deben detectarse y manejarse de inmediato.
Debido a limitaciones de espacio, es imposible presentar todas las funciones de svchost en detalle. Este es un proceso especial en Windows. Aquellos que estén interesados pueden consultar la información técnica relevante para obtener más detalles.
Fuente: Tianji. com
Caja de herramientas
Tiempo de lanzamiento: FXJ 1588
Explicación detallada de SvcHost
Autor: Cupid's Arrow Fuente: Actualización de Ying Zheng Tian Xia Hora: 2004-11-02
[Recoja esta página para: Tiantian|He Xun|Cai Bo|Weiwei|Fox Pick|I Pick]
Todos deberían saber que Svchost exe. Es un proceso indispensable en el sistema, y muchos servicios lo utilizan en mayor o menor medida.
Pero creo que todos sabemos que, debido a su naturaleza especial, los "hackers" inteligentes definitivamente no lo dejarán pasar. El incidente del caballo de Troya que involucró a Svchost.exe hace algún tiempo aún debería estar fresco en la memoria de todos. Todavía hay muchas máquinas que tienen este tipo de caballo de Troya. Debido a que su disfraz es el mismo que el del proceso del sistema Svchost.exe, muchas personas. No puedo decir qué proceso es cuál. Cuál es el caballo de Troya. ....
Bien, echemos un vistazo más de cerca al proceso Svchost.exe.
1. Las ventajas y desventajas de que varios servicios compartan un proceso Svchost.exe.
Los servicios del sistema Windows se dividen en procesos independientes y procesos compartidos. En Windows NT, sólo el Administrador de servidores SCM (Services.exe) tiene varios servicios compartidos. Con el aumento de los servicios integrados en el sistema, en Windows 2000, ms permite compartir muchos servicios, que se inicia mediante svchost.exe. Windows 2000 generalmente tiene dos procesos svchost, uno es el proceso de servicio RPCSS (llamada a procedimiento remoto) y el otro es svchost.exe compartido por muchos servicios. En Windows XP, generalmente hay más de cuatro procesos de servicio svchost.exe y hay más en el servidor Windows 2003. Se puede ver que es una tendencia que MS inicie más servicios integrados en el sistema a través de procesos compartidos.
Esto reduce el consumo de recursos del sistema hasta cierto punto, pero también trae algunos factores de inestabilidad, porque cualquier proceso de intercambio de servicios hará que todos los servicios en todo el proceso se cierren debido a errores. Además, existen algunos riesgos para la seguridad. Primero, debemos presentar el mecanismo de implementación de svchost.exe.
2. Principio de Svchost
Svchost en sí solo actúa como un host de servicio y no implementa ninguna función de servicio. Los servicios que Svchost debe iniciar se implementan en forma de bibliotecas de enlaces dinámicos. Al instalar estos servicios, apunte el programa ejecutable del servicio a svchost. Al iniciar estos servicios, svchost llama a la biblioteca de enlaces dinámicos del servicio correspondiente para iniciar el servicio.
Entonces, ¿cómo sabe svchost qué biblioteca de vínculos dinámicos es responsable de un servicio? Esto no lo proporciona la sección de parámetros en la ruta ejecutable del servicio, sino que lo establecen los parámetros del servicio en el registro. Hay una subclave de parámetros debajo del servicio en el registro, en la que ServiceDll indica qué biblioteca de vínculos dinámicos es responsable del servicio. Y todas estas bibliotecas de vínculos dinámicos de servicios deben exportar una función ServiceMain() para manejar las tareas de servicio.
Por ejemplo, la ubicación de rpcss (llamada a procedimiento remoto) en el registro es el servicio de configuración de control actual del sistema HKEY_local_machine srpcss, y su subelemento de parámetros Parámetros tiene este elemento:
" service dll " = REG _ EXPAND _ SZ:" % SystemRoot % system32 pcss "
Cuando se inicia el servicio rpcss, svchost llamará a rpcss y ejecutará su función ServiceMain() para realizar un servicio específico.
Dado que svchost inicia estos servicios mediante procesos compartidos, ¿por qué hay múltiples procesos svchost en el sistema? La señora divide estos servicios en varios grupos. El mismo grupo de servicios comparte un proceso svchost y los servicios de diferentes grupos utilizan múltiples procesos svchost. Las diferencias entre grupos están determinadas por los parámetros detrás del ejecutable del servicio.
Por ejemplo, rpcss tiene una entrada de este tipo en el registro HKEY _Local_Machine System Current Control Settings Service sRPCSS:
" ruta de la imagen " = REG _ EXPAND _ SZ:" % SystemRoot % system32 SVC host -k rpcss "
Por lo tanto, rpcss pertenece al grupo rpcss, que también se puede ver en la consola de administración de servicios.
Todos los grupos de svchost y todos los servicios del grupo se encuentran en el registro en la siguiente ubicación: HKEY_Local_MachineSoftwareMicrosoft Windows ntCurrentVersionSVchost. Por ejemplo, Windows 2000 tiene cuatro grupos: rpcss, netsvcs, wugroup y BITSgroup. Entre ellos, netsvcs = reg _ multi _ SZ:event system .iprip irmon net man .
Nwsapagent. ras auto .ras man .sens acceso compartido .tapis RV ntmssvc..
Al iniciar el servicio del que es responsable svchost.exe, el administrador de servicios no inicia. svchost, pero inicia el servicio directamente cuando el contenido del programa ejecutable ImagePath ya existe en la biblioteca de imágenes del administrador de servicios. De esta forma, varios servicios comparten un proceso svchost.
3. Código Svchost
Ahora básicamente entendemos el principio de svchost, pero necesitamos escribir un servicio en forma de DLL. Este servicio lo inicia svchost. Es sólo que la información anterior aún no está clara. Por ejemplo, ¿los parámetros que recibimos en la función ServiceMain() exportada son ANSI o Unicode? ¿Necesitamos llamar a RegisterServiceCtrlHandler y StartServiceCtrlDispatcher para registrar las funciones de control y envío de servicios?
Estas preguntas deben responderse mirando el código svchost. El siguiente código es el fragmento de desmontaje de svchost del service pack 4 de Windows 200. Se puede ver que el programa svchost sigue siendo muy simple.
La función principal primero llama a ProcCommandLine() para analizar la línea de comando para iniciar el grupo de servicios, luego llama a SvcHostOptions() para consultar las opciones del grupo de servicios y todos los servicios del grupo de servicios. y utiliza una estructura de datos svcTable para guardar estos servicios y su dll. Luego llame a la función PrepareSvcTable() para crear la estructura SERVICE_TABLE_ENTRY, apunte todas las funciones de procesamiento SERVICE_MAIN_FUNCTION a una de sus propias funciones, FuncServiceMain(), y finalmente llame a la API StartServiceCtrlDispatcher() para registrar las funciones de programación de estos servicios.
;============================Funciones principales============= =================
. Texto: 010010B8 Se inicia cuenta pública
. Texto: 010010B8 se acerca
. Texto: 010010B8 push esi
. Texto: 010010B9 push edi
. Texto: 010010BA push offset sub _ 1001EBA; lptoplevelexceptionfilter
. Texto: 010010BF XOR edi, edi
. texto:010010c 1Llame a ds:SetUnhandledExceptionFilter
. Texto: 010010C7 push 1; Umod
. Texto: 010010C9 llama a ds:SetErrorMode
. Texto: 010010CF llama a ds:GetProcessHeap
. Texto: 010010D5 empuja eax
. Texto: 010010D6 teléfono sub_1001142
. texto:010010DB mov eax, desplazamiento dword _ 1003018
. Texto: 010010E0 desplazamiento de inserción unk_1003000 lpCriticalSection
. Texto: 010010e 5 mov dword_100301C, eax
. Texto: 010010EA mov dword_1003018, eax
. texto:010010EF llama a ds:InitializeCriticalSection
. Texto: 010010F5 Llame a ds:GetCommandLineW
. Texto: 010010FB empuja eaxlpString
. Texto: 010010FC llama a la línea de comando 00FC
. Texto: 01001101 mov ESI, eax
. Texto: 01001103 prueba esi,esi
. Texto: 01001105 JZ short lab_do service
. Texto: 01001107 push esi
. Texto: atención telefónica 01001108
. Texto: 0100110D preparación telefónica
. Texto: 01001112 mov EDI, eax devolvió SERVICE_TABLE_ENTRY
. Texto: 01001114 Prueba edi, edi
. Texto: 01001116 JZ loc corto_1001128
. Texto: 01001118 mov eax, [esi+10h]
. Texto: 0100111B prueba eax, eax
. Texto: 0100111D JZ loc corto_1001128
. Texto: 0100111F push dword ptr[ESI+14h]; dwCapabilities
. Texto: 01001122 push eax (igual que Organizaciones internacionales) organizaciones internacionales
. Texto: 01001123 Seguridad de inicialización de llamada
. Texto: 01001128
. Texto: 01001128 loc_1001128:; Código XREF: inicio+5Ej
. Texto: 01001128; inicio +65j
. Texto: 01001128 Push esilpMem
. Texto: 01001129 Llame a HeapFreeMem
.
Texto:0100112E
. Texto: 0100112E lab _ do service:; Código XREF: inicio+4Dj
. Texto: 0100112E Prueba edi, edi
. Texto: 01001130 Programa de salida JZ
. Texto: 01001136 Empuje edilpServiceStartTable
. Texto: 01001137 llame a ds:startservicectrldispaccherw
. Texto: 0100113D programa de salida jmp
. Texto: 0100113D inicio fin
; ============================ Finaliza la función principal = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = svchost registra un controlador para todos los servicios en el grupo en la función svchost , por lo que cada vez que se inicia cualquier servicio, el administrador de servicios SCM llama a la función FuncServiceMain(). Esta función utiliza svcTable para consultar la DLL utilizada por el servicio que se va a iniciar, llama a la función ServiceMain() exportada por la DLL para iniciar el servicio y luego regresa.
; = = = = = = = = = = = = = = = = = = = = = = = = FuncServiceMain() = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
. texto:01001504 FuncServiceMain proc cerca; referencia externa de datos: prepara vtable+44o
. Texto: 01001504
. texto:01001504 arg_0 = dword ptr 8
. texto:01001504 arg_4 = dword ptr 0Ch
. Texto: 01001504
. Texto: 01001504 push ecx
. texto:01001505 mov eax,[esp+arg_4]
. Texto: 01001509 push ebx
. Texto: 0100150A empujar ebp
. Texto: 0100150B push esi
. texto:0100150 c mov ebx, desplazamiento unk_1003000
. Texto: 01001511 push edi
. Texto: 01001512 mov EDI, [eax]
. Texto: 01001514 push ebx
. Texto:01001515 xor ebp, ebp
. Texto:01001517Llame a ds:EnterCriticalSection
. Texto:0100151D xor esi,ESI
. texto:0100151F Tamaño de grupo CMP dw,esi
. Texto: 01001525 jbe short loc_1001566
. Texto: 01001527 y [esp+10h],esi
. Texto:0100152B
. Texto: 0100152 b loc _ 100152 b:; Código XREF: FuncServiceMain+4Aj
. Texto: 0100152B mov eax, svcTable
. Texto: 01001530 mov ecx, [esp+10h]
. Texto: 01001534 push dword ptr [eax+ecx]
. Texto: 01001537 push edi
. Texto: 01001538 Tel ds: lstrcmpiW
. Texto: 0100153E Prueba eax, eax
. Texto: 01001540 jz short StartThis
. Texto: 01001542 Añadir dword ptr [esp+10h], 0Ch
. Texto: 01001547 empresa esi
.
Texto: 01001548 cmp esi, dwGroupSize
. Texto: 0100154 e JB short loc_ 100152 b
. Texto: 01001550 jmp short loc_1001566
. Texto: 01001552; ============================================== == ===
. Texto: 01001552
. texto:01001552 comience esto:;Código XREF: FuncServiceMain+3Cj
. Texto: 01001552 mov ecx, svcTable
. Texto: 01001558 lea eax, [esi+esi*2]
. Texto: 0100155B lea eax, [ecx+eax*4]
. Texto: 0100155E Pulsa eax
. Texto: 0100155F Llamando a GetDLLServiceMain
. Texto: 01001564 mov ebp, servicio eaxdll Dirección de función principal
. Texto: 01001566
. Texto: 01001566 loc _ 1001566:; Código XREF: FuncServiceMain+21j
. Texto: 01001566; FuncServiceMain+4Cj
. Texto: 01001566 push ebx
. Texto:01001567Llame a ds:LeaveCriticalSection
. Texto: 0100156D prueba ebp, ebp
. Texto: 0100156 f JZ corto loc_ 100157 b
. Texto: 01001571 push [esp+10h+arg_4]
. Texto: 01001575 push [esp+14h+arg_0]
. Texto: 01001579 llamada ebp
. Texto:0100157B
. Texto: 0100157 b loc _ 100157 b:; Código XREF: FuncServiceMain+6Bj
. Texto:0100157B edición pop
. Texto:0100157C pop esi
. Texto: 0100157D pop ebp
. Texto:0100157E pop ebx
. Texto:0100157F pop ecx
. Texto: 01001580 devuelve 8
. texto:01001580 FuncServiceMain endp; sp = -8
; = = = = = = = = = = = = = = = = = = = = = = = = = FuncServiceMain() final = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = svchost ha llamado a startservicectrlddispatcher para servir la función de despachador, por lo que no lo necesitamos al implementar la DLL, principalmente porque un proceso solo puede llamar a la API StartServiceCtrlDispatcher una vez. Sin embargo, debe utilizar RegisterServiceCtrlHandler para registrar una función que responda a las solicitudes de control. Finalmente, nuestra DLL recibe todas las cadenas Unicode.
Dado que svchost carga este servicio después del inicio, es solo una DLL de svchost, no se agrega ningún proceso nuevo y, en general, no verifica el grupo de servicios HKEY_Local_machine software Microsoft Windows ntCurrentVersionSVCHOST Si se han producido cambios. incluso si lo verifica, es posible que no pueda encontrar anomalías. Entonces, agregar una puerta trasera DLL como esta es ocultarla disfrazada.
4. Instalar servicios y configuraciones
Para iniciar el servicio llamando a svchost, necesita tener un nombre de servicio en HKEY_local_machine software Microsoft windows ntcurrentversionsvchost, que se puede lograr de las siguientes maneras. :
1) Agregue un nuevo grupo de servicios y agregue el nombre del servicio en el grupo.
2) Agregue el nombre del servicio al grupo existente.
3) Utilice directamente el nombre del servicio en el grupo de servicios existente, pero no hay ningún servicio instalado en la máquina.
4) Modifique el servicio existente en el grupo de servicios existente y apunte su ServiceDll a usted mismo.
Los dos primeros pueden ser utilizados por servicios normales, como usar el método 1 para iniciar su servicio para crear un nuevo proceso svchost, si el grupo de servicios ya se está ejecutando, no puede ser utilizado; se usa inmediatamente después de la instalación, porque la información del grupo se guarda en la memoria después de iniciar svchost. Llame a API StartServiceCtrlDispatcher () para registrar un controlador de programación para todos los servicios en el grupo. handler, y necesita reiniciar la computadora o el proceso svchost. Los dos últimos pueden ser explotados por puertas traseras, especialmente la última, que no agrega un servicio sino que solo cambia una configuración en el registro, que no se puede ver desde la consola de administración de servicios. Si se usa como puerta trasera, todavía está muy oculta. Por ejemplo, el servicio EventSystem hace referencia a es.dll de forma predeterminada. Si ServiceDll se cambia a EventSystem, será difícil de encontrar.
Por lo tanto, además de llamar a CreateService() para crear un servicio, también necesita configurar el ServiceDll del servicio para su instalación. Si utiliza los dos primeros métodos, debe configurar las opciones de registro de svchost. Es mejor eliminar las partes agregadas al desinstalar.
Nota: ImagePath y ServiceDll son ExpandString, no cadenas normales. Entonces si usas. reg archivo para instalar, hay que prestar atención.
5. Implementación del servicio DLL
La programación de DLL es relativamente simple. Solo necesita implementar una función ServiceMain() y un programa de control de servicio, y usar RegisterServiceCtrlHandler() para registrar el servicio. control en la función ServiceMain() Programa para establecer el estado de ejecución del servicio.
Además, dado que la instalación de este servicio requiere otras configuraciones además del CreateService() normal, es mejor implementar las funciones de instalación y desinstalación.
Para facilitar la instalación, el código implementado proporciona la función InstallService() para la instalación. Esta función puede recibir el nombre del servicio como parámetro (si no se proporcionan parámetros, se utiliza el ipip predeterminado). el servicio a instalar no tiene La instalación en el grupo netsvcs de svchost fallará si el servicio a instalar ya existe, la instalación también fallará después de una instalación exitosa, el programa configurará el ServiceDll del servicio como el Dll actual; . La función UninstallService() proporcionada puede eliminar cualquier función sin ninguna verificación.
Para facilitar la instalación con rundll32.exe, también se proporcionan RundllInstallA() y rundlluinstalla(), que llaman a InstallService() y UninstallService() respectivamente. Porque el prototipo de función utilizado por rundll32.exe es:
nombre de función de devolución de llamada nula (
identificador del propietario de la ventana
HINSTANCE hindst, identificador de instancia de DLL
LPTSTR lpCmdLine, la cadena que analizará la DLL
int nCmdShow //Mostrar estado
);
La línea de comando correspondiente es rundll32dllname, function Nombre[argumentos].
El servicio DLL en sí simplemente crea un proceso. La línea de comando de este programa es el primer argumento proporcionado al iniciar el servicio. Si no se especifica, se utilizará el svchostdll.exe predeterminado. Si se proporciona el segundo argumento al iniciar el servicio, el proceso creado interactuará con el escritorio. Todo el mundo debería saber que Svchost.exe es un proceso indispensable en el sistema y muchos servicios lo utilizan en mayor o menor medida.
Pero creo que todos sabemos que, debido a su naturaleza especial, los "hackers" inteligentes definitivamente no lo dejarán pasar. El incidente del caballo de Troya que involucró a Svchost.exe hace algún tiempo aún debería estar fresco en la memoria de todos. Todavía hay muchas máquinas que tienen este tipo de caballo de Troya. Debido a que su disfraz es el mismo que el del proceso del sistema Svchost.exe, muchas personas. No puedo decir qué proceso es cuál. ¿Cuál es el caballo de Troya? ....
Bien, echemos un vistazo más de cerca al proceso Svchost.exe.
1. Las ventajas y desventajas de que varios servicios compartan un proceso Svchost.exe.
Los servicios del sistema Windows se dividen en procesos independientes y procesos compartidos. En Windows NT, sólo el Administrador de servidores SCM (Services.exe) tiene varios servicios compartidos.