Categorías
Hacking Python

Cómo crear Rainbow Tables con Python para descifrar hashes

En esta ocasión os vamos a enseñar cómo crear Rainbow Tables con Python para cualquier algoritmo de hashing que esté soportado por la librería hashlib.

Pero, por si alguno aún no lo sabe…

¿Qué son las Rainbow Tables?

Se conoce como Rainbow Tables a tablas de hashes donde podemos encontrar equivalencias de contraseñas hasheadas. Realmente, esto recibe el nombre de Complete Lookup Tables.

Las Rainbow Tables son tablas con una función muy similar, pero que se usan principalmente para las contraseñas largas, ya que el coste computacional de encontrar esas contraseñas mediante ataques de fuerza bruta o ataques de diccionario puede ser demasiado elevado.

Por eso, en esta publicación, usaré el término Rainbow Tables como sinónimo de Complete Lookup Tables.

Es decir, por poner un ejemplo, si usamos la función de hashing MD5 para cifrar la contraseña «password», obtendremos el hash «5f4dcc3b5aa765d61d8327deb882cf99».

Las funciones de hashing, como muchos sabréis, no son reversibles, por lo que no es como convertir una cadena a base64, que se puede deshacer con una simple función.

Para descubrir la equivalencia de un hash con una contraseña, hemos de comparar el hash que tenemos con el hash generado a partir de esa contraseña. Y ahí es donde entran las Rainbow Tables.

Además, en algunas funciones de hashing se puede añadir lo que se conoce como «salt», que no es otra cosa que una palabra de cifrado que ayuda a dificultar aún más la posibilidad de descifrar la contraseña.

En este caso nos centraremos en hashes sin salt, es decir, hashes que han sido creados a partir de la contraseña directamente, y con los que se ha creado una tabla para un diccionario de palabras concreto.

En nuestro ejemplo usaremos el algoritmo MD5 y el diccionario rockyou.txt, de sobras conocido por la gran mayoría de hackers. Cabe decir que se puede editar el código que encontraréis a continuación para elegir otro algoritmo, y el diccionario a utilizar puede ser cualquier archivo de texto plano «txt» con una lista de palabras.

Es momento de enseñaros cómo crear esas rainbow tables con python y desgranar el algoritmo de la herramienta en cuestión, creada por DamonCDB y la cual podéis encontrar en su GitHub.

Python para crear Rainbow Tables

Rainbow Tables con Python línea a línea

Lo primero que debemos hacer es importar la librería hashlib que es la que contiene las distintas funciones de hashing que utilizaremos para crear las rainbow tables con Python. Para ello, la primera línea del código debe ser la siguiente:

import hashlib

De esta forma tenemos disponibles las funciones incluidas en hashlib que nos ayudarán a crear las rainbow tables según la función de hashing que elijamos (MD5, SHA-256, etc.)

A continuación hacemos que el programa nos pida el hash que queremos buscar en la tabla:

hash = input("Introduce el hash a buscar en el diccionario: ").strip()

Con esta línea de código nos aseguramos de que se elimine cualquier espacio al final o al principio del hash, por si lo copiamos con algún espacio y no nos damos cuenta (algo que puede pasarnos si vamos demasiado deprisa).

Después hemos de indicarle a la herramienta la ruta del diccionario de contraseñas que queremos usar. Para ello usamos la siguiente línea de código:

dict_path = input("Introduce la ruta del archivo del diccionario de contrasenyas: ").strip()

La herramienta ya está preparada para pedirnos el hash y el diccionario que queremos usar, pero no es suficiente para que lea el contenido del diccionario. Para ello le decimos a la herramienta que lea la lista de palabras:

f = open(dict_path, "r", encoding='latin-1')

Una vez abierto al archivo del diccionario en modo lectura e introducido el hash, lo que queda es que la herramienta compruebe si dicho hash pertenece a alguna de las palabras del diccionario que le hemos indicado.

Para ello lo que haremos es, línea por línea, crear el hash de cada palabra con la función seleccionada (en nuestro caso MD5, pero como ya se ha dicho, se puede cambiar el código para que use otra función de hash incluida en hashlib).

Después de eso se comparará el hash creado con el introducido por el usuario, y si coinciden, nos devolverá la contraseña a la que pertenece dicho hash y la herramienta se cerrará. En caso de no coincidir, pasará a la siguiente línea, y así continuamente hasta llegar a la última. Si la herramienta no devuelve un resultado, significa que no ha encontrado ninguna palabra cuya conversión con esa función coincida con el hash introducido.

En el supuesto caso en que el archivo que le hemos introducido como ruta del diccionario no exista, nos avisará de que no puede abrir el archivo indicado.

Todo esto se hará mediante una sentencia try – except de Python:

try:
    for line in f:
        password = line.strip()
        hash_md5 = hashlib.md5(password.encode('utf-8')).hexdigest()
        if hash == hash_md5:
            print("El hash " + hash + " pertenece al password " + password)
            break
except FileNotFoundError:
    print("No se pudo abrir el archivo. Verifica la ruta.")

Y eso es todo. Como veis es bastante sencillo crear una herramienta de este tipo para tener nuestras propias rainbow tables con Python.

Y si queréis aprender más sobre Python y ciberseguridad, no dudéis en visitar nuestro curso de Herramientas para Hacking y Pentesting integradas en Python

Curso de Herramientas de Hacking con Python

Categorías
Hacking automatizacion Hacking Python

Nueva formación: Técnicas y herramientas de IA aplicadas a la Ciberseguridad

Nos complace anunciar que, desde este momento, se encuentra disponible el primer volumen de la formación Técnicas y herramientas de IA aplicadas a la Ciberseguridad.

Es la primera formación sobre Inteligencia Artificial aplicada al sector de la ciberseguridad que publicamos, aunque no será la última.

Con esta formación aprenderás las claves de la IA y los avances más significativos que han tenido lugar en los últimos años mediante un enfoque completamente práctico.

Entre otras cosas, aprenderás las reglas fundamentales de los proyectos de Machine y Deep Learning, de tal manera que podrás crear tus propios modelos de IA, que pueden aplicarse perfectamente a cualquier contexto, incluyendo la ciberseguridad.

Verás cómo, mediante modelos personalizados, es posible crear agentes capaces de detectar muestras maliciosas o automatizar ataques de Phishing potenciados con la IA.

Para que te hagas una idea sobre lo que aprenderás, el temario incluye las siguientes lecciones:

  • Conceptos básicos de inteligencia artificial y machine learning
  • Diferencias clave entre IA, ML y DL
  • Ciclo de vida de un proyecto de ML
  • Aplicación y uso de los principales algoritmos de ML
  • Modelos LLM actuales y funcionamiento
  • Phishing dirigido aplicando técnicas de IA
  • Detección de Malware aplicando técnicas de IA
  • Creación de modelos de IA personalizados
  • Técnicas de Deep Learning para reconocimiento de objetos y rostros
  • Uso de plataformas en la nube para entrenamiento de modelos
  • Creación de agentes IA para automatizar rutinas

Estos son los puntos más interesantes, pero hay más contenido distribuido en más de 10 horas de vídeo.

Si quieres aprender cómo funciona realmente la IA y de qué manera impacta en el mundo de la ciberseguridad, esta formación es la indicada para ti.

Este es el primer volumen, en el que aprenderás las bases fundamentales para dominar esta tecnología, aunque en los próximos meses publicaremos el segundo volumen que será de nivel avanzado y no podrás seguirlo si no has asimilado los conocimientos de esta primera formación.

Además, como sabes, tanto la IA como la ciberseguridad evolucionan continuamente. Por ese motivo, si adquieres la formación tendrás acceso indefinido a los contenidos y las actualizaciones que iremos publicando de forma regular. Por lo tanto, no es un curso que se quedará desactualizado después de un tiempo, accederás a las nuevas lecciones que publicarán en la plataforma.

Apúntate cuanto antes, la IA es el futuro y esta es una formación imprescindible.

¡Un saludo y Happy Hack!
Adastra.

Categorías
Explotación de Software Hacking Hacking Python

Pentesting sobre Active Directory con CrackMapExec

Vídeo en YouTube

CrackMapExec es una herramienta muy potente para labores de post-explotación, especialmente sobre entornos de Active Directory. Las primeras versiones se enfocaban en la enumeración de servicios SMB, pero actualmente soporta otros protocolos habituales en este tipo de entornos tales como Kerberos, LDAP, MS-SQL, WinRM, entre otros.

Algunas de sus características más interesantes son las siguientes:

  • Es una herramienta open source, basada en Python y con soporte a los principales protocolos que hacen parte de un entorno de Active Directory. Debes tener una versión de Python reciente.
  • Es una herramienta que, dependiendo del protocolo seleccionado, permite ejecutar múltiples pruebas para la post-explotación de sistemas.
  • Puedes utilizar un usuario de dominio para realizar pruebas y, en el caso de no tener uno, permite la ejecución de ataques de fuerza bruta o password guessing.
  • Soporta la autenticación con un usuario de dominio y su contraseña, con un ticket TGT de Kerberos o el usuario y su hash NTLM (Pass The Hash).
  • Cuando ejecutas CrackMapExec por primera vez, se crea un directorio en tu HOME, el cual almacena un histórico de los comandos que has ejecutado y una base de datos que puedes consultar posteriormente con la herramienta «cmedb».
  • Soporta el uso de sesiones y Workspaces, similar a otras herramientas como Metasploit Framework.
  • Todos los protocolos soportados por la herramienta están compuestos por módulos, los cuales, en algunos casos, permiten la identificación de vulnerabilidades y la exfiltración de información sensible.
  • Es una utilidad que se mantiene actualizada y que, poco a poco, va aumentando la cantidad de módulos y protocolos soportados.

Es una herramienta estupenda y, si no la conoces y quieres aprender a usarla, tienes la oportunidad de hacerlo en la comunidad THW.


Recuerda que puedes registrarte en la comunidad THW: https://comunidad.thehackerway.es/registro

En este sitio web recibirás anuncios sobre ofertas de trabajo y novedades del sector, además podrás participar en los foros y ganar premios por ello.
Puedes acceder a los cursos cortos y artículos con una suscripción: https://comunidad.thehackerway.es/suscripcion
Los contenidos a los que tendrás acceso te serán útiles para comprender por qué no consigues trabajo en el sector o mejoras profesionalmente y, por supuesto, proponerte ideas para mejorar esa situación.

Por otro lado, también tienes todas las formaciones y packs de The Hacker Way. Las mejores formaciones en castellano que podrás encontrar. Y no lo digo yo, puedes ver las reseñas en el sitio web. Más de 500 alumnos han aprovechado los cursos online en THW y tú también podrías ser uno de ellos: https://thehackerway.es/cursos

¡Un saludo y Happy Hack!
Adastra.

Categorías
automatizacion Ciberinteligencia Hacking Hacking Python

Herramientas para Hacking y Pentesting integradas en Python

Desde el día de hoy se encuentra disponible el curso online de «Herramientas para Hacking y Pentesting integradas en Python» y, como te imaginarás, el objetivo es que aprendas a integrar las herramientas de Hacking más comunes en tus scripts desarrollados con Python.

Cuando hablamos de Hacking con Python, nos referimos a utilizar librerías para llevar a cabo rutinas de Hacking y pentesting habituales, pero, seguramente, ya sabes que hacer esto no es suficiente.

¿Por qué?
Por un motivo muy sencillo y es que estás reinventando la rueda.
Piénsalo.
¿Para qué quieres programar un escáner de puertos si ya tienes Nmap?
¿para qué vas a picarte un script que haga fuerza bruta sobre «X» servicio si ya tienes THC Hydra?
¿para qué vas a crear un programa que haga spidering sobre un sitio web si ya tienes Photon o el WGET mismamente?
Si ya tienes Metasploit Framework, Empire, Cobalt Strike y una infinidad de herramientas C2, ¿para qué te vas a picar otra herramienta de este tipo que, probablemente, no aportará nada nuevo?

En realidad, no tiene mucho sentido cuando se trata de llevar a buen término una auditoría o pentest y lo sabes.

No me malinterpretes, el Hacking con Python está muy bien para escribir programas potentes orientados a la ciberseguridad, pero esto solamente te va a servir si eres desarrollador y tienes una idea clara de generar una herramienta nueva que aporte valor o una prueba de concepto para detectar y explotar alguna vulnerabilidad.

No obstante, cuando haces una auditoría, no estás pensando en generar herramientas, no tienes tanto tiempo para ello. Usarás las utilidades que ya existen y te centrarás en hacer el trabajo que se te ha encomendado.

Entonces, ¿cuál es el mejor enfoque si eres pentester?

Pues integrar las herramientas que utilizas habitualmente en tus scripts. Así de simple y complejo.

Ahora bien, no me refiero simplemente a ejecutar un «os.system» o «subprocess».

No.

En este curso aprenderás las estrategias para integrar las herramientas con scripts en Python y, probablemente lo más importante, formatear los resultados de una forma que sea fácil de manejar y sin demasiado esfuerzo.

Para que te hagas una idea, esto es exactamente lo aprenderás en este curso:

BONUS: Introducción a Python

✅ Características fundamentales de Python
✅ Introducción a la programación estructurada y orientada a objetos en Python
✅ Instrucciones disponibles en Python y módulos del SDK
✅ Creación e importación de módulos
✅ Instalación y uso de librerías
✅ Cómo adaptar los scripts a los cambios de versiones en Python

Módulo 1: Hacking con Python

✅ Introducción al curso y librerías disponibles.
✅ Creación de rutinas para Hacking web con las librerías más potentes disponibles en Python
✅ Uso en profundidad de Scapy para análisis de redes
✅ Uso de librerías como Paramiko para administración de sistemas

Módulo 2: Python con herramientas de Ciberinteligencia

✅ Integración de Python con Wappalyzer
✅ Integración de Python con Shodan
✅ Integración de Python con escáneres de puertos online
✅ Integración de Python con Wayback Machine
✅ Integración de Python con GHDB
✅ Integración de Python con Spiderfoot

Módulo 3: Python con herramientas para Hacking en redes

✅ Integración de Python con Nmap
✅ Integración de Python con Wireshark
✅ Integración de Python con TOR
✅ Integración de Python con proxychains
✅ Integración de Python con MitmProxy

Módulo 4: Python con herramientas para Hacking web

✅ Integración de Python con Nuclei Framework
✅ Integración de Python con ZAP
✅ Integración de Python con BeEF
✅ Integración de Python con Burp Suite Community
✅ Integración de Python con Burp Suite PRO
✅ Integración de Python con SQLMap

Módulo 5: Python con herramientas de criptografía, hashing y cracking

✅ Integración de Python con Haipy
✅ Integración de Python con Hashcat
✅ Integración de Python con John The Ripper
✅ Integración de Python con THC Hydra

Módulo 6: Python con herramientas para Active Directory

✅ Integración de Python con Metasploit Framework
✅ Integración de Python con Empire Framework
✅ Integración de Python con Impacket
✅ Integración de Python con Bloodhound
✅ Integración de Python con CrackMapExec

 

Como ves, es una formación muy completa, pero, al margen de la cantidad de herramientas que aprenderás a manejar y automatizar con Python, te enseñaré las estrategias que puedes aplicar a la hora de automatizar cualquier otra utilidad que tengas en tu arsenal.

Si eres pentester y quieres aprender a automatizar las herramientas que usas habitualmente, sin que aquello sea un quebradero de cabeza, honestamente pienso que este curso te aportará la información que necesitas para conseguirlo.

Si realmente estás interesado, decirte que se encuentra en formato preventa hasta el día 17 de diciembre con precio especial, después de esa fecha volverá a su precio normal.

Y por último, decirte también que esta formación se mantendrá actualizada e iré incluyendo más integraciones con otras herramientas.

Es un curso vivo, en el que verás continuamente integraciones nuevas que no se encuentran en el temario original y que podrás aprovechar en tu trabajo. Claro, solo si te apuntas.

Si esto que te he contado te interesa, apúntate y nos vemos en la plataforma THW.

¡Un saludo y Happy Hack!
Adastra.

Categorías
Hacking Hacking Python

Librerías interesantes para Pentesting en Python

Contenido en YouTube

Cuando te propones utilizar Python para labores de Hacking o pentesting, no buscas «reinventar la rueda».
¿Para qué?, en lo que te debes enfocar es en conocer las mejores librerías que permitan la integración con herramientas existentes. En el listado que verás a continuación hay algunas de las más interesantes para contextos tan diversos como redes, web o análisis de malware, todas ellas en Python.

Requests: https://requests.readthedocs.io/en/latest/

Librería para crear clientes HTTP completamente funcionales y fácil de manejar

dnspython: https://www.dnspython.org/

Te permite realizar consultas sobre servidores DNS con solo unas pocas instrucciones

scanless: https://github.com/vesche/scanless

Utiliza escáneres de puertos online que te permiten analizar un objetivo determinado en Internet sin exponer tu IP

yara-python: https://github.com/VirusTotal/yara-python

Librería que permite interactuar con el motor de reglas de Yara desde Python

pymetasploit3: https://github.com/DanMcInerney/pymetasploit3

Librería que se conecta con el servicio de MSFRPC para interactuar, desde Python, con todos los módulos disponibles en Metasploit Framework

scapy: https://scapy.net/

Sirve para crear, capturar y manipular paquetes de red. Es sencilla y muy potente a la hora de ejecutar pentesting en un entorno de red.

BeautifulSoup: https://www.crummy.com/software/BeautifulSoup/bs4/doc/

Librería para parsear documentos XML o HTML, especialmente útil para realizar procesos de «web scraping»

Selenium: https://selenium-python.readthedocs.io/

Librería que te permite controlar un navegador web (mediante un Web Driver) e interactuar con sitios web de forma automática.

Impacket: https://github.com/fortra/impacket

Librería que cuenta con múltiples clases y scripts para ejecutar pruebas de pentesting en entornos de red. Especialmente útil para ejecutar ataques en redes Windows.

angr: https://docs.angr.io/

Esta herramienta te permite el análisis estático y dinámico de binarios. Especialmente útil para reversing y análisis de malware

Python-nmap: https://pypi.org/project/python-nmap/

Librería que te permite ejecutar Nmap desde Python y recuperar los resultados en estructuras de datos fáciles de manejar desde cualquier script

python-shodan: https://shodan.readthedocs.io/en/latest/

Librería que te permite interactuar con Shodan y ejecutar consultas sobre dicha plataforma desde tus scripts en Python.

¿Conoces alguna otra que uses habitualmente en tus scripts para hacer pentesting?

¡Te leo en los comentarios!

 


 

Recuerda que puedes registrarte en la comunidad THW: https://comunidad.thehackerway.es/registro

En este sitio web recibirás anuncios sobre ofertas de trabajo y novedades del sector, además podrás participar en los foros y ganar premios por ello.
Puedes acceder a los cursos cortos y artículos con una suscripción: https://comunidad.thehackerway.es/suscripcion
Los contenidos a los que tendrás acceso te serán útiles para comprender por qué no consigues trabajo en el sector o mejoras profesionalmente y, por supuesto, proponerte ideas para mejorar esa situación.

Por otro lado, también tienes todas las formaciones y packs de The Hacker Way. Las mejores formaciones en castellano que podrás encontrar. Y no lo digo yo, puedes ver las reseñas en el sitio web. Más de 500 alumnos han aprovechado los cursos online en THW y tú también podrías ser uno de ellos: https://thehackerway.es/cursos

¡Un saludo y Happy Hack!
Adastra.

Categorías
automatizacion Hacking Hacking Python Services - Software

Cómo usar Shodan desde tus scripts en Python

Demostración en vídeo de este post

Como seguramente ya sabes, existen cientos de librerías en Python orientadas al pentesting y, casi todas ellas, son estupendas. En otras ocasiones te he hablado sobre cómo integrar Python con Nmap y otros posts relacionados con este lenguaje de programación. En esta ocasión, te enseñaré cómo puedes integrar toda la potencia de Shodan en tus scripts Python. En realidad, el procedimiento no es nada complicado, solamente necesitas tener instalado el SDK de Shodan para Python y una cuenta en dicha plataforma. Con eso, será suficiente para que puedas empezar a utilizar la API del SDK y realizar todo tipo de consultas. Para realizar búsquedas en Shodan, existen una serie de filtros que puedes utilizar desde la aplicación web o desde tus scripts. Algunos de dichos filtros son los siguientes

  • city: En los resultados de la búsqueda, solamente aparecerán aquellos que corresponden con la ciudad indicada.
  • country: En los resultados de la búsqueda, solamente aparecerán aquellos que corresponden con el país indicado.
  • geo: Permite encontrar los dispositivos que se encuentran en el radio definido por la latitud y longitud indicada.
  • hostname: En los resultados de la búsqueda, solamente aparecerán aquellos que corresponden con el nombre de dominio indicado.
  • net: Permite realizar búsquedas dirigidas a segmentos de red concretos.
  • os: Permite filtrar los resultados con un sistema operativo determinado.
  • port: Permite filtrar los resultados con un puerto determinado.

Son solamente algunos de los filtros más comunes, pero como siempre, lo mejor es leer la documentación https://www.shodan.io/search/filters 

Como se ha comentado antes, para utilizar la API es necesario tener una cuenta de usuario y de esta forma obtener una Developer Key. El uso de las características básicas de Shodan no supone ningún coste para un desarrollador, sin embargo existen add-ons que no son gratuitos pero que incorporan características muy interesantes, como por ejemplo la capacidad de realizar búsquedas específicas para servicios como Telnet o HTTPS, acceso a todos los filtros disponibles desde la API y acceso sin restricciones a los resultados de las consultas.
Se trata de características que no son nada despreciables y que pueden ser adquiridas por un precio razonable.

Para descargar e instalar la librería de Shodan para Python se sigue el mismo patrón que muchas de las librerías disponibles para este lenguaje. Es posible hacerlo utilizando easy_install, pip o directamente ejecutando el script setup.py con el argumento install. La librería se encuentra en el repositorio PYPI

Para usar la API de Shodan debes crear una instancia de la clase shodan.Shodan especificando como único argumento una Developer Key válida que se encuentra asociada a una cuenta de usuario.

En el siguiente script se puede apreciar el uso básico de Shodan, en donde se obtiene un objeto del tipo shodan.Shodan y con este, se realiza una búsqueda abierta con una palabra introducida por parte del usuario. Finalmente, el script enseña el número total de coincidencias con el filtro indicado y los 10 primeros registros en la terminal.

Lo cierto es que la librería, como tal, cuenta con pocas más opciones. Es sencilla y te permite realizar búsquedas en Shodan. En otras palabras, cumple con el objetivo para el que fue creada.

A partir de la información que te devuelve Shodan, puedes, por ejemplo, utilizar otras librerías y herramientas disponibles para Pentesting y Hacking en Python, las cuales te permitirán crear utilidades muy potentes y que te ayudarán a automatizar el trabajo.

Si te ha parecido interesante, te leo en los comentarios.

Un saludo y Happy Hack.
Adastra.

 

Categorías
Hacking Hacking Python Networking Programacion Services - Software

Cómo crear una reverse shell cifrada

Demostración en vídeo del post:

Las reverse shell representan uno de los payloads más comunes, se trata de un tipo de rutina que le permite a un atacante recibir una conexión desde el sistema comprometido y sobre ésta, ejecutar instrucciones en dicha máquina. Existen decenas de alternativas a la hora de crear este tipo de payloads, desde la posibilidad de utilizar un programa tan conocido como «netcat» hasta la creación de rutinas en un lenguaje de programación como Python.

No obstante, una de las cosas que en ocasiones olvidamos es que estas conexiones suelen ser planas y fáciles de detectar por cualquier IDS. Por este motivo es una buena idea conocer alternativas que permitan cifrar la conexión que se establece en una bind o reverse shell.

¿Cuál es el problema?

Para ver claramente lo que pasa cuando se establece una conexión reversa con netcat u otra utilidad, se puede iniciar un sniffer y capturar el tráfico. Si la herramienta o rutina utilizada no implementa algún mecanismo de cifrado, se podrán ver en los paquetes de datos los comandos enviados por el atacante y las respuestas devueltas por la víctima.

Esto por supuesto que no es bueno, pero tiene fácil solución si cuando creas tu shell con Python u otro lenguaje, utilizas alguna librería o protocolo de cifrado.

Cifrar la conexión con OpenSSL

La primera opción que se nos puede ocurrir es utilizar OpenSSL, ya que además de generar claves y certificados, también permite el establecimiento de conexiones mediante SSL/TLS.

Lo primero que se debe hacer es crear la clave privada y luego el certificado con el que se establecerá la conexión

openssl req -newkey rsa:2048 -nodes -keyout atacante.key -x509 -days 1000 -subj ‘/CN=thehackerway.com/O=The HackerWay’ -out atacante.crt

Se puede generar un PEM partiendo de la clave privada y certificado generado previamente, para ello basta con copiar los contenidos del fichero «atacante.key» y «atacante.crt» en un nuevo fichero llamado «atacante.pem».

Ahora es posible levantar el componente servidor en la máquina del atacante y finalmente, establecer la conexión desde la máquina víctima.

Socat con OpenSSL

Partiendo del fichero PEM generado anteriormente, otra alternativa que puede ser interesante consiste en utilizar Socat. El procedimiento también es muy sencillo, aunque en la máquina comprometida tiene que estar instalada dicha herramienta y este requisito no siembre se cumple. En todo caso, es otra opción que merece la pena conocer y tener en cuenta.

Cifrar la conexión con Ncat

Ncat ha sido desarrollada con la idea de evolucionar Netcat y soportar protocolos como TCP y UDP sobre IPv4/IPv6. Partiendo de esta idea, es tan potente como Socat y permite establecer todo tipo de conexiones siguiendo el modelo cliente-servidor. Una de alternativas de uso de Ncat consiste en el cifrado de la conexión, sin embargo, tal y como ocurre con Socat, la herramienta debe estar instalada tanto en el cliente como en el servidor.

He explicado algunas alternativas, aunque lo cierto es que hay muchas más que sirven para lo mismo. En el siguiente post mencionaré algunas dos más, incluyendo un proyecto que ha sido publicado recientemente y que tiene buena pinta 🙂

Un saludo y Happy Hack!
Adastra.

Categorías
Hacking Hacking Python Programacion Services - Software

Cómo crear scripts en Python que utilicen la red de TOR: Parte 1 de 2

Demostración en vídeo de este post:

La red de TOR es ampliamente difundida y permite evadir restricciones de acceso a redes o sitios censurados, así como navegar de forma anónima por la darknet o clearnet. Por otro lado, en ocasiones es necesario automatizar algunas actividades, ya sea para realizar labores de pentesting, spidering, scrapping, etc. Si por el motivo que sea, estas actividades se deben llevar a cabo de forma anónima, resulta conveniente saber qué alternativas tenemos disponibles para realizar conexiones de red desde Python pasando por el servicio SOCKS que levanta cualquier instancia de TOR. En éste y el siguiente post, te enseñaré algunas librerías disponibles para esto y los beneficios que aportan.

Peticiones HTTP utilizando Requests

Requests es probablemente la librería más conocida entre aquellos desarrolladores que necesitan utilizar Python para ejecutar peticiones HTTP. Destaca por su versatilidad y facilidad de uso, con muy pocas instrucciones se pueden crear clientes HTTP completos para hacer cosas tan simples (o complejas) como ejecutar procesos de análisis de peticiones y respuestas o consumir de forma programática una API Rest. No obstante, si lo que se pretende es que las peticiones HTTP que realiza Requests pasen por TOR sin exponer la identidad real del cliente (dirección IP), es necesario indicarle a la librería la configuración del proxy SOCKS. Como prácticamente todo en Requests, configurar un proxy SOCKS no es complicado, basta simplemente con pasarle un diccionario con los detalles necesarios.

Como se puede apreciar en la imagen anterior, con muy pocas líneas de código se puede establecer una conexión a un sitio web en Internet utilizando una instancia de TOR en ejecución. Solamente hay que tener en cuenta que en este caso el proxy SOCKS se encuentra en levantado en el puerto 9150, ya que éste puerto es el valor por defecto de TorBrowser. A la hora de realizar la petición HTTP solamente es necesario tener en cuenta que se debe enviar el parámetro «proxies» con el diccionario declarado previamente. Este parámetro se encuentra definido en todas las funciones del módulo «requests» para hacer peticiones HTTP, tales como «get», «post», «put», «delete», etc.

Ahora bien, cuando se utiliza Requests la cabecera «User-Agent» de la petición no corresponde a la de cualquier navegador web de uso común, con lo que es fácilmente identificable que la petición HTTP se está llevando a cabo desde un script o bot. Para evitar esta situación, es habitual utilizar una librería como fake_useragent, la cual se encuentra disponible en el PYPI y se puede instalar con «pip install fake_useragent«.

Iniciar una instancia de TOR desde Python

En los párrafos anteriores se asumía que ya estaba levantada la instancia de TOR, en este caso concreto utilizando TorBrowser, sin embargo es probable que se quiera levantar una instancia de TOR aislada sin el navegador web de TorBrowser, es decir, solamente el programa de TOR y su proxy SOCKS sin más componentes añadidos. En este caso, es recomendable utilizar una librería como TxTorCon o Stem, en cualquiera de estas librerías se iniciará una instancia de TOR con la configuración que se le quiera pasar. El proceso es muy sencillo y puede venir bien cuando sea necesario ejecutar la instancia de TOR y el script de Python en un sistema que no cuente con un entorno gráfico (como un servidor basado en Unix). Eso sí, es necesario instalar la instancia de TOR manualmente.

Como se puede ver en la imagen anterior, se levanta una instancia de TOR que previamente ha sido descargada y compilada desde torproject.org y a continuación, se le envía un diccionario con la configuración que deberá utilizarse. Se envía una función de callback como parámetro de la función «launch_tor_with_config» para ver todos los eventos producidos y a partir de este punto, se podrían ejecutar peticiones con Requests tal como se ha explicado previamente, lo único que habría que cambiar es el puerto donde se ha iniciado la instancia de TOR que en este caso, se encuentra definido en el script.

Si bien en este post se ha visto cómo realizar peticiones HTTP con Requests utilizando TOR, existe una alternativa que permite gestionar mucho mejor las peticiones y evitar los «DNS Leaks», concretamente usando el objeto «Session» de Requests, algo que explicaré en el siguiente post. Espero que éste te haya gustado y si ese es el caso, puedes dejar un comentario y compartirlo con tus amigos o colegas.

Un saludo y Happy Hack!
Adastra.

Categorías
Hacking Hacking Python Services - Software

Aprende a simular campañas de phishing de forma fácil y rápida – Parte 2 de 2

Demostración en vídeo de este post:

En el post anterior se han explicado algunas herramientas para simular campañas de phishing, aunque lo cierto es que existen decenas de herramientas que hacen prácticamente lo mismo: scripts en bash con plantillas de servicios comunes y luego un servicio con ngrok.io para recibir lo que el usuario introduce. Esto en la práctica requiere cierto nivel de personalización de dichos scripts y además, definir un pretexto lo suficientemente creíble como para «motivar» al usuario a introducir información tan sensible como las credenciales de un servicio que utiliza con frecuencia. En este post se verán algunas otras herramientas que son sencillas y aunque se parecen en otras de esta misma categoría, se pueden alterar fácilmente y conceptualmente podrían funcionar en campañas de Red Team.

Phisher-man2

Es una herramienta escrita en Python con Flask y a diferencia de otras utilidades similares, ejecuta JPRQ como una alternativa a Ngrok.io. Su funcionamiento es simple, levanta un servidor en el puerto 5000 con Flask y a continuación,  ayuda a levantar un servidor web Apache en la máquina local con un botón que simplemente levanta el servicio de «apache2». En la sección de «scams», se selecciona el servicio que se quiere exponer con JPRQ y copia el directorio donde está el código HTML del servicio seleccionado en /var/www/html.

Hay que tener en cuenta que el Apache tiene que estar levantado antes de pinchar sobre cualquiera de los «scams», ya que al hacerlo, se levantará automáticamente JPRQ con xterm y generará una URL que apuntará a localhost en el puerto 80.

Nexphisher

Es un script muy parecido a ZPhisher, de hecho, en el repositorio oficial se aprecia que las plantillas disponibles en este proyecto se han tomado de ZPhisher, no obstante tiene una ventaja sobre la otra herramienta y es que soporta más servicios de forwarding. Concretamente se puede seleccionar cualquiera de los que se aprecian en la siguiente imagen

Los servicios LocalXpose y LocalHostRun pueden ser una alternativa interesante al clásico Ngrok y ambos se encuentran soportados en esta utilidad. Por lo demás, es un script como muchos otros de esta categoría en donde se genera un enlace, se envía a una víctima potencial y se recogen las credenciales introducidas.

Blackeye-im

En este caso es un script en bash que cuenta con más de 50 plantillas y permite utilizar una personalizada, esto puede ser útil en el caso de clonar un sitio concreto que no está en la lista o que se quiera integrar con una página clonada con SEToolkit, por ejemplo.

Otra ventaja que tiene es que se puede instalar sobre un dispositivo Android con Termux y es capaz de generar URLs acortadas utilizando TinyURL y Bitly.

Como se puede ver, aplicar este tipo de ataques no es nada complicado desde el punto de vista técnico y por ese motivo, es necesario prestar atención a los sitios que accedemos y los enlaces que llegan en correos electrónicos, ya sea de fuentes conocidas o no.

Un saludo y Happy Hack!
Adastra.

Categorías
Hacking Hacking Python Services - Software

Aprende a simular campañas de phishing de forma fácil y rápida – Parte 1 de 2

Demostración en vídeo de este post:

En los ejercicios de Red Team en algunas ocasiones se deben simular campañas de phishing con el objetivo de comprobar los niveles de seguridad de las personas que trabajan en la organización. Existen muchas herramientas para hacer esto y en éste y el siguiente post, mencionaré algunas de ellas que puede que te resulten interesantes.

Gophish

Es una herramienta de la que ya se ha hablado en el siguiente post, pero merece ser mencionada de nuevo ya que es muy potente y permite configurar campañas de Phishing en cuestión de minutos. La interfaz web es intuitiva y fiable, además se puede configurar de tal manera que múltiples usuarios se pueden conectar para lanzar nuevas campañas o ver el estado de las que se encuentran en ejecución.

Para usar la herramienta basta con seguir un procedimiento sencillo, en primer lugar se debe configurar como mínimo un servidor SMTP para el envío de los correos electrónicos y luego, el pretexto propiamente dicho, es decir, el mensaje de correo junto con otros elementos como imágenes, documentos y landing pages. Una vez preparada la campaña, se debe subir la lista de direcciones de correo y finalmente se lanza. Lo cierto es que no tiene una dificultad alta y prácticamente cualquiera puede configurar campañas de phishing utilizando esta herramienta.

ZPhisher

Cuenta con más de 30 plantillas para servicios de uso común tales como Facebook, Instagram, Netflix, entre otros. Es un script en bash que requiere algunas dependencias mínimas que en prácticamente cualquier sistema Linux ya se encontrarán instaladas y cuando se ejecuta, enseña un menú en el que se puede elegir alguno de los servicios soportados. Una vez se selecciona uno de ellos, en la siguiente pantalla enseña la forma en la que se debe desplegar dicha plantilla, ya se en localhost, Ngrok.io o Cloudflare

Después de seleccionar una de las opciones, la herramienta enseñará un submenú en el que aparecen otras alternativas para la generación de plantillas maliciosas para el servicio seleccionado. El último paso consiste en seleccionar el tipo de servicio para desplegar la plantilla y finalmente, generará una URL a enviar al usuario. En el caso de que la herramienta se ejecute en un servidor público que está específicamente diseñado para realizar las pruebas de phishing, no será necesario indicar un servicio como Ngrok.io o Cloudflare.
La URL generada se puede enviar a los destinatarios, con Gophish por ejemplo. Si alguien accede a dicha URL e introduce sus credenciales, dichos valores serán capturados y la herramienta además de enseñarlos en la terminal, también los guardará en un fichero.

SocialPhish

Aplicación desarrollada en Python que se encarga de clonar en el servidor local una URL indicada. Es de fácil uso y permite capturar la interacción del usuario con el sitio web clonado. Solamente basta con ejecutar el script Python y acceder a la consola de administración, a continuación se introduce la página que se desea clonar y el dominio al que se debe redirigir al usuario cuando activa algún formulario.

Ahora, en cuanto el usuario accede al servidor de SocialFish, el cual se levanta por defecto en el puerto 5000, se enseñará la página clonada y SocialFish capturará su interacción.

Además de lo anterior, en la interfaz de administración también se encuentra habilitado un botón para enviar un correo electrónico, en donde se puede indicar cuál es el servidor SMTP que se utilizará para dicho envío, lo cual sirve como un soporte básico a la campaña de phishing.

Como se puede apreciar, son herramientas simples que permiten simular ejercicios de ciberseguridad orientados al phishing, requieren una personalización para adaptarlos al trabajo habitual de una persona que trabaja en equipos de Red Team, pero es una buena base. Junto con otras herramientas tan potentes como Evilginx2, se pueden conseguir buenos resultados si se elaboran buenos pretextos de ingeniería social.
En el siguiente post se verán más herramientas sencillas y de uso rápido para phishing.

Un saludo y Happy Hack!
Adastra.