macOS Auto Start
Hierdie afdeling is sterk gebaseer op die blogreeks Beyond the good ol' LaunchAgents, die doel is om meer Selfbeginlokasies by te voeg (indien moontlik), aan te dui watter tegnieke steeds werk met die nuutste weergawe van macOS (13.4) en om die toestemmings wat nodig is, te spesifiseer.
Sandbox Oorweging
Hier kan jy selfbeginlokasies vind wat nuttig is vir sandbox-oorweging wat jou toelaat om eenvoudig iets uit te voer deur dit in 'n lêer te skryf en te wag vir 'n baie gewone aksie, 'n bepaalde hoeveelheid tyd of 'n aksie wat jy gewoonlik kan uitvoer van binne 'n sandbox sonder om root-toestemmings te benodig.
Launchd
Lokasies
/Library/LaunchAgents
Trigger: Herlaai
Root benodig
/Library/LaunchDaemons
Trigger: Herlaai
Root benodig
/System/Library/LaunchAgents
Trigger: Herlaai
Root benodig
/System/Library/LaunchDaemons
Trigger: Herlaai
Root benodig
~/Library/LaunchAgents
Trigger: Herlaai
~/Library/LaunchDemons
Trigger: Herlaai
Beskrywing & Uitbuiting
launchd
is die eerste proses wat deur die OX S-kernel by opstart uitgevoer word en die laaste om af te sluit. Dit behoort altyd die PID 1 te hê. Hierdie proses sal die konfigurasies wat in die ASEP plists aangedui word, lees en uitvoer in:
/Library/LaunchAgents
: Per-gebruiker-agente wat deur die administrateur geïnstalleer is/Library/LaunchDaemons
: Stelselwye duiwels wat deur die administrateur geïnstalleer is/System/Library/LaunchAgents
: Per-gebruiker-agente wat deur Apple voorsien word./System/Library/LaunchDaemons
: Stelselwye duiwels wat deur Apple voorsien word.
Wanneer 'n gebruiker aanmeld, word die plists wat in /Users/$USER/Library/LaunchAgents
en /Users/$USER/Library/LaunchDemons
geleë is, gestart met die toestemmings van die aangemelde gebruikers.
Die hoofverskil tussen agente en duiwels is dat agente gelaai word wanneer die gebruiker aanmeld en die duiwels by stelselopstart gelaai word (aangesien daar dienste soos ssh is wat uitgevoer moet word voordat enige gebruiker toegang tot die stelsel kry). Agente kan ook GUI gebruik terwyl duiwels in die agtergrond moet hardloop.
Daar is gevalle waar 'n agent uitgevoer moet word voordat die gebruiker aanmeld, hierdie word genoem PreLoginAgents. Byvoorbeeld, dit is nuttig om ondersteunende tegnologie by aanmelding te voorsien. Hulle kan ook gevind word in /Library/LaunchAgents
(sien hier 'n voorbeeld).
Nuwe Daemons of Agents konfigurasie lêers sal gelaai word na die volgende herlaai of deur gebruik te maak van launchctl load <target.plist>
Dit is ook moontlik om .plist lêers sonder daardie uitbreiding te laai met launchctl -F <file>
(egter sal daardie plist lêers nie outomaties gelaai word na herlaai nie).
Dit is ook moontlik om te ontlas met launchctl unload <target.plist>
(die proses wat daarna verwys word, sal beëindig word),
Om te verseker dat daar nie iets (soos 'n oorskrywing) is wat 'n Agent of Daemon verhoed om uit te voer nie, hardloop: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist
Lys alle agents en daemons wat deur die huidige gebruiker gelaai is:
Indien 'n plist deur 'n gebruiker besit word, selfs al is dit in 'n daemon-stelselwye gids, sal die taak as die gebruiker uitgevoer word en nie as root nie. Dit kan sommige voorreg-escalasie aanvalle voorkom.
skulpaart opstart lêers
Writeup: https://theevilbit.github.io/beyond/beyond_0001/ Writeup (xterm): https://theevilbit.github.io/beyond/beyond_0018/
Nuttig om sandput te omseil: ✅
TCC Omseiling: ✅
Maar jy moet 'n program met 'n TCC-omseiling vind wat 'n skulpaart uitvoer wat hierdie lêers laai
Liggings
~/.zshrc
,~/.zlogin
,~/.zshenv.zwc
,~/.zshenv
,~/.zprofile
Trigger: Maak 'n terminal oop met zsh
/etc/zshenv
,/etc/zprofile
,/etc/zshrc
,/etc/zlogin
Trigger: Maak 'n terminal oop met zsh
Root benodig
~/.zlogout
Trigger: Maak 'n terminal toe met zsh
/etc/zlogout
Trigger: Maak 'n terminal toe met zsh
Root benodig
Moontlik meer in:
man zsh
~/.bashrc
Trigger: Maak 'n terminal oop met bash
/etc/profile
(het nie gewerk nie)~/.profile
(het nie gewerk nie)~/.xinitrc
,~/.xserverrc
,/opt/X11/etc/X11/xinit/xinitrc.d/
Trigger: Verwag om met xterm te aktiveer, maar dit is nie geïnstalleer nie en selfs nadat dit geïnstalleer is, word hierdie fout gegooi: xterm:
DISPLAY is not set
Beskrywing & Uitbuiting
Wanneer 'n skulpaart-omgewing soos zsh
of bash
geïnisieer word, word sekere opstart lêers uitgevoer. macOS gebruik tans /bin/zsh
as die verstek skul. Hierdie skul word outomaties geaktiveer wanneer die Terminal-toepassing geopen word of wanneer 'n toestel via SSH benader word. Alhoewel bash
en sh
ook teenwoordig is in macOS, moet hulle uitdruklik aangeroep word om gebruik te word.
Die manbladsy van zsh, wat ons kan lees met man zsh
het 'n lang beskrywing van die opstart lêers.
Heropende Toepassings
Die konfigurasie van die aangeduide uitbuiting en uitlog en inlog of selfs herlaai het nie vir my gewerk om die toepassing uit te voer nie. (Die toepassing is nie uitgevoer nie, dit moet dalk loop wanneer hierdie aksies uitgevoer word)
Writeup: https://theevilbit.github.io/beyond/beyond_0021/
Ligging
~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
Trigger: Herlaai toepassings
Beskrywing & Uitbuiting
Al die toepassings om te heropen is binne die plist ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
Om dus die heropen toepassings jou eie een te laat begin, moet jy net jou toepassing by die lys voeg.
Die UUID kan gevind word deur daardie gids te lys of met ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'
Om die toepassings wat heropen sal word te kontroleer, kan jy die volgende doen:
Om 'n toepassing by hierdie lys te voeg, kan jy gebruik:
Terminal Voorkeure
Nuttig om sandboks te omseil: ✅
TCC omseiling: ✅
Terminal gebruik om FDA-toestemmings van die gebruiker te hê
Plek
~/Library/Preferences/com.apple.Terminal.plist
Trigger: Open Terminal
Beskrywing & Uitbuiting
In ~/Library/Preferences
word die voorkeure van die gebruiker in die Toepassings gestoor. Sommige van hierdie voorkeure kan 'n konfigurasie hê om ander toepassings/scripts uit te voer.
Byvoorbeeld, die Terminal kan 'n bevel uitvoer by die Begin:
Hierdie konfigurasie word weerspieël in die lêer ~/Library/Preferences/com.apple.Terminal.plist
soos dit:
So, as die plist van die voorkeure van die terminaal in die stelsel oorskryf kan word, kan die open
funksionaliteit gebruik word om die terminaal te open en daardie bevel uit te voer.
Jy kan dit van die opdraggelynstelsel toevoeg met:
Terminal Skripte / Ander lêeruitbreidings
Nuttig om sandput te omseil: ✅
TCC omseiling: ✅
Terminal gebruik om FDA-toestemmings van die gebruiker te hê
Plek
Enige plek
Trigger: Maak Terminal oop
Beskrywing & Uitbuiting
As jy 'n .terminal
skriff skep en oopmaak, sal die Terminal-toepassing outomaties opgeroep word om die opdragte wat daarin aangedui is, uit te voer. As die Terminal-toep 'n paar spesiale voorregte het (soos TCC), sal jou opdrag met daardie spesiale voorregte uitgevoer word.
Probeer dit met:
Klankinvoegtoepassings
Skryfop: https://theevilbit.github.io/beyond/beyond_0013/ Skryfop: https://posts.specterops.io/audio-unit-plug-ins-896d3434a882
Ligging
/Library/Audio/Plug-Ins/HAL
Wortel vereis
Trigger: Herlaai coreaudiod of die rekenaar
/Library/Audio/Plug-ins/Components
Wortel vereis
Trigger: Herlaai coreaudiod of die rekenaar
~/Library/Audio/Plug-ins/Components
Trigger: Herlaai coreaudiod of die rekenaar
/System/Library/Components
Wortel vereis
Trigger: Herlaai coreaudiod of die rekenaar
Beskrywing
Volgens die vorige skryfops is dit moontlik om sekere klankinvoegtoepassings saam te stel en hulle te laai.
QuickLook Invoegtoepassings
Skryfop: https://theevilbit.github.io/beyond/beyond_0028/
Ligging
/System/Library/QuickLook
/Library/QuickLook
~/Library/QuickLook
/Applications/AppNameHere/Contents/Library/QuickLook/
~/Applications/AppNameHere/Contents/Library/QuickLook/
Beskrywing & Uitbuiting
QuickLook-invoegtoepassings kan uitgevoer word wanneer jy die voorbeeld van 'n lêer' aktiveer (druk die spasiebalk met die lêer gekies in Finder) en 'n invoegtoepassing wat daardie lêertipe ondersteun geïnstalleer is.
Dit is moontlik om jou eie QuickLook-invoegtoepassing saam te stel, dit in een van die vorige ligginge te plaas om dit te laai en dan na 'n ondersteunde lêer te gaan en die spasiebalk te druk om dit te aktiveer.
Aanmelding/Afmelding Hakies
Dit het nie vir my gewerk nie, nie met die gebruiker LoginHook nie of met die wortel LogoutHook nie
Skryfop: https://theevilbit.github.io/beyond/beyond_0022/
Ligging
Jy moet iets soos
defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh
kan uitvoerGeleë in
~/Library/Preferences/com.apple.loginwindow.plist
Hulle is verouderd maar kan gebruik word om bevele uit te voer wanneer 'n gebruiker aanmeld.
Hierdie instelling word gestoor in /Gebruikers/$GEBRUIKER/Biblioteek/Voorkeure/com.apple.loginwindow.plist
Om dit te verwyder:
Die root-gebruiker een is gestoor in /private/var/root/Library/Preferences/com.apple.loginwindow.plist
Voorwaardelike Sandboks-Omweg
Hier kan jy beginlokasies vind wat nuttig is vir sandboks-omweg wat jou toelaat om eenvoudig iets uit te voer deur dit in 'n lêer te skryf en nie baie algemene toestande te verwag soos spesifieke geïnstalleerde programme, "ongewone" gebruiker aksies of omgewings.
Cron
Writeup: https://theevilbit.github.io/beyond/beyond_0004/
Nuttig vir sandboks-omweg: ✅
Jy moet egter in staat wees om die
crontab
binêre lêer uit te voerOf wees 'n root
TCC-omweg: 🔴
Lokasie
/usr/lib/cron/tabs/
,/private/var/at/tabs
,/private/var/at/jobs
,/etc/periodic/
Root benodig vir direkte skryftoegang. Geen root benodig as jy
crontab <lêer>
kan uitvoer nieTrigger: Afhanklik van die cron-werk
Beskrywing & Uitbuiting
Lys die cron-werk van die huidige gebruiker met:
Jy kan ook al die cron take van die gebruikers sien in /usr/lib/cron/tabs/
en /var/at/tabs/
(benodig root).
In MacOS kan verskeie folders gevind word wat skripte met sekere frekwensie uitvoer:
Daar kan jy die gewone cron take, die at take (nie baie gebruik nie) en die periodic take (hoofsaaklik gebruik vir skoonmaak van tydelike lêers) vind. Die daaglikse periodieke take kan byvoorbeeld uitgevoer word met: periodic daily
.
Om 'n gebruiker cronjob programmaties by te voeg, is dit moontlik om te gebruik:
iTerm2
Bespreking: https://theevilbit.github.io/beyond/beyond_0002/
Liggings
~/Library/Application Support/iTerm2/Scripts/AutoLaunch
Trigger: Maak iTerm oop
~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
Trigger: Maak iTerm oop
~/Library/Preferences/com.googlecode.iterm2.plist
Trigger: Maak iTerm oop
Beskrywing & Uitbuiting
Skripte wat gestoor word in ~/Library/Application Support/iTerm2/Scripts/AutoLaunch
sal uitgevoer word. Byvoorbeeld:
macOS Auto Start Locations
Login Items
Login items are applications that run automatically when a user logs in. They can be managed in System Preferences > Users & Groups > Login Items.
Launch Agents
Launch agents are used to run tasks when a user logs in. They are located in ~/Library/LaunchAgents/
and /Library/LaunchAgents/
.
Launch Daemons
Launch daemons are system-wide services that run regardless of which user is logged in. They are located in /Library/LaunchDaemons/
.
Startup Items
Startup items are legacy items that are deprecated in macOS, but some old applications may still use them. They are located in /Library/StartupItems/
.
Die skrip ~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
sal ook uitgevoer word:
Die iTerm2-voorkeure geleë in ~/Library/Preferences/com.googlecode.iterm2.plist
kan 'n bevel aandui om uit te voer wanneer die iTerm2-terminal geopen word.
Hierdie instelling kan in die iTerm2-instellings geconfigureer word:
En die bevel word weerspieël in die voorkeure:
Jy kan die bevel instel om uit te voer met:
Hoogs waarskynlik dat daar ander maniere is om die iTerm2-voorkeure te misbruik om willekeurige bevele uit te voer.
xbar
Writeup: https://theevilbit.github.io/beyond/beyond_0007/
Nuttig om sandboks te omseil: ✅
Maar xbar moet geïnstalleer wees
TCC-omseiling: ✅
Dit vra om Toeganklikheidsregte
Ligging
~/Library/Application\ Support/xbar/plugins/
Trigger: Sodra xbar uitgevoer word
Beskrywing
As die gewilde program xbar geïnstalleer is, is dit moontlik om 'n skulpskrip te skryf in ~/Library/Application\ Support/xbar/plugins/
wat uitgevoer sal word wanneer xbar begin:
Hammerspoon
Bespreking: https://theevilbit.github.io/beyond/beyond_0008/
Nuttig om sandboks te omseil: ✅
Maar Hammerspoon moet geïnstalleer wees
TCC omseiling: ✅
Dit vra om Toeganklikheidsregte
Plek
~/.hammerspoon/init.lua
Trigger: Eenmaal Hammerspoon uitgevoer word
Beskrywing
Hammerspoon dien as 'n outomatiseringsplatform vir macOS, wat die LUA-skripsingstaal benut vir sy werksaamhede. Merkwaardig genoeg ondersteun dit die integrasie van volledige AppleScript-kode en die uitvoering van skulpskripte, wat sy skripskapsiteite aansienlik verbeter.
Die program soek na 'n enkele lêer, ~/.hammerspoon/init.lua
, en wanneer dit begin word die skrip uitgevoer.
BetterTouchTool
Nuttig om sander te omseil: ✅
Maar BetterTouchTool moet geïnstalleer wees
TCC omseiling: ✅
Dit vra vir Outomatiese Snelskakels en Toeganklikheidsregte
Ligging
~/Library/Application Support/BetterTouchTool/*
Hierdie instrument maak dit moontlik om aansoeke of skripte aan te dui wat uitgevoer moet word wanneer sekere snelskakels gedruk word. 'n Aanvaller kan sy eie snelskakel en aksie om in die databasis uit te voer configureer om dit arbitrêre kode uit te voer ( 'n snelskakel kan net wees om 'n sleutel te druk).
Alfred
Nuttig om sander te omseil: ✅
Maar Alfred moet geïnstalleer wees
TCC omseiling: ✅
Dit vra vir Outomatiese, Toeganklikheids- en selfs Volle Skyftoegangregte
Ligging
???
Dit maak dit moontlik om werksvloei te skep wat kode kan uitvoer wanneer sekere voorwaardes bereik word. Dit is moontlik vir 'n aanvaller om 'n werksvloei-lêer te skep en Alfred te maak om dit te laai (dit is nodig om die premie weergawe te betaal om werksvloeie te gebruik).
SSHRC
Writeup: https://theevilbit.github.io/beyond/beyond_0006/
Nuttig om sander te omseil: ✅
Maar ssh moet geaktiveer en gebruik word
TCC omseiling: ✅
SSH gebruik om FDA-toegang te hê
Ligging
~/.ssh/rc
Trigger: Aanteken via ssh
/etc/ssh/sshrc
Wortel benodig
Trigger: Aanteken via ssh
Om ssh aan te skakel, is Volle Skyftoegang benodig:
Beskrywing & Uitbuiting
Standaard, tensy PermitUserRC no
in /etc/ssh/sshd_config
, wanneer 'n gebruiker inlog via SSH sal die skripte /etc/ssh/sshrc
en ~/.ssh/rc
uitgevoer word.
Inlog Items
Writeup: https://theevilbit.github.io/beyond/beyond_0003/
Lokasies
~/Library/Application Support/com.apple.backgroundtaskmanagementagent
Trigger: Inlog
Uitbuitingslading gestoor deur
osascript
te roep/var/db/com.apple.xpc.launchd/loginitems.501.plist
Trigger: Inlog
Wortel vereis
Beskrywing
In Sisteemvoorkeure -> Gebruikers & Groepe -> Inlog Items kan jy items vind wat uitgevoer moet word wanneer die gebruiker inlog. Dit is moontlik om hulle te lys, by te voeg en te verwyder vanaf die opdraglyn:
Hierdie items word gestoor in die lêer ~/Library/Application Support/com.apple.backgroundtaskmanagementagent
Aanmeldingsitems kan ook aangedui word deur die API SMLoginItemSetEnabled te gebruik wat die konfigurasie in /var/db/com.apple.xpc.launchd/loginitems.501.plist
sal stoor
ZIP as Aanmeldingsitem
(Kyk na die vorige afdeling oor Aanmeldingsitems, dit is 'n uitbreiding)
As jy 'n ZIP-lêer as 'n Aanmeldingsitem stoor, sal die Archive Utility
dit oopmaak en as die zip byvoorbeeld gestoor was in ~/Library
en die Gids LaunchAgents/file.plist
met 'n agterdeur bevat het, sal daardie gids geskep word (dit is nie standaard nie) en die plist sal bygevoeg word sodat die volgende keer as die gebruiker weer aanmeld, die agterdeur wat in die plist aangedui word, uitgevoer sal word.
'n Ander opsie sou wees om die lêers .bash_profile
en .zshenv
binne die gebruiker se TUIS te skep sodat as die gids LaunchAgents reeds bestaan, sal hierdie tegniek steeds werk.
By
Writeup: https://theevilbit.github.io/beyond/beyond_0014/
Plek
Moet
at
uitvoer en dit moet geaktiveer wees
Beskrywing
at
take is ontwerp vir skedulering van eenmalige take om uitgevoer te word op sekere tye. Anders as cron take, word at
take outomaties verwyder na uitvoering. Dit is noodsaaklik om te let dat hierdie take volhoubaar is oor stelselherlaaie, wat hulle potensiële veiligheidskwessies onder sekere omstandighede maak.
Standaard is hulle uitgeschakel maar die root gebruiker kan hulle aktiveer met:
Dit sal 'n lêer skep binne 1 uur:
Kontroleer die werksopdrag ry met behulp van atq:
Bokant kan ons twee geskeduleerde take sien. Ons kan die besonderhede van die taak afdruk deur at -c JOBNUMMER
te gebruik.
As AT-take nie geaktiveer is nie, sal die geskepte take nie uitgevoer word nie.
Die werk lêers kan gevind word by /private/var/at/jobs/
Die lêernaam bevat die tou, die taaknommer, en die tyd wanneer dit geskeduleer is om uit te voer. Byvoorbeeld, laat ons na a0001a019bdcd2
kyk.
a
- dit is die tou0001a
- taaknommer in heksadesimaal,0x1a = 26
019bdcd2
- tyd in heksadesimaal. Dit verteenwoordig die minute wat verloop het sedert die epog.0x019bdcd2
is26991826
in desimaal. As ons dit met 60 vermenigvuldig, kry ons1619509560
, watGMT: 2021. April 27., Dinsdag 7:46:00
is.
As ons die taaklêer druk, vind ons dat dit dieselfde inligting bevat as wat ons met at -c
gekry het.
Voueraksies
Writeup: https://theevilbit.github.io/beyond/beyond_0024/ Writeup: https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d
Nuttig om sandput te omseil: ✅
Maar jy moet in staat wees om
osascript
met argumente te roep omSystem Events
te kontak om Voueraksies te kan konfigureerTCC omseiling: 🟠
Dit het basiese TCC-toestemmings soos Skermblad, Dokumente en Aflaaibare lêers
Plek
/Library/Scripts/Folder Action Scripts
Wortel vereis
Trigger: Toegang tot die gespesifiseerde vouer
~/Library/Scripts/Folder Action Scripts
Trigger: Toegang tot die gespesifiseerde vouer
Beskrywing & Uitbuiting
Voueraksies is skripte wat outomaties geaktiveer word deur veranderinge in 'n vouer soos die byvoeging, verwydering van items, of ander aksies soos die oopmaak of herskaal van die vouer-venster. Hierdie aksies kan gebruik word vir verskeie take, en kan op verskillende maniere geaktiveer word soos deur die Finder UI of terminalopdragte.
Om Voueraksies op te stel, het jy opsies soos:
'n Voueraksie-werkvloei met Automator saam te stel en dit as 'n diens te installeer.
'n skrip handmatig aan te heg via die Voueraksies-opstelling in die konteksmenu van 'n vouer.
OSAScript te gebruik om Apple Event-boodskappe na die
System Events.app
te stuur vir die programmatiese opstel van 'n Voueraksie.
Hierdie metode is veral nuttig om die aksie in die stelsel in te bed, wat 'n vlak van volharding bied.
Die volgende skrip is 'n voorbeeld van wat deur 'n Voueraksie uitgevoer kan word:
Om die bogenoemde skrips bruikbaar te maak deur middel van Mapaksies, kompileer dit met:
Na die skrip is saamgestel, stel Gidsaksies op deur die onderstaande skrip uit te voer. Hierdie skrip sal Gidsaksies wêreldwyd aktiveer en spesifiek die vroeër saamgestelde skrip aan die Skermblad-gids koppel.
Voer die opstellingskrip uit met:
Hierdie is die manier om hierdie volharding via GUI te implementeer:
Dit is die skrips wat uitgevoer sal word:
Kompileer dit met: osacompile -l JavaScript -o folder.scpt bron.js
Skuif dit na:
Dan, open die Folder Actions Setup
-toep, kies die gids wat jy wil dophou en kies in jou geval folder.scpt
(in my geval het ek dit output2.scp genoem):
Nou, as jy daardie gids met Finder oopmaak, sal jou skripsie uitgevoer word.
Hierdie konfigurasie is gestoor in die plist wat in ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist
in base64-formaat geleë is.
Nou, laat ons probeer om hierdie volharding sonder GUI-toegang voor te berei:
Kopieer
~/Library/Preferences/com.apple.FolderActionsDispatcher.plist
na/tmp
om dit te rugsteun:
cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp
Verwyder die Gidsaksies wat jy net ingestel het:
Nou dat ons 'n leë omgewing het
Kopieer die rugsteunlêer:
cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/
Maak die Folder Actions Setup-toep oop om hierdie konfigurasie te gebruik:
open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"
En dit het nie vir my gewerk nie, maar dit is die instruksies van die skrywe:(
Dock-aanwysers
Skrywe: https://theevilbit.github.io/beyond/beyond_0027/
Nuttig om sandput te omseil: ✅
Maar jy moet 'n skadelike aansoek binne die stelsel geïnstalleer hê
TCC-omseiling: 🔴
Ligging
~/Library/Preferences/com.apple.dock.plist
Trigger: Wanneer die gebruiker op die aansoek binne die dok klik
Beskrywing & Uitbuiting
Al die aansoeke wat in die Dok verskyn, word gespesifiseer binne die plist: ~/Library/Preferences/com.apple.dock.plist
Dit is moontlik om 'n aansoek by te voeg net met:
Deur van sosiale ingenieurswese gebruik te maak, kan jy byvoorbeeld as Google Chrome voorgee binne die dok en werklik jou eie skripsie uitvoer:
Kleurkiesers
Skryf: https://theevilbit.github.io/beyond/beyond_0017
Nuttig om sandboks te omseil: 🟠
'n Baie spesifieke aksie moet plaasvind
Jy sal in 'n ander sandboks eindig
TCC omseiling: 🔴
Ligging
/Library/ColorPickers
Root benodig
Trigger: Gebruik die kleurkieser
~/Library/ColorPickers
Trigger: Gebruik die kleurkieser
Beskrywing & Uitbuiting
Stel 'n kleurkieser bundel saam met jou kode (jy kan hierdie een byvoorbeeld gebruik) en voeg 'n konstrukteur by (soos in die Skermbeveiliging afdeling) en kopieer die bundel na ~/Library/ColorPickers
.
Dan, wanneer die kleurkieser geaktiveer word, moet joune ook wees.
Let daarop dat die binêre lading van jou biblioteek 'n baie beperkende sandboks het: /System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64
Finder Sync Inpropings
Beskrywing: https://theevilbit.github.io/beyond/beyond_0026/ Beskrywing: https://objective-see.org/blog/blog_0x11.html
Nuttig om sandboks te omseil: Nee, omdat jy jou eie program moet uitvoer
TCC omseiling: ???
Plek
'n Spesifieke program
Beskrywing & Uitbuiting
'n Toepassingsvoorbeeld met 'n Finder Sync-uitbreiding kan hier gevind word.
Toepassings kan Finder Sync-uitbreidings
hê. Hierdie uitbreiding sal binne 'n toepassing gaan wat uitgevoer sal word. Verder, vir die uitbreiding om sy kode te kan uitvoer, moet dit onderteken wees met 'n geldige Apple-ontwikkelaarsertifikaat, dit moet gesandboks wees (hoewel ontspanne uitsonderings bygevoeg kan word) en dit moet geregistreer wees met iets soos:
Skermbeveiliging
Writeup: https://theevilbit.github.io/beyond/beyond_0016/ Writeup: https://posts.specterops.io/saving-your-access-d562bf5bf90b
Ligging
/System/Library/Screen Savers
Wortel vereis
Trigger: Kies die skermbeveiliging
/Library/Screen Savers
Wortel vereis
Trigger: Kies die skermbeveiliging
~/Library/Screen Savers
Trigger: Kies die skermbeveiliging
Beskrywing & Uitbuiting
Skep 'n nuwe projek in Xcode en kies die templaat om 'n nuwe Skermbeveiliging te genereer. Voeg dan jou kode daaraan toe, byvoorbeeld die volgende kode om logboeke te genereer.
Bou dit, en kopieer die .saver
bondel na ~/Library/Screen Savers
. Maak dan die Skermbeveiliging GUI oop en as jy net daarop klik, behoort dit 'n hele klomp logboeke te genereer:
Let wel daarop dat omdat binne die toestemmings van die binêre lading van hierdie kode (/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver
) jy com.apple.security.app-sandbox
kan vind, sal jy binne die algemene aansoek-sandbox wees.
Saver kode:
Spotlight Inproppe
skryf op: https://theevilbit.github.io/beyond/beyond_0011/
Nuttig om sander te omseil: 🟠
Maar jy sal in 'n aansoek-sander eindig
TCC omseiling: 🔴
Die sander lyk baie beperk
Plek
~/Library/Spotlight/
Trigger: 'n Nuwe lêer met 'n uitbreiding wat deur die inprop beheer word, word geskep.
/Library/Spotlight/
Trigger: 'n Nuwe lêer met 'n uitbreiding wat de inprop beheer, word geskep.
Wortel nodig
/System/Library/Spotlight/
Trigger: 'n Nuwe lêer met 'n uitbreiding wat deur die inprop beheer word, word geskep.
Wortel nodig
Some.app/Contents/Library/Spotlight/
Trigger: 'n Nuwe lêer met 'n uitbreiding wat deur die inprop beheer word, word geskep.
Nuwe aansoek nodig
Beskrywing & Uitbuiting
Spotlight is macOS se ingeboude soekfunksie, ontwerp om gebruikers vinnige en omvattende toegang tot data op hul rekenaars te bied. Om hierdie vinnige soekvermoë te fasiliteer, handhaaf Spotlight 'n eiendomlike databasis en skep 'n indeks deur meeste lêers te ontleden, wat vinnige soektogte deur beide lêernaam en hul inhoud moontlik maak.
Die onderliggende meganisme van Spotlight behels 'n sentrale proses genaamd 'mds', wat staan vir 'metadata bediener'. Hierdie proses orkestreer die hele Spotlight-diens. Ter aanvulling hierop is daar verskeie 'mdworker' duiwels wat 'n verskeidenheid instandhoudingstake uitvoer, soos die indeksering van verskillende lêertipes (ps -ef | grep mdworker
). Hierdie take word moontlik gemaak deur Spotlight-invoerder-inproppe, of ".mdimporter bundels", wat Spotlight in staat stel om inhoud oor 'n uiteenlopende reeks lêerformate te verstaan en te indekseer.
Die inproppe of .mdimporter
bundels is geleë op die vooraf genoemde plekke en as 'n nuwe bundel verskyn, word dit binne minute gelaai (geen diens herlaaiing nodig nie). Hierdie bundels moet aandui watter lêertipe en uitbreidings hulle kan bestuur, op hierdie manier sal Spotlight hulle gebruik wanneer 'n nuwe lêer met die aangeduide uitbreiding geskep word.
Dit is moontlik om alle die mdimporters
wat gelaai is, te vind deur te hardloop:
En byvoorbeeld /Library/Spotlight/iBooksAuthor.mdimporter word gebruik om hierdie tipe lêers te ontled (uitbreidings .iba
en .book
onder andere):
As jy die Plist van ander mdimporter
nagaan, mag jy nie die inskrywing UTTypeConformsTo
vind nie. Dit is omdat dit 'n ingeboude Uniform Type Identifiers (UTI) is en dit nie nodig is om uitbreidings te spesifiseer nie.
Verder, neem Stelselverstekplugins altyd voorrang, so 'n aanvaller kan slegs lêers benader wat nie andersins deur Apple se eie mdimporters
geïndekseer word nie.
Om jou eie invoerder te skep, kan jy met hierdie projek begin: https://github.com/megrimm/pd-spotlight-importer en dan die naam verander, die CFBundleDocumentTypes
verander en UTImportedTypeDeclarations
byvoeg sodat dit die uitbreiding ondersteun wat jy wil ondersteun en reflekteer dit in schema.xml
.
Verander dan die kode van die funksie GetMetadataForFile
om jou lading uit te voer wanneer 'n lêer met die verwerkte uitbreiding geskep word.
Laastens bou en kopieer jou nuwe .mdimporter
na een van die vorige liggings en jy kan nagaan wanneer dit gelaai word deur die logs te monitor of deur mdimport -L.
te kontroleer.
Voorkeurpaneel
Dit lyk nie of dit nog werk nie.
Verslag: https://theevilbit.github.io/beyond/beyond_0009/
Ligging
/System/Library/PreferencePanes
/Library/PreferencePanes
~/Library/PreferencePanes
Beskrywing
Dit lyk nie of dit nog werk nie.
Root Sandboks Omseiling
Hier kan jy beginliggings vind wat nuttig is vir sandboks omseiling wat jou in staat stel om eenvoudig iets uit te voer deur dit in 'n lêer te skryf terwyl jy root is en/of ander vreemde toestande benodig.
Periodiek
Verslag: https://theevilbit.github.io/beyond/beyond_0019/
Ligging
/etc/periodic/daily
,/etc/periodic/weekly
,/etc/periodic/monthly
,/usr/local/etc/periodic
Root benodig
Trigger: Wanneer die tyd aanbreek
/etc/daily.local
,/etc/weekly.local
of/etc/monthly.local
Root benodig
Trigger: Wanneer die tyd aanbreek
Beskrywing & Uitbuiting
Die periodieke skripte (/etc/periodic
) word uitgevoer as gevolg van die aanvangsdemone wat gekonfigureer is in /System/Library/LaunchDaemons/com.apple.periodic*
. Let daarop dat skripte wat in /etc/periodic/
gestoor word, as die eienaar van die lêer uitgevoer word, so dit sal nie werk vir 'n potensiële voorregskalering nie.
Daar is ander periodieke skripte wat uitgevoer sal word soos aangedui in /etc/defaults/periodic.conf
:
Indien jy enige van die lêers /etc/daily.local
, /etc/weekly.local
of /etc/monthly.local
kan skryf, sal dit vroeër of later uitgevoer word.
Let daarop dat die periodieke skrip uitgevoer sal word as die eienaar van die skrip. As 'n gewone gebruiker die skrip besit, sal dit as daardie gebruiker uitgevoer word (dit kan bevoorregtingaanvalle voorkom).
PAM
Writeup: Linux Hacktricks PAM Writeup: https://theevilbit.github.io/beyond/beyond_0005/
Ligging
Root altyd vereis
Beskrywing & Uitbuiting
Aangesien PAM meer gefokus is op volharding en kwaadwillige sagteware as op maklike uitvoering binne macOS, sal hierdie blog nie 'n gedetailleerde verduideliking gee nie, lees die skrywes om hierdie tegniek beter te verstaan.
Kontroleer PAM-modules met:
'n Volharding/privilege-escalation tegniek wat PAM misbruik is so maklik soos om die module /etc/pam.d/sudo te wysig deur die lyn aan die begin by te voeg:
So dit sal lyk soos iets soos hierdie:
En dus sal enige poging om sudo
te gebruik werk.
Let wel dat hierdie gids beskerm word deur TCC, so dit is baie waarskynlik dat die gebruiker 'n versoek vir toegang sal kry.
Magtigingsinvoegtoepassings
Verslag: https://theevilbit.github.io/beyond/beyond_0028/ Verslag: https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65
Nuttig om sandkas te omseil: 🟠
Maar jy moet 'n root wees en ekstra opsette maak
TCC-omseiling: ???
Ligging
/Library/Security/SecurityAgentPlugins/
Root benodig
Dit is ook nodig om die magtigingsdatabasis te konfigureer om die invoegtoepassing te gebruik
Beskrywing & Uitbuiting
Jy kan 'n magtigingsinvoegtoepassing skep wat uitgevoer sal word wanneer 'n gebruiker aanmeld om volharding te behou. Vir meer inligting oor hoe om een van hierdie invoegtoepassings te skep, kyk na die vorige verslae (en wees versigtig, 'n swak geskrewe een kan jou uitsluit en jy sal jou Mac van herstelmodus moet skoonmaak).
Skuif die bondel na die plek om gelaai te word:
Voeg uiteindelik die reël by om hierdie Inprop te laai:
Die evaluate-mechanisms
sal die toestemmingsraamwerk vertel dat dit 'n eksterne meganisme vir toestemming moet aanroep. Verder sal privileged
dit laat uitvoer word deur root.
Trigger dit met:
En dan moet die personeelgroep sudo-toegang hê (lees /etc/sudoers
om te bevestig).
Man.conf
Writeup: https://theevilbit.github.io/beyond/beyond_0030/
Nuttig om sandboks te omseil: 🟠
Maar jy moet 'n root wees en die gebruiker moet man gebruik
TCC omseiling: 🔴
Ligging
/private/etc/man.conf
Root benodig
/private/etc/man.conf
: Wanneer man gebruik word
Beskrywing & Uitbuiting
Die konfigurasie lêer /private/etc/man.conf
dui die binêre/skripsie aan om te gebruik wanneer man dokumentasie lêers oopmaak. Dus kan die pad na die uitvoerbare lêer gewysig word sodat enige tyd wanneer die gebruiker man gebruik om 'n paar dokumente te lees, 'n agterdeur uitgevoer word.
Byvoorbeeld ingestel in /private/etc/man.conf
:
En skep dan /tmp/view
as:
Apache2
Bespreking: https://theevilbit.github.io/beyond/beyond_0023/
Nuttig om sandboks te omseil: 🟠
Maar jy moet 'n root wees en apache moet loop
TCC omseiling: 🔴
Httpd het nie toestemmings nie
Ligging
/etc/apache2/httpd.conf
Root benodig
Trigger: Wanneer Apache2 begin
Beskrywing & Uitbuiting
Jy kan in /etc/apache2/httpd.conf
aandui om 'n module te laai deur 'n lyn by te voeg soos:
Op hierdie manier sal jou saamgestelde modules deur Apache gelaai word. Die enigste ding is dat jy dit óf met 'n geldige Apple-sertifikaat moet teken, óf jy moet 'n nuwe vertroude sertifikaat in die stelsel byvoeg en dit daarmee teken.
Dan, indien nodig, om seker te maak dat die bediener gestart sal word, kan jy uitvoer:
Kodevoorbeeld vir die Dylb:
BSM ouditraamwerk
Writeup: https://theevilbit.github.io/beyond/beyond_0031/
Nuttig om sander te omseil: 🟠
Maar jy moet 'n hoofgebruiker wees, auditd moet loop en 'n waarskuwing veroorsaak
TCC omseiling: 🔴
Plek
/etc/security/audit_warn
Root benodig
Trigger: Wanneer auditd 'n waarskuwing opspoor
Beskrywing & Uitbuiting
Telkens wanneer auditd 'n waarskuwing opspoor, word die skripsie /etc/security/audit_warn
uitgevoer. Jy kan dus jou lading daarbyvoeg.
Begin van Items
Dit is verouderd, so niks behoort in daardie gids gevind te word nie.
Die StartupItem is 'n gids wat binne of /Library/StartupItems/
of /System/Library/StartupItems/
geplaas moet word. Nadat hierdie gids gevestig is, moet dit twee spesifieke lêers insluit:
'n rc-skrip: 'n skulpskrip wat by aanvang uitgevoer word.
'n plist-lêer, spesifiek genoem
StartupParameters.plist
, wat verskeie opsetinstellings bevat.
Verseker dat beide die rc-skrip en die StartupParameters.plist
-lêer korrek binne die StartupItem-gids geplaas word sodat die aanvangsproses hulle kan herken en gebruik.
superservicename
Hierdie diens is 'n baie belangrike diens wat outomaties begin wanneer die stelsel opgestart word. Dit is noodsaaklik om hierdie diens te monitor en te verseker dat dit slegs die nodige toegang en funksionaliteit het om te voorkom dat dit misbruik word deur aanvallers.
emond
Ek kan hierdie komponent nie in my macOS vind nie, vir meer inligting kyk na die skryfstuk
Skryfstuk: https://theevilbit.github.io/beyond/beyond_0023/
Deur Apple bekendgestel, emond is 'n loggingsmeganisme wat lyk of dit onderontwikkel of moontlik verlate is, maar dit bly toeganklik. Alhoewel dit nie besonders voordelig is vir 'n Mac-administrateur nie, kan hierdie obskure diens as 'n subtiel volhardingsmetode vir dreigingsakteurs dien, moontlik onopgemerk deur die meeste macOS-administrateurs.
Vir diegene wat bewus is van sy bestaan, is dit maklik om enige skadelike gebruik van emond te identifiseer. Die stelsel se LaunchDaemon vir hierdie diens soek skripte om in 'n enkele gids uit te voer. Om dit te inspekteer, kan die volgende bevel gebruik word:
XQuartz
Writeup: https://theevilbit.github.io/beyond/beyond_0018/
Plek
/opt/X11/etc/X11/xinit/privileged_startx.d
Wortel nodig
Trigger: Met XQuartz
Beskrywing & Uitbuiting
XQuartz is nie meer geïnstalleer in macOS nie, soek vir meer inligting in die writeup.
kext
Dit is so ingewikkeld om kext selfs as root te installeer dat ek dit nie sal oorweeg om te ontsnap uit sandbokse of selfs vir volharding nie (tensy jy 'n uitbuiting het)
Plek
Om 'n KEXT as 'n aanvangsitem te installeer, moet dit geïnstalleer word in een van die volgende plekke:
/System/Library/Extensions
KEXT-lêers wat in die OS X-bedryfstelsel ingebou is.
/Library/Extensions
KEXT-lêers wat deur 3de party sagteware geïnstalleer is
Jy kan tans gelaai kext-lêers lys met:
Vir meer inligting oor kernel-uitbreidings sien hierdie afdeling.
amstoold
Verslag: https://theevilbit.github.io/beyond/beyond_0029/
Ligging
/usr/local/bin/amstoold
Wortel vereis
Beskrywing & Uitbuiting
Dit blykbaar dat die plist
van /System/Library/LaunchAgents/com.apple.amstoold.plist
hierdie binêre gebruik het terwyl dit 'n XPC-diens blootgestel het... die ding is dat die binêre nie bestaan het nie, so jy kon iets daar plaas en wanneer die XPC-diens geroep word, sal jou binêre geroep word.
Ek kan dit nie meer in my macOS vind nie.
xsanctl
Verslag: https://theevilbit.github.io/beyond/beyond_0015/
Ligging
/Library/Preferences/Xsan/.xsanrc
Wortel vereis
Trigger: Wanneer die diens uitgevoer word (skaars)
Beskrywing & uitbuiting
Dit blyk nie baie algemeen te wees om hierdie skrip uit te voer nie en ek kon dit selfs nie in my macOS vind nie, so as jy meer inligting wil hê, kyk na die verslag.
/etc/rc.common
Dit werk nie in moderne MacOS-weergawes nie
Dit is ook moontlik om hier opdragte te plaas wat by aanvang uitgevoer sal word. Voorbeeld van 'n gewone rc.common-skrip:
Aanhoudingstegnieke en -gereedskap
Last updated