说说猎豹安全浏览器
最近金山也加入了瀏覽器大軍,推出了其首款瀏覽器 - “獵豹”,主打安全牌,直指360安全瀏覽器。我在第一時間拿到了獵豹瀏覽器的安裝包,使用感受是,總體來說還不錯,但是需要完善的地方還有很多。
其中其主打宣稱的BIPS (Browser Intrusion Prevention System)安全系統(tǒng)有種令人眼前一亮的趕腳,是否真的有這么神奇嗎?于是我操起IDA簡單的分析了一下。
1.獵豹瀏覽器在用戶首次訪問電商等敏感網(wǎng)站的時候會加載其名為knbdrv.sys的BIPS監(jiān)控驅(qū)動。
2.驅(qū)動起來的時候會根據(jù)一個全局變量的值g_bHookEntry來hook ssdt還是KiFastCallEntry(內(nèi)核層調(diào)用入口)。如果Hook的是KiFastCallEntry,那么其hook的位置也很巧妙。hook前后KiFastCallEntry的變化如下圖:
為什么說這個hook點選取的巧妙呢,因為此時,調(diào)用系統(tǒng)API的準備過程基本已經(jīng)做完了。而且這個hook點正好在360安全衛(wèi)士hook點的前面。因此,攔截惡意行為等動作都是在360前面。唯一一個缺點就是,因為還有部分如取得系統(tǒng)API的調(diào)用地址等還未初始化,因此,在hook函數(shù)里面需要處理的數(shù)據(jù)會比360hook函數(shù)稍微多一點。俗話說的好,”有利也有弊“嘛。
3.如果在KiFastCallEntry的這個hook點上已經(jīng)有其他軟件hook了,那么BIPS會覆蓋其hook,并在執(zhí)行完自己過濾函數(shù)之后再調(diào)用先前被覆蓋的那個過濾函數(shù)。達到始終在其他安全軟件之前攔截的目的。
4.再回過頭來說說獵豹是如果定位KiFastCallEntry的hook點的。
(1)SSDT HOOK了NtDisplayString函數(shù)。
(2)以”kisknl“為UNICODE_STRING字符串參數(shù),調(diào)用NtDisplayString()。
(3)FakeNtDisplayString函數(shù)里面匹配”kisknl“字符串,如果是的話,就堆?;厮莸終iFastCallEntry中。
(4)找到KiFastCallEntry的返回地址后,最后向上通過匹配特征碼來找到KiFastCallEntry的hook點。
5.每個被hook的函數(shù)使用一個結(jié)構(gòu)體來保存hook信息,以便用來過濾和恢復(fù)Hook。
[cpp]view
plaincopy
typedefstruct_HOOK_INFO_
{
DWORDnShadowFuncionId;//Shadow表函數(shù)的ID,SSDT表的函數(shù)此值為0
PVOIDpNtdllSsdtFunctionAddress;//ntdll.dll中函數(shù)的地址,用來獲取SSDT函數(shù)的ID,Shadow表的函數(shù)此值為0
PVOIDpFakeFunction;//保存過濾函數(shù)的地址
PVOIDpOrginFunction;//保存原始函數(shù)的地址
}HOOK_INFO,*PHOOK_INFO;
被hook的系統(tǒng)函數(shù)如下(XP系統(tǒng),不同系統(tǒng)hook的函數(shù)有所不同):
(1)SSDT:
NtCreateSection
NtCreateThread
NtDebugActiveProcess
NtDeviceIoControlFile
NtFreeVirtualMemory
NtLoadDriver
NtOpenProcess
NtOpenSection
NtProtectVirtualMemory
NtQueueApcThread
NtRequestWaitReplyPort
NtSetContextThread
NtSetSystemInformation
NtSuspendProcess
NtSuspendThread
NtSystemDebugControl
NtTerminateJobObject
NtTerminateProcess
NtTerminateThread
NtTestAlert
NtUnmapViewOfSection
NtWriteVirtualMemory
(2)Shadow SSDT:
NtUserBlockInput
NtUserCallHwndParamLock
NtUserDestroyWindow
NtUserGetAsyncKeyState
NtUserGetKeyboardState
NtUserGetKeyState
NtUserGetRawInputBuffer
NtUserGetRawInputData
NtUserMessageCall
NtUserMoveWindow
NtUserPostMessage
NtUserPostThreadMessage
NtUserSendInput
NtUserSetParent
NtUserSetWindowPlacement
NtUserSetWindowPos
NtUserSetWindowRgn
NtUserSetWindowsHookEx
NtUserSetWinEventHook
NtUserShowWindow
NtUserShowWindowAsync
(3)IAT HOOK KeUserModeCallback來防止消息鉤子的注入。
ps:
1.經(jīng)過這個分析,傳說中的BIPS也就不再那么神秘了,其實質(zhì)就是精簡了的毒霸k+主防,去掉了注冊表防御部分,做成了適合瀏覽器的一套防護體系。也就是說,獵豹瀏覽器自己實現(xiàn)了部分殺毒軟件的防護功能,能夠使得那些未安裝殺毒軟件或者即使是自身電腦已經(jīng)中毒的用戶在進行網(wǎng)購時可以免受病毒木馬的侵害。這也正是其敢賠的信心之所在。
2.而360所謂的安全瀏覽器就僅僅是集成了一款SandBox,平時根本不會自動入沙。對于普通用戶來說,其與使用IE瀏覽器沒多大差別。
總結(jié)
- 上一篇: lnmp一键安装包搭建lnmp环境
- 下一篇: 2021年4月12日-民航上海医院-瑞金