Alguno recordara la película Jurassic Park cuando el matemático explica que la Teoría del Caos habla sobre la imprevisibilidad de sistemas complejos. O aquel ejemplo que habla del efecto mariposa. Una mariposa que aletea en Japon causa un tsunami en New York.
En la mitología china, el dragon representa el principio del orden,yang, que emerge del caos. En algunos relatos chinos de la creacion, un rayo de luz pura, yin, emerge del caos y construye el cielo. Pero incluso despues de emerger del caos, el yin y el yan aun conservan las caracteristicas de aquel. Un exceso de uno u otro lleva de nuevo al caos.
Hesiodo, escribio la Teogonia, un poema cosmologico que afirma "en el principio fue el caos" y despues la Tierra y todo lo estable.
Una caracteristica distintiva de los sistema estudiados por la teoria del caos es que el comportamiento aperiodico inestable puede encontrarse en sistemas matematicamente simples. Modelos matematicos muy simples y rigurosamente definidos pueden exhibir comportamientos sorprendentementes complejos.
Otra caracteristica distintiva de los sistemas caoticos es su dependencia muy sensible de las condiciones iniciales; cambios que al principio son infinitesimales despues producen cambios mas grandes. Este comportamiento se describe como la firma del caos.
Este video explica muy bien un sistema caotico.
Un ejemplo de la Teoria del Caos en la seguridad informatica, lo podemos ver en este trabajo sobre cryptografia caotica
Pero no es a este tipo de utilizacion del caos al cual me queria referir en este post.
Fuzzing
Fuzz testing o Fuzzing es una tecnica de testing de tipo Black Box, que basicamente consiste en encontrar bugs en implementaciones, usando o injectando datos malformados , semi-maformados o datos "caoticos" de forma automatizada.
El proposito del fuzzing radica en la creencia que hay bugs en cada programa, que esperan a ser descubiertos. Por lo tanto un trabajo sistematico, puede encontrarlos, tarde o temprano.
Esta tecnica fue desarrollada en la Universidad de Wisconsin , Madison en 1989 por el profesor Barton Miller y sus estudiantes. El trabajo puede ser encontrado en el siguiente link http://www.cs.wisc.edu/~bart/fuzz/ ; esta principalmente orientado a fuzzing contra lineas de comando y a interfaces de usuarios y muestra que aun los sistemas operativos actuales son vulnrables a simple fuzzing.
Un fuzzer debe intentar diferentes combinaciones de ataques en :
- numeros (signed/unsigned integers/float...)
- caracteres (urls, command-line inputs)
- metadata : user-input text (id3 tag)
- sequencias binarias
Un metodo es definir una lista de "valores peligrosos conocidos" " (fuzz vectors) para cada tipo e injectarlos o su combinacion.
- Para enteros: cero, negativos o o numeros muy grandes
- Para caracteres: escape , caracteres interpretables ( comas, numeral,...)
- Para binarios: Unos al azar
Veamos una herramienta interesante llamada Webslayer
Webslayer es una herramienta diseñada para realizar ataques de fuerza bruta en aplicaciones web, tambien puede ser utilizada para encontrar recursos no linkeados ( directorios, servlets,scritps ), realizar ataques de fuerza bruta sobre parametros de GET y POSTS, passwords...etc. La herramienta tiene un generador de payloads y un analizador de resultados.
Se pueden realizar los siguientes tipos de ataques:
- Predictable resource locator: it can find directories and scripts based on well known dictionaries, recursion supported
- Login forms brute force
- Session brute force
- Parameter brute force
- Parameter Injection (XSS, SQL, etc)
- Basic and Ntml Bruteforcing
- Encodings: 15 encodings supported
- All parameters attack: the tool will inject the payload in every parameter
- Authentication: supports Ntml and Basic
- Multiple payloads: you can use 2 paylods in different parts
- Proxy support (authentication supported)
- For predictable resource location it has: Recursion, common extensions, non standard code detection
- Multiple filters for improving the performance and for producing cleaner results
- Live filters
- Threads
- Session export
- Integrated browser (webKit)
- Predefined dictionaries for predictable resource location, based on known servers (Thanks to Dark Raver, www.open-labs.org)
Generador de Payloads
Este creo que es una de las herramientas mas poderosas con las que cuenta.
Se pueden cargar payloads de archivos ( por ejemplo diccionarios ) o se puden crear payloads
en forma personalizada.
- Numeric ranges
- User Names
- Credit cards numbers
- Characters blocks
- And wathever you can imagine..
Veamos algunos ejemplos
Predictable resource locator:
- Setear el URL con la palabra FUZZ al final
- Seleccionar el diccionario
- Setear el nivel de recursividad
- Setear el numero de threads
- Setear las extensiones
- Se puede setear si el server responde con otros codigos de error que los reconozca.
- Se puede setear el User-Agent.
- Ejecutar
Login form bruteforce:
Se debe setaer la URL completa a la cual se le hara Bruteforce, en la ventana de Post se debe pegar el contenido de los campos POST.
En este ejemplo tenemos
login=FUZZ&password=FUZ2Z
Se estaran usando dos payloads, para el primero se usara el diccionario de nombres names.txt, para el segundo el archivo common_pass.txt. La cantidad de request estara dada por la multiplicacion de las entradas que tenga cada archivo.
Luego de esto se ejecutara el ataque.
El resultado se vera enla pantalla attacks results
Otras herramientas para Fuzzing
Una lista ( un tanto antigua ) de programas que realizan fuzzing se encuentra en este link
Fuzzers - The ultimate list
Otra lista sacada de un interesante articulo sobre Fuzzing
Tools for web browsers | |
AXman | Active X |
COMbust | Common Object Model |
CSS-Die | Stylesheet support |
DOM-Hanoi | Data Object Model |
Hamachi | DHTML code |
jsparsefuzz | JavaScript |
MangleMe | HTML tags |
Tools for operating systems | |
ISIC | IP stacks |
Sfuzz | Unix sockets |
Stress2 | FreeBSD kernel |
Sysfuzz | syscall() functions |
Tools for network services | |
DHCPfuzz | DHCP clients |
FTPStress | FTP servers |
Fuzzball2 | TCP/IP headers |
IRCfuzz | IRC clients |
Protos | Tool collection for SIP, SNMP, DNS and others |
SSHredder | Collection of mutated SSH packets |
Other tools | |
Mangle | mutates file header |
Bugger | mutates data in the memory of running programs |
CFG9000 | intelligent mutation of unknown input data |
Frameworks | |
Autodafe | Network logs, with runtime analysis |
Bed | Network log, language: Perl |
Peach | universally applicable, language: Python |
Smudge | network logs |
Spike | Network log, language: C |
Spikefile | File formats, language: C |
fuentes :
http://www.owasp.org/index.php/Fuzzing
http://www.edge-security.com/webslayer.php
No comments:
Post a Comment