Archivo

Archive for the ‘Hacking’ Category

Phishing 2.0 con Evilginx2 – Parte 2

enero 2, 2020 1 comentario

En el post anterior el cual se puede leer aquí, se han aplicado las configuraciones iniciales para que Evilginx2 pueda solicitar y configurar de forma automática un certificado digital valido para el dominio “es-twitter.ml”. Como se ha visto en el artículo anterior, el dominio ya se encuentra correctamente configurado y ahora es necesario comenzar con la configuración de Evilginx2 para llevar a cabo el ataque propiamente dicho.
Si todo lo que se ha explicado en el post anterior se ha aplicado correctamente, ahora es posible habilitar el “phishlet” de twitter con el comando “phishlets enable twitter”. Este comando intentará generar un certificado autofimado al vuelo para el dominio indicado en “hostname” que tal como se ha explicado en el post anterior es “twitter.com.es-twitter.ml” y a continuación, se encargará de contactar con el CertBot de LetsEncrypt para que evidentemente, dicho certificado generado por Evilginx2 se encuentre firmado por una CA de la que se van a fiar los clientes (LetsEncrypt). Este proceso puede tardar unos minutos y en ocasiones puede llegar a fallar y si esto ocurre hay que volver a lanzar el comando una segunda vez pero si el problema persiste será necesario revisar toda la configuración correspondiente al dominio, la IP pública establecida y los registros DNS.

Una vez con los certificados preparados y correctamente instalados en la instancia de Evilginx2 es el momento de crear los “lures”. Estos elementos son simplemente configuraciones que se pueden incluir sobre un phishlet concreto, de tal manera que es fácil tener varios lures que representen diferentes tipos de configuraciones. Aunque pueda sonar un poco complejo, nada más lejos. Los lures están compuestos por un identificador númerico, nombre, path que se debe de incluir en la URL que se enviará a la víctima, una URL para redireccionar al usuario en caso de error, parámetros adicionales que pueden ser requeridos por el servicio objetivo (en éste caso Twitter) y un campo para incluir una pequeña descripción del lure.

Viendo las opciones disponibles en el comando “lures” se puede apreciar que su uso es bastante sencillo. Haría falta crear el lure con el comando “lures create twitter”, el cual creará un nuevo identificador para posteriormente poder editar el lure creado. Luego se pueden establecer opciones como por ejemplo un “path” personalizado o una URL de redirección, la sintaxis para cualquiera de dichos comandos es “lures edit <opción> <id lure> <valor>”. Por ejemplo: “lures edit redirect_url 0 https://www.twitter.com”.

Como se puede ver en la imagen anterior ya ésta todo preparado, ahora solamente hace falta ejecutar el comando “lures get-url <id lure>” para obtener la URL que se le debe enviar a la víctima y esperar.

Una vez el usuario pincha sobre el enlace o accede al sitio web por medio de la URL anterior, aparece en el navegador web la misma estructura del sitio web de Twitter legitimo ya que de hecho, Evilginx2  actúa simplemente como una pasarela entre la víctima y dicho sitio web, a éste ataque como ya sabéis se le suele llamar MITM aunque en éste caso con unas variantes un tanto especiales. Si la víctima intenta acceder utilizando su usuario y contraseña el procedimiento de login se llevará a cabo desde Evilginx2 y ya de paso, capturará todos los detalles de dicho proceso.

Espero que os haya gustado la herramienta y os animo a probarla ya que como habéis podido ver, es sencilla y muy potente.

Un saludo y Happy Hack.

Adastra.

Evil Crow cable, ¿por qué troyanizar hardware?

diciembre 23, 2019 Deja un comentario

Sobre los autores: Ernesto Sanchez (@ernesto_xload) y Joel Serna (@JoelSernaMoreno) son consultores en seguridad informática que han participado en eventos como: Navaja Negra, RootedCON, CCN-CERT, Mundo Hacker Day, etc.

Sabemos que hemos estado bastante tiempo sin aparecer por aquí, pero hemos estado liados con un proyecto de una duración de unos dos años, y sí, estamos aquí para contarlo.

Lo primero de todo, agradecer a todas las personas que han apoyado y ayudado en esto, sobre todo a las mencionadas aquí abajo:

Todo empezó a finales de 2017, donde Ernesto Sánchez y un servidor decidimos empezar un “proyecto” para demostrar que los dispositivos USB no son lo que realmente parecen.

La idea de troyanizar hardware, como bien se explica en una entrevista que nos hizo Guillermo Cid para el Confidencial (aquí), viene de que las personas confían en el hardware y nunca llegan a pensar que este puede haber sido alterado con fines maliciosos.

En los últimos años hemos podido observar que las personas tienen mas cuidado a la hora de conectar pendrives en sus equipos porque pueden contener malware, pero… ¿qué pasa con todo lo demás?

Todos los periféricos USB que utilizamos en nuestro día a día se pueden troyanizar. Así es como nació Evil Crow cable.

Evil Crow cable, como su propio nombre indica, es un cable de móvil con el famoso microcontrolador Attiny85 en su interior, junto a 3 resistencias y 2 diodos zener.

¿Qué se puede hacer con él? La finalidad del cable es simple, un dispositivo BadUSB como puede ser el USB Rubber Ducky. En este artículo no vamos a entrar otra vez en el tema de los dispositivos BadUSB, quien no sepa lo que es o esté interesado… aquí tiene los enlaces de los artículos anteriores que escribimos para este mismo blog: BadUSB Ultra Low Cost y Vuelve el patito Low Cost, ahora grazna como un USB Rubber Ducky original.

¿Aún no queda claro que es Evil Crow cable? No pasa nada, tenemos un repositorio específico donde está documentada toda su historia, desde el comienzo del desarrollo en una breadboard (utilizando un Attiny45 en las primeras pruebas, que al final no fue suficiente para nosotros y utilizamos Attiny85), hasta el cable completo que ha ido a producción gracias a la ayuda de Luca Bongiorni y a nuestro distribuidor April Brother:

https://github.com/joelsernamoreno/BadUSB-Cable

La historia está muy bien y todo eso… pero, ¿donde puedo comprar el cable? Puedes comprarlo por unos 10$, tanto en la tienda del distribuidor en Tindie, como en Aliexpress… aquí dejamos el enlace de compra directo en Aliexpress: Evil Crow cable

Cabe destacar que Evil Crow cable es un proyecto sin ánimo de lucro, ¿que queremos decir con esto? Basicamente, todos estáis invitados a pagarnos unas cervezas si nos veis en alguna CON 😀

Ahora vamos a meternos en el asunto…

Configuración e instalación del software

Una vez hemos obtenido el dispositivo, tenemos que tener en cuenta que, primero tenemos que instalar el IDE de Arduino y también los drivers en el caso de Windows (aquí)

NOTA: no es aconsejable instalar el IDE de Arduino desde repositorios de nuestra distribución de Linux, suele ser una versión algo obsoleta y puede darnos problemas. Destacar que el funcionamiento del dispositivo es ligeramente distinto a cualquier otro Arduino con el que hayamos trabajado anteriormente y necesita ser desconectado y conectado para ser reprogramado (Hay disponible un dispositivo para hacer ésto por hardware mediante un interruptor disponible aquí, pero no creemos que sea tanta molestia conectar y desconectar el dispositivo cada vez). Lo primero es tener la última versión del arduino IDE (Aquí) y asegurarnos que está todo actualizado.

El segundo paso es bajar el paquete de compatibilidad con ésta placa y el IDE de Arduino para poder trabajar correctamente con ella, para ello tenemos que ir a Archivo -> Preferencias -> Gestor de URLs Adicionales de Tarjetas y añadiremos en una nueva linea lo siguiente (si tenemos alguna no es incompatible):

http://digistump.com/package_digistump_index.json

Simplemente aceptamos y vamos a Herramientas -> Placa -> Gestor de Tarjetas, aquí buscamos Digistump AVR Boards y procedemos a su instalación.

En caso de usar linux, es posible que tengas que tener la versión actual y legacy de libusb, así como añadir unas reglas nuevas de udev, hay un tutorial de Digistump aquí. Comentar que las librerías originales de Digistump solo poseen soporte para emular teclados con el layout en_US (Inglés de EEUU), con lo que es muy aconsejable descargar e instalar la librería con soporte para otros idiomas, disponible aquí.

Payloads y primer Hola Mundo

Evil Crow cable lleva un microcontrolador Attiny85 en su interior, entonces… podemos utilizar cualquier payload compatible con la famosa placa de 2$ Digispark. En el siguiente enlace podéis descargar más de 20 payloads compatibles y probados:

https://github.com/joelsernamoreno/badusb_examples/tree/master/attiny85_digispark

Una vez hemos descargado los payloads… tenemos que abrir el IDE de Arduino que hemos descargado y configurado anteriormente, también nos tenemos que asegurar que hemos configurado la placa correcta, para ello vamos a Herramientas -> Placa y seleccionamos “Digisparck (Default – 16.5 mhz)” y ningún puerto.

Lo siguiente es compilar y subir el código, primero podemos pulsar el botón de Verificar para asegurarnos de que no existe ningún error y después pulsar el botón Subir, sin conectar el dispositivo aún. A los pocos segundos, el IDE nos pedirá que conectemos el dispositivo y lo reprogramará como podemos ver en la siguiente captura. Ya está nuestro “hola mundo”, a los pocos segundos ejecutará el código, dicho código está guardado en la flash del Attiny85 con lo que se ejecutará cada vez que conectemos el dispositivo a un ordenador.

En el siguiente enlace podéis ver el vídeo del proceso de subir el payload a Evil Crow cable:

https://twitter.com/JoelSernaMoreno/status/1181296289323130882?s=19

NOTA: Si recibimos el error de que estamos utilizando una versión de Micronucleus antigua, tenemos que hacer lo siguiente:

1. Descargar la última versión de Micronucleus desde su repositorio en GitHub, podemos ejecutar el siguiente comando: git clone https://github.com/micronucleus/micronucleus.git

2. Acceder al directorio micronucleus/commandline con el siguiente comando: cd micronucleus/commandline

3. Compilar Micronucleus con el siguiente comando: make

4. Acceder al directorio .arduino15/packages/digistump/tools/micronucleus/2.0a4 con el siguiente comando: cd ~/.arduino15/packages/digistump/tools/micronucleus/2.0a4/

5. Crear un backup de Micronucleus con el siguiente comando: mv micronucleus micronucleus.old

6. Copiar la última versión de Micronucleus al directorio actual con el siguiente comando: cp ~/PATH/micronucleus/commandline/micronucleus .

Cambiar PATH por el directorio donde hemos descargado Micronucleus

7. Verificar y Subir el código otra vez

Máquina virtual para dummies

La instalación del software puede ser algo tediosa para algunas personas, por eso mismo hemos creado una máquina virtual con toda la configuración y software visto anteriormente.

Para descargar la máquina virtual tenéis que acceder al siguiente enlace (contraseña de la máquina virtual: evilcrowcable):

https://mega.nz/#!dtBmgQIY!4iiRBmrM1v42V-EDzVBr9dvOznbAHK-9jp3wK9BgMlo

La máquina virtual ha sido probada en VMWare, para descargar VMWare aquí: https://www.vmware.com/

Ahora tenemos que configurar nuestro entorno para que la máquina virtual reconozca correctamente Evil Crow cable:

1. Ejecutar VMWare e importar la máquina virtual

2. Iniciar la máquina virtual e Instalar VMWare-Tools: https://vitux.com/how-to-install-vmware-tools-in-ubuntu/

3. Añadir puerto serie con los siguientes pasos:

– En VMWare, hacemos click en la pestaña Settings.

Hacemos click en el botón +Add…

Seleccionamos Serial Port y hacemos click en finalizar

4. Añadir el controlador USB con los siguientes pasos:

– En VMWare, hacemos click en la pestaña Settings.

Hacemos click en el botón +Add…

Seleccionamos USB controller y hacemos click en finalizar

5. Iniciar la máquina virtual

6. Abrir un terminal (CTRL+ALT+T) y acceder al directorio del IDE de Arduino con el siguiente comando: cd arduino-1.8.10-linux64/arduino-1.8.10/

7. Ejecutar el IDE de Arduino con el siguiente comando: ./arduino

8. Abrir un payload en el IDE de Arduino. Nota: Los payloads están descargados en el home del usuario de la máquina virtual

9. Verificar y subir los payloads a Evil Crow cable.

Línea de datos

Cuando empezamos el proyecto a finales de 2017 y presentamos la charla “Troyanizando Hardware: ten cuidado con qué (USB) metes y donde” en la primera edición de la h-c0n, el cable BadUSB que teníamos en ese momento sólo permitía alimentación a través del puerto MicroUSB.

En el cable final de producción, hemos conseguido habilitar la línea de datos en modo “PoC”, utilizando el esquema básico que hay publicado en Internet.

¿Qué queremos decir con esto? Actualmente no tenemos control sobre la línea de datos de Evil Crow cable. Para conseguir control sobre la línea de datos necesitaríamos añadir un mini Hub USB dentro del conector USB del cable. Pero… ¿qué podemos hacer mientras esperamos una V2?

La línea de datos podrá/no podrá ser utilizada en las siguientes cuatro situaciones:

1. Si conectamos Evil Crow cable sólo a un ordenador, el payload se ejecutará correctamente.

2. Si conectamos Evil Crow cable junto a un dispositivo multimedia (teléfono, mp3, etc) a la vez a un ordenador, se habilitará la línea de datos y podremos acceder al almacenamiento del dispositivo multimedia, pero el payload no se ejecutará.

3. Primero conectamos Evil Crow cable a un ordenador y después de ejecutar el payload conectamos un dispositivo multimedia al puerto MicroUSB: La línea de datos será habilitada y podremos acceder al almacenamiento del dispositivo multimedia, pero tendremos que esperar unos 10-15 segundos después de la ejecución del payload antes de conectar el dispositivo multimedia. Si conectamos el dispositivo multimedia antes de esos 10-15 segundos, es posible que la línea de datos no funcione correctamente.

4. Primero conectamos Evil Crow cable y un dispositivo multimedia a un ordenador a la vez, la línea de datos será habilitada y tendremos acceso al almacenamiento del dispositivo multimedia (ver punto 2 de esta sección). Después, desconectamos el dispositivo multimedia mientras Evil Crow cable sigue conectado al ordenador: el payload se ejecuta correctamente.

Dejamos el siguiente enlace con la demostración en vídeo de la línea de datos para entenderlo mejor:

https://twitter.com/JoelSernaMoreno/status/1189658626929111040?s=19

Actualmente estamos trabajando en la versión V2 de Evil Crow cable donde tendremos control total sobre la línea de datos, y posiblemente… control remoto sobre el propio cable, pero mientras tanto… se decidió habilitar esta PoC en todos los cables de producción para pruebas 😀

Para terminar, decir que tenéis toda la información de la instalación vista en el artículo y más información sobre la línea de datos en el siguiente repositorio:

https://github.com/joelsernamoreno/EvilCrow-Cable

Un saludo y hasta la próxima!

Black Friday en securízame sobre cursos online

noviembre 27, 2019 Deja un comentario

Si estáis interesados en aprovechar el Black Friday 2019 para continuar con vuestra
formación profesional especializada en ciberseguridad, no podéis dejar pasar el gran
descuento de 25% que la empresa Securízame tiene para estas fechas en todos
sus cursos online.
Securízame, una de las empresas españolas más reconocidas a nivel nacional e
internacional en materia de ciberseguridad, lleva más de 7 años ocupándose de la
formación de profesionales, quienes encuentran en ella, los medios y las
oportunidades ideales para complementar, mejorar y ampliar sus conocimientos.

De la mano de su CEO Lorenzo Martínez Rodríguez, el equipo humano de
Securízame y el respaldo de una gran plantilla de profesores y colaboradores,
han cimentado un gran prestigio, consolidándose como una empresa de las
empresas más reconocidas en formación en ciberseguridad.

Cuentan con una gran variedad de cursos, tanto presenciales como online, que
cubren las necesidades más fundamentales en diversas áreas de este sector, como
el hacking ético para los equipos de seguridad ofensiva, o los de hardening,
análisis forense y respuesta ante incidentes (DFIR) para los de seguridad
defensiva; además tiene otras especialidades como scripting en Python, que
complementa cualquiera de las otras áreas de actividad. De igual manera, tienen
actividades presenciales como entrenamientos y certificaciones 100% prácticas
tanto en hacking ético como DFIR, que evalúan las capacidades de los
profesionales que las realizan.

Los cursos online de Securízame se pueden realizar desde cualquier país, y en la
fecha en la que el alumno lo considere pertinente. Al tratarse de cursos grabados,
descargables desde una plataforma, no se requiere de una fecha concreta de
inicio. Es por eso que el descuento de Black Friday es aprovechable ahora para
adquirir el acceso a los cursos, y poder empezarlos cuando le convenga al alumno,
ya sea en estos días, o en los próximos meses, indicándose en el apartado
observaciones a la hora de hacer la compra; esto con la finalidad de que quienes
adquieran los cursos, no tengan la obligación de empezarlos de inmediato, pudiendo
elegir el ritmo y sin interferir en el resto de sus actividades.

A la hora de comprar el acceso a cualquiera de los cursos online desde la página de
Securízame se verá el precio normal del curso. Una vez se lleva a cabo el registro en el mismo, se aplicará automáticamente el 25% de descuento en el precio, por lo que lo único que hay que hacer al momento del registro, es especificar en el campo de comentarios, para cuándo se quiere iniciar el curso. Así, Securízame preparará el material para la fecha que el alumno lo haya indicado.

Además de esta gran oferta de cursos online, Securízame también brinda atención
especializada a empresas y particulares con diversos servicios, como una solución
de backups anti-ransomware, creación de herramientas de seguridad a medida,
consultoría y asesoría de seguridad, peritaje informático forense, respuesta
ante incidentes de ciberseguridad e incluso formaciones privadas para
organizaciones públicas y privadas.
Estos descuentos sólo son válidos a partir del Jueves 28 de noviembre del 2019 a
las 00:00 hasta el Lunes 2 de diciembre del 2019 a las 23:59 en horario peninsular
de España.
Por si fuera poco, Securízame cerrará con broche de oro el fin de semana de
descuentos del Black Friday, regalando un curso online básico de Python, entre
todos aquellos que participen en la dinámica que han preparado. Si queréis más
información sobre cómo podéis ganar este gran obsequio, estad atentos al blog de
su página web y a sus redes sociales.

Para más información u orientación sobre los cursos y servicios de Securízame,
podéis contactar con ellos a través de su página web (https://www.securizame.com/contacto/), o bien en el mail contacto@securizame.com
Aprovechad la gran oportunidad de continuar vuestra formación en ciberseguridad
con cursos de excelente calidad y profesores con gran experiencia, a un precio
irrepetible.

Phishing 2.0 con Evilginx2 – Parte 1.

noviembre 6, 2019 3 comentarios

Los ataques de phishing tradicionalmente se han basado en una plantilla con una estructura fija, la cual evidentemente puede quedar desactualizada rápidamente si no se mantiene y lo que es peor, es necesario poner una URL “rara” que probablemente nada tiene que ver con el dominio objetivo, la cual con un vistazo más detallado se puede apreciar claramente que no es el dominio del sitio web legitimo. Aún así, los ataques de este tipo siguen siendo predominantes y con unos muy buenos niveles de éxito. Existen un buen número de herramientas que permiten emprender este tipo de ataques con plantillas fijas y del mismo modo le permiten al atacante crear las suyas. No obstante, hoy en día ya encontramos lo que se conoce como el “phishing 2.0” y herramientas como Evilginx2 definen las bases de este tipo de ataques, más sofisticados y efectivos que los ataques de phishing clásicos basados en plantillas.

Evilginx2 es una herramienta que ha sido desarrollada en Go y que cuenta con las siguientes características:

* Se encarga de levantar de forma automática un servidor DNS para resolver las peticiones que se vayan a realizar contra un dominio concreto.

* Realiza un ataque de “Hombre en medio”, en donde no hace falta tener plantillas HTML fijas con la estructura del sitio web objetivo. Evilginx2 se encarga de realizar una petición HTTPS contra el sitio web legitimo y enseñar la estructura que devuelva el sitio web a la víctima.

* Evilginx2 es capaz de hacer un bypass sobre mecanismos de 2FA dado que no realiza ningún tipo de modificación sobre la estructura de la página, simplemente se encarga de actuar como cualquier cliente para el sitio web legitimo permitiendo que sea la víctima la que realiza la interacción con el servicio.

* Solicita y configura automáticamente un certificado SSL valido (Lets Encrypt) para el dominio que se utilizará para el ataque de phishing.

* Es capaz de mantener la condición de MITM entre la víctima y el sitio web legitimo tras la autenticación correcta. Esto permite capturar no solamente cookies de sesión o usuarios y contraseñas en texto plano, también permite obtener información sensible en la medida que el usuario va navegando por el sitio web legitimo pasando primero por el dominio configurado con Evilginx2.

Estás son solamente algunas de las “maravillas” que es capaz de hacer la herramienta. Sin embargo, existen algunas complicaciones que se pueden presentar en la configuración de este tipo de ataques con Eviginx2.

* Es necesario contar con una IP pública para poder resolver las peticiones DNS contra el dominio controlado por Evilginx2. Esto puede ser por medio de un VPS o servidor dedicado en cualquiera de los proveedores disponibles en Internet.

* Es necesario adquirir y configurar correctamente un dominio DNS. Como se verá más adelante, es necesario crear un registro DNS del tipo “A” que apunte a la IP pública donde se encuentra en ejecución Evilginx” y algunos registros “CNAME”.

* Dada la naturaleza de este tipo de ataque, si se realiza una campaña muy extensa o contra un objetivo “delicado”, es posible que el proveedor del VPS reciba quejas y que dependiendo de la gravedad de las actividades, se lleven a cabo acciones legales. En una campaña llevada a cabo por ciberdelincuentes profesionales, lo más probable es sea rápida y precisa, además también es posible que el proveedor del VPS contratado sea anónimo de tal manera que se dejen el menor número de trazas posible.

Requisitos e instalación.

Ahora que el lector entiende de qué va esto y el posible impacto que puede tener, resulta interesante pasar a la práctica viendo cómo instalar y configurar la herramienta para llevar a cabo un ataque de éste tipo.

En primer lugar, lo requisitos son los siguientes para que esto funcione bien.

  • Una dirección IP pública en un VPS o servidor dedicado. Se puede conseguir lo mismo en un entorno domestico creando reglas NAT en router que se encarguen de redireccionar las peticiones hacia el interior de la red local, sin embargo este enfoque es totalmente desaconsejado ya que el router no tendrá una IP fija todo el tiempo y además, es posible que Evilginx2 no funcione correctamente en este caso.
  • Un dominio correctamente configurado.
  • Una instalación limpia de Eviginx2, la cual puede ser partiendo del código fuente o de alguno de los paquetes precompilados que están preparados para ser descargados y ejecutarlos directamente, siendo ésta última opción la más sencilla y cómoda.

Primero lo más sencillo, la instalación. El repositorio oficial se encuentra disponible en GitHub: https://github.com/kgretzky/evilginx2 en dicho repositorio se incluyen las instrucciones básicas para su instalación, algo que no lleva mucho tiempo si se cuenta con todas las dependencias en GO requeridas por el programa. En “releases” se puede apreciar que existen paquetes preparados para utilizar la herramienta directamente.

Al ejecutar la herramienta es importante hacerlo con privilegios de root, utilizando “sudo” por ejemplo, ya que es necesario abrir el puerto 53 para el servidor DNS que levanta la herramienta. Se puede apreciar una tabla de phishlets, algo que se mencionará más adelante.

A continuación es necesario cumplir con los otros dos requisitos obligatorios que se han indicado anteriormente: Una IP pública y un dominio. Sobre el primero de ellos, es importante tener en cuenta que en dicha dirección IP pública se debe ejecutar Evilginx2. Es decir, la imagen anterior que enseña la ejecución de la herramienta corresponde a una instancia de Evilginx2 ejecutándose, en este caso concreto, en un VPS con una IP pública.

Sobre el segundo requisito, es necesario contar con un dominio correctamente configurado. Existen cientos de servicios en Internet que permiten contratar un dominio por muy bajo precio, sin embargo para realizar pruebas se puede utilizar un servicio como freenom.com el cual permite adquirir dominios de forma gratuita por un tiempo fijo.

Configuración del ataque.

A modo de ejemplo, se realizará un ataque de phishing con Evilginx2 utilizando el dominio “es-twitter.ml”. La selección de éste dominio es totalmente arbitraria, el lector puede elegir el que quiera.

En freenom se puede configurar el dominio recién creado fácilmente. En este caso interesa crear registros del “A”, “CNAME” y los correspondientes “NS”. Primero se configurarán los registros “NS” y “A”, posteriormente los registros CNAME tras configurar el dominio en Evilginx2. Como una imagen vale más que mil palabras, la configuración sería como se puede ver a continuación.

Con esto será suficiente para tener el los registros NS correctamente establecidos. Ahora, el registro “A” será como se puede ver a continuación. (Evidentemente, es necesario poner la IP en donde se encuentra Evilginx2 en ejecución).

Con esto el dominio está prácticamente listo. Ahora es necesario habilitar el “phishlet” correspondiente a Twitter para poder continuar con la configuración y posterior preparación del ataque. Un phishlet es similar a las plantillas que se utilizan en las herramientas destinadas a este tipo de ataques, sin embargo, en lugar de contener una estructura HTML fija, contienen “metainformación” sobre cómo conectar con el sitio objetivo, parámetros soportados y páginas de inicio a las que debe de apuntar Evilginx2. Los phishlets son ficheros de texto en formato YAML y la herramienta se encarga de cargarlos desde el directorio <EVILGINX2_ROOT>/phishlets esto significa que es posible crear ficheros en formato YAML para sitios web concretos que no se encuentran entre los que vienen por defecto en la herramienta. Algo que es bastante habitual en una campaña de RedTeam en la que se aplican técnicas de Phishing 2.0.

Bien, ahora que el dominio se encuentra “casi” configurado por completo, es el momento de abrir la terminal con Evilginx2 y realizar algunas configuraciones básicas. En primer lugar, el comando “help” enseñará los comandos disponibles en la herramienta, que como se puede ver, no son muchos.

El primer comando a ejecutar será de configuración global, para establecer el dominio y la IP pública.

Ahora es el momento de habilitar el phishlet correspondiente, que en este caso será el de Twitter.

El primer comando ha permitido habilitar el phishlet “twitter” y ha establecido el hostname que será utilizado para el ataque de phishing. En este caso concreto, la URL “twitter.com.es-twitter.ml” será el señuelo que se le enviará a las víctimas. Algo que resultará totalmente “creíble” al ver que la conexión se establecerá por HTTPS con certificado perfectamente valido y que además, en la URL pone “twitter.com”. Mucha gente seguramente picará. Bien, pero antes de continuar con los detalles del ataque, es necesario terminar la configuración del dominio. Al ejecutar el segundo comando se obtienen los registros CNAME que hay que incluir en la configuración del dominio en freenom. La configuración final del dominio será como se puede apreciar en la siguiente imagen.

Con estos pasos ya se encuentra todo preparado para elaborar el ataque de Phishing con Evilginx2, algo se explicará en detalle en el próximo post.

Si has hecho todo bien hasta aquí, el siguiente paso que corresponde a la ejecución del ataque propiamente dicho será bastante fácil y rápido.

Un saludo y Happy Hack
Adastra.

Herramientas de pentesting interesantes: Shellphish – Parte 3

noviembre 1, 2019 2 comentarios

Sin lugar a dudas, los ataques de phishing hoy en día sustituyen una de las amenazas más frecuentes cuando se habla de seguridad perimetral y es que el factor humano es siempre, el más problemático y difícil de gestionar en todos los aspectos de una organización. No es de extrañar que en algunas pruebas de seguridad enfocadas al RedTeam se incluyan este tipo de técnicas con el objetivo de medir la seguridad del perímetro desde adentro. Quiénes han picado en un ataque de phishing y han pinchado en el enlace, quiénes no han sabido detectar que ese correo electrónico contiene un enlace a un sitio malicioso. Son cuestiones que se afrontan con la formación a los empleados y a la que difícilmente las soluciones de seguridad perimetral pueden hacer frente de forma eficaz. En este sentido existen múltiples herramientas y frameworks enfocados a la ejecución de campañas de phishing, cuyo objetivo es precisamente probar la seguridad del perímetro de una organización ante este tipos de ataques aunque como es evidente, también son herramientas que dadas sus funcionalidades y lo bien hechas que están se utilizan directamente por parte de ciberdelincuentes. En este post hablaré de una de estas herramientas llamada “shellphish”, que sin ser la más interesante o potente sí que hace bien su trabajo y para lo que fue desarrollada por lo tanto merece una mención. En próximos posts hablaré de herramientas mucho más completas y con un enfoque más moderno como es el caso de “evilginx” o “gophish”.
NOTA: Si te interesa aprender más en profundidad sobre técnicas de ingeniería social, es posible que te resulten útiles los recursos del “Social Engineering Framework” (https://www.social-engineer.org/framework/general-discussion/) y el uso de otras herramientas como SET de las que ya he dedicado una serie completa hace algunos años, empezando aquí.

Introducción y uso de Shellphish

Se trata de una herramienta que provee un conjunto de plantillas para los sitios más populares en Internet, entre los que se encuentran Facebook, Twitter, Netflix, Instagram, entre otros. No obstante, dada su flexibilidad es posible crear plantillas personalizadas para sitios web que no se encuentran incluidos en la herramienta, de tal manera que es posible llevar a cabo campañas de phishing contra un objetivo concreto. El uso de la herramienta es realmente simple, basta con seleccionar una plantilla, establecer el tipo de servidor para que sea accesible desde Internet (puede ser serveo.net o Ngrok) y posteriormente, esperar a que el usuario “pinche” en el enlace que se enviaría por email (o cualquier otro medio).

Para instalar la herramienta, basta con clonar el repositorio oficial y ejecutar el script “shellphish”

>git clone https://github.com/thelinuxchoice/shellphish.git

>cd shellphish && chmod 755 shellphish.sh

>./shellphish.sh

Una de las dependencias obligatorias de la herramienta es una versión reciente de PHP, dado que se encuentra desarrollado en dicho lenguaje. Cuando se ejecuta el script de shellphish se abre un asistente muy básico en donde se puede apreciar un listado de las plantillas soportadas por la herramienta y el permite al usuario seleccionar una de ellas.

Se puede seleccionar cualquiera de los servicios disponibles, pero hay que tener en cuenta que las plantillas son fijas, es decir, que si existe algún cambio en cualquiera de los sitios web legítimos, dicho cambio tendrá que ser aplicado también en la plantilla para que sea más creíble. El funcionamiento interno de la herramienta también resulta sencillo. En el directorio <SHELLPHISH_ROOT>/sites se encuentran todas las plantillas de cada uno de los sitios que se listan en el menú principal. En cada uno de los directorios correspondientes a dichos servicios, aparecen como mínimo los siguientes ficheros:
index.php: Se encarga de ejecutar un “include” del fichero “ip.php” y posteriormente realiza una redirección incluyendo la cabecera “Location” en la respuesta con el valor “login.html”.

login.html: Como es natural, incluye la estructura HTML del sitio web legitimo, sin embargo dicha página web está configurada de tal manera que las acciones sobre ella (por ejemplo, pinchar sobre el botón de login) son procesadas por el script “login.php”.

ip.php: Se trata de un script que se encarga de recopilar la información del cliente que accede al sitio web falso. Incluye información básica como la IP del navegador de la víctima, país, ciudad, ISP, etc.

login.php: Es un script que simplemente se encarga de almacenar y enseñar por pantalla la información de login del usuario.

Todas las plantillas en shellphish tienen lo mismo, por lo tanto es fácil extender esto a otras plantillas personalizadas, es decir, a otros sitios web que no se encuentren en la lista de plantillas por defecto en la herramienta.

Después de seleccionar la plantilla a utilizar, la herramienta pedirá al atacante que seleccione el tipo de servidor web para la plantilla seleccionada en el paso previo. En este caso cualquiera de las dos opciones es valida ya que ambas funcionan bastante bien (Serveo.net o Ngrok). Posiblemente resulte conveniente utilizar Serveo.net dado que las conexiones pasan por medio de un túnel SSH.

Una vez que el servidor web se encuentre levantado y la víctima haya entrado en el sitio web falso, se ejecuta el fichero “ip.php” que se encuentra disponible en la plantilla seleccionada y que tal como se ha explicado anteriormente, se encarga de recolectar información básica sobre el navegador del usuario.

A continuación, la víctima podrá ver la misma estructura del sitio web, así que salvo que se fije en la URL no hay nada que en apariencia resulte sospechoso. Si el usuario trata de iniciar sesión en el supuesto servicio, se ejecutará el script “login.php” que se encargará de procesar lo que el usuario ha escrito en las cajas de texto (típicamente, usuario y contraseña).

Se puede ver que además, se encarga de guardar estos detalles en un fichero de texto que posteriormente se puede consultar fácilmente. Todas las plantillas en Shellphish tienen el mismo comportamiento.

Con shellphish también es posible crear plantillas personalizadas y para ello la herramienta cuenta con un asistente que paso a paso, establece un sitio web genérico en el que se pide usuario y contraseña. No obstante es bastante básico lo que genera la herramienta (por no llamarlo cutre) por lo tanto para un ataque de phishing real será mucho más conveniente crear la plantilla manualmente, que como se ha explicado antes no tiene ninguna dificultad, basta simplemente con crear un directorio en <SHELLPHISH_ROOT>/sites con el nombre del sitio web e incluir los ficheros mencionados unos párrafos más arriba.

Para activar el asistente en shellphish se debe seleccionar la opción “Custom” y tal como se puede ver en la siguiente imagen, es necesario comenzar a rellenar ciertos campos.

Ahora, cuando una potencial víctima entra en “https://torrens.serveo.net” podrá ver lo siguiente. Algo que a mi gusto resulta bastante deficiente desde el punto de vista estético, por este motivo es posible que el mejor enfoque sea crear la plantilla manualmente.

Se trata de una herramienta para realizar ataques de phishing basados en servicios existentes, sin embargo dada su simplicidad también es posible crear plantillas personalizadas partiendo de la clonación de un sitio web legitimo. Sin ser una herramienta con muchas características o funcionalidades, cumple bastante bien con el objetivo para el que fue creada.

Un Saludo y Happy Hack!
Adastra.

Seguridad en ElasticSearch: ES desde la perspectiva de un pentester – Parte V

octubre 14, 2019 1 comentario

Cuando ponemos un nodo en modo “cluster” es cuando realmente se empiezan a complicar las cosas desde el punto de vista de la seguridad. Algunas consideraciones que fácilmente se pueden detectar desde el punto de vista de un pentester son las siguientes:

Sin mecanismos de autenticación o autorización en el acceso a la API Rest.

Como se ha visto en los post anteriores de ésta serie (parte1, parte2, parte3, parte4), la API Rest de una instancia de ES es muy potente, de hecho es el corazón del motor. Desafortunadamente, por defecto no se implementa ningún mecanismo de seguridad para la autenticación de usuarios. Recordad que ES es una base de datos, con un modelo de funcionamiento diferente a las bases de datos relacionales pero su objetivo principal es el mismo: el almacenamiento de información. Si en una base de datos tradicional se permite que cualquier usuario sin autenticación previa, ejecute consultas SQL sobre las tablas y que tenga la posibilidad de lanzar procedimientos almacenados, estamos en una situación poco deseable en la que como mínimo, es posible que se produzcan fugas de información sensible y a mayores, en la explotación del sistema. Pues bien, por defecto esto es lo que tenemos con cualquier instancia de ES. Alguien podría decir: “pero no pasa nada, porque la API Rest de ES se vincula únicamente a la interfaz de red local, que no está expuesta a otros sistemas y por lo tanto únicamente un administrador podrá acceder a ella”. Sí y no. Si utilizamos ES en modo de desarrollo, es decir, con un único nodo local y sin activar el modo cluster esto es cierto, pero aún así, si el sistema ya ha sido comprometido y un atacante tiene la posibilidad de ejecutar comandos, se podría crear fácilmente un túnel SSH que exponga el puerto en el que se encuentra en ejecución la API Rest de ES y de esta forma, acceder a la información almacenada en el cluster. Incluso, sin llegar al supuesto de que el sistema haya sido comprometido, es posible que el administrador quiera acceder a la instancia remotamente y lanzar consultas, para ello también podría crear un túnel SSH abriendo la posibilidad de que él y cualquiera pueda entrar ya que por defecto, no hay mecanismos de autenticación y autorización.

ssh -L 0.0.0.0:9999:127.0.0.1:9200 esuser@localhost

Por ejemplo, si se ejecuta el comando anterior sobre el sistema en el que se encuentra en ejecución la instancia de ES, se abrirá el puerto “9999” en todas las interfaces de red disponibles y se podrá acceder a la API Rest de ES utilizando dicho puerto. Esta es solo una forma, existen otras más, por ejemplo utilizando redirecciones con socat. Este y muchos otros temas relacionados con la post-explotación de sistemas los enseño en los cursos que imparto en Securízame por si estás interesado.

Operaciones de administración de la instancia de ES sin protecciones de ningún tipo.

Ahora bien, en el caso de que efectivamente, lo anterior no sea posible porque el sistema está correctamente securizado y no hay agujeros de seguridad que le permitan a un atacante crear un túnel como el anterior, aún hay que considerar que si la instancia de ES se ha configurado en modo “cluster”, cualquiera se podrá conectar a ella, ya que como se ha visto en la parte anterior de esta serie, para que el modo cluster funcione correctamente la instancia tiene que permitir la conexión remota por parte de otros nodos. Esto significa que lo más probable es que otras instancias puedan consultar cualquier endpoint de la API Rest, incluyendo aquellos que permiten la administración completa del nodo, nuevamente sin ningún tipo de restricción.

Fugas de información sensible con instancias maliciosas en el cluster

Otra cuestión a tener en cuenta en el modo cluster, es que se puede consultar fácilmente si una instancia actúa como “master” y levantar otra instancia que funcione en modo “esclavo” para obtener las replicas de la información almacenada en el cluster. Esto está muy bien sino fuese porque nuevamente, no hay ningún mecanismo de autenticación y autorización por defecto en ES para este tipo de operaciones, es decir, que por defecto se “confía” en que la instancia que se quiere unir al cluster es legitima y no hay ningún mecanismo para indicar cuáles son aquellas instancias que realmente están autorizadas para unirse al cluster y cuáles no. Es posible que el lector recuerde o haya visto alguna vulnerabilidad de transferencia de zona en servidores DNS mal configurados, pues en este caso estamos ante una situación muy similar. Es posible levantar una instancia de ES y editar la configuración por defecto para que apunte al master y obtener la replica de los documentos almacenados en el cluster, es decir, la información propiamente dicha.

Denegación del servicio sobre nodos del cluster.

Existe otro problema inherente al funcionamiento de ES relacionado con el almacenamiento de la información. Como se ha mencionado anteriormente, la estructura de los documentos almacenados en ES parte de un índice, que funciona como un esquema en una base de datos relacional. Esta información se carga en memoria con el objetivo de que el acceso sea rápido, por lo tanto la máquina sobre la que se ejecutan dichas instancias tienen que ser lo suficientemente potente (tanto en términos de memoria como de procesamiento) para admitir la carga de estos documentos. Se tiene que tener un muy buen control sobre lo que se va a almacenar, es decir, permitir la inserción de documentos únicamente con la información estrictamente necesaria y evitar que sean estructuras JSON muy grandes. Si la API Rest de ES puede ser consultada por cualquiera o simplemente, no se tiene cuidado con las cuestiones indicadas antes, es posible que hayan problemas de almacenamiento en una o varias instancias del cluster, pudiendo incluso provocar condiciones de denegación de servicio. Por otro lado, tal como se ha explicado en uno de los posts anteriores de la serie, gracias a la API Rest de ES es posible abrir y cerrar índices, acción que se encarga de volcar los documentos del índice en cuestión a disco (operación de cierre) o de disco a memoria (operación de apertura). El problema de estas operaciones es que son costosas en términos de recursos como resulta evidente y si se ejecutan constantemente sin ningún control sobre índices con miles de documentos (ejecutando un script malicioso, por ejemplo) es bastante probable que se produzca una condición de denegación de servicio.

Tráfico sin cifrar.

En modo cluster los nodos se comunican e intercambian paquetes de datos sin ningún tipo de protección en la capa de transporte. Esto significa que evidentemente, es inseguro por defecto. Como seguramente ya sabéis, esto puede dar lugar a diferentes tipos de ataques que van desde la captura pasiva de paquetes hasta la manipulación y posterior reinyección de los mismos en ciertos escenarios. En este punto poco más merece la pena explicar, es evidente que se trata de un problema de seguridad que no es aceptable en un cluster encargado de almacenar información sensible.

¿Contramedidas?

Si el lector ha trabajado anteriormente con ES, seguramente una de las primeras cosas en las que pensará será en las características de seguridad disponibles en el módulo “X-Pack” (https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-security.html) y a continuación en la inversión que habría que realizar para adquirir y habilitar dicho módulo en la instancia de ES, ya que no es gratuito. Sin embargo, debido a la presión de la comunidad pidiendo implementar mecanismos de seguridad en la versión gratuita de ES, desde mayo del presente año todas las versiones de ES desde la 6.8 cuentan con características de seguridad incluidas en el producto y que se pueden activar si el administrador así lo desea. Dicho anuncio se ha hecho público hace unas pocas semanas a la fecha de escribir este post y se puede consultar aquí: https://www.elastic.co/es/blog/getting-started-with-elasticsearch-security

No obstante, como resulta evidente las instalaciones de ES existentes tienen que ser “reinstaladas” con las nuevas versiones disponibles en los repositorios de ES, lo cual no es precisamente una tarea fácil cuando la instancia o cluster tiene datos almacenados pero ya es algo.

Algunas de las características relativas a la seguridad en ES, que ahora se encuentran integradas por defecto y para las que no hace falta tirar de X-Pack son las siguientes.

  • Control de accesos basado en roles.
  • Comunicación segura entre nodos de la instancia.
  • Autenticación de usuarios basada en directorio activo, LDAP, Kerberos, SAML o de forma local.
  • Tráfico confiable “nodo a nodo”, habilitando filtrados basados en listas blancas.
  • Logging en eventos relacionados con la seguridad de forma transparete.

Entre muchas otras cosas más. Se trata de características que evidentemente se deben utilizar en un entorno productivo para proteger la información de accesos no autorizados y “miradas indiscretas”.

Un Saludo y Happy Hack.

Adastra.

Herramientas de pentesting interesantes: Jok3r – Parte 2

septiembre 20, 2019 1 comentario

En el post anterior se ha comenzado a hablar de Jok3r y sus funcionalidades básicas, una herramienta que es interesante desde el punto de vista de un pentester dado que integra muchas de las herramientas de uso común en auditorías de red y web. En dicho post solamente se han mencionado los comandos básicos, el manejo de bases de datos locales y cómo instalar la herramienta utilizando la imagen oficial de Docker. Ahora, resulta conveniente ver cómo utilizar lo visto anteriormente para realizar verificaciones de seguridad sobre un entorno concreto.
El comando utilizado para realizar las verificaciones de seguridad incluidas en Jok3r es “attack” el cual recibe múltiples opciones que sirven para configurar los detalles del objetivo, añadir los resultados a una base de datos local concreta o incluso para realizar ataques a múltiples objetivos que se encuentran almacenados en alguna “mission” de Jok3r. En la configuración del ataque es posible utilizar un perfil existente en Jok3r, que tal como se ha visto en el post anterior a este, se pueden consultar con el comando “info” de la siguiente forma:

python3 jok3r.py info –attack-profiles

Opciones en el comando “attack”

A continuación se verá una lista de las opciones disponibles para el comando “attack”, las cuales hay que conocer para poder lanzar las pruebas correctamente.

Opción Descripción
-t / –target Permite especificar el objetivo del ataque. Puede ser una IP:Puerto, un nombre de dominio o una URL.
-s / –service Permite especificar un servicio concreto a auditar.
–add2db Permite añadir o actualizar los resultados obtenidos por el comando en la “mission” (base de datos local) especificada. Si no se utiliza esta opción, los resultados son añadidos/actualizados directamente en la mission “default”.
-m / –mission Permite leer una mission local y lanzar los checks de seguridad contra todos los objetivos registrados en dicha mission.
-f / –filter Filtro sobre los objetivos a los que se deben ejecutar las pruebas de seguridad. Normalmente viene acompañada de la opción “-m”. Los filtros disponibles son ip, host, port, service, url, osfamily y banner. Además, cada filtro debe venir separado por “;” y la sintaxis es “filtro=valor”. Por ejemplo:
“ip=10.1.1.0/24,10.0.0.4;port=80,8000-8100;service=http”. También es posible repetir esta opción varias veces en el mismo comando.
–new-only Realiza las pruebas de seguridad únicamente sobre los servicios que no han sido probados previamente.
–nmap-banner-grab Habilita o deshabilita un escaneo con Nmap del tipo “service detection”. Valores validos “on” y “off”
–reverse-dns Habilita o deshabilita las peticiones DNS reversas contra el objetivo. Valores validos “on” y “off”
–profile Permite ejecutar un perfil de ataque concreto.
–cat-only Permite ejecutar las pruebas de seguridad sobre las categorías especificadas únicamente. Cada categoría se indica separada por coma.
–cat-exclude Permite ejecutar las pruebas de seguridad sobre todas las categorías excepto sobre las especificadas en esta opción. Cada categoría se indica separada por coma.
–checks Permite ejecutar los checks especificados en esta opción. Cada check se indica separado por coma.
–fast Modo rápido. Desactiva la interacción con el usuario y todas las verificaciones se ejecutan en modo desatendido.
–recheck Si un check se ha ejecutado previamente, se vuelve a lanzar. Esto es útil especialmente cuando se utiliza una mission sobre la que se ha trabajado previamente e interesa que se vuelvan a realizar todas las comprobaciones.
-d Habilita el modo “debug”.
–userlist En el caso de encontrar un formulario o mecanismo de autenticación, la herramienta ejecuta un atacante por diccionario con listas que vienen incluidas en la herramienta. Con esta opción se utiliza una lista de usuarios indicada por el usuario
–passlist Con esta opción se utiliza una lista de contraseñas indicada por el usuario
–cred En el caso de que se cuente con las credenciales de un servicio concreto, en lugar de permitir que la herramienta ejecute un ataque de fuerza bruta se pueden indicar dichas credenciales en esta opción de la siguiente forma: –cred <service> <user> <pass>
–user Permite especificar un usuario concreto con el que se deberán realizar los ataques de fuerza bruta en el caso de encontrar un formulario o mecanismo de autenticación.
–option Permite especificar una opción personalizada, por ejemplo una cabecera HTTP concreta para realizar las peticiones contra un sitio web.

Conociendo las opciones, ya se puede utilizar el comando “attack” sin limitaciones. Evidentemente la forma más simple de hacerlo es contra un objetivo concreto y lanzando todas las comprobaciones. Por ejemplo:

python3 jok3r attack -t http://192.168.1.50/twiki/

La herramienta intenta obtener información sobre el servidor web utilizando “Wappalyzer” y también ejecuta un escaneo del tipo “service detection” para identificar el banner del servicio con Nmap. Al no indicar la opción “–add2db” todos los resultados serán guardados en la mission “default”.

Después de recopilar toda la información, la herramienta solicita confirmación para iniciar el ataque. Las comprobaciones pueden tardar un buen rato y en segundo plano, la herramienta se encargará de almacenar los resultados en la mission correspondiente. No obstante, dado que no se ha indicado la opción “–fast”, la herramienta pedirá confirmación antes de lanzar cualquier prueba, lo cual puede ser bastante tedioso tal como se enseña en la siguiente imagen.

El siguiente comando se encargará de lanzar todas las comprobaciones, en modo “fast” y añadiendo los resultados a la mission “adastra”.

python3 jok3r.py attack –fast -t http://192.168.1.50/twiki/

En la medida en la que se van ejecutando las pruebas, se puede apreciar la ejecución de herramientas comunes como “dirsearch”, “wig”, “nikto”, “h2t”, módulos de metasploit y scripts para la detección de vulnerabilidades en CMS, servidores de aplicación y frameworks concretos, aunque evidentemente muchas de estás comprobaciones estarán fuera de contexto dependiendo del objetivo a analizar.

Se pueden combinar todas las opciones indicadas en la tabla anterior, permitiendo ejecutar la herramienta de un modo más concreto contra el objetivo a analizar, por ejemplo.

 

#python3 jok3r.py attack -t 192.168.1.50:21 -s ftp –cat-only recon –add2db ftpmission
#python3 jok3r.py attack -m adastra -f “port=21;service=ftp” –fast #python3 #python3 jok3r.py attack -m adastra -f “port=2222;service=ssh;ip=192.168.1.1” -f “ip=192.168.1.50;service=ftp” –fast –recheck

Finalmente, cuando finalizan las comprobaciones de seguridad realizadas por la herramienta, todos los resultados se quedan almacenados en la base de datos local y a continuación se puede generar un reporte con la opción “report” del comando “db” tal como se enseña en la siguiente imagen.

Una vez se abre el reporte, se muestra cada una de las herramientas y pruebas realizadas para los hosts que se encuentran almacenados en la “mission” seleccionada. Se trata de un informe en formato HTML que está muy bien estructurado y que da una visión general de las vulnerabilidades descubiertas y la ejecución de las herramientas incluidas en el toolbox.

Bien, esto es todo sobre Jok3r, en el próximo post de esta serie hablaré sobre otra herramienta para pentesting que seguramente te resultará también muy interesante.

Un saludo y Happy Hack
Adastra.

A %d blogueros les gusta esto: