lunes, abril 23, 2007

Mona Lisa Overdrive

Una vez mas, y tratando de terminar los articulos que ya he comenzado, pero ya estan al salir, vengo para compartir un libro que merece MUCHO la pena ser leido:

Mona Lisa Overdrive de William Gibson.

Sinceramente, es una de las joyas de la literatura CyberPunk, y si quieren leer algo que les parta la cabeza, pues aca tienen dos versiones, una ingles y otra en castellano.



Mona Lisa Overdrive (Ingles)
Mona Lisa Overdrive (Castellano)

Have Fun!
DarkCore Hell

sábado, marzo 31, 2007

Hacking Google Video... Compartimos?

Introduccion:

Estaba yo estepitosamente al pedo en casa, sin nada que hacer, es decir... Muy al pedo...
En eso me acorde que queria buscar algo divertido que ver, considerando la basura que uno suele encontrar en los sistemas P2P, decidi hacer uso de una tool de Google; en este caso GoogleVideo.
Segun parece, GoogleVideo (GV) fue pensado para compartir video en la red, por parte de quien desee hacerlo, esto implicaria ponerlos a DISPOCICION de quien desee verlos.
Basado en este principio, y viendo que la web de GV no me permite bajar nada a mi computadora, decidi bajar el GoogleVideo Player, (GVP) creyendo que esto me permitiria tener una copia de lo que encuentre y me paresca digno de guardar, en mi maquina.
Note, una vez instalado el GVP, que lo que baja este reproductor es nada mas que un archivo que le indica de donde tarer el archivo que va a reporducir, pero para mi sorpresa... NI SIQUIERA LOS TEMPORALES SON LEJIBLES POR OTRAS APLICACIONES!!!.

Mi indigancion, nace de el principio con el cual pense, quizas mal, que habia sido creado GV.
En esta oportunidad, les presento, una forma de bajar los videos, y pasarnos por alto lo que GV decide no mostrarnos, y al contrario de la idea original, decide NO compartir.
Aca va una forma mas de vencer las barreras impuestas por un sistema, llendo un poco mas alla, con el solo fin de poder realmente compartir la informacion.

Have Fun!


Paso 1: Obetener Informacion

Para llegar a este paso, la verdad tube hasta que leer fuente de la pagina de GV, lo que no voy a explicar en esta, pero en fin...
En principio tenemos que hacernos los archivos con extension GVP, que podes bajar de GV cuando reproducis un video y decidis verlo a travez del GVP.
Una vez que tenemos este archivo, tenemos que analizarlo cuidadosamente...
De eso se trata...


Paso 2: Analisis de Archivo

El archivo esta divido en 7 campos. Estos campos estan separados por caracteres 0x0A.
El primer campo contiene informacion acerca de donde podemos obtener el GVP.
El segundo, contiene la version del GVP.
El tercero, tiene la URL desde donde GVP bajara el archivo, generando un temporal en la maquina.
El cuarto campo, el DocumentID, que es el mismo que aparece durante una sesion de video de GV onLine en la URL del browser, es decir, si ustedes estan viendo un video onLine, la URL del browser sera algo como esto:

http://video.google.com/videoplay?docid=-657412366163659

donde la variable "docid", indica a que recurso estan accediendo, entonces en este campo les aparecera algo como esto:

docid=-657412366163659 (0x0A)

En el quinto campo, tenemos la duracion del video, en milisegundos.
En el sexto contiene el titulo del video que aparecera en la barra de titulo del GVP.
Y por utimo, el septimo campo, tiene una breve descripcion del documento.


Paso 3: Y Ahora que?
Una vez que entendimos que datos tenemos en el archivo que nos brinda nuestro amigo GV, podemos tomar la data que se encuentra en el campo numero 3, donde tenemos la URL desde donde GVP bajara el archivo. De esta forma, al ponerla en nuestro browser y darle enter, podremos bajar el archivo.
En lo personal lo hice con la herramienta wget, ya conocida por todos.

Luego de esto, ya podemos ver el video en casa, almacenarlo, y en fin, compartirlo, que de hecho esa era la idea.


Consideraciones Finales.

Estoy profundamente convencido de que esta gente no creo este modo de compartir de forma conciente, es mas... Estoy seguro que deben tener alguna razon tecnologica para hacer este tipo de cosas.
No obstante ello, estoy convencido de que es hora de que nos dejemos de hacer las cosas asi de dificiles, no me parece que tengamos que ponernos en estos predicamentos.
Igualmente me parece que Google es la empresa que mas aporta a los usuarios de material onLine, al contrario de muchas otras, que en su afan de crear sitios donde compartir, hacen de ello mas una version HiTech del Faccismo, que una forma mas comoda de compartir, y ya sabemos de que empresa de desarrollo de Ventanas me refiero. JA!

Be happy!
DarkCore Hell

sábado, marzo 24, 2007

FreeBSD Jail Experience (Parte Uno)

Introduccion:
En este experimento trataremos de descubrir si es posible detectar una que una maquina es en realidad un jail, a partir de solo estar logueados en la misma.
Este experimento nos permitira determinar si la utilizacion de jails es segura.
Vamos a proceder en primer lugar a configurar un ambiente JAILed, y luego desde afuera, nos loguearemos mediante SSH, y trataremos de descubrir con algunos programitas muy sencillos donde es que estamos, o que es que estamos.
Vamos a ver que sale de todo esto...
Have FUN!!!


Configuracion Inicial:
La experiencia sera realizada sobre un VM Ware 5.0.0 build 13124, en una estacion de trabajo Intel Core DUO 1.8 Ghz, 1Gb de RAM. La configuracion de la VM es de 256 Mb de VRAM, lectora conpartida de DVD-RW. Un VDisk montado cuya particion / es de 5.5Gb, y otro VDisk montado en /mnt cuya particion es de 7.9Gb.
La version de FreeBSD utilizada para esto es: FreeBSD 6.1-RELEASE GENERIC i386.
Dicho FreeBSD, se lo esta accediendo en una private network entre la maquina real y el VM Ware, donde el FreeBSD se encuentra en la direccion 192.168.0.3, y tenemos como gateway a la maquina real en 192.168.0.1, asi las cosas...
Esto es lo conserniente a la maquina host del VM Ware, y la VM host del FreeBSD donde realizaremos las pruebas.


Configuracion del Jail:
El jail fue hecho en un espacio de disco asignado del segundo VDisk, y se ralizo de la siguiente manera, consultar jail(8) de las paginas man,
# mkdir /mnt/JAILS/jail_vm1
# set JAILED=/mnt/JAILS/jail_vm1
# cd /usr/src
# make world DESTDIR=$JAILED
# make distribution DESTDIR=$JAILED
# mount_devfs devfs $JAILED/dev

Con esos comandos damos los primeros seteos y armamos el jail_fs que vamos a necesitar para nuestro sistema.
Una vez realizados estos pasos, pasaremos entonces a configurar nuestro entorno.
Veamos, en primer lugar para que este pueda ponerse a disposicion en la red deberemos de defiir una IP alias para nuestra jail, con el siguiente comando.
# ifconfig lnc0 inet 192.168.0.20 netmask 255.255.255.0
Podemos tambien poner esto dentro de /etc/rc.conf de nuestro sistema base, pero por el momento esto lo definiremos como una tarea local en /etc/rc.local, y no como parte de nuestra configuracion.
Una vez hecho esto, debemos montar el sistema de archivos para los procesos, asi:

# mount -t procfs proc $JAILED

Y finalmente, podemos hacer una copia de la base de datos de usuarios de nuestro sistema, para poder asegurarnos una entrada para acciones administrativas posteriores.
Para hacer esto hagamos una copia, como sigue, de los archivos necesarios.
# cd /etc
# cp group passwd pwd.db passwd.bak spwd.db $JAILED/etc
Terminado l proceso de seteo inicial, finalmente podemos levantar nuestra jail, con el siguinete comando:

# jail $JAILED bsd.jvm1.com 192.160.0.20 /bin/sh /etc/rc
Lo que veremos a continuacion de esto es algo como lo que sigue:

Loading configuration files.
Setting hostname: bsd.jvm1.com.
Generating nsswitch.conf.
Generating host.conf.
Creating and/or trimming log files:.
ln: /dev/log: Operation not permitted
Starting syslogd.
ELF ldconfig path: /lib /usr/lib /usr/lib/compat
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout
Starting local daemons:.
Updating motd.
/etc/rc: WARNING: Setting entropy source to blocking mode.
====================================================
Type a full screenful of random junk to unblock
it and remember to finish with . This will
timeout in 300 seconds, but waiting for
the timeout without typing junk may make the
entropy source deliver predictable output.

Just hit for fast+insecure startup.
====================================================
kern.random.sys.seeded: 1

Generating public/private rsa1 key pair.
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
5d:e1:de:d4:31:45:66:3f:d9:7d:1f:d5:26:36:15:a4 root@bsd.jvm1.com
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
d0:57:c4:c4:9a:a3:cf:ce:7a:6c:bd:dd:7b:d0:6f:16 root@bsd.jvm1.com
Generating public/private rsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
ed:35:d9:5b:8a:c3:41:5e:81:c8:31:3f:b7:04:f3:b5 root@bsd.jvm1.com
Starting sshd.
Starting cron.
Local package initialization:.

Sun Mar 25 02:45:48 UTC 2007


Lo que nos indicara al fin que la JAIL esta funcionando y lista para ser probada, podemos entonces logonearnos bien desde la misma consola con el comando ssh, o bien desde afuera de la VM de VMWare, que seria lo mas correcto.
Vale la pena destacar que dentro del jail, al que ahora llamaremos como indica su hostname, JVM1, todo es como en una maquina normal, de hecho tenemos varios archivos de los que al menos seria recomendable tener unas copias vaciar, lo que veremos en el proximos apartado.

En el caso de la configuracion, tenemos que poner especia atencion a los seteos previo o si permitiremos que se hagan una vez arrancado el jail.
En lo personal, creo que una politica mas rigida seria de mucha ayuda, y preferiria dejar que los seteos de nombres del jail se hagan fuera de este y no permitir que se tenga acceso al hardware jailed desde este.



Procedimientos Iniciales: I feel safe in the jail!!!
Para loguearnos desde fuera del VM Ware, debemos apuntar a la direccion de ip 192.168.0.20, que la que le hemos definido al JVM1.
Lo primero que notamos es que es identico a un FreeBSD normal, pero tiene muchas fallas que nos darian la pauta de un jailed a primera vista, lo que no nos conviene.
Antes comenzar la experiencia vamos a tener que aplicar las politicas de seguridad habituales para estos juguetes de kernel.
En primer lugar no debemos permitir que se hagan seteos dentro de la jail, eso se puede controlar desde la variable
    security.jail.set_hostname_allowed: 0
almacenada en el archivo $JAILED/etc/sysctrl.conf. Otra de las variables que deberiamos bloquear es:

security.jail.allow_raw_sockets: 0

La que tambien se encuentra dentro del mismo archivo seria conveniente que podamos mantenerla quiera si desemos limitar las acciones de los usuarios.
Una cosa mas, lo cual se descuritira en la proxima entrega, que es, podemos reconocer los procesos que correr dentro del jail sin tener que estar dentro de este ambito por que podemos reconocer en la columna de estado una "J" mayuscula.

Finalmente, debemos decidir que es lo que montaremos en el jail, en esta ocacion, y por ser una tarea mas que apacionante, veremos como montar un Apache, pero en este caso a diferencia de mi articulo Montando una Red BSD con VM-Ware(tm) , en este caso hare especial incapie en la serguridad del apache.


Montando un Apache Server: Secure Web Jailed
Para mas informacion sobre apache, dirigirse a httpd.apache.org, donde encontraran toda la ayuda, o mas de la que voy a publicar sobre el mismo, al menos en esta ocacion.
Habiendo procedido con la instalacion estandar, segun indica el manual de instalacion de Apache, en su version mas simplista, tenemos varias cosas para sacarle al Apache antes de ponerlo a funsionar.
Lo primero que vamos a pensar es "Para que quiero este Apache?", la respuesta a esta pregunta nos lleva automativamente a quitar todos los modulos que no vayamos a usar y a optimar lo mejor posible el uso de este. Podemos visitar Apache Tuning para mas informacion.

Conviene tener en cuenta los accesos por htpaswd file bien resguardados, no pensemos en este server como un sevidor para montar grandes proyectos, tengamos en cuenta que si tenemos varias de estas jail, vamos a tener asi mismo varios servicios corriendo de mas, no solo los del host, sino ademas algunas copias jailed, de varios procesos necesarios.

A primera vista, veremos que acceder a nuestro Apache Jailed, en la direccion 192.168.0.20 de nuestro jailed machine, es todo normal, y de hecho, si logramos corromper el Apache a drede, como por ejemplo escribiendo algu CGI que nos muestre el sistema de achivo, o al gun backDoOr de ejecucion web, veremos que en lo absoluto notamos diferencia con otro sistema.


Consideraciones Finales: mmmmm...
Como veremos en la proxima entrega, cuando tenemos una cuenta shell, todo cambia, pero tenemos varias formas de prevenirnos, aun dando el root del jail a quien sea, pero ojo!!!
No hay que confiarse por que, todo tiene su trampa.

Nos queda entonces ver, como se vera esto desde una cuenta shell, como prevenir que las cuentas de usuarios limitados puedan ver, entre otras cosas, los procesos que no les pertenecen, y hasta poder hacer esto con root.

Hasta la proxima...

D4rkCore Hell

jueves, marzo 22, 2007

Vulnerabilidades del Dia

Vulnerabilidades del dia... O al menos las que considero peligrosas.
S eñores hay un monton de paginas llenas de fuentes para poder testear las mismas.
Aqui les paso los problemas como aparecen el SecurityFocus.com, depues lo demas queda por
cuenta de ustedes. Bye...

En mi caso, solo pude observar la de JS IFRAME, y la verdad que puede convertirse en un problema severo, mas que nada en pequeñas empresas donde vamos a encontrar varios productos mozilla.

Saludos.
D4rkCore Hell