掛鉤(Hooking)技術是將要執行的具有某種特殊功能的代碼(如Rootkit攻擊代碼或者惡意程序)作為外掛程序巧妙地插入到目標程序(被掛鉤程序)中實現攻擊。
當目標程序執行到被掛鉤處時強行轉向執行外掛程序(鉤子程序),當外掛程序執行結束后再返回目標程序的被掛鉤處繼續執行目標程序。掛鉤技術能夠為用戶提供系統或進程中各種事件產生的消息,并能夠根據用戶需要改變程序的執行流程,且增加新的功能。也就是說,掛鉤技術為用戶訪問Windows系統程序的結構和執行方式提供了一種途徑,而Windows系統的這一工作機制卻為實現Rootkit攻擊創造了條件。
攻擊者只要能夠訪問目標進程的地址空間,就可以掛鉤并修改其中的任何函數(如函數指針、系統調用入口地址等)。在進程打開時這些被修改后的函數被調用執行,此時將自動跳轉到攻擊者設置的攻擊代碼所在的地址去執行,并實現隱藏進程和端口等功能。
例如,利用掛鉤技術,攻擊者可以將木馬、后門等惡意代碼以驅動程序的形式掛鉤到系統的正常啟動流程中(如Windows的Winload.exe),使這些惡意代碼在用戶根本不知情的情況下隨著系統驅動程序的加載而自動運行。
從理論上講,不管是用戶模式還是內核模式,只要存在能夠掛鉤的地方都可以實現基于掛鉤的Rootkit攻擊。
推薦文章