Showing posts with label criptografia. Show all posts
Showing posts with label criptografia. Show all posts

Sunday, December 14, 2008

Materia Oscura - Tamperprofing en Host Secure Module

En general cuando se habla de medidas de seguridad fisica, nos vienen a la mente la biometria, los circuitos cerrados de video, los dispositivos de on-time password, es decir equipos o dispositivos que vemos en peliculas o que tienen publicidad algun tipo de atencion en los medios.

Pero hay otros dispositivos que no son tan publicos y que hacemos uso a diario, estos son los HSM.

Esta la definicion de Wikipedia "Un HSM es un dispositivo criptográfico basado en hardware que genera, almacena y protege claves criptográficas y suele aportar aceleración hardware para operaciones criptográficas. Estos dispositivos pueden tener conectividad SCSI / IP u otras y aportar funcionalidad criptográfica de clave pública (PKI) de alto rendimiento que se efectúa dentro del propio hardware."

Estos dispositivos tiene medidas de seguridad antitampering muy avanzadas, son equipos utilizados en el campo militar y de transacciones comerciales como tarjetas de credito.
Cuando hacemos una compra con tarjeta, nuestro PIN es validado contra uno de estos equipos, los cuales desencriptan el PIN y lo validan contra el almacenado.

Los HSM los hay fisicos y logicos, pero en las aplicaciones criticas donde se necesite velocidad de procesamiento y las llaves de seguridad deben resguardarse celosamente, se utilizan los fisicos.

Este es el HSM Thales 8000


A medida que los codigos de encripcion fueron evolucionando la necesidad de preservalos fue evolucionando.

Con la aparicion de los sistemas multiusuario se vio la necesidad de preservar de los usuarios los codigos de seguridad, para esto se crearom los modulos autonomos de seguridad.

Basicamente consistian en el chip dentro de una caja de metal, la cual una vez abierta cortaba la energia con lo cual se borraba la informacion.

Esto por supuesto podia ser facilmente burlado, perforando el metal y viendo el dibujo de los circuitos.

Entonces la proxima evolucion fue llenar las cajas con resina epoxy, de esta manera si el equipo era violado, se veria a simple vista.

De todas maneras esto no protegia las claves ya que una persona con acceso al equipo, podia quitar la resina con un cuchillo y utilizar una analizador para ver en los bus del microprocesador como estaba formada la llave, algo que en el caso de RSA y DES es posible realizar.

Para evitar esto IBM creo un dispostivo antitampering consistente en un cable alrededor del procesador el cual si era dañado borraba la informacion.

En los equipos actuales esto se ve mejorado, grabando diferentes patrones de proteccion para eludir su desactivacion.

Otro ataque al cual se pueden ver expuestos los chips son en el caso de mantener la informacion en un solo lugar de la memoria, para evitar esto actualmente la informacion es movida de lugar en la memoria como en la salvapantallas de las PC's.
Incluso para protegerse de los ataques que consisten en bajar la temperatura de las memorias a menos de- 20 grados centrigrados para que no pierdan la informacion, los HSM detectan variaciones de temperatura y borran la informacion, otra proteccion que poseen es contra inspecciones de rayos X, para lo cual tienen sensores de radiacion.


Por supuesto que toda esta tecnologia de proteccion depende 100% de las politicas y procedimientos de seguridad.

Equipos con los cuales trabaje tienen tres tarjetas smart cards, las cuales estan en poder de tres personas diferentes, con una password por persona, para realizar el mantenimiento ( por ej. creacion de llaves ) se necesita la presencia de las tres personas, y un auditor quienes verificara que los procedimientos son seguidos correctamente.

Para activar los equipos se tienen dos llaves, las cuales se deben girar para cambiar el estado del equipo a modo de mantenimiento.

Si bien lo que se ve en la pelicula juegos de guerra no es lo que aca planteo, se puede tener una idea del procedimiento para activar un HSM. ( Dos personas como minimo, una llave en poder de cada una, codigos por separado )



Por supuesto el eslabon debil en la operacion fue el ser humano, tanto en esa parte de la pelicula, como durante todo el transcurso de la misma.

En los HSM tambien es la misma historia.

fuentes : http://www.cl.cam.ac.uk/~rnc1/descrack/ibm4758.html

Monday, November 24, 2008

El caos en la Seguridad Informatica.

Un poco de historia

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.

Tipos de ataques

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
Algunos de sus features son:
  • 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:

  1. Setear el URL con la palabra FUZZ al final
  2. Seleccionar el diccionario
  3. Setear el nivel de recursividad
  4. Setear el numero de threads
  5. Setear las extensiones
  6. Se puede setear si el server responde con otros codigos de error que los reconozca.
  7. Se puede setear el User-Agent.
  8. 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
AXmanActive X
COMbustCommon Object Model
CSS-DieStylesheet support
DOM-HanoiData Object Model
HamachiDHTML code
jsparsefuzzJavaScript
MangleMeHTML tags
Tools for operating systems
ISICIP stacks
SfuzzUnix sockets
Stress2FreeBSD kernel
Sysfuzzsyscall() functions
Tools for network services
DHCPfuzzDHCP clients
FTPStressFTP servers
Fuzzball2TCP/IP headers
IRCfuzzIRC clients
ProtosTool collection for SIP, SNMP, DNS and others
SSHredderCollection of mutated SSH packets
Other tools
Manglemutates file header
Buggermutates data in the memory of running programs
CFG9000intelligent mutation of unknown input data
Frameworks
AutodafeNetwork logs, with runtime analysis
BedNetwork log, language: Perl
Peachuniversally applicable, language: Python
Smudgenetwork logs
SpikeNetwork log, language: C
SpikefileFile formats, language: C

fuentes :

http://www.owasp.org/index.php/Fuzzing

http://www.edge-security.com/webslayer.php