Feeds:
Entradas
Comentarios

Posts Tagged ‘fuerza bruta’

La mejor contraseña es aquella más larga

Este mito, sorprendentemente extendido, no es completamente falso, sino que se trata de una verdad a medias. Por supuesto, conviene dejar claro desde un principio que “mejor“, para el contexto que nos ocupa, quiere decir “más segura“; pues podríamos definir otras métricas para establecer la calidad: más fácil de recordar, más graciosa

Por supuesto, es obvio que la mejor contraseña, desde el punto de vista de la seguridad, es aquella que resulta más complicada de romper, violar, obtener de forma fraudulenta, etc. Lo cual nos lleva a otra cuestión: ¿cómo se rompen las contraseñas?

Como caso general, podemos decir que mediante los denominados ataques de fuerza bruta. Cuando éstos se realizan sobre el conjunto de todas las posibles contraseñas, se denominan simplemente ataques de fuerza bruta. Cuando, por contra, se realizan sobre un conjunto definido de pruebas, se denominan ataques mediante diccionario. Así, podemos decir que un ataque mediante diccionario es un caso particular de un ataque de fuerza bruta. A su vez, existen casos particulares de ataques mediante diccionario, cuando la generación del diccionario de ataque se lleva a cabo mediante técnicas concretas, como los generadores de Markov, o la utilización de máscaras o expresiones regulares de generación.

También existen otros casos particulares de los ataques de fuerza bruta, pero diferentes de los ataques mediante diccionario. Un ejemplo sería la utilización de tablas hash precalculadas, como por ejemplo las famosas tablas Rainbow.

Sea como fuere, al final, el ataque suele consistir en probar todas las posibilidades de un conjunto dado, que normalmente es generado mediante algún algoritmo. Además, el ataque puede ir dirigido contra un servicio de autenticación (como comenté hace poco), o contra el almacén de contraseñas, entre otros. El ataque a servicios de red suele conllevar ciertas circunstancias no deseables: es más lento, es muy ruidoso (y, por tanto, fácilmente detectable), y deja muchas huellas. Por otra parte, atacar al almacén de contraseñas (en el caso de que éste sea ininteligible, que debería serlo) requiere el cálculo constante de valores hash para las pruebas.

En cualquier caso, podemos definir dos características que hacen a una contraseña fuerte.

En primer lugar, la contraseña debe ser “no obvia“; esto es, que no pueda encontrarse en un diccionario. Esto incluye diccionarios genéricos, así como diccionarios que pudieran generarse ad-hoc para un determinado caso (por ejemplo, palabras significativas para un determinado individuo, encontradas en los documentos de su disco duro, etc.). Siendo más formales, la contraseña debe contener la mínima información (máxima entropía) posible, o lo que es lo mismo, ser aleatoria (o al menos parecerlo). Esto dificulta también el uso de ataques con generadores de Markov, al no existir un modelo de Markov subyacente en la información aleatoria.

En segundo lugar, la contraseña debe ser “compleja“; esto es, que sea larga (aquí se encuentra la verdad parcial de nuestro mito) y que su alfabeto de generación sea lo más amplio posible. El número de posibles combinaciones de contraseñas, para una longitud y un alfabeto dados, se puede expresar como A^L, siendo A el número de elementos del alfabeto y L la longitud. Así, y para una misma longitud, tenemos que cuanto mayor sea el alfabeto, más combinaciones existirán, y por tanto más compleja será la contraseña.

Es más, se da la circunstancia de que, en ocasiones, un alfabeto más amplio y una longitud menor generan un mayor número de combinaciones. Por ejemplo, las posibles contraseñas en mayúsculas y minúsculas de 5 caracteres son 52^5; mientras que las posibles contraseñas numéricas de 8 caracteres son 10^8. Dado que 52^5 es aproximadamente 380 millones, mientras que 10^8 es exactamente 100 millones, vemos que una contraseña de 5 caracteres con mayúsculas y minúsculas es aproximadamente cuatro veces más compleja que una de 8 caracteres numéricos.

Resumiendo, la seguridad de una contraseña depende principalmente de tres factores:

  • La entropía de la misma, que debería ser máxima. Idealmente, generada de forma aleatoria.
  • La complejidad de la misma, que a su vez depende de…
    • La longitud de la misma, que debería ser lo mayor posible.
    • El alfabeto de generación de la misma, que debería ser lo más complejo posible.

Por supuesto, esto se refiere exclusivamente a las contraseñas en sí mismas. En la seguridad de cualquier sistema intervienen muchos otros elementos potencialmente atacables: claves de cifrado, vulnerabilidades, ingeniería social… así que tampoco conviene confiar ciegamente en una buena contraseña.

Como siempre, espero que os haya resultado interesante.

Read Full Post »

¿Has olvidado tu contraseña de algún servicio de red importante? ¡Pon una medusa en tu vida!

Encontré esta fantástica herramienta buscando una alternativa a Hydra, y como bien afirman en su propia página, hay una serie de diferencias interesantes entre ambas herramientas. Desde luego, el uso de hilos frente a procesos pesados (típicos fork de toda la vida) hace el proceso de paralelización mucho más rápido; y también es cierto que Hydra tiene cierta tendencia a tostarse.

Por su parte, medusa tiene opciones para todos los gustos y colores:

Opciones de medusa

Opciones de medusa

¿Y sobre qué protocolos podemos aplicar medusa? Pues sobre unos cuántos…

ramiro@cormanthor:~$ medusa -d
Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>

  Available modules in “.” :

  Available modules in “/usr/lib/medusa/modules” :
    + cvs.mod : Brute force module for CVS sessions : version 2.0
    + ftp.mod : Brute force module for FTP/FTPS sessions : version 2.0
    + http.mod : Brute force module for HTTP : version 2.0
    + imap.mod : Brute force module for IMAP sessions : version 2.0
    + mssql.mod : Brute force module for M$-SQL sessions : version 2.0
    + mysql.mod : Brute force module for MySQL sessions : version 2.0
    + ncp.mod : Brute force module for NCP sessions : version 2.0
    + nntp.mod : Brute force module for NNTP sessions : version 2.0
    + pcanywhere.mod : Brute force module for PcAnywhere sessions : version 2.0
    + pop3.mod : Brute force module for POP3 sessions : version 2.0
    + postgres.mod : Brute force module for PostgreSQL sessions : version 2.0
    + rexec.mod : Brute force module for REXEC sessions : version 2.0
    + rlogin.mod : Brute force module for RLOGIN sessions : version 2.0
    + rsh.mod : Brute force module for RSH sessions : version 2.0
    + smbnt.mod : Brute force module for SMB (LM/NTLM/LMv2/NTLMv2) sessions : version 2.0
    + smtp-vrfy.mod : Brute force module for enumerating accounts via SMTP VRFY : version 2.0
    + smtp.mod : Brute force module for SMTP Authentication with TLS : version 2.0
    + snmp.mod : Brute force module for SNMP Community Strings : version 2.0
    + ssh.mod : Brute force module for SSH v2 sessions : version 2.0
    + svn.mod : Brute force module for Subversion sessions : version 2.0
    + telnet.mod : Brute force module for telnet sessions : version 2.0
    + vmauthd.mod : Brute force module for the VMware Authentication Daemon : version 2.0
    + vnc.mod : Brute force module for VNC sessions : version 2.0
    + web-form.mod : Brute force module for web forms : version 2.0
    + wrapper.mod : Generic Wrapper Module : version 2.0

ramiro@cormanthor:~$

Por ejemplo, un ataque mediante diccionario contra SSH sería tan simple como ejecutar la siguiente orden:

ramiro@cormanthor:~$ medusa -h 256.256.256.256 -u victima -P diccionario -M ssh -L -F

Y como siempre, ya lo sabéis, estas pruebas las hacéis en vuestras propias máquinas…

Read Full Post »

Con un retraso más que considerable, ya podéis encontrar en vuestro kiosco el número de febrero de la revista @rroba.

Además, este número 161 es, hasta lo que yo sé, el último de la revista @rroba. A pesar de que en sus páginas no se mencione absolutamente nada del tema, y de que ya hubiera rumores de cierre cuando tuvo lugar el cambio de editorial, allá por el número 144; la información que yo tengo indica que el cierre es real y definitivo. Si -como ocurriera hace año y medio- no ocurre algo en el último momento, hasta aquí llega la historia de la publicación más veterana en España sobre Internet y seguridad informática.

Para mí han sido casi cinco años de colaboración con la publicación, en los que he escrito 102 artículos, incluyendo un curso de arquitectura de computadores de 22 entregas y uno de programación en Java de 32 entregas, así como 48 artículos con temática muy variada: desde el hacking puro hasta el análisis de nuevas tecnologías, y pasando por perros verdes como la computación cuántica o la criptografía cuántica. Personalmente, ha sido una experiencia muy enriquecedora, que me ha ayudado a aprender mucho -tanto técnicamente, como en la propia redacción- y me ha reportado muchas satisfacciones.

Ya centrándonos en los contenidos de este número, encontraréis los dos artículos habituales con mi firma.

El primero de ellos es la entrega habitual del Curso de Java Útil, trigésimo segunda del curso y segunda dedicada a la aplicación jWadalCrack. En esta entrega, comenzaremos a diseñar una lógica de negocio real para la aplicación, permitiendo la realización de pruebas reales de ruptura de hashes. Además, introduciremos unas nociones iniciales al análisis del rendimiento del proceso de ataque, realizando unas estimaciones iniciales (y algo burdas) de los tiempos de ruptura estimados para ciertos valores de entrada. Lamentablemente, y tras sólo dos entregas dedicadas a jWadalCrack, el programa es poco más que una prueba de concepto y está muy verde. Afortunadamente, en estas dos entregas ha dado tiempo a esbozar los fundamentos de los principales pilares sobre los que desarrollaríamos la aplicación, por lo que no debería de ser muy complicado continuar su desarrollo sin mi ayuda. Creo que esos serán los últimos deberes que os mande. ;-)

El segundo artículo lleva por título Hacking Android, y en él veremos cómo sacar el máximo partido a nuestro hardware, gracias al sistema libre y abierto de Android. Rootear el terminal, instalación de ROMs personalizadas, desbloqueo de hardware no utilizado por el fabricante, instalación del kit de desarrollo, conexión del terminal a bajo nivel, desbloqueo del bootloader, personalización del recovery, flasheo de componentes del firmware… en definitiva, destripar un dispositivo Android desde el primer tornillo hasta el último punto y coma. Como debe ser.

@rroba 161

@rroba 161

Read Full Post »

La búsqueda: El diario secreto

Ayer por la noche estuve viendo La búsqueda: El diario secreto en Kinépolis con unos amigos. Yo prefería ver La habitación 1408, pero el quorum decidió que veríamos a Nicolas Cage

Ya había visto la primera parte (“La búsqueda”) anteriormente, y lo que me esperaba era ni más ni menos que un clon de ésta. No me equivoqué, y efectivamente la película era más de lo mismo, para lo bueno y para lo malo: mucha acción, muchos efectos especiales, un argumento absurdo a más no poder, egocentrismo americano por un manojo de tubos… aquí podéis encontrar varias críticas publicadas en periódicos nacionales e internacionales al respecto de la película. De cualquier forma, la película hace pasar un rato entretenido, que es de lo que se trata al fin y al cabo.

Pero, como ya sabréis, la criptografía es un tema que me gusta bastante, y no puedo evitar fijarme en ciertas cosas. El argumento gira entorno a una página reaparecida del diario de John Wilkes Booth, el asesino de Abraham Lincoln. Y, como no podía ser de otra forma en este tipo de películas, la página contenía parte de un mensaje cifrado. En la película se menciona el método de cifrado utilizado, aunque no me quedé con el nombre, y es probable que ni siquiera exista realmente, porque supongo que me habría sonado. En cualquier caso, en la época de la guerra de secesión, los métodos de cifrado se basaban en la sustitución polialfabética, transposición y sustitución, pero sin llegar siquiera a la fortaleza de la cifra ADFGVX alemana, que data de la primera guerra mundial.

Lo primero que me resulta extraño es que, si existe algún tipo de flujo en el algoritmo (algo parecido al cifrado de Vigenère), descifrar un mensaje parcial es bastante más complicado. Pero esto realmente tampoco es un impedimento muy grande, y si se pudo descifrar Enigma de forma casi artesanal, romper una cifra manual -aún si es parcial- hoy en día debería ser un juego de niños.

Ahora, su método de descifrar el texto sí que supone un error de bulto. Resulta que los protas disponen de un programa informático que les descifra el criptograma proporcionando una clave, que saben que es de cinco letras. Y resulta que su única idea es ir probando claves de forma manual (por supuesto, aciertan al tercer o cuarto intento). El “hacker” del grupo (estereotipado a más no poder: puede colarse en los sistemas de seguridad del Palacio de Buckingham, pero luego no pilla las cosas más tontas) propone probar todas las posibles combinaciones y nadie le hace caso.

Echemos cuentas. Sabemos que la clave es de cinco caracteres de longitud, y sabemos que el alfabeto latino tiene 26 letras. Pongamos que, además de las 26 letras, incluimos los 10 números y algún signo de puntuación; aún cuando por aquel entonces únicamente se cifraba en base al alfabeto estándar. Para redondear, supongamos que el alfabeto tiene 40 caracteres (26 letras + 10 dígitos + 4 especiales). Así, cinco repeticiones de los 40 posibles caracteres suponen 40^5 posibilidades, o lo que es lo mismo, unos 102 millones y medio. Parece mucho, pero es que un ordenador doméstico actual de cuatro núcleos puede comprobar 12 millones de claves por segundo para el algoritmo MD5, algo mucho más complejo que cualquier método de cifrado manual. O lo que es lo mismo, en menos de ocho segundos y medio obtendríamos TODOS los posibles mensajes descifrados. Comparando los resultados contra un diccionario de la lengua utilizada, podríamos quedarnos únicamente con aquellos que contengan datos con sentido.

Claro está, cuando aciertas la clave a la tercera, este método es más costoso. Pero, considerando ya que el alfabeto de la clave fuera el latino estándar de 26 caracteres, tenemos casi 12 millones de posibles claves (11.881.376). Por fuerza bruta, y con un ordenador, en un segundo se obtendría la solución. Y, para colmo, las posibilidades de acertar la clave al tercer intento son del 0,000025 %.

Y no soy un experto en fotografía (realmente, en criptografía tampoco), pero en la película usan un móvil con una cámara de 2 megapíxels y una lente mucho más pequeña que la de cualquier cámara digital (un Motorola RAZR) para tomar fotografías de alta resolución. Por no mencionar las cámaras de tráfico de Londres, que por lo visto pueden fotografiarte los pelillos de la nariz si te saltas un semáforo en rojo…

Read Full Post »

A %d blogueros les gusta esto: