Title: Bypassing Unhide
1Bypassing Unhide
Fistconference Barcelona Diciembre 2006
Freaklance -)
2Bypassing Unhide
- Qué es Unhide?
- Tiene problemas coronarios? bypass?
- Por qué Unhide?
- Cómo se hace el bypass?
- Solo para Unhide?
- Qué hay que saber?
Fistconference Barcelona Diciembre 2006
3Bypassing Unhide
- Conociendo a la víctima
- if (strcmp(argv1, "proc") 0) checkproc()
- else if (strcmp(argv1, "sys") 0)
- checkgetpriority()
- checkgetpgid()
- checkgetsid()
- checksched_getaffinity()
- checksched_getparam()
- checksched_getscheduler()
- checksched_rr_get_interval()
- else if(strcmp(argv1, "brute") 0) brute()
Fistconference Barcelona Diciembre 2006
4Bypassing Unhide
- proc
- int maxpid 32768
- for ( procpids 1 procpids lt maxpid procpids
procpids 1 ) -
- char directory100
- sprintf(directory,"/proc/d",procpids)
- statusproc stat(directory, buffer)
- if (statusproc 0)
- checkps(procpids,0)
-
Fistconference Barcelona Diciembre 2006
5Bypassing Unhide
- sys
- getpriority()
- getpgid()
- getsid()
- sched_getaffinity()
- sched_getparam()
- sched_getscheduler()
- sched_rr_get_interval()
Fistconference Barcelona Diciembre 2006
6Bypassing Unhide
- brute
- for (i0 i lt maxpid i)
- errno 0
- if (vfork() 0)
- vpid getpid()
- allpidsvpid '\0'
- _exit(2)
-
Fistconference Barcelona Diciembre 2006
7Bypassing Unhide
- brute
- for(y0 y lt maxpid y)
- if (allpidsy ! '\0')
- checkps(allpidsy,1)
-
Fistconference Barcelona Diciembre 2006
8Bypassing Unhide
- Algunas posibles soluciones
- proc
- Hook stat()
- sys
- Hook getpriority(), getpgid(), getsid(),
sched_getaffinity(), sched_getparam()
sched_getscheduler(), sched_rr_get_interval() - brute
- Swapping pids (in runtime).
Fistconference Barcelona Diciembre 2006
9Bypassing Unhide
- La solución propuesta EnyeLKM.
- Por qué EnyeLKM?
- Ventajas?
- Poco conocido (pocos detectores).
- Fácil de modificar en sus siguientes versiones.
- Desventajas?
- Código algo inestable (aún).
- Solo para algunos nucleos.
Fistconference Barcelona Diciembre 2006
10Bypassing Unhide
- DEMO 1. EnyeLKM 1.1 by RaiSe.
- DEMO 2. EnyeLKM 1.1 Bypassing Unhide by RaiSe
David Reguera García. - DEMO 3. EnyeLKM 1.1 by RaiSe. Rkhunter
Chkrootkit. - DEMO 4. EnyeLKM 1.1 Bypassing Unhide Rkhunter
Chkrootkit.
Fistconference Barcelona Diciembre 2006
11Bypassing Unhide
- Conclusiones
- Rkhunter, Chkrootkit Unhide no son del todo
fiables. - Cautela por parte del administrador y algún LKM
para prevención suele ser mejor. - EnyeLKM 1.1 Bypassing, estará disponible muy
pronto en http//www.fr33project.org
Fistconference Barcelona Diciembre 2006
12Bypassing Unhide
- Bibliografía
- http//www.security-projects.com/?Unhide
- http//www.enye-sec.org/
- http//www.badchecksum.org/
- http//www.fr33project.org/
- http//www.kernel.org/
- http//www.chkrootkit.org/
- http//freshmeat.net/projects/rkhunter/
- http//kernelnewbies.org/
Fistconference Barcelona Diciembre 2006
13Bypassing Unhide
- Agradecimientos
- Dudas/Sugerencias/Comentarios.
- Despedida
- E-mail ponente davidregar_at_yahoo.es
Fistconference Barcelona Diciembre 2006
14Bypassing Unhide
- HASTA PRONTO
- x
- David Reguera García
- davidregar_at_yahoo.es
Freaklance -)
Fistconference Barcelona Diciembre 2006