elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 19:45  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking Avanzado
| | |-+  Hacking Linux/Unix (Moderadores: kamsky, TRICKY, berz3k)
| | | |-+  Atacando la memoria desde Userland. Obteniendo passwords.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Atacando la memoria desde Userland. Obteniendo passwords.  (Leído 1,858 veces)
TRICKY
The "Tricky" ..
Moderador
***
Desconectado Desconectado

Mensajes: 1.605


Ver Perfil
Atacando la memoria desde Userland. Obteniendo passwords.
« en: 29 Agosto 2008, 03:16 »

 Que tal.

 Pues en bugtraq salen muchos bugs.
 Uno de los que he leido, se enfoca en la obtencion de passwords en modo pre-boot; o sea, cuando
 el sistema aun no ha booteado el kernel ( ya sea Linux o Windoze ). Estas passwords a obtener
 son las utilizadas en la BIOS ( via la BIOS API ) y la utilizada en el boot loader ( AKA LILO ).
 Lo que ocurre, es que en modo pre-boot aun no se ha descomprimido el kernel y no se pueden
 usar ninguna de las APIS de este para el manejo de la obtencion y corroboracion de la password.
 Asi que lo que queda es hacer uso de la APIS de la BIOS.
 El problema esta en que los programadores inadvertidos, no flushean las areas de memoria utilizadas
 por dicha API, quedando registradas en memoria dichas passwords para futuras lecturas. Todo esto esta
 mas que resumido, y le podeis echar el vistazo completo en el siguiente documento original:
 http://www.ivizsecurity.com/research/preboot/preboot_whitepaper.pdf

 El caso es que a modo de PoC, os pongo lo siguiente sacado del texto: ( resumido por mi )
 
 Tratad de ponerle password a vuestro LILO boot loader ( en caso de que tengais a LiLo! ). O sea,
 editadlo ( vi /etc/lilo.conf ) y en la imagen del nucleo actual que cargueis, ponedle las password
 que querais ( aniadidle la linea password="la-que-kerais" ). Tras ello, pues haced un /sbin/lilo -v
 Queda claro que para todo esto, sera necesario acceso r00t.
 Ahora, rebootad vuestro PC ( shutdown -t3 -r now, por ejemplo ), y disponeros a cargar la imagen
 del kernel con la password. Cuando os salga el prompt, pues la introduciis y booteais el sistema como
 siempre. Bueno, pues esa password, en las versionas mas recientes de Lilo y antecesoras, quedara
 registrada en una locacion de memoria especifica, locacion que leeremos al bootear el sistema y nos
 dara la password introducida.
 Pues ahora, una vez booteado el sistema, id a una terminal y ( como r00t ) teclead lo siguiente:
 # xxd -l 32 -s 0x041e /dev/mem

 Automagicamente, tendreis la password del boot loader ( Lilo ) por lo citado anteriormente.

 Ahora expongo por que se me hace familiar todo esto. Pues resulta que, hace un tiempo, me imagine
 algo parecido a esto.
 El caso es que en sistemas que utilicen el modulo PAM ( Pluggable Authentication Module -- o algo asi )
 hay maneras intentables para ver, desde memoria ( /dev/mem ) la password de root y de cualquier
 usuario. Esto que comento ahora, es mio y cuando digo mio quiero decir que no lo he leido antes
 en ninguna otra parte. Es una lammerada, pero el caso es exponer ideas no?

 Pues resulta que tengo varios modos en los que se pueden probar para localizar/leer la password de r00t
 y de cualquier user del sistema, siendo utilizado PAM como modulo de autenticacion.
 Esto no quiere decir que no funcione con Distros que no usen PAM..

 El primer comando, trabaja por supuesto en modo terminal y hace uso de /dev/mem:
 # strings /dev/mem | grep -C 2 "^root$" | less

Yo, em mi Red Hat, con este string consigo, ademas de ver la password de r00t, el hash del /etc/shadow,
 Cabe decir que, para hacer brute-force de un user existente, primero podriamos ir viendo que users
 estan el el sistema. Para ello, usariamos la libreria readline asi desde la linea de comandos:
 # ~s[TAB][TAB]  ( o sea, empezariamos el string con ~ seguido de la primera letra del user a probar
 seguido de dos Tabulaciones ).
 Asi, si hubiera users en el sistema llamados sultan, samara y sergio nos saldrian en pantalla.
 Para tratar de lograr la password del user "sultan", podriamos hacer lo siguiente:

 # strings /dev/mem | grep -C 2 "^sultan$" | less

 El segundo intento seria algo como:
 # strings /dev/mem | grep -C 2 "^USER=sultan$"   

 Esto dependera tambien del kernel utilizado, y como no de la distro.
 
 Otro string a probar ( exclusivo para distros con PAM ) es:
 # strings /dev/mem | grep -C 2 "^@/pam$" | less

 Bueno, pues sobra decir que el acceso como r00t es mas que importante, ya que de otra manera no 
 tendremos acceso de lectura a /dev/mem ( ... ).

 Bueno, pues esto por si conseguimos r00t en algun sitio, puede servir para escupir las passwords de
 los users del sistema ( ya.. que si somos r00t pa que queremos esto, que siempre podemos crackear
 /etc/shadow blah blah.. jeje ).

 Saludos y Suerte.


« Última modificación: 4 Septiembre 2008, 16:45 por averno » En línea

"La envidia es una declaración de inferioridad"
Napoleón.
berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.140



Ver Perfil
Re: Atacando la memoria desde Userland. Obteniendo passwords.
« Respuesta #1 en: 29 Agosto 2008, 16:11 »

Habial leido algo del tema hace tiempo:

:http://www.hermann-uwe.de/blog/how-to-dump-your-bios-password-and-lilo-password-as-plain-text

Pero tambien me recuerdo un video donde dumpeaban la memoria RAM consiguiendo passwords y data de un win32, pero no le encuentro la linga :-( , basicamente insertaban un USB o CDlive, dumpleando la RAM, modifcaban la data y entraban sin pass etc, si alguien lo tiene , que me lo postee.

-berz3k.



En línea
TRICKY
The "Tricky" ..
Moderador
***
Desconectado Desconectado

Mensajes: 1.605


Ver Perfil
Re: Atacando la memoria desde Userland. Obteniendo passwords.
« Respuesta #2 en: 29 Agosto 2008, 16:22 »

 Que tal.

 Pues si, algo parecido he estado leyendo. El caso es que estas y muuhas mas cosas
 se pueden hacer con sistemas de pre-booting que utilizan la API de la BIOS para
 sus metodos de autenticacion. El texto que deje solo es una referencia mas!
 
 En cuanto a la lammerada que expuse antes, si alguien ( que lo haya probado )
 pudiera decirme si, buscando los trings expuestos en la memoria ( /dev/mem )
 han conseguido hallar algun password, pues que postee en este mismo hilo
 la Distro usada asi como el tipo de nucleo usado en dicha distro.

 En lo que se basan esos strings es en que puede ser que a menudo, la data se
 quede en memoria sin ser "flusheada"; y que junto a esos strings se hallen los
 strings de las passwords. Por supuesto, no andamos con xxd intentando buscar
 en posiciones determinadas de memoria, si no en la relatividad de que es posible
 encontrar junto a esos strings dichas passwords.
 En definitiva, si algunos strings importantes ( passwords? ) no son flusheados de
 la memoria ( /dev/mem - /dev/kmem ) debidamente, pueden ser hallados
 de alguna manera u otra ( strings, xxd.. ) sin mucho tipo de esfuerzo.

 Suerte!

 /***** MODIFIKO *****/

 Ala.. pues ya ves berz3k, gracias por el texto. Desde el 2006!
 Pues como que a uno se le pasan cosas esenciales como estas, y para colmo
 se entera 2 años despues ( o +, quien sabe ). El caso es que yo le he echado
 cuenta a esto desde hace poco; lo recibi ayer desde bugtraq :__).
« Última modificación: 29 Agosto 2008, 16:30 por averno » En línea

"La envidia es una declaración de inferioridad"
Napoleón.
berz3k
Moderador
***
Desconectado Desconectado

Mensajes: 1.140



Ver Perfil
Re: Atacando la memoria desde Userland. Obteniendo passwords.
« Respuesta #3 en: 29 Agosto 2008, 16:37 »

Aca esta lo que buscaba, revisar videos y tools, bastante buenas diria yo:

:http://citp.princeton.edu/memory/code/

-berzk3.
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines