在調查惡意程式時,我們應該得先瞭解惡意程式是怎麼撰寫的,因為您要是更熟悉製作手法就越能知道我該從哪裡下手調查,這次我用簡單方式來講解程式加殼,以前很多惡意程式被多家防毒軟體掌握,導致無法對該電腦進行執行,因此加殼手法在惡意程式上越來越常見,我們看下圖:
出處:https://www.researchgate.net/figure/PE-structure-of-normal-executable_fig1_259647266
這是 Windows 執行程式的檔案格式圖,我們只要看紅框這部分,其實加殼就是把紅框這一塊它是程式的執行區,做加密或壓縮放在這執行程式檔案其中一個位置,通常是不會影響該程式執行的位置,執行區的動作就置換成:先找到原本執行區所存放的位置後。進行解密或解壓的動作還原,在跟記憶體要求一塊位置,再把原執行區載入該位置加以執行,其實 Linux 的 ELF 執行程式加殼原理也是這麼做,ELF 執行程式的檔案格式圖:
出處:http://www.cjwind.idv.tw/Executable-Format/
我們可以用 Process Explorer 這工具找到哪個 Process 是否有加殼。
如果該項 Process 為紅框的顏色,就是有做加殼動作,我們就可多留意一下。
當然現在有些正常程式,為了要保護自己程式不被逆向修改也會做加殼動作,使得調查更加不容易。
我的加殼做法會跟上述不一樣,我會將原程式加密後放進另一支為殼的執行程式,為殼的執行程式執行後,會找我原程式存放的位置,解密後在該殼程式的記憶體裡執行,或去找其他程式的記憶體裡執行,該手法 Process Explorer 是不會標示加殼的,有興趣學習的朋友可以跟我聯絡。
要是對數位鑑識開發或是惡意程式手法有興趣的朋友們,我會以這兩個主題為概念為主題,來學習 C/C++程式設計開發教學,可以到粉絲團 facebook.com/rexlintechnology 跟我留言或聯絡,不吝嗇給個讚跟追蹤吧!
留言列表