2016-03-08 94 views
3

我有一個進程(啓動守護進程),它由OS X中rootd環境中的launchd啓動。該進程是代碼簽名的。如果我破壞了二進制文件,它仍會再次加載。要破壞二進制文件,我在十六進制編輯器中打開可執行文件,並查找並替換任何字符串。有沒有辦法阻止這個進程啓動,以防它被破壞?防止損壞的可執行文件在OS X上啓動

回答

1

蘋果提供了code signing framework允許可執行檢查自己的簽名和測試應用程序已被篡改。

開始通過獲得與所述呼叫到SecCodeCopySelf代碼對象,然後使用所檢索的SecCodeRef調用SecCodeCheckValiditySecCodeCheckValidityWithErrors

這取決於你的應用程序退出,如果遇到與有效性的問題。由於它在根環境中運行,它也可以從launchd中卸載它自己。

請注意,驗證應用程序所用的時間取決於其大小和文件數量。一個非常大的應用程序包(如XCode)可能需要大約3分鐘,但小應用程序幾乎不會引人注目。

1

通常,OS X的Gatekeeper不會阻止您執行未經代碼簽名或未簽名的二進制文件,只要您已在下載批准後刪除了隔離屬性(「xxx是從應用程序下載的應用程序Intenet的......「)。另外,如果它看起來像是有意執行它(右鍵單擊,打開或在終端中執行),它就會失效。在某些東西被批准運行後,GateKeeper完成。

所以這是一個很好的保障措施,但是很虛弱的東西,坦率地說。沒有像iOS一樣。

你的目的,你可能想看看Ostiarius。這是最近發佈的工具,它會導致OS X內核拒絕執行未經簽名(或已修改)的任何二進制文件,也可能從運行期間的Internet上執行任何二進制文件。您可以使用xattr將隔離屬性添加到您的二進制文件,以便它受到影響。

和/或在調用它的launchd腳本,使用codesign -dv自己檢查簽名,你都願意推出之前。您也可以對應用程序進行沙盒處理,以確保如果它被劫持,則無權做任何事情。

因爲這是一個桌面進程中,同樣的安全研究人員還有另外一個免費的工具,叫做BlockBlock您可能會感興趣。我相信它會阻止二進制文件在第一時間被替換,直到您批准爲止。

坦率地說,這傢伙所做的一切都很酷。可能想檢查其餘的。

+0

雖然我同意Patrick的工具Ostiarius很棒,但它不會解決問題。儘管二進制文件可能已損壞,但它仍然被簽名,並且Ostiarius不會驗證應用程序的完整性。另外,如果用戶先前已接受要執行的應用程序,則會刪除其隔離標誌,並且Ostiarius仍將允許該應用程序運行。 – TheDarkKnight

+0

不確定。 –

+0

'須藤XATTR -w com.apple.quarantine 「0002; 56dffb86; Safari瀏覽器; 0EC7F021-2F3C-43CC-BC47-7981517CD429」 的/ usr/local/bin中/ ffmpeg',然後運行'的/ usr/local/bin中/ ffmpeg'如果它剛剛在控制檯上運行,它不會被刪除。 –

相關問題