2013年9月16日 星期一

Ollydbg 看malware 小技巧

1. 如果Create svchost 要inject 用. CreateProcess時把path 改成 notdpad

2. 如果過程有SetContextThread, 不能attach 先把context eip改到一個

3. 如果過程有WriteProcessMemory, 也不能先attach, 要先等它寫完, ResumeThread的時候再 attach上去

4. 如果過程中有CreateProcess 後再CreateRemoteThread, Attach上target process 時要讓tragetProcess 先跑一陣子 (理想上大概是attach進去 會到到KiFastSystemCallRet). 再執行CreateRemoteThread 不然 有時候太早attach 進去target process 會一直access violation 或exception 而讓malware 的behavior 沒有跑起來 (查原因...)

5. olly2 可以Attach suspend 的process 但olly1不行, 但olly2 看不到handle table, 所以同場加映....

 

用process explorer 看特定process 的handle table

如圖 在View DLL 或View Handle 中 選View Handle

image

 

image

然後把handle value勾選起來

image

就可以看到和olly 一樣的handle 對照表 (還更清楚, olly1中process 和thread看不到name )

6. 如果WinExec(底下是call CreateProcessInternalW) 或create process 用gflags 或直接去下 Image File Execution Options Registry 來讓process 一開始就用olly 跑起來沒有用的話,  可以試著改target image file 的Entry point 往前提早2byte 插EBFE (2byte jump 自己指令) 來做busy loop 就讓它create 起來 等attach之後再改 start from real entry point. 以下是細步:

6.1 改entry point 往前提2 byte

按enter 切到hex mode後 用F8 看header, 按F5到entry point 後往前2byte 按FE (edit)改EBFE

image

之後再開一次 找到entry point  改成-2的值 (如此例是2c91) 一樣是F3-Edit/F9-Update

image

改完後再開一次header 來看(F8), 確定entry point 有改對,

image

跳過去(F5)值有對 EBFE

image

改完就可以讓malware 把target image 執行起來, 以下是直接執行示範, 理論上都會讓某顆CPU high (因為我是4核, 所以只有其中一顆busy)

image

olly 進去會看到它停在剛剛的entry point

…做到這裡發現... 在我x64的主機上居然失敗. (x86VM裡改會成功)  這裡就先把流程記下來吧 >"< 之後再找原因

沒有留言: