
Servicio de Windows que crea sesiones SMB falsas para simular inicios de sesión de usuarios con altos privilegios, atrayendo a atacantes hacia máquinas honeypot para detección temprana y respuesta a incidentes.
/ | / || ___ \ / __| () / | / |
\ --.| . . || |_/ / \ --. ___ ___ ___ _ ___ _ __ \ --. _ __ ___ ___ | |_ ___ _ __ --. \ |/| || ___ \ --. \/ _ \/ __/ __| |/ _ \| '_ \ --. \ ' \ / _ \ / _ | _/ _ \ '|
/_/ / | | || |/ / /_/ / /_ _ \ | () | | | | /_/ / |) | () | () | || / |
_/_| |/_/ _/ _||//|___/|| || _/| ./ _/ _/|| ___||
| |
|_|
¡Bienvenido! Esta es una utilidad que se puede compilar con Visual Studio 2019 (o más reciente). El objetivo de este programa es crear una sesión SMB falsa. El propósito principal de esto es servir como un método para atraer atacantes a que accedan a un honey-device. Este programa no viene con ninguna garantía ni garantías.
Este programa requerirá que modifiques ligeramente el código. En la línea 144, se llama a la API de Windows CreateProcessWithLogonW; hay dos parámetros que se han proporcionado por defecto: svc-admin (el nombre de usuario) y contoso.com (el dominio). Es necesario que cambies estos valores por algo que coincida con tu red de producción.
CreateProcessWithLogonW(L"DomainAdminUser", L"YourDomain.com", NULL, LOGON_NETCREDENTIALS_ONLY, <snip>);
Después de modificar el código y compilarlo, debes instalar el servicio. Puedes hacerlo con el siguiente comando:
sc create servicename binpath="C:\ProgramData\Services\Inject\service.exe" start="auto"
Para verificar que el programa funciona correctamente, debes comprobar qué sesiones existen en el sistema. Esto se puede hacer con el siguiente comando:
C:\ProgramData\Services\Inject> net sessions
Computer User name Client Type Opens Idle time
-------------------------------------------------------------------------------
\\[::1] svc-admin 0 00:00:04
The command completed successfully.
Debes volver a revisar en aproximadamente 13 minutos para verificar que se ha creado una nueva sesión y que el programa está funcionando correctamente.
La teoría detrás de esto es que cuando un adversario ejecuta SharpHound, recolecta sesiones y analiza rutas de ataque desde entidades comprometidas, pueden identificar que un usuario con altos privilegios ha iniciado sesión en infraestructura de Nivel 2 (Workstations), a la cual (parece) pueden acceder y luego volcar credenciales para obtener acceso de Administrador de Dominio.
En el escenario anterior, un atacante ha comprometido al usuario "[email protected]" quien es Administrador Local en lab-wkst-2.contoso.com. El usuario svc-admin ha iniciado sesión en lab-wkst-2.contoso.com, lo que significa que todo lo que el atacante tiene que hacer es iniciar sesión en la Workstation, ejecutar Mimikatz y volcar credenciales. Entonces, ¿cómo monitoreas esto?
La implementación de esta herramienta es importante, también lo es el monitoreo. Si implementas la herramienta sin monitoreo, es efectivamente inútil; por lo tanto, el monitoreo es obligatorio. La forma más efectiva de monitorear este host es alertar sobre cualquier inicio de sesión. Este programa se utiliza mejor en un host sin actividad de usuario que esté unido al dominio con herramientas de monitoreo corporativo estándar (EDR, AV, reenvío de registros de eventos de Windows, etc). Se recomienda encarecidamente que tengas una alerta por correo electrónico, alerta por SMS y muchas otras si es posible para garantizar que los incidentes que involucren esta máquina se trien de la manera más rápida posible, ya que esta tiene la mayor probabilidad de que un adversario real interactúe con la workstation en cuestión.
Agradecimientos a Microsoft por proporcionar el código de plantilla del servicio y por la excelente documentación de la API de Windows.