• 说说猎豹安全浏览器


    最近金山也加入了浏览器大军,推出了其首款浏览器 - “猎豹”,主打安全牌,直指360安全浏览器。我在第一时间拿到了猎豹浏览器的安装包,使用感受是,总体来说还不错,但是需要完善的地方还有很多。

    其中其主打宣称的BIPS (Browser Intrusion Prevention System)安全系统有种令人眼前一亮的赶脚,是否真的有这么神奇吗?于是我操起IDA简单的分析了一下。

    1.猎豹浏览器在用户首次访问电商等敏感网站的时候会加载其名为knbdrv.sys的BIPS监控驱动。

    2.驱动起来的时候会根据一个全局变量的值g_bHookEntry来hook ssdt还是KiFastCallEntry(内核层调用入口)。如果Hook的是KiFastCallEntry,那么其hook的位置也很巧妙。hook前后KiFastCallEntry的变化如下图:


    为什么说这个hook点选取的巧妙呢,因为此时,调用系统API的准备过程基本已经做完了。而且这个hook点正好在360安全卫士hook点的前面。因此,拦截恶意行为等动作都是在360前面。唯一一个缺点就是,因为还有部分如取得系统API的调用地址等还未初始化,因此,在hook函数里面需要处理的数据会比360hook函数稍微多一点。俗话说的好,”有利也有弊“嘛。

    3.如果在KiFastCallEntry的这个hook点上已经有其他软件hook了,那么BIPS会覆盖其hook,并在执行完自己过滤函数之后再调用先前被覆盖的那个过滤函数。达到始终在其他安全软件之前拦截的目的。

    4.再回过头来说说猎豹是如果定位KiFastCallEntry的hook点的。

    (1)SSDT HOOK了NtDisplayString函数。

    (2)以”kisknl“为UNICODE_STRING字符串参数,调用NtDisplayString()。

    (3)FakeNtDisplayString函数里面匹配”kisknl“字符串,如果是的话,就堆栈回溯到KiFastCallEntry中。

    (4)找到KiFastCallEntry的返回地址后,最后向上通过匹配特征码来找到KiFastCallEntry的hook点。

    5.每个被hook的函数使用一个结构体来保存hook信息,以便用来过滤和恢复Hook。

    1. typedef struct _HOOK_INFO_  
    2. {  
    3.     DWORD nShadowFuncionId;         // Shadow表函数的ID,SSDT表的函数此值为0  
    4.     PVOID pNtdllSsdtFunctionAddress;    // ntdll.dll中函数的地址,用来获取SSDT函数的ID,Shadow表的函数此值为0  
    5.     PVOID pFakeFunction;            // 保存过滤函数的地址  
    6.     PVOID pOrginFunction;           // 保存原始函数的地址  
    7. }HOOK_INFO, *PHOOK_INFO;  

    被hook的系统函数如下(XP系统,不同系统hook的函数有所不同):

    (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.经过这个分析,传说中的BIPS也就不再那么神秘了,其实质就是精简了的毒霸k+主防,去掉了注册表防御部分,做成了适合浏览器的一套防护体系。也就是说,猎豹浏览器自己实现了部分杀毒软件的防护功能,能够使得那些未安装杀毒软件或者即使是自身电脑已经中毒的用户在进行网购时可以免受病毒木马的侵害。这也正是其敢赔的信心之所在。

    2.而360所谓的安全浏览器就仅仅是集成了一款SandBox,平时根本不会自动入沙。对于普通用户来说,其与使用IE浏览器没多大差别。

  • 相关阅读:
    angularjs 学习笔记(一)
    iconfont项目成员添加不进去的问题
    服务器webapi集成极光推送学习笔记
    winform closing事件注册
    asp.net core webapi 似乎未安装在 IIS 中承载 .NET Core 项目所需的 AspNetCoreModule。请尝试修复 Visual Studio 以纠正该问题。
    css 行内元素设置宽高
    透过浏览器看HTTP缓存[转载]
    矢量字体图标
    HTML5新特性之WebRTC[转]
    一个前后端分离方案[转载]
  • 原文地址:https://www.cnblogs.com/vcerror/p/4289145.html
Copyright © 2020-2023  润新知