Active Directory æ¹æ³è«
{{#include ../../banners/hacktricks-training.md}}
åºæ¬æŠèŠ
Active Directory ã¯åºç€æè¡ãšããŠæ©èœãããããã¯ãŒã¯ç®¡çè ããããã¯ãŒã¯å ã® ãã¡ã€ã³ããŠãŒã¶ãŒãããã³ ãªããžã§ã¯ã ãå¹ççã«äœæã»ç®¡çã§ããããã«ããŸãã倧éã®ãŠãŒã¶ãŒãæ±ãããã ã°ã«ãŒã ã ãµãã°ã«ãŒã ã«æŽçããããŸããŸãªã¬ãã«ã§ ã¢ã¯ã»ã¹æš© ãå¶åŸ¡ã§ããããã«èšèšãããŠããŸãã
Active Directory ã®æ§é ã¯äž»ã« 3 å±€ã§æ§æãããŸãïŒãã¡ã€ã³ãããªãŒãããã³ ãã©ã¬ã¹ãããã¡ã€ã³ ã¯å ±éã®ããŒã¿ããŒã¹ãå ±æãããŠãŒã¶ãŒãããã€ã¹ãªã©ã®ãªããžã§ã¯ãã®éåãå«ã¿ãŸããããªãŒ ã¯å ±éã®æ§é ã§çµã°ãããã¡ã€ã³çŸ€ã§ããã©ã¬ã¹ã ã¯è€æ°ã®ããªãŒããŸãšããä¿¡é Œé¢ä¿ ãéããŠçžäºæ¥ç¶ããããçµç¹æ§é ã®æäžäœã«äœçœ®ãããã®ã§ããåã¬ãã«ã§ç¹å®ã® ã¢ã¯ã»ã¹ ã éä¿¡æš©é ãæå®ã§ããŸãã
Active Directory ã®éèŠãªæŠå¿µã¯ä»¥äžã®ãšããã§ãïŒ
- ãã£ã¬ã¯ã㪠â Active Directory ãªããžã§ã¯ãã«é¢ãããã¹ãŠã®æ å ±ãä¿æããŸãã
- ãªããžã§ã¯ã â ãã£ã¬ã¯ããªå ã®ãšã³ãã£ãã£ã瀺ãããŠãŒã¶ãŒãã°ã«ãŒãããŸãã¯ å ±æãã©ã«ã ãªã©ãå«ãŸããŸãã
- ãã¡ã€ã³ â ãã£ã¬ã¯ããªãªããžã§ã¯ãã®ã³ã³ããã§ãããè€æ°ã®ãã¡ã€ã³ã ãã©ã¬ã¹ã å ã«å ±åãããããããç¬èªã®ãªããžã§ã¯ãéåãæã¡ãŸãã
- ããªãŒ â å ±éã®ã«ãŒããã¡ã€ã³ãå ±æãããã¡ã€ã³ã®ã°ã«ãŒãã§ãã
- ãã©ã¬ã¹ã â Active Directory ã«ãããçµç¹æ§é ã®é ç¹ã§ãè€æ°ã®ããªãŒãšãããã®éã® ä¿¡é Œé¢ä¿ ã§æ§æãããŸãã
Active Directory Domain Services (AD DS) ã¯ããããã¯ãŒã¯å ã®éäžç®¡çãéä¿¡ã«äžå¯æ¬ ãªäžé£ã®ãµãŒãã¹ãå«ã¿ãŸãããããã®ãµãŒãã¹ã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- Domain Services â ããŒã¿ã®éäžç®¡çãè¡ãããŠãŒã¶ãŒ ãš ãã¡ã€ã³ éã®ããåãïŒèªèšŒ ãæ€çŽ¢æ©èœãªã©ïŒã管çããŸãã
- Certificate Services â ã»ãã¥ã¢ãª ããžã¿ã«èšŒææž ã®äœæãé åžãããã³ç®¡çãæ åœããŸãã
- Lightweight Directory Services â LDAP protocol ãéããŠãã£ã¬ã¯ããªå¯Ÿå¿ã¢ããªã±ãŒã·ã§ã³ããµããŒãããŸãã
- Directory Federation Services â è€æ°ã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã§ã® single-sign-on æ©èœãæäŸããŸãã
- Rights Management â èäœæš©è³æã®äžæ£é åžã䜿çšãå¶åŸ¡ããããšã§ä¿è·ãæ¯æŽããŸãã
- DNS Service â ãã¡ã€ã³å ã®è§£æ±ºã«äžå¯æ¬ ã§ãã
For a more detailed explanation check: TechTerms - Active Directory Definition
Kerberos Authentication
To learn how to attack an AD you need to understand really good the Kerberos authentication process.
Read this page if you still don't know how it works.
ããŒãã·ãŒã
AD ãåæïŒæªçšããããã«å®è¡ã§ããã³ãã³ããçŽ æ©ã確èªããã«ã¯ã次ãåç §ããŠãã ãã: https://wadcoms.github.io/ã
Warning
Kerberos communication requires a full qualifid name (FQDN) for performing actions. If you try to access a machine by the IP address, it'll use NTLM and not kerberos.
Recon Active Directory (èªèšŒæ å ±/ã»ãã·ã§ã³ãªã)
AD ç°å¢ã«ã¢ã¯ã»ã¹ã§ãããèªèšŒæ å ±ãã»ãã·ã§ã³ãæã£ãŠããªãå Žåãæ¬¡ã®ããšãå¯èœã§ãïŒ
- ãããã¯ãŒã¯ããããã¬ãŒããã:
- ãããã¯ãŒã¯ãã¹ãã£ã³ãããã·ã³ãéããŠããããŒããèŠã€ããŠãè匱æ§ãæªçš ãããããããã èªèšŒæ å ±ãæœåº ãããããŸãïŒäŸïŒ printers could be very interesting targetsïŒã
- DNS ãåæããããšã§ãwebãprintersãsharesãvpnãmedia ãªã©ã®ãã¡ã€ã³å ã®éèŠãµãŒãã«é¢ããæ å ±ãåŸãããŸãã
gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt
- 詳现ã¯äžè¬ç㪠Pentesting Methodology ãåç §ããŠæé ã確èªããŠãã ããã
- SMB ãµãŒãã¹ã® null ãš Guest ã¢ã¯ã»ã¹ã確èªããïŒããã¯ææ°ã® Windows ã§ã¯åäœããªãããšããããŸãïŒ:
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 -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //
- SMB ãµãŒãã®åææ¹æ³ã«é¢ãã詳现ã¬ã€ãã¯æ¬¡ãåç §ããŠãã ããïŒ
{{#ref}} ../../network-services-pentesting/pentesting-smb/ {{#endref}}
- LDAP ãåæãã
nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>
- LDAP åæã«é¢ãã詳现ã¬ã€ãïŒå¿åã¢ã¯ã»ã¹ã«ç¹ã«æ³šæïŒã¯æ¬¡ãåç §ããŠãã ããïŒ
{{#ref}} ../../network-services-pentesting/pentesting-ldap.md {{#endref}}
- ãããã¯ãŒã¯ã Poison ãã
- Responder ã§ ãµãŒãã¹ãåœè£ ããŠèªèšŒæ å ±ãåéïŒimpersonating services with ResponderïŒããŠã¯ã¬ãã³ã·ã£ã«ãéãã: ../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
- relay attack ãæªçšããŠãã¹ãã«ã¢ã¯ã»ã¹ãã
- evil-S ã䜿ã£ãŠ åœã® UPnP ãµãŒãã¹ãå ¬éããŠèªèšŒæ å ±ãåéïŒexposing fake UPnP services with evil-SïŒ: ../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md ããã³ SDP
- OSINT:
- å éšææžããœãŒã·ã£ã«ã¡ãã£ã¢ããã¡ã€ã³å ã®ãµãŒãã¹ïŒäž»ã« webïŒãããã³å ¬éæ å ±ãããŠãŒã¶ãŒåãæ°åãæœåºããŸãã
- äŒç€Ÿã®åŸæ¥å¡ã®æ°åã倿ããå ŽåãããŸããŸãª AD username conventionsïŒread thisïŒã詊ãããšãã§ããŸããäžè¬çãªæ £äŸã«ã¯ä»¥äžããããŸãïŒNameSurname, Name.Surname, NamSurïŒãããã 3 æåãã€ïŒ, Nam.Sur, NSurname, N.Surname, SurnameName, Surname.Name, SurnameN, Surname.N, 3 æåã®ã©ã³ãã + 3 æ°åïŒabc123ïŒã
- ããŒã«:
- w0Tx/generate-ad-username
- urbanadventurer/username-anarchy
ãŠãŒã¶ãŒåæ
- å¿å SMB/LDAP åæ: pentesting SMB ããã³ pentesting LDAP ãåç §ããŠãã ããã
- Kerbrute åæ: ç¡å¹ãªãŠãŒã¶ãŒåãèŠæ±ããããšããµãŒã㯠Kerberos error ã³ãŒã KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN ãè¿ãããŠãŒã¶ãŒåãç¡å¹ã§ããããšãå€å¥ã§ããŸããæå¹ãªãŠãŒã¶ãŒåã¯ãAS-REP å ã® TGT ãè¿ããããŸãã¯äºåèªèšŒãå¿ èŠã§ããããšã瀺ã KRB5KDC_ERR_PREAUTH_REQUIRED ãšã©ãŒãè¿ããŸãã
- MS-NRPC ã«å¯Ÿãã No Authentication: domain controller ã® MS-NRPC (Netlogon) ã€ã³ã¿ãŒãã§ãŒã¹ã«å¯Ÿã㊠auth-level = 1ïŒNo authenticationïŒã䜿çšããŸãããã®æ¹æ³ã¯ MS-NRPC ã€ã³ã¿ãŒãã§ãŒã¹ã«ãã€ã³ãåŸã«
DsrGetDcNameEx2
颿°ãåŒã³åºããŠãèªèšŒæ å ±ãªãã§ãŠãŒã¶ãŒãã³ã³ãã¥ãŒã¿ã®ååšã確èªããŸããNauthNRPC (https://github.com/sud0Ru/NauthNRPC) ã¯ãã®çš®ã®åæãå®è£ ããŠããŸããç ç©¶ã®è©³çްã¯ããã«ãããŸã: https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
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>
msf> use auxiliary/gather/kerberos_enumusers
crackmapexec smb dominio.es -u '' -p '' --users | awk '{print $4}' | uniq
python3 nauth.py -t target -u users_file.txt #From https://github.com/sud0Ru/NauthNRPC
- OWA (Outlook Web Access) Server
ãããã¯ãŒã¯å ã§ãããã®ãµãŒããŒã®ãããããèŠã€ããå Žåãuser enumeration against it ãå®è¡ããããšãã§ããŸããäŸãã°ãããŒã« MailSniper:
ipmo C:\Tools\MailSniper\MailSniper.ps1
# Get info about the domain
Invoke-DomainHarvestOWA -ExchHostname [ip]
# Enumerate valid users from a list of potential usernames
Invoke-UsernameHarvestOWA -ExchHostname [ip] -Domain [domain] -UserList .\possible-usernames.txt -OutFile valid.txt
# Password spraying
Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summer2021
# Get addresses list from the compromised mail
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
Warning
ãŠãŒã¶ãŒåã®ãªã¹ã㯠this github repo ãšãã¡ãã® (statistically-likely-usernames) ã§èŠã€ããããšãã§ããŸãã
ãã ããäºåã® recon ã¹ãããã§åŸã äŒç€Ÿã§åã人ã ã®æ°å ãæã£ãŠããã¯ãã§ããååãšå§ãããã°ãã¹ã¯ãªãã namemash.py ã䜿ã£ãŠæœåšçãªæå¹ãŠãŒã¶ãŒåãçæã§ããŸãã
Knowing one or several usernames
æå¹ãªãŠãŒã¶ãŒåã¯åãã£ãŠããããã¹ã¯ãŒãããªãå Žåã¯ã次ã詊ããŠãã ããïŒ
- ASREPRoast: ãŠãŒã¶ãŒã DONT_REQ_PREAUTH ãæã£ãŠããªã å Žåããã®ãŠãŒã¶ãŒã«å¯Ÿã㊠AS_REP message ãèŠæ±ã§ããŸããã¡ãã»ãŒãžã«ã¯ãŠãŒã¶ãŒã®ãã¹ã¯ãŒãããæŽŸçãããã®ã§æå·åãããããŒã¿ãå«ãŸããŸãã
- Password Spraying: çºèŠããåãŠãŒã¶ãŒã«å¯ŸããŠãæã äžè¬çãªãã¹ã¯ãŒã ã詊ããŠã¿ãŠãã ããã匱ããã¹ã¯ãŒãã䜿ã£ãŠãããŠãŒã¶ãŒããããããããŸããïŒãã¹ã¯ãŒãããªã·ãŒã«æ³šæïŒïŒã
- 泚æ: ãŠãŒã¶ãŒã®ã¡ãŒã«ãµãŒããŒã«ã¢ã¯ã»ã¹ããããã«ãspray OWA servers ã詊ãããšãã§ããŸãã
{{#ref}} password-spraying.md {{#endref}}
LLMNR/NBT-NS Poisoning
ãããã¯ãŒã¯ã®ããã€ãã®ãããã³ã«ãpoisoningããããšã§ãã¯ã©ãã¯çšã®ãã£ã¬ã³ãžhashesãobtainã§ããå ŽåããããŸãïŒ
{{#ref}} ../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {{#endref}}
NTLM Relay
Active Directory ã®åæã«æåããã°ãããå€ãã®ã¡ãŒã«ã¢ãã¬ã¹ããããã¯ãŒã¯ã®å šäœåãåŸãããŸããNTLM ã䜿ã£ã relay attacks ã匷å¶ã㊠AD ç°å¢ã«ã¢ã¯ã»ã¹ã§ããå¯èœæ§ããããŸãã
Steal NTLM Creds
null or guest user ã§ä»ã® PC ãå ±æã« ã¢ã¯ã»ã¹ ã§ããå Žåã(SCF ãã¡ã€ã«ãªã©ã®) ãã¡ã€ã«ã é 眮 ããŠãããäœããã®æ¹æ³ã§ãããåç §ããããšããªãã«å¯Ÿã㊠NTLM authentication ãããªã¬ãŒãããNTLM challenge ã çãã§ ã¯ã©ãã¯ããããšãã§ããŸãïŒ
{{#ref}} ../ntlm/places-to-steal-ntlm-creds.md {{#endref}}
Enumerating Active Directory WITH credentials/session
ãã®ãã§ãŒãºã§ã¯ãæå¹ãªãã¡ã€ã³ã¢ã«ãŠã³ãã®è³æ Œæ å ±ãŸãã¯ã»ãã·ã§ã³ã䟵害ããŠããå¿ èŠããããŸãããã¡ã€ã³ãŠãŒã¶ãŒãšããŠæå¹ãªè³æ Œæ å ±ãã·ã§ã«ãæã£ãŠããå Žåãåã«æãããªãã·ã§ã³ã¯ä»ãŠãŒã¶ãŒã䟵害ããããã®éžæè¢ãšããŠäŸç¶æå¹ã§ããããšãå¿ããªãã§ãã ããã
èªèšŒæžã¿åæãéå§ããåã«ãKerberos double hop problem ãçè§£ããŠããã¹ãã§ãã
{{#ref}} kerberos-double-hop-problem.md {{#endref}}
Enumeration
ã¢ã«ãŠã³ãã䟵害ããããšã¯ããã¡ã€ã³å šäœã䟵害ããããã®å€§ããªäžæ©ã§ããããã«ãã Active Directory åæ ãéå§ã§ããããã«ãªããŸãã
ASREPRoast ã«é¢ããŠã¯ããã¹ãŠã®æœåšçã«è匱ãªãŠãŒã¶ãŒãèŠã€ããããŸãããPassword Spraying ã«é¢ããŠã¯ å šãŠãŒã¶ãŒåã®ãªã¹ã ãååŸããŠã䟵害ããã¢ã«ãŠã³ãã®ãã¹ã¯ãŒãã空ã®ãã¹ã¯ãŒãããããã¯ææãªæ°ãããã¹ã¯ãŒãã詊ãããšãã§ããŸãã
- åºæ¬ç㪠recon ãå®è¡ããããã« CMD to perform a basic recon ã䜿çšã§ããŸã
- ããã¹ãã«ã¹ã«è¡ãã«ã¯ powershell for recon ã䜿ãããšãã§ããŸã
- ããè©³çŽ°ãªæ å ±ãæœåºããã«ã¯ use powerview ã䜿ããŸã
- Active Directory ã® recon ã«ããäžã€çŽ æŽãããããŒã«ã¯ BloodHound ã§ãã䜿çšããã³ã¬ã¯ã·ã§ã³æ¹æ³ã«ãããŸãããããŸãã¹ãã«ã¹ã§ã¯ãããŸãããããããããæ°ã«ããªããªãããã²è©ŠããŠã¿ãŠãã ããããŠãŒã¶ãŒãã©ãã§ RDP ã§ããããä»ã®ã°ã«ãŒããžã®çµè·¯ãèŠã€ãããªã©ã
- ãã®ä»ã®èªååããã AD åæããŒã«: AD Explorer, ADRecon, Group3r, PingCastle.
- DNS records of the AD ã¯è峿·±ãæ å ±ãå«ãã§ããå¯èœæ§ããããŸãã
- ãã£ã¬ã¯ããªãåæããããã«äœ¿ãã GUI ããŒã« 㯠AdExplorer.exeïŒSysInternal SuiteïŒã§ãã
- ldapsearch ã§ LDAP ããŒã¿ããŒã¹ãæ€çŽ¢ããuserPassword ã unixUserPassword ã®ãã£ãŒã«ããããã㯠Description ã調ã¹ãããšãã§ããŸãããã®ä»ã®æ¹æ³ã«ã€ããŠã¯ cf. Password in AD User comment on PayloadsAllTheThings ãåç §ããŠãã ããã
- Linux ã䜿ã£ãŠããå Žåã¯ãpywerview ã§ãã¡ã€ã³ãåæããããšãã§ããŸãã
- ãŸã以äžã®èªååããŒã«ã詊ãããšãã§ããŸã:
- Extracting all domain users
Windows ã§ã¯ net user /domain
ãGet-DomainUser
ããŸã㯠wmic useraccount get name,sid
ã§ãã¡ã€ã³å
ã®ãŠãŒã¶ãŒåãååŸããã®ã¯éåžžã«ç°¡åã§ããLinux ã§ã¯ GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username
ã enum4linux -a -u "user" -p "password" <DC IP>
ã䜿çšã§ããŸãã
ãã®åæã»ã¯ã·ã§ã³ãçãèŠããŠããæãéèŠãªéšåã§ãããªã³ã¯ïŒäž»ã« cmdãpowershellãpowerviewãBloodHound ã®ãã®ïŒãåç §ãããã¡ã€ã³ã®åææ¹æ³ãåŠã³ãååã«æ £ãããŸã§ç·Žç¿ããŠãã ãããè©äŸ¡ã®éãããã DA ã«å°éããæ¹æ³ãèŠã€ããããäœãã§ããªããšå€æããéèŠãªç¬éã«ãªããŸãã
Kerberoast
Kerberoasting ã¯ããŠãŒã¶ãŒã¢ã«ãŠã³ãã«çŽã¥ããµãŒãã¹ã䜿çšãã TGS tickets ãååŸãããããã®æå·åïŒãŠãŒã¶ãŒãã¹ã¯ãŒãã«åºã¥ãïŒã ãªãã©ã€ã³ ã§ã¯ã©ãã¯ããããšãå«ã¿ãŸãã
More about this in:
{{#ref}} kerberoast.md {{#endref}}
Remote connexion (RDP, SSH, FTP, Win-RM, etc)
è³æ Œæ å ±ãå ¥æããããä»»æã®ãã·ã³ã«ã¢ã¯ã»ã¹ã§ããã確èªããŠãã ããããã®ããã«ãããŒãã¹ãã£ã³ã«å¿ããŠè€æ°ã®ãµãŒããŒãžç°ãªããããã³ã«ã§æ¥ç¶ã詊ã¿ãããã« CrackMapExec ã䜿çšã§ããŸãã
Local Privilege Escalation
éåžžã®ãã¡ã€ã³ãŠãŒã¶ãŒãšããŠè³æ Œæ å ±ãã»ãã·ã§ã³ã䟵害ããŠããããã®ãŠãŒã¶ãŒã§ãã¡ã€ã³å ã®ä»»æã®ãã·ã³ã« ã¢ã¯ã»ã¹ ã§ããå ŽåãããŒã«ã«ã§æš©éææ ŒããŠè³æ Œæ å ±ãååïŒlootïŒããæ¹æ³ãæ¢ãã¹ãã§ãããªããªããããŒã«ã«ç®¡çè æš©éããªããã°ä»ãŠãŒã¶ãŒã®ããã·ã¥ãã¡ã¢ãªïŒLSASSïŒãããŒã«ã«ïŒSAMïŒãããã³ãã§ããªãããã§ãã
æ¬æžã«ã¯ local privilege escalation in Windows ã«é¢ããå®å šãªããŒãžãšãchecklist ããããŸãããŸããWinPEAS ã®äœ¿çšãå¿ããªãã§ãã ããã
Current Session Tickets
çŸåšã®ãŠãŒã¶ãŒã«ãäºæããªããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹æš©ãäžãããããªtickets ãèŠã€ããå¯èœæ§ã¯éåžžã« äœã ã§ããã確èªã¯ã§ããŸãïŒ
## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
## Dump the interesting one by luid
.\Rubeus.exe dump /service:krbtgt /luid:<luid> /nowrap
[IO.File]::WriteAllBytes("ticket.kirbi", [Convert]::FromBase64String("<BASE64_TICKET>"))
NTLM Relay
If you have managed to enumerate the Active Directory you will have more emails and a better understanding of the network. You might be able to to force NTLM relay attacks.
ã³ã³ãã¥ãŒã¿å ±æã§è³æ Œæ å ±ãæ¢ã | SMB Shares
åºæ¬çãªè³æ Œæ å ±ãå ¥æããããAD å ã§å ±æãããŠããè峿·±ããã¡ã€ã«ããªãã確èªããŠãã ãããæåã§ãå¯èœã§ãããéåžžã«éå±ã§å埩çãªäœæ¥ã«ãªããŸãïŒæ°çŸã®ããã¥ã¡ã³ãã確èªããå¿ èŠãããå Žåã¯ããã«å€§å€ã§ãïŒã
ãã®ãªã³ã¯ãã䜿çšå¯èœãªããŒã«ã«ã€ããŠåŠãã§ãã ããã
Steal NTLM Creds
If you can access other PCs or shares you could place files (like a SCF file) that if somehow accessed will trigger an NTLM authentication against you so you can steal the NTLM challenge to crack it:
{{#ref}} ../ntlm/places-to-steal-ntlm-creds.md {{#endref}}
CVE-2021-1675/CVE-2021-34527 PrintNightmare
This vulnerability allowed any authenticated user to compromise the domain controller.
{{#ref}} printnightmare.md {{#endref}}
Privilege escalation on Active Directory WITH privileged credentials/session
For the following techniques a regular domain user is not enough, you need some special privileges/credentials to perform these attacks.
Hash extraction
Hopefully you have managed to compromise some local admin account using AsRepRoast, Password Spraying, Kerberoast, Responder including relaying, EvilSSDP, escalating privileges locally.
ãã®åŸãã¡ã¢ãªããã³ããŒã«ã«ãããã¹ãŠã®ããã·ã¥ããã³ãããæã§ãã
ããã·ã¥ãååŸããããŸããŸãªæ¹æ³ã«ã€ããŠã¯ãã¡ãã®ããŒãžãèªãã§ãã ããã
Pass the Hash
Once you have the hash of a user, you can use it to impersonate it.
ãã®ããã«ã¯ããã®ããã·ã¥ã䜿ã£ãŠNTLM authenticationãè¡ããããªããŒã«ã䜿çšãããããããã¯æ°ããsessionlogonãäœæããŠãã®ããã·ã¥ãLSASSã«æ³šå
¥ããæ¹æ³ããããŸããããããã°ãNTLM èªèšŒãè¡ãããéã«ãã®ããã·ã¥ã䜿çšãããŸããåŸè
ã®æ¹æ³ãmimikatzã®ããæ¹ã§ãã
詳现ã¯ãã®ããŒãžãåç
§ããŠãã ããã
Over Pass the Hash/Pass the Key
This attack aims to use the user NTLM hash to request Kerberos tickets, as an alternative to the common Pass The Hash over NTLM protocol. Therefore, this could be especially useful in networks where NTLM protocol is disabled and only Kerberos is allowed as authentication protocol.
{{#ref}} over-pass-the-hash-pass-the-key.md {{#endref}}
Pass the Ticket
In the Pass The Ticket (PTT) attack method, attackers steal a user's authentication ticket instead of their password or hash values. This stolen ticket is then used to impersonate the user, gaining unauthorized access to resources and services within a network.
{{#ref}} pass-the-ticket.md {{#endref}}
Credentials Reuse
If you have the hash or password of a local administrator you should try to login locally to other PCs with it.
# Local Auth Spray (once you found some local admin pass or hash)
## --local-auth flag indicate to only try 1 time per machine
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
Warning
泚æ: ããã¯ããªãnoisyã§ãLAPSãmitigateããŸãã
MSSQL Abuse & Trusted Links
ãããŠãŒã¶ãaccess MSSQL instancesããæš©éãæã£ãŠããå ŽåãMSSQLãã¹ãäžã§ïŒSAãšããŠå®è¡ãããŠããã°ïŒexecute commandsããããNetNTLMã®hashãstealããããããã«ã¯relay attackãå®è¡ã§ããå¯èœæ§ããããŸãã
ãŸããããMSSQLã€ã³ã¹ã¿ã³ã¹ãå¥ã®MSSQLã€ã³ã¹ã¿ã³ã¹ããtrustïŒdatabase linkïŒãããŠããå ŽåããŠãŒã¶ãä¿¡é ŒãããããŒã¿ããŒã¹ã«å¯Ÿããæš©éãæã£ãŠããã°ãuse the trust relationship to execute queries also in the other instanceããšãå¯èœã«ãªããŸãããããã®ãã©ã¹ãã¯é£éããããšããããæçµçã«ã³ãã³ããå®è¡ã§ãããããªèª€èšå®ãããããŒã¿ããŒã¹ãèŠã€ãããããããããŸããã
The links between databases work even across forest trusts.
{{#ref}} abusing-ad-mssql.md {{#endref}}
IT asset/deployment platforms abuse
ãµãŒãããŒãã£ã®ã€ã³ãã³ããªããããã€ã¡ã³ãã¹ã€ãŒãã¯ãè³æ Œæ å ±ãã³ãŒãå®è¡ãžã®åŒ·åãªçµè·¯ãé²åºããããšããããããŸããåç §:
{{#ref}} sccm-management-point-relay-sql-policy-secrets.md {{#endref}}
{{#ref}} lansweeper-security.md {{#endref}}
Unconstrained Delegation
ããComputerãªããžã§ã¯ãã«å±æ§ADS_UF_TRUSTED_FOR_DELEGATIONãããããã€ãã®ã³ã³ãã¥ãŒã¿äžã§ãã¡ã€ã³æš©éãæã£ãŠããå Žåãåœè©²ã³ã³ãã¥ãŒã¿ã«ãã°ãªã³ãããã¹ãŠã®ãŠãŒã¶ã®ã¡ã¢ãªããTGTããã³ãããããšãã§ããŸãã
ãããã£ãŠãDomain Adminããã®ã³ã³ãã¥ãŒã¿ã«ãã°ã€ã³ãããšã圌ã®TGTããã³ãããŠPass the Ticketã䜿ã£ãŠãªãããŸãããšãã§ããŸãã
constrained delegationãå©çšããã°ãèªåçã«Print Serverãä¹ã£åãããšããå¯èœã§ãïŒéãè¯ããã°ããã¯DCã§ãããïŒã
{{#ref}} unconstrained-delegation.md {{#endref}}
Constrained Delegation
ãããŠãŒã¶ãŸãã¯ã³ã³ãã¥ãŒã¿ã "Constrained Delegation" ãèš±å¯ãããŠãããšããã®ã³ã³ãã¥ãŒã¿äžã®ãããµãŒãã¹ã«å¯ŸããŠä»»æã®ãŠãŒã¶ãã€ã³ããŒãœããŒãããŠã¢ã¯ã»ã¹ããããšãã§ããããã«ãªããŸãã
ãããŠããã®ãŠãŒã¶ïŒã³ã³ãã¥ãŒã¿ã®ããã·ã¥ãcompromiseããã°ãïŒãã¡ã€ã³ç®¡çè
ã§ãã£ãŠãïŒä»»æã®ãŠãŒã¶ãã€ã³ããŒãœããŒãããŠãµãŒãã¹ã«ã¢ã¯ã»ã¹ã§ããŸãã
{{#ref}} constrained-delegation.md {{#endref}}
Resourced-based Constrain Delegation
ãªã¢ãŒãã³ã³ãã¥ãŒã¿ã®Active Directoryãªããžã§ã¯ãã«å¯ŸããŠWRITEæš©éãæã€ããšã¯ãææ Œããæš©éã§ã³ãŒãå®è¡ãéæããããšãå¯èœã«ããŸã:
{{#ref}} resource-based-constrained-delegation.md {{#endref}}
Permissions/ACLs Abuse
ä¹ã£åã£ããŠãŒã¶ããä»åŸæšªç§»åïŒæš©éææ Œãå¯èœã«ãããããªè峿·±ãæš©éããã¡ã€ã³ãªããžã§ã¯ãã«å¯ŸããŠæã£ãŠããããšããããŸãã
{{#ref}} acl-persistence-abuse/ {{#endref}}
Printer Spooler service abuse
ãã¡ã€ã³å ã§Spool serviceããªãã¹ã³ããŠããããšãçºèŠãããšããããæªçšããŠæ°ããè³æ Œæ å ±ãååŸããæš©éãææ Œããããšãã§ããŸãã
{{#ref}} printers-spooler-service-abuse.md {{#endref}}
Third party sessions abuse
ããä»ã®ãŠãŒã¶ããã®compromisedãã·ã³ã«ã¢ã¯ã»ã¹ããŠããå Žåãã¡ã¢ãªããè³æ Œæ
å ±ãgatherãããã圌ãã®ããã»ã¹ã«beaconsãinjectããŠãªãããŸãããšãå¯èœã§ãã
éåžžããŠãŒã¶ã¯RDPçµç±ã§ã·ã¹ãã ã«ã¢ã¯ã»ã¹ããããããµãŒãããŒãã£RDPã»ãã·ã§ã³ã«å¯ŸããŠããã€ãã®æ»æã宿œããæ¹æ³ã¯æ¬¡ã®éãã§ã:
{{#ref}} rdp-sessions-abuse.md {{#endref}}
LAPS
LAPSã¯ãã¡ã€ã³åå ã³ã³ãã¥ãŒã¿ã®local Administrator passwordã管çããã·ã¹ãã ãæäŸããããããã©ã³ãã åãäžæåãé »ç¹ã«å€æŽããŸãããããã®ãã¹ã¯ãŒãã¯Active Directoryã«ä¿åãããã¢ã¯ã»ã¹ã¯ACLãéããŠèš±å¯ããããŠãŒã¶ã ãã«å¶åŸ¡ãããŸãããããã®ãã¹ã¯ãŒãã«ã¢ã¯ã»ã¹ããããã®ååãªæš©éãããã°ãä»ã®ã³ã³ãã¥ãŒã¿ãžã®ãããããå¯èœã«ãªããŸãã
{{#ref}} laps.md {{#endref}}
Certificate Theft
compromised machineããã®certificatesã®åéã¯ãç°å¢å ã§æš©éãææ Œããææ®µã«ãªãåŸãŸã:
{{#ref}} ad-certificates/certificate-theft.md {{#endref}}
Certificate Templates Abuse
ããè匱ãªãã³ãã¬ãŒããèšå®ãããŠããã°ãããããæªçšããŠæš©éãææ Œããããšãå¯èœã§ã:
{{#ref}} ad-certificates/domain-escalation.md {{#endref}
Post-exploitation with high privilege account
Dumping Domain Credentials
äžåºŠDomain Adminããããã¯ããã«è¯ãEnterprise Adminã®æš©éãååŸãããšããã¡ã€ã³ããŒã¿ããŒã¹ã§ãã ntds.dit ãdumpã§ããŸãã
More information about DCSync attack can be found here.
More information about how to steal the NTDS.dit can be found here
Privesc as Persistence
åè¿°ã®ããã€ãã®æè¡ã¯ãæ°žç¶åã®ããã«ã䜿çšã§ããŸãã
äŸãã°ã次ã®ãããªããšãå¯èœã§ã:
- ãŠãŒã¶ãKerberoastã«è匱ã«ãã
Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
- ãŠãŒã¶ãASREPRoastã«è匱ã«ãã
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
- ãŠãŒã¶ã«DCSyncæš©éãä»äžãã
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
Silver Ticket
Silver Ticket attackã¯ãç¹å®ã®ãµãŒãã¹åãã«æ£åœãªTicket Granting Service (TGS)ãã±ããããïŒäŸãã°PCã¢ã«ãŠã³ãã®ïŒNTLM hashãçšããŠäœæããæ»æã§ãããã®ææ³ã¯ãµãŒãã¹ã®æš©éã«ã¢ã¯ã»ã¹ããããã«äœ¿çšãããŸãã
{{#ref}} silver-ticket.md {{#endref}}
Golden Ticket
Golden Ticket attackã¯ãActive Directoryç°å¢ã«ãããkrbtgtã¢ã«ãŠã³ãã®NTLM hashãæ»æè ãå ¥æããããšãå«ã¿ãŸããkrbtgtã¯ãã¹ãŠã®**Ticket Granting Tickets (TGTs)**ã眲åããããã«çšããããç¹å¥ãªã¢ã«ãŠã³ãã§ãã
æ»æè ããã®ããã·ã¥ãå ¥æãããšãä»»æã®ã¢ã«ãŠã³ãã®TGTsãäœæã§ããããã«ãªããŸãïŒSilver ticketæ»æã®äžçš®ïŒã
{{#ref}} golden-ticket.md {{#endref}}
Diamond Ticket
ããã¯ãäžè¬çãªgolden ticketæ€åºã¡ã«ããºã ãåé¿ããããã«forgeãããgolden ticketã®ãããªãã®ã§ãã
{{#ref}} diamond-ticket.md {{#endref}}
Certificates Account Persistence
ã¢ã«ãŠã³ãã®certificatesãä¿æããŠããããŸãã¯ããããèŠæ±ã§ããããšã¯ããŠãŒã¶ã®ã¢ã«ãŠã³ãã«æ°žç¶åããéåžžã«æå¹ãªææ®µã§ãïŒããšããã¹ã¯ãŒãã倿ŽãããŠãïŒ:
{{#ref}} ad-certificates/account-persistence.md {{#endref}}
Certificates Domain Persistence
certificatesã䜿çšããŠããã¡ã€ã³å ã§é«æš©éã®æ°žç¶åãè¡ãããšãå¯èœã§ã:
{{#ref}} ad-certificates/domain-persistence.md {{#endref}}
AdminSDHolder Group
Active Directoryã®AdminSDHolderãªããžã§ã¯ãã¯ãDomain AdminsãEnterprise Adminsã®ãããªç¹æš©ã°ã«ãŒãã®ã»ãã¥ãªãã£ã確ä¿ããããããããã®ã°ã«ãŒãã«å¯ŸããŠæšæºã®ACLãé©çšããŠäžæ£ãªå€æŽãé²ããŸãããããããã®æ©èœã¯æªçšããåŸãŸããæ»æè ãAdminSDHolderã®ACLã倿ŽããŠéåžžãŠãŒã¶ã«ãã«ã¢ã¯ã»ã¹ãäžããã°ããã®ãŠãŒã¶ã¯ãã¹ãŠã®ç¹æš©ã°ã«ãŒãã«å¯ŸããŠåºç¯ãªå¶åŸ¡ãåŸãããšã«ãªããŸããæ¬æ¥ä¿è·ã®ããã®æ©èœããç£èŠãããŠããªããã°äžæ£ã¢ã¯ã»ã¹ãèš±ãããšãããããšããç¹ã«æ³šæããŠãã ããã
More information about AdminDSHolder Group here.
DSRM Credentials
ãã¹ãŠã®Domain Controller (DC)ã«ã¯ããŒã«ã«ç®¡çè ã¢ã«ãŠã³ããååšããŸãããããããã·ã³ã§ç®¡çè æš©ãååŸããã°ãmimikatzã䜿ã£ãŠããŒã«ã«Administratorã®ããã·ã¥ãæœåºã§ããŸãããã®åŸããªã¢ãŒãã§ãã®ãã¹ã¯ãŒãã䜿çšã§ããããã«ããããã«ã¬ãžã¹ããªã®å€æŽãå¿ èŠã«ãªããŸãã
{{#ref}} dsrm-credentials.md {{#endref}}
ACL Persistence
ç¹å®ã®ãã¡ã€ã³ãªããžã§ã¯ãã«å¯ŸããŠãå°æ¥çã«æš©éææ Œãå¯èœã«ãããããªç¹å¥ãªæš©éããŠãŒã¶ã«ä»äžããããšãã§ããŸãã
{{#ref}} acl-persistence-abuse/ {{#endref}}
Security Descriptors
security descriptorsã¯ããªããžã§ã¯ããæã€æš©éãæ ŒçŽããããã«äœ¿çšãããŸãããããªããžã§ã¯ãã®ã»ãã¥ãªãã£ãã£ã¹ã¯ãªãã¿ã«å°ã倿Žãå ããããã ãã§ãç¹æš©ã°ã«ãŒãã®ã¡ã³ããŒã§ãªããŠããã®ãªããžã§ã¯ãã«å¯ŸããŠéåžžã«è峿·±ãæš©éãåŸãããšãã§ããŸãã
{{#ref}} security-descriptors.md {{#endref}}
Skeleton Key
LSASSã®ã¡ã¢ãªãæ¹å€ããŠãŠãããŒãµã«ãã¹ã¯ãŒããèšå®ãããã¹ãŠã®ãã¡ã€ã³ã¢ã«ãŠã³ããžã®ã¢ã¯ã»ã¹ãå¯èœã«ããŸãã
{{#ref}} skeleton-key.md {{#endref}}
Custom SSP
Learn what is a SSP (Security Support Provider) here.
ç¬èªã®SSPãäœæããŠããã·ã³ã«ã¢ã¯ã»ã¹ããéã«äœ¿çšãããcredentialsãå¹³æã§captureããããšãã§ããŸãã
{{#ref}} custom-ssp.md {{#endref}}
DCShadow
æ°ããDomain ControllerãADã«ç»é²ããããã䜿ã£ãŠæå®ãããªããžã§ã¯ãã«å¯ŸããŠSIDHistoryãSPNsãªã©ã®å±æ§ããã°ãæ®ããã«pushããŸãããããè¡ãã«ã¯DAæš©éãšã«ãŒããã¡ã€ã³å
ã§ã®å®è¡ãå¿
èŠã§ãã
ãã ãã誀ã£ãããŒã¿ã䜿ããšããªãç®ç«ã€ãã°ãåºãç¹ã«æ³šæããŠãã ããã
{{#ref}} dcshadow.md {{#endref}}
LAPS Persistence
åç¯ã§ã¯LAPSãã¹ã¯ãŒããèªãããã®ååãªæš©éãããå Žåã®æš©éææ Œã«ã€ããŠèª¬æããŸããããããããããã®ãã¹ã¯ãŒãã¯æ°žç¶åã®ããã«ãå©çšã§ããŸãã
åç
§:
{{#ref}} laps.md {{#endref}}
Forest Privilege Escalation - Domain Trusts
Microsoftã¯Forestãã»ãã¥ãªãã£å¢çãšèŠãªããŠããŸããã€ãŸããåäžãã¡ã€ã³ã®äŸµå®³ãForestå šäœã®äŸµå®³ã«ã€ãªããå¯èœæ§ããããšããããšã§ãã
Basic Information
domain trustã¯ããããã¡ã€ã³ã®ãŠãŒã¶ãå¥ã®ãã¡ã€ã³ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããããšãå¯èœã«ããã»ãã¥ãªãã£ã¡ã«ããºã ã§ããããã¯2ã€ã®ãã¡ã€ã³ã®èªèšŒã·ã¹ãã éã®é£çµãäœæããèªèšŒæ€èšŒãã·ãŒã ã¬ã¹ã«æµããããã«ããŸãããã¡ã€ã³ããã©ã¹ããèšå®ãããšããã©ã¹ãã®æŽåæ§ã«éèŠãªç¹å®ã®keysãåDomain Controller (DC)ã亀æããŠä¿æããŸãã
å žåçãªã·ããªãªã§ã¯ããŠãŒã¶ãtrusted domainã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ããããšããéããŸãèªãã¡ã€ã³ã®DCããinter-realm TGTãèŠæ±ããå¿ èŠããããŸãããã®TGTã¯äž¡ãã¡ã€ã³ã§åæãããå ±æã®keyã§æå·åãããŸãããŠãŒã¶ã¯ãã®TGTãtrusted domainã®DCã«æç€ºããŠãµãŒãã¹ãã±ããïŒTGSïŒãååŸããŸããtrusted domainã®DCãinter-realm TGTãæ€èšŒãããšãTGSãçºè¡ããŠãŠãŒã¶ã«ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããŸãã
Steps:
- Domain 1ã®client computerãèªèº«ã®NTLM hashã䜿ã£ãŠ**Domain Controller (DC1)ã«Ticket Granting Ticket (TGT)**ãèŠæ±ããããšããå§ãŸããŸãã
- ã¯ã©ã€ã¢ã³ããæ£åžžã«èªèšŒãããã°ãDC1ã¯æ°ããTGTãçºè¡ããŸãã
- ãã®åŸãã¯ã©ã€ã¢ã³ãã¯Domain 2ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããããã«å¿ èŠãªinter-realm TGTãDC1ã«èŠæ±ããŸãã
- inter-realm TGTã¯ãäž¡ãã¡ã€ã³éã®åæ¹åãã¡ã€ã³ãã©ã¹ãã®äžéšãšããŠDC1ãšDC2ãå ±æããtrust keyã§æå·åãããŸãã
- ã¯ã©ã€ã¢ã³ãã¯inter-realm TGTã**Domain 2ã®Domain Controller (DC2)**ã«æã£ãŠè¡ããŸãã
- DC2ã¯å ±æãããtrust keyã䜿ã£ãŠinter-realm TGTãæ€èšŒããæå¹ã§ããã°ã¯ã©ã€ã¢ã³ããã¢ã¯ã»ã¹ããããšããŠããDomain 2å ã®ãµãŒãåãã«**Ticket Granting Service (TGS)**ãçºè¡ããŸãã
- æåŸã«ã¯ã©ã€ã¢ã³ãã¯ãã®TGSããµãŒãã«æç€ºãããµãŒãã¢ã«ãŠã³ãã®ããã·ã¥ã§æå·åãããTGSã䜿ã£ãŠDomain 2ã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ããŸãã
Different trusts
ãã©ã¹ããäžæ¹åïŒ1 wayïŒãåæ¹åïŒ2 waysïŒãã§ããããšã«æ³šæããŠãã ãããåæ¹åã®ãªãã·ã§ã³ã§ã¯äž¡æ¹ã®ãã¡ã€ã³ãäºãã«ä¿¡é ŒããŸãããäžæ¹åã®ãã©ã¹ãé¢ä¿ã§ã¯äžæ¹ãtrustedãããäžæ¹ãtrustingãã¡ã€ã³ã«ãªããŸããåŸè ã®å ŽåãtrustedåŽããã®ã¿trustingãã¡ã€ã³å ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããããšã«ãªããŸãã
ããDomain AãDomain Bãä¿¡é ŒããŠããå ŽåãAã¯trustingãã¡ã€ã³ã§Bã¯trustedãã¡ã€ã³ã§ããããã«ãDomain Aã§ã¯ããã¯Outbound trustãšãªããDomain Bã§ã¯Inbound trustãšãªããŸãã
Different trusting relationships
- Parent-Child Trusts: åäžãã©ã¬ã¹ãå ã§äžè¬çãªæ§æã§ãchild domainã¯èªåçã«parent domainãšåæ¹åã®æšç§»çãã©ã¹ããæã¡ãŸããã€ãŸãã芪ãšåã®éã§èªèšŒèŠæ±ãã·ãŒã ã¬ã¹ã«æµããããšãæå³ããŸãã
- Cross-link Trusts: "shortcut trusts"ãšãåŒã°ããchildãã¡ã€ã³éã®åç §ããã»ã¹ãé«éåããããã«ç¢ºç«ãããŸããå€§èŠæš¡ãªãã©ã¬ã¹ãã§ã¯ãèªèšŒåç §ã¯éåžžãã©ã¬ã¹ãã«ãŒããŸã§äžãã£ãŠããã¿ãŒã²ãããã¡ã€ã³ãŸã§äžãå¿ èŠããããŸãããcross-linkãäœæããããšã§çµè·¯ãççž®ãããŸãã
- External Trusts: ããã¯ç°ãªããç¡é¢ä¿ãªãã¡ã€ã³éã§èšå®ãããéæšç§»çã§ããMicrosoftã®ããã¥ã¡ã³ãã«ããã°ãexternal trustsã¯ãã©ã¬ã¹ããã©ã¹ãã§æ¥ç¶ãããŠããªããã©ã¬ã¹ãå€ã®ãã¡ã€ã³ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããã®ã«æçšã§ããexternal trustsã§ã¯SIDãã£ã«ã¿ãªã³ã°ã«ãã£ãŠã»ãã¥ãªãã£ã匷åãããŸãã
- Tree-root Trusts: ãããã®ãã©ã¹ãã¯ãã©ã¬ã¹ãã«ãŒããã¡ã€ã³ãšæ°ãã远å ãããããªãŒã«ãŒãéã§èªåçã«ç¢ºç«ãããŸããé »ç¹ã«ã¯èŠãããŸããããæ°ãããã¡ã€ã³ããªãŒããã©ã¬ã¹ãã«è¿œå ããéã«éèŠã§ãäºæ¹åã®æšç§»æ§ãç¶æããŸãã
- Forest Trusts: ããã¯2ã€ã®ãã©ã¬ã¹ãã«ãŒããã¡ã€ã³éã®åæ¹åãã€æšç§»çãªãã©ã¹ãã§ãSIDãã£ã«ã¿ãªã³ã°ã匷å¶ããŠã»ãã¥ãªãã£ã匷åããŸãã
- MIT Trusts: ãããã¯éWindowsã®RFC4120æºæ ã®Kerberosãã¡ã€ã³ãšç¢ºç«ãããŸããMIT trustsã¯ããç¹æ®ã§ãWindowsãšã³ã·ã¹ãã å€ã®KerberosããŒã¹ã®ã·ã¹ãã ãšã®çµ±åãå¿ èŠãšããç°å¢ã«å¯Ÿå¿ããŸãã
Other differences in trusting relationships
- ãã©ã¹ãé¢ä¿ã¯æšç§»çïŒtransitiveïŒïŒAãBãä¿¡é ŒããBãCãä¿¡é ŒããŠããã°Aã¯Cãä¿¡é ŒããïŒã§ãã£ããéæšç§»çã§ãã£ããããŸãã
- ãã©ã¹ãé¢ä¿ã¯åæ¹åãã©ã¹ãïŒäž¡æ¹ãäºããä¿¡é ŒïŒãšããŠèšå®ãããããšããäžæ¹åãã©ã¹ãïŒäžæ¹ã®ã¿ã仿¹ãä¿¡é ŒïŒãšããŠèšå®ãããããšããããŸãã
Attack Path
- Enumerate the trusting relationships
- ãã§ãã¯ããŠãã©ã®security principalïŒuser/group/computerïŒãä»ãã¡ã€ã³ã®ãªãœãŒã¹ã«ACEãšã³ããªãä»ãã¡ã€ã³ã®ã°ã«ãŒãã®ã¡ã³ãã·ããã«ãã£ãŠã¢ã¯ã»ã¹ãæã£ãŠãããã確èªããŸããdomainséã®é¢ä¿ãæ¢ããŠãã ããïŒãããããã®ããã«ãã©ã¹ããäœæãããŠããŸãïŒã
- ãã®å Žåãkerberoastãå¥ã®ãªãã·ã§ã³ã«ãªãåŸãŸãã
- ãã¡ã€ã³éãpivotã§ããaccountsãcompromiseããŸãã
æ»æè ãå¥ãã¡ã€ã³ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããæ¹æ³ã¯äž»ã«æ¬¡ã®3ã€ã§ã:
- Local Group Membership: ããªã³ã·ãã«ããµãŒãäžã®âAdministratorsâã®ãããªããŒã«ã«ã°ã«ãŒãã«è¿œå ãããããšãããããã®ãã·ã³ã«å¯Ÿãã倧ããªå¶åŸ¡ãäžããŸãã
- Foreign Domain Group Membership: ããªã³ã·ãã«ãå€éšãã¡ã€ã³å ã®ã°ã«ãŒãã®ã¡ã³ãã«ãªãããšããããŸãããã ãããã®æ¹æ³ã®æå¹æ§ã¯ãã©ã¹ãã®æ§è³ªãã°ã«ãŒãã®ã¹ã³ãŒãã«äŸåããŸãã
- Access Control Lists (ACLs): ããªã³ã·ãã«ãACLã«ãç¹ã«DACLå ã®ACEã®ãšã³ãã£ãã£ãšããŠæå®ãããŠããå Žåãç¹å®ã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãæã¡ãŸããACLãDACLãACEã®ä»çµã¿ãæ·±ãæãäžãããå Žåã¯ãçœæžãAn ACE Up The Sleeveããéåžžã«åèã«ãªããŸã: https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf
Find external users/groups with permissions
å€éšã®ã»ãã¥ãªãã£ããªã³ã·ãã«ãèŠã€ããã«ã¯ãCN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com
ã確èªã§ããŸãããããã¯å€éšãã¡ã€ã³ïŒãã©ã¬ã¹ãããã®user/groupã§ãã
ãããBloodhoundã§ç¢ºèªããããpowerviewã䜿ã£ãŠç¢ºèªã§ããŸã:
# Get users that are i groups outside of the current domain
Get-DomainForeignUser
# Get groups inside a domain with users our
Get-DomainForeignGroupMember
åãã©ã¬ã¹ããã芪ãã©ã¬ã¹ããžã®æš©éææ Œ
# Fro powerview
Get-DomainTrust
SourceName : sub.domain.local --> current domain
TargetName : domain.local --> foreign domain
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : WITHIN_FOREST --> WITHIN_FOREST: Both in the same forest
TrustDirection : Bidirectional --> Trust direction (2ways in this case)
WhenCreated : 2/19/2021 1:28:00 PM
WhenChanged : 2/19/2021 1:28:00 PM
ãã¡ã€ã³ã®ä¿¡é Œé¢ä¿ãåæããä»ã®æ¹æ³:
# Get DCs
nltest /dsgetdc:<DOMAIN>
# Get all domain trusts
nltest /domain_trusts /all_trusts /v
# Get all trust of a domain
nltest /dclist:sub.domain.local
nltest /server:dc.sub.domain.local /domain_trusts /all_trusts
Warning
ä¿¡é Œéµã2ã€ãããŸãã1ã€ã¯ Child --> Parent çšããã1ã€ã¯ Parent --> Child çšã§ãã
çŸåšã®ãã¡ã€ã³ã§äœ¿çšãããŠãããã®ã¯ã次ã®ã³ãã³ãã§ç¢ºèªã§ããŸãïŒInvoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'
SID-History Injection
ä¿¡é ŒãæªçšããŠãSID-History injection ã«ãã child/parent ãã¡ã€ã³ãž Enterprise admin ãšããŠææ ŒããŸãïŒ
{{#ref}} sid-history-injection.md {{#endref}}
Exploit writeable Configuration NC
Configuration Naming Context (NC) ãã©ã®ããã«æªçšããåŸãããçè§£ããããšã¯éèŠã§ããConfiguration NC 㯠Active Directory (AD) ç°å¢å ã®ãã©ã¬ã¹ãå šäœã«é¢ããæ§æããŒã¿ã®äžå€®ãªããžããªãšããŠæ©èœããŸãããã®ããŒã¿ã¯ãã©ã¬ã¹ãå ã®ãã¹ãŠã® Domain Controller (DC) ã«ã¬ããªã±ãŒããããwritable DC 㯠Configuration NC ã®æžã蟌ã¿å¯èœãªã³ããŒãä¿æããŸãããããæªçšããã«ã¯ãDC äžã§ã® SYSTEM æš©éïŒã§ããã° child DCïŒãå¿ èŠã§ãã
Link GPO to root DC site
Configuration NC ã® Sites ã³ã³ããã«ã¯ãAD ãã©ã¬ã¹ãå ã®ãã¹ãŠã®ãã¡ã€ã³åå ã³ã³ãã¥ãŒã¿ã®ãµã€ãæ å ±ãå«ãŸããŸããä»»æã® DC äžã§ SYSTEM æš©éãè¡äœ¿ããããšã§ãæ»æè 㯠GPO ã root DC site ã«ãªã³ã¯ã§ããŸãããã®æäœã«ããããããã®ãµã€ãã«é©çšãããããªã·ãŒãæäœã㊠root domain ãå±éºã«ãããå¯èœæ§ããããŸãã
For in-depth information, one might explore research on Bypassing SID Filtering.
Compromise any gMSA in the forest
æ»æãã¯ã¿ãŒãšããŠãã¡ã€ã³å ã®ç¹æš© gMSA ãæšçã«ããããšããããŸããgMSA ã®ãã¹ã¯ãŒãèšç®ã«å¿ èŠãª KDS Root key 㯠Configuration NC ã«ä¿åãããŠããŸããä»»æã® DC äžã§ SYSTEM æš©éãæãŠã°ãKDS Root key ã«ã¢ã¯ã»ã¹ããŠãã©ã¬ã¹ãå ã®ä»»æã® gMSA ã®ãã¹ã¯ãŒããç®åºããããšãå¯èœã§ãã
Detailed analysis and step-by-step guidance can be found in:
{{#ref}} golden-dmsa-gmsa.md {{#endref}}
Complementary delegated MSA attack (BadSuccessor â abusing migration attributes):
{{#ref}} badsuccessor-dmsa-migration-abuse.md {{#endref}}
Additional external research: Golden gMSA Trust Attacks.
Schema change attack
ãã®ææ³ã¯å¿èãèŠããæ°ããç¹æš© AD ãªããžã§ã¯ãã®äœæãåŸ ã€å¿ èŠããããŸããSYSTEM æš©éãããã°ãæ»æè 㯠AD Schema ã倿ŽããŠä»»æã®ãŠãŒã¶ã«å šã¯ã©ã¹ã®å®å šãªã³ã³ãããŒã«ãäžããããšãã§ããŸããããã«ãããæ°ããäœæããã AD ãªããžã§ã¯ãã«å¯Ÿããäžæ£ã¢ã¯ã»ã¹ãå¶åŸ¡ãå¯èœã«ãªããŸãã
Further reading is available on Schema Change Trust Attacks.
From DA to EA with ADCS ESC5
ADCS ESC5 ã®è匱æ§ã¯ãPKI ãªããžã§ã¯ããå¶åŸ¡ããŠãã©ã¬ã¹ãå ã®ä»»æã®ãŠãŒã¶ãšããŠã®èªèšŒãå¯èœã«ããèšŒææžãã³ãã¬ãŒããäœæããããšãçããŸããPKI ãªããžã§ã¯ã㯠Configuration NC ã«ååšãããããæžã蟌ã¿å¯èœãª child DC ã䟵害ããããšã§ ESC5 æ»æãå®è¡ã§ããŸãã
More details on this can be read in From DA to EA with ESC5. In scenarios lacking ADCS, the attacker has the capability to set up the necessary components, as discussed in Escalating from Child Domain Admins to Enterprise Admins.
å€éšãã©ã¬ã¹ããã¡ã€ã³ - äžæ¹åïŒInboundïŒãŸãã¯åæ¹å
Get-DomainTrust
SourceName : a.domain.local --> Current domain
TargetName : domain.external --> Destination domain
TrustType : WINDOWS-ACTIVE_DIRECTORY
TrustAttributes :
TrustDirection : Inbound --> Inboud trust
WhenCreated : 2/19/2021 10:50:56 PM
WhenChanged : 2/19/2021 10:50:56 PM
ãã®ã·ããªãªã§ã¯ãããªãã®ãã¡ã€ã³ãå€éšãã¡ã€ã³ã«ãã£ãŠä¿¡é ŒãããŠãããå€éšãã¡ã€ã³ã«å¯ŸããŠäžæç¢ºãªæš©éãäžããããŠããŸããããªãã¯ãèªãã¡ã€ã³ã®ã©ã®ããªã³ã·ãã«ãå€éšãã¡ã€ã³ã«å¯ŸããŠã©ã®ã¢ã¯ã»ã¹æš©ãæã£ãŠããããç¹å®ãããããå©çšããŠæ»æã詊ã¿ãå¿ èŠããããŸã:
{{#ref}} external-forest-domain-oneway-inbound.md {{#endref}}
å€éšãã©ã¬ã¹ããã¡ã€ã³ - äžæ¹åïŒã¢ãŠãããŠã³ãïŒ
Get-DomainTrust -Domain current.local
SourceName : current.local --> Current domain
TargetName : external.local --> Destination domain
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection : Outbound --> Outbound trust
WhenCreated : 2/19/2021 10:15:24 PM
WhenChanged : 2/19/2021 10:15:24 PM
ãã®ã·ããªãªã§ã¯ ããªãã®ãã¡ã€ã³ ã ç°ãªããã¡ã€ã³ ã®ããªã³ã·ãã«ã«å¯ŸããŠããã€ãã® ç¹æš© ã ä¿¡é Œ ããŠããŸãã
ãããããã¡ã€ã³ãä¿¡é Œããã ãšãtrusted domain ã¯ äºæž¬å¯èœãªåå ãæã€ ãŠãŒã¶ãŒãäœæãããã® ãã¹ã¯ãŒã ãšããŠãã®ä¿¡é Œããããã¹ã¯ãŒãã䜿çšããŸããã€ãŸããtrusting domain ã®ãŠãŒã¶ãŒã«ã¢ã¯ã»ã¹ã㊠trusted domain å ã«äŸµå ¥ããåæãæš©éææ Œã詊ã¿ãããšãå¯èœã§ãããšããããšã§ã:
{{#ref}} external-forest-domain-one-way-outbound.md {{#endref}}
trusted domain ã䟵害ããå¥ã®æ¹æ³ã¯ããã¡ã€ã³ãã©ã¹ãã® éæ¹å ã«äœæããã SQL trusted link ãèŠã€ããããšã§ãïŒããã¯ããã»ã©äžè¬çã§ã¯ãããŸããïŒã
trusted domain ã䟵害ããå¥ã®æ¹æ³ã¯ãtrusted domain ã®ãŠãŒã¶ãŒã RDP ã§ãã°ã€ã³ã§ãã ãã·ã³äžã§åŸ
ã¡äŒãããããšã§ããããããã°ãæ»æè
㯠RDP ã»ãã·ã§ã³ããã»ã¹ã«ã³ãŒããæ³šå
¥ãããããã 被害è
ã®ãªãªãžã³ãã¡ã€ã³ã«ã¢ã¯ã»ã¹ ããããšãã§ããŸãã
ããã«ã被害è
ãããŒããã©ã€ããããŠã³ãããŠãã å ŽåãRDP ã»ãã·ã§ã³ããã»ã¹ããããŒããã©ã€ãã® startup folder ã« backdoors ã眮ãããšãå¯èœã§ãããã®ææ³ã¯ RDPInception ãšåŒã°ããŸãã
{{#ref}} rdp-sessions-abuse.md {{#endref}}
ãã¡ã€ã³ãã©ã¹ãæªçšã®ç·©åç
SID Filtering:
- ãã©ã¬ã¹ãéãã©ã¹ãã§ SID history 屿§ãæªçšããæ»æã®ãªã¹ã¯ã¯ããã¹ãŠã®ãã©ã¬ã¹ãéãã©ã¹ãã§ããã©ã«ãã§æå¹ã«ãªã£ãŠãã SID Filtering ã«ãã£ãŠè»œæžãããŸãããã㯠Microsoft ã®èŠè§£ã«åºã¥ããã»ãã¥ãªãã£å¢çããã¡ã€ã³ã§ã¯ãªããã©ã¬ã¹ããšèŠãªãããšãåæãšããŠããŸãã
- ãã ãæ³šæç¹ãšããŠãSID filtering ã¯ã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®ã¢ã¯ã»ã¹ãé»å®³ããå¯èœæ§ãããããã®ããäžæçã«ç¡å¹åãããããšããããŸãã
Selective Authentication:
- ãã©ã¬ã¹ãéãã©ã¹ãã«ãããŠãSelective Authentication ãæ¡çšãããšã2 ã€ã®ãã©ã¬ã¹ãã®ãŠãŒã¶ãŒãèªåçã«èªèšŒãããããšã¯ãªããªããŸãã代ããã«ãtrusting domain/forest å ã®ãã¡ã€ã³ããµãŒããŒã«ã¢ã¯ã»ã¹ããããã«ã¯æç€ºçãªæš©éãå¿ èŠã«ãªããŸãã
- ãããã®å¯Ÿçã¯ãwritable Configuration Naming Context (NC) ã®æªçšã trust account ã«å¯Ÿããæ»æãé²ããã®ã§ã¯ãªãç¹ã«çæããå¿ èŠããããŸãã
More information about domain trusts in ired.team.
AD -> Azure & Azure -> AD
{{#ref}} https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html {{#endref}}
äžè¬çãªé²åŸ¡ç
Learn more about how to protect credentials here.
Defensive Measures for Credential Protection
- Domain Admins Restrictions: Domain Admins 㯠Domain Controllers ãžã®ãã°ãªã³ã®ã¿ãèš±å¯ããä»ã®ãã¹ãã§ã®äœ¿çšãé¿ããããšãæšå¥šãããŸãã
- Service Account Privileges: ãµãŒãã¹ã¯ã»ãã¥ãªãã£ã®ããã« Domain Admin (DA) æš©éã§å®è¡ãã¹ãã§ã¯ãããŸããã
- Temporal Privilege Limitation: DA æš©éãå¿
èŠãªã¿ã¹ã¯ã«ã€ããŠã¯ããã®æéãå¶éããããšãæšå¥šãããŸããäŸ:
Add-ADGroupMember -Identity âDomain Adminsâ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)
Implementing Deception Techniques
- Deception ã®å®è£ ã¯ããã¹ã¯ãŒããæéåãã«ãªããªããããã㯠Trusted for Delegation ã«ããŒã¯ããããã³ã€ãŠãŒã¶ãŒãã³ã³ãã¥ãŒã¿ã®ãããªãã©ãããèšå®ããããšãå«ã¿ãŸããå ·äœçã«ã¯ãç¹å®ã®æš©å©ãæã€ãŠãŒã¶ãŒãäœæãããã髿š©éã°ã«ãŒãã«è¿œå ãããããæ¹æ³ããããŸãã
- å®éã®äŸ:
Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose
- Deception æè¡ã®å±éã«ã€ããŠã¯ Deploy-Deception on GitHub ãåç §ããŠãã ããã
Identifying Deception
- For User Objects: ç°åžžãª ObjectSIDããã°ãªã³é »åºŠã®äœããäœææ¥æãäœã bad password ã«ãŠã³ããªã©ãçãããææšã«ãªããŸãã
- General Indicators: æœåšçãªãã³ã€ãªããžã§ã¯ãã®å±æ§ãæ£èŠã®ãã®ãšæ¯èŒããããšã§äžæŽåãçºèŠã§ããŸããHoneypotBuster ã®ãããªããŒã«ãèå¥ã«åœ¹ç«ã¡ãŸãïŒHoneypotBusterïŒã
Bypassing Detection Systems
- Microsoft ATA Detection Bypass:
- User Enumeration: ATA æ€åºãåé¿ããããã« Domain Controllers äžã§ã®ã»ãã·ã§ã³åæãé¿ããã
- Ticket Impersonation: ãã±ããäœæã« aes ããŒãå©çšããããšã§ NTLM ã«ãã©ãŒã«ããã¯ãããã«æ€åºãå ããã®ã«åœ¹ç«ã¡ãŸãã
- DCSync Attacks: Domain Controller ããçŽæ¥å®è¡ãããšã¢ã©ãŒããçºçãããããé Domain Controller ããå®è¡ããããšãæšå¥šãããŸãã
References
- http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/
- https://www.labofapenetrationtester.com/2018/10/deploy-deception.html
- https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain
{{#include ../../banners/hacktricks-training.md}}