一次沙箱分析记录
发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370
0x00 计划制定 确定信息收集方案收集的信息传递方案分析 0x01 如何收集信息 通过编写代码程序,实现想要的功能,在沙箱内执行,并把数据传递出来。 这里利用在线的DNSLOG平台,用C代码发送一个http请求。 上传程序到微步社区沙箱检测 dnslog平台同时也收到了相应 由此可见,这个思路行得通。下边开始进一步尝试。 接着获取系统信息,以及系统中安装了哪些软件 把编译好的程序上传到分析平台进行分析 同样的,服务端也收到了相应。可以看到两个北京的IP,并且收集到安装的应用信息。 当然,这些信息可以在分析平台上直接看到。 我们的目的也不是收集这些信息,主要为了找到系统特征,从而识别沙箱系统。 一般从驱动文件、计算机主机名、CPU核心数、进程文件等方面检测是否在虚拟机中。 0x02 系统分析 主要收集沙箱的驱动文件、计算机主机名、CPU核心数、进程文件,然后从中找出特定规律,从而进行识别。 编写脚本,获取计算机名 char computerName[MAX_COMPUTERNAME_LENGTH + 1];DWORD size = sizeof(computerName) / sizeof(computerName[0]);if (!GetComputerNameA(computerName, &size)) { return "Error getting computer name";} 获取CPU核心数 SYSTEM_INFO sysInfo;GetSystemInfo(&sysInfo);int cores = sysInfo.dwNumberOfProcessors; 获取进程文件 // 创建进程快照HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hProcessSnap == INVALID_HANDLE_VALUE) { std::cerr << "Failed to create process snapshot." << std::endl; return L"";} PROCESSENTRY32 pe32;pe32.dwSize = sizeof(PROCESSENTRY32); // 获取第一个进程信息if (!Process32First(hProcessSnap, &pe32)) { std::cerr << "Failed to retrieve process information." << std::endl; CloseHandle(hProcessSnap); return L"";}// 后边对进程进行遍历。没有采用直接获取进程的函数,因为那样获取的不完整。 本地进行测试 接收端 下边拿到沙箱进行测试,看看效果 查看日志,可以看到有连接过来 主机名、核心数、进程等信息也成功获取。 主机名、CPU核心数没什么明显特征,下边详细看下进程。 共116个进程,去掉常见的系统进程svchost.exe,还剩59个 smss.exe - 会话管理子系统,Windows 的核心进程。csrss.exe - 客户端/服务器运行时子系统,Windows 的另一个核心进程。wininit.exe - Windows 启动应用程序。winlogon.exe - Windows 登录应用程序。services.exe - 服务和控制器应用程序,管理系统服务。lsass.exe - 本地安全性子系统服务,处理与安全相关的功能。fontdrvhost.exe - Windows 字体驱动程序主机,负责管理字体操作。dwm.exe - 桌面窗口管理器,负责 Windows 中的图形效果。spoolsv.exe - 打印池服务,管理打印任务。audiodg.exe - Windows 音频设备图形隔离,处理与音频相关的进程。AcrylicService.exe - 该软件是Windows的本地 DNS 代理。sihost.exe - Shell 基础结构主机,管理 Windows 界面的多个图形元素。ctfmon.exe - 监视活动窗口,并为语音识别、书写识别、键盘、翻译和其他中文可选用户输入方法技术提供文本输入服务支持。。taskhostw.exe - Windows 任务主机,托管后台任务。explorer.exe - Windows 资源管理器,文件和文件夹管理界面。ChsIME.exe - 中文输入法编辑器(IME)。StartMenuExperienceHost.exe - 托管 Windows 启动菜单体验。RuntimeBroker.exe - 处理 Windows 商店应用的应用程序权限和数据访问。ApplicationFrameHost.exe - 托管通用 Windows 平台(UWP)应用程序。MicrosoftEdge.exe - Microsoft Edge 网页浏览器。browser_broker.exe - Windows 浏览器代理程序,处理 Microsoft Edge 和 Windows 之间的通信。dllhost.exe - COM 代理,将 COM 对象托管在与调用进程分开的进程中。Windows.WARP.JITService.exe - 与 Windows Runtime Just-In-Time(JIT)编译服务相关。MicrosoftEdgeSH.exe - Microsoft Edge SmartScreen 进程。MicrosoftEdgeCP.exe - Microsoft Edge 内容进程。WindowsInternal.ComposableShell.Experiences.TextInput.InputApp.exe - Windows 文本输入应用程序。WeChat.exe - 微信应用程序。WmiPrvSE.exe - Windows 管理规范提供者服务。SgrmBroker.exe - 系统保护运行时监视器代理。ShellExperienceHost.exe - Windows Shell 体验主机。unsecapp.exe - WMI 未安全脚本宿主。GoogleUpdateSetup.exe - Google 更新安装程序。csfalconservice.exe - CrowdStrike公司的EDR产品。RemindersServer.exe - 与提醒功能相关,可能是特定应用程序的一部分。GoogleUpdate.exe - Google 更新服务。CSFalconContainer.exe - CrowdStrike公司的EDR产品。backgroundTaskHost.exe - 托管通用 Windows 平台(UWP)应用程序的后台任务。WUDFHost.exe - Windows 驱动程序基础 - 用户模式驱动程序框架主机进程。Detonate.exe - 未知。UnThreat.exe - 与防病毒软件(UnThreat Antivirus)有关。utsvc.exe - 与防病毒软件(UnThreat Antivirus)有关。system.exe - 本程序。conhost.exe - 控制台窗口主机,管理控制台窗口。 去掉所有系统进程,剩下如下应用进程: dVbLgmPuXy.exe - 未知,应该是一个随机生成的名字。WeChat.exe - 微信应用程序。GoogleUpdateSetup.exe - Google 更新安装程序。csfalconservice.exe - CrowdStrike公司的EDR产品。GoogleUpdate.exe - Google 更新服务。CSFalconContainer.exe - CrowdStrike公司的EDR产品。Detonate.exe - 未知。UnThreat.exe - 防病毒软件(UnThreat Antivirus)。utsvc.exe - 防病毒软件(UnThreat Antivirus) ,是UnThreat Service Manager的一部分。 其中最特别的是Detonate.exe,网上只找到两个相关的信息。一个是病毒样本,另一个就是其他大佬分析微步沙箱时抓取的进程。 那么这个很有可能就是微步沙箱的一个特征了。 0x03 常见虚拟机分析 下边主要从驱动文件、计算机主机名、CPU核心数、进程文件等方面,分析常见虚拟机。常见的虚拟机有VMware、VirtualBox、Hyper-V、Xen、Parallels等,都有各自的驱动文件。 比如VMware的文件特征:vm。但是宿主机也会有这种特征的文件。宿主机和虚拟机都在C:\Program Files\Common Files\VMware目录下有一些驱动文件。但是文件略有不同,如下,左为宿主机,右为虚拟机。 并且,部分同名文件,在宿主机和在虚拟机中的签名不一样。 0x04 总结 综上所述,每种虚拟化技术特征各不相同,仅凭单一维度来确定虚拟沙箱不准确,需要多个维度综合判定。针对木马程序,想要绕过沙箱检测,针对每种沙箱编写不同的识别代码,显然很臃肿。 文章来源:先知社区(la0gke)原文地址:https://xz.aliyun.com/t/13256 黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担! 如侵权请私聊我们删文 END