viernes, 29 de diciembre de 2017

Evil-Droid : Cuidado con tu Android

ADVERTENCIA:  este post sólo se hace con fines educativos y de información, en ningún momento C43S4RS (este blog) se hace responsable del uso indebido que cualquier usuario pueda hacer de él.

Hola a tod@s, esta es mi primera entrada en este blog llamado C43S4RS y no será la última, en esta entrada vamos a ver uno de los peligros a los que nos podemos enfrentar si no tenemos las precauciones adecuadas con nuestros dispositivos Android.

Para empezar yo soy de los que piensan que para pillar a los malos hay que pensar como ellos, por lo que he decido en esta entrada actuar como un malo, es por ello que voy a mostraros como prácticamente sin conocimientos a nivel hacking, es posible que cualquier ciberdelincuente o aburrido en su defecto se haga con el control de nuestro Smartphone.

jueves, 28 de diciembre de 2017

Debugging a una App de Android con IDA PRO - Parte 3

Buenas de nuevo, pues aquí tenemos la última entrega sobre Android y como usar IDA Pro para depurar Apps en tiempo de ejecución. Para ello lo primero que debemos de conocer es la arquitectura sobre la cual vamos a trabajar, en nuestro caso ARM.

Registros en ARM

La arquitectura ARM utiliza 16 registros, entre los que podemos encontrar argumentos a funciones, el contador del programa, puntero a la pila, etc. A continuación enumeramos cada uno de ellos junto con su descripción:

  • R0 a R3: argumentos de la función, también podemos encontrarlos como a0-a3.
  • R4 a R9: para las variables locales.
  • R7: número de llamada al sistema.
  • R10 (sl): límite de la pila.
  • R11 (fp): Fame Pointer
  • R12 (IP): Intra Procedure.
  • R13 (sp): Stack Pointer como RSP en x86_64.
  • R14 (lr): Link Register.
  • R15 (PC): Contador de Programa (como RIP en x86_64 y EIP en x86).

miércoles, 27 de diciembre de 2017

El cifrado del CESAR

Siempre es complicado empezar una entrada y más cuando se quiere explicar algo más o menos técnico.

Normalmente uno ha de presentarse y todo eso, pero no va a ser así, como ya dijo Edu en el primer post somos varios integrantes y poco a poco nos iréis conociendo.

Sin más dilación yo voy a intentar ir explicando los distintos métodos de cifrado más habituales y empezaremos desde el principio, El Cifrado CESAR - Caesar Cypher

martes, 26 de diciembre de 2017

Debugging a una App de Android con IDA PRO - Parte 2

En el anterior post preparamos nuestro terminal Android rooteado para poner un puerto a la escucha y que el dispositivo Android se pudiera conectar con IDA Pro. El siguiente paso va a ser preparar el binario de Android para poder llevar a cabo el debugging con IDA Pro.

Preparando el binario

Para preparar el programa que vamos a depurar debemos conocer la estructura de una APK, que no es sino un paquete ZIP con ciertas peculiaridades, por tanto añadimos la extensión .zip al paquete y descomprimimos en una carpeta.

domingo, 24 de diciembre de 2017

Debugging a una App de Android con IDA PRO - Parte 1

Hace tiempo que tengo guardado este artículo para publicarlo en un momento especial, hoy lo hago como punto de partida de un grupo de amigos que les gusta jugar a los CTFs en sus ratos libres. El artículo trata de como depurar una aplicación Android en tiempo de ejecución, una prueba de concepto que espero os quite el miedo a iniciaros en el exploiting y el reversing.

¿Qué es IDA Pro?

Ida es una herramienta completa de reversing que sirve tanto para 32bits como 64bits. Y además no sólo hace funciones de debugger sino que permite desensamblar código fuente de manera estática. Tenemos también posibilidad de trabajar nativamente con Windows, Linux o Mac OS X. Otra de las funciones que nos permite es trabajar remotamente con varios sistemas operativos, nosotros concretamente vamos a usar el sistema ARM Android.

El principio de los C43S4RS

¿Por qué nos gusta el Hacking? 

Seguro que alguna vez has soñado por la noche la solución a un código fuente que te fallaba hace días, has ido organizando ideas que hacían más eficiente un programa o se te ha ocurrido un script que nadie antes había pensado. Seguramente seas una persona inquieta y no dejes de leer libros y artículos de seguridad y todo ello es debido a que te gusta el Hacking.

Hace algunos años abrí el blog White Walkers of Hacking con un alumno con la finalidad de aprender más, ya que si realmente quieres aprender sobre un tema, debes ser capaz de poder enseñar sobre dicho tema. No sólo leer o practicar basta, también debes compartir con los demás para que tu conocimiento se enriquezca. Hoy damos salida a un nuevo blog, el blog de C43S4RS, un grupo de amigos que se ha ido forjando haciendo CTFs en sus ratos libres, pasando información de calidad sobre hacking y compartiendo sus conocimientos sin tapujos. Ya iréis conociendo a cada uno de los integrantes del grupo por sus artículos, os puedo adelantar que aprenderéis mucho ya que todos ellos son unos cracks.


El objetivo del grupo es aprender unos de otros y a todos los niveles. Así que para ir abriendo boca os dejo la imagen del grupo con alguna seña de identidad mía oculta. Hemos creado una cuenta de twitter para que podáis seguir las publicaciones @C43S4RS. Para empezar os adelanto que ya tenemos preparados varios artículos muy interesantes, en breve os publicaré uno de como debuggear una App en Android con IDA Pro.

Felices fiestas a todos !
@eduSatoe

martes, 7 de marzo de 2017

Cracking Windows Passwords

Ya ha pasado casi un año desde la 2ª edición de la Security High School y pronto tendremos la tercera. En el artículo de hoy veremos un tema que tratamos mis compañeros Alfonso Luque, Rafael Santiago y yo en la charla Cracking Windows Password. Os animo a acudir a este tipo de eventos para compartir información donde además de aprender se conoce mucha gente. 



Dicho esto comencemos con el articulo.

¿Cómo se almacenan las claves?
Normalmente cuando se trata de almacenar una contraseñas se almacena en una base de datos cómo MySQL o SQLite, y digo normalmente porque no es raro encontrar programas que almacenen contraseñas en texto plano y lo más importante, sin guardar el hash de la clave en lugar de la misma clave.

¿Qué es un hash?
Un hash es el resultado de aplicarle una operación matemática irreversible a unos datos de entrada (en este caso una contraseña) dando como resultado una cadena de longitud fija.
Por ejemplo:
El resultado de realizar una función hash a la cadena “1234” sería “81dc9bdb52d04dc20036dbd8313ed055” y el resultado de realizar la misma función a la cadena “pepito” sería “c482af336ae81e4634dc84f94e67eed8”.

Como podemos observar las cadenas entrantes son de diferente longitud y como resultado se consiguen cadenas totalmente diferentes salvo por su longitud que es la misma.

Tipos de hash
Existen muchos tipos de hash y cada uno realiza de forma diferente la función matemática que genera la cadena de salida, para una misma cadena de entrada.
Por ejemplo:
El hash  MD5 de “Admin”  sería “21232f297a57a5a743894a0e4a801fc3” mientras que el hash SHA-256 de “Admin” sería “8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918”

Hay tipos de hash más antiguos como el MD5 que ya han sido vulnerados y por lo cual no son seguros, y otros más nuevos como SHA-3 que por el momento son más seguros. Pero en este artículo nos centraremos en dos tipos de hash en concreto, LM y NTLM, que son los que utiliza Microsoft para almacenar las contraseñas de los usuarios de Windows.

LM (LAN Manager)
Es el primer hash que utilizaron los sistemas Windows, sus características y método para realizar el hash son ya muy conocidas, esto sumado a que los métodos que utiliza no son muy buenos lo convierten en carne de cañón vulnerable. Ha sido utilizado por Windows desde el Windows 3.1 hasta el famoso XP, pero a partir de Windows Vista, las contraseñas dejaron de almacenarse con LM como medida de seguridad y fue sustituida por su sucesor NTLM, aunque, esta medida se puede revertir mediante configuración y volverse a activar ya que Windows no la quitó por completo por motivos de retro compatibilidad.
Estas son sus características y los patrones que seguiría si le hiciésemos la función hash a la cadena “Admin1234":
  • - Rellena de “0” hasta llegar a 14 caracteres (admin123400000)
  • - Convierte todas las letras a mayúscula (ADMIN123400000)
  • - Parte la contraseña en dos (ADMIN12 3400000)
  • Utiliza el cifrado DES en las dos partes.

Dado que el propio algoritmo parte en 2 la contraseña antes de realizar la función hash, resulta más fácil aún romper la contraseña ya que es más fácil descifrar 2 cadenas de 7 dígitos en paralelo que 1 de 14 dígitos.

¿Por qué la contraseña debe de ser de más de 7 caracteres?

Por defecto el algoritmo rellena con "0" hasta llegar a 14 caracteres, entonces al aplicar esta operación en una cadena de 7 caracteres, los otros 7 restantes sería "0000000", teniendo en cuenta que el algoritmo también parte en 2 la contraseña, es fácil identificar contraseñas de menos de 8 caracteres ya que siempre terminan igual (con el resultado de hacerle el hash a 0000000).

NTLMv1 y NTLMv2 (NT LAN Manager)


Versión mejorada de LM que incluye algunas mejoras de seguridad con respecto a su antecesor. El proceso de ataque a este tipo de hash conlleva un aumento exponencial de tiempo sobre todo si se utilizan más de 8 caracteres, mezclando mayúsculas, minúsculas, números y caracteres especiales.
  • Diferencia entre mayúscula y minúscula
  • - Más simple que LM
  • Más robusto a su vez
  • Utiliza cifrado MD4

¿Dónde guarda Windows los hash de las contraseñas?
Por defecto Windows guarda los hash de las contraseñas en la ruta %systemdrive%\Windows\System32\config , en un archivo llamado SAM cuyo contenido está cifrado. Pero como Windows no sabe hacer nada a derechas, almacena la “clave” que descifra el contenido del fichero SAM en otro fichero sin cifrar llamado SYSTEM que está en la misma carpeta... 


En las versiones Windows Server con Active directory los hashes se almacenan en la ruta %systemdrive%\Windows\NTDS en un archivo llamado ntds.dit, pero no entraremos en detalles ya que nos centraremos en las versiones antes mencionadas de Windows.

Proceso para obtener los hashes de los usuarios
Ahora pasaré explicar cómo obtener los hash de los usuarios del equipo a auditar. Para ello utilizaremos Kali Linux para exportar los hash a un fichero de texto plano. Por si os preguntáis qué es Kali Linux, es una distribución Linux diseñada para hacer auditorias de análisis forense que incluye multitud de herramientas para ello.

En primer lugar tendremos  que bootear con una versión live de Linux como por ejemplo Kali.


Utilizaremos  el modo forense, que lo que hace es impedir al sistema montar automáticamente cualquier dispositivo de almacenamiento, más adelante veremos el porqué.


Una vez inicie el sistema procederemos a identificar el disco en el que está Windows.


Utilizaremos para ello el comando fdisk, y del resultado de este nos interesa saber cual es el dispositivo donde está Windows, en este caso /dev/sda1 y su formato para posteriormente montarlo.


Ahora que tenemos identificada la partición de Windows la montamos, previamente tendremos que crear una carpeta donde lo montaremos, después utilizamos el comando mount con la opción –t para especificar el formato de la partición y –r para montarlo en modo “solo lectura”, ya que estamos realizando un análisis forense y no podemos modificar nada del disco (de ahí el utilizar el forensic mode al principio).


Como he explicado anteriormente, el fichero SAM es donde se almacenan los hash, y para obtenerlos necesitaremos además de ese fichero, también necesitaremos el archivo SYSTEM para poder descifrar el contenido del SAM.


Para ello nos iremos primero a la ruta Windows/system32/config y nos los copiamos a nuestra carpeta personal. Una vez copiemos ambos ficheros, usaremos la herramienta samdump2 con la sintaxis samdump 2 –o ruta_salida SYSTEM SAM


Como resultado de utilizar samdump2 obtendremos un fichero con este formato,que como podemos observar hay dos hash por cada cuenta.
El de la izquierda es LM y el de la derecha NTLM


Si nos bien fijamos nos daremos cuenta de que el hash de la izquierda se repite en diversas ocasiones, y no, no es porque sean la mísma contraseña. En esta prueba hemos utilizado un windows 7, recordemos que a partir de windows vista el hash LM estaba desactivado como medida de seguridad. Entonces os preguntareis ¿que leches es ese hash? aa3b435b51404eeaa3b435b51404ee es el resultado de aplicarle la función hash a un valor NULO, y como una de las características de LM es partir la contraseña en dos partes el resultado es una cadena con los caracteres “aa3b435b51404ee” repetidos 2 veces (null-null).

 ¿Como crackear los hash?
Existen diferentes modos para obtener la contraseña de los hash, podemos optar por el método online que es el más fácil, y el método offline que es un poco más complejo, ya que tenemos que interactuar con diferentes herramientas.

Método online
Es simple, utilizando BBDD online de las cuales hay miles y con solo escribir el hash nos dirá la contraseña si la tienen en su base de datos.
Ejemplos de páginas que podemos utilizar:




www.somd5.com/  (si sabemos un poquito de japones XD)


Método offline 1: Fuerza bruta
Es el método más simple y a la vez más complicado para obtener resultados ya que consiste en probar TODAS las combinaciones posibles dentro de un charset determinado que nosotros le indiquemos al programa.

Teniendo en cuenta que una contraseña puede tener mayúsculas, minúsculas , números y caracteres especiales abcdfghijklmnñopqrstuvwxyz - ABCDFGHIJKLMNÑOPQRSTUVWXYZ - 1234567890 - (simbolos)  el numero de posibles combinaciones asciende a miles o incluso millones todo dependiendo de la longitud de la contraseña, esto traducido en tiempo... demasiado si somos impacientes.

Así te puedes quedar esperando a que saque la pass...
Método offline 2: Ataque por diccionarios
Este método es parecido al anterior con la diferencia de que en vez de probar TODAS las posibles combinaciones, probará todas las combinaciones que le pasemos a través de un diccionario de palabras clave, el cual podemos crear nosotros mismos o bajarlo desde internet donde hay infinidad de diccionarios, incluso hay webs que ofrecen diccionarios basados en temas concretos, como por ejemplo videojuegos, películas, grupos de música, etc...

Método offline 3: Ataque por tablas RAINBOW


Este será el método que utilicemos en este articulo las tablas rainbow, que resumiendo un poco cómo funcionan lo que hacen, son tablas que almacenan 2 cadenas de caracteres, una palabra inicial y otra final, la palabra inicial es una completamente aleatoria, y la palabra final es el resultado de hacerle la función hash a la palabra inicial y después al resultado de esta operación realizarle una función de reducción, que a su vez se le vuelve a realizar la función hash y después otra función de reducción, así consecutivamente hasta un determinado numero de veces. Al pasarle nosotros el hash, comprobará si la palabra final que da este hash coincide con alguno de los que tiene la tabla.


Para realizar esto utilizaremos un programa llamado OPHCrack, el cual es bastante fácil de utilizar, además tiene una versión live para bootearlo en una memoria USB y realizar todo el proceso anterior de obtención del hash y de forma completamente automática empezar a crackear los hashes que tenga el equipo (todo bien mascadito). Nosotros utilizaremos el programa para windows y lo haremos de forma manual.

Proceso de crackeo con OPHCRACK
El proceso es simple ya que se divide en tres sencillos pasos:




1º: Cargamos los ficheros que hemos obtenido previamente en formato txt con samdump2

Le damos a PWDUMP y seleccionamos nuestro "hashes.txt"




2º: Cargamos las tablas RAINBOW
Simplemente tendremos que seleccionar la tabla que queremos cargar y indicarle la ruta de donde está. El programa viene por defecto con 4 tablas de diferentes tamaños y para diversos sistemas como son Windows XP y Vista.


También podemos utilizar tablas descargadas de internet, que las hay de todo tipo y tamaños,  desde los 2 GB hasta los 500GB o más...

3º: Pulsar crack y esperar...
El resultado después de 1 hora de espera es este. 


Una lista con todos las contraseñas encontradas salvo una… la del usuario SHS2016, y es porque a la hora de crear la contraseña tuvimos en cuenta las recomendaciones típicas.

El objetivo de este articulo era haceros ver lo fácil que resulta vulnerar las contraseñas en el sistema operativo Windows, así que utilizad contraseñas con las recomendaciones de seguridad que ya conocemos.

Ahora os dejaré una POC en video para que veáis todo el proceso paso a paso.


Esto ha sido todo, espero que hayan aprendido tanto como yo aprendí en su día con Eduardo Sánchez "mi profe de seguridad" y que les haya servido de ayuda.

Un saludo :)