飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2837|回复: 2

[病毒分析] [翻译]规避技术:用户界面伪装

  [复制链接]
  • TA的每日心情
    开心
    2019-3-15 11:00
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2021-5-20 10:52:09 | 显示全部楼层 |阅读模式
    本帖最后由 梦幻的彼岸 于 2021-5-20 10:54 编辑

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

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

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

    代码样本
    [C++] 纯文本查看 复制代码
    BOOL vbox_window_class()
    {
      HWND hClass = FindWindow(_T("VBoxTrayToolWndClass"), NULL);
      HWND hWindow = FindWindow(NULL, _T("VBoxTrayToolWnd"));
    
      if (hClass || hWindow)
        return TRUE;
      else
        return FALSE;
    }

    该代码样本的作者:al-khaser project
    2.检查顶层窗口数量是否过少
    如上所述,主机操作系统包含大量的窗口,而虚拟机和沙盒则努力将打开的窗口保持在可能的最低限度。窗口数量被测量,并得出结论,这是否是一个虚拟机。
    如果操作系统中的窗口太少,这可能是虚拟环境的一个迹象。常规的主机有很多(>10)顶级窗口。
    代码样本
    [C++] 纯文本查看 复制代码
    BOOL CALLBACK enumProc(HWND, LPARAM lParam)
    {
        if (LPDWORD pCnt = reinterpret_cast<LPDWORD>(lParam))
            *pCnt++;
        return TRUE;
    }
    
    bool enumWindowsCheck(bool& detected)
    {
        DWORD winCnt = 0;
    
        if (!EnumWindows(enumProc,LPARAM(&winCnt))) {
            std::cerr << "EnumWindows() failed\n";
            return false;
        }
    
        return winCnt < 10;
    }

    识别标志
    没有为这个规避技术提供识别标志,因为很难说代码的目的是执行某种规避技术而不是 "合法 "行动。
    反制措施
    • 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已经实现了所有这些功能,但由于代码的模块化结构,需要更多的空间来展示这个工具的代码样本,以达到相同的目的。这就是为什么我们决定在整个百科全书中使用其他伟大的开源项目作为例子。

    评分

    参与人数 1威望 +1 飘云币 +1 收起 理由
    zhczf + 1 + 1 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2023-5-13 23:22
  • 签到天数: 853 天

    [LV.10]以坛为家III

    发表于 2021-5-20 23:52:21 | 显示全部楼层
    感谢楼主分享
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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