Una (u otra) breve introducción al DLL hijacking

Una técnica muy común durante la post-explotación, tanto como para escalado de privilegios como para persistencia, es el DLL hijacking, que no es más que "dar el cambiazo" de una DLL que una aplicación o servicio del sistema intenta cargar en un directorio en el que tenemos permisos de escritura. De esta manera pondremos nuestra DLL maliciosa para que, en el momento que intente cargarse, ejecute nuestro payload con los permisos correspondientes al servicio o aplicación.

Recordemos que la forma en que Windows carga las DLL es buscar en los siguientes directorios en este orden:

- El directorio desde el cual se cargó la aplicación
- C:\Windows\System32
- C:\Windows\System
- C:\Windows
- El directorio de trabajo actual
- Directorios en la variable de entorno PATH del sistema
- Directorios en la variable de entorno PATH del usuario

Como podéis imaginar, si en algún momento un programa llama a una DLL que ya no existe en el primer directorio intentará buscar en el siguiente y así sucesivamente en ese orden: de esa manera podremos secuestrar la carga plantando una DLL en alguno de esos directorios para que pueda encontrarla.

Podremos identificar programas potencialmente vulnerables a DLL hijacking con Autoruns y ProcMon de Sysinternals, básicamente con este último buscando cualquier operación QueryOpen que resulte en NAME_NOT_FOUND:

También os recomiendo echar un vistazo a la herramienta Robber que hace un tiempo ya vimos en el blog.

ReconPi: convierte tu Raspberry Pi en una herramienta de reconocimiento de dominios

ReconPi es una herramienta de reconocimiento bastante liviana que realiza un extenso escaneo de dominios con las últimas herramientas utilizando una Raspberry Pi, Golang y Docker.

Después de que se haya ejecutado el script install.sh, ReconPi solo requiere una conexión a Internet y ya podremos empezar a utilizarla.

Requisitos
  •     Raspberry Pi 3+ + cables (alimentación y  Ethernet)
  •     SD card, 8 GB mínimo (16 GB recomendados)
  •     Imagen Hypriot (versión 1.10.0)
  •     Etcher
  •     Teclado + monitor (opcional)
Instalación

Conectar a la Raspberry Pi:

ssh pirate@black-pearl.local

Obtener install.sh y ejecutarlo:

curl -L https://raw.githubusercontent.com/x1mdev/ReconPi/master/install.sh | bash

Password: hypriot

Uso

Después de instalar todas las dependencias para ReconPi, ¡finalmente podemos comenzar a hacer algún escaneo!

$ recon <dominio.tld>


recon.sh primero recopilará todas las resoluciones para el objetivo dado, seguido de la enumeración de subdominios y verificará esos activos para una posible adquisición de subdominios. Cuando se hace esto, se enumeran las direcciones IP del destino. Los puertos abiertos se descubrirán acompañados de un escaneo de servicio proporcionado por Nmap.

Finalmente, los objetivos online serán capturados y evaluados para descubrir endpoints.

Los resultados se almacenarán en el Recon Pi y se pueden ver ejecutando 'python -m SimpleHTTPServer 1337' en el directorio de resultados. Los resultados serán accesibles desde cualquier sistema con un navegador que exista en la misma red.

Herramientas

Herramientas que se están utilizando en este momento:
Proyecto

El proyecto está disponible en https://github.com/x1mdev/ReconPi