Abstract
在藉由監聽 Windows API 來做防禦系統的領域中,還有一些問題値得研究。 第一個是對於動態載入的DLL的處理,這部分在過去的研究中沒有受到重視。 一個DLL通常都會被數個程式所共用,一旦這個DLL存在弱點的話,那所有共用這個DLL的程式都可能會被影響。第二個是對於模仿攻擊的抵擋能力不夠,尤其是藉由掃描記憶體來達到模仿的攻擊。模仿攻擊會隨著防禦系統檢查機制的不同而有不同的變化。在監聽Windows API的防禦系統中,通常都是以返回位址當作檢查的依據。模仿攻擊就可藉由掃描記憶體來尋找合法的Windows API 呼叫來取得合法的返回位址繞過檢查的機制。最後一個問題是監聽Windows API的方法是有可能被繞過的。我們建造了一個創新的系統來解決以上的問題,我們的系統會保護所有被載入的DLL,並且提供陷阱和隱藏Windows API 呼叫指令的機制。在Windows API的程式區段間放進陷阱,當攻擊者嘗試繞過我們的系統時,就會產生一個例外狀況,攻擊就會失敗。藉由將所有的Windows API 呼叫指令隱藏起來,讓攻擊者在掃描記憶體時無法分辨出哪個呼叫才是他想要的,提高模仿攻擊的門檻。我們的系統經過實驗,對於現實存在的攻擊程式能有效的阻擋,並且對於系統效能的影響不大,大概是8%左右。我們的系統也相當具有彈性,可以跟現有作在核心層的防禦機制合作,提供更全面的保護。