-[ 0x0B ]-------------------------------------------------------------------- -[ Rootkits ]---------------------------------------------------------------- -[ by blackngel ]----------------------------------------------------SET-29-- blackngel_hack@hotmail.com ROOTKITS "Bienvenidos al mundo de lo real..." &&&&&&--------& &&01&& INDICE & &&&&&&&&&&&&&&& ////////////////////////////////////////// // 01.-->> INDICE // // // // 02.-->> PROLOGO // // // // 03.-->> INTRODUCCION // // // // 04.-->> FUNCIONALIDAD // // 04.1 -->> MANTENER ACCESO // // 04.2 -->> EXPANSION TERRITORIAL // // 04.3 -->> OCULTA EVIDENCIAS // // // // 05.-->> TIPOS // // 05.1 -->> BINARY ROOTKITS // // 05.2 -->> KERNEL ROOTKITS // // 05.3 -->> LIBRARY KITS // // // // 06.-->> SEGURIDAD // // 06.1 -->> DETECCION // // 06.2 -->> PROTECCION // // // // 07.-->> USO NORMAL (REGLAS) // // // // 08.-->> ROOTKITS EN WINDOWS // // 08.1 -->> INTRODUCCION // // 08.2 -->> DETECCION // // 08.2.1 -> ROOTKIT DETECTOR // // 08.3 -->> LOGS GENERADOS // // // // 09.-->> DESPEDIDA // ////////////////////////////////////////// &&&&&&---------& &&02&& PROLOGO & &&&&&&&&&&&&&&&& Como no... Otra vez mas me encuentro aqui con vosotr@s aportando algo mas de mis conocimientos, espero que valga la pena. Cual es el plato del dia? mmmmm, pues hoy toca "rootkits" con tomate, tendreis que tragarme un rato pero tranquilos, este rollo de pasta no se hara muy largo. Porque tengo que leer esto? Pues muy simple por lo mismo que aguanto yo todos los dias la frase de un muy buen amigo en el messenger: --Porque solo el poder del conocimiento nos hace libres by |_Tr0mP4s. };.D &&&&&&--------------& &&03&& INTRODUCCION & &&&&&&&&&&&&&&&&&&&&& Nuestras queridas rootkits tan conocidas actualmente no son tan nuevas como parecen, segun parece datan de los aĻos 90 cuando aun se estaban desarrolando muchos de los proyectos que ahora conocemos. Estas herramientas son instalaciones que sustituyen a la mayoria de las utilidades cruciales del sistema operativo y dejan comprometida la maquina para futuras entradas, normalmente. Uno ejemplo muy bueno de todo esto, es la tipica sustitucion del binario "login" que se carga al inicio de cada sesion de un usuario para autentificarlo como legitimo. El nuevo "login" que se instala hace creer al usuario normal que la contraseĻa introducida es incorrecta mientras la envia via e-mail al dueĻo de la rootkit el cual a modificado dicho login para que contenga la direccion correcta. Comencemos... &&&&&&---------------& &&04&& FUNCIONALIDAD & &&&&&&&&&&&&&&&&&&&&&& |=========="04.1-MANTENER ACCESO"==========| Esto esta tipicamente muy relacionado con las backdoors (puertas traseras), estas se encargan por ejemplo de ocultar aplicaciones de acceso remoto. Lista de metodos: --> Manejo del archivo inetd.conf para abrir conexiones. --> Ssh remote login, es un software utilizado por algunos atacantes amateurs. --> CGI Shell. Una rootkit que deja un script cgi hostil en el servidor web. --> Telnet Inverso. Me lo reservo para otro articulo. --> Magin packet-activated. Es una backdoor que abre un puerto en la maquina, ejecuta un simple comando e inicializa una sesion en el sistema. --> SUID /bin/bash. Tipico... dejar escondida una copia de una shell en otro directorio con permisos para cualquier usuario. --> Muchos mas (Quiza en una actualizacion...) El acceso local se mantiene con rootkits que tienen las herramientas troyanizadas y necesarias que nos proporcionan un acceso con privilegios de root (administrador). Cabe destacar que mientras hay algunas rootkits que requieren de nivel root para ser instaladas, hay otras que nos proporcionan un metodo de escalada de privilegios. |=========="04.2-EXPANSION TERRITORIAL"===========| Simplemente decir que estas herramientas nos sirven para conseguir acceso a otros sitemas, a esto se le suele llamar "ampliar el territorio". Estas contienen un sniffer que puede ser colocado en diversas conexiones con protocolos en texto claro como pueden ser: telnet, pop3, imap, ftp y algunos otros. Con esto conseguimos aparte de muchos datos basura (o no tan basura), nombre de usuario y passwords, que nos permiten acceso a la misma maquina o a otras que son pertenecientes normalmente a la misma red (LAN). Como todos sabemos los sniffers ponen un bit de la tarjeta de red en "modo promiscuo", pues si mal no me acuerdo exite un modulo cargable (LKM) que esconde tambien el estado de este bit. Solo decir que esto lo consiguen desviando la syscall "sys_ioctl()" por una alterada. Cuando este metodo es implementado nos sirve de escondite para cuando el administrador del sistema compruebe el estado de su tarjeta red, ya sea mediante "ifconfig" u otras herramientas... Mas adelante ya se hablara de los LKM. Otro ejemplo de este tipo de herramientas es el SSH Syscall Sniffer que actua interceptando llamadas al sistema como read() y write() las cuales pueden contener datos beneficiosos para el atacante (usernames y passwords). Y ya para terminar este apartado tenemos tambien a keylogers que tambien interceptan syscalls para controlar cada tecla pulsada y reenviarla primero a un archivo determinado y permitir despues su ejecucion normal para que el usuario continue con su trabajo sin percibir ninguna anomalia en su sistema. |=========="04.3-OCULTA EVIDENCIAS"========| El tercer elemento crucial en la funcionalidad de una rootkit es la eliminacion de evidencias. Esto se podria resumir en el borrado de las huellas del ataque y la prevencion de nuevas huellas que puedan quedar logeadas. Todo esto se hace facil (hasta cierto punto) con el paso de zappers para cada archivo de log como: utmp, wtmp, acct, messages, syslog, lastlog, loginlog. Y tambien la modificacion del demonio syslogd que se encarga de todas las tareas de almacenamiento de informacion del usuario. &&&&&&-------& &&05&& TIPOS & &&&&&&&&&&&&&& |=========="05.1-BINARY ROOTKITS"==========| Este es el primer tipo de rootkits y los mas utilizados como se comento en la introduccion son los encargados de sustituir los binarios (ejecutables) mas importantes y ganar facilmente un acceso remoto o tambien local. Los nuevos ejecutables estan especialmente troyanizados por el mismo programador y algunos se encargan de ocultar muchos de los procesos maliciosos a la vista del administrador o cualquier otro usuario. Este tipo de rootkits suelen venir acompaĻadas de un script que se encarga de la instalacion (colocacion de cada binario en su correcto directorio). Todo esto siempre depende del SO al que estamos intentando comprometer, sobre todo porque suele variar la situacion de los archivos. No confundir con el sistema de archivos que por defecto siempre es "ext2" en las distribuciones linux. Los binarios estan precompilados para cierta arquitectura como: -Linux en un i386 INTEL -Solaris en un Sparc Aqui expongo una lista de los archivos que generalmente son los mas sustituidos por estas herramientas: @==============================================================@ | amd ftpd netstat | | asp fusers ntpd | | basename gpm passwd | | biff grep pidof | | chfn hdparm pop2d | | ch0sh ident pop3d | | cron ifconfig ps | | date inetd pstree | | dirname killall rexed | | du login rlogind | | echo ls rcpinfo | | egrep lsof rshd | | env mail sendmail | | find mingetty slogin | | fingerd named sshd | | su telnetd w | | syslogd timed write | | tar top wted | | tcpd traceroute xinetd | @==============================================================@ Y aqui pongo las funcionalidades para las cuales se suelen utilizar este tipo de paquetes: * Acceso remoto (Troyanizar "login" ...) * Acceso local (Troyanizar "login" ...) * Conexion ocuta (desapercivida) (Troyanizar "netstat") * Ocultacion de ficheros (Troyanizar "ls", "dir", etc) * Ocultacion de procesos (Troyanear "ps") * Ocultacion de las actividades del atacante (Troyanizar "syslogd") Nota: Si quereis una explicacion mas detallada de cada uno de estos puntos, mail-me y estare encantado de explicarlo personalmente o realizar una actualizacion del articulo. |=========="05.2-KERNEL ROOTKITS"==========| Este segundo tipo de rootkits ya no son tan conocidos por este nombre sino mas bien como Loadable Kernel Module (LKM, Modulos del Kernel Cargables), pues si son modulos maliciosos que se pueden insertar en nuestro kernel para que aporten nuevas funcionalidades (no muy amigables xD). Estes modulos maliciosos normalmente se encargan de modificar las syscall (system call, llamadas al sistema) que ya todos deberiamos de conocer. Esto es un gran compromiso para el mismo sistema. Ya que intercepta cada una de estas syscalls y produce una accion indebida, por ejemplo podria capturar la syscall de la funcion read() (para leer un fichero) y realizar otra operacion sobre el. Si quieres la lista de las distintas "llamadas al sistema" las puedes encontrar en "/usr/include/sys/syscall.h" o "/usr/include/syscall.h", el codigo para cada call es parte del kernel. Tambien cabe destacar que para que un LKM sea realmente bueno debe ser capaz de esconderse hasta el mismo. Esto lo realiza con la alteracion de la llamada al sistema "query_module()", para que cuando se ejecute el comando "lsmod" el mismo no aparezca. Bueno como esto ya escapa a las necesidades y aportaciones del articulo os dejo unos buenos links para que continueis en este tema si os interesa: --> http://www.giac.org/practical/gsec/Andrew_Jones_GSEC.pdf --> http://rr.sans.org/threats/rootkits.php --> http://hispakernel.rondanegocio.com/docs/intro_prog_drivers_linux.php --> http://www.iespana.es/eMc2H/files/openbsd-lkm.txt (OpenBSD) Nota: Buscar por "SucKit" un buen paquete sin duda alguna... |=========="05.3-LIBRARY KITS"=============| Los Library Troyan Kits, de los cuales T0rn 8 is el mas famoso, usan diferentes metodos para eludir su deteccion. Por ejemplo, este kit, usa una libreria de sistema especial llamada "libproc.a" que remplaza a una libreria estandar la cual se encarga de la informacion de procesos (sistema de archivos /proc). Con esto conseguimos la ocultacion de ciertos procesos que a nosotros nos interesen segun su nombre. Estas rootkits solo suelen ser utilizadas para la ocultacion de procesos y diversos archivos. Nota: Mis conocimientos en este apartado son muy escasos tratare de buscar mas informacion y ampliar este articulo. Os tendre informados. &&&&&&-----------& &&06&& SEGURIDAD & &&&&&&&&&&&&&&&&&& |=========="06.1-DETECCION"============| Existen algoritomos de "chequeo de suma" que nos sirven para identificar ficheros legitimos de otros que no lo son. Como ejemplo tenemos el MD5 que produce una cadena asegurandonos de que la unica forma de que la cadena sea igual para los dos ejecutables es que estos dos sean perfectamente identicos. Un buen administrador deberia de guardar dichas cadenas de cada ejecutable original en una fuente exterior, como puede ser en un cd, una cinta magnetica, etc... Asi, podria utilizarlas despues para asegurarse de la normalidad en su sistema. Una gran utilidad que cumple todas estas funciones es "TripWire" que controla la integridad de cada archivo del SO. Esta herramienta se encuentra disponible para sistemas Unix/Linux en: http://www.tripwire.org. Tampoco nos podemos olvidar de realizar escaneos desde otras maquinas a la nuestra con el objetivo de encontrar puertos abiertos utilizados por backdoors. Puertos que normalmente deberian de estar cerrados segun nuestro criterio. Tambien tenemos a "Chkrootkit" que funciona en busca de patrones de rootkits conocidas. Esto lo realiza buscando archivos caracteristicos o cadenas dentro de ejecutables que son sabidas de antemano. Y por ultimo tenemos demonios como rkdet, que se encargan de detectar cualquier intento de instalacion de una rootkit, y si es posible, evitarlo y avisar de alguna manera al mismo administrador. |=========="06.2-PROTECCION"===========| Para que se consiga instalar un rootkit en nuestro sistema, evidentemente es logico que primero haya que penetrarlo, entonces no tenemos mas solucion que proteger nuestro equipo, tanto fisicamente como todo el entorno de red en el que trabaje. Ya saben, cierren servicios no utilizados o por defecto, instalense un antivurus actualizado, un firewall perfectamente configurado, si hace falta que lo haga una persona con mas conocimientos mejor y por ultimo miren haber a quien dejan tocar su ordenador y que tipo de software ejectuan en el. &&&&&&------------& &&07&& USO NORMAL & &&&&&&&&&&&&&&&&&&& Bueno, pues ya para terminar, aqui explicare el uso normal que se suele dar a estas herramientas tan utiles. Solo seran unos pasos generales que la mayoria ya deberiais de saber pero que no viene mal recordar... **PASOS PRINCIPALES: -------------------- 1.--> Busca un host vulnerable, ayudate de un scanner automatico de alguna vulneravilidad conocida. (Simplemente arreglatelas). 2.--> Explota el sistema, curratelo y conviertete en root. 3.--> Descargate una "Rootkit" (Segun tu preferencia). Asegurate de que sea compatible con el sistema irrumpido. 4.--> Instala la herramienta en el sistema, suelten traer un script que hara todo el trabajo por ti. **BORRAR HUELLAS: ----------------- 5.--> Deshabilita el Shell History (unset HISTFILE; export HISTFILE=/dev/null). 6.--> Mata el daemon syslog y libera los logs del sistema. (Kill). 7.--> No te olvides de pasar algun zapper. (Cloak, Zap2, etc). 8.--> Elimina cualquier otra evidencia o rastro que haya podido quedar por la instalacion del rootkit u otros ficheros. &&&&&&---------------------& &&08&& ROOTKITS EN WINDOWS & &&&&&&&&&&&&&&&&&&&&&&&&&&&& |=========="08.1-INTRODUCCION"==========| Si bien ya estamos hartos de ver rootkits para nuestros queridos SOs "Unix/Linux", pues, en 1999, tambien se diseĻo uno para que trabajara en la plataforma NT de Windows. Este se basaba en una tecnica llamada "enganche de funciones" que en lenguaje tecnico se trata de apoderarse de las llamadas al API que como muchos ya sabremos (Los crackers y viruckers mas...) son el motor principal de nuestro software ya que en ultima instancia siempre estan dependiendo de ellas. Con todo esto conseguimos mas o menos los mismos objetivos que en nuestras plataformas *nix. Ocultacion de archivos, procesos y redireccion de ejecutables. |=========="08.2-DETECCION"=============| Si el rootkit esta desarrollado realmente a conciencia sera casi imposible el detectarlo en nuestro propio sistema, ya que como dije antes, el sistema siempre esta dependiendo del API y las llamadas a esta estarian troyanizadas (cambiadas por otras con diferentes intenciones ;)). Nuestro punto mas fuerte de deteccion sera la busqueda de backdoors que haya dejado o servicios prestados al exterior de cuya utilidad desconocemos. Como no, tendremos que hacer un escaneo de puertos desde fuera y si es posible (siempre) realizar una auditoria del sistema que haria de por si el portscan y buscaria mas vulneravilidades o errores desconocidos. Desde el interior deberiamos buscar tambien cambios en las entradas del registro del sistema. ||||||=08.2.1=||||||=Rootkit Detector=|||||| -------------------------------------------- Esta es una herramienta estupenda que se encarga de la deteccion de los rootkits mas conocidos hasta el momento, se vasa en la busqueda de patrones. Funciona bajo entornos NT. (En XP tambien xD) Aqui os pongo una salida del programa en mi sistema (no encontro ninguna por supuesto ;D): ________________________________________________________________________ . .. ...: Hax0rcitos Rootkit Detector v0.3b :... .. . | Rkd v0.3b - Rootkit Detector | Programmed by aT4r@3wdesign.es | Copyright (c) 2003 3W Design, Security | http://www.3WDesign.es | | | -Gathering Service list Information... ( Found: 248 services ) | -Gathering process List Information... ( Found: 27 process ) | -Searching for Hidden process Handles. ( Found: 0 Hidden Process ) | -Searching again for Hidden Services.. ( Found: 0 Hidden Services) | -Searching for wrong Service Paths.... ( Found: 0 wrong Services ) | -Searching for Rootkit Modules........ ( Found: 0 Suspicious modules ) | ________________________________________________________________________| * Con el Panda Antivirus instalado, "Titanium" segun mis pruebas, marca otra salida, en este caso saldria 1 en wrong Service Paths y una mencion sobre un archivo llamado "pavsrv.exe", no se que funcion realiza este programa situado en 'system32' tratare de averiguarlo pero en tal caso deberia ser un proceso oculto. Si alguien sabe algo o quiere ayudarme a saber algo sobre esto lo agradeceria mucho. O sera que no deberian ejecutarse servicios desde este directorio? Algunas de las rootkits detectadas: * AFX Rootkit 2003 * Hacker Defender. * He4HookInv. * Rkit (Backdoor.W32/ASW) * NT Rootkit _root_ Como otra caracteristica, cabe destacar que RKD almacena una base de datos interna con las firmas MD5 de algunas rootkits, exploits y programas de hack conocidos, esto reducira aun mas los posibles problemas de penetracion. USO: rkd.exe [parametros] -v - Muestra informacion extra. -m - Muestra el md5 de un fichero. *Realmente dificil eh! ;) |=========="08.3-LOGS GENERADOS"========| Realmente solo se generaran logs de importancia si el rootkit contiene un fallo en su programacion, sino, unicamente nos podremos encontrar como mucho, errores en la incapacidad de arrancar algun servicio del sistema que se veran reflejados en los archivos de logs habituales de nuestro SO. &&&&&&-----------& &&09&& DESPEDIDA & &&&&&&&&&&&&&&&&&& Chic@s esto ha sido todo por hoy, creo que basta para tener una idea de los mas generalizada sobre lo que pueden y son capaces de hacer estas grandes herramientas. Mas informacion sigue esperando ahi fuera para ser leida por vosotros, ya no tendriais que estar leyendo esta despedida y si tendriais que estar aprendiendo nuevos contenidos del mundo informatico. Como consejo os diria que buscaseis textos sobre programacion de LKM's que realmente los hay muy buenos. Me gustan las traducciones de la "phrack" y mucho ha sido escrito ya. Es un tema muy bonito y se pueden llegar a hacer maravillas, hay que tener en cuenta que estamos trabajando a nivel del kernel, el maximo privilegio!! alguien da mas? Opinion: Creo que es lo mas inteligente que podemos hacer despues de comprometer un sistema. Hoy por hoy, aquellos trucos antiguos que todos tanto conocemos nos meterian en el trullo. Importante: Me han comentado que andan por ahi sueltos unos cuantos IDS, tener cuidado con ellos que son unos chivatos xD. Cualquier duda, opinion, complemento a este articulo o insulto (que valga la pena) ya sabeis donde encontrarme: blackngel_hack@hotmail.com. by blackngel *EOF*