¿Cómo matar un proceso con múltiples hilos?

2

Estoy tratando con un malware que tiene varios subprocesos que se monitorean entre sí, no puedo matarlos a todos de una vez, así que no puedo deshacerme de él. ¿Cómo hago para solucionar esto? Estaba pensando en usar un depurador de kernel, pero tal vez haya una mejor alternativa.

    
pregunta Trey 02.11.2017 - 12:00
fuente

2 respuestas

4

Si puede identificar cómo se inicia el malware en el arranque o dónde está almacenado, una posible opción sería apagar la máquina, arrancar desde otro medio (como Linux o Windows PE live USB) y realizar cambios desde allí. para detener su lanzamiento en el próximo arranque. Esto implicará la eliminación de archivos que contengan el código ejecutable de malware o la modificación de la configuración del sistema para evitar que se inicie de nuevo en el arranque.

Si se esfuerza por identificar los ejecutables, siga los pasos sugerido por baldPrussian -

  

Obtenga los nombres de los subprocesos, que pueden indicarle el ejecutable que se ejecuta. Encuentre dónde están los exes y las claves de registro (posiblemente la clave de ejecución) que los llaman

Sugeriría revisar el sistema varias veces durante los próximos días para asegurar que no quede nada en el sistema para permitir la reinfección. También desea hacer todo lo posible para determinar el vector de infección, de nuevo para que pueda tomar medidas para no volver a infectarse.

En el peor de los casos, trague sus pérdidas y destrúyalo desde la órbita .

    
respondido por el Hector 02.11.2017 - 17:49
fuente
1

No especificaste qué sistema operativo es este. En Linux, todos los subprocesos que están unidos entre sí reciben el mismo PID. Confusamente, lo que es visible cuando el PID suele ser en realidad el TID, o ID de hilo, y el PID (real) se llama TGID, que es el ID de todo el proceso POSIX.1. Me referiré solo al TID y al TGID para evitar confusiones cuando una aplicación no puede decidir si debe etiquetar el TID o el TGID como el PID.

Cualquier proceso de subprocesos tendrá el mismo TGID para todos los subprocesos, incluso si el TID es diferente. Cuando envía una señal al TGID, el kernel envía la señal round-robin a cada TID en ese grupo de hilos. La mayoría de las señales, como SIGTERM, pueden ser atrapadas e ignoradas. Hay dos que no pueden ser atrapados, SIGKILL y SIGSTOP. El primero, con muy pocas excepciones *, se asegurará de que el proceso no pueda ejecutar ningún código más en el espacio de usuario desde el momento en que recibe la señal. Saldrá a la fuerza. Este último es similar, asegurando que no se ejecutará más código, pero en lugar de cerrar el proceso, simplemente lo detiene (hasta que se recibe una señal SIGCONT). Esto puede ser útil para analizar el malware mientras está congelado e incapaz de hacer algo para detenerlo.

Tenga en cuenta que esto solo funcionará si en realidad son subprocesos, y no solo un grupo de procesos diferentes y separados, no existe un mecanismo para que el malware se reinicie a sí mismo, por ejemplo. a través de otro proceso comprometido o un trabajo cron, y su entorno no ha sido comprometido, lo que significa que matar es en realidad matar.

kill -KILL $malwarepid

o

kill -STOP $malwarepid

* Las únicas excepciones son cuando el proceso principal no está listo para recibir su información de salida, dejando el proceso como un zombi, o cuando el proceso se encuentra en medio de una syscall ininterrumpible, lo que requiere que la syscall se complete antes de la proceso de salidas. Ninguna de estas excepciones permite que el proceso ejecute más de su propio código antes de que salga.

    
respondido por el guest 08.11.2017 - 08:40
fuente

Lea otras preguntas en las etiquetas