Fuentes:
http://www.securityfocus.com/infocus/1850
http://www.securityfocus.com/infocus/1851
http://www.securityfocus.com/infocus/1854

rootkit linux vs windows
no da~nan por s'i mismos, sino que son usados
uso menor a potencial da~no
ganar acceso y stealth viruses
manipula flujo del SO, altera logs y estructuras de auditor'ia
impide detectar nuevas vulnerabilidades
ejemplos: hacker defender, DU

diagrama: cpu, hardware, drivers, SO, aplicaciones
root vs usuario restringido
modo sistema/supervisor vs modo protegido
protecci'on de memoria
por qu'e los antivirus no los detectan una vez instalados
c'omo evitar que se siga detectando mediante cambios menores

"profesionalizaci'on" de rootkits. implementadores capacitados e interesados
costo de hacerlo vs beneficio tras explotarlo. proporci'on de escala
vector de: backdoors, malware, virus, worms, open relays, bot-nets, sniffers, loggers

rootkit legal? caso sony. inutilizaci'on de sistemas. inseguridad

*** ShadowWalker 1

various modes of execution and the ways they talk to the kernel:
hooking tables,
using layered filter drivers,
and dealing directly with Windows kernel objects.

virtual memory hooking to provide a high degree of stealth

methods of rootkit detection and countermeasures for security professionals


System Service Descriptor Table (SSDT), modo kernel

User mode rootkits run as a separate application or within an existing application. A kernel mode rootkit has all the power of the operating system and corrupts the entire system.

* Execution path hooks (sistema flexible, extensible, compatible hacia atr'as)
API del kernel vs subsistemas (Win32, POSIX, OS/2) => DLLs => SSDT
ejecutables: Import Address Table (IAT) => DLLs a cargar
ejemplo: filtrar listado de archivos, registro, procesos, etc.
IAT necesita cruzar 'areas de memoria virtual protegida entre procesos

* SSDT Hooking
The addresses of the actual implementation of the operating system functions are contained in a kernel table called the System Service Descriptor Table (SSDT) also known as the system call table
efecto system-wide (a todos los procesos) en vez de localizado (a nivel de proceso, como la IAT)

* Inline funcion hooking
Cambia c'odigo de la funci'on en el kernel
Usually the rootkit adds an unconditional jump from the original function to the rootkit code
tama~nos similares entre instrucciones jmp y pre'ambulo de entrada a la funci'on
uso leg'itimo: hot patching (parchar sin necesidad de rebootear)

* Layered filter drivers
red, disco, etc.
antivirus: scanners como capa de filtro sobre el sistema de archivos.
rootkit: 'idem para alterar flujo de datos.

* Direct Kernel Object Manipulation (DKOM) relies upon the fact that the operating system creates kernel objects in order to do bookkeeping and auditing. If a rootkit modifies these kernel objects, it will subvert what the operating system believes exists on the system.

2 categor'ias principales:
hooking: hacker defender
dkom: FU


*** ShadowWalker 2

These methods make it possible for an attacker to hide both known and unknown malicious code from a security scanner by controlling its memory reads at the hardware level

* Persistent versus memory-based rootkits
sobrevivir al reset
- persistente: se gurada en disco. hook para partir en boot-time
- volatil: RAM. no deja rastros forenses. servidores encendidos por meses. reboot peri'odico?
p'erdida de control ante reset vs p'erdida de trazabilidad del atacante
se necesita: esconder la propia presencia en la memoria Y mantener los hooks al c'odigo del rootkit
si no se esconde bien, cualquier antivirus de hace 20 a~nos sirve para encontrarlo mediante firmas de c'odigo
los persistentes, adem'as, deben poder esconderse bien en disco. sectores no asignados en partici'on? boot-sector? mbr?
similar a polimorfismo y metamorfismo en virus
polimorfismo ~ sin'onimos: otras instrucciones que hacen lo mismo
metamorfismo: autoencriptaci'on (XOR con llave aleatoria). se puede detectar rutina de desencriptaci'on
combinaci'on de ambas t'ecnicas para ocultar rutina de encriptaci'on
polimorfismo: detectable mediante verificaciones de integridad en memoria (checksums)
=> no polimorfosear el c'odigo del rootkit a nivel de kernel, sino que alterar la forma en que el SO "ve" la memoria
=> subversi'on del control de memoria virtual

Accesos a memoria: lectura/ejecuci'on, escritura/ejecuci'on. Toda la memoria es ejecutable (ejemplo: stack)
la no ejecuci'on no es directa
PaX: implementaci'on de kernel Unix que permite "truco" de memoria no ejecutable.
investigaci'on ha sido usada para explotar kernel de Windows
para ocultar el propio c'odigo, el rootki retorna otra cosa al intentar leer las p'aginas del rootkit desde otro proceso, con lo que se logra ocultar
limitaci'on: no afectar mayormente el desempe~no en la m'aquina de la v'ictima
pagefault por ejecuci'on en memoria swapeada => Instruction Pointer dentro del rango de direcciones de la p'agina
si no, pagefault por read/write
Pentium: 2 TLBs (Translation Lookahead Buffer): Ejecuci'on (ITLB) y Lectura/Escritura (DTLB)
Normalmente sincronizadas. El rootkit necesita desincronizarlas para falsear el direccionamiento, pero alterando s'olo una para no impactar demasiado el desempe~no (cargando page-faults a ejecuci'on en vez de read/write).
ShadowWalker aprovecha actitud defensiva de PaX
Sony DRM. Hacker/Cracker vs Profesional de la Seguridad

*** ShadowWalker 3

Signature based detection: Evitable con Virtual Memory Manager hooking (ShadowWalker)
The key words in that last sentence, however, are "public rootkits" because signature based detection is, by definition, useless against malware for which a known signature does not exist. Finally, signature based detection methods are useless against Virtual Memory Manager (VMM) hooking rootkits like Shadow Walker which are capable of controlling the memory reads of a scanner application.

Heuristic / Behavioral detection: potencial para detectar nuevos rootkits bas'andose en cambios de patrones de comportamiento

* VICE: an'alisis est'atico
kernel: Rastrea hooks en la SSDT y direcciones funciones de drivers
userspace: Rastrea IAT y funciones inline
- falsos positivos: hooks leg'itimos (hot-patch)

* PatchFinder: an'alisis runtime execution path profiling
cuenta instrucciones (Simple Step en x86) y compara vs sistema limpio (Interrupt Service Routine, ISR) para cada instrucci'on
- dependiendo de condiciones, son posibles execution paths no determin'isticos, contando m'as o menos instrucciones
Rutkowska deals with this problem statistically in Pathfinder by constructing a histogram and empirically demonstrating that the primary peak on the histogram remains constant regardless of system load, while the insertion of additional instructions by a rootkit causes a shift in the peak. Nevertheless, there remain cases where false positives can occur and the technique is vulnerable to rootkits which realize that they are being traced.

* Cross view based detection: muchas formas de hacer una misma pregunta
Compara lo obtenido mediante la API del kernel vs llamadas de bajo nivel. Diferencias => ocultamiento
Rootkit Revealer: Falsos positivos por cambios entre llamadas de alto y bajo nivel
Klister: Compara lista de procesos READY para ejecucu'on vs lista de procesos en espera
Cada capa del kernel es factible de ser "hookeada".
Soluci'on: comunicaci'on directa con el dispositivo de hardware (por ejemplo, disco).
Inconveniente: impr'actico (poco portable)

Detectores basados en hardware (Copilot): CPU independiente, acceso DMA para escaneos de integridad sobre memoria del kernel, interfaz de red independiente para comunicaci'on segura con dispositivos administrativos.
- Costo y mantenibilidad
+ Capaz de auditar su propio software
