Descubriendo SharpSploit: Mimikatz, Enumeración, Mov lateral, Bypasses... ¡En C#!

Como diría @Superfume¡tenemos dulcines!

Hace escasas horas salió SharpSploit, una nueva herramienta escrita en C# que nos trae Ryan Cobb (@cobbr_io).  El mismo Ryan ha escrito un post sobre su herramienta explicando un poco de qué se compone y el por qué de su existencia:



https://posts.specterops.io/introducing-sharpsploit-a-c-post-exploitation-library-5c7be5f16c51

Así mismo, el repositorio de la tool es el siguiente:

https://github.com/cobbr/SharpSploit

Evidentemente, si se sabe inglés y se tiene tiempo, lo mejor es leerse el post original. Por mi parte destacaré ciertos puntos interesantes de la herramienta y veremos algunos ejemplos de ejecución de la misma.
 
SharpSploit

Para empezar, el nombre de la herramienta hace honor al proyecto PowerSploit, de lo cual nos daremos cuenta rápido. A pesar de sus similitudes, Ryan ha enfatizado en que no pretende ser la versión C# de éste.

En SharpSploit nos encontramos con dulcines como:

    • Mimikatz
    • Gestión de Tokens (impersonar, bypass UAC, …)
    • Enumeración local y de dominio.
    • Ejecución de código evitando protecciones actuales (AMSI, ScriptBlock logging, …)
    • Movimiento lateral
    • …

A causa de las recientes medidas que se están tomando frente al uso malicioso/ofensivo de Powershell, la comunidad está acercándose poco a poco al empleo de C# como alternativa para evadir dichas protecciones.

Sin embargo, el autor destaca algunos “peros” en el uso de herramientas de este tipo:

    • Nos movemos de un lenguaje de scripting (Powershell) a un lenguaje compilado (C#).
    • Debemos tener en cuenta las versiones de .NET
        ◦ Normalmente encontraremos .NET v3.5 en la mayor parte de Windows por defecto.
        ◦ Los Windows 10 y Server 2016 más nuevos tendrán únicamente instalados .NET v4.0 por defecto.
        ◦ En algunos casos ni si quiera está activado.
Para este último problema, SharpSploit dispone de funcionalidad tanto para .NET v3.5 como para .NET v4.0.

Publican un 0-day en el Jet Database Engine de Windows

El 8 de mayo de 2018 Lucas Leong notificó a Microsoft a través del ZDI (Zero Day Initiative) de Trend Micro un 0-day que permite la ejecución remota de código debido a una vulnerabilidad en la administración de índices del Jet Database Engine.

El caso es que se han cumplido los 120 días de margen para Microsoft, se ha liberado y todavía no hay parche para una vulnerabilidad que puede ser explotada por cualquier atacante a través de un archivo de base de datos JET especialmente diseñado para provocar una escritura "out-of-bounds".

Según el ZDI, "La causa de este problema reside en el Motor de base de datos JET de Microsoft. Microsoft parcheó otros dos problemas en JET en las actualizaciones de septiembre. Pero mientras que los errores parcheados se describen como desbordamientos de búfer, este error adicional es en realidad una escritura fuera de límite (out-of-bounds), que se puede desencadenar al abrir un data source Jet a través de OLEDB".

A continuación se muestra una imagen con el crash provocado:


Afortunadamente, se requiere la interacción del usuario requiere para explotar esta vulnerabilidad ya que tienen que abrir el archivo malicioso.

El ZDI confirma que este Zero-day funciona en Windows 7 y se cree que también en el resto de versiones. A falta de exploits totalmente funcionales, podemos encontar ya una Poc aquí:

https://github.com/thezdi/PoC/tree/master/ZDI-18-1075

Fuentes:
- ZDI-CAN-6135: A Remote Code Execution Vulnerability in the Microsoft Windows Jet Database Engine
- Microsoft's Jet crash: Zero-day flaw drops after deadline passes
- Zero-Day Windows Jet Database Engine Vulnerability Allows Remote Code Execution

La ENISA lanza una herramienta de evaluación de las estrategias de ciberseguridad

La ENISA (Agencia Europea de Seguridad de las Redes y de la Información) acaba de lanzar una nueva herramienta que ayudará a los Estados Miembros a evaluar sus prioridades de acuerdo con sus estrategias nacionales de ciberseguridad. Para cada objetivo estratégico, la herramienta ofrece recomendaciones e ideas sobre cómo mejorar. ENISA desarrolló la herramienta con el objetivo de proporcionar resultados de una manera rápida y fácil de usar.

https://www.enisa.europa.eu/topics/national-cyber-security-strategies/national-cyber-security-strategies-guidelines-tools/national-cyber-security-strategies-evaluation-tool


Las autoridades a cargo de monitorizar la implementación de la Estrategia Nacional de Seguridad Cibernética (NCSS) pueden usar la herramienta para seguir la implementación y para reflexionar sobre las próximas prioridades estratégicas. Las actualizaciones de la herramienta en el futuro incluirán nuevas preguntas y objetivos para cubrir las necesidades del panorama de ciberseguridad emergente. Esta herramienta también es compatible con los requisitos de la Directiva NIS para que todos los Estados miembros tengan un NCSS y lo actualicen regularmente.

ENISA también ha actualizado su mapa interactivo de la NCSS, mejorando su usabilidad e introduciendo nuevas características, tales como los objetivos implementados de la estrategia, ejemplos detallados, historial de versiones y selección de idioma.

Las nuevas herramientas se presentaron durante el sexto taller nacional de ENISA sobre Estrategias de seguridad cibernética. El taller se enfocó en las últimas noticias del panorama de NCSS y la colaboración a través de los Centros de Intercambio de Información y Análisis (ISAC). El Mecanismo «Conectar Europa» (CEF), un instrumento clave de financiación de la UE destinado a promover el crecimiento, el empleo y la competitividad a través de inversiones específicas en infraestructuras a nivel europeo, se presentó también en el taller.

La Autoridad Reguladora de Comunicaciones de Finlandia (FICORA) fue la anfitriona del evento en Helsinki, donde participaron más de 50 entidades interesadas tanto del sector público como del privado.

Información de background

Desde 2012, ENISA ha estado apoyando a los Estados miembros de la UE para desarrollar, implementar y evaluar sus estrategias nacionales de ciberseguridad. Para lograr este objetivo, ENISA ha desarrollado varias herramientas, estudios, directrices y un grupo de expertos.

Inicialmente, solo 12 Estados miembros implementaron tales estrategias en sus legislaciones nacionales. Actualmente, los 28 Estados miembros de la UE tienen una Estrategia Nacional de Seguridad Cibernética, mientras que muchos de ellos están desarrollando su segunda o incluso tercera versión.

Fuente: https://www.enisa.europa.eu/news/enisa-news/enisa-launches-the-cybersecurity-strategies-evaluation-tool

Laboratorio para practicar inyecciones SQL (más de 60 ejercicios/lecciones)

El holandés Audi-1 tiene un repositorio en Github muy interesante llamado SQLI-LABS que nos permitirá montar rápidamente una plataforma para aprender y practicar inyecciones SQL de diferentes tipos:

- Inyecciones basadas en error (Union Select): 1. String 2. Integer
- Inyecciones basadas en error (Double Injection Based)
- Inyecciones ciegas: 1. booleanas 2.basadas en tiempo
- Inyecciones de peticiones update
- Inyecciones de peticiones insert
- Inyecciones en la cabecera HTTP 1. basadas en referer. 2. basadas en user-agent. 3. basadas en la cookie
- Inyecciones de segundo órden
- Evasión de WAF
      - bypass de filtros de Blacklist: Stripping comentarios, OR & AND, espacios y UNION & SELECT
       - Impidence mismatch
- Bypass de addslashes()
- Bypass de mysql_real_escape_string. (bajo ciertas condiciones especiales)
- Inyecciones SQL de tipo stacked
- Extracción Secondary channel


Instrucciones

- Descomprime los contenidos dentro de la carpeta de apache, por ejemplo en /var/www. Esto creará el directorio sql-labs.
- Como alternativa, se puede usar el comando git directamente desde la carpeta /var/www: git clone https://github.com/Audi-1/sqli-labs.git sqli-labs
- Abre el archivo "db-creds.inc" que se encuentra debajo del dir sql-labs/sql-connections.
- Actualiza el nombre de usuario y la contraseña de la base de datos MYSQL. (Por defecto root:toor)
- Desde el navegador accede a la url con path sql-labs para cargar index.html.
- Haz clic en la configuración del enlace setup/resetDB para crear una base de datos, las tablas y completar los datos.
- Los labs ya estarían listos para usar, haz clic en el número de la lección para abrir la página correspondiente.
- Disfruta de los laboratorios!

Tienes videotutoriales, walkthroughts y explicaciones en distintos sites del autor:

- http://dummy2dummies.blogspot.com
- http://www.securitytube.net/user/Audi
- https://www.facebook.com/sqlilabs

También tiene un libro pero todavía está en desarrollo: https://leanpub.com/SQLI-LABS

Repo: https://github.com/Audi-1/sqli-labs

[HTB-writeup] Canape

¡Buenas! Hoy venimos con la última máquina retirada de la plataforma Hackthebox: Canape. Para resolverla necesitaremos tener conocimientos básicos de Linux, un poco de coding para explotar una vulnerabilidad PHP, aprovecharnos de una versión vulnerable de base de datos y finalmente, escalar privilegios vía sudo. Así que... ¡Vamos allá!

Scanning

Como siempre, comencemos con un SYN scan para ser rápidos y sigilosos y, después, comprobar versiones de servicios y ejecutar scripts seguros de NSE.

-sS

Un escaneo de los puertos más comunes no arroja toda la información que podemos obtener, y es cuando utilizamos el parámetro -p- (escanear todos los puertos) cuando descubrimos que hay otro puerto abierto.

Ilustración 1. Resultados SYN scan.

-sV

Ilustración 2. Scripts NSE y escaneo de versiones.

Nota: -sS = SYN scan; -sV = version scan; -sC = ejecutar scripts NSE seguros; -n = no resolver nombre; -Pn = no intentar comprobar si el host está vivo; -p = puertos -oA = todos los formatos de salida.

Enum
A primera vista ya encontramos mucha información interesante… un servidor SSH en el puerto 65535, un servidor web con un sitio fan de los Simpsons y… un repositorio GIT!
Usemos Burp para preparar un proxy que nos logee todas las peticiones hacia la web.

Ilustración 3. Árbol inicial en Burpsuite.

¿No has parcheado tu Windows esta semana? Pues ya han liberado un exploit que permite RCE (explotando MSXML)...

Microsoft publicó ayer un parche para una vulnerabilidad de corrupción de memoria en el parser MSXML (Microsoft XML Core Services). Mediante esta vulnerabilidad con CVE-2018-8420, un atacante podría engañar a cualquier usuario para que visite una página web especialmente diseñada para invocar MSXML a través de un navegador, lo que le permitiría ejecutar código y tomar el control del sistema de la víctima.

Y a lo que nos atañe: poco después de publicar el parche, Theropord publicó en su repositorio de Github una PoC totalmente funcional. Os recomiendo echar un vistazo al código (que no puede ser más sencillo) y probarlo para que veáis el peligro que supone para un sistema que no se ha actualizado... ¡este mismo martes!:


Poc modificación xml (PS) por Lz1y:


Productos afectados:

Windows 7 for 32-bit Systems Service Pack 1
Windows 7 for x64-based Systems Service Pack 1
Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)
Windows Server 2008 R2 for Itanium-Based Systems Service Pack 1
Windows Server 2008 R2 for x64-based Systems Service Pack 1
Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation)
Windows Server 2012
Windows Server 2012 (Server Core installation)
Windows 8.1 for 32-bit systems
Windows 8.1 for x64-based systems
Windows Server 2012 R2
Windows RT 8.1
Windows Server 2012 R2 (Server Core installation)
Windows 10 for 32-bit Systems
Windows 10 for x64-based Systems
Windows Server 2016
Windows 10 Version 1607 for 32-bit Systems
Windows 10 Version 1607 for x64-based Systems
Windows Server 2016 (Server Core installation)
Windows 10 Version 1703 for 32-bit Systems
Windows 10 Version 1703 for x64-based Systems
Windows 10 Version 1709 for 32-bit Systems
Windows 10 Version 1709 for x64-based Systems
Windows Server, version 1709 (Server Core Installation)
Windows 10 Version 1803 for 32-bit Systems
Windows 10 Version 1803 for x64-based Systems
Windows Server, version 1803 (Server Core Installation)
Windows Server 2008 for Itanium-Based Systems Service Pack 2
Windows Server 2008 for 32-bit Systems Service Pack 2
Windows Server 2008 for x64-based Systems Service Pack 2
Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation)

Repos:

- https://github.com/Theropord/CVE-2018-8420
- https://github.com/Lz1y/CVE-2018-8420  

Nota:  Por el momento se ha conseguido reproducir la PoC html en IE 9.0. Cualquier prueba no dudes en comentar!

Solución al reto 27: Boot2root Karim

{0x0} Introducción

Karim es un reto de tipo boot2root, que consiste en una máquina que debemos vulnerar para conseguir las flags de usuario (user.txt) y root (root.txt) suministrada por HackPlayers en su Reto 27 y creada por César Calderón aka @_stuxnet basada en Linux Ubuntu 17.10 OS, os mostraremos los pasos que hemos dado.

{0x1} Reconocimiento

Antes de empezar ponemos nuestra máquina de pentesting Kali Linux en Host-Only y la máquina hackplayers en Host-Only dentro del rango de red 192.168.153.0/24.

Y vamos a la tarea, lanzamos primeramente descubrimos la nuestra dirección IP y de la  máquina hackplayers a vulnerar



Y comprobamos que hay conexión con la máquina a vulnerar lanzado un ping:


{0x3} Escaneo

Realizamos un escaneo de puertos para comprobar los servicios que están abiertos y corriendo en la máquina a vulnerar:

Evadiendo WAFs mediante cifrados SSL no soportados

Hoy en día los WAFs (Web Application Firewalls) son un medio muy utilizado para proteger las aplicaciones web de los ataques más comunes. Eso sí, siempre han de verse como una medida de seguridad más, no como la única. Por ejemplo, si hay un fallo de la aplicación que permite una inyección de cualquier tipo hay que corregirlo en el código, no vale solo (o no debería valer) tener un WAF como única barrera porque, como veremos a continuación, pueden ser bypasseados mediante distintas técnicas. Una de ellas y de la que hablaremos en este post es la que plantea 0x09AL...

Los WAFs son como firewalls de nivel 7 o IPSs que inspeccionan el tráfico (y lo bloquean si es necesario) hacia la aplicación. El investigador 0x09AL recibió una alerta cuando accedió por primera vez a uno de estos WAF del tipo 'Unsupported SSL Ciphers', es decir, el WAF no soportaba ciertos algoritmos de cifrado en una conexión SSL... y en seguida comprendió que, si la aplicación que hay detrás soportaba un cifrado SSL que NO soportaba el WAF, una técnica fácil y eficaz sería comunicarse hacia el mismo usando uno de esos algoritmos. Es decir, el tráfico SSL que atravesara el WAF hacia la aplicación no podría ser inspeccionado, con lo que un atacante podría evadir el WAF... así de sencillo.

Basta con comparar los algoritmos que acepta uno y otro, el WAF y el servidor web respectivamente. Imaginar por ej. que el servidor web soporta TLSv1 de 256 bits ECDHE-RSA-AES256-SHA y el WAF no:

$ sslscan http://target/ | grep Accept

Accepted TLSv1 256 bits ECDHE-RSA-AES256-SHA

Herramienta: https://github.com/rbsec/sslscan

El atacante simplemente tendría que especificar ese algoritmo y el WAF no podría inspeccionar el tráfico:

$ curl --ciphers ECDHE-RSA-AES256-SHA https://waf-test.lab.local/ssl-cipher-test
<html lang=en>
  <title>HELLO </title>
  <p>Bypass worked</p>

En base a esta técnica, 0x09AL ha publicado también una herramienta llamada WAF_buster que nos facilita la tarea de bypassear los WAFs abusando de las suites de cifrado SSL. Primero busca todos los cifrados admitidos durante la negociación de SSL/TLS en el servidor web mediante SslScan y luego los prueba con un simple curl. Si encuentra cualquier cifrado no soportado por el WAF pero si por el Web Server nos mostrará un mensaje que dice "Firewall bypass".

$ git clone https://github.com/viperbluff/WAF_buster.git
$ cd WAF_buster

$ python2 WAF_buster.py --input


Repositorio: https://github.com/viperbluff/WAF_buster

[HTB write-up] Poison

Hoy quiero compartir con vosotros un writeup para comprometer una de las máquinas recientemente retiradas en HacktheBox: Poison, un FreeBSD de dificultad fácil pero que tiene su "miga"...


ENUMERACIÓN

nmap –T4 –sT –sC –A 10.10.10.84


Vemos que el puerto 80 está abierto, así que visitamos la url y nos encontramos lo siguiente.
 

Si vamos probando por los diferentes ficheros, ini.php, info.php, nos va dando diferente información de la configuración de nuestro php, pero el que nos interesa especialmente es el listfiles.php.
Así que introducimos en el campo del formulario listfiles.php y obtenemos la respuesta mostrada en la imagen de abajo, de la cual nos llama la atención el pwdbackup.txt:


Probamos a ver qué tiene el fichero pwdbackup.txt, introduciendo el nombre en el formulario o bien directamente en la url.

Nos encontramos con un base64, encodeado 13 veces.

A-Detector: un IDS basado en anomalías


Soy @alexfrancow en todas las redes sociales y este es un post resumiendo el trabajo que hice para el proyecto de fin de curso, el que quiera profundizar decir que tengo explicado lo que hace cada parte del código de la aplicación final en un jupyter notebook.

A-Detector es un software desarrollado para automatizar el análisis de anomalías de red en grandes datasets. Gracias a una serie de algoritmos, A-Detector puede detectar datos anómalos y mostrarlos en gráficos dinámicos.

Básicamente es capaz de automatizar el análisis de tráfico aprender de él y detectar el tráfico anómalo.

¿Cómo lo haría una persona?
 


Una persona abriría un .pcap, (el que se ve en la imagen de arriba) y claramente vería algo sospechoso: en menos de 1 segundo el destino ha recibido múltiples paquetes provenientes de la IP 192.168.60.6 por el protocolo SSH.

En este caso es fácil detectarlo, pero que pasaría si fuese un dataset muchísimo más grande, imaginaros 1 millón de paquetes, sería más complicado analizarlo.

(Podemos usar filtros y demás, peeeero somos muy vagos.)

¿Cómo lo hace A-Detector?

A-Detector hace por nosotros este trabajo, permitiéndonos así trabajar casi en tiempo real.

Mediante la librería PANDAS, que nos permite trabajar con tablas en Python y una serie de algoritmos de machine learning como pueden ser Isolation Forest y Escalado de variables, a-detector es capaz de hacer lo que haríamos nosotros analizando un dataset, pero de manera más eficiente.

Vamos por partes..