En el artículo anterior de la serie Amenaza Inminente, obtuvimos muy fácilmente una lista de direcciones IP que nos atacaban inclementemente. Un paso casi inmediato en cualquier respuesta a incidentes de este tipo es tratar de ubicar la localización geográfica de nuestro atacante(s). Para lograr esto con verdadera precisión se requiere correlacionar información de diversas fuentes. Sin embargo, una primera fuente de información es justamente de la dirección IP que comete el ataque.
Existen gran cantidad de scripts que pueden convertir una dirección IP en coordenadas del globo terraqueo. Esta transformación se hace a partir de la información de registro del manejador del bloque de IPs a que correponde la dirección transgresora. Por lo tanto, no siempre se encuentrá actualizada o completa pero no deja de ser un buen punto de partida de todas maneras. A pesar de su gran disponibilidad, muchos de estos programas caen rapidamente en desactualización debido a los cambios constantes que hacen los proveedores de la información de localización para alcanzar mayor eficiencia en su servicio. Lejos de reinventar la rueda, tomamos un script público y lo arreglamos para que funcione con la tecnología actual.
$ ./ips2kml.rb hostile.unique.ips
Nuestro script toma como entrada un archivo con una lista de direcciones IP, y retorna un archivo de extensión kml, con el mismo nombre, para ser usado con los servicios de google-earth. Con este archivo es posible generar todo tipo de gráficas que permiten visualizar la "superficie de la amenaza".
Adicionalmente, se puede extraer facilmente las 10 localidades con mayor actividad hostíl, por ejemplo:
$ grep description hostile.unique.ips.kml | cut -d ">" -f 2 | cut -d "<" -f 1 | sort | uniq -c | sort -gr | head
1874 Caracas, Distrito Federal, VE
174 Cúcuta, Norte de Santander, CO
102 Taipei, T'ai-pei, TW
102 , , RU
52 Moscow, Moscow City, RU
43 Bogotá, Cundinamarca, CO
33 Buenos Aires, Distrito Federal, AR
30 São Paulo, Sao Paulo, BR
27 Seoul, Seoul-t'ukpyolsi, KR
22 Bucharest, Bucuresti, RO
Como es de esperarse de un ataque planificado, la mayor cantidad de infractores son de la localidad de Venezuela, en donde se recoletó esta información. En un ataque oportunista al azar, no esperamos ver esta distribución tan correlacionada. La idea de nuestros atacantes es usar las computadoras mas "cercanas" en terminos de latencia, para seguir vulnerando más y más equipos. El costo de llevar a cabo este ataque desde una localidad remota simplemente no es aceptable. Por esta razón los creadores de virus/gusanos/malware introducen algoritmos que hacen preferir las direcciones IPs de la misma subred antes de las direcciones más "remotas".
Con esta metodología es posible conseguir aún más estadísticas útiles para tomar decisiones sobre cómo reaccionar ante el incidente. La mayoría de veces estas decisiones giran alrededor de detener la amenaza y continuar con la operación normal. Sin embargo, algo que muchas veces no se puede dar el lujo la organización bajo ataque es investigar más profundamente la amenaza. Los objetivos de esta investigación pueden estar dirigidos a averiguar los métodos, intenciones u objetivos y finalmente hasta el responsable o responsables del ataque. Desarrollar un pequeño laboratorio virtual para abordar estos ambiociosos objetivos será el tema de proximos artículos.
domingo, 30 de enero de 2011
Amenaza Inminente. Parte II.
Etiquetas:
técnico
viernes, 28 de enero de 2011
Inseguridad Bancaria Online. Parte II.




Sin embargo, si el atacante ingresa un nombre de usuario válido, y cualquier contraseña (muy probablemente incorrecta), el mensaje de error que arroja el sistema es el que se ve en la gráfica de la izquierda. Ahora, por más truco Jedi que intente el sistema, nuestro atacante casi nunca es tan tonto. A pesar de que el error anterior asegure que el nombre de usuario o la contraseña pueda ser el incorrecto, nuestro atacante sabrá que el anterior error sólo se produce cuando se introduce un nombre de usuario incorrecto.

Por esta y muchas otras razones es tan importante llevar a cabo pruebas de penetración avanzadas que detecten este tipo de errores "no evidentes" antes que nuestros atacantes los encuentren y exploten con éxito.
Ver también:
Inseguridad Bancaria Online. Parte I
Inseguridad Bancaria Online. Parte III
martes, 25 de enero de 2011
La contraseña mas fuerte de todas



Receta #0: Password de 8 caracteres. Sin restricciones especiales.
Fortaleza #0: 100 x 100 x 100 x ... x 100 (ocho veces) = 10^16

Receta #1: Asegurar que el password tenga al menos una letra en mayuscula y un numero.
Como las letras mayusculas son sólo a lo sumo 30, y los dígitos son sólo 10, para estimar la fortaleza de esta estrategia, debo cambiar un 100 por 30 y otro 100 por 10 en el producto de la receta anterior (ver nota1). El resultado es:
Fortaleza #1: 30 x 10 x 100 x 100 x ... x 100 (6 veces 100) ~ 10^14
Lo cual es considerablemente mas débil que la estrategia "sin receta". Si este resultado parece increible, calculemos la fortaleza de una receta más complicada.
Receta #2: Asegurar que el password tenga al menos dos mayusculas, al menos dos dígitos y un símbolo especial (!"@#$%...).
Asumiendo que los símbolos especiales son a lo sumo 30 (siendo generosos), la fortaleza nos queda en (ver nota1):
Fortaleza #2: 30 x 30 x 30 x 10 x 10 x 100 x 100 x 100 ~ 10 ^12
Lo cual de nuevo es menor que la estrategia anterior pero todavía muchísimo menor que la estrategia nula.
¿Que es lo que está pasando?

¿Quiere decir que puedo poner como password a mi cuenta bancaria "beisbol1" en lugar de "1*e/hIOn"?
Definitivamente no. El problema es que "beisbol1" ya lo sabe nuestro atacante debido a que es una derivación sencilla de una palabra de diccionario, mientras que un password completamente aleatorio no. Por lo tanto, "beisbol1" no cumple nuestro dogma, mientras que "1*e/hIOn" antes de escribirlo por primera vez en este blog si lo cumplía.
Pero, ¿Cómo nos aseguramos que el password que seleccionamos no se lo ha dicho nadie a nuestro atacante? Este tema sí es un poco más complicado, pues tiene que ver con la psiquis humana. El mejor consejo que puedo dar a este respecto es tratar de pensar de la forma en que nadie mas lo ha hecho. Esta es la única manera de fabricar el password mas fuerte de todos. Para mantenerlo fuerte, no hay que ni decirlo a nadie ni tampoco cómo derivarlo.

Como nota anecdótica, algunas amigas celosas siempre tratan de persuadirme para que les diga mis contraseñas. De esta forma, esperan poder saber quien me escribe sms, email, IMs, etc. En una ocasión me dejé persuadir para revelar el pin de mi chip GSM - Sí, mis amigas pueden ser muy persuasivas - La cara de asombro de una de ellas al verme tipear "0000" en mi celular fue poética. La conversación concluyó mas o menos así:

- Si, pero no puedo hacer nada, no puedo mas que poner 4 digitos.
- Si, pero es que es puros 0s.
- Ehm, si, como cualquier otro número de 4 digitos, es igual de malo.
- Ah, pero es que es muy facil de adivinar!! (frustración)
- Claro, pero sólo porque ya te la he dicho. Te apuesto que antes de decirtela jamas hubieras pensado en que esa era mi clave, mucho menos conociendome como el supuesto "experto en seguridad informatica".
- (Cara de gracia pero insatisfacción).
Aunque en mi anécdota juega un poco el tema de "contra-inteligencia", pienso que encierra perfectamente la esencia de este artículo. Una vez revelado, el password o cualquier información sobre éste, es igual de malo que el anterior.
---------
Nota1: En realidad el cálculo preciso involucra factores adicionales que tienen que ver con las posiciones de los caracteres de la receta. Por ejemplo, para la primera receta, existen 8 posiciones para colocar la mayuscula y despues 7 posiciones para colocar el dígito. Esto se expresa en números combinatorios como "8 choose 1" y "7 choose 1". El resultado final debe multiplicarse por 56. En la segunda receta es necesario multiplicar por "8 choose 3" y "5 choose 2", y si mi cálculo mental no falla, esto es igual a 560.
domingo, 23 de enero de 2011
Adivinando Nombres de Usuario




Pero, ¿Qué puede hacer un criminal informático con tan sólo un par de credenciales de acceso a la banca en linea? La respuesta a esta pregunta será el tema de proximos articulos.
miércoles, 19 de enero de 2011
Inseguridad Bancaria Online. Parte I.
Usualmente recibimos propaganda de nuestras entidades financieras acerca del cuidado que se debe tener de nuestra contraseña para acceder a los portales de banca online. Sin embargo, muy pocas veces se nos advierte que el nombre de usuario/login/etc es tan importante o tal vez más que el tan celosamente guardado "password".
La razón es simple: sin la contraseña, nuestro criminal informático puede no tener acceso a realizar operaciones bancarias en linea a nuestro nombre; sin embargo, con el nombre de usuario, el atacante puede lograr que nosotros tampoco las hagamos.
El problema radica en que ningún sistema bancario en linea puede darse el lujo de permitir infinitos intentos de acceso a una cuenta bancaria. De lo contrario, expondrian a sus clientes a ataques de fuerza bruta para adivinar su contraseña. Por lo tanto, absolutamente todos los sistema de banca en linea que he visto ejecutan algún tipo de bloqueo despues de un numero predeterminado de intentos de accesos incorrectos. En consecuencia, el atacante que conozca nuestro nombre de usuario, solo necesita hacer unos cuantos intentos de ingreso incorrectos para bloquearnos el acceso a nuestra cuenta de banca en linea.
La situación empeora cuando el propio sistema de banca en linea hace que los nombres de usuario sean facilmente predecibles. Esto sucede muy a menudo cuando las entidades financieras deciden utilizar numeros de cuentas de bancos, numeros de tarjetas de debito, etc en lugar de un nombre de usuario arbitrario. La razón es simplemente comodidad a la hora de hacer el rollout de credenciales. Por ejemplo, si el usuario ya tiene su tarjeta de débito y su clave de cajero, puede usar esas mismas credenciales para acceder al sistema de banca en linea. El usuario está automáticamente listo para hacer uso de la fabulosa banca en linea sin necesidad de emitir nuevas credenciales, verificación de identidad, firma de acuerdos, etc. Ésta comodidad no viene sin su alto costo en riesgo no sólo para el usuario final, sino también para la propia entidad financiera.
El resultado inmediato, pero no el único, es una vulnerabilidad de denegacion de servicio al sistema de banca en linea que no requiere más que de un ordenador personal, una conexión a internet de muy poco ancho de banda, y un programa de una docena de lineas de código para llevarse a cabo. Las entidades financieras invierten grandes sumas de dinero en sistemas redundantes, ancho de banda, sistemas de deteccion de inundaciones, etc. pero con esta vulnerabilidad hacen que todos estos sistemas queden completamente inútiles.
Diversas culturas tienen distintas imágenes sobre el futuro apocalíptico. La imagen que a mi se me viene a la mente con este tipo de sistemas es una entidad bancaria colapsada con tickets de soporte de reseteo de credenciales de acceso y una cantidad muy grande de clientes frustrados por no poder llevar a cabo sus transacciones financieras online. A pesar de nunca haber escuchado a alguna entidad financiera aceptar que ha tenido sucesos de esta índole, yo mismo he sido victima de reiterados bloqueos de acceso inexplicables. Estoy seguro que no soy el único tampoco.
La solución definitiva a esta problemática es por supuesto el uso de nombres de usuario que sean dificiles de predecir. Sin embargo, es posible disminuir el impacto de esta vulnerabilidad sustituyendo los bloqueos permanentes por bloqueos temporales. La intención es por supuesto evitar el escenario apocaliptico dando acceso a las victimas despues de un tiempo prudencial, pero previniendo en cierta medida que el criminal informático lleve a cabo un ataque de fuerza bruta contra las credenciales de sus victimas. Esta medida paliativa, por supuesto, se hace imposible de implementar si el espacio de contraseñas es muy pequeño. Por ejemplo, en el caso en que la clave de acceso sea una cadena de 4 digitos.
Otras consecuencias del uso de nombres de usuario predecibles será el tema de próximos artículos.
Ver también:
Inseguridad Bancaria Online. Parte II
Inseguridad Bancaria Online. Parte III
La razón es simple: sin la contraseña, nuestro criminal informático puede no tener acceso a realizar operaciones bancarias en linea a nuestro nombre; sin embargo, con el nombre de usuario, el atacante puede lograr que nosotros tampoco las hagamos.




La solución definitiva a esta problemática es por supuesto el uso de nombres de usuario que sean dificiles de predecir. Sin embargo, es posible disminuir el impacto de esta vulnerabilidad sustituyendo los bloqueos permanentes por bloqueos temporales. La intención es por supuesto evitar el escenario apocaliptico dando acceso a las victimas despues de un tiempo prudencial, pero previniendo en cierta medida que el criminal informático lleve a cabo un ataque de fuerza bruta contra las credenciales de sus victimas. Esta medida paliativa, por supuesto, se hace imposible de implementar si el espacio de contraseñas es muy pequeño. Por ejemplo, en el caso en que la clave de acceso sea una cadena de 4 digitos.
Otras consecuencias del uso de nombres de usuario predecibles será el tema de próximos artículos.
Ver también:
Inseguridad Bancaria Online. Parte II
Inseguridad Bancaria Online. Parte III
Suscribirse a:
Entradas (Atom)