unhide — Herramienta forense para descubrir procesos ocultos
unhide-linux [
OPTIONS]
TEST_LIST
unhide-posix proc | sys
unhide es una herramienta forense para detectar procesos ocultos en
sistemas Unix que hayan sido ocultados mediante rookits / módulos en el
Kernel o cualquier otra técnica de ocultación. Implementa seis
técnicas de detección
Opciones sólo están disponibles para
unhide-linux no para
unhide-posix.
- -d
- Realiza una prueba doble control en test 'brute' para
reducir la aparición de falsos positivos.
- -f
- Crea un fichero de log (unhide-linux.log) en el directorio
de ejecución.
- -h
- Muestra la ayuda
- -m
- Realiza múltiples tests añadidos, desde la
versión 2012-03-17, esta opción solo es válida en los
tests 'procfs', 'procall', 'checkopendir' y 'checkchdir'
Implica -v
- -r
- Emplea una versión alternativa del test sysinfo
- -V
- Muestra la versión y sale
- -v
- Fuerza la salida debug con los mensajes de error (se puede
repetir varias veces -vv)
- -u
- Realiza envíos sin buffer a la salida
estándar. Esta opción puede ser útil cuando unhide es
iniciado por otro proceso (por ejemplo, es utilizado por unhideGui).
- -H
- Proporcionar un resultado un poco más humano. Esta
opción añade mensajes finales a las pruebas e indica cuando
no se encuentran procesos ocultos.
Los checks consisten en uno o mas de los siguientes tests
Los tests estandar son en realidad agrupaciones de varios tests elementales
Tests estandar :
El test
brute consiste en hacer fuerza bruta sobre todo el espacio de
identificadores de procesos (PIDS)
Esta técnica solo está disponible con la versión
unhide-linux.
El test
proc consiste en comparar el directorio /proc con la salida del
comando /bin/ps
El test
procall combina los tests proc y procfs
Esta técnica solo está disponible con la versión
unhide-linux.
El test
procfs consiste en comparar la información obtenida por
/bin/ps con los datos obtenidos al recorrer procfs
Con la opción
-m este test realiza tests adicionales, para mas
información consultar
checkchdir
Esta técnica solo está disponible con la versión
unhide-linux.
El test
quick combina los tests proc, procfs y sys en una forma
'rápida' de ejecución, es hasta 20 veces mas rápido que
otros test pero también puede ofrecer mas falsos positivos
Esta técnica solo está disponible con la versión
unhide-linux.
El test
reverse consiste en verificar que todos los procesos e hilos que
son vistos por /bin/ps existen realmente buscandolos en procfs y por system
calls. El objetivo es averiguar si se ha modificado /bin/ps para hacer creer
que existen en ejecución algunos programas que realmente no lo
están
Esta técnica solo está disponible con la versión
unhide-linux.
El test
sys consiste en comparar la información obtenida de
/bin/ps contra algunas system calls
Tests elementales :
El test
checkbrute consiste en hacer fuerza bruta contra todo el espacio
de procesos (PIDS) del sistema
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkchdir consiste en comparar la información obtenida
por /bin/ps y compararla haciendo chdir() en procfs
Con la opción
-m también se comprueba que el hilo aparece
en la lista "leader process"
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkgetaffinity consiste en comparar la información
obtenida por /bin/ps con el resultado de la system call sched_getaffinity()
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkgetparam consiste en comparar la información obtenida
por /bin/ps con el resultado de la system call sched_getparam()
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkgetpgid consiste en comparar la información obtenida
por /bin/ps con el resultado de la system call getpgid()
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkgetprio consiste en comparar la información obtenida
por /bin/ps con el resultado de la system call getpriority()
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkRRgetinterval consiste en comparar la información
obtenida por /bin/ps con el resultado de la system call
sched_rr_get_interval()
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkgetsched consiste en comparar la información obtenida
por /bin/ps con el resultado de la system call sched_getscheduler()
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkgetsid consiste en comparar la información obtenida
por /bin/ps con el resultado de la system call getsid()
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkkill consiste en comparar la información obtenida por
/bin/ps con el resultado de la system call kill()
Nota: ningún proceso es 'matado' con este test
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checknoprocps consiste en comparar el resultado de la
información obtenida usando cada una de las system calls buscando
diferencias entre si. No se emplea /bin/ps o /proc
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkopendir consiste en comparar la información obtenida
por /bin/ps con el resultado de hacer opendir() sobre procfs
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkproc consiste en comparar la información obtenida por
/bin/ps con los datos de /proc
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkquick combina los tests proc, procfs y sys en una forma
'rápida' de ejecución, es hasta 20 veces mas rápido que
otros test pero también puede ofrecer mas falsos positivos
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkreaddir consiste en comparar la información obtenida
por /bin/ps con el resultado de hacer readdir() en /proc y /proc/pid/task
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checkreverse consiste en verificar que todos los procesos e hilos
que son vistos por /bin/ps existen realmente buscandolos en procfs y por
system calls. El objetivo es averiguar si se ha modificado /bin/ps para hacer
creer que existen en ejecución algunos programas que realmente no lo
están
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checksysinfo consiste en comparar el número de procesos
contabilizados por /bin/ps contra el número de procesos que indica la
syscall sysinfo()
Esta técnica solo está disponible con la versión
unhide-linux.
El test
checksysinfo2 es una versión alternativa de checksysinfo,
se presupone que funciona mejor en kernels parcheados para RT, preempt o
latency y también con kernels que no usen el planificador estandar
Este test está implicito cuando se ejecuta con la opción
-r
Esta técnica solo está disponible con la versión
unhide-linux.
- 0
- si todo OK,
- 1
- si se ha localizado un proceso/hilo oculto o falso
- Un test excepcionalmente rápido :
- unhide quick
- Test rápido :
- unhide quick reverse
- Estándar test :
- unhide sys proc
- Un test completo :
- unhide -m -d sys procall brute reverse
Puedes reportar fallos de
unhide en el 'bug tracker' de GitHub
(
https://github.com/YJesus/Unhide/issues)
Con las últimas versiones de kernel de Linux (> 2.6.33), el test
sysinfo puede reportar falsos positivos. Puede ser debido a la
optimización en el scheduler, el uso de cgroup o incluso el uso de
systemd. El uso del patch PREEMPT-RT amplifica la probabilidad de que se de
ese problema. Esto es actualmente objeto de investigación.
unhide-tcp (8).
Este manual ha sido creado por Francois Marier (
[email protected]) y Patrick
Gouin (
[email protected]).
Se concede permiso para ser copiado, distribuido y modificado bajo los
términos de la licencia GNU, versión 3 o versiones posteriores
publicadas por la Free Software Foundation
License GPLv3+: GNU GPL version 3 o posterior
<
http://gnu.org/licenses/gpl.html>.
Este es software libre, vd es libre de modificar y redistribuir las
modificaciones. Este software no provee ninguna garantía .