當前位置:
首頁 > 新聞 > 仔細分析源代碼也許是尋找新的持久化攻擊方式的唯一辦法

仔細分析源代碼也許是尋找新的持久化攻擊方式的唯一辦法

在我使用Process Monitor(Procmon)系統監測工具分析VB應用程序時,我總是看到HKLMSOFTWAREMicrosoftVBAMonitors輸入的內容。由於缺乏經驗,我無法解釋這些是什麼內容,谷歌搜索也沒有帶來任何答案。最後,我開始分析觸發該行為的實際代碼。

很明顯,其中有一些代碼是手動操作的結果,這樣代碼分析時就非常的耗時。有時我幾個月都找不到我想要的內容。這使我經常懷疑我提出的問題是不是有瑕疵,不過最近的一個案例,讓我又重新找回了信心。在查看kernel32.dll中的一些不相關的內容時,我偶然發現了載入回調DLL的位。雖然kernel32.dll是電腦中非常重要的動態鏈接庫文件,大家都在用,但我仍然認為其中還有可以利用的漏洞。另外,還有許多其他案例,例如,我描述的許多持久性機制依賴於我持之以恆的研究,才最終發現某些程序或組件載入了許多DLL,這些DLL在它們被列在註冊表中的某個位置之後逐個執行。此類活動需要依賴Registry枚舉API。如果你可以找到使用這些函數的程序或DLL,你很可能會找到可能的持久性機制!

然後還可以利用例如"providers"的關鍵字,這是一種非常流行的方法,用來命名註冊表中的位置,許多插件都是從這裡載入的。以下是一些包含關鍵字" provider "的輸入項可能枚舉的示例:

·SYSTEMCurrentControlSetControlCryptographyProviders

·SystemCurrentControlSetControlSecurityProvidersSSIProviders

·SYSTEMCurrentControlSetServicesLanmanServerShareProviders

·SystemCurrentControlSetServicesRemoteAccessAccountingProviders

·SystemCurrentControlSetServicesRemoteAccessAuthenticationProviders

·SYSTEMCurrentControlSetServicesW32TimeTimeProviders

·SYSTEMCurrentControlSetServicesWbioSrvcService Providers

·SYSTEMCurrentControlSetServicesWinsockSetup MigrationProviders

·SystemCurrentControlSetServicesWinTrustTrustProviders

·SystemCurrentControlSetServicesWlanSvcParametersComInterfaceProviders

·SystemCurrentControlSetServicesWlanSvcParametersVendorSpecificIEProviders

還有就是利用Microsoft文檔來尋找可持續攻擊的方式,它就像一個用於Windows編程的RFC。目前,我為Windows編程了10多年,關於DDE、WM_HTML_GETOBJECT和Propagate trick (SetProp)的一些技巧和經驗,也積攢了不少。這為我尋找可持續攻擊的方式,提供了大量資源。

最後就是仔細分析API,如果你閱讀代碼並查看對ShellExecute,WinExec,CreateProcess,LoadLibrary,CoCreateInstance及其眾多變體和包裝器的引用,你很快就會發現Windows生態系統幾乎不會重複使用代碼;或者更準確地說,它雖然不會重複使用代碼,但確實重複使用了很多相關數據,比如依賴於添加到它的許多自定義路徑。老實說,你遇到的大量代碼片段看起來像是編程人員的自定義編程工作,編寫該部分程序只是為了測試某個想法而已。在這樣的代碼海洋中,它實際上是一種正常的,甚至是預期的行為。但是坦率的說,我真的要感謝微軟程序員提供的所有測試和調試代碼以及操作系統附帶的錯誤消息或字元串,在尋找持久化攻擊方式時這有很大幫助!

所有這些意想不到的或可能是私有的及只針對實驗室的代碼路徑都提供了許多有趣的攻擊機會,特別是對於持久性攻擊來說,任何一個敢於去尋找的人最終都會找到一些有價值的東西。

在發現漏洞的過程中,其實找到持久性攻擊方式只是順帶的事情,即使有時有些技術非常奇特,但對我來說真正的快樂來自於以下這三件事:

1.有機會閱讀別人的代碼,提高我的逆向工程技能;

2.了解系統的工作原理;

3.在取證分析方面處於優勢地位;

在閱讀像內存取證或Windows內部結構控制這樣的書籍時,這些作者所依賴的大部分信息都是直接或間接操作實際系統內部的。而這些操作之所以能成功,很大一部分原因是因為,許多開發這些系統的工作人員自己轉身成了安全研究員,這其中就有利用已知的源代碼之嫌,或者也可以稱之為源代碼泄露。所以就會出現,他們只有在程序運行的某個階段中才可以訪問源代碼,並且在某個時間段內它們是可以利用他們以前的特權所帶來的好處的。但我想說,大多數發現都是在很多會議上發表的,其中一些書籍和博客上介紹的技術都是30年以前的了。

目前有許多開發人員會習慣性的抱怨某些API有著不可預測的漏洞,但卻往往無法解釋這種行為背後的確切原因。在我看來,就是要拋棄原有的代碼認知,重新挖掘代碼,這個能力是任何一個合格程序員的核心技能。沒有任何逆轉、取證,漏洞利用是不能通過分析源代碼完成的。

所以,如果你想找到新的持久性技巧,就需要分析有可能利用的任何代碼,並找出其中的工作原理。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

Redis未授權訪問漏洞復現
安卓應用程序滲透測試(四)

TAG:嘶吼RoarTalk |