jueves, 26 de julio de 2018

Auditando una librería en 16 horas

Hace unos días en el trabajo me asignaron una tarea donde tenía que auditar una librería, la funcionalidad de la librería era poder leer diferentes formatos de documentos (PDF, WORD, TXT, etc) y estaba programada en C#.

Como nunca había hecho algo del estilo no sabía como comenzar, por eso estoy escribiendo este post, por si alguien tiene algún caso como el mío que pueda servirle como una guía.

Al ser una librería y no ser una aplicación o algo parecido no podemos trabajar sobre un entorno real, por lo que lo que tenemos que hacer es una serie de recomendaciones que los futuros programadores puedan usar para no tener fallos de seguridad al hacer sus aplicaciones sobre esta librería, y para esto vamos a partir de la base de que no crean ningún filtro y todo lo harán tal cual funcionan las funciones en las librerías.

Además de esto, esta auditoria tenía un poco de prisa, y la librería era bastante grande, por lo que en lugar de poder leer todo el código tuve que hacer como una especie de Checklist de las cosas que eran importantes de mirar. Vamos a pensar las cosas que podrían provocar una posible vulnerabilidad.


  • ¿El código está ofuscado? Esto es lo primero que pensé, ya que al ser C# este código es legible, y el hecho de que no esté ofuscado facilitaría mucho la tarea de un posible atacante para ¿?encontrar vulnerabilidades en una aplicación que estuviese programada con esta librería.
  • ¿Tiene algún Buffer Overflow? Bueno este punto lo descarté debido a que la librería esta programada en .NET, el cual hace una eficiente gestión de la memoria, y para provocar aquí un Buffer Overflow habría que hacerlo con esta intención.
  • ¿Cómo actúa la funcionalidad de guardar ficheros? Es importante saber si sobrescribe ficheros o deja guardarlos con cualquier extensión.
  • ¿Cómo actúa la funcionalidad de cargar ficheros? Igual que en el anterior es importante conoces si hace algún filtro por extensión, además pensé que tal vez al detectar que se carga un fichero ".docx" ejecutara los macros.
  • ¿Tiene alguna función de cifrado? En caso de que si habría que ver si estas funciones son seguras o están ya desfasadas.
Una vez hecha nuestra lista de posibles fallos de seguridad nos vamos a poner manos a la obra.


Ofuscación del código

Al estar programado en C# decompilarlo es algo sencillo, lo único que hay que hacer es usar alguna herramienta como DotPeek.

Una vez decompilado el código pude ver que tenía una ofuscación muy pobre, algunas funciones tenían un nombre extraño, pero el código dentro de estas funciones no tenía ningún tipo de ofuscación, por lo que el código era totalmente legible.

Funcionalidad de guardar ficheros

Una vez tenemos el código perfectamente legible lo primero que hice fue buscar la funcionalidad encargada de guarda ficheros, en este caso era "Save()", estaba dentro de una clase donde se guardaba toda la información de dicho Documento y se le pasaba por parámetro el path y el nombre del fichero para guardarlo.

Dentro de esta función detectaba a través de la extensión el tipo de documento, y al no detectar que fuera ni PDF ni WORD lo guardaba en texto plano y sin ningún filtro de extensión.

En caso de que la aplicación funcionara por HTTP, deberían aplicar un filtro de extensiones para evitar una subida arbitraria de ficheros, yo creé una pequeña POC para mostrar esto.


Además de esto pude comprobar que la sobrescribía ficheros sin ningún tipo de validación, por lo que depende de la aplicación podría derivar en una elevación de privilegios.

Imaginemos esta situación:

  1. Nos encontramos con tres usuarios, dos de ellos son administradores y otro es usuario sin privilegios.
  2. Hemos conseguido acceso al servidor con el usuario sin privilegios, sin embargo la aplicación se encuentra abierta con privilegios de administrado.
  3. El otro usuario administrador tiene un programa en el registro de Windows el cual se inicia al iniciar sesión.
En este caso tendríamos la posibilidad de sobrescribir el programa del otro usuario administrador y sobrescribirlo por malware obteniendo así una elevación de privilegios.



Funcionalidad de cargar ficheros

La función que se encargaba de esto era "Load()" y, aunque en ningún momento les hacía caso a las macros de un fichero de WORD (lo cuál me dio mucha pena), tampoco aplicaba ningún filtro de extensiones.

El peligro en este caso reside en que, en el caso de que hicieran una aplicación funcionando por HTTP, podrían obtener información privilegiada, algo así como si fuera un LFI.

Aquí prepare una pequeña POC mostrando que con esta función sin ningún tipo de filtro podría obtenerse el código del PHP que habíamos subido con la funcionalidad de guardar ficheros.


Funcionalidades de cifrado

Funcionalidades que se encargasen de cifrar solo encontré una rebuscando entre el código, sin embargo los algoritmos que se encargaban de esto ya estaban desfasados.

Encontré un estandar llamado FIPS 197, que advierte de los peligros del uso de RC4 al encriptar PDFs, en lugar de este algoritmo recomienda usar AES con claves de cifrado de 128 bits.

En el código de la librería solo se permitía el uso de RC4 con dos tipos distintos de claves.


Hasta aquí es todo lo que encontré yo, también es verdad que tuve poco tiempo para realizar la auditoria. Espero que este post le sirva a alguien que se encuentre un caso parecido en un futuro.

Saluti.

ai pocas fotoh por temah de confidensialidad

domingo, 22 de julio de 2018

Hackeando a Manolo el Barbas [Parte 1] - Recolección de información

Hace un tiempo di una charla la cual no pude grabar, y para que no quedase en el olvido he decidido hacer una serie de Posts donde explique todo lo que dije en la charla de una forma más detallada.

El título de la charla era "Hackeando a Manolo el Barbas" donde la idea era crear un perfil online de una persona y explicar el proceso que llevaría un posible atacante para obtener información privilegiada y acceso a este perfil. De esta forma dividiré la serie de Posts de tal forma que explique cada uno de los pasos siendo de la siguiente forma.

  1. Obtención de información pública de la persona o Doxing.
  2. Buscando y adivinando la contraseña.
  3. Obtención de contraseña con engaños y saltando el 2FA.
  4. Robo de datos a través de Malware.
Vamos a partir de un perfil de twitter, y a partir de ahí intentaremos sacar y guardar toda la información que podamos encontrar.


Tan solo de aquí podemos encontrar ya cierta información que nos puede resultar de ayuda:
  1. Nombre: Manolo
  2. Apellido: El Barbas
  3. Nick: MalElBarbas127
  4. Ciudad: Málaga
  5. Profesión: Publicista
Sigamos buscando información en el Twitter, para ello vamos a mirar sus tweets a ver que encontramos, en este caso podremos ver el siguiente Tweet.


De este tweet podemos obtener dos cosas:
  1. Hobby: Fútbol
  2. Registrado: mushofutbol.com (Esto nos puede servir por si la web es vulnerable).
Sigamos obteniendo informacíón de Twitter, para eso vamos a usar: https://tinfoleak.com/#contact, donde pondremos el usuario y el email a donde queremos que nos envíe la información.

Al rato nos llegará un email con un reporte de toda la información que puede sacar de este perfil, en mi caso no es mucha información ya que es un perfil falso y no ha tenido mucha actividad.


Ya que hemos recolectado suficiente información de Twitter vamos a seguir mirando por otro sitio, hay una herramienta muy útil de búsqueda de información la cual se llama OSINT Framework, que la pueden encontrar aquí: http://osintframework.com/

Nosotros usaremos la herramienta https://namechk.com/, la cual sirve para buscar mas perfiles a partir de un nombre de usuario, esto nos servirá para poder recolectando información.


Aquí podemos ver que también tiene un perfil de Facebook, así que iremos a su perfil para ver que más podemos obtener.

Aquí podemos ver que además de vivir en Málaga estudió en la Universidad de Málaga, y además de esto poca más información pública podemos ver ya que es un perfil ficticio con poca actividad.

Una vez hecho esto vamos a intentar obtener el correo electrónico, para esto nos vamos a ayudar de la funcionalidad de he olvidado mi contraseña tanto en Facebook como en Twitter, donde poniendo el usuario nos da una pista de como es el correo electrónico.


De aquí podemos sacar la siguiente información:

  1. El correo parece acabar con "@gmail.com".
  2. El correo contiene 17 dígitos.
  3. El correo comienza con ma.
  4. El número de teléfono acaba en 22.
Lo siguiente que haremos será usar esta misma funcionalidad pero con Facebook.

Aquí además de esto podemos ver que antes del @ se encuentra un 7, ahora nos encontramos antes un tarea de deducción.

  1. Partimos de esta base: ma**************7@gmail.com
  2. Deducimos que el número 7 es igual que en el nickname: ma************127@gmail.com
  3. Por el tamaño vemos que coincide con el nombre: manoloelbarbas127@gmail.com

Vamos a comprobar que este email con: https://verify-email.org/

Vemos que el email existe, además podemos comprobar que exista en Twitter con la misma funcionalidad que usamos para obtener los datos.



Aquí podemos ver que el número de teléfono es el mismo, así que aumenta las posibilidades de que ese sea el mail, de la misma forma podemos hacer esto con Facebook.


Aquí directamente nos dice que ese es el usuario al que nos referimos, de forma que lo estaríamos confirmando.

Toda la información que hemos llegado a obtener es la siguiente:

  1. Nombre: Manolo
  2. Apellido: El Barbas
  3. Nick: MalElBarbas127
  4. Ciudad: Málaga
  5. Profesión: Publicista
  6. Hobby: Fútbol
  7. Registrado: mushofutbol.com
  8. Email: manoloelbarbas127@gmail.com
  9. Teléfono: *******22

Me gustaría por último añadir que en muchas ocasiones los ajustes de privacidad de las plataformas nos retrasan este proceso, por lo tanto es bueno crear un perfil falso para agregar como amigo o seguir al usuario de tal forma que la cantidad de información que podamos obtener sea mayor, en los que en algunos casos podemos obtener el correo electrónico solo mirando el perfil del usuario dependiendo de como lo tenga configurado.

Hasta aquí hemos llegado por hoy, en las próximas semanas seguiré escribiendo las demás partes de la charla.

Saluti.

la vin la k le vamoh a lia a manolo


jueves, 19 de julio de 2018

Empieza un nuevo camino

Tras varios meses pensándolo ayer decidí separarme de Underc0de, fue algo duro, pues después de 5 años separarte de una gente que te ha dado tanto es difícil, pero las cosas se acaban, en este caso no es mi final en "InfoSec(?)".

Los motivos por los que me separo de Underc0de son personales, y no ha habido ningún tipo de peleas ni discusiones (por si alguna maruja se lo pregunta), ellos conocen mis motivos y me he despedido, y allí quedará guardado para siempre, al igual que todos los recuerdos.

¿Por qué no es mi final en InfoSec? Basicamente he decidido seguir mi camino yo solo, todo lo que hacía en Underc0de lo haré por mi cuenta en este blog, además retomaré la idea que tenía de escribir cosas que me pasaran en mi día a día en la seguridad informática, en resumen para que quede más claro el blog se dividirá en dos partes:

1º Papers, tutoriales, e investigaciones que hago por mi cuenta y que me parece interesante compartir. (Aquí incluiré todo lo que he ido posteando en Underc0de a lo largo del tiempo poco a poco)

2º Experiencias en conferencias, con gente que me encuentro por internet, laboral, etc.

Además de esto me he propuesto escribir un Post semanal, cosa que es bastante complicada, así que si tienes algo que quieres compartir con el público me puedes contactar en:

rolosfh@gmail.com

Saluti.

Ehpero que me leyais de ves en cuando.

lunes, 5 de septiembre de 2016

Los reportes, la historia de los forajidos informáticos.

Muy buenas a todos, ya que este blog va dedicado a contar experiencias dentro del mundo del hacking y la seguridad informática, me gustaría compartir a parte de mis experiencias, otras situaciones que les hayan podido pasar otras personas, si estás interesado en contar alguna experiencia contactame, ya sea por Twitter, por Facebook o por correo.

Hoy os voy a dejar algo muy interesante que le pasó a un usuario de Underc0de llamado Copernico.

Los reportes, la historia de los forajidos informáticos.

Para todos los que nos dedicamos al tema de la informática y la seguridad, ya sea por hobby o por trabajo, reportar vulnerabilidades es un trabajo riesgoso que a los diseñadores y administradores no les suele sentar muy bien y por ello suelen reaccionar de mala manera. Esto es bastante comprensible ya que a nadie le gusta que le digan que hace mal su trabajo, imaginaos al panadero, que de repente llegan a su panadería y le cuentan que hace mal el pan, por supuesto no le sentará bien. Sin embargo, si la vulnerabilidad es reportada con educación, respeto y lo más importante, sin hacerse el sabiondo, se suelen recibir respuestas más relajadas pero tampoco mucho más agradables (por lo general un: vale lo revisaremos).

Ojalá hubiese sabido esto hace un año cuando apenas había reportado un par de fallos y lo hacía rápido y mal, sin explicar quién era ni  como lo había descubierto. Mi caso se dio en una tienda de cámaras y dispositivos de vigilancia que tenía, y tiene, un fallo SQLinjection. El no saber cómo reportar y hacerme un poco el sabiondo hizo que me respondieran de una manera seca y como si fuese cachondeo.




Aunque la verdad es que me respondieron más o menos igual que como yo les escribí XD. Lo tengo merecido. Lo dejé correr y seguí a lo mío intentando aprender hacking.

La cosa es que como por aquel entonces no tenía mucha idea (solo hacía SQLI para ser más exactos) solía repetir muchas veces lo mismo a la hora de buscar vulnerabilidades a lo loco por Google (sí, daba asco, lo sé)  me volvió a aparecer la misma página y me pregunté: “¿serán tan inútiles como desagradecidos?” Y me metí de nuevo, por supuesto no lo habían arreglado por lo que les mandé otro mail pero en esta ocasión algo más contundente, les dije su contraseña de administrador –que por cierto, era “Administrador” y el usuario el nombre de la web con un 1 al final, si señor– y que al igual que yo cualquiera podría robarles la información.  Tras esto se enfadaron un poquitín, con razón, y me respondieron lo siguiente.


Es en este momento cuando a alguien con muy mala idea como yo se le pasa por la cabeza: …';shutdown -- … Pero eso es solo para Navidad a modo de regalo.

La verdad es que cuando a uno le llaman criminal se piensa las cosas dos veces pero en este caso supongo que lo dijeron para acojonarme y que les dejase en paz o la policía pasó de ellos, ya que a partir de ese mail no recibí nadad más, aunque a día de hoy siguen igual, pero yo me callo y todos contentos… Sea lo que fuere hay que aprender de los errores, yo ya tengo mi propia “disculpa-advertencia” pre-escrita  para cuando tengo que reportar fallos, la copio, le cambio los nombres de las webs y del fallo y lista para mandar . No es gran cosa pero me encargué de hacer hincapié en que es sin querer y que no les he provocado ningún daño para que se queden tranquilos. No he sido muy laureado durante este añito que llevo de reportar pero no todo son malas noticias el 31 de agosto por fin alguien me agradeció que les hubiese encontrado un fallo. En una web de juegos y apuestas me regalaron 20.000 points y desde aquí se lo agradezco.



Parece ser que no todos los administradores se lo toman a mal y es que si se hace con educación y respeto cuenta la leyenda que algunas empresas lo agradecen… Pero vamos que son solo leyendas, no busquéis beneficio a la hora de reportar porque os vais a llevar un canto en los dientes.
Muchas gracias, espero que os haya gustado.


Gracias Rollth por darme esta oportunidad a un neófito como yo en el mundo del hacking. 

Saluti.

Grasias Copernico por escribi el pos, io solo pensaria en vengasa!!!!

domingo, 10 de abril de 2016

¿Eficacia en los servicios públicos? Cuéntame más...

Hace unos días encontré una vulnerabilidad XSS en esta página web y aunque era una web sin ningún excesivo interés ni mucha información confidencial me decidí a reportarlo.

Tardó en contestarme diciendo que lo había arreglado 11 minutos. Aquí es cuando te preguntas: ¿Y a mi qué me importa todo esto? Y tienes toda la razón, no me importa ni a mí :D

La cuestión es que echándole un vistazo a la página web de la universidad de Granada encontré en relativamente poco tiempo 3 vulnerabilidades diferentes, entre las que había 2 XSS y un upload.php bypasseable. Hasta aquí todo bien (relativamente), el problema llega cuando envías un correo a la universidad y nunca (hasta el momento) se te responde.

Al tiempo entrando otra vez en la web de la universidad, encuentro de casualidad otra XSS, y ya que no se me había contestado al correo decidí poner este tweet.

En esta ocasión si me respondieron al instante por MP y la conversación fue tal que así.



Aquí dejé la cosa y no volví a prestarle atención a este tema hasta hoy cuando he visto esto.

No han arreglado después de casi un mes ninguna de las vulnerabilidades que reporté, ¿Por qué en una web sin mucha importancia tardan en arreglar un fallo 11 minutos y en otra web con mucha información confidencial e importante directamente no lo arreglan? Yo creo que la respuesta es obvia, la gente se toma a broma la seguridad y así, la gente mala como yo os vamos a hackear a todos ¡A TODOOOOOOOS!

Saluti.

Este no tiene grasia, pero eh que no veah la mala leche que me ha entrao por tol cuerpo.

miércoles, 9 de marzo de 2016

Recopilación peticiones.

Muy buenas, cree este blog con la intención de mostrar algunas situaciones que se dan en el día a día de la seguridad informática (no es nada técnico, en caso de que quieras ver post míos sobre seguridad haz click aquí). Y me pareció una buena idea poner algunas de las peticiones que me hacen desde que soy parte del staff de Underc0de.



El primero que quiero mostrar es uno de los que más me han molestado, no por la petición en sí (que me dan todas igual, ya te hagan bulling o tu novia se lie con su jefe), si no porque he conocido a poca gente tan pesada, os pongo unas fotitos para que veais.



Empezó a pedirme esa estupidez a las 16:54, y después de media hora en los que envió mas de 50 mensajes le gasté una pequeña broma a ver si se callaba (Soy un iluso).


Esto siguió un rato bieeeen largo. La siguiente que quiero enseñar es una chica que yo creía que estaba intentando ligar conmigo (por eso de mi belleza absoluta), pero al cabo de una semana me demostró que no, que la gente simplemente es interesada.

No he encontrado la conversación, pero tengo la foto de cuando me rompió las ilusiones de que en algún momento fuera a tener a alguien que me quisiera y la historia amorosa de su amiga (puedo prometer que me estaba tirando mucho la caña).



Este link tiene la historieta que me contó para que hackease el Facebook.

Por último quiero decir que si alguna vez tienes pensado pedirle a alguien que te hackee algo (o cualquier otro favor) piensa que el que está al otro lado de la pantalla también es una persona, e intenta no ponerte pesado (Y PAGA!!!! PAGA!!!!).


Saluti.


No veah lo bien que ma queao pa seh el primero.