macOS Auto Start
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Sehemu hii inategemea sana mfululizo wa blogu Beyond the good ol' LaunchAgents, lengo ni kuongeza Mahali zaidi pa Kuanzisha (ikiwa inawezekana), kuonyesha mbinu zipi bado zinafanya kazi leo na toleo jipya la macOS (13.4) na kubainisha idhini zinazohitajika.
Hapa unaweza kupata mahali pa kuanzisha yanayofaa kwa sandbox bypass ambayo inakuwezesha kutekeleza kitu kwa urahisi kwa kuliandika kwenye faili na kusubiri kwa kitendo cha kawaida, muda ulioamuliwa au kitendo ambacho unaweza kawaida kufanya kutoka ndani ya sandbox bila kuhitaji ruhusa za mzizi.
/Library/LaunchAgents
Trigger: Reboot
Inahitaji mzizi
/Library/LaunchDaemons
Trigger: Reboot
Inahitaji mzizi
/System/Library/LaunchAgents
Trigger: Reboot
Inahitaji mzizi
/System/Library/LaunchDaemons
Trigger: Reboot
Inahitaji mzizi
~/Library/LaunchAgents
Trigger: Relog-in
~/Library/LaunchDemons
Trigger: Relog-in
Kama ukweli wa kuvutia, launchd
ina orodha ya mali iliyojumuishwa katika sehemu ya Mach-o __Text.__config
ambayo ina huduma nyingine maarufu ambazo launchd inapaswa kuanzisha. Zaidi ya hayo, huduma hizi zinaweza kuwa na RequireSuccess
, RequireRun
na RebootOnSuccess
ambayo inamaanisha kwamba lazima zitekelezwe na kukamilika kwa mafanikio.
Kwa kweli, haiwezi kubadilishwa kwa sababu ya saini ya msimbo.
launchd
ni mchakato wa kwanza unaotekelezwa na OX S kernel wakati wa kuanzisha na wa mwisho kumaliza wakati wa kuzima. Inapaswa kuwa na PID 1 kila wakati. Mchakato huu uta soma na kutekeleza mipangilio iliyoonyeshwa katika ASEP plists katika:
/Library/LaunchAgents
: Wakala wa mtumiaji waliowekwa na msimamizi
/Library/LaunchDaemons
: Daemons za mfumo mzima zilizowekwa na msimamizi
/System/Library/LaunchAgents
: Wakala wa mtumiaji waliotolewa na Apple.
/System/Library/LaunchDaemons
: Daemons za mfumo mzima zilizotolewa na Apple.
Wakati mtumiaji anapoingia, plists zilizoko katika /Users/$USER/Library/LaunchAgents
na /Users/$USER/Library/LaunchDemons
zinaanzishwa kwa idhini za watumiaji walioingia.
Tofauti kuu kati ya wakala na daemons ni kwamba wakala huwekwa wakati mtumiaji anaingia na daemons huwekwa wakati wa kuanzisha mfumo (kama kuna huduma kama ssh ambazo zinahitaji kutekelezwa kabla ya mtumiaji yeyote kuingia kwenye mfumo). Pia wakala wanaweza kutumia GUI wakati daemons zinahitaji kukimbia katika hali ya nyuma.
Kuna kesi ambapo wakala anahitaji kutekelezwa kabla ya mtumiaji kuingia, hawa huitwa PreLoginAgents. Kwa mfano, hii ni muhimu kutoa teknolojia ya msaada wakati wa kuingia. Wanaweza kupatikana pia katika /Library/LaunchAgents
(angalia hapa mfano).
Faili mpya za usanidi za Daemons au Agents zita pakuliwa baada ya kuanzisha tena au kutumia launchctl load <target.plist>
Pia inawezekana kupakua faili za .plist bila kiambishi hicho kwa kutumia launchctl -F <file>
(hata hivyo hizo faili za plist hazitapakiwa kiotomatiki baada ya kuanzisha tena).
Pia inawezekana kufuta kwa kutumia launchctl unload <target.plist>
(mchakato unaoonyeshwa na hiyo utaondolewa),
Ili kuhakikisha kwamba hakuna kitu (kama vile kubadilisha) kinachozuia Agent au Daemon kufanya kazi endesha: sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist
Orodhesha wote wakala na daemons walio pakuliwa na mtumiaji wa sasa:
Ikiwa plist inamilikiwa na mtumiaji, hata ikiwa iko katika folda za mfumo wa daemon, kazi itatekelezwa kama mtumiaji na si kama root. Hii inaweza kuzuia baadhi ya mashambulizi ya kupandisha mamlaka.
launchd
ni mchakato wa kwanza wa hali ya mtumiaji ambao huanzishwa kutoka kernel. Kuanzishwa kwa mchakato lazima kuwa na mafanikio na hakuwezi kutoka au kuanguka. Hata hivyo, imekingwa dhidi ya baadhi ya ishara za kuua.
Moja ya mambo ya kwanza launchd
itakayofanya ni kuanzisha daemons zote kama:
Daemons za Timer zinazotegemea wakati wa kutekelezwa:
atd (com.apple.atrun.plist
): Ina StartInterval
ya dakika 30
crond (com.apple.systemstats.daily.plist
): Ina StartCalendarInterval
kuanzisha saa 00:15
Daemons za Mtandao kama:
org.cups.cups-lpd
: Inasikiliza katika TCP (SockType: stream
) na SockServiceName: printer
SockServiceName lazima iwe bandari au huduma kutoka /etc/services
com.apple.xscertd.plist
: Inasikiliza kwenye TCP katika bandari 1640
Daemons za Njia ambazo zinafanywa wakati njia maalum inabadilika:
com.apple.postfix.master
: Inakagua njia /etc/postfix/aliases
Daemons za Arifa za IOKit:
com.apple.xartstorageremoted
: "com.apple.iokit.matching" => { "com.apple.device-attach" => { "IOMatchLaunchStream" => 1 ...
Bandari ya Mach:
com.apple.xscertd-helper.plist
: Inaonyesha katika kiingilio cha MachServices
jina com.apple.xscertd.helper
UserEventAgent:
Hii ni tofauti na ile ya awali. Inafanya launchd kuanzisha programu kama majibu ya tukio maalum. Hata hivyo, katika kesi hii, binary kuu inayohusika si launchd
bali /usr/libexec/UserEventAgent
. Inapakia plugins kutoka folda iliyozuiwa ya SIP /System/Library/UserEventPlugins/ ambapo kila plugin inaonyesha mchakato wake wa kuanzisha katika ufunguo wa XPCEventModuleInitializer
au, katika kesi ya plugins za zamani, katika kamusi ya CFPluginFactories
chini ya ufunguo FB86416D-6164-2070-726F-70735C216EC0
wa Info.plist
yake.
Andiko: https://theevilbit.github.io/beyond/beyond_0001/ Andiko (xterm): https://theevilbit.github.io/beyond/beyond_0018/
Inafaida kubypass sandbox: ✅
TCC Bypass: ✅
Lakini unahitaji kupata programu yenye TCC bypass inayotekeleza shell inayopakia faili hizi
~/.zshrc
, ~/.zlogin
, ~/.zshenv.zwc
, ~/.zshenv
, ~/.zprofile
Kichocheo: Fungua terminal na zsh
/etc/zshenv
, /etc/zprofile
, /etc/zshrc
, /etc/zlogin
Kichocheo: Fungua terminal na zsh
Inahitajika root
~/.zlogout
Kichocheo: Toka kwenye terminal na zsh
/etc/zlogout
Kichocheo: Toka kwenye terminal na zsh
Inahitajika root
Huenda kuna zaidi katika: man zsh
~/.bashrc
Kichocheo: Fungua terminal na bash
/etc/profile
(haikufanya kazi)
~/.profile
(haikufanya kazi)
~/.xinitrc
, ~/.xserverrc
, /opt/X11/etc/X11/xinit/xinitrc.d/
Kichocheo: Inatarajiwa kuanzisha na xterm, lakini haijasanidiwa na hata baada ya kusanidiwa kosa hili linatolewa: xterm: DISPLAY is not set
Wakati wa kuanzisha mazingira ya shell kama zsh
au bash
, faili fulani za kuanzisha zinafanywa. macOS kwa sasa inatumia /bin/zsh
kama shell ya default. Shell hii inapatikana moja kwa moja wakati programu ya Terminal inapoanzishwa au wakati kifaa kinapofikiwa kupitia SSH. Ingawa bash
na sh
pia zipo katika macOS, zinahitaji kuitwa wazi ili kutumika.
Ukurasa wa mtu wa zsh, ambao tunaweza kusoma kwa man zsh
una maelezo marefu ya faili za kuanzisha.
Kuweka mipangilio ya unyakuzi na kuingia na kutoka au hata kuanzisha upya hakufanikiwa kwangu kutekeleza programu hiyo. (Programu hiyo haikuwa ikitekelezwa, labda inahitaji kuwa inafanya kazi wakati hatua hizi zinapofanywa)
Writeup: https://theevilbit.github.io/beyond/beyond_0021/
~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
Trigger: Anzisha upya kufungua programu
Programu zote za kufungua tena ziko ndani ya plist ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist
Hivyo, ili kufanya programu za kufungua tena zianzishe yako, unahitaji tu kuongeza programu yako kwenye orodha.
UUID inaweza kupatikana kwa kuorodhesha hiyo directory au kwa ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'
Ili kuangalia programu ambazo zitafunguliwa tena unaweza kufanya:
Ili kuongeza programu kwenye orodha hii unaweza kutumia:
Inatumika kubypass sandbox: ✅
TCC bypass: ✅
Terminal inatumika kuwa na ruhusa za FDA za mtumiaji anayetumia
~/Library/Preferences/com.apple.Terminal.plist
Trigger: Fungua Terminal
Katika ~/Library/Preferences
zinahifadhiwa mapendeleo ya mtumiaji katika Programu. Baadhi ya mapendeleo haya yanaweza kuwa na usanidi wa kutekeleza programu/scripts nyingine.
Kwa mfano, Terminal inaweza kutekeleza amri katika Startup:
Usanidi huu unajitokeza katika faili ~/Library/Preferences/com.apple.Terminal.plist
kama ifuatavyo:
Hivyo, ikiwa plist ya mapendeleo ya terminal katika mfumo inaweza kuandikwa upya, basi open
kazi inaweza kutumika kufungua terminal na amri hiyo itatekelezwa.
Unaweza kuongeza hii kutoka kwa cli na:
Inasaidia kupita sandbox: ✅
Kupita TCC: ✅
Matumizi ya Terminal yana FDA ruhusa za mtumiaji anayezitumia
Popote
Trigger: Fungua Terminal
Ikiwa unaunda .terminal
script na kufungua, programu ya Terminal itaitwa moja kwa moja kutekeleza amri zilizoonyeshwa humo. Ikiwa programu ya Terminal ina ruhusa maalum (kama TCC), amri yako itatekelezwa kwa ruhusa hizo maalum.
Jaribu na:
You could also use the extensions .command
, .tool
, with regular shell scripts content and they will be also opened by Terminal.
Ikiwa terminal ina Full Disk Access itakuwa na uwezo wa kukamilisha hiyo hatua (kumbuka kwamba amri iliyotekelezwa itaonekana kwenye dirisha la terminal).
Writeup: https://theevilbit.github.io/beyond/beyond_0013/ Writeup: https://posts.specterops.io/audio-unit-plug-ins-896d3434a882
/Library/Audio/Plug-Ins/HAL
Inahitaji root
Trigger: Restart coreaudiod au kompyuta
/Library/Audio/Plug-ins/Components
Inahitaji root
Trigger: Restart coreaudiod au kompyuta
~/Library/Audio/Plug-ins/Components
Trigger: Restart coreaudiod au kompyuta
/System/Library/Components
Inahitaji root
Trigger: Restart coreaudiod au kompyuta
Kulingana na maandiko ya awali inawezekana kukusanya baadhi ya plugins za sauti na kuzipakia.
Writeup: https://theevilbit.github.io/beyond/beyond_0028/
/System/Library/QuickLook
/Library/QuickLook
~/Library/QuickLook
/Applications/AppNameHere/Contents/Library/QuickLook/
~/Applications/AppNameHere/Contents/Library/QuickLook/
QuickLook plugins zinaweza kutekelezwa unapofanya kuchochea muonekano wa faili (bonyeza nafasi na faili iliyo chaguliwa kwenye Finder) na plugin inayounga mkono aina hiyo ya faili imewekwa.
Inawezekana kukusanya plugin yako ya QuickLook, kuiweka katika moja ya maeneo ya awali ili kuipakia na kisha kwenda kwenye faili inayounga mkono na kubonyeza nafasi ili kuichochea.
Hii haikufanya kazi kwangu, wala kwa LoginHook ya mtumiaji wala LogoutHook ya root
Writeup: https://theevilbit.github.io/beyond/beyond_0022/
Unahitaji kuwa na uwezo wa kutekeleza kitu kama defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh
Lo
kated katika ~/Library/Preferences/com.apple.loginwindow.plist
Zimeondolewa lakini zinaweza kutumika kutekeleza amri wakati mtumiaji anapoingia.
Hali hii inahifadhiwa katika /Users/$USER/Library/Preferences/com.apple.loginwindow.plist
Ili kuifuta:
The root user one is stored in /private/var/root/Library/Preferences/com.apple.loginwindow.plist
Hapa unaweza kupata maeneo ya kuanzisha yanayofaa kwa sandbox bypass ambayo inakuwezesha kutekeleza kitu kwa kuliandika kwenye faili na kutegemea hali zisizo za kawaida kama programu maalum zilizowekwa, hatua za mtumiaji "zisizo za kawaida" au mazingira.
Writeup: https://theevilbit.github.io/beyond/beyond_0004/
Inafaida kwa bypass sandbox: ✅
Hata hivyo, unahitaji kuwa na uwezo wa kutekeleza crontab
binary
Au uwe root
TCC bypass: 🔴
/usr/lib/cron/tabs/
, /private/var/at/tabs
, /private/var/at/jobs
, /etc/periodic/
Root inahitajika kwa ufikiaji wa moja kwa moja wa kuandika. Hakuna root inahitajika ikiwa unaweza kutekeleza crontab <file>
Trigger: Inategemea kazi ya cron
Orodhesha kazi za cron za mtumiaji wa sasa na:
You can also see all the cron jobs of the users in /usr/lib/cron/tabs/
and /var/at/tabs/
(needs root).
Katika MacOS, folda kadhaa zinazotekeleza skripti kwa mara fulani zinaweza kupatikana katika:
Hapo unaweza kupata cron jobs za kawaida, at jobs (hazitumiki sana) na periodic jobs (zinatumika hasa kwa kusafisha faili za muda). Periodic za kila siku zinaweza kutekelezwa kwa mfano na: periodic daily
.
Ili kuongeza user cronjob programatically inawezekana kutumia:
Writeup: https://theevilbit.github.io/beyond/beyond_0002/
~/Library/Application Support/iTerm2/Scripts/AutoLaunch
Trigger: Fungua iTerm
~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
Trigger: Fungua iTerm
~/Library/Preferences/com.googlecode.iterm2.plist
Trigger: Fungua iTerm
Scripts zilizohifadhiwa katika ~/Library/Application Support/iTerm2/Scripts/AutoLaunch
zitatekelezwa. Kwa mfano:
au:
Skiripti ~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt
pia litatekelezwa:
Mipangilio ya iTerm2 iliyoko ~/Library/Preferences/com.googlecode.iterm2.plist
inaweza kuonyesha amri ya kutekeleza wakati terminal ya iTerm2 inafunguliwa.
Mipangilio hii inaweza kuwekewa mipangilio katika mipangilio ya iTerm2:
Na amri inaonyeshwa katika mipangilio:
Unaweza kuweka amri ya kutekeleza na:
Inawezekana kubwa kuna njia nyingine za kutumia vibaya mipangilio ya iTerm2 ili kutekeleza amri zisizo na mipaka.
Writeup: https://theevilbit.github.io/beyond/beyond_0007/
~/Library/Application\ Support/xbar/plugins/
Kichocheo: Mara xbar inapotekelezwa
Ikiwa programu maarufu xbar imewekwa, inawezekana kuandika script ya shell katika ~/Library/Application\ Support/xbar/plugins/
ambayo itatekelezwa wakati xbar inapoanzishwa:
Writeup: https://theevilbit.github.io/beyond/beyond_0008/
Inatumika kupita sandbox: ✅
Lakini Hammerspoon lazima iwe imewekwa
TCC bypass: ✅
Inahitaji ruhusa za Accessibility
~/.hammerspoon/init.lua
Trigger: Mara Hammerspoon inapotekelezwa
Hammerspoon inatumika kama jukwaa la automatisering kwa macOS, ikitumia LUA scripting language kwa shughuli zake. Kwa hakika, inasaidia uunganisho wa msimbo kamili wa AppleScript na utekelezaji wa scripts za shell, ikiongeza uwezo wake wa scripting kwa kiasi kikubwa.
App inatafuta faili moja, ~/.hammerspoon/init.lua
, na inapozinduliwa script itatekelezwa.
Inatumika kubypass sandbox: ✅
Lakini BetterTouchTool lazima iwe imewekwa
TCC bypass: ✅
Inahitaji ruhusa za Automation-Shortcuts na Accessibility
~/Library/Application Support/BetterTouchTool/*
Chombo hiki kinaruhusu kuashiria programu au scripts za kutekeleza wakati baadhi ya shortcuts zinapobanwa. Mshambuliaji anaweza kuweza kuunda shortcut na hatua za kutekeleza katika database ili kufanya itekeleze msimbo wa kiholela (shortcut inaweza kuwa kubonyeza tu funguo).
Inatumika kubypass sandbox: ✅
Lakini Alfred lazima iwe imewekwa
TCC bypass: ✅
Inahitaji ruhusa za Automation, Accessibility na hata Full-Disk access
???
Inaruhusu kuunda workflows ambazo zinaweza kutekeleza msimbo wakati masharti fulani yanatimizwa. Inawezekana kwa mshambuliaji kuunda faili ya workflow na kumfanya Alfred aifanye (inahitajika kulipa toleo la premium ili kutumia workflows).
Writeup: https://theevilbit.github.io/beyond/beyond_0006/
Inatumika kubypass sandbox: ✅
Lakini ssh inahitaji kuwezeshwa na kutumika
TCC bypass: ✅
SSH inahitaji kuwa na FDA access
~/.ssh/rc
Trigger: Ingia kupitia ssh
/etc/ssh/sshrc
Inahitaji root
Trigger: Ingia kupitia ssh
Kuwezesha ssh kunahitaji Full Disk Access:
Kwa kawaida, isipokuwa PermitUserRC no
katika /etc/ssh/sshd_config
, wakati mtumiaji anapoingia kupitia SSH skripti /etc/ssh/sshrc
na ~/.ssh/rc
zitatekelezwa.
Andiko: https://theevilbit.github.io/beyond/beyond_0003/
~/Library/Application Support/com.apple.backgroundtaskmanagementagent
Kichocheo: Kuingia
Payload ya ukatili inahifadhiwa ikitumia osascript
/var/db/com.apple.xpc.launchd/loginitems.501.plist
Kichocheo: Kuingia
Mzizi unahitajika
Katika Mipangilio ya Mfumo -> Watumiaji & Makundi -> Vitu vya Kuingia unaweza kupata vitu vitakavyotekelezwa wakati mtumiaji anapoingia. Inawezekana kuorodhesha, kuongeza na kuondoa kutoka kwa mstari wa amri:
These items are stored in the file ~/Library/Application Support/com.apple.backgroundtaskmanagementagent
Vitu vya kuingia vinaweza pia kuonyeshwa kwa kutumia API SMLoginItemSetEnabled ambayo itahifadhi usanidi katika /var/db/com.apple.xpc.launchd/loginitems.501.plist
(Tazama sehemu ya awali kuhusu Vitu vya Kuingia, hii ni nyongeza)
Ikiwa unahifadhi faili ya ZIP kama Kitu cha Kuingia, Archive Utility
itafungua na ikiwa zip ilikuwa kwa mfano imehifadhiwa katika ~/Library
na ilikuwa na Folda LaunchAgents/file.plist
yenye backdoor, folda hiyo itaundwa (sio kwa kawaida) na plist itaongezwa ili wakati mtumiaji atakaporudi kuingia tena, backdoor iliyoonyeshwa katika plist itatekelezwa.
Chaguo lingine lingekuwa kuunda faili .bash_profile
na .zshenv
ndani ya HOME ya mtumiaji ili ikiwa folda ya LaunchAgents tayari ipo, mbinu hii bado itafanya kazi.
Writeup: https://theevilbit.github.io/beyond/beyond_0014/
Unahitaji kutekeleza at
na lazima iwe imewezeshwa
at
kazi zimeundwa kwa ajili ya kuandaa kazi za mara moja kutekelezwa kwa nyakati fulani. Tofauti na kazi za cron, kazi za at
zinaondolewa kiotomatiki baada ya kutekelezwa. Ni muhimu kutambua kwamba kazi hizi ni za kudumu wakati wa upya wa mfumo, na kuziweka kama wasiwasi wa usalama chini ya hali fulani.
Kwa kawaida zime zimezuiliwa lakini mtumiaji root anaweza kuziwezesha hizi kwa:
Hii itaunda faili ndani ya saa 1:
Angalia foleni ya kazi kwa kutumia atq:
Juu tunaweza kuona kazi mbili zilizopangwa. Tunaweza kuchapisha maelezo ya kazi kwa kutumia at -c JOBNUMBER
Ikiwa kazi za AT hazijawashwa, kazi zilizoundwa hazitatekelezwa.
The job files can be found at /private/var/at/jobs/
The filename contains the queue, the job number, and the time it’s scheduled to run. For example let’s take a loot at a0001a019bdcd2
.
a
- hii ni foleni
0001a
- nambari ya kazi katika hex, 0x1a = 26
019bdcd2
- muda katika hex. Inawakilisha dakika zilizopita tangu epoch. 0x019bdcd2
ni 26991826
katika desimali. Ikiwa tutazidisha kwa 60 tunapata 1619509560
, ambayo ni GMT: 2021. Aprili 27., Jumanne 7:46:00
.
If we print the job file, we find that it contains the same information we got using at -c
.
Writeup: https://theevilbit.github.io/beyond/beyond_0024/ Writeup: https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d
Inatumika kupita sandbox: ✅
Lakini unahitaji kuwa na uwezo wa kuita osascript
na hoja ili kuwasiliana na System Events
ili uweze kuunda Folder Actions
TCC bypass: 🟠
Ina ruhusa za msingi za TCC kama Desktop, Documents na Downloads
/Library/Scripts/Folder Action Scripts
Msingi unahitajika
Trigger: Ufikiaji wa folda iliyoainishwa
~/Library/Scripts/Folder Action Scripts
Trigger: Ufikiaji wa folda iliyoainishwa
Folder Actions ni scripts zinazozinduliwa kiotomatiki na mabadiliko katika folda kama kuongeza, kuondoa vitu, au vitendo vingine kama kufungua au kubadilisha ukubwa wa dirisha la folda. Vitendo hivi vinaweza kutumika kwa kazi mbalimbali, na vinaweza kuzinduliwa kwa njia tofauti kama kutumia UI ya Finder au amri za terminal.
Ili kuanzisha Folder Actions, una chaguzi kama:
Kuunda mchakato wa Folder Action na Automator na kuisakinisha kama huduma.
Kuunganisha script kwa mikono kupitia Folder Actions Setup katika menyu ya muktadha ya folda.
Kutumia OSAScript kutuma ujumbe wa Apple Event kwa System Events.app
kwa kuanzisha Folder Action kwa njia ya programu.
Njia hii ni muhimu sana kwa kuingiza kitendo ndani ya mfumo, ikitoa kiwango cha kudumu.
The following script is an example of what can be executed by a Folder Action:
Ili kufanya script hapo juu iweze kutumika na Folder Actions, itengeneze kwa kutumia:
Baada ya script kukusanywa, weka Vitendo vya Folda kwa kutekeleza script iliyo hapa chini. Script hii itawawezesha Vitendo vya Folda kwa ujumla na kuunganisha kwa maalum script iliyokusanywa hapo awali kwenye folda ya Desktop.
Kimbia skripti ya usanidi na:
Hii ndiyo njia ya kutekeleza uthabiti huu kupitia GUI:
Hii ndiyo script itakayotekelezwa:
Ihamashe kwa: osacompile -l JavaScript -o folder.scpt source.js
Hamisha kwenda:
Kisha, fungua programu ya Folder Actions Setup
, chagua folda unayotaka kufuatilia na uchague katika kesi yako folder.scpt
(katika kesi yangu niliiita output2.scp):
Sasa, ukifungua folda hiyo na Finder, skripti yako itatekelezwa.
Usanidi huu ulihifadhiwa katika plist iliyoko ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist
katika muundo wa base64.
Sasa, hebu jaribu kuandaa kudumu hii bila ufikiaji wa GUI:
Nakili ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist
hadi /tmp
ili kuifanya kuwa nakala ya akiba:
cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp
Ondoa Folder Actions ulizoweka hivi karibuni:
Sasa kwamba tuna mazingira tupu
Nakili faili ya akiba: cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/
Fungua Folder Actions Setup.app ili kutumia usanidi huu: open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"
Na hii haikufanya kazi kwangu, lakini hizo ndizo maelekezo kutoka kwa andiko:(
Andiko: https://theevilbit.github.io/beyond/beyond_0027/
Inasaidia kupita sandbox: ✅
Lakini unahitaji kuwa na programu mbaya iliyosakinishwa ndani ya mfumo
TCC bypass: 🔴
~/Library/Preferences/com.apple.dock.plist
Kichocheo: Wakati mtumiaji anabofya kwenye programu ndani ya dock
Programu zote zinazotokea katika Dock zimeainishwa ndani ya plist: ~/Library/Preferences/com.apple.dock.plist
Inawezekana kuongeza programu kwa kutumia tu:
Kwa kutumia baadhi ya social engineering unaweza kujifanya kwa mfano Google Chrome ndani ya dock na kwa kweli kutekeleza script yako mwenyewe:
Writeup: https://theevilbit.github.io/beyond/beyond_0017
Inatumika kupita sandbox: 🟠
Hatua maalum sana inahitaji kutokea
Utamalizika katika sandbox nyingine
TCC bypass: 🔴
/Library/ColorPickers
Msingi unahitajika
Trigger: Tumia mchoro wa rangi
~/Library/ColorPickers
Trigger: Tumia mchoro wa rangi
Tengeneza bundle ya mchoro wa rangi na msimbo wako (unaweza kutumia hii kwa mfano) na ongeza muundaji (kama katika sehemu ya Screen Saver) na nakili bundle hiyo kwenye ~/Library/ColorPickers
.
Kisha, wakati mchoro wa rangi unapoanzishwa, sauti yako inapaswa pia kuwa.
Kumbuka kwamba binary inayopakia maktaba yako ina sandbox yenye vizuizi vikali sana: /System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64
Andiko: https://theevilbit.github.io/beyond/beyond_0026/ Andiko: https://objective-see.org/blog/blog_0x11.html
Inatumika kupita sandbox: Hapana, kwa sababu unahitaji kutekeleza programu yako mwenyewe
TCC bypass: ???
Programu maalum
Mfano wa programu yenye Finder Sync Extension inaweza kupatikana hapa.
Programu zinaweza kuwa na Finder Sync Extensions
. Kupanua hii kutakwenda ndani ya programu ambayo itatekelezwa. Zaidi ya hayo, ili kupanua iweze kutekeleza msimbo wake lazima isainiwe na cheti halali cha mende wa Apple, lazima iwe sandboxed (ingawa visamehe vya kulegeza vinaweza kuongezwa) na lazima iandikishwe na kitu kama:
Writeup: https://theevilbit.github.io/beyond/beyond_0016/ Writeup: https://posts.specterops.io/saving-your-access-d562bf5bf90b
/System/Library/Screen Savers
Root required
Trigger: Chagua screen saver
/Library/Screen Savers
Root required
Trigger: Chagua screen saver
~/Library/Screen Savers
Trigger: Chagua screen saver
Unda mradi mpya katika Xcode na uchague kiolezo ili kuunda Screen Saver mpya. Kisha, ongeza msimbo wako kwake, kwa mfano msimbo ufuatao ili kuunda logs.
Build hiyo, na nakili bundle ya .saver
kwenye ~/Library/Screen Savers
. Kisha, fungua GUI ya Screen Saver na ukibonyeza tu, inapaswa kuunda logs nyingi:
Kumbuka kwamba kwa sababu ndani ya ruhusa za binary inayopakia msimbo huu (/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver
) unaweza kupata com.apple.security.app-sandbox
utakuwa ndani ya sandbox ya programu ya kawaida.
Saver code:
writeup: https://theevilbit.github.io/beyond/beyond_0011/
Inatumika kupita sandbox: 🟠
Lakini utaishia kwenye sandbox ya programu
TCC bypass: 🔴
Sandbox inaonekana kuwa na mipaka sana
~/Library/Spotlight/
Trigger: Faili mpya yenye kiambatisho kinachosimamiwa na plugin ya spotlight inaundwa.
/Library/Spotlight/
Trigger: Faili mpya yenye kiambatisho kinachosimamiwa na plugin ya spotlight inaundwa.
Inahitaji root
/System/Library/Spotlight/
Trigger: Faili mpya yenye kiambatisho kinachosimamiwa na plugin ya spotlight inaundwa.
Inahitaji root
Some.app/Contents/Library/Spotlight/
Trigger: Faili mpya yenye kiambatisho kinachosimamiwa na plugin ya spotlight inaundwa.
Inahitaji programu mpya
Spotlight ni kipengele cha utafutaji kilichojengwa ndani ya macOS, kilichoundwa kutoa watumiaji ufikiaji wa haraka na wa kina kwa data kwenye kompyuta zao. Ili kuwezesha uwezo huu wa utafutaji wa haraka, Spotlight inashikilia hifadhidata ya miliki na kuunda orodha kwa kuchambua faili nyingi, ikiruhusu utafutaji wa haraka kupitia majina ya faili na maudhui yao.
Mekaniki ya msingi ya Spotlight inahusisha mchakato wa kati unaoitwa 'mds', ambayo inasimama kwa 'metadata server'. Mchakato huu unaratibu huduma nzima ya Spotlight. Kuongeza hii, kuna daemon nyingi za 'mdworker' zinazofanya kazi mbalimbali za matengenezo, kama vile kuorodhesha aina tofauti za faili (ps -ef | grep mdworker
). Kazi hizi zinawezekana kupitia plugins za kuagiza Spotlight, au ".mdimporter bundles", ambazo zinamwezesha Spotlight kuelewa na kuorodhesha maudhui katika aina mbalimbali za muundo wa faili.
Plugins au .mdimporter
bundles ziko katika maeneo yaliyotajwa hapo awali na ikiwa bundle mpya itaonekana inachukuliwa ndani ya dakika (hakuna haja ya kuanzisha huduma yoyote upya). Bundles hizi zinahitaji kuonyesha ni aina gani ya faili na viambatisho vinaweza kusimamiwa, kwa njia hii, Spotlight itazitumia wakati faili mpya yenye kiambatisho kilichotajwa inaundwa.
Inawezekana kupata mdimporters
zote zilizopakiwa zinazoendesha:
Na kwa mfano /Library/Spotlight/iBooksAuthor.mdimporter inatumika kuchambua aina hizi za faili (nyongeza .iba
na .book
miongoni mwa zingine):
Ikiwa utaangalia Plist ya mdimporter
nyingine huenda usipate kipengee UTTypeConformsTo
. Hii ni kwa sababu hiyo ni Identifiers za Aina za Msingi (UTI) na haitaji kufafanua nyongeza.
Zaidi ya hayo, plugins za mfumo wa kawaida daima zina kipaumbele, hivyo mshambuliaji anaweza kufikia tu faili ambazo hazijapangwa na mdimporters
za Apple.
Ili kuunda importer yako mwenyewe unaweza kuanzia na mradi huu: https://github.com/megrimm/pd-spotlight-importer kisha badilisha jina, CFBundleDocumentTypes
na ongeza UTImportedTypeDeclarations
ili iweze kusaidia nyongeza unayotaka kusaidia na kuakisi hizo katika schema.xml
.
Kisha badilisha msimbo wa kazi GetMetadataForFile
ili kutekeleza payload yako wakati faili yenye nyongeza iliyoshughulikiwa inaundwa.
Hatimaye jenga na nakili .mdimporter
yako mpya kwenye moja ya maeneo yaliyotajwa hapo awali na unaweza kuangalia ikiwa imepakuliwa ukifuatilia kumbukumbu au kuangalia mdimport -L.
Haionekani kama hii inafanya kazi tena.
Andiko: https://theevilbit.github.io/beyond/beyond_0009/
/System/Library/PreferencePanes
/Library/PreferencePanes
~/Library/PreferencePanes
Haionekani kama hii inafanya kazi tena.
Hapa unaweza kupata maeneo ya kuanzia yanayofaa kwa kupita sandbox ambayo inakuwezesha kutekeleza kitu kwa urahisi kwa kukiandika kwenye faili ukiwa root na/au kuhitaji hali za ajabu.
Andiko: https://theevilbit.github.io/beyond/beyond_0019/
/etc/periodic/daily
, /etc/periodic/weekly
, /etc/periodic/monthly
, /usr/local/etc/periodic
Inahitaji Root
Kichocheo: Wakati wa wakati
/etc/daily.local
, /etc/weekly.local
au /etc/monthly.local
Inahitaji Root
Kichocheo: Wakati wa wakati
Mifumo ya kila wakati (/etc/periodic
) inatekelezwa kwa sababu ya daemons za uzinduzi zilizowekwa katika /System/Library/LaunchDaemons/com.apple.periodic*
. Kumbuka kwamba scripts zilizohifadhiwa katika /etc/periodic/
zina tekelezwa kama mmiliki wa faili, hivyo hii haitafanya kazi kwa ajili ya kupanda kwa haki.
Kuna skripti nyingine za kipindi ambazo zitatekelezwa zinazoonyeshwa katika /etc/defaults/periodic.conf
:
Ikiwa utaweza kuandika yoyote ya faili /etc/daily.local
, /etc/weekly.local
au /etc/monthly.local
itatekelezwa mapema au baadaye.
Kumbuka kwamba skripti ya kila wakati itatekelezwa kama mmiliki wa skripti. Hivyo kama mtumiaji wa kawaida ndiye mmiliki wa skripti, itatekelezwa kama mtumiaji huyo (hii inaweza kuzuia mashambulizi ya kupandisha mamlaka).
Writeup: Linux Hacktricks PAM Writeup: https://theevilbit.github.io/beyond/beyond_0005/
Root daima inahitajika
Kama PAM inazingatia zaidi kuendelea na malware kuliko utekelezaji rahisi ndani ya macOS, blogu hii haitatoa maelezo ya kina, soma writeups ili kuelewa mbinu hii vizuri zaidi.
Angalia moduli za PAM kwa:
Tekniki ya kudumu/kuinua mamlaka inayotumia PAM ni rahisi kama kubadilisha moduli /etc/pam.d/sudo kwa kuongeza mstari huu mwanzoni:
Hivyo itakuwa inafanana na kitu kama hiki:
Na kwa hivyo, jaribio lolote la kutumia sudo
litafanya kazi.
Kumbuka kwamba hii directory inalindwa na TCC hivyo kuna uwezekano mkubwa kwamba mtumiaji atapata ujumbe wa kuomba ruhusa.
Mfano mwingine mzuri ni su, ambapo unaweza kuona kwamba pia inawezekana kutoa vigezo kwa moduli za PAM (na unaweza pia kuweka backdoor kwenye faili hii):
Writeup: https://theevilbit.github.io/beyond/beyond_0028/ Writeup: https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65
Inatumika kupita sandbox: 🟠
Lakini unahitaji kuwa root na kufanya mipangilio ya ziada
TCC bypass: ???
/Library/Security/SecurityAgentPlugins/
Root inahitajika
Pia inahitajika kuunda hifadhidata ya idhini ili kutumia plugin
Unaweza kuunda plugin ya idhini ambayo itatekelezwa wakati mtumiaji anapoingia ili kudumisha kudumu. Kwa maelezo zaidi kuhusu jinsi ya kuunda moja ya hizi plugins angalia maandiko ya awali (na kuwa makini, moja iliyoandikwa vibaya inaweza kukufunga na utahitaji kusafisha mac yako kutoka kwa hali ya urejelezi).
Hamisha kifurushi kwenye eneo litakalopakiwa:
Hatimaye ongeza kanuni ya kupakia Plugin hii:
The evaluate-mechanisms
itasema kwa mfumo waidhinishaji kwamba itahitaji kuita mekanizma ya nje kwa ajili ya idhini. Zaidi ya hayo, privileged
itafanya itekelezwe na root.
Ianzishe kwa:
Na kisha kikundi cha wafanyakazi kinapaswa kuwa na sudo ufikiaji (soma /etc/sudoers
ili kuthibitisha).
Writeup: https://theevilbit.github.io/beyond/beyond_0030/
/private/etc/man.conf
Root inahitajika
/private/etc/man.conf
: Wakati wowote man inapotumika
Faili ya config /private/etc/man.conf
inaonyesha binary/script ya kutumia wakati wa kufungua faili za hati za man. Hivyo, njia ya executable inaweza kubadilishwa ili kila wakati mtumiaji anapotumia man kusoma hati, backdoor inatekelezwa.
Kwa mfano weka katika /private/etc/man.conf
:
Na kisha unda /tmp/view
kama:
Writeup: https://theevilbit.github.io/beyond/beyond_0023/
Inatumika kupita sandbox: 🟠
Lakini unahitaji kuwa root na apache inahitaji kuwa inafanya kazi
TCC bypass: 🔴
Httpd haina entitlements
/etc/apache2/httpd.conf
Root inahitajika
Trigger: Wakati Apache2 inaanza
Unaweza kuashiria katika /etc/apache2/httpd.conf
ili kupakia moduli kwa kuongeza mstari kama:
Kwa njia hii, moduli zako zilizokusanywa zitawekwa na Apache. Jambo pekee ni kwamba unahitaji kuisaini na cheti halali cha Apple, au unahitaji kuongeza cheti kipya kinachotambulika katika mfumo na kuiandika kwa kutumia hicho.
Kisha, ikiwa inahitajika, kuhakikisha kwamba seva itaanza unaweza kutekeleza:
Mfano wa msimbo kwa ajili ya Dylb:
Writeup: https://theevilbit.github.io/beyond/beyond_0031/
Inatumika kupita sandbox: 🟠
Lakini unahitaji kuwa root, auditd iwe inafanya kazi na kusababisha onyo
TCC bypass: 🔴
/etc/security/audit_warn
Root inahitajika
Trigger: Wakati auditd inagundua onyo
Wakati wowote auditd inagundua onyo, script /etc/security/audit_warn
inatekelezwa. Hivyo unaweza kuongeza payload yako juu yake.
You could force a warning with sudo audit -n
.
Hii imepitwa na wakati, hivyo hakuna kitu kinapaswa kupatikana katika hizo directories.
The StartupItem is a directory that should be positioned within either /Library/StartupItems/
or /System/Library/StartupItems/
. Once this directory is established, it must encompass two specific files:
An rc script: A shell script executed at startup.
A plist file, specifically named StartupParameters.plist
, which contains various configuration settings.
Ensure that both the rc script and the StartupParameters.plist
file are correctly placed inside the StartupItem directory for the startup process to recognize and utilize them.
Siwezi kupata sehemu hii katika macOS yangu hivyo kwa maelezo zaidi angalia andiko
Andiko: https://theevilbit.github.io/beyond/beyond_0023/
Iliyoanzishwa na Apple, emond ni mekanizma ya kurekodi ambayo inaonekana kuwa haijakamilika au labda imeachwa, lakini bado inapatikana. Ingawa si ya manufaa sana kwa msimamizi wa Mac, huduma hii isiyo na umaarufu inaweza kutumika kama njia ya kudumu kwa wahalifu wa mtandao, ambayo huenda ikakosa kuonekana na wasimamizi wengi wa macOS.
Kwa wale wanaojua kuhusu uwepo wake, kubaini matumizi yoyote mabaya ya emond ni rahisi. LaunchDaemon ya mfumo kwa huduma hii inatafuta scripts za kutekeleza katika saraka moja. Ili kuchunguza hili, amri ifuatayo inaweza kutumika:
Writeup: https://theevilbit.github.io/beyond/beyond_0018/
/opt/X11/etc/X11/xinit/privileged_startx.d
Inahitajika root
Trigger: Pamoja na XQuartz
XQuartz haitumiki tena katika macOS, hivyo ikiwa unataka maelezo zaidi angalia andiko.
Ni ngumu sana kufunga kext hata kama ni root hivyo sitazingatia hii kutoroka kutoka kwenye sandboxes au hata kwa kudumu (isipokuwa una exploit)
Ili kufunga KEXT kama kipengele cha kuanzisha, inahitaji kufungwa katika moja ya maeneo yafuatayo:
/System/Library/Extensions
Faili za KEXT zilizojengwa ndani ya mfumo wa uendeshaji wa OS X.
/Library/Extensions
Faili za KEXT zilizofungwa na programu za upande wa tatu
Unaweza kuorodhesha faili za kext zilizopakiwa kwa sasa kwa:
Kwa maelezo zaidi kuhusu nyongeza za kernel angalia sehemu hii.
Andiko: https://theevilbit.github.io/beyond/beyond_0029/
/usr/local/bin/amstoold
Inahitajika Root
Kwa wazi plist
kutoka /System/Library/LaunchAgents/com.apple.amstoold.plist
ilikuwa ikitumia hii binary wakati ikifichua huduma ya XPC... jambo ni kwamba binary hiyo haikuexist, hivyo unaweza kuweka kitu hapo na wakati huduma ya XPC itakapoitwa binary yako itaitwa.
Siwezi tena kuipata hii katika macOS yangu.
Andiko: https://theevilbit.github.io/beyond/beyond_0015/
/Library/Preferences/Xsan/.xsanrc
Inahitajika Root
Kichocheo: Wakati huduma inapoendeshwa (nadra)
Kwa wazi si kawaida sana kuendesha skripti hii na sikuweza hata kuipata katika macOS yangu, hivyo ikiwa unataka maelezo zaidi angalia andiko.
Hii haifanyi kazi katika toleo za kisasa za MacOS
Pia inawezekana kuweka hapa amri ambazo zitatekelezwa wakati wa kuanzisha. Mfano wa skripti ya kawaida ya rc.common:
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)