fernand0 | Hola, |
---|---|
fernand0 | nuestro próximo conferenciante es Oscar Peredo, de Chile. |
fernand0 | recibimos esta conferencia con especial cariño, porque Oscar ha sido un importante colaborador en la preparación de este congreso, y hoy |
fernand0 | tenemos el gusto de presentarlo como ponente. |
fernand0 | Trabaja en una empresa de seguridad informática en Chile, Exis, |
fernand0 | y también |
fernand0 | colaboró en el desarolo de wasap, que es un módulo de seguridad para Apache. |
fernand0 | Hemos habilitado el canal #qc para preguntas y comentarios. |
fernand0 | Y habrá traducción simultánea al inglés en #redes (English translation in #redes) |
fernand0 | Su conferencia de hoy se titula: |
fernand0 | Troyanos acción y reacción |
fernand0 | Gracias al conferenciante y a todos ustedes por acudir. |
fernand0 | Oscar ... |
krocz | gracias |
krocz | buenos dias/tardes/noches o lo que sea donde esten :P |
krocz | hoy expondre un tema muy comun en cuanto a seguridad se trata |
krocz | que soy backdoors |
krocz | hablare un poco de como han evolucionado en el tiempo |
krocz | de como se han transformado en troyanos |
krocz | gracias a las nuevas tecnicas de infeccion |
krocz | comentare, no entrare en mayores detalles, de las tecnicas que ocupan algunos troyanos para esconderse en un sistema Linux |
krocz | dando informacion de donde se podra encontrar mayores detalles de estas tecnicas |
krocz | luego hablare sobre una herramienta en particulas sobre deteccion de troyanos |
krocz | y su deficiencia |
krocz | hare un caso de estudio de uno de estos |
krocz | y que entenderan por que elegi aquel troyano que comentare mas adeltante |
krocz | simples |
krocz | pero que nos ayudaran a obstaculizar la insercion de estos en los sistemas |
krocz | ahora hare una peque~a explicacion de algunos tecnisismo que ocupare |
krocz | para no confundir o equivocarnos en sus significados |
krocz | cracker, lo asumire como la persona que ingresa al sistema, solamente eso |
krocz | hacker, la persona que escribe el codigo, sin importar sea codigo maligno (como exploit, backdoors, virus o codigo de kernel u otros) |
krocz | esta sera una conferencia que se expondra solo lo necesario para entender |
krocz | estare atento a las preguntas o comentarios que se haran en el canal #qc |
krocz | comenzemos |
krocz | como todo en este mundo evoluciona |
krocz | tanto las tecnicas que ocupan internamente los sistemas operativos para mejorar su rendimiento y prestancia |
krocz | pero tambien evolucionan los hackers que escriben sus codigos y mejoran las formas de ocultamiento en el sistema |
krocz | por ejemplo en epocas anteriores |
krocz | los troyanos eran completamente programados para un fin |
krocz | era un programa realizado que hacia algo y sin que el usuario que ejecutase el programa se diera cuenta del fin de este |
krocz | algo asi como los virus de hoy en dia |
krocz | luego tenemos a los backdoors |
krocz | los backdoors son puertas traseras |
krocz | que hacen que un usuario llegue a un estado de manera mas rapida |
krocz | en la antiguedad, estamos hablando que en computacion 5 años atras ya estamos en la prehistoria |
krocz | los programadores de sistemas instalaban backdoors en sus programas |
krocz | para ahorrar tiempo y llegar a un estado que deseaban |
krocz | pero para consecuencias de seguridad |
krocz | a veces a los programadores se les olvidaba quitar esos backdoors |
krocz | los cuales posteriormente eran descubiertos por terceras personas |
krocz | pasando el tiempo y modificando un poco el ambiente |
krocz | se comenzaron a ver backdoors simples |
krocz | eran muy faciles de detectar |
krocz | por ejemplo |
krocz | en las lineas del archivo /etc/services se agregan lineas como esta " backdoor 31337/tcp" y en el archivo /etc/inetd.conf una linea como la siguiente "backdoor stream tcp nowait root /bin/bash -i" |
krocz | en hacia esto |
krocz | habria una shell en el puerto 31337 en la cual cualquiera que se conectara a este puerto tendria una shell con privilegios de root |
krocz | este tipo de backdoors antiguados eran muy faciles de detectar |
krocz | pero para administradores inexpertos les era muy dificil |
krocz | y otro ejemplo mas ocupado, incluso aun es de agregar una linea |
krocz | al archivo /etc/passwd con los privilegios de root, por ejemplo krocz:x:0:0:root:/root:/bin/bash |
krocz | simple, me logeaba con el usuario krocz y tenia privilegios de root |
krocz | esto ha cambiado en la actualidad |
krocz | con las tecnicas viricas actuales |
krocz | se han diseñado backdoors |
krocz | que combinados con las tecnicas viricas se han convertidos en troyanos |
krocz | ya que ejecutamos programas sin saber que mas hacen |
krocz | como presentare en el caso de estudio mas adelante |
krocz | como he dicho las tecnicas han evolucionado |
krocz | ahora es casi imposible diferenciar un virus de un troyano |
krocz | estamos hablando todo esto en el contexto Linux |
krocz | tecnicas de troyanizacion como la redireccion de librerias |
krocz | como se muestra en el articulo de phrack realizado por Silvio Cesare |
krocz | http://www.phrack.org/phrack/56/p56-0x07 |
krocz | no entrare en detalles, debido a que nos saldriamos del tema principal |
krocz | pero si desean saber ese es un excelente articulo |
krocz | tecnicas viricas que infectan modulos de kernel |
krocz | como la presentada en http://www.phrack.org/phrack/61/p61-0x0a_Infecting_Loadable_Kernel_Modules.txt |
krocz | han visto como ha cambiado el tema en cuanto a troyanizacion se trata |
krocz | y la tecnica que veremos con un poco de mayor profundidad mas adelante es la de infeccion a traves de /dev/kmen |
krocz | http://www.phrack.org/phrack/58/p58-0x07 |
krocz | estas son algunas de las tecnicas que ocupan los troyanos |
krocz | para instalarse en el sistema |
krocz | mas que troyanos rootkits |
krocz | rootkits son programas |
krocz | varios programas que se instalan en un sistema |
krocz | para mantener oculto al atacante |
krocz | que ha ingresado de manera ilegal |
krocz | a una maquina |
krocz | como dicen por #qc |
krocz | algunos articulos estan aqui |
krocz | redyuck> http://www.est.cl/phrack/p61-0x0a.txt ( en castellano ) |
krocz | <redyuck> http://www.est.cl/phrack/phrack58-0x07.txt |
krocz | y como dije alguna tecnica que se ocupara mas adelante y que parece, ha mi gusto la mas complicada es la de infeccion de la imagen del kernel |
krocz | http://www.phrack.org/phrack/60/p60-0x08.txt |
krocz | un atacante cuando ingresa a un sistema |
krocz | lo que siempre intenta es esconderse del administrador |
krocz | de la maquina |
krocz | ya sea de manera simple |
krocz | como haciendo directorios en /dev/ |
krocz | y ahi instalando sus herramientas |
krocz | instalando programas con suid root |
krocz | que al ejecutarlos lo hacen con privilegios de root |
krocz | estos programas son simples de detectar |
krocz | con un simple comando find / -perm +4000 |
krocz | encontraran varios programas con suid root |
krocz | es conocimiento del administrador saber cuales deberian tener los permisos correspondientes |
krocz | un rootkit |
krocz | la idea, como dije anteriormente es esconderse del administrador |
krocz | los comandos mas usados |
krocz | para poder esconder conexiones |
krocz | procesos |
krocz | y cosas por el estilo |
krocz | cambiaban el /bin/login |
krocz | por algun otro para poder detectar las password de los usuarios que ingresaban al sistema |
krocz | o cambiaban el comando "ps" para poder esconder los procesos que eran ejecutados por el cracker que estaba dentro del sistema |
krocz | u comandos como netstat |
krocz | para esconder conexiones |
krocz | estos rootkits eran faciles de detectar |
krocz | con herramientas como tripwire |
krocz | o ejecutando uno mismo md5sum |
krocz | a los archivos y comparandolos con otros |
krocz | nos daban hash que no correspondian al archivo original |
krocz | como dije faciles de detectar |
krocz | una herramienta muy comentada |
krocz | como se dijo |
krocz | es chkrootkit |
krocz | para poder detectar estos rootkits |
krocz | u posibles anomalias |
krocz | en el sistema |
krocz | http://www.chkrootkit.org |
krocz | si desean bajar la herramienta para pobrar en sus sistemas |
krocz | esta herramienta para mi gusto es poco confiable |
krocz | basta ver |
krocz | alguno de sus opciones para detectar algunos de los rootkits mas ocupados |
krocz | if ${egrep} -i adore < /proc/ksyms >/dev/null 2>&1; then |
krocz | echo "Warning: Adore LKM installed" |
krocz | fi |
krocz | con esas lineas muestra si existe el LKM-rootkits adore |
krocz | no me parece una demostracion que si no encuentra eso, es que no esta el rootkits mencionado |
krocz | u este ejemplo |
krocz | ${strings} ${ROOTDIR}sbin/init | ${egrep} HOME" |
krocz | con esa linea |
krocz | intenta buscar la cadena HOME en /sbin/init |
krocz | la cadena HOME |
krocz | es una que ocupa el rootkits SucKit |
krocz | sobre este troyano hare mi caso de estudio |
krocz | osea si no encuentra esa cadena da por enterado que no existe SucKit instalado |
krocz | (no sabe que ni siquiera haciendo un hash md5, al /sbin/init podra detectar algun cambio) |
krocz | chkrootkit hace poco me demostro que yo tenia un troyano instalado |
krocz | solo por que tenia 4 procesos ocultos |
krocz | Checking `lkm'... You have 4 process hidden for ps command |
krocz | despues me di cuenta que era problema del procfs que tengo instalado |
krocz | en mi debian |
krocz | el que tiene problemas :D |
krocz | ahora pasemos al caso de estudio y a demostrar de manera |
krocz | practica el funcionar del rootkits suckit |
krocz | cuando estaba planeando esta charla y no encontraba que exponer |
krocz | me encontre con la noticia del ingreso a los servidores de debian |
krocz | formas y maneras que lo hicieron creo que las conocen :D |
krocz | pero lo que me llamo la atencion fue que los invasores |
krocz | troyanaron la maquina |
krocz | y ocuparon el troyano SucKit |
krocz | para enconder su presencia |
krocz | por que ocuparon este troyano alguna razon tendran |
krocz | en http://www.exis.cl/present/umeet/pre.html |
krocz | he hecho una seria de pasos |
krocz | que corresponden a una prueba que realice |
krocz | para demostrar de manera creible lo que estoy exponiendo |
krocz | veremos que el primer paso fue ejecutar un hash md5 al archivo /sbin/init |
krocz | que es el que modifica suckit cuando se instala en el sistema |
krocz | luego me infecto con el troyano-rootkit |
krocz | ejecuto el backdoor "./sk" |
krocz | y nuevamente realizo un hash md5 al /sbin/init |
krocz | y para sorpresa mia su hash no ha cambiado |
krocz | es su forma de esconderse lo que hace que sea casi indectable a tripwire |
krocz | como funciona un poco el troyano |
krocz | con una de las tecnicas mencionadas antiormente a travez de /dev/kmen |
krocz | este archivo contienen una imagen del nucleo cargado en memoria |
krocz | el archivo tiene permisos de escritura |
krocz | SucKit busca la direccion de la tabla de Syscall |
krocz | es que una parte algo complicada |
krocz | y modifica la tabla de syscall |
krocz | modificando las que necesita |
krocz | es asi que es capas de saltar |
krocz | los tipos de hash |
krocz | la tecnica de evadiendo md5sum |
krocz | a traves de LKM es mostrada en la ezine 7 a 69 en el articulo escrito por IReick |
krocz | articulo numero 9 |
krocz | de esa ezine |
krocz | el Suckit modifica el /sbin/init |
krocz | para poder cargarse nuevamente en caso que se reinicie la maquina |
krocz | este rootkit trae un cliente |
krocz | el cual sirve para conectarse a la maquina infectada con suckit |
krocz | lo que hace que no debe logs |
krocz | es que manda un packete binario a un puerto abierto |
krocz | y como esta a nivel del kernel el Suckit |
krocz | lo detecta y revisa si la contrase~a del hash enviada correnponder a la que tiene |
krocz | instalada |
krocz | si corresponder manda una conexion a un puerto que tiene en estado LISTEN el atacante |
krocz | esta forma de conexion se conoce como telnet-reverso |
krocz | es de esa forma que |
krocz | se saltan firewalls |
krocz | ya que es como si la conexion la iniciase la maquina |
krocz | ya que como dije el packete siempre va a un puerto abierto |
krocz | puede ser cualquier puerto abierto |
krocz | tanto como binario o ascii |
krocz | o si esta detras de un nat |
krocz | como no alcanza a llegar a las capas posteriores |
krocz | es procesado en la capa del kernel |
krocz | no deja logs en el sistema |
krocz | y si "encriptacion" |
krocz | del trafico hacec que no sea muy facil de detectar con IDS |
krocz | <redyuck> algun ids recomendado (snort) ? <- aun no he hecho pruebas pero de manera facil no podras detectar las conexiones de Suckit |
krocz | una idea que me recomendo un compañero de trabajo era que suckit ocupa un hash fijo |
krocz | para enviar la autentificacion |
krocz | hash fijo quiero decir tama~o fijo del packete |
krocz | quizas puedas detectar ese tama~o y ahi recien comenzar a tener sospechas que estas infectado |
krocz | como he dicho solo hay trafico encriptado, no veras ningun /bin/sh |
krocz | en tu red |
krocz | una vez que me conecto |
krocz | a la maquina infectada |
krocz | y hacemos un listado de procesos |
krocz | veremos algo como esto |
krocz | http://www.exis.cl/present/umeet/pre2.html |
krocz | como veran |
krocz | los backdoors estan corriendo |
krocz | especificamente en |
krocz | root 2349 0.0 0.0 208 148 ? S 20:39 0:00 ./sk |
krocz | root 2647 0.0 0.0 208 148 ? S 20:48 0:00 ./sk |
krocz | root 2688 0.0 0.0 208 148 ? S 20:51 0:00 ./sk |
krocz | root 2782 0.0 0.0 208 148 ? S 21:01 0:00 ./sk |
krocz | root 2783 0.0 0.5 2052 1104 ttyp0 S 21:01 0:00 sh -i |
krocz | y a su vez una persona conectada normalmente |
krocz | vera esto |
krocz | http://www.exis.cl/present/umeet/pre3.html |
krocz | como se fijaran |
krocz | en la segunda presentacion |
krocz | no se ven los troyanos corriendo |
krocz | como veran |
krocz | ni obteniendo los hash md5 |
krocz | del archivo init |
krocz | podran ver si esta suckit |
krocz | ni siquiera tripwire lo detecta |
krocz | es por esta razones que confiar 100% en chkrootkit |
krocz | no vale la pena |
krocz | por eso que no confio en que chkrootkit detectara los rootkits instalados |
krocz | ahora viene como detectar |
krocz | una de las fallas de Suckit |
krocz | por lo menos en la version que probe |
krocz | es que no esconde las conexiones |
krocz | (no confies, esto cambiara) |
krocz | haciendo un netstat -anep |
krocz | obtendran algo parecido a esto |
krocz | http://www.exis.cl/present/umeet/pre4.html |
krocz | hay una conexion que nos parecesa extraña |
krocz | que es la tcp 0 0 127.0.0.1:1030 127.0.0.1:1028 ESTABLISHED 0 5946 - |
krocz | que no tiene nombre del archivo ni el PID |
krocz | pero esta establecida |
krocz | ahora veamos algo del codigo de instalacion |
krocz | dee suckit |
krocz | if [ ! -f /sbin/init${H} ]; then cp -f /sbin/init /sbin/init${H} |
krocz | ; fi; rm -f /sbin/init; cp sk /sbin/init |
krocz | como veran |
krocz | copia sk |
krocz | a |
krocz | /sbin/init |
krocz | y el /sbin/init original |
krocz | lo copia a /sbin/initsk12 |
krocz | que es el valor de la variable H |
krocz | si hacemos un ls /bin/initsk12 |
krocz | no encontrara nada |
krocz | para sorpresa, este ni~o se sabe esconder |
krocz | pero si hacemos un file /bin/initsk12 |
krocz | lo encontrara |
krocz | si lo encuentra es que estamos infectados |
krocz | este rootkit esta en un estado de espera |
krocz | si no hay nadie conectado no hay mucho que hacer |
krocz | para encontrar cual sera su "HOME" dond esta instalado |
krocz | he ahi la excusa que chkrootkit busca esa cadena en /sbin/init |
krocz | una forma de detectar |
krocz | el home |
krocz | es que cuando alguien se conecte |
krocz | es ir al /proc |
krocz | y ahi veran |
krocz | unos directorios con numeros |
krocz | voila, nos PID de cada proceso |
krocz | que hay corriendo en la maquina |
krocz | si hay alguien conectado los PID de los procesos que esta ocupando nuestro atacante |
krocz | no se veran |
krocz | ahi viene la tarea ardua de buscar que PID son |
krocz | una forma es intentar cada numero |
krocz | por ej cd 1 - cd 2 .... cd 179 |
krocz | y asi sucesivamente |
krocz | cuando exista el pid |
krocz | entraran a la maquina |
krocz | osea al directorio |
krocz | y no existe les saldra algun error |
krocz | ahi daran con los PID escondidos |
krocz | ya que como existen |
krocz | entraran a sus correnpondientes directorios |
krocz | por ejemplo |
krocz | :/proc# ls 15252 |
krocz | ls: 15252: No such file or directory |
krocz | # cd 15252 |
krocz | :/proc/15252# |
krocz | ahi se encontraran con un archivo environ |
krocz | que les ayudara a detectar cual es su home |
krocz | donde se encuentra instalado el rootkit |
krocz | acto seguido |
krocz | van a ese directorio |
krocz | y ejecutan ./sk u |
krocz | que desintala el troyano y veran los procesos |
krocz | que estaban escondidos y directorios |
krocz | mueven el archivo /sbin/initsk12 a /sbin/init |
krocz | y quedaran sin Suckit instalado |
krocz | para comenza a terminar |
krocz | algunas soluciones |
krocz | para ayudar a hacer mas dificil la tarea de instalar unn backdoor |
krocz | herramientas como http://la-samhna.de/samhain/ |
krocz | les ayuudaran a |
krocz | mantener la integridad de los archivos |
krocz | para evitar los rootkits LKM |
krocz | personamente, compilo el kernel sin soporte para LKM |
krocz | y en los textos que les mostre |
krocz | hay unos codigos que parchan /dev/kmen para escritura |
krocz | antes que nada quiero agradecer a Felipe molina por la ayuda prestada para hacer pruebas y ideas de topicos para incluir |
krocz | FIN!! |
EMPE[log] | plas plas plas plas plas plas plas plas plas |
EMPE[log] | plas plas plas plas plas plas plas plas plas |
fernand0 | plas plas plas plas plas plas plas plas plas plas |
EMPE[log] | plas plas plas plas plas plas plas plas plas |
EMPE[log] | plas plas plas plas plas plas plas plas plas |
fernand0 | plas plas plas plas plas plas plas plas plas plas |
fernand0 | plas plas plas plas plas plas plas plas plas plas |
fernand0 | plas plas plas plas plas plas plas plas plas plas |
italix | plas plas plas plas |
italix | :) |
fernand0 | plas plas plas plas plas plas plas plas plas plas |
jorge | ¡¡Felicidades!! |
MJesus | clap clap clap clap clap clap clap clap clap clap |
MJesus | clap clap clap clap clap clap clap clap clap clap |
krocz | debian fue victima de este rootkit |
krocz | por eso lo lleve a caso de estudio |
krocz | <Lunguz> krocz: cual es el sentido de eliminar el lkm del kernel?? entiendo que quieres eliminar posibles intrusiones a traves de este medio, pero mi pregunta es en el sentido de: " si es asi, tal vez una buena medida seria cortar el cable" no crees???? |
EMPEROR | krocz: pero tanto como debian puede pasarle a otras tambien cierto? |
krocz | el sentido de eliminar el LKM del kernel |
krocz | es asi evitar |
krocz | que se instalen lkm-rootkit |
krocz | hay modulos |
Lunguz | si ok, eso esta claro |
krocz | que impiden |
krocz | que se instalen modulos |
krocz | posteriores |
Lunguz | pero crees tu que sea una perdida de funcionalidad importante? |
krocz | pero si un atacante de buen nivel |
krocz | detectara como se llama ese modulo |
krocz | y lo bajara |
krocz | y instalara su rootkit lkm |
krocz | <EMPEROR> krocz: pero tanto como debian puede pasarle a otras tambien cierto? |
krocz | si |
krocz | la falla fue de rsync |
krocz | debian fue una victima conocida |
krocz | Lunguz depende |
krocz | por ejemplo |
krocz | yo cuando tengo mi kernel bien compilado |
krocz | que no me falte nada y no piense que agrege nada |
krocz | lo dejo sin lkm |
krocz | ahora por ejemplo una buena idea |
krocz | es dejarlo en los firewall |
krocz | ya que nadie debiera ocupar ese tipo de maquinas |
krocz | para uso comun |
Lunguz | ahh.. ok, el caso de los fw me parece mas adecuado. |
krocz | un Pc de escritorio me parece exagerado dejalo sin LKM |
krocz | pero es el riesgo de la seguridad |
krocz | no se puede tener todo en esta vida |
krocz | :D |
Lunguz | claro, seguridad vs. funcionalidad, hay que asumir los riesgos |
Lunguz | :P |
krocz | ahora no se vayan a matar buscando los PID a mano en el /proc |
krocz | seria buena idea un script |
italix | para que sirve el LKM? ya dije que el nivel era altillo para mi |
italix | en que te basas para quitarlo o no |
krocz | modulos cargables del kernel |
italix | ah |
krocz | son "programas" que puedes cargar que trabajan a nivel de kernel |
italix | si lo desactivas, tendrias que tener todos los modulos que necesitaras a nivel de kernel |
krocz | si italix |
krocz | gracias a todos... |