小技巧——病毒分析中關閉ASLR
病毒分析中關閉ASLR
分析病毒的時候,儘可能用自己比較熟悉的平台,這樣可以大大地節省時間,像我就喜歡用xp了,然而有時候病毒非要在更高版本的系統上運行,如win7,server2008等。然而這些平台都使用了ASLR技術,每次od載入時,其映像基址都是會變化的,而你有時候需要計算一些地址,基址老是變,煩不煩?
那麼我們要怎麼關閉ASLR呢?這就要從ASLR技術背景開始說了。
微軟從windows vista/windows server 2008(kernel version 6.0)開始採用ASLR技術,主要目的是為了防止緩衝區溢出。
ASLR技術會使PE文件每次載入到內存的起始地址隨機變化,並且進程的棧和堆的起始地址也會隨機改變。
該技術需要操作系統和編譯工具的雙重支持(主要是操作系統的支持,編譯工具主要作用是生成支持ASLR的PE格式)。
關閉ASLR
操作系統方面
操作系統方面關閉ASLR支持,但是我們姿勢不夠,不知道在哪裡關閉怎麼辦呢?沒關係,我們可以看看別人是怎麼做的。
網上隨便down一個關閉ASLR工具。
使用sysinternals的工具processmonitor,監控一下別人是怎麼做的。
監控好之後點擊關閉ASLR,我們就可以看到軟體對應的操作了。
可以看到註冊表添加了一個DWORD鍵值項HKLMSystemCurrentControlSetControlSESSION MANAGERMEMORY MANAGEMENTMoveImages,其值為0。
打開ASLR就是刪除掉MoveIMages鍵值項
好,現在我們知道了關閉ASLR只需要在添加了一個DWORD鍵值項HKLMSystemCurrentControlSetControlSESSION MANAGERMEMORY MANAGEMENTMoveImages,其值為0。然後重啟電腦就行了。
那麼,要是我們不想重啟電腦呢,那可以通過編譯工具入手,若不想使用ASLR功能,可以在VS編譯的時候將「配置屬性->鏈接器->高級->隨機基址」的值修改為否即可。然而我們分析病毒,怎麼可能有源碼讓我們來編譯呢。
pe頭
那麼這個時候我們可以通過修改pe頭中可選頭的DllCharacteristics來
達成我們的目的。
就拿wannamine這個病毒來舉例,wannnamine內的spoolsv.exe是
基址是動態變化的。
現在修改pe頭DllCharacteristics,將動態基址選項去掉。即將DllCharacteristics值8140改為8100。
可以看到其基址變回我們熟悉的0x400000了。
最後給出修改pe頭的python腳本
※記錄一次利用業務設計缺陷漏洞的精彩實戰測試
※黑客是如何監視你的手機的?
TAG:瘋貓網路 |