设为首页收藏本站
查看: 1759|回复: 0

[翻译]规避技术:用户界面伪装

[复制链接]
  • TA的每日心情
    开心
    2022-1-9 18:41
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2021-9-12 16:44:05 | 显示全部楼层 |阅读模式
    备注
    原文地址:https://evasions.checkpoint.com/techniques/ui-artifacts.html
    原文标题:Evasions: UI artifacts
    更新日期:2021年5月20日
    此文后期:根据自身所学进行内容扩充
    因自身技术有限,只能尽自身所能翻译国外技术文章,供大家学习,若有不当或可完善的地方,希望可以指出,用于共同完善这篇文章。

    目录
    • 用户界面伪装检测方法
    • 1.检查操作系统中是否存在具有特定类名的窗口
    • 2.检查顶层窗口数量是否过少
    • 识别标志
    • 反制措施
    • 归功于

    用户界面伪装检测方法
    这一组描述的技术滥用了这样一个事实:一些窗口的名称只存在于虚拟环境中,而不是通常的主机操作系统。此外,主机操作系统包含大量的窗口,而虚拟机和沙盒则倾向于将打开的窗口保持在最低水平。它们的数量被检查出来,并得出结论,这是否是一个虚拟机。
    1.检查操作系统中是否存在具有特定类名的窗口
    检测表
    检查操作系统中是否存在具有以下类别名称的窗口:
    检测
    类别名称
    VirtualBox
    VBoxTrayToolWndClass
    VBoxTrayToolWnd

    代码样本
    1. BOOL vbox_window_class()
    2. {
    3.   HWND hClass = FindWindow(_T("VBoxTrayToolWndClass"), NULL);
    4.   HWND hWindow = FindWindow(NULL, _T("VBoxTrayToolWnd"));

    5.   if (hClass || hWindow)
    6.     return TRUE;
    7.   else
    8.     return FALSE;
    9. }
    复制代码

    该代码样本的作者:al-khaser project
    2.检查顶层窗口数量是否过少
    如上所述,主机操作系统包含大量的窗口,而虚拟机和沙盒则努力将打开的窗口保持在可能的最低限度。窗口数量被测量,并得出结论,这是否是一个虚拟机。
    如果操作系统中的窗口太少,这可能是虚拟环境的一个迹象。常规的主机有很多(>10)顶级窗口。
    代码样本
    1. BOOL CALLBACK enumProc(HWND, LPARAM lParam)
    2. {
    3.     if (LPDWORD pCnt = reinterpret_cast<LPDWORD>(lParam))
    4.         *pCnt++;
    5.     return TRUE;
    6. }

    7. bool enumWindowsCheck(bool& detected)
    8. {
    9.     DWORD winCnt = 0;

    10.     if (!EnumWindows(enumProc,LPARAM(&winCnt))) {
    11.         std::cerr << "EnumWindows() failed\n";
    12.         return false;
    13.     }

    14.     return winCnt < 10;
    15. }
    复制代码

    识别标志
    没有为这个规避技术提供识别标志,因为很难说代码的目的是执行某种规避技术而不是 "合法 "行动。
    反制措施
    • versus windows with certain class names: Exclude windows with particular names from enumeration or modify these names.
    • versus checking top level windows' number: Create fake windows in the system so that their number will not be small or equal to the predefined numbers.

    归功于
    归功于开源项目,代码样本来自该项目:
    尽管Check Point工具InviZzzible已经实现了所有这些功能,但由于代码的模块化结构,需要更多的空间来展示这个工具的代码样本,以达到相同的目的。这就是为什么我们决定在整个百科全书中使用其他伟大的开源项目作为例子。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    红盟社区--红客联盟 

    Processed in 0.056481 second(s), 21 queries.

    站点统计| 举报| Archiver| 手机版| 黑屋 |   

    备案号:冀ICP备20006029号-1 Powered by HUC © 2001-2021 Comsenz Inc.

    手机扫我进入移动触屏客户端

    关注我们可获取更多热点资讯

    Honor accompaniments. theme macfee

    快速回复 返回顶部 返回列表