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!

viernes, 7 de septiembre de 2007

ARP poison practico

Continuamos con la segunda parte del ataque ARP Poison. En este bloque veremos como poner en practica la teoria vista en el primer capitulo.

Vamos a hacer que todo el trafico existente entre dos dispositivos, pase por nuestra maquina y de esta forma podremos analizarlo (o simplemente observarlo lo que nosotros queramos). Con un hub es muy sencillo, ya que solo hay que poner la tarjeta de red en modo monitor, pero cuando estamos conectador a un switch la cosa se complica un poquito (muy poquito) más. Para conseguir nuestro objetivo envenenaremos las tablas ARP de los dispositivos y de esta forma haremos que todo el trafico se dirija hacia nosotros.

Vamos pues a la práctica del ataque!

Existen varios programas que nos permiten hacer un envenenamiento de la cache ARP. Para MS Windows tenemos el famoso Cain & Abel de oxid, que podemos descargar de la web y es totalmente gratuito. Para el otro gran sistema operativo, GNU\Linux, tenemos dos grandes soluciones: ettercap y dentro de la suite dnisff el programa arpsoof (también son gratuitas).

Empezaremos viendo en envenenamiento de ARP en Windows.

Lo primero que haremos será bajarnos la ultima versión del Cain y Abel. Al instalarlo y ejecutarlo si tenemos un antivirus ejecutándose puede que nos de problemas ya que detectará el programa como un troyano. Una vez solucionado este pequeño problema podemos ir a la barra de herramientas principal y darle al botón "Start/Stop Sniffer" para activarlo. Ahora escanearémos la red para saber los dispositivos que están conectados. Esto se hace seleccionando la pestaña "Sniffer" y pulsando el botón "+" que aparecen también en la barra de herramientas. Luego vamos a subpestaña ARP y presionamos el botón + y seleccionamos los dispositivos que queremos envenenar. Si queremos husmear toda la red, seleccionaremos la ip del router que es por donde van a pasar todas las comunicaciones y de esta forma suplantaríamos su identidad. Por último activamos el botón de para envenenar las tabla de ARP (Start/Stop ARP).

Solo un pequeño inciso: esto no es una practica guiada, solo es para que despertar la curiosidad de la gente, luego no pienso incluir imágenes de como imágenes, y si incitar ha investigar un poco para saber exactamente como se hace y que es lo que estamos haciendo ;).

Con esto ya hemos realizado el ataque con éxito. Podremos ver todas las contraseñas y los password de las comunicaciones de los protocolos que no vayan cifrados (que son casi todas).


Ahora le toca el turno a nuestro querido Linux.

Vamos a hacer una pequeña prueba ahora. Primero vamos a ver la tabla ARP que tiene el sistema en este momento. Para ello hacemos en el ordenador victima un "arp -a". Nos mostrara la cache ARP correcta. Una vez finalizado el ataque volveremos a ver la tabla ARP y veremos como esta tabla ha cambiado....

Primero que todo nos bajamos el paquete ettercap con el apt y lo instalamos en modo superusuario. Vamos a realizar ahora un ataque MITM (Man in the middle). Esto significa ponerse entre dos ordenadores para poder ver el tráfico entre ellos dos.

Antes de empezar a jugar con el ettercap tenemos que activar el forwarding para que nuestra maquina actúe como un router y cuando recibamos paquetes que no están destinado a nosotros intente entregarlos al destino correcto. Esto lo hacemos con la instrucción "echo 1 > /proc/sys/net/ipv4/ip_forward". Para hacer esto mismo en Windows (si vemos que el Cain i Abel no funciona) tendremos que ir al registro de windows y en la entrada "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameter" el valor ipenabelrouter lo ponemos a 1. Arrancamos ahora si el ettercap.

Tenemos tres opciones: modo texto, con una interfaz basada en las librerías ncurses y con una interfaz con gtk2. Elegimos por ejemplo, en modo texto (la ventaja de lanzarlo en modo texto es que podríamos ejecutarlo en bakground). Para ello es "ettercap -t q -M arp:remote /ip1/ /ip2/" donde -t quiere decir que lo lanzamos en modo texto, -q que no muestre el contenido capturado, -M el tipo de ataque (man in the middle) y las dos ips que queremos envenenar. Para ver todos los paquetes que circulan por nosotros (que van a ser muchos), ya que vamos en medio de dos ordenadores utilizaremos el sniffer wireshark que es mejor que el que incorpora el ettecap. Si lo activamos podremos ver toda la información que trascurre entre los dos ordenador. Igual que en el Cain i Abel si queremos ver el tráfico de toda red ponemos en la ip2 la ip del router. De esta forma podremos analizar todo el tráfico que circula. Si nos fijamos en la salida del wireshark vemos también como cada cierto tiempo se envían paquetes arp falsos. Ettecap posee muchos plugings y herramientas adicionales que lo hacen más potente. Esta es una buena forma de empezar a descubrir el potencial de ettercap ;).

Recordamos la cache ARP? Si vamos al ordenador víctima, veremos como su cache ha cambiado. Ahora aparece nuestra MAC en lugar de la MAC del dispositivo en cuestión. El ataque ha sido todo un éxito.

Por último no si nos habremos dado cuenta que al hacer un envenenamiento de ARP cuando emitimos un certificado digital no dice algo similar como a la imagen. Pero como la costumbre es hacer clic en aceptar o si sin leer previamente lo que se nos dice, pues en un 99% de los casos este mensaje pasará inadvertido y seguiros sin problemas con el ataque.

Y muchos os preguntareis, cual es la posible solución para este ataque tan tan fácil de hacer? La respuesta es únicamente una: desactivar el uso del ARP en maquinas que se conecten a la vlan y poner las entradas arp estáticas (con el consiguiente aumento de trabaja para el administrador).

Esto ha sido todo por hoy. No he explicado como hacer el ataque en el arpsoof lo dejo como trabajo para vosotros ;).