El Binomio Indispensable para la seguridad informatica, Redes y Programación.

Después de cierta situación en donde me toco hablar con alguien acerca de que creo yo que se debe estudiar antes o a la par mientras se entra en el camino de la seguridad informática, me puse a pensar, ¿por qué tanta gente tiene las mismas dudas, a pesar de tantos videos, post, podcasts y artículos que existen acerca del tema? ¿Por qué la gente siempre pregunta esto? Entonces me di a la tarea de ver algo de este material y me encontré con una realidad; el enfoque que se le da a muchos de estos artículos es mayoritariamente teórico, lo que quiero decir es, que no se basan en ejemplos, según mi parecer, puede que esto no permita que los interesados vean e interioricen por qué hay que estudiar cosas complementarias a la seguridad informática.

Con lo anterior en mente, se me ocurrió la “brillante idea” XD de escribir un post, acerca de lo que YO creo que se necesita en este campo, pero desde un enfoque más de ejemplos que teórico; mientras pensaba en cómo hacer esto, en mi trabajo se me apareció un buen caso, así que, usando este caso real, les voy a mostrar desde un enfoque practico y con ejemplos, porque es necesario saber de redes, programación y un segundo idioma.

Como muchos de mis casos de trabajo, inician con un email que me obliga a entrar en lugares oscuros y de peligrosa reputación escuchando y buscando amenazas contra mi empresa, uno allí se encuentra de todo y entre las cosas que me encontré fue un “leak” de una famosa empresa de telefonía, el “leak” (lo pongo entre comillas porque se podría catalogar más como scraping que como leak. Igual según la definición de leak aceptada por CISA esto es leak) afecta a los usuarios de El salvador. Abajo se puede ver una foto del post original.

Ilustración 1 Publicación original referente a la fuga

Mirando el post de la filtración, observe una pequeña muestra en la parte de abajo, lo cual es normal, pero me pareció un poco pequeña. En ese momento llegue a pensar que era una filtración en toda regla, porque se habla de una base de datos con información personal con un gran número de registros. Además, el actor responsable del post goza de una reputación decente, por esto se puede considerar que la filtración es 60-70% confiable (verídica).

El siguiente paso fue verificar un link a un grupo de Telegram que se encontró en el post original. Entrando al grupo, me doy cuenta que hay un video en el cual, en teoría, el actor muestra como obtuvo la información, en ese momento, me cambio la opinión de un leak en toda regla, fruto de una penetración de un sistema, a fruto de scraping.

Ilustración 2 Screenshot del video

Scraping: Una técnica que es algo así como, hacer un ataque de fuerza bruta contra una contraseña, donde se prueban todas las posibles contraseñas cambiando de uno en uno. En este caso el concepto es el mismo, pero en lugar de atacar una contraseña se hace cambiando un parámetro que normalmente numérico y se hacen cambios de uno en uno hasta que se consigue algo de información.

En la Ilustración 2, la del video, se puede ver bien en la columna numérica (segunda columna de izquierda a derecha), como la numeración es “consecutiva”, de lo que a mi parecer son números de teléfono (La verdad no soy de El salvador y no sé cómo sean los números de teléfono allí).

Luego de ver el video, al seguir mirando que más había en el grupo, me encontré con un script de Python con la siguiente etiqueta “Script used in this 0day ****star leak.”, en otras palabras, este es el código que el atacante uso para extraer la información y dice que es una vulnerabilidad de día cero, (el que quiera saber que es un 0day o una vulnerabilidad de dia cero, aqui en link a wikipedia https://en.wikipedia.org/wiki/Zero-day_vulnerability ).

Ilustración 3 foto del script encontrado

Este script si me pareció curioso, entonces lo descargue, para ver de qué se trataba. Abajo pueden ver el código.

Ilustración 4 Código del script 0 day encontrado

Aquí es donde sirve saber de programación, para ver en realidad donde está la vulnerabilidad, cual es el alcance de esta y como mitigarla.

Señor lector le propongo que dedique 5 minutos entendiendo el código, después siga leyendo el articulo a ver si llegamos a la misma conclusión.

AGREGUE UN ESPACIO LARGO

¡Listo!
Mi conclusión sobre este código es que el actor hizo scraping, en lugar de explotar una vulnerabilidad grave en el código (el scraping también es una vulnerabilidad). En la línea 60, se hace una petición get a una URL que se encuentra en la línea 50, en esa variable (URL), hay otra variable que se llama “starting_number”, ese es el parámetro que cambia en cada petición, la variable “starting_number” aumenta de uno en uno (ver la línea 87) y hace nuevamente la petición get mientras esta sea menor que “Limit” (línea 42). En caso de que la respuesta a la petición get (línea 60) sea igual a 200 (línea 61) entonces captura la información la transforma y la escribe en un archivo, en caso contrario, simplemente por pantalla muestra un error “Error en la respuesta del servidor:”, luego continuo incremento de la variable para seguir en el proceso de raspado (scraping).

Otra cosa para resaltar es el uso de un UserAgent especifico en las peticiones, esto puede tener dos razones:

  1. Evitar la detección, haciendo creer que es una máquina de la misma empresa o una aplicación de la empresa.
  2. Para autenticarse y tener acceso a los recursos. En muchas ocasiones el UserAgent se usa como método de autenticación y autorización

El resto del código es para la optimización del proceso de scraping.

Conclusión


En este ejemplo se pueden ver algunas cosas extra que se deben aprender o que son muy útiles a la hora de trabajar en seguridad informática

  1. Un idioma extranjero, sin él, el trabajo se dificulta, o más bien se limita el rango de información al que tenemos acceso.
  2. Tener bases de programación, sin esto para revisar el código se tarda uno más tiempo del necesario, además se complica la cosa a la hora de identificar que hace el script, que partes vale la pena mirar y cuáles no.
  3. Entender de redes, sin esto igual nos tardaríamos más en entender y comprender el código, ¿qué es la petición get?, ¿qué significa el retorno de 200?, ¿en lugar de ese valor, por que no 400?, ¿Que es la cabecera de paquete http, como funciona, cuáles son sus campos?
  4. Ultima cosa que quiero decir. En seguridad todo conocimiento suma, nada resta, todo ayuda; en este caso si en algún momento de mi vida me hubiera tomado la molestia de entender como son los números de teléfono en El salvador, probablemente podría decir con certeza que son los números que el actor cambia para hacer scraping.

Deja un comentario

search previous next tag category expand menu location phone mail time cart zoom edit close