Modlishka Proxy Inverso con Autenticación 2FA
Modlishka Proxy Inverso con Autenticación 2FA

Modlishka: Proxy Inverso con Autenticación 2FA

Modlishka es un poderoso y flexible proxy inverso HTTP. Implementa un enfoque completamente nuevo e interesante de manejar el flujo de tráfico HTTP basado en el navegador, que permite convertir en proxy de forma transparente el tráfico de destino multidominio, tanto TLS como no TLS, en un solo dominio, sin necesidad de instalar ningún certificado adicional en el cliente. ¿Qué significa esto exactamente? En resumen, simplemente tiene un gran potencial, que puede ser utilizado en muchos escenarios de uso…

Desde el punto de vista de la seguridad, Modlishka puede ser utilizado actualmente:

  • Apoyar las pruebas de penetración de phishing ético con un componente de proxy inverso transparente y automatizado que tiene un soporte universal de “bypass” 2FA.
  • Envenenar automáticamente el caché de los navegadores HTTP 301 y secuestrar permanentemente las URLs que no sean TLS.
  • Diagnosticar y secuestrar el tráfico HTTP de las aplicaciones basadas en el navegador desde la perspectiva del ataque “Client Domain Hooking”.
  • Envolver los sitios web heredados con la capa TLS, confundir los robots de rastreo y los escáneres automatizados, etc.
  • TBC

Modlishka se escribió como un intento de superar las limitaciones del proxy inverso estándar y como un desafío personal para ver lo que es posible con suficiente motivación y un poco de tiempo de investigación adicional. Los resultados obtenidos parecieron ser muy interesantes y la herramienta fue inicialmente lanzada y posteriormente actualizada con el objetivo de:

  • Destacar las debilidades del esquema de autenticación de dos factores (2FA) utilizado actualmente, para que la industria pueda crear y aplicar soluciones de seguridad adecuadas.
  • Apoyar otros proyectos que podrían beneficiarse de un proxy inverso universal y transparente.
  • Sensibilizar a la comunidad sobre las técnicas y estrategias modernas de phishing y apoyar a los probadores de penetración en su trabajo diario.

Nota

Modlishka se escribió principalmente para tareas relacionadas con la seguridad. Sin embargo, puede ser útil en otros escenarios de uso no relacionados con la seguridad.

Proxying eficiente!

Características

Algunas de las características más importantes de ‘Modlishka’:

General:

  • Apuntar y hacer clic (Point-and-click) en HTTP y HTTPS proxy reverso de un dominio arbitrario.
  • Control total del flujo de tráfico TLS de origen “cruzado” desde los navegadores de sus usuarios (sin necesidad de instalar ningún certificado adicional en el cliente).
  • Configuración fácil y rápida a través de opciones de línea de comandos y archivos de configuración JSON.
  • Inyección de carga útil de JavaScript basada en patrones.
  • Envoltura de sitios web con una “seguridad” adicional: Envoltura TLS, autenticación, cabeceras de seguridad relevantes, etc.
  • Diseño sin estado (Stateless). Se puede escalar fácilmente para manejar una cantidad arbitraria de tráfico, por ejemplo, a través de un equilibrador de carga DNS.
  • Puede ser ampliado fácilmente con tus ideas a través de plugins modulares.
  • Plugin de generación de certificados TLS de prueba automática para el dominio proxy (requiere un certificado CA autofirmado)
  • Escrito en Go, así que funciona básicamente en todas las plataformas y arquitecturas: Windows, OSX, Linux, BSD soportado…

Relacionado con la seguridad:

  • Soporte para la mayoría de los esquemas de autenticación 2FA (out of the box).
  • Implementación práctica del ataque “Client Domain Hooking” Soportado con un plugin de diagnóstico.
  • Recolección de credenciales de usuario (con contexto basado en identificadores de parámetros de URL pasados).
  • Plugin de panel web con un resumen de las credenciales recogidas automáticamente y un módulo de suplantación de sesión de usuario con un solo clic (prueba de concepto/beta).
  • No hay plantillas de sitios web (sólo apunte Modlishka al dominio de destino – en la mayoría de los casos, se manejará automáticamente sin ninguna configuración manual adicional).

Proxying en acción (2FA bypass)

“Una imagen vale más que mil palabras”:

Modlishka en acción contra un ejemplo de un esquema de autenticación de dos factores (prueba de concepto de bypass basada en SMS) :

Proxying Modlishka
Proxying Modlishka

Instalación

La última versión del código fuente se puede obtener desde aquí (zip) o aquí (tar).

Obtener el código con ‘go get’ :

$ go get -u github.com/drk1wi/Modlishka

Compila el binario y ya estás listo para empezar:

$ cd $GOPATH/src/github.com/drk1wi/Modlishka/
$ make
Instalación Modlishka
Instalación Modlishka
./dist/proxy -h
 Usage of ./dist/proxy:
 -cert string
         base64 encoded TLS certificate
 -certKey string
         base64 encoded TLS certificate key
 -certPool string
         base64 encoded Certification Authority certificate
 -config string
         JSON configuration file. Convenient instead of using command line switches.
 -controlCreds string
       Username and password to protect the credentials page.  user:pass format
 -controlURL string
       URL to view captured credentials and settings. (default "SayHello2Modlishka")
 -credParams string
           Credential regexp with matching groups. e.g. : baase64(username_regex),baase64(password_regex)
 -debug
         Print debug information
 -disableSecurity
         Disable proxy security features like anti-SSRF. 'Here be dragons' - disable at your own risk.
 -dynamicMode
           Enable dynamic mode for 'Client Domain Hooking'
 -forceHTTP
          Strip all TLS from the traffic and proxy through HTTP only
 -forceHTTPS
          Strip all clear-text from the traffic and proxy through HTTPS only
 -jsRules string
         Comma separated list of URL patterns and JS base64 encoded payloads that will be injected - e.g.: target.tld:base64(alert(1)),..,etc
 -listeningAddress string
         Listening address - e.g.: 0.0.0.0  (default "127.0.0.1")
 -log string
         Local file to which fetched requests will be written (appended)
 -plugins string
         Comma seperated list of enabled plugin names (default "all")
 -proxyAddress string
         Proxy that should be used (socks/https/http) - e.g.: http://127.0.0.1:8080 
 -proxyDomain string
         Proxy domain name that will be used - e.g.: proxy.tld
 -postOnly
         Log only HTTP POST requests
 -rules string
           Comma separated list of 'string' patterns and their replacements - e.g.: base64(new):base64(old),base64(newer):base64(older)
 -target string
         Target domain name  - e.g.: target.tld
 -targetRes string
         Comma separated list of domains that were not translated automatically. Use this to force domain translation - e.g.: static.target.tld 
 -terminateTriggers string
         Session termination: Comma separated list of URLs from target's origin which will trigger session termination
 -terminateUrl string
         URL to which a client will be redirected after Session Termination rules trigger
 -trackingCookie string
         Name of the HTTP cookie used to track the client (default "id")
 -trackingParam string
         Name of the HTTP parameter used to track the client (default "id")

Referencias

  • WIKI: con más detalles sobre el uso y la configuración de la herramienta.
  • FAQ

Publicaciones de Blog:

Más artículos
Combatir técnicas anti-scraping
5 técnicas anti-scraping que puedes enfrentar