Rompiendo la privacidad utilizando la memoria RAM

En el siguiente texto vengo a romper una de las “normas” que desde siempre se han tomado como correctas en el término de la informática.

¿Que se SUPONE que es la memoria RAM?

Cuando hablamos de memoria RAM, desde la informática básica se dice de ella que es una memoria volátil, que al apagar el equipo toda la información almacenada en ella es borrada completamente. Esto no es 100% cierto, porque realmente, se ha desmotrado con estudios recientes que, los datos en la memoria RAM permanecen cierto tiempo antes de que sean borrados de dicha memoria. Alredededor de unos 10 minutos quedan los datos en la memoria RAM.

¿Que ocurre si conseguimos leer estos datos?

Esto seria un gran problema para nosotros (si somos la victima en este caso) ya qué, la memoria RAM no va encriptada y por esta pasan TODOS los datos que nosotros introducimos contraseñas y demás.

Ya pero…. ¿Si la información solo se mantiene unos 10 minutos en dicha memoria? En este tiempo no podemos hacer nada.

Bien, en este punto vamos a basarnos de nuevo en las investigaciones y pruebas que se han realizado. Dichos estudios afirman que si enfriamos la memoria RAM en cuestión a unos -50º, podemos conseguir alargar la vida de estos datos en dicha memoria.


¿Como conseguimos esto?

Utilizando sprays de aire durante varios segundos o minutos pueden ayudarnos a conseguir nuestro objetivo (Dejando la memoria alrededor de (-50º). Podemos alargar la vida de estos datos con este método unos 30 minutos apróximadamente (suficiente para hacer el volcado de una memoria de 2/4GB. En dichos estudios se ha llegado a alargar la vida de los datos más de una hora, con nitrógeno liquido, alcanzado la memoria una temperatura de (-196º).

Sprays de aire: utilizados para eliminar por ejemplo, el polvo del interior de los ordenadores.

¿Como volcamos el contenido de la RAM al disco?

Con Linux como no. Como todo en linux es un fichero, la memoria RAM en este caso es /dev/mem y utilizando dd podemos volcar los datos de esta a nuestro disco duro:

dd if=/dev/mem of=/root/memory.dd

Empezara la lectura sector por sector de la memoria y se irá haciendo la copia a nuestro disco duro en el directorio /root/ con nombre memory.dd.

(Para conseguir mayor información y evitar la sobreescritura de la memoria RAM, podriamos utilizar los siguientes metodos:

– Arrancar un sistema gnu/linux desde PXE (mediante RED), y arrancar dd desde este.

– Iniciar un pequeño entorno gnu/linux desde una memoria usb. (Sin utilizar RAMDISK).

Atención: Para esto no podriamos arrancar desde un live cd, ya que este, para no escribir en nuestro disco duro, lo que hace es escribir en la memoria RAM y esto haría que perdieramos los datos que tanto nos interesan.

Trabajando con los datos ya volcados en el disco.

Una vez hemos conseguido volcar los datos con cualquiera de los metodos anteriormente citados, vamos a proceder a leer los datos..

Leyendo datos..

En Linux podemos transformar a strings datos binarios con el comando ‘strings’, se utilizaria de la siguiente forma:

strings /root/memory.dd

Un extracto de lo que seria la visualizacion de estos datos con strings:

Con la ayuda de ‘strings’, pipes (|) y grep podemos buscar contenido más especifico.

Tambien podemos optar por visualizar este contenido con hexdump para la visualización de contenido hexádecimal:

Un ejemplo generico de la representación de hexdump:

Con este proceso, podemos obtener información muy ámplia, passwords y demás información confidencial que se nos representara con texto plano (strings) o en código hexádecimal (hexdump).

Una tarea muy valiosa si estamos atacando un pc de forma fisica y no podemos por ninguno de los medios acceder al sistema operativo.

Si tienen cualquier duda al respecto no duden en comentar.

Saludos.

Att.ZaPa

Share

Ataques XSS. ¿Que es? ¿Para que sirve?

Hola.

Voy a publicar este documento para que puedan comprender los 2 articulos posteriores.

– XSS en la página web de la universidad de Murcia (um.es)
– XSS en la página web de la universidad de elche (uhm.es)

Este árticulo va dirigido a la gente que…..

No conoce XSS.
Conoce XSS y creen que no sirve para nada.

A esas 2 tipos de personas les digo….Sigan leyendo…

¿Que es XSS?

El término XSS viene heredado de CSS, a este, se le cambió la C por una X para referirse a este tipo de ataques, inyección de código.

Tipos de ataque XSS.

– Persistente
– Reflejado.

Persistente, como bien da entender el término es la inyección que queda en un sitio, como puede ser, una inyección a traves de un libro de visitas de una página web. Esa inyección quedará hay para cualquier usuario que entre a ese libro de visitas. [[ Petición POST. ]]

Reflejado: Este ataque solo quedará reflejado en la URL, no quedaran grabados los cambios en la página web… [[ Petición GET]]



Se preguntaran…¿El reflejado entonces para que sirve, si no queda grabado? Mayoritariamente se utiliza para utilizar sesiones (cookies)..Sigan leyendo..

¿Que tipos de inyección podemos conseguir?

– Inyección de código HTML
– Inyección de código Javascript / Ajax ( el más peligroso )

¿Que permite la inyeccion de código javascript?

1 – Mostrar en ese momento lo que se quiera a cualquier visitante que visite nuestro recurso.

– Atacar a otras páginas web desde la web vulnerable a XSS.

– Infección de máquinas clientes al entrar a dicho en lace.

– Robo de sesiones. (Para mí el más importante).

– Y un largo etc que no termina mientras tengamos suficiente imaginación.

¿ Que es una sesión ?

Una sesión es un fichero que se almacena en la carpeta /tmp/ del servidor con nombre aleatorio que asigna el servidor a una sesión establecida.
Por ejemplo: Si entramos a www.ejemplo.com/admin.php y nos logeamos como administrador, esta, al utilizar cookies, para que no tener que introducir una y otra vez los datos cada vez accedemos hay, recuerda estos datos introducidos. Nos crea una sesión con nombre

¿Como recuerda estos datos?

Con las sesiones. Una vez introducidos los datos correctamente y logeados como administrador, el servidor establece una combinación de numeros y letras aleatorias, la cual, hace referencia a esa sesión. Si, a la sesión de administrador. (imaginemos que es 123456789aabcc)

¿Que significa esto?

Que si conseguimos obtener ese numero de sesión (123456789aabcc), tendremos acceso al panel de administración, sin introducir ni usuario ni password…

Esto no seria por tiempo ilimitado, tiene un tiempo limite y depende de cuanto tiempo se haya establecido como limite.
Normalmente son 3600s.

¿Como obtenemos el numero de sesión?

Con la ayuda de javascript. Sabemos o deberiamos saber que cada sitio solo puede acceder a los valores de cookie de ese sitio, es decir, www.sitio1.com, no puede mostrar los valores de la cookie de www.sitio2.com.

Entonces, si encontramos la forma de inyectar código javascript en www.sitio1.com podremos obtener la sesión sin problemas.

Esto se logra pasando el valor de document.cookie (cookie actual) por GET a un script php nuestro que tengamos alojado en otro servidor.
Este script, al leer el valor por GET de la cookie, la podrá almacenar en un fichero de texto, base de datos o donde se prefiera.
También es preferible mandar el contenido de la cookie por email o incluso algún aviso por sms si cabe la posibilidad, ya que, como he comentado arriba, la sesión tiene un tiempo limite. Estará activa mientras no haya alcanzando el limite de segundos o el usuario no haya pulsado expresamente el boton salir del interior de la aplicación web. (Por ejemplo de un panel de administración).

(Si cierra el navegador tal cual, sin pulsar en SALIR, no se eliminará la sesión, con lo que, quedará activa hasta X segundos).

Espero haberme explicado correctamente.
Nos vemos en los siguientes árticulos.
Saludos.

ZaPa.

Share