miércoles, 19 de septiembre de 2007

Phrack ha vuelto!

La mítica revista Phrack (PHRehacker-hACK) ha vuelto a sacar un nuevo numero a la luz.
Exactamente el 64.
Editada desde 1985, esta revista (las mas popular seguramente del mundo hablando de temas de seguridad) publicó su último numero hace ya dos años (el numero 63 de la revista).
Para los que no sepan de que va todo este rollo, hay que decir que Phrack Magazine es una revista que se distribuye en ingles, es gratuita y abarca temas como: sistemas operativos, redes, telefonía y casi qualquier tema que abarque el mundo de la informática y su seguridad.
Pues bien, después de que en un principio "The Circle of the lost hackers" dediciera no publicar
ninguna noticia más, ahora aparece un numero más (espectacular!).
Aquí os dejo el índice:

0×01 Introduction The Circle of Lost Hackers
0×02 Phrack Prophile of the new editors The Circle of Lost Hackers
0×03 Phrack World News The Circle of Lost Hackers
0×04 A brief history of the Underground scene The Circle of Lost Hackers
0×05 Hijacking RDS TMC traffic information signal lcars
danbia
0×06 Attacking the Core: Kernel Exploitation Notes twiz
sgrakkyu
0×07 The revolution will be on YouTube gladio
0×08 Automated vulnerability auditing in machine code Tyler Durden
0×09 The use of set_head to defeat the wilderness g463
0×0a Cryptanalysis of DPA-128 sysk
0×0b Mac OS X Wars - A XNU Hope nemo
0×0c Hacking deeper in the system scythale
0×0d The art of exploitation: Autopsy of cvsxpl Ac1dB1tch3z
0×0e Know your enemy: Facing the cops Lance
0×0f Blind TCP/IP hijacking is still alive Lkm
0×10 Hacking your brain: The projection of consciousness keptune
0×11 International scenes Various

La pagina web principal de la revista es la siguiente: http://www.phrack.org

God save phrack!

lunes, 17 de septiembre de 2007

El sistema de archivos /proc

Muchos serán los que ven en su sistema raíz un montón de carpetas, con nombres un tanto extraños, las cuales no se saben para que se utilizan. Dentro de esta categoría estaría la carpeta /proc. Vamos a ponerle un poco de luz a esta oscura carpeta que muy pocas veces visitamos y que puede sernos de gran utilidad.Todo sistema debería ofrecer un servicio para saber que esta ocurriendo dentro del propio sistema, así como fijar algunos parámetros operacionales. En MS Windows tenemos el registro del sistema que hasta cierto punto cumple con dichas expectativas. Pero en el sistema GNU\Linux tenemos una potente sistema de archivos virtuales que es sistema /proc. Como sabemos en linux todo son archivos y procesos. Todo se guarda en archivos. Los mas comunes son los archivos de texto y los binarios, pero el sistema /proc entra en otro grupo de archivos que se denominan archivos virtuales (mas adelante veremos porque es esto así). Es por eso que decimos que /proc es un sistema de archivos virtuales.

Como sabemos el núcleo de Linux es el elemento clave del sistema, por lo tanto es importante que exista un método para intercambiar información con el. Debido a esto se creo el sistema de fichero /proc, que mejoraba la comunicación entre los usuarios y el núcleo de Linux.
En principio este sistema fue diseñado para permitir un fácil acceso a la información sobre procesos (de aquí viene su nombre), pero ahora es utilizado por cualquier elemento del núcleo que tiene algo interesante que informar.
Dentro de este directorio /proc podemos encontrar una gran cantidad de información, con muchos detalles (mas de los que nos esperaríamos), sobre el hardware del sistema y también sobre casi cualquier proceso que se esté ejecutando actualmente. Por ejemplo en /proc/modules encontraremos la lista de los módulos que tenemos instalados, mientras que en /proc/cpuinfo encontraremos información acerca del micro.
El directorio /proc/ tiene una jerarquía de fácil lectura para porder encontrar fácilmente la información que buscamos. Además, todos los archivos que contienen información referente a temas semejantes están agrupados juntos. Algunos de los archivos interesantes que aparecen dentro de este sistema de archivos son:

  • /proc/meminfo tiene estadísticas de uso de la memoria
  • /proc/cpuinfo contiene información sobre el procesador
  • /proc/sys/net/ipv4 nos muestran información sobre la pila del sistema
  • /proc/interrupts Uso de IRQ de su sistema
  • /proc/iomem Mapa actual de la memoria del sistema para diversos dispositivos.
  • /proc/pci Dispositivos PCI conocidos en el sistema
  • /proc/version Nos muestra la version del núcleo que esta instalado, así como la hora y la fecha en la que compilo
  • /proc/dev/net Info acerca de los dispositivos de red
  • /proc/net/arp Tabla ARP del sistema
  • /proc/sys/net/ipv4 parámetros de la pila TCP/IP
  • /proc/modules Muestra los módulos que tenemos instalados
  • /proc/ide/ información de los dispositivos IDE
  • /proc/scsi/ información de los dispositivos SCSI

Puede que muchos hayáis observado que existen algunos archivos de 0 bytes. Esto es debido a lo que habíamos dicho al principio: el sistema de archivos /proc es virtual, no existe realmente en el disco. Por ejemplo cuando hacemos un cat para leer un archivo en /proc/cpuinfo este es de 0 bytes. El contenido de ese archivo se genera de forma dinámica por medio de un programa que se encuentra en el núcleo y se nos muestra a nosotros por pantalla. Cabe destacar que el sistema de archivos /proc al ser un sistema virtual, los cambios que hagamos a los ajustes predeterminados no sobreviven a los reinicios. Para hacer que los cambios permanezcan al reinicio deberíamos de modificar los scripts de inicio o utilizar una herramienta que haga esto por nosotros, como podría ser sysctl (que ajusta parámetros que están bajo el directorio /proc/sys).
Además de la posibilidad de que el sistema nos de información a nosotros, nosotros también podemos pasarle información al núcleo. Si hemos sido observadores, habremos visto que alguno archivos son de solo lectura, mientras que otros son de lectura/escritura (por ejemplo en /proc/sys/net/ipv4). En este caso podremos modificar algunos de los datos al vuelo. Es bien conocida la modificación del fichero /proc/sys/net/ipv4/ip_forward para que nuestro ordenador haga de enrutador.Por ultimo decir que el sistema /proc (también llamado procfs) se monta generalmente en el sistema raiz (/proc) durante el arranque del equipo. Si vamos al fichero /etc/fstab veremos como en la primera línea se monta el sistema virtual. En caso de que no existiera tal línea habría que agregarla para que el sistema monte de forma automática el sistema cada vez que se inicie el sistema. De todas formas el procfs viene configurado actualmente en la mayoría de los núcleos por omisión. Si no tienes el procfs en su núcleo, al intentar montarlo obtendrá un mensaje como este: mount: "fs type procfs not supported by kernel". Si nos apareciera dicho mensaje habría que recompilar en kernel añadiendo el soporte para el sistema de archivos procfs.

Espero que este pequeño manual os sirva de ayuda.
Un saludo!

sábado, 15 de septiembre de 2007

Form Tampering: Manipulando la verdad

Hace tiempo que no posteaba, y para que KrAmOx no se me mosquee me voy a poner manos a la obra, ya he terminado exámenes y trabajo, así que espero poder tener mas tiempo para escribir… aunque en breve os quiero dar una sorpresita ;)

El tema de hoy es ni más ni menos que una de las vulnerabilidades mas extendidas en la programación web, el Form Tampering.

Básicamente consiste en manipular el contenido de los campos de un formulario antes de ser enviado. Muchos pensareis…”pues vaya utilidad, si quiero cambiarlo, lo hago antes…” y sí, tenéis razón, pero bueno, haremos un pequeño repaso a la historia para que veáis porque puede ser interesante.

La programación de páginas web dinámicas mediante PHP y bases de datos es algo relativamente moderno. PHP nació en 1995, y hasta hoy han pasado 12 años (que es mucho hablando en términos informáticos), pero eso no implica que desde ese año todo hayan sido webs dinámicas.
La programación de webs dinámicas es muy interesante para, por ejemplo, el desarrollo de comercios electrónicos, pudiendo ofrecer a cada cliente una tarifa de precios ajustada y obtenida a través de una base de datos. Permite el uso de sesiones de usuario, por lo cual puede haber varios usuarios haciendo uso de la misma web de comercio sin interferir uno con el otro.

Todo esto esta muy bien… pero claro! Antes de 1995 la gente ya vendía a través de Internet! y muchos mas lo hicieron después mediante paginas web estáticas… puro HTML y JavaScript…
La diferencia estribaba en que no podían obtener los precios de los productos ni las tarifas personalizadas de una base de datos, por lo que eran paginas mas bien genéricas.

Como los precios no se podían obtener de una base de datos y a su vez, tenían que estar en el formulario que se enviaba para el pedido muchos webmasters optaron por utilizar campos ocultos para evitar que la gente pudiera modificarlos, y con ello “ajustarse” su propia tarifa.

OJO! No quiero decir con esto que las paginas dinámicas estén exentas de este tipo de ataque! Pueden ser igual de vulnerables si no se toman las medidas adecuadas. Lo más importante es recordar que nunca debemos coger el valor de un campo del formulario si lo podemos obtener de la base de datos, porque todos los campos son sensibles de ser modificados, pero no la base de datos…

Existen una serie de programas llamados Interceptores HTML que nos permiten modificar las cabeceras, los campos pasados con GET y POST… antes de mandarse definitivamente, lo cual nos sitúa en una posición ventajosa.
Algunos de estos programas son Achilles, Odysseus… cada cual a su gusto, pero yo quiero destacar una herramienta que sirve para este y muchos mas fines:
La Firefox webdeveloper:

Mediante esta sencilla barra podemos mostrar el contenido de los campos ocultos, remover maximos permitidos, desbloquear campos de solo lectura, observar la disposicion de las tablas.... TODO.

Si hacemos como en la imagen:
Mostraremos los campos ocultos y obtendremos información de todos los campos de un formulario. A partir de ahi modificar su valor es cosa de niños:


En este ejemplo podemos modificar la referencia del producto, poniendo la de uno mas caro y pagando un precio inferior...

Este tipo de fallos deben ser reportados lo mas breve posible para evitar que alguien haga uso de ellos, y son bastante comunes.

A partir de aquí os recomiendo que os familiaricéis mas con la Webdeveloper y exprimáis sus capacidades, por ejemplo, remover máximos permitidos es de gran ayuda para intentar inyecciones SQL, convertir métodos puede venir bien para depurar paginas en desarrollo, porque ante todo, esto es una herramienta para desarrollo de webs.... o no? ;)

Salu2!