OSINT Search Party
Cyber Hunter Academy write-up
El pasado sábado 26 de junio participé en el OSINT Search Party, un CTF organizado por Trace Labs. Este CTF, enfocado en OSINT, tiene una particularidad: el objetivo es encontrar información que pueda ayudar a resolver casos de personas desaparecidas. Son casos abiertos, reales, en los que la información obtenida se criba y se envía a las fuerzas del orden encargadas del caso. De forma colaborativa y gamificada, los equipos tienen seis horas para enviar flags (pistas), que los jueces evalúan y premian con puntos.
Además, en este CTF, no siempre hay una solución para cada caso. Cuando pones a prueba tus habilidades en Hack The Box por ejemplo, partes de la premisa de que existe un camino para hacerte con la máquina. Hay una solución. Aquí ese no es el caso. Puedes encontrar algo, o puedes encontrar absolutamente nada.
Resumen
Nuestro equipo de tres personas, consiguió la validación de 29 flags, que nos dieron 1270 puntos y nos permitieron quedar en el puesto 63. Para dar un poco de contexto, había 250 equipos participantes, de los cuales 171 consiguieron puntuar.
Como veréis, los equipos de la parte superior de la tabla arrasaron en puntos a la mayoría de los participantes. Ojalá esos equipos publiquen su propio write-up, estoy segura de que tenemos mucho que aprender. Me encantaría leer lo que escriben los ganadores: M3SS y Palenath.
Nuestro equipo fue capaz de presentar información sobre los 4 casos que nos presentaron. En dos de ellos, conseguimos piezas de información valoradas en 150 puntos. No fuimos capaces de conseguir nada de las dos siguientes categorías: Day Last Seen y Dark Web.
Obtuvimos la mayoría de las flags de fuentes de información a disposición de todo el mundo que no suponen ninguna complicación técnica, como buscadores, redes sociales y otros servicios web.
De esta primera experiencia, he sacado una gran cantidad de lecciones aprendidas, he puesto en práctica nuevas ideas y he podido aplicar OSINT for Good.
Antecedentes
Pero, vayamos un poco más hacia atrás. Días antes del CTF, Jezer se puso en contacto con varios miembros de Cyber Hunter Academy. Quería ayudar a esta buena causa, y nos ofreció patrocinar nuestra participación. También decidió ayudar de otras formas, pero eso dejaré que lo cuente él. Así que nos inscribimos varias personas y formamos dos equipos:
- CyberHunter_ES
- CyberHunter_Latam
El equipo
Los tres miembros del equipo CyberHunter_ES somos investigadores y entusiastas del OSINT, las metodologías de inteligencia, el hacking ético y la ciberseguridad.
Nuestra formación e intereses son variados, lo que siempre es interesante para este tipo de CTF. De los tres miembros del equipo, solo Jaime había participado antes en un CTF de este tipo. Álvaro y yo éramos novatos en este campo.
Si ya conoces como funciona OSINT Search Party, te invito a saltar directamente al apartado sobre nuestra participación. Si no, te recomiendo que sigas leyendo.
Search Party CTF
Reglas y limitaciones
El CTF tiene una serie de reglas, de las cuales me gustaría destacar tres:
Reconocimiento pasivo
Esto significa que puedes observar y recoger evidencias, pero no interactuar. Y esto tiene dos razones: evitar interferir por accidente con una investigación activa, y evitar causar más dolor o trauma a los familiares. Contacto cero. Eso quiere decir que, por ejemplo, está prohibido etiquetar, enviar solicitudes de amistad, darle a «me gusta» y/o cualquier otra interacción. La penalización es la expulsión del CTF.
Login Attempts/Password Resets
A corolario de lo anterior, están absolutamente prohibidos los Login Attempts/Password Resets. Esto incluye el uso e intento de login con passwords obtenidos mediante OSINT, pero también el inicio y ejecución de cualquier proceso de recuperación de contraseña. Y esto es importante, ya que hubo al menos un caso de baneo de un equipo por vulnerar esta regla.
Según mi punto de vista, Trace Labs aplica un enfoque conservador. Aunque muchos investigadores pueden entender la diferencia entre el procedimiento de recuperación de contraseña en Instagram o LinkedIn y el que existe en Twitter o Instagram. En el primer caso, según inicias el proceso, llega una notificación al usuario. En el segundo caso, se te muestra un aviso con información censurada sobre la dirección de email antes de enviar ninguna notificación. Pero siempre puedes tener a alguien más novato o que simplemente por despiste clique donde no debe, así que la esta regla se aplica con severidad.
La información tiene que ser accesible y verificable
Tanto por los jueces como por las fuerzas del orden. Esto quiere decir que cada flag que envías debe poder ser revisada. La información que se encuentra detrás de un servicio de pago no vale ningún punto ya que no puede ser verificada. Sería interesante conocer la postura de Trace Labs sobre el uso de servicios de pago para identificar información valiosa, y luego el uso de servicios accesibles para respaldar y documentar la evidencia.
El CTF
Los participantes, organizados en equipos registrados y a la hora exacta de comienzo del CTF, obtienen acceso a una plataforma de juego.
En ella, se nos presentaron 4 casos. Cada caso está acompañado de un enlace que da algo de información sobre la desaparición. En algunas ocasiones, la información de partida es muy escueta.
Cuando el equipo encuentra algo de interés, tiene que enviarlo al caso correspondiente. Por cada envío, hay que elegir la categoría de la información, proporcionar una URL para que el juez la verifique, y contextualizar adecuadamente la evidencia. Existen varias categorías:
Y esta parte es clave. Hay que explicar porqué consideramos esa pieza de información relevante y cuál es su vinculación con el caso. Además, se puede anexar una imagen para apoyar el envío.
Nuestra participación
Preparación
Una de las cosas que quisimos hacer, fue usar la máquina virtual creada por Trace Labs. La personalizamos un poco: actualizar, personalizar teclado, bookmark de OSINT combine, Data Miner, Scraper, Hunter, One Click Reverse / Search by Image, Full Page Screen Capture, VLC video downloader…
La realidad es que aunque la máquina estuvo lista a tiempo, no nos dio tiempo a que todo el equipo la tuviese descargada y en funcionamiento antes de que diese comienzo el evento. Está claro que es una lección aprendida para el futuro.
Al final cada uno usó lo que tenía listo. En mi caso, la máquina de Trace Labs. Pero como no me había dado tiempo a familiarizarme con ella, tiré en casi todo momento de búsquedas avanzadas y dorks de Google + otros buscadores y soluciones web.
Además, decidimos usar Discord para comunicarnos entre nosotros y Telegram como plan B.
Investigación
Se nos presentaron cuatro casos, que por privacidad comentaré censurando información.
- James Doe. Hombre adulto, Canadá. Seis meses desaparecido.
- John Doe. Hombre joven, USA. Cuatro meses desaparecido.
- Jane Doe. Mujer joven, UK. Dos años desaparecida.
- Jade Doe. Mujer adolescente. Menos de un mes desaparecida.
Cada uno de nosotros escogió un caso para empezar y dejamos uno en espera. Acordamos rotar los casos al atascarnos y en cualquier momento si nos sentíamos abrumados.
Buscadores
Como en casi todos los casos la información se limitaba a detallar nombre del sujeto, edad y lugar y fecha de la desaparición, lo primero que hicimos fue lanzar unas búsquedas rápidas: “nombre apellido” + “ubicación”. Con esto normalmente se podía conseguir más información sobre el caso, habitualmente de páginas de noticias. La información de páginas de noticias no proporciona puntos, pero sí información contextual valiosa para la investigación.
Además, puedes encontrar información de familiares y amigos, que vale entre 10 y 20 puntos.
En todos los casos los buscadores nos proporcionaron información útil. En algunos casos, como en el de James Doe, hubo que usar parámetros para excluir resultados, ya que el nombre coincidía con otra persona con amplia presencia en Internet. Para reducir ruido, excluimos los resultados que mencionan la profesión.
Redes sociales
Cuatro personas diferentes, con demografía diferente. El perfil de uso de redes sociales de un hombre adulto de Canadá, tiene diferencias con el de una adolescente de USA. Para optimizar el tiempo de búsqueda, es útil tener en cuenta la demografía para priorizar las búsquedas. Te puedes apoyar en artículos sobre ello, como por ejemplo este.
James Doe
Con James Doe partíamos de una cuenta de Facebook sin apenas contenido y una posible cuenta de Instagram, privada. No fuimos capaces de encontrar cuentas de Facebook de familiares, pero sé que otros equipos sí.
John Doe
John Doe fue relativamente frustrante. Por su demografía, era raro no encontrar ninguna cuenta en una red social. Nosotros no dimos con ellas, pero otros equipo sí:
- Un equipo consultó Steam y encontró una cuenta en la que el nombre coincidía, la fecha de actividad era previa a la desaparición y la ubicación coincidía con la identificada. Desde ahí fueron capaces de pivotar otras redes sociales utilizando WhatsMyName. Lo más interesante es que encontraron un canal de Youtube con varias listas de reproducción, una de ellas actualizada posteriormente a la desaparición. Una de las claves para validar estas cuentas fue la reutilización de la foto de perfil y nombre de usuario. Además, los intereses coincidían.
- Otro equipo localizó en Twitter una publicación en la que el padre de un compañero de la universidad, compartía el cartel de la desaparición. A través de ahí localizaron al amigo, después la cuenta de Steam del amigo y finalmente la cuenta de Steam de la persona desaparecida. Un gran ejemplo de movimiento lateral.
Lo que sí encontramos fue la cuenta de Facebook de su madre y otros familiares. Con ellas pudimos identificar a su padre y a su hermana.
Con una foto de su madre, con su padre en ropa de trabajo, hicimos una hipótesis sobre la profesión del padre, que no pudimos validar. Y a través de los datos de sus padres, pudimos ubicar su dirección exacta, que documentamos y adjuntamos con una captura de Google Maps.
Jane Doe
Fuimos capaces de reconstruir prácticamente todo el árbol genealógico de Jane Doe (madre, padre, hermanos, primos y tíos) y además vincularlo con perfiles concretos de Facebook. Además, las publicaciones de su familia nos llevaron a identificar otras personas de interés, aficiones y fotos que pudimos usar en búsquedas de imágenes.
Identificamos también la página de Facebook del negocio de su padre y su perfil en Google Maps. Lo que nos llevó a la que considero la flag más perturbadora de todas. Una reseña en la que se acusa a uno de los empleados de conductas impropias con menores. No pudimos encontrar al empleado, así que documentamos todo lo mejor posible y lo enviamos como flag.
Esta flag es un buen ejemplo de una premisa que cualquier participante debe tener en cuenta durante un CTF de estas características: ten siempre presente el límite entre lo que como participante del CTF puedes hacer y lo que es responsabilidad de las fuerzas del orden que llevan el caso.
Jade Doe
Las búsquedas sobre perfiles de Jade Doe proporcionaron gran cantidad de resultados, pero difíciles de confirmar. Esto fue debido principalmente a que o eran privadas, o tenían poco contenido. Y en muchas ocasiones, este contenido eran imágenes o fotos que no eran ni de ella ni sobre ella.
De donde obtuvimos más información, fue de una cuenta de Youtube con un par de vídeos publicados. Aunque en ninguno salía su cara, ya que estaban grabados desde su punto de vista, no encontramos evidencias en contra de esta hipótesis.
La edad de la persona que grababa coincidía con la que tendría Jane en el momento del vídeo, así como lo que parecía la ubicación, un colegio. Al analizar el video frame a frame, identificamos una marca en su mano izquierda, que enviamos como pista (Advanced subject Info, posible identificador único).
Otro participante comentó que en el análisis por frames, fue capaz de identificar la ubicación exacta del colegio. Teniendo en cuenta el lugar de residencia, averiguó qué centros educativos había en la zona y fue capaz de identificar qué centro educativo era gracias a la mascota del colegio / instituto.
Otras fuentes de información
Nuestro equipo identificó y contrastó la mayoría de las flags mediante el uso de motores de búsqueda (Google, Yahoo, Bing, etc.) y redes sociales. Utilizamos otros servicios web para ayudarnos a validar la información obtenida y para complementarla.
A través de True People Search conseguimos información de direcciones físicas y de emails, tanto de personas desaparecidas como de familiares, en USA. Buscamos las direcciones de email en Have I Been Pwned y otros servicios similares para obtener información sobre servicios que usan.
Nos hubiese gustado poder usar algunas fuentes de información que sabemos que tienen gran valor, como por ejemplo Pipl, pero entraba en la categoría de paywall y estaba vetada.
Conclusiones
Es una experiencia que me gustaría repetir y que aporta a muchos niveles.
En primer lugar, espero que alguna de las flags que alguno de los equipos haya enviado, pueda arrojar algo de luz sobre cualquiera de los casos de personas desaparecidas que investigamos.
En segundo lugar, es un CTF increíble para poner a prueba tus habilidades en un entorno real bajo presión (recuerda, seis horas de tiempo límite).
Y en tercer lugar, es una gran oportunidad para trabajar en equipo y probar y aprender nuevas capacidades y herramientas.
Lecciones aprendidas
De estas intensas 6 horas de participación, salgo con varias ideas que me gustaría poner en práctica en el próximo evento:
- Documéntate. Lee write-ups de otros participantes. Tanto ganadores, porque te van a dejar con la boca abierta, como gente de otro nivel. Aprende lo que funciona y lo que no.
- Maximiza el equipo. Este CTF tenía cuatro casos de personas desaparecidas. Nosotros éramos tres. Esto quiere decir que siempre había al menos un caso que no estaba recibiendo atención.
- Diversifica el equipo. Estás investigando personas. Es muy útil tener gente con diferentes habilidades e intereses. Uno de nuestros casos había ocurrido en una zona francófona y ningún miembro de nuestro equipo hablaba francés. ¿Es un impedimento serio? Seguramente no. Pero cuando solo tienes 6 horas para 4 casos, es mejor dedicarlos a investigar que a traducir texto.
- Comunícate. Establece previamente un canal de comunicación. Idealmente, que soporte texto, voz y compartir pantalla. Pruébalo por adelantado.
- Ten preparado tu entorno de trabajo. Quisimos probar la máquina virtual creada por Trace Labs, con algunas modificaciones (actualizaciones y herramientas extra). La máquina estuvo lista a tiempo, pero no nos dio tiempo de compartirla entre todos los miembros del equipo.
- Ten listas plantillas de trabajo, como esta o esta, o formas estructuradas de organizar la información. Asegúrate de que puedas trabajar de forma colaborativa en tiempo real. Tú puedes dedicar una hora a un caso y luego pasarlo a un compañero. La idea es que tu compañero pueda darte el relevo, no tener que empezar de cero.
Recomendaciones
También nos salieron muchas cosas bien. Las enumero aquí y os invito a unirlas a la lista de lecciones aprendidas. La combinación de ambas es clave.
- Facilita la revisión al juez. O en otras palabras, documenta bien cada envío. Usa los campos de texto para explicar tu razonamiento. Saca partido de la posibilidad de enviar una imagen. Piensa si merece la pena incluir un mapa mental que soporte tu evidencia cuando sea difícil expresarlo en texto.
- Sé educado con el juez y entiende su función, misión y método de evaluación. Lee la guía del juez.
- Familiarízate con la plataforma. Si no has participado antes y tus compañeros de equipo sí, pide que te expliquen su experiencia. Lee la guía del participante.
- Usa una máquina virtual y testéala por adelantado. Sigue las directrices de Trace Labs o del magnífico libro de Michael Bazzell, Open Source Intelligence Techniques.
- Investigas personas y las personas, suelen tener redes sociales. Incluso si tu objetivo no las tiene, es posible que las personas de su entorno sí. Crea sock puppet accounts. Ten en cuenta que pueden ser baneadas y ten un plan B si puedes.
- Ten en cuenta la demografía. El perfil de uso de internet y redes sociales de una mujer adolescente de USA, no es el mismo que el de un hombre adulto de Canadá. Las diferencias en las redes sociales que usan, jerga y forma de interacción pueden ser enormes.
- Para cuando necesites parar y juega en equipo. Al investigar casos reales, puedes encontrarte con temas complicados. Tomate unos minutos de descanso o cambia de caso si lo necesitas.
- Ten en cuenta tus sesgos. Y en un evento como este, principalmente el sesgo de la correlación ilusoria y el sesgo de confirmación.
- No pierdas de vista el objetivo. Que no es otro que ayudar a las fuerzas del orden en sus investigaciones. Entiende dónde empieza y acaba tu labor.
👉🏾 Únete al canal @cyberhunteracademy en Telegram para aprender más OSINT
Redacción: Naiara Morales
Revisión: Jezer Ferreira