不是,真没人敢说吗?免杀大佬加入黑灰产还打得过吗?

**一、前言** ======== 大家好,我是来自顺丰安全成文实验室的一名老兵,代号“PX0”,我的任务是追踪威胁情报,深入分析最新黑灰产动向。近期,实验室捕获到一组“银狐”样本,经查,样本来源于伪装成主流会议软件的网站,网站通过提高搜索引擎的收录权重来诱骗用户下载该病毒软件。 ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-496e7e7e252405c8f406faa3aa6a4ade98fb05f9.png) 此前我也曾分析过“银狐”相关样本,但这回的新版本,免杀技术简直出神入化,主流的安全软件几乎拿它没辙。这让我心里直犯嘀咕:“难道真的有免杀界的高手‘叛变’,跑去给黑灰产当军师了?”不过别担心,接下来,就让我来带大家揭秘这位高手的免杀大招,再教大家几个怎么识别和防住它的高招! **二、本文关注点** ----------- - 此银狐分支样本在出现阶段,主流沙箱、EDR几乎无法检测,本文主要分享新增部分功能 - 攻击者更加注重杀软和防御能力对抗,引入了bypass检测、防病毒模拟器检测、RPC构建持久化 - 样本的进化更倾向于多段的内存加载、运行时动态解密,后续可能会出现rootkit类型的完全隐蔽后门 - 根据样本的函数代码通用特征提取检测规则、检测思路分享 **三、正文分析** ---------- ### 1、加载过程 在近期捕获的一批样本中,初始投递的加载器代码几乎一致,攻击者通过最少的API调用完成第一阶段的shellcode加载 (对通用杀毒软件来说,敏感API调用越少,风险相对越小); ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-7e0780a4ec5b1a9dd3198f6b584b08e237f23c1e.png) shellcode加载完成后,通过内联jmp rbx跳转0x1B0000执行,这里其实是有一步mov的地址转移操作,作用是避免出现jmp rax的明显内存调用特征,在8月迭代样本也出现了其他的寄存器调用; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-a798695d0ca466443d936022fe5de5d662275f64.png) ### 2、解密过程 进入shellcode内部,实际只有call一个有效指令,后续的所有字节都是加密状态;这类似cobaltstrike睡眠解密,此类函数适合作为检测特征,区别是此函数需在程序启动时检测; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-097c79dc6bb32bf5575659e8100117ce998d3a72.png) 解密函数即运行时的内部计算,进行了一系列循环右移、减法和取反操作,用于动态解密后续指令; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-ebc79810522caf278bc263ff84cf6975fb8f8150.png) 经对比可以看出,右侧部分指令被解密,被解密出来的部分实际是一个新的异或解密函数; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-0c1498b6836e15158b6da89b2837153083ff3d02.png) 经过长期跟踪发现,此函数出现在银狐多个版本,为了更清楚地了解功能和检测,我们代码还原这个函数; ```php unsigned char key = 0x91; ``` 从内存可以看到整个倒序解密的过程,运行完成后,整块shellcode代码被解密完成; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-15ab1b6cd053af0cdc8e45303074b874393b49c4.png) ### 3、环境检测、绕过 解密完成后首先进入sub\_99A5函数,此函数集成一些bypass和环境检测能力,是对比以往样本的增强部分; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-a7142f082776dfe40923c4137871cff2b2ad275b.png) 首先是bypass ETW和AMSI,实现方式完全相同;都是通过patch到对应函数开头一个0x3C字节即ret指令,完成扫描、日志输出的代码跳过; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-b893153034fdda67d3dacfffa9a8e5c9930bf68c.png) ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-341fa8d08546959c4d3020f7558b7a2e1b265517.png) ### 4、模拟环境检测 微软防病毒为首次扫描的程序提供了特殊的二进制模拟器环境,会附带一些虚拟模块和预定返回值;接下来的几个check函数是关联性代码,整体功能是为了检测Defender模拟环境; 判断程序名,如果匹配v5数组中的:\\myapp.exe(模拟进程名称,不是实际运行的进程)则退出进程; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-b506ca490dbd1ef1ef331bc2b0fb30eb6654245a.png) 以下是对防病毒模拟器初始化功能的部分逆向代码(详细内容可以参考2018年 BlackHat); ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-7ff7dbff70bd8c908660c29238afadaec3d2e5f2.png) 此函数使用两个未公开函数获取ntdll的导出表,并通过自定义ror算法计算apiHash(ntdll运行时模拟函数),如果命中任意3个Mpclient函数hash则返回错误码0xC0000462,再通过上层函数判断退出进程; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-f9a899768bce22e39597e49bda90115497110743.png) 分别调用Windows内核函数NtIsProcessInJob和NtCompressKey传入无效句柄,判断是否会返回虚拟模块的预定值,返回预期值则退出进程;![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-8aecee70831452e23f3ec65699e2f77b51421b6a.png) ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-01b821b1c46d0ecb70a59e3ac3000ee4a96580d4.png) ### 5、防御绕过 传入无效标识符,尝试动态加载COM类对象,判断返回值CLASS\_E\_CLASSNOTABAILABLE是否符合预期; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-95a315356622f934bf86612de6757257a0cdcfe2.png) 在堆分配一块较大的内存空间,尝试是否可以成功,通过这种方式验证系统环境; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-4588ec7d09b8b24ace0233af531d1566b3db0c0c.png) 调用VirtualAllocExNuma函数申请物理内存,此函数的运行环境要求存在多个物理CPU;判断SxIn.dll模块是否被当前进程加载(360沙箱的分析dll) ; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-dec1f5910c15b4a7608f17311d675edd9cf6cb9a.png) 获取SYSTEM\_INFO结构体,该结构体包含系统的硬件信息 ,判断处理器数量; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-d25cb60743455fc755ceceea1d870aa8fd8b7cd3.png) 获取当前主机名,通过主机名字符创建互斥体对象,判断是否存在; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-a516e37e50ecff500b5dbbfcf4b42e7b3d4807cb.png) 获取令牌信息,判断进程是否能提升权限,尝试runas以管理员身份启动,进入死循环(用户未通过会无限弹窗) ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-9b1927f38c33aa42a2b1c2aa3c3b8590cdae5a2f.png) 判断c:\\\\xxxx.ini文件是否存在,此文件默认由Gh0st后门创建; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-e6fd5212897e8e539b6fa0b4a8357e259b4eb40a.png) ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-248d55e4152f9645c2b127f0e1cb6eb2ffccb200.png) 通过GetTickCount64函数来测量Sleep调用前后的时间差,判断环境是否加速,\_\_rdtsc()函数同理; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-ca90d715ab587ba9e4ff11ed9e2d36e12aa00509.png) ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-539b2e73d1770d72448fa9104c3bf8c9d6672752.png) ### 6、防御削弱 通过扫描进程列表、服务进程、检索窗口类综合判断360杀软是否存在,综合来看攻击者更倾向于个人电脑; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-a7800448cf0362ebf0e663535c15489baf360083.png) 通过API发送线程消息、控制信号尝试关闭360杀软,若失败跳转到后续代码下载BYOVD驱动模块结束杀软; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-165d31e700b2278dc1f1821f0249afe521fb3a53.png) 检测WindowsDefender防病毒相关进程服务是否存在; 执行powershell命令添加C:\\ProgramData和C:\\User\\Public目录到扫描排除项(后门存放路径), 在8月的版本中会新增Program Files (x86)目录; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-24bc957ed71cd9142001dbddb0fa68f2b0c53184.png) ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-9a1b0a202d2ac89137ccd2400d7abb0c5d06fde0.png) 攻击者整体使用凯撒密码对字符串解密,此算法比较简单,使用固定key进行逐字节移位; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-edbd2d8e423b2466dbcefc938e0858b6aa7c4eb6.png) 此处解密完成后得到存储桶地址;根据地址表下载一组后门文件,下载完成后根据偏移标识填入随机值,使得下载文件没有固定hash(在以往的样本中,银狐会通过多种方式实现此功能); ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-23b1492948c72729a055a73309e3bd175a6ac0fe.png) 下载后的文件会随机存储在C:\\Users\\Public目录,并在下层创建随机字符目录;在某些版本,会另外下载一组后门隐藏在C:\\ProgramData目录中; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-a4ba96d04bc474a83a72083370bc5a2fbbba3de2.png) 下载BYOVD驱动模块,当进程权限不足时跳过此部分;payload下载完成后以内存dll形式解压,并获取导出函数指针,再使用RPC管道构建计划任务配置并调用NdrClientCall3函数创建,此任务用于维持BYOVD模块; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-bf66df629a00c3b0a78cd1e16fcc2af985f43cac.png) 此驱动漏洞属于EDR Killer类型,可以通过传入特定的控制码0x22E044和进程pid 在内核强制结束对应的进程; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-2d5883cb3187d58bbd696a6699ce5acdcb28d23d.png) 驱动内部会根据传入控制码触发调用,通过IOCTL(IO control codes)命令执行结束进程(支持Win11); ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-0f56df9d6a769f7aea98af8b8934f4feabb5c074.png) ### 7、后门远控 后门程序使用一组白加黑配合两个加密的payload文件, 这是银狐的惯用手法;dll使用VMProtect保护,运行后使用RC4算法对payload进行解密,完成后加载log.src文件,再次解密得到内存dll(VMProtect保护); ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-e4bd667d72b197edfaa26eda50e92ded683cbcab.png) 获取内存dll的导出函数CLRCreateInstance,此函数内部会为后门程序创建持久化任务、禁用UAC等功能; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-6d18c4a00ccd0857c4c1a4ed1fbde143b478ff6d.png) 最后会加载vcxproj后缀文件解密,完成后得到Gh0st变种后门,上线前会请求ip地址表,查看是否更新; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-d770efe1e1d91f5360cc4843493f4111d35c4348.png) Gh0st包含很多功能模块,具体功能此处不详细介绍了,后门还包含一些固定的cmd命令,适合作为检测补充; ![图片](https://shs3.b.qianxin.com/attack_forum/2024/08/attach-556a5a51890c144b88d2238cdfe5c46d205ef090.png) **四、检测思路分享** ------------ 1. **创建yara规则** 可以通过程序中的加解密函数代码创建yara规则,代码结构最好连续且固定; 2. **TTPs检测特征** 通过攻击者样本或实际应急过程中发现的TTPs作为检测特征; 3. **IOC检测** 在威胁情报痛苦金字塔的下三层中,域名相对更有效,也可根据情况选择hash检测; > B736A809E7A0F1603C97D43BBC7D2EA8A9CD080B A672825339ADBB5EEEF8176D161266D4E4A4A625 E49938CB6C4CE0D73DB2B4A32018B1FF71A2D7F0 9CAA4EC93CE1CD40BD5975645A110A4325310A3B D7F41D457C8358AF840B06914D1BC969EF7939D0 48B2090FDCEA7D7C0EB1544EBCDAF911796A7F67 > > omss.oss-cn-hangzhou.aliyuncs.com > > upitem.oss-cn-hangzhou.aliyuncs.com > > 1o2.oss-cn-beijing.aliyuncs.com > > 25o.oss-cn-beijing.aliyuncs.com > > 98o.oss-cn-beijing.aliyuncs.com > > vauwjw.net > > cinskw.net > > hucgiu.net (针对样本的具体yara、TTPs规则等,后续将会同步到顺丰安全应急响应中心预推出的**成文实验室知识星球**,敬请期待!)
原始链接: https://forum.butian.net/share/3705
侵权请联系站方: [email protected]

相关推荐

换一批