轉載自:http://bobao.360.cn/learning/detail/3186.html
2016-11-16 14:46:48 來源:安全客 作者:WisFree
閱讀:6482次 點贊(3) 收藏(22)
翻譯:WisFree
預估稿費:200RMB(不服你也來投稿啊!)
投稿方式:發送郵件至linwei#360.cn,或登陸網頁版在線投稿
靈感來源
前段時間,我收到了Mark Russinovich的新書-《Troubleshooting with the Windows Sysinternals Tools(2nd Edition)》。拜讀完這本大作之后,我腦海中便產生了撰寫這篇文章的靈感。雖然我在上周就收到這本書了,但是我到現在仍然對它愛不釋手。不僅因為這是一本非常棒的書,而且這本書的主題也是我非常感興趣的一個方向。比如說,Mark的新書中提供了大量關於Windows DFIR的知識,而這些知識是我們很難在其他地方找到的。因此我建議對這方面話題感興趣的同學趕緊入手這本書[亞馬遜傳送門]。
為了更好地理解我在這篇文章中所講述的內容,我建議各位先在自己的測試環境中安裝Windows Sysinternals Suite系統工具套件[下載地址]。
如果你此前並不了解DFIR,並且打算學習這方面內容以提升自己技能的話,我建議你趕緊入手這本書。在過去的幾年里,我的工作就是對各種網絡攻擊事件進行調查和分析,我曾見到過有很多攻擊者選擇利用Sysinternals工具包來完成他們的攻擊任務。不僅如此,有的攻擊者甚至在攻擊過程中的每一步都會使用這些工具。這些工具非常的流行,有的Windows用戶甚至還會去抱怨Mark撰寫這樣的一本書,因為攻擊者可以利用這本書中的內容來編寫計算機病毒。
寫給DFIR從業者的話:我建議各位一定要深入理解Sysinternals套件中各個工具的運行機制和實現原理。如果你可以做到這一點,那么當你在調查某個網絡攻擊事件時,你就可以在不需要對惡意軟件進行逆向工程分析的情況下了解這款惡意軟件的工作機制。如果你能夠知道攻擊者如何去利用這些工具,你就可以模擬他們的攻擊行為,了解他們的操作方法,並且更加清楚地了解到你所在的整個環境可能會存在怎樣的攻擊面。
寫給威脅檢測人員的話:你可以通過追蹤Sysinternals工具所拋出的異常來迅速檢測到環境中可能存在的安全威脅。在本文接下來的內容中,我將會告訴大家如何對該套件中的部分工具進行追蹤與分析。
PsExec
在本文中,我所要講解的第一個工具就是PsExec。我不打算在這里花時間去照本宣科地背誦書本中的內容,我會結合我的工作經驗和實踐技巧來給大家進行講解。
PsExec可以允許你在本地主機中執行遠程服務器上的命令。PsExec可以算是一個輕量級的 telnet 替代工具,它使您無需手動安裝客戶端軟件即可執行其他系統上的進程,並且可以獲得與命令控制台幾乎相同的實時交互性。PsExec最強大的功能就是在遠程系統和遠程支持工具(如 IpConfig)中啟動交互式命令提示窗口,以便顯示無法通過其他方式顯示的有關遠程系統的信息。
系統管理員通常會使用這款工具來遠程執行腳本,例如組件安裝腳本或數據收集腳本。這種方法不僅操作起來非常的簡單,而且還可以節省資源。最重要的是,這種方法還可以避免服務器出現漏洞。除此之外,很多人也會將其用於軟件部署的過程中,雖然也有很多其他的工具可以選擇,但是PsExec追求的是性價比。
同樣的,攻擊者也是考慮到了這些因素所以才會選擇PsExec的。除了上述原因之外,還有下面這幾點:
1. 這些工具屬於合法工具,因此當反病毒軟件或終端檢測產品檢測到了這類惡意軟件之后,有可能只會發出警告,或者直接忽略它們。具體將取決於用戶的設置情況。
2. 這些工具可以直接從微軟的官方網站免費下載獲取。
3. 如果攻擊者在惡意軟件中使用這些工具的話,目標用戶的計算機中很可能已經安裝好這些工具了,所以這也為攻擊者提供了方便。
我在之前的工作過程中,曾經發現過一個經驗極其豐富的黑客組織。當時他們就是將一個修改版的PsExec來作為主要的惡意軟件部署工具。由於只有他們會使用這種方法來部署惡意軟件,因此任何一名安全分析人員都可以檢測到該組織的惡意軟件。
在這里,我必須要再次強調一下,對於DFIR分析人員來說,深入理解這些工具真的非常重要。接下來,我會告訴大家如何去檢測環境中是否存在PsExec的活動。
PsExec的執行與服務安裝
在絕大多數情況下,我們只有在與遠程系統交互時才會使用到PsExec。以下幾點是我們需要注意的:
1. PSEXESVC服務將會安裝在遠程系統中,此時將會生成Event 4697和Event 7045這兩種事件日志。需要注意的是,Event 4697日志記錄將有可能包含賬號信息。
2. 還有可能預生成Event 4624和Event 4652 Windows事件日志,日志會記錄下該工具的使用數據。
3. 可執行程序PSEXESVC.EXE將會被提取至Windows目錄下,然后再執行遠程操作。
在PSEXESVC.EXE的提取和執行過程中你需要注意的是:
1. 如果啟用了這個服務的話,系統中將會生成一個關於PSEXESVC.EXE的文件。
2. 這個文件將會被保存在AppComapt或Amcache之。在新版操作系統下,
這個文件將會替換掉RecentFileCache.bcf。
PsExec命令在目標系統中每執行一次,都會向目標系統寫入一個新的可執行文件。PsExec提取PSEXESVC.EXE的操作也不止一次,它的每一個示例都會進行一次這樣的操作。這樣一來,每一次提取都會生成新的元數據和新的時間戳。
首先,每當你使用PsExec來與目標系統進行連接時,你都會收到一個AppCompat條目。先看看下面這張圖片,其中顯示的是ShimCacheParser.py的輸出數據:
你會發現輸出路徑都是相同的,但是每一個PSEXESVC實例的生成時間都不同。在查看了相關的Event 7045事件日志條目之后,你也許就可以發現其中的關聯性了:
請注意事件日志條目與AppCompat條目之間的關聯,你發現了其中的差異嗎?
接下來,讓我們看看51BA46F2.pf文件(PSEXESVC.EXE的解析文件)的輸出信息:
實用參數
如果你碰巧發現了可疑的PsExec活動,那么下面這幾個參數也許可以幫助你識別這些可疑活動。
1.參數“-r”可以對遠程服務進行自定義配置。我曾見到過有攻擊者使用過這個參數,這將增加我們識別PsExec服務的難度。但是很多情況下,網絡管理員也會使用這個參數來進行合法操作。所以了解你的網絡環境是非常重要的。我之前所說的那個黑客組織曾經在攻擊過程中,還將遠程系統中原本的PSEXESVC.EXE文件重命名為了PRAMEPKG.EXE。除此之外,其他的一些服務名稱也被修改了。具體如下圖所示:
2.參數“-u”和“-p”指的就是用於遠程登錄的用戶名和密碼。如果參數“-p”為空,系統則會要求用戶提供相應的密碼。系統管理員請注意,請不要將這部分信息硬編碼在你的腳本中,因為攻擊者將有可能獲取到憑證數據。
3.參數“-c”可以允許我們將某個特定的程序拷貝到遠程系統中並執行。
4.參數“-s”將會用系統賬號執行遠程命令。
總結
如果你發現了PsExec活動,請趕緊檢查這個活動是否使用了你的sysadmins權限。在一個大規模的環境下,這種方法可以迅速地幫你過濾掉假陽性,並且顯著地降低環境中出現安全事故的可能性。