La razón por la que pregunto esto es porque tengo curiosidad por saber si puede existir un virus en la computadora sin que yo pueda saber que existe. Para ser más específicos, un virus que no emite signos de ningún tipo.
Existe una clase de malware que puede ocultarse completamente del sistema operativo conocido como rootkit .
Los rootkits se utilizan para ocultar la evidencia de otro malware en el trabajo y están muy integrados en el sistema operativo. Debido a su profunda integración, pueden manipular listas de procesos, tablas de sistemas de archivos y otras estructuras importantes sobre la marcha.
Al manipular las estructuras del sistema de archivos en la memoria, pueden devolver resultados falsos o engañosos para los directorios, específicamente no mostrar archivos relacionados con el malware principal en sí. Los archivos están allí, y el arranque en un sistema operativo no infectado, como un LiveCD de Linux, mostrará los archivos, ya que deben almacenarse en algún lugar.
Del mismo modo, los rootkits pueden simplemente dejar que ciertos procesos sean informados a programas como el Administrador de tareas. El núcleo del sistema operativo los conoce, ya que es necesario para programarlos, simplemente se ha bloqueado para que el mundo exterior no los conozca.
Tengo curiosidad, ¿cómo logran esa hazaña? Parece algo que Windows no debería permitir en primer lugar. Quiero decir, incluso "mostrar el proceso de todos los usuarios" están menos "escondidos" y más "categorizados"
Raestloz
2
@Raestloz: Logran la hazaña al obtener acceso de root y luego reescribir Windows para eliminar los bits que no lo permiten. He oído que algunos de ellos hacen esto "arrancando" en el rootkit como sistema operativo, alterando Windows, y luego ejecutan Windows, por lo que ni el usuario ni Windows tienen idea de que algo es inusual.
Mooing Duck
3
bueno, tal vez alguien debería inventar un antivirus que se ejecute en BIOS lol
Raestloz
1
@zyboxenterprises Las actualizaciones reales de Windows están firmadas y no se pueden falsificar, pero puede falsificar solo el cuadro de diálogo de solicitud de reinicio, o engañar al usuario para que reinicie de cualquier otra manera, o forzar un reinicio ( shutdown -r -t 0no se requieren privilegios), o simplemente esperar hasta que el usuario reinicie.
gronostaj
44
@zyboxenterprises Tal vez, tal vez no;) Flame explotó Windows Update para sus propios fines falsificando un certificado, pero esa vulnerabilidad ya se ha corregido. No hay exploits WU conocidos públicamente, pero eso no significa que no existan. El usado por Flame no se conocía antes también. (ver ataque de 0 días
gronostaj
16
Todos los programas normales aparecerán allí, pero ...
sin una cuenta de administrador, solo podrá ver su propio proceso (las cuentas de administrador pueden elegir ver los procesos de todos)
rootkits tratará de ocultar su existencia ocultando su proceso de la lista, comprometiendo al administrador de tareas (para que no lo muestre), escondiéndose dentro de otro espacio de direcciones de proceso ...
los servicios se ejecutarán como subprocesos en un svchostproceso (en la mayoría de los casos), por lo que no hay un punto fácil en el que se ejecute el servicio en una instancia de svchost determinada.
Hay algunos programas diseñados para detectar rootkits. Lo hacen comprobando, por ejemplo, la lista de subprocesos programados para la ejecución y la lista de procesos en el sistema (un subproceso que no pertenece a ningún proceso es un signo de un proceso oculto), o la lista de archivos vistos a alto nivel, y comparándolo con los archivos que lee manualmente desde la partición del disco.
Sin embargo, una vez que está infectado, es posible que un virus oculte su presencia tan bien que es casi imposible de detectar. Esos generalmente se denominan APT (amenaza persistente avanzada).
Algunos de estos puntos están algo invalidados por Sysinternals Process Explorer : los usuarios limitados pueden ver los nombres de archivo de los procesos ejecutados por otro usuario, y la información sobre herramientas de svchosts enumera lo que están alojando.
Kirb
¿Querías escribir "amenaza" o "hilo"? Realmente funciona allí;)
Konerak
¿Cómo enumera un detector de rootkits los hilos o procesos? Si es una forma típica / WinAPI, ¿un rootkit no puede manipular la enumeración y el detector de rootkit no lo notará?
Ray
1
@DebugErr, observan los niveles alto y bajo, luego informan las diferencias (a veces producen falsos positivos, como cuando un archivo se ha cambiado en el medio). Al verificar la lista de subprocesos programados para la ejecución, me refería a la lista de doble enlace utilizada por el planificador del sistema operativo, es decir. nivel completamente bajo: si no está allí, no tiene un intervalo de tiempo (aunque hay más lugares para verificar, como el ISR).
Ángel
5
Fondo
El sistema operativo tiene un componente conocido como kernel. Una de las responsabilidades del núcleo (muchas) es administrar la memoria del sistema (tanto física como virtual).
Como parte de esto, el núcleo divide la memoria disponible en dos regiones distintas conocidas como modo de usuario y modo de núcleo. El kernel y los controladores comparten la memoria en modo kernel, y los programas de usuario y los componentes menos críticos del sistema residen en la región de memoria en modo de usuario.
Los procesos en modo usuario generalmente no pueden comunicarse con aquellos en modo kernel, excepto a través de canales especialmente designados y controlados.
Para completar, debe mencionarse que los procesos que se ejecutan en modo de usuario también están aislados entre sí, pero pueden comunicarse más libremente entre sí utilizando las instalaciones proporcionadas por el sistema operativo siempre que los programas estén diseñados para hacerlo.
Procesos
El núcleo proporciona la capacidad de iniciar procesos en modo de usuario. Cuando se crea un proceso, se agrega a una lista interna de procesos que existen actualmente. Cuando un programa como el Administrador de tareas solicita una lista de procesos, recibe un subconjunto de la información en esta lista, filtrada por permisos por usuario.
Un medio para que el malware, como un rootkit, oculte su existencia es eliminarse directamente de esta tabla. Una vez hecho esto, aún puede ejecutarse, pero ya no aparecerá en una lista de procesos obtenida por medios normales.
Dado que estos procesos aún existen y se ejecutan, se pueden encontrar mediante la inspección de otras estructuras de datos del núcleo, como las tablas de manejo, que contienen información sobre los recursos que un proceso tiene abiertos (por ejemplo, archivos), o al examinar las asignaciones de memoria de las cuales es más difícil de ocultar sin dificultar la capacidad de funcionamiento del software.
Controladores de modo kernel
Los controladores del modo Kernel se utilizan para muchas cosas, incluida la interacción con dispositivos físicos de hardware. Se ejecutan bajo el control del kernel según sea necesario, pero como no son un proceso en modo de usuario, no aparecen en la tabla de procesos. y, por lo tanto, no aparecerá en el Administrador de tareas u otras herramientas relacionadas exclusivamente con los procesos.
Poder ejecutar código en modo kernel es un paso importante para poder ocultar efectivamente la existencia de código de ejecución. En circunstancias normales, Windows requiere que el código en modo kernel se firme para ejecutarse, por lo que es posible que el malware necesite utilizar exploits en el sistema operativo, otro software o incluso ingeniería social para llegar aquí, pero una vez que el código se ejecuta en modo kernel, se oculta se hace más fácil
Resumen
En resumen, es posible ocultar evidencia de la existencia de un proceso, es probable que siempre haya alguna indicación de que el proceso existe, porque generalmente siempre necesitará usar algún tipo de recurso para hacer lo que fue diseñado, qué difícil esa detección depende del malware específico.
Los virus son bastante sofisticados hoy en día. No puede ser un virus en su computadora, pero no aparece en el Administrador de tareas . Es posible que el Administrador de tareas (y otras partes del sistema operativo) se vean comprometidos, ocultando así el virus. Por ejemplo, un rootkit.
Si planea confiar en el Administrador de tareas para buscar virus, entonces debe detenerse ahora. Instale un antivirus, e incluso un antivirus a veces no detectará un virus en su PC.
Hay una forma más simple de "ocultar un virus" aparte de otras que ya se explican en otras respuestas:
Una DLL comprometida (biblioteca vinculada dinámicamente)
Una gran cantidad de programas, casi todos los que no son triviales, necesitan una o más DLL para ejecutarse. Algunos pertenecen al sistema operativo en sí (por ejemplo, hal.dll, que abstrae el acceso de hardware para Windows), algunos son utilizados por un solo programa, que se divide en partes más pequeñas (un archivo .exe y más archivos .dll con funcionalidad central, plugins, etc.) No logra que su virus se ejecute todo el tiempo como un proceso o servicio ordinario, pero su virus será muy difícil de encontrar, ya que se verá como un programa o componente de programa completamente inocente.
Y hay una cosa muy atractiva sobre este tipo de creación de virus: hay un montón de sitios web que ofrecen una descarga gratuita (no requiere pago) de archivos dlls que, por este o por ese motivo, pueden faltar en su computadora. Dado que la posibilidad de comparar las sumas de comprobación del archivo .dll original y el nuevo es muy limitada y a casi nadie le importa, los virus dll pueden ingresar y permanecer en el sistema durante mucho tiempo sin ser notados (a menos que, por supuesto, un programa antivirus detecte ellos y el usuario está de acuerdo con la eliminación: ya ve el patrón).
De la pregunta, supongo que aquí hablamos de Windows, pero esta técnica también puede aplicarse a otros sistemas operativos.
TL; DR: el Administrador de tareas de Windows es bastante limitado en lo que puede hacer, y * nunca mostrará todos los procesos que se ejecutan en su sistema. ¿Quieres pruebas? Cuente (aproximadamente) la cantidad de RAM que utilizan los procesos que se muestran en el Administrador de tareas y compárelo con el uso de RAM del sistema; debe tener al menos 100 MB de RAM sin contabilizar, y a veces se eleva a alrededor de 1 GB, dependiendo de para qué esté utilizando el sistema. Las tarjetas gráficas también pueden tomar algo de memoria de la RAM junto con su propia RAM GDDR. *
Para ampliar la respuesta de Pavel Petman, podría agregar que muchos sofisticados motores de trucos para juegos dependen de inyectar código en las DLL de juegos que permiten sus trucos.
Este tipo de compromiso es bastante difícil de detectar, y la misma técnica se puede aplicar en esta pregunta. Si, por ejemplo, un virus quiere pasar desapercibido, puede hacerse pasar por una actualización de Windows del tipo que se extrae a los directorios del sistema, el virus podría sobrescribir un archivo crítico del sistema. La mayoría de los programas antivirus no detectarán este tipo de virus, lo que significa que el virus puede continuar inyectando el código del virus en las DLL críticas de Windows (y también .exes).
Cuando un cliente mío habla de un comportamiento inusual, siempre ejecuto Process Explorer (descarga de Microsoft) para detectar cualquier virus en ejecución. Process Explorer puede decirle exactamente qué procesos se están ejecutando (incluso los que no están en el Administrador de tareas), y también qué módulos DLL están utilizando.
shutdown -r -t 0
no se requieren privilegios), o simplemente esperar hasta que el usuario reinicie.Todos los programas normales aparecerán allí, pero ...
svchost
proceso (en la mayoría de los casos), por lo que no hay un punto fácil en el que se ejecute el servicio en una instancia de svchost determinada.Hay algunos programas diseñados para detectar rootkits. Lo hacen comprobando, por ejemplo, la lista de subprocesos programados para la ejecución y la lista de procesos en el sistema (un subproceso que no pertenece a ningún proceso es un signo de un proceso oculto), o la lista de archivos vistos a alto nivel, y comparándolo con los archivos que lee manualmente desde la partición del disco.
Sin embargo, una vez que está infectado, es posible que un virus oculte su presencia tan bien que es casi imposible de detectar. Esos generalmente se denominan APT (amenaza persistente avanzada).
fuente
Fondo
El sistema operativo tiene un componente conocido como kernel. Una de las responsabilidades del núcleo (muchas) es administrar la memoria del sistema (tanto física como virtual).
Como parte de esto, el núcleo divide la memoria disponible en dos regiones distintas conocidas como modo de usuario y modo de núcleo. El kernel y los controladores comparten la memoria en modo kernel, y los programas de usuario y los componentes menos críticos del sistema residen en la región de memoria en modo de usuario.
Los procesos en modo usuario generalmente no pueden comunicarse con aquellos en modo kernel, excepto a través de canales especialmente designados y controlados.
Para completar, debe mencionarse que los procesos que se ejecutan en modo de usuario también están aislados entre sí, pero pueden comunicarse más libremente entre sí utilizando las instalaciones proporcionadas por el sistema operativo siempre que los programas estén diseñados para hacerlo.
Procesos
El núcleo proporciona la capacidad de iniciar procesos en modo de usuario. Cuando se crea un proceso, se agrega a una lista interna de procesos que existen actualmente. Cuando un programa como el Administrador de tareas solicita una lista de procesos, recibe un subconjunto de la información en esta lista, filtrada por permisos por usuario.
Un medio para que el malware, como un rootkit, oculte su existencia es eliminarse directamente de esta tabla. Una vez hecho esto, aún puede ejecutarse, pero ya no aparecerá en una lista de procesos obtenida por medios normales.
Dado que estos procesos aún existen y se ejecutan, se pueden encontrar mediante la inspección de otras estructuras de datos del núcleo, como las tablas de manejo, que contienen información sobre los recursos que un proceso tiene abiertos (por ejemplo, archivos), o al examinar las asignaciones de memoria de las cuales es más difícil de ocultar sin dificultar la capacidad de funcionamiento del software.
Controladores de modo kernel
Los controladores del modo Kernel se utilizan para muchas cosas, incluida la interacción con dispositivos físicos de hardware. Se ejecutan bajo el control del kernel según sea necesario, pero como no son un proceso en modo de usuario, no aparecen en la tabla de procesos. y, por lo tanto, no aparecerá en el Administrador de tareas u otras herramientas relacionadas exclusivamente con los procesos.
Poder ejecutar código en modo kernel es un paso importante para poder ocultar efectivamente la existencia de código de ejecución. En circunstancias normales, Windows requiere que el código en modo kernel se firme para ejecutarse, por lo que es posible que el malware necesite utilizar exploits en el sistema operativo, otro software o incluso ingeniería social para llegar aquí, pero una vez que el código se ejecuta en modo kernel, se oculta se hace más fácil
Resumen
En resumen, es posible ocultar evidencia de la existencia de un proceso, es probable que siempre haya alguna indicación de que el proceso existe, porque generalmente siempre necesitará usar algún tipo de recurso para hacer lo que fue diseñado, qué difícil esa detección depende del malware específico.
fuente
Los virus son bastante sofisticados hoy en día. No puede ser un virus en su computadora, pero no aparece en el Administrador de tareas . Es posible que el Administrador de tareas (y otras partes del sistema operativo) se vean comprometidos, ocultando así el virus. Por ejemplo, un rootkit.
Si planea confiar en el Administrador de tareas para buscar virus, entonces debe detenerse ahora. Instale un antivirus, e incluso un antivirus a veces no detectará un virus en su PC.
fuente
Hay una forma más simple de "ocultar un virus" aparte de otras que ya se explican en otras respuestas:
Una DLL comprometida (biblioteca vinculada dinámicamente)
Una gran cantidad de programas, casi todos los que no son triviales, necesitan una o más DLL para ejecutarse. Algunos pertenecen al sistema operativo en sí (por ejemplo, hal.dll, que abstrae el acceso de hardware para Windows), algunos son utilizados por un solo programa, que se divide en partes más pequeñas (un archivo .exe y más archivos .dll con funcionalidad central, plugins, etc.) No logra que su virus se ejecute todo el tiempo como un proceso o servicio ordinario, pero su virus será muy difícil de encontrar, ya que se verá como un programa o componente de programa completamente inocente.
Lectura adicional: http://msitpros.com/?p=2012
Y hay una cosa muy atractiva sobre este tipo de creación de virus: hay un montón de sitios web que ofrecen una descarga gratuita (no requiere pago) de archivos dlls que, por este o por ese motivo, pueden faltar en su computadora. Dado que la posibilidad de comparar las sumas de comprobación del archivo .dll original y el nuevo es muy limitada y a casi nadie le importa, los virus dll pueden ingresar y permanecer en el sistema durante mucho tiempo sin ser notados (a menos que, por supuesto, un programa antivirus detecte ellos y el usuario está de acuerdo con la eliminación: ya ve el patrón).
De la pregunta, supongo que aquí hablamos de Windows, pero esta técnica también puede aplicarse a otros sistemas operativos.
fuente
TL; DR: el Administrador de tareas de Windows es bastante limitado en lo que puede hacer, y * nunca mostrará todos los procesos que se ejecutan en su sistema. ¿Quieres pruebas? Cuente (aproximadamente) la cantidad de RAM que utilizan los procesos que se muestran en el Administrador de tareas y compárelo con el uso de RAM del sistema; debe tener al menos 100 MB de RAM sin contabilizar, y a veces se eleva a alrededor de 1 GB, dependiendo de para qué esté utilizando el sistema. Las tarjetas gráficas también pueden tomar algo de memoria de la RAM junto con su propia RAM GDDR. *
Para ampliar la respuesta de Pavel Petman, podría agregar que muchos sofisticados motores de trucos para juegos dependen de inyectar código en las DLL de juegos que permiten sus trucos.
Este tipo de compromiso es bastante difícil de detectar, y la misma técnica se puede aplicar en esta pregunta. Si, por ejemplo, un virus quiere pasar desapercibido, puede hacerse pasar por una actualización de Windows del tipo que se extrae a los directorios del sistema, el virus podría sobrescribir un archivo crítico del sistema. La mayoría de los programas antivirus no detectarán este tipo de virus, lo que significa que el virus puede continuar inyectando el código del virus en las DLL críticas de Windows (y también .exes).
Cuando un cliente mío habla de un comportamiento inusual, siempre ejecuto Process Explorer (descarga de Microsoft) para detectar cualquier virus en ejecución. Process Explorer puede decirle exactamente qué procesos se están ejecutando (incluso los que no están en el Administrador de tareas), y también qué módulos DLL están utilizando.
fuente