Certificación OSCP (Offensive Security Certified Professional)

(La entrada de hoy corre a cargo de Rafael Paez, colaborador de Security Art Work)

oscp-certsDespués de un tiempo sin escribir nada por aquí (por tema de tiempo básicamente), me gustaría hablar sobre la certificación OSCP (Offensive Security Certified Professional), la cual obtuve a principios de año y la cual recomiendo totalmente.

Esta certificación viene de la mano de Offensive Security (creadores de Kali Linux) y es una certificación totalmente práctica destinada a aquellas personas que quieran aprender y/o profundizar en el tema de los test de penetración (tanto de sistemas como de web) y de escalada de privilegios.

[Read more…]

Leer htaccess a través de Blind SQL injection

En esta ocasión me gustaría hablar de uno de los retos que solucioné hace poco y que encontré bastante interesante. En éste, debíamos conseguir acceder a la zona privada de una página web protegida con htaccess que contenía un blind SQL injection (vulnerabilidad ampliamente conocida, pero si alguien no la conoce, en Internet hay multitud de información, como por ejemplo https://www.owasp.org/index.php/Blind_SQL_Injection).

En MySQL disponemos de la función load_file, la cual nos permite acceder a un fichero siempre y cuando tengamos el privilegio FILE. Así que lo primero que debemos hacer es comprobar los permisos del usuario con que se están ejecutando las consultas.

Antes de continuar, me gustaría aclarar que todas las consultas se pueden hacer de forma manual, o con scripts realizados por uno mismo, pero hay veces que existen herramientas que nos facilitan mucho la tarea y se puede obtener el mismo resultado mucho más rápido. Como por ejemplo con sqlmap (http://sqlmap.org/), que sirve para explotar vulnerabilidades SQL injection.

[Read more…]

Solución al reto

Unos días atrás, nos encontramos con un nuevo reto en el que a partir de un archivo comprimido que se había capturado, debíamos descubrir que técnicas o consejos se decía que se estaban utilizando últimamente para instalar malware en los sistemas.

Al abrir el fichero attachment.rar vemos que contiene tres imágenes de ruinas romanas: “0.jpeg”, “1.png” y “3.jpg”.

Fijándonos un poco, lo único que destaca de las fotografías son los pequeños números romanos que aparecen en la esquina inferior derecha de dos de las fotos (“II” y “IV”) y que parece ser que falte la imagen “2”, ya que pasa de la “1” a la “3”.

[Read more…]

Nuevo reto: captura de e-mail

Después de algún tiempo sin proponer ningún reto en el blog, volvemos a la carga con un nuevo caso donde tocará poner en práctica algunas técnicas que pueden ser utilizadas para obtener información oculta que pueda existir dentro de ficheros aparentemente “normales”.

En este caso, se ha capturado un e-mail (con el archivo attachment.rar adjunto) de una banda acusada de estar explotando vulnerabilidades en diferentes sistemas para instalar malware y así poder monitorizar todo lo que los usuarios hacen en sus máquinas.

Aunque a simple vista el archivo capturado (attachment.rar) únicamente parece contener tres fotografías, se cree que en él se dan algunas instrucciones o pistas sobre qué tipo de acciones están realizando para instalar el malware.

Como es habitual, se han facilitado dos archivos rar que requieren contraseña para ser visualizados. El primero de ellos (validator1.rar) se abrirá con la solución de la parte 1 del reto, y el segundo (validator2.rar) con la solución de la segunda parte. Remarcar que el reto no consiste en intentar crackear estos dos archivos comprimidos, sino que únicamente se facilitan para que se pueda comprobar si se ha llegado a la solución correcta o no. En esta ocasión, para poder resolver la segunda parte del reto, es necesario haber resuelto previamente la parte uno.

Como siempre, la solución será publicada en el blog en unos días. De todas maneras, si vemos que existen dudas sobre la resolución del reto, se publicará alguna pista durante el transcurso del mismo.

Espero que disfrutéis del reto ;)

Brand Care (II)

Continuando con el congreso “Brand Care” tratado en el post anterior, en esta ocasión trataremos los dos siguientes bloques del mismo: “Legalidad digital” y “Seguridad en redes sociales y dispositivos móviles”.

Rosalía de la Cruz de “Lex Go”, fue la primera en abrir este bloque con “Reputación y Legalidad: Instrumentos jurídicos para defender la reputación.” En esta charla se trató como el hecho de que algo no se haga, también influye en la propia reputación, y no únicamente aquellos hechos que realizamos. Además, se dijo que es importante contar con un abogado en la propia organización, ya que todo lo que hacemos en Internet deja rastro y cualquier fallo que afecte a los usuarios puede provocar mucho daño en nuestra reputación.

Siguiendo con el mismo bloque, le tocó el turno a Pablo Pratmarso, abogado especializado en Derecho Digital con “Los diez Mandamientos (Legales) del Community Manager”, donde se nos dieron 10 prácticas/acciones que todo Community Manager debería realizar, como por ejemplo no infringir los derechos de autor ni de imagen, saber que como usuario de Internet se tienen unos derechos y obligaciones o que el desconocimiento de la ley no exime de su incumplimiento (por nombrar algunos de ellos).

La última charla de este grupo vino de la mano de Xavi Ribas, de Ribas Asociados, con “Derecho al olvido”, donde pudimos ver como “Internet no olvida”, ya que si algo no se borra específicamente, se queda ahí para siempre. Creando así una colisión entre derechos e intereses, como el de derecho a la información. Xavi nos comentó que para poder “eliminar” algo que esté indexado, no debemos ponernos en contacto con el servicio que indexa la información, ya que si se cumple la legislación española ellos no tienen porque dejar de indexarla. Por lo que lo que se debe hacer en estas ocasiones es contactar directamente con quien haya puesto la información, y si esto no nos diese resultado, nuestro único remedio sería “desplazar” su posicionamiento para que sea más difícil su visualización.

Dejando a un lado el segundo bloque y comenzando el tercero (Seguridad), continuamos con Alejandro Santana, quien nos explico el funcionamiento de “eGarante para certificación digital de correos y webs”. eGarante es un servicio que se encarga de certificar el contenido de e-mails o de páginas web en un cierto instante para poder demostrarlo legalmente en caso de ser necesario. Para esto, bastaría con enviar un e-mail con el contenido a certificar y automáticamente recibiríamos un documento PDF con el contenido y la certificación de todo.

Acto seguido tuvimos la presencia del CM de la Policía Nacional (Carlos Fernández Guerra), el cual nos explicó como trabaja la Policia Nacional para acercarse más al público. Para ello, utilizan diferentes canales en las redes sociales, como Twitter, Facebook, Tuenti o Youtube, a través de los cuales se muestran casos reales, consiguiendo así dar información y concienciación sobre la realidad existente.

Gracias a Marc Rivero de e-Crime en bdigital, tuvimos “El Peligro de las redes sociales, el malware y técnicas OSINT (como extraer información de perfiles de redes sociales usando tecnología Open Source)”, donde se nos habló de algunos peligros existentes en la actualidad, como el malware o el phisihing y del peligro de la publicación de cierta información en Internet, ya que esto podría permitir a otras personas obtener información de nosotros con técnicas OSINT (Open Source INTelligent), como “Spokeo”, “Harvester” o “Maltego” por ejemplo.

Vicente Aguilera, Socio y Director del Dpto. De Auditoria en Internet Security Auditors y OWASP Spain Chapter Leader, nos habló sobre “Seguridad, Comunicación online y Dispositivos. Seguridad en los dispositivos, WIFI, Compartir información y Geolocalización”. En esta ponencia, se comentó como existe una evolución muy rápida de los dispositivos móviles, incrementando así el riesgo de algún incidente de seguridad, ya que “solemos” almacenar demasiada información valiosa en estos terminales. Para poder hacer una categorización de los diferentes peligros que pueden existir, se separaron los mismos en peligros en el móvil (robo/pérdida, aplicaciones insegura, etc.), peligros en las redes (interceptación, Hotspots maliciosos) y peligros en el servidor (configuraciones deficientes, servicios inseguros, etc.). Por último finalizó con unas recomendaciones sobre las políticas de seguridad y la formación a los desarrolladores.

La siguiente ponencia fue “Vulnerabilidades psicológicas ante la “no agresividad” en los delitos telemáticos” con Marcos Domingo, Psicólogo forense en Centre Suport Forense y colaborador de onbranding. En ésta, pudimos observar como Internet es un contexto de gran exposición y es un lugar donde solemos hacer cosas que en el “mundo real” no haríamos (como despersonalización o egocentrismo por ejemplo), lo que implica que sea importante hacer una categorización de víctimas según su edad (“Infantiles”, “Adolescentes” y “Adultos”), ya que las repercusiones son muy diferentes entre cada una de ellas (secuelas, trastornos del comportamiento, insomnio, estafas, etc.).

El último ponente fue Jaume Abella, profesor de Hacking Ético de la “Universitat La Salle”, quien nos habló sobre “Investigación en Seguridad: Conceptos básicos”. Jaume, empezó su charla diciendo que hay que invertir en formar a hackers éticos, ya que estos son los que mejor pueden protegernos ante los peligros reales a las que están expuestos nuestros sistemas, y para ello deben poseer unos conocimientos muy amplios sobre “todos” los campos de la informática, como redes, sistemas operativos, programación, etc. Por último nos hizo una muestra de la facilidad con la que se podría acceder a un servidor Windows explotando una vulnerabilidad del mismo.

Para acabar estas jornadas, se hizo una mesa redonda sobre los tres bloques tratados en la conferencia (reputación, legalidad y seguridad), moderada por Selva Orejón y Rosalía de la Cruz, donde algunos profesionales y los asistentes interactuaron haciendo un pequeño debate con diferentes preguntas y situaciones.

Brand Care

El jueves 4 de julio tuvo lugar en Barcelona “Brand Care”, el 1er congreso de España sobre Reputación, Seguridad y Legalidad enmarcado en el entorno de la “gestión de la reputación” y la “ciberinvestigación”. El mismo se separo en tres partes: la primera de ellas trató el tema de “la reputación”, el segundo el de “legalidad digital” y el último el de la “seguridad en redes sociales y dispositivos móviles”.

Por ahora, nos centraremos en el primero de los bloques, haciendo un pequeño resumen de lo que se habló en cada una de las distintas charlas realizadas, dejando para próximas publicaciones los otros dos. Como nota, diremos que los ponentes han dicho que harán públicas las diapositivas utilizadas, por lo que en estar disponibles las añadiremos :)

[Read more…]

Esteganografía: Ocultando el uso de LSB

Después de haber hablado en varias ocasiones sobre la esteganografia, volvemos al tema ampliando un poco más la técnica de LSB (Ocultando archivos en otros – LSB, Ocultando archivos en otros – LSB II).

Resumidamente, esta técnica consiste en ocultar información en el bit menos significativo de cada uno de los píxeles de una imagen, consiguiendo así que el cambio realizado sea invisible al ojo humano. El problema de esta técnica, es que la información oculta puede obtenerse fácilmente si esta no se ha codificado previamente o si no se sigue un patrón concreto a la hora de ocultarla. Para poder evitar que terceras personas puedan descubrir que una cierta imagen contiene información oculta, podemos utilizar la técnica que se explicará a continuación.

Este método de ocultación de información será útil (idealmente) para ocultar imágenes, de dos colores como máximo, dentro de otras imágenes, siendo necesario la posesión de un token (el cual será otra imagen) por ambas partes de la comunicación para obtener la imagen oculta. A pesar de decir que de forma «ideal» únicamente se pueden ocultar imágenes de dos colores, esto no implica que no se pueda introducir texto en una imagen bicolor, y esconder el resultado ;)

La técnica, básicamente consiste en dos imágenes, dónde una de ellas será una imagen que únicamente debería poseer el emisor y el receptor, y la otra será la imagen que queremos ocultar (la cual tiene que tener unas dimensiones menores o iguales que la imagen portadora).

Una vez se tienen ambas imágenes, se recorrerán todos los píxeles de la imagen a ocultar y si el color RGB del píxel es diferente de 0xFFFFFF (blanco puro), se restará «1» al color del píxel en esa misma posición de la imagen portadora (o se sumará «1» en el caso de que el valor del píxel sea «0»), modificando así únicamente aquellos píxeles cuya posición correspondan a píxeles «pintados» en la imagen a ocultar. De esta forma, para poder obtener la imagen oculta, se irán comparando uno a uno los píxeles de la imagen recibida con los de la imagen original (secreta entre ambas partes) y en aquellos que sean diferentes, será donde se han ocultado los píxeles «pintados» de la imagen a ocultar. Hay que remarcar, que con esta técnica, es posible que no se obtenga exactamente la misma imagen que al principio en el caso de que se usen más de dos colores, ya que en su obtención solo se «pintarán» dos colores (blanco o negro) perdiendo todos aquellos valores intermedios.

Por último, comentar que cuando se ha explicado esta técnica se ha dicho que es «ideal» para imágenes de dos colores, ya que en esos casos será donde menos diferencia visual exista entre la imagen original y la imagen modificada, pero que también se podría utilizar para tener en cuenta 3 o incluso más tonalidades, ya que el ojo humano no es capaz de diferenciar entre todos los valores existentes de color.

Para poder entenderlo todo mejor y verlo con nuestros propios ojos, se han creado dos scripts que se encargarán de ocultar una imagen en otra (Ocultar una imagen) y de obtener la imagen oculta de una imagen en base al token establecido (Obtener imagen oculta).

Suponiendo que tenemos la imagen1.png funcionando como token, y queremos ocultar la imagen2.png, deberemos realizar lo siguiente:

php ocultar.php png png imagen1.png imagen2.png imagen3.png

Obteniendo así una nueva imagen (imagen3.png) completamente «igual» a la anterior, pero con la imagen2.png oculta en su interior. Cuando la otra persona reciba la imagen3.png, podrá obtener su imagen oculta ejecutando el segundo script de la siguiente forma (donde OBLIGATORIAMENTE deberá indicar la imagen utilizada como token):

php obtener.php imagen1.png imagen3.png imagen4.png

Para aclarar un poco más el ejemplo dado, se mostraran las diferentes imágenes que se han utilizado a lo largo del proceso:

Imagen 1: Imagen en la cual se ocultará la segunda imagen. Podríamos decir que esta imagen funcionaría como password, ya que únicamente la deberían poseer las dos partes de la comunicación.

Imagen 2: Imagen que queremos enviar a la otra parte de forma secreta y que ocultaremos en la imagen 1.

Imagen aux: Superponiendo ambas imágenes, podríamos ver cuales serán los píxeles que se modificarán en la imagen original (imagen1.png) al ocultar la imagen 2.

Imagen 3: Esta será la imagen que deberemos enviar a la otra persona y que contendrá la imagen 2 oculta en ella, sin que nadie más pueda obtenerla sin poseer la imagen 1.

Como se puede observar, no se aprecia ninguna diferencia entre la imagen1.png y la imagen3.png, pero si las comparamos, vemos como son archivos diferentes.

Imagen 4: Está será la imagen que obtendrá el receptor cuando la extraiga de la imagen 3. Como se ve, a pesar de que «pierde» calidad, el mensaje oculto puede leerse perfectamente.

Con este ejemplo, hemos podido comprobar como modificando algunas de las técnicas básicas de esteganografía, se pueden obtener resultados bastante más seguros y potentes para ocultar información secreta sin dar indicios de que existe información oculta en nuestros archivos ;)

Reto: ¿Dónde será el encuentro? – Solución

Hace unos días propusimos un nuevo reto en el blog, el cual consistía en obtener el lugar exacto donde se reuniría la banda que se había estado investigando desde hacía unos meses gracias la obtención de un archivo que había sido enviado a uno de los componentes y dos SMS guardados en el teléfono móvil de uno de los participantes de la banda que había sido detenido recientemente. Así que en esta ocasión, toca explicar la solución del mismo :)

Si analizábamos el fichero capturado, podíamos ver que se trataba de un texto codificado en base64, pero que al hacer su decodificación seguíamos obteniendo otro texto codificado en base64. Para solucionarlo, el primer SMS capturado decía: “Recuerda, la quinta es la importante.”, lo que significa que el archivo original se obtendría a la quinta decodificación. Por lo tanto, lo único que había que hacer era ir decodificando los archivos hasta llegar a la quinta decodificación.

Al realizar los pasos anteriores, obteníamos la siguiente imagen en formato GIF, la cual vemos que es un callejero de Barcelona (ciudad que puede ser fácilmente identificada por la “Sagrada Familia”).

Así que si probábamos “Barcelona” en el validador de la parte 1 podíamos abrir el archivo sin problemas, obteniendo así la solución a la primera parte del reto :)

Si investigábamos un poco esta imagen, lo único que encontrábamos era un comentario en el que se decía que no había nada por aquí, así que había que seguir buscando en otro sitio ;)

La siguiente parte del reto, se centraba en el contenido del segundo SMS, ya que decía: “Te esperamos en:uÖ%äFeM!”, lo cual parece indicar que nos está dando el lugar exacto del encuentro. El problema está en como interpretar la cadena “uÖ%äFeM!”, ya que no parece una codificación muy común.

La pista en este caso, se encuentra en el hecho de que se trata de un SMS, y los SMS utilizan las especificaciones establecidas en el GSM 3.40, donde se dice que los mensajes de texto serán codificados mediante el formato PDU.

Estudiando este formato, vemos como los caracteres del texto se codifican con 7 bits en vez de 8 para poder enviar un número mayor de caracteres. En la siguiente imagen podemos ver como funciona está codificación para el caso del contenido del mensaje.

En Internet, existen varios sites que nos permiten codificar/decodificar mensajes PDU, así que usando uno de ellos (como por ejemplo http://twit88.com/home/utility/sms-pdu-encode-decode) y obteniendo la codificación PDU de nuestra incógnita del segundo SMS, obtenemos la cadena hexadecimal “756E696F2C3743” (extrayendo aquellas partes que no nos interesan, como el número del centro de mensajes, el número del sender, la longitud del mensaje, etc.), la cual pasándola a caracteres ASCII se convierte en “unio,7C”. Así que probando este resultado como password del validador2, podemos abrir el archivo y comprobar como el nombre de la calle y el número donde se realizará el encuentro será “unio,7C”, consiguiendo así la segunda parte del reto :D

Hasta aquí llega la solución del reto. Como siempre, felicitar a aquellos que habéis conseguido llegar a la solución y los que no, espero que al menos hayáis pasado un buen rato intentándolo ;)

Reto: ¿Dónde será el encuentro?

Después de un tiempo sin proponer ningún reto, volvemos con nuestro equipo de investigación, el cual cree estar a un paso de conocer el siguiente punto de encuentro de la banda que llevan investigando desde hace unos meses.

Gracias a las últimas intervenciones realizadas, se hicieron con el siguiente archivo: captured_file, el cual pese a estar codificado, parece que proporciona información sobre el lugar en el que se realizará el siguiente intercambio. Además, en la detención realizada de unos de los miembros que participarían en el intercambio, se obtuvo un teléfono móvil el cual únicamente contenía dos mensajes de texto (SMS) en su memoria.

[Read more…]

THC-Hydra: Obtener credenciales de usuario por fuerza bruta

THC-Hydra es un software que se utiliza para crackear los sistemas de login de diferentes servicios como HTTP, FTP, TELNET, IMAP, SMB, SSH, etc. de una manera muy fácil y rápida, cuya última versión (7.4.2) se hizo pública el pasado 7 de enero.

Esta herramienta ha obtenido una gran reputación gracias a poder ser ejecutada desde consola tanto en sistemas Linux como Windows (ofreciendo además a los usuarios de Linux la posibilidad de utilizar una interfaz gráfica) y por poder ejecutar los ataques utilizando threads, dando al usuario la opción de elegir el número con los que quiere realizar el ataque.

Para realizar los ataques, su funcionamiento se basa en el uso de diccionarios, los cuales contendrán todas aquellas posibles opciones que se quieran probar. Siendo estos completamente necesarios para la ejecución del programa e ir probando las diferentes posibilidades y poder llegar así a obtener las credenciales de usuario.

Su ejecución básica desde la línea de comandos es muy sencilla: simplemente deberemos indicar el host que queremos atacar, el tipo de servicio, los archivos que contendrán los valores de usuario y de password, y las características de dicho protocolo (en caso de ser necesarias).

Para atacar a un servicio FTP por ejemplo, únicamente deberíamos indicar el host a analizar, el tipo de servicio (ftp), el fichero que contendrá la lista de usuarios (opción -L) y el fichero que contendrá la lista de passwords (opción -P), quedando una instrucción como la siguiente:

./hydra dirección_host ftp -L diccionario_users -P diccionario_passwords

Otro ejemplo un poco más específico, podría ser para realizar un ataque contra el login HTTP de una página web que envía los datos utilizando el método POST. En este caso además de los datos anteriores, se deberá especificar la url exacta del formulario de login, el nombre de los valores de usuario y password en el formulario web, y la cadena del código HTML que indicará si se ha tenido éxito o no (en base a la respuesta por parte del servidor). Para este ejemplo, la instrucción quedaría como sigue:

./hydra dirección_host http-post-form "/login.php?var_user=^USER^&var_pass=^PASS^:S=Login 
            correcto" -L "dicc_usuarios" -P "dicc_passwords"

Donde la url exacta del formulario es “login.php”, el nombre del parámetro del formulario que contendrá el usuario es “var_user”, el de la contraseña es “var_pass” y la cadena que indicará que el login es correcto es “Login correcto”.

En la siguiente imagen podemos ver cómo sería la salida con los diferentes usuarios y passwords que la herramienta va encontrando en el formulario de login HTTP por método POST:

Hay que remarcar que estas no son las únicas opciones que se pueden establecer en la herramienta, ya que por ejemplo también se puede especificar el número de threads a utilizar (opción -t), realizar el ataque con un usuario concreto (opción -l) o un password concreto (opción -p), añadir cookies (C=valor_cookie), añadir headers (H=valor_cabecera), etc. Por lo que se recomienda encarecidamente analizar las diferentes opciones que nos muestra la ayuda del programa (opción -h) y los diferentes enlaces de ejemplos y ayuda que se ofrecen en su página web http://www.thc.org/thc-hydra/.

Por último, decir que gracias a herramientas como THC-Hydra, podemos ver lo sencillo que puede llegar a ser obtener una lista de aquellos usuarios que utilizan contraseñas demasiado obvias y/o comunes. Por lo que una vez más se demuestra la importancia de crear contraseñas seguras en aquellos servicios que utilizamos.