macOS Red Teaming
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
MDM ์ ์ฉ
- JAMF Pro:
jamf checkJSSConnection - Kandji
๊ด๋ฆฌ ํ๋ซํผ์ ์ ๊ทผํ๊ธฐ ์ํด ๊ด๋ฆฌ์ ์๊ฒฉ ์ฆ๋ช ์ ํํํ๋ ๋ฐ ์ฑ๊ณตํ๋ฉด, ๊ธฐ๊ณ์ ์ ์ฑ ์ฝ๋๋ฅผ ๋ฐฐํฌํ์ฌ ๋ชจ๋ ์ปดํจํฐ๋ฅผ ํํํ ์ ์์ต๋๋ค.
MacOS ํ๊ฒฝ์์ ๋ ๋ ํ ํ๋์ ํ๋ ค๋ฉด MDM์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์ดํด๊ฐ ํ์ํฉ๋๋ค:
MDM์ C2๋ก ์ฌ์ฉํ๊ธฐ
MDM์ ํ๋กํ์ ์ค์น, ์ฟผ๋ฆฌ ๋๋ ์ ๊ฑฐํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์นํ๊ณ , ๋ก์ปฌ ๊ด๋ฆฌ์ ๊ณ์ ์ ์์ฑํ๊ณ , ํ์จ์ด ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํ๊ณ , FileVault ํค๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๊ถํ์ ๊ฐ์ง๋๋คโฆ
์์ ์ MDM์ ์ด์ํ๋ ค๋ฉด ๊ณต๊ธ์ ์ฒด์ ์ํด ์๋ช ๋ CSR์ด ํ์ํ๋ฉฐ, ์ด๋ฅผ https://mdmcert.download/์์ ์ป์ผ๋ ค๊ณ ์๋ํ ์ ์์ต๋๋ค. Apple ์ฅ์น์ฉ MDM์ ์ด์ํ๋ ค๋ฉด MicroMDM์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ฑ๋ก๋ ์ฅ์น์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์นํ๋ ค๋ฉด ์ฌ์ ํ ๊ฐ๋ฐ์ ๊ณ์ ์ผ๋ก ์๋ช ๋์ด์ผ ํฉ๋๋คโฆ ํ์ง๋ง MDM ๋ฑ๋ก ์ ์ฅ์น๊ฐ MDM์ SSL ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ ์ ์๋ CA๋ก ์ถ๊ฐํ๋ฏ๋ก ์ด์ ๋ฌด์์ด๋ ์๋ช ํ ์ ์์ต๋๋ค.
์ฅ์น๋ฅผ MDM์ ๋ฑ๋กํ๋ ค๋ฉด mobileconfig ํ์ผ์ ๋ฃจํธ๋ก ์ค์นํด์ผ ํ๋ฉฐ, ์ด๋ pkg ํ์ผ์ ํตํด ์ ๋ฌ๋ ์ ์์ต๋๋ค(์์ถํ์ฌ zip์ผ๋ก ๋ง๋ค๊ณ Safari์์ ๋ค์ด๋ก๋ํ๋ฉด ์์ถ์ด ํด์ ๋ฉ๋๋ค).
Mythic agent Orthrus๋ ์ด ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค.
JAMF PRO ์ ์ฉ
JAMF๋ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ(์์คํ ๊ด๋ฆฌ์๊ฐ ๊ฐ๋ฐํ ์คํฌ๋ฆฝํธ), ๋ค์ดํฐ๋ธ ํ์ด๋ก๋(๋ก์ปฌ ๊ณ์ ์์ฑ, EFI ๋น๋ฐ๋ฒํธ ์ค์ , ํ์ผ/ํ๋ก์ธ์ค ๋ชจ๋ํฐ๋งโฆ) ๋ฐ MDM(์ฅ์น ๊ตฌ์ฑ, ์ฅ์น ์ธ์ฆ์โฆ)๋ฅผ ์คํํ ์ ์์ต๋๋ค.
JAMF ์์ฒด ๋ฑ๋ก
https://<ํ์ฌ ์ด๋ฆ>.jamfcloud.com/enroll/์ ๊ฐ์ ํ์ด์ง๋ก ๊ฐ์ ์์ฒด ๋ฑ๋ก์ด ํ์ฑํ๋์ด ์๋์ง ํ์ธํ์ญ์์ค. ํ์ฑํ๋์ด ์๋ค๋ฉด ์ ๊ทผ์ ์ํ ์๊ฒฉ ์ฆ๋ช
์ ์์ฒญํ ์ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ JamfSniper.py๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ฐ๋ฒํธ ์คํ๋ ์ด ๊ณต๊ฒฉ์ ์ํํ ์ ์์ต๋๋ค.
๋ํ, ์ ์ ํ ์๊ฒฉ ์ฆ๋ช ์ ์ฐพ์ ํ ๋ค์ ์์์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ฌ์ฉ์ ์ด๋ฆ์ ๋ฌด์ฐจ๋ณ ๋์ ํ ์ ์์ต๋๋ค:
.png)
JAMF ์ฅ์น ์ธ์ฆ
.png)
jamf ๋ฐ์ด๋๋ฆฌ๋ ํค์ฒด์ธ์ ์ฌ๋ ๋น๋ฐ์ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ๋ฐ๊ฒฌ ๋น์ ๋ชจ๋ ์ฌ๋๊ณผ ๊ณต์ ๋์์ต๋๋ค: jk23ucnq91jfu9aj.
๋ํ, jamf๋ **/Library/LaunchAgents/com.jamf.management.agent.plist**์ LaunchDaemon์ผ๋ก ์ง์๋ฉ๋๋ค.
JAMF ์ฅ์น ์ธ์
JSS (Jamf Software Server) URL์ **jamf**๊ฐ ์ฌ์ฉํ **/Library/Preferences/com.jamfsoftware.jamf.plist**์ ์์นํฉ๋๋ค.
์ด ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก URL์ ํฌํจํ๊ณ ์์ต๋๋ค:
plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
[...]
<key>is_virtual_machine</key>
<false/>
<key>jss_url</key>
<string>https://subdomain-company.jamfcloud.com/</string>
<key>last_management_framework_change_id</key>
<integer>4</integer>
[...]
๋ฐ๋ผ์ ๊ณต๊ฒฉ์๋ ์ค์น ์ ์ด ํ์ผ์ ๋ฎ์ด์ฐ๋ ์
์ฑ ํจํค์ง(pkg)๋ฅผ ๋ฐฐํฌํ์ฌ Typhon ์์ด์ ํธ์ Mythic C2 ๋ฆฌ์ค๋์ ๋ํ URL์ ์ค์ ํ์ฌ JAMF๋ฅผ C2๋ก ์
์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
# After changing the URL you could wait for it to be reloaded or execute:
sudo jamf policy -id 0
# TODO: There is an ID, maybe it's possible to have the real jamf connection and another one to the C2
JAMF ์ฌ์นญ
์ฅ์น์ JMF ๊ฐ์ ํต์ ์ ์ฌ์นญํ๋ ค๋ฉด ๋ค์์ด ํ์ํฉ๋๋ค:
- ์ฅ์น์ UUID:
ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}' - ์ฅ์น ์ธ์ฆ์๋ฅผ ํฌํจํ๋ JAMF ํค์ฒด์ธ:
/Library/Application\ Support/Jamf/JAMF.keychain
์ด ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก, ๋๋๋นํ ํ๋์จ์ด UUID์ SIP ๋นํ์ฑํ๋ VM์ ์์ฑํ๊ณ , JAMF ํค์ฒด์ธ์ ๋๋กญํ ํ, Jamf ์์ด์ ํธ๋ฅผ ํ ํ์ฌ ์ ๋ณด๋ฅผ ํ์น์ธ์.
๋น๋ฐ ์ ๋ณด ํ์น๊ธฐ
.png)
a
๋ํ /Library/Application Support/Jamf/tmp/ ์์น๋ฅผ ๋ชจ๋ํฐ๋งํ์ฌ ๊ด๋ฆฌ์๊ฐ Jamf๋ฅผ ํตํด ์คํํ๊ณ ์ ํ๋ ์ฌ์ฉ์ ์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ์ฌ๊ธฐ์ ๋ฐฐ์น๋๊ณ ์คํ๋ ํ ์ ๊ฑฐ๋ฉ๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ์๊ฒฉ ์ฆ๋ช
์ ํฌํจํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์๊ฒฉ ์ฆ๋ช
์ ์ด๋ฌํ ์คํฌ๋ฆฝํธ์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ์ ์์ผ๋ฏ๋ก, ps aux | grep -i jamf๋ฅผ ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค (๋ฃจํธ ๊ถํ ์์ด๋ ๊ฐ๋ฅํฉ๋๋ค).
์คํฌ๋ฆฝํธ JamfExplorer.py๋ ์ ํ์ผ์ด ์ถ๊ฐ๋๊ฑฐ๋ ์๋ก์ด ํ๋ก์ธ์ค ์ธ์๊ฐ ์๊ธฐ๋ ๊ฒ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
macOS ์๊ฒฉ ์ก์ธ์ค
๋ํ MacOS์ โํน๋ณํโ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ๋ํด:
macOS Network Services & Protocols
Active Directory
์ผ๋ถ ๊ฒฝ์ฐ MacOS ์ปดํจํฐ๊ฐ AD์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒ์ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ์ด ์๋๋ฆฌ์ค์์๋ ์ต์ํ ๋๋ก ์กํฐ๋ธ ๋๋ ํ ๋ฆฌ๋ฅผ ์ด๊ฑฐํ๋ ค๊ณ ์๋ํด์ผ ํฉ๋๋ค. ๋ค์ ํ์ด์ง์์ ๋์์ ์ฐพ์ผ์ธ์:
389, 636, 3268, 3269 - Pentesting LDAP
88tcp/udp - Pentesting Kerberos
๋์์ด ๋ ์ ์๋ ๋ก์ปฌ MacOS ๋๊ตฌ๋ dscl์
๋๋ค:
dscl "/Active Directory/[Domain]/All Domains" ls /
๋ํ MacOS์์ AD๋ฅผ ์๋์ผ๋ก ์ด๊ฑฐํ๊ณ kerberos์ ์ํธ์์ฉํ ์ ์๋๋ก ์ค๋น๋ ๋๊ตฌ๋ค์ด ์์ต๋๋ค:
- Machound: MacHound๋ MacOS ํธ์คํธ์์ Active Directory ๊ด๊ณ๋ฅผ ์์งํ๊ณ ์์งํ ์ ์๋๋ก ํ๋ Bloodhound ๊ฐ์ฌ ๋๊ตฌ์ ํ์ฅ์ ๋๋ค.
- Bifrost: Bifrost๋ macOS์์ Heimdal krb5 API์ ์ํธ์์ฉํ๋๋ก ์ค๊ณ๋ Objective-C ํ๋ก์ ํธ์ ๋๋ค. ์ด ํ๋ก์ ํธ์ ๋ชฉํ๋ ํ๊ฒ์ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ ํจํค์ง๋ฅผ ์๊ตฌํ์ง ์๊ณ ๋ค์ดํฐ๋ธ API๋ฅผ ์ฌ์ฉํ์ฌ macOS ์ฅ์น์์ Kerberos์ ๋ํ ๋ณด์ ํ ์คํธ๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค.
- Orchard: Active Directory ์ด๊ฑฐ๋ฅผ ์ํํ๊ธฐ ์ํ JavaScript for Automation (JXA) ๋๊ตฌ์ ๋๋ค.
๋๋ฉ์ธ ์ ๋ณด
echo show com.apple.opendirectoryd.ActiveDirectory | scutil
์ฌ์ฉ์
MacOS ์ฌ์ฉ์ ์ ํ์ ์ธ ๊ฐ์ง์ ๋๋ค:
- ๋ก์ปฌ ์ฌ์ฉ์ โ ๋ก์ปฌ OpenDirectory ์๋น์ค์ ์ํด ๊ด๋ฆฌ๋๋ฉฐ, Active Directory์๋ ์ฐ๊ฒฐ๋์ด ์์ง ์์ต๋๋ค.
- ๋คํธ์ํฌ ์ฌ์ฉ์ โ DC ์๋ฒ์ ์ฐ๊ฒฐํ์ฌ ์ธ์ฆ์ด ํ์ํ ๋ณ๋์ฑ Active Directory ์ฌ์ฉ์์ ๋๋ค.
- ๋ชจ๋ฐ์ผ ์ฌ์ฉ์ โ ์๊ฒฉ ์ฆ๋ช ๋ฐ ํ์ผ์ ๋ํ ๋ก์ปฌ ๋ฐฑ์ ์ด ์๋ Active Directory ์ฌ์ฉ์์ ๋๋ค.
์ฌ์ฉ์ ๋ฐ ๊ทธ๋ฃน์ ๋ํ ๋ก์ปฌ ์ ๋ณด๋ /var/db/dslocal/nodes/Default ํด๋์ ์ ์ฅ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, _mark_๋ผ๋ ์ฌ์ฉ์์ ๋ํ ์ ๋ณด๋ _/var/db/dslocal/nodes/Default/users/mark.plist_์ ์ ์ฅ๋๋ฉฐ, admin ๊ทธ๋ฃน์ ๋ํ ์ ๋ณด๋ _/var/db/dslocal/nodes/Default/groups/admin.plist_์ ์์ต๋๋ค.
HasSession ๋ฐ AdminTo ์ฃ์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ธ์๋, MacHound๋ Bloodhound ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ ๊ฐ์ง ์๋ก์ด ์ฃ์ง๋ฅผ ์ถ๊ฐํฉ๋๋ค:
- CanSSH - ํธ์คํธ์ SSHํ ์ ์๋ ์ํฐํฐ
- CanVNC - ํธ์คํธ์ VNCํ ์ ์๋ ์ํฐํฐ
- CanAE - ํธ์คํธ์์ AppleEvent ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๋ ์ํฐํฐ
#User enumeration
dscl . ls /Users
dscl . read /Users/[username]
dscl "/Active Directory/TEST/All Domains" ls /Users
dscl "/Active Directory/TEST/All Domains" read /Users/[username]
dscacheutil -q user
#Computer enumeration
dscl "/Active Directory/TEST/All Domains" ls /Computers
dscl "/Active Directory/TEST/All Domains" read "/Computers/[compname]$"
#Group enumeration
dscl . ls /Groups
dscl . read "/Groups/[groupname]"
dscl "/Active Directory/TEST/All Domains" ls /Groups
dscl "/Active Directory/TEST/All Domains" read "/Groups/[groupname]"
#Domain Information
dsconfigad -show
๋ ๋ง์ ์ ๋ณด๋ https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/์์ ํ์ธํ์ธ์.
Computer$ ๋น๋ฐ๋ฒํธ
๋ค์ ๋ฐฉ๋ฒ์ผ๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค:
bifrost --action askhash --username [name] --password [password] --domain [domain]
Computer$ ๋น๋ฐ๋ฒํธ์ ์์คํ
ํค์ฒด์ธ์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
Over-Pass-The-Hash
ํน์ ์ฌ์ฉ์ ๋ฐ ์๋น์ค์ ๋ํ TGT๋ฅผ ๊ฐ์ ธ์ต๋๋ค:
bifrost --action asktgt --username [user] --domain [domain.com] \
--hash [hash] --enctype [enctype] --keytab [/path/to/keytab]
TGT๊ฐ ์์ง๋๋ฉด, ํ์ฌ ์ธ์ ์ ์ฃผ์ ํ ์ ์์ต๋๋ค:
bifrost --action asktgt --username test_lab_admin \
--hash CF59D3256B62EE655F6430B0F80701EE05A0885B8B52E9C2480154AFA62E78 \
--enctype aes256 --domain test.lab.local
Kerberoasting
bifrost --action asktgs --spn [service] --domain [domain.com] \
--username [user] --hash [hash] --enctype [enctype]
ํ๋ํ ์๋น์ค ํฐ์ผ์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ปดํจํฐ์ ๊ณต์ ์ ์ ๊ทผํ ์ ์์ต๋๋ค:
smbutil view //computer.fqdn
mount -t smbfs //server/folder /local/mount/point
Keychain ์ ๊ทผํ๊ธฐ
Keychain์ ํ๋กฌํํธ๋ฅผ ์์ฑํ์ง ์๊ณ ์ ๊ทผํ ๊ฒฝ์ฐ, ๋ ๋ ํ ์ฐ์ต์ ์งํํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค:
์ธ๋ถ ์๋น์ค
MacOS ๋ ๋ ํ์ ์ผ๋ฐ์ ์ธ Windows ๋ ๋ ํ๊ณผ ๋ค๋ฆ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก MacOS๋ ์ฌ๋ฌ ์ธ๋ถ ํ๋ซํผ๊ณผ ์ง์ ํตํฉ๋์ด ์์ต๋๋ค. MacOS์ ์ผ๋ฐ์ ์ธ ๊ตฌ์ฑ์ OneLogin ๋๊ธฐํ ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ์ฌ ์ปดํจํฐ์ ์ ๊ทผํ๊ณ , OneLogin์ ํตํด ์ฌ๋ฌ ์ธ๋ถ ์๋น์ค(์: github, awsโฆ)์ ์ ๊ทผํ๋ ๊ฒ์ ๋๋ค.
๊ธฐํ ๋ ๋ ํ ๊ธฐ์
Safari
Safari์์ ํ์ผ์ด ๋ค์ด๋ก๋๋ ๋, โ์์ ํโ ํ์ผ์ด๋ผ๋ฉด ์๋์ผ๋ก ์ด๋ฆฝ๋๋ค. ์๋ฅผ ๋ค์ด, zip ํ์ผ์ ๋ค์ด๋ก๋ํ๋ฉด ์๋์ผ๋ก ์์ถ์ด ํด์ ๋ฉ๋๋ค:
.png)
์ฐธ๊ณ ์๋ฃ
- https://www.youtube.com/watch?v=IiMladUbL6E
- https://medium.com/xm-cyber/introducing-machound-a-solution-to-macos-active-directory-based-attacks-2a425f0a22b6
- https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0
- Come to the Dark Side, We Have Apples: Turning macOS Management Evil
- OBTS v3.0: โAn Attackers Perspective on Jamf Configurationsโ - Luke Roberts / Calum Hall
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


