martes, 23 de junio de 2020

Quando arrivo a casa tua, me pongo a enumerar

Siempre que me das acceso a la tua casa/organización, lo primero que hago es obtener los datos referentes a la dirección IP de la máquina desde la que estoy conectado, así como los datos del servidor DHCP y del servidor DNS, si los hubiera.

Mi intención con ello es explorar el entorno para ver donde se encuentran los peligros y las medidas de seguridad

Después de obtener los datos anteriores y sabiendo que mi objetivo es conocer como se encuentra la red, realizo:

1.-       Un traceroute o un tracert, dependiendo del sistema operativo que maneje en ese momento, para saber qué elementos hay entre mi conexión y los servidores DNS y DHCP.

Lo encontrado sería "estudiado" posteriormente, pero no en ésta entrada.

2.-      Se realiza una conexión mediante el comando: nslookup, para realizar consultas inversas al servidor DNS de la tua organización

La primera petición de resolución inversa es la del propio servidor DNS, es decir, solicito el nombre del servidor DNS mediante el envío de su IP.

Si tenemos resolución, ¡tenemos una mina de oro!

No necesitaremos intentar hacer una transferencia de zona, con lo que ello implica, posibilidad de no conseguirlo y lo peor, detección por parte de las medidas de seguridad existentes que desconocemos. Si no que, podemos empezar a solicitar peticiones de resolución inversa ¡¡¡A LO BRUTO!!!

Para ello, podemos generarnos un pequeño script… pero, puede ser muy llamativo la cantidad de solicitudes de resolución inversa que parten desde nuestra máquina, y tampoco sabemos nada sobre las medidas de seguridad implementadas en el servidor DNS.

Por tanto, es mejor no llamar mucho la atención, por ello es preferiblemente desarrollar un script que permita consultar rangos de red de tipo C, como por ejemplo:

NOTA: Si te gusta el: ¡A LO BRUTO!, puedes modificar el código.



             Ahora... a preguntar, que el saber no ocupa lugar!, o eso dicen.
        
             Este código y alguno más lo dejo en mi github, por si os sirven de algo.
        
             En cualquier caso…

             Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia.

jueves, 14 de mayo de 2020

Arañita, ¿dónde vas?


Siempre he querido crear mi propio “spider” en bash, para no tener que utilizar herramientas externas.

A este respecto,  aproveché un trabajo de hace unas semanas para desarrollar la idea anterior, es más, aproveché para darle más funcionalidades, porque así lo necesitaba para mi trabajo.

La funcionalidad incorporada es la de detectar los distintos tipos de extensiones de los distintos documentos que posee el sitio web, y la posibilidad de descargarlos para su posterior análisis de metadatos. Esta última parte, la extracción de metadatos, lo desarrollaré a posteriori.

El código es el siguiente:

NOTA: Creo que el código es fácil de entender, si no es así, contáctame.

 Parte del código 1 de 3

Parte del código 2  de 3

Parte del código 2  de 3

Un ejemplo del uso de este código se puede ver a continuación:

Ejemplo de uso del código

Estos códigos y alguno más lo dejo en mi github, por si os sirven de algo.

En cualquier caso…

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia.

jueves, 16 de abril de 2020

De todo se aprende


Recientemente ha tenido lugar un CTF de C0r0n4con, de hecho aún sigue, por lo que intentaré un hacer demasiado spoiler.

Durante los primeros días del CTF, tuve un momento para conectarme y realizar un reto de esteganografía, de hecho, uno que te daba 100 puntitos.

El reto consistía en dada un imagen, obtener la flag… nada fuera de lo normal, aunque personalmente terminé aprendiendo algo nuevo

El archivo descargado consistía en un archivo “pdf”, que cuando lo abras veras dos páginas, en la segunda de ellas podrás ver el siguiente icono


Si haces doble click sobre el icono, aparecerá un mensaje de texto que nos dará varias opciones, entre ellas estará aquella que nos permitirá ver el contenido del archivo.

El contenido se trata nada más y nada menos que de un hash en base64



Si decodificamos su contenido de manera online, vemos que lo que tenemos es un archivo en formato PNG (imagen)


Ahora se nos plantea un problema, como trasladar esta información a un archivo que tras ser interpretado nos muestre la imagen. Puedes pensar que con un simple corta y pega se resuelve pero me temo que no, ya que lo que estas copiando son caracteres ASCII y por ahí no van los tiros.

¡Pruébalo si no me crees!

En este punto, puedes hacer dos cosas: buscar alguna web online que nos haga lo que necesitamos, que existen o utilizar algún tipo de lenguaje de programación para realizar la tarea.

Yo tomé el primer camino, pero me prometí abordar el segundo… ¡y aquí estoy!… para ello ¡te escojo a ti, PYTHON!

Y aquí tenéis el código resultante:


Y nuestro archivo PNG, contiene la siguiente imagen:


Bien, hemos conseguido un código de barras.

Ahora toca, transformar dicho código de barras a caracteres ASCII.

En este punto podemos hacer dos cosas: buscar alguna web online que nos haga lo que necesitamos, que existen o utilizar algún tipo de lenguaje de programación para realizar la tarea.

Yo tomé el primer camino, pero me prometí abordar el segundo… ¡y aquí estoy!… para ello ¡te escojo a ti, PYTHON!

Pero antes necesitamos instalar la siguiente librería de Python: pyzbar, pero es fácil. Con un simple: apt-get install libzbar0, lo tenemos.
Y aquí tenéis el código resultante:


Y nuestro código de barras se corresponde con la cadena:


Estos códigos y alguno más lo dejo en mi github, por si os sirven de algo.

En cualquier caso…

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia.

martes, 3 de marzo de 2020

Envia REQUESTS!!!


Cuando necesitemos enviar un fichero a un servidor web utilizando para ello un parámetro de un formulario (método POST), mediante código Python, podremos utilizar la librería: requests.

Para ello utilizaremos el siguiente código

url = <url del servidor web que tratara el formulario enviado>
filess = { ‘<nombre del parámetro utilizado para enviar el fichero>’ : (‘<nombre del fichero’, open(‘<nombre del archivo>’, ‘rb’))}
r = requests.post (url, files=filess)

Para muestra un botón:


En cualquier caso…

Lo que hagas con la información es cosa tuya, no mía... pero ten conciencia.