it-swarm-es.tech

¿Cómo detectar y eliminar un troyano Linux?

Recientemente (re) tropecé con esto:

Sí, sé que agregar algún PPA/software aleatorio de una fuente no confiable está buscando problemas (o algo peor). Yo nunca hago eso, pero muchos lo hacen (muchos blogs y tabloides de Linux promueven la adición de PPA para aplicaciones sofisticadas, sin advertir que puede dañar su sistema o, peor aún, comprometer su seguridad).

¿Cómo se puede detectar y eliminar un troyano o una aplicación/script malicioso?

16
iamsid

No hay una receta general. Si su sistema ha sido infectado por un troyano desconocido, todo lo que puede hacer es reinstalarlo.

Si sabe que el troyano funciona de cierta manera, por ejemplo, sabe que el troyano no infecta el kernel, puede que exista una forma menos severa de recuperación. Pero eso depende completamente de saber cómo se comporta el troyano. Si todo lo que tiene son los síntomas (como que su computadora envíe spam sin su consentimiento), no hay una técnica general: el detector de troyanos tiene que ser más inteligente que el diseñador de troyanos (y suerte). En lo que respecta a los troyanos, la detección y el ocultamiento son como un arma y una armadura: hay una escalada tecnológica y ninguna de las partes tiene una ventaja intrínseca (aunque los escondidos tienen una ventaja).

Muchos sistemas cuentan con un canal de distribución seguro. Por ejemplo, cuando instala un paquete de los repositorios de Ubuntu con las herramientas basadas en apt (apt-get, aptitude, synaptic, software center,…), la herramienta verifica que el paquete esté firmado (examinado) por alguien de confianza de Ubuntu. (La mayoría de las distribuciones tienen un mecanismo similar). Cuando instala un paquete desde un PPA, todo lo que puede saber es que el propietario del PPA examinó el paquete, lo cual no ayuda si no tiene ninguna razón para confiar en el propietario del PPA en primer lugar.

Sobre troyanos y puertas traseras, recomiendo encarecidamente leer la conferencia del premio Turing de Ken Thompson , Reflexiones sobre la confianza en la confianza . Para resumir, cambió el compilador para que al compilar el programa de inicio de sesión, agregara código que le permitiera iniciar sesión con una contraseña secreta; luego cambió el compilador para que cuando se compilara a sí mismo, insertara el código para agregar la puerta trasera; luego volvió a compilar todo el sistema (en particular, el programa de inicio de sesión y el compilador); finalmente restauró la fuente del compilador a la fuente original e incuestionable. De nuevo, lea artículo de Ken Thompson ; entonces también puede leer contrapunto de David Wheeler , quizás mejor comprendido a través de Bruce Schneierartículo del blog .

Si entiendo correctamente, el "troyano" descrito en este artículo no podría ser descubierto de forma "normal" como malware "normal". Este IRCd se comportaba normalmente hasta que se usó, por lo que el administrador podía encontrar este agujero de seguridad solo cuando: 1) se utilizó y la acción realizada por este agujero provocó la entrada en los registros o fue visible de alguna otra manera, 2) leyendo el código fuente.

El software AV para Linux o los discos de rescate AV LiveCD también debería detectar el malware "real" de Linux, de modo que pueda escanear la computadora con este software. Como puede ver en SecureList en la lista hay 1941 entradas con el nombre de Linux y ese software debe ser detectado por el software Kaspersky. Un vistazo rápido a esta lista muestra que muchas entradas tratan sobre algunas herramientas DDoS y exploits o herramientas que no se pueden propagar automáticamente y podrían usarse solo como herramientas de ataque (por lo que no son dañinas).

Para verificar las puertas traseras/rootkits instalados por el cracker, puede usar la herramienta que verifica las sumas de verificación de archivos (debe generar una lista de archivos y sumas de verificación en el sistema limpio y actualizarla después de la actualización del software del servidor). Cada nuevo archivo o archivo con suma de comprobación incorrecta es sospechoso. La lista de suma de comprobación y la herramienta que la genera debe estar en un medio de solo lectura (el cracker también podría cambiar, por ejemplo, md5sum por su propia versión que muestra sumas de comprobación incorrectas). Esta forma de encontrar malware podría usarse en sistemas 'estables' donde el software no se actualiza todos los días.

Algunos programas maliciosos pueden detectarse ejecutando netstat localmente para verificar el tráfico de la red, pero si el sistema está infectado, los datos mostrados por netstat también podrían cambiarse. En este caso, alguna solución es monitorear el tráfico de red desde otra computadora (por ejemplo, desde el enrutador, para verificar qué tráfico se envía a Internet).

7
pbm

SELinux y AppArmor existen para la prevención de troyanos/rootkit y otras infecciones. Les cuento el caso de SELinux, que conozco mejor. Con SELinux habilitado, le da un contexto a todo el proceso (demonio incluido) que instala en la máquina. También etiqueta el sistema de archivos para trabajar con el contexto, haciéndolo coincidir. Cuando un proceso intenta hacer algo que no está dentro de su contexto, recibe un mensaje y, si SELinux está en modo de ejecución, la acción no se puede completar.
De esta manera, si su troyano ircd estuviera dispuesto a sobrescribir el comando ps o algo más (estrategia común para los troyanos/rootkits/gusanos para evitar la detección), no se me permitiría hacer eso. Y estarías informado.
Sé que es difícil de configurar, pero mis máquinas están trabajando con SELinux implementado en este momento, y mis (dos) computadoras portátiles Fedora pueden hacer cualquier cosa que necesite una computadora de escritorio sin demasiados problemas.
Incluso mi servidor doméstico está ahora en modo de ejecución.
Otra estrategia es una ejecución regular de detectores de rootkit que calculan una suma de comprobación para los comandos físicos y le informan sobre los cambios en los comandos básicos.
Trabajo con SELinux y rkhunter habilitados (más un antivirus clamav).

Saludos

4
lucabotti

Otra respuesta afirmó que los "hiders" (malware sigiloso) tienen una ventaja intrínseca sobre los "detectores". Estoy en desacuerdo. Esto es cierto si se limita a enfoques de detección que se basan en firmas o heurísticas para detectar malware. Pero hay otra forma de detectar malware: verificar productos conocidos. Tripwire, AIDE, etc. pueden verificar archivos en disco. Second Look puede verificar el kernel y los procesos en ejecución. Second Look utiliza análisis forense de memoria para inspeccionar directamente el sistema operativo, los servicios activos y las aplicaciones. Compara el código en la memoria con lo que ha publicado el proveedor de distribución de Linux. De esta manera, puede identificar de inmediato las modificaciones maliciosas realizadas por rootkits y puertas traseras, y programas no autorizados que se están ejecutando (troyanos, etc.).

(Divulgación: soy el desarrollador principal de Second Look).

2
Andrew Tappert