第一次接觸hook,還不知道hook是什麼東西。如今開始走往高手的歷程:windows
黑客防線中有這樣一句話:「Hook ZwSetInformationFile技術實現文件的保護技術,這個實際上就是Ring3級下修改SSDT表中的NativeAPI 技術」。安全
戰鬥任務一: 什麼是SSDT?函數
查閱百度百科:「SSDT(System Services Descriptor Table),系統服務描述表。這個表就是把ring3的Win32 API和ring 0的系統API聯繫起來。 SSDT並不單單隻包含一個龐大的地址索引表,它還包括了其它有用的信息,諸如地址索引的基地址、服務函數個數等。」 學習
經過修改此表的函數地址能夠對經常使用windows函數及API進行hook,從而實現對一些關心的系統動做進行過濾、監控的目的。一些HIPS、防毒軟件、 系統監控、註冊表監控軟件每每採用此接口來實現本身監控模塊。目前極個別病毒會採用這種方法,保護本身或者破壞殺毒軟件,但這種病毒進入系統前若是殺毒軟件可以認識並清除它將沒有機會發做。spa
SSDT 至關於系統內部API的指向標,須要調用的API在什麼地方。orm
SSDT的結構?索引
typedef struct _SYSTEM_SERVICE_TABLE {接口
PVOID ServiceTableBase; // 指向系統服務函數表ip
PULONG ServiceCounterTableBase;內存
ULONG NumberOfService; // 服務函數的個數
ULONG ParamTableBase;
}SYSTEM_SERVICE_TABLE, *PSYSTEM_SERVICE_TABLE;
typedef struct _SERVICE_DESCRIPTOR_TABLE{
SYSTEM_SERVICE_TABLE ntokrnel; // ntoskrnel.exe的服務函數
SYSTEM_SERVICE_TABLE win32K; // win32k.sys的服務函數,(gdi.dll /user.dll的內核支持)
SYSTEM_SERVICE_TABLE NotUsed1;
SYSTEM_SERVICE_TABLE NotUsed2;
} SYSTEM_DESCRIPTOR_TABLE,*PSYSTEM_DESCRIPTOR_TABLE;
實際上內核中存在兩個系統服務描述表,一個是KeServiceDescriptorTable(由ntoskrnl.exe導出),一個是KeServiceDescriptorTableShadow(沒有導出)。 KeServiceDescriptorTableShadow不但包含了ntoskrnel項,並且還包含了win32k項,而KeServiceDescriptorTable僅僅包含一個ntoskrnel項。
用winDbg看看,到底這個KeServiceDescriptorTable是什麼東西。
引用:kd> dd KeServiceDescriptorTable
咱們能夠看出,函數表基地址爲80502044,存在0000011c個服務項,咱們繼續看80502044地址的內存塊內,到
底放了些什麼。
這裏面的數據到底表示什麼呢?實際上,這表示的是一個入口地址。咱們對其中一個地址進行反彙編看看。
第二個戰鬥任務:HIPS 基於主機的入侵防護系統。是一種能監控你電腦中文件的運行和文件運用了其它的文件以及文件對註冊表的修改,並向你報告請求容許的軟件。 關於防火牆的學習,再後期起步。
第三個意外收穫: 沙盤HIPS ,沙盤英文名sandbox,也叫沙箱,顧名思義能夠看做是一種容器,裏面所作的一切均可以推到重來,軍事上經常使用沙盤來進行一些戰爭區域地形模擬,不用了能夠把沙子推平重來。 咱們的沙盤是一種安全軟件,能夠將一個程序放入沙盤運行, 這樣它所建立修改刪除的全部文件和註冊表都會被虛擬化重定向,也就是說全部操做都是虛擬的,真實的文件和註冊表不會被改動,這樣能夠確保病毒沒法對系統關鍵部位進行改動破壞系統。另外沙盤通常都有部分或者完整的相似HIPS的程序控制功能,程序的一些高危活動會被禁止,如安裝驅動、底層磁盤操做等。目前沙盤主要有兩大類, 一是採用虛擬技術的傳統沙盤,另外一個就是採用策略限制的沙盤。 BufferZone,
Defensewall,Geswall,SafeSpace,Sandboxie. Software Virtualization Solution.
就像我玩仙劍同樣,景天剛一出來,就遇見飄搖江湖的、來去無蹤的高手,哇羨慕啊,未來有朝一日也能夠練成這樣的高手,至於高手見面,當到必定的境界的時候,確定會遇到他們的。