freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

不是,真没人敢说吗?免杀大佬加入黑灰产还打得过吗?
2024-08-14 10:30:24

一、前言

大家好,我是来自顺丰安全成文实验室的一名老兵,代号“PX0”,我的任务是追踪威胁情报,深入分析最新黑灰产动向。近期,实验室捕获到一组“银狐”样本,经查,样本来源于伪装成主流会议软件的网站,网站通过提高搜索引擎的收录权重来诱骗用户下载该病毒软件。

1723600674_66bc0f221f9df157a4873.png!small?1723600674739

此前我也曾分析过“银狐”相关样本,但这回的新版本,免杀技术简直出神入化,主流的安全软件几乎拿它没辙。这让我心里直犯嘀咕:“难道真的有免杀界的高手‘叛变’,跑去给黑灰产当军师了?”不过别担心,接下来,就让我来带大家揭秘这位高手的免杀大招,再教大家几个怎么识别和防住它的高招!

二、本文关注点

  • 此银狐分支样本在出现阶段,主流沙箱、EDR几乎无法检测,本文主要分享新增部分功能
  • 攻击者更加注重杀软和防御能力对抗,引入了bypass检测、防病毒模拟器检测、RPC构建持久化
  • 样本的进化更倾向于多段的内存加载、运行时动态解密,后续可能会出现rootkit类型的完全隐蔽后门
  • 根据样本的函数代码通用特征提取检测规则、检测思路分享

三、正文分析

1、加载过程

在近期捕获的一批样本中,初始投递的加载器代码几乎一致,攻击者通过最少的API调用完成第一阶段的shellcode加载 (对通用杀毒软件来说,敏感API调用越少,风险相对越小);1723600684_66bc0f2c7e9021ba295e9.png!small?1723600685749shellcode加载完成后,通过内联jmp rbx跳转0x1B0000执行,这里其实是有一步mov的地址转移操作,作用是避免出现jmp rax的明显内存调用特征,在8月迭代样本也出现了其他的寄存器调用;

1723600695_66bc0f379be34caecfb6a.png!small?1723600696986

2、解密过程

进入shellcode内部,实际只有call一个有效指令,后续的所有字节都是加密状态;这类似cobaltstrike睡眠解密,此类函数适合作为检测特征,区别是此函数需在程序启动时检测;

1723600703_66bc0f3f7d3531bbc933b.png!small?1723600704057

解密函数即运行时的内部计算,进行了一系列循环右移、减法和取反操作,用于动态解密后续指令;

1723600711_66bc0f478a04f461416c4.png!small?1723600712576

经对比可以看出,右侧部分指令被解密,被解密出来的部分实际是一个新的异或解密函数;

1723600720_66bc0f504cbc98ea9c1e9.png!small?1723600721248

经过长期跟踪发现,此函数出现在银狐多个版本,为了更清楚地了解功能和检测,我们代码还原这个函数;

unsignedcharkey = 0x91;unsignedlongshellcode_len = 0x9E15;unsignedchar*shellcode_ptr = (unsignedchar*)0x18001F;// 算法说明:倒叙逐字节异或解密,key随着位置不断变化while(shellcode_len != 0) {*(shellcode_ptr + shellcode_len) ^= key;  // xor byte ptr ds:[r12+rcx], r9bkey += *(shellcode_ptr + shellcode_len);  // add r9b,byte ptr ds:[r12+rcx] shellcode_len--;}

从内存可以看到整个倒序解密的过程,运行完成后,整块shellcode代码被解密完成;

1723600729_66bc0f599a0f8ccc448be.png!small?1723600731810

3、环境检测、绕过

解密完成后首先进入sub_99A5函数,此函数集成一些bypass和环境检测能力,是对比以往样本的增强部分;

1723600737_66bc0f615eecb340ca3b3.png!small?1723600737729

首先是bypass ETW和AMSI,实现方式完全相同;都是通过patch到对应函数开头一个0x3C字节即ret指令,完成扫描、日志输出的代码跳过;1723600745_66bc0f69d4c2593b092c5.png!small?1723600746471

4、模拟环境检测

微软防病毒为首次扫描的程序提供了特殊的二进制模拟器环境,会附带一些虚拟模块和预定返回值;接下来的几个check函数是关联性代码,整体功能是为了检测Defender模拟环境;

判断程序名,如果匹配v5数组中的:\myapp.exe(模拟进程名称,不是实际运行的进程)则退出进程;

1723600767_66bc0f7f035f2f729a26c.png!small?1723600768314

以下是对防病毒模拟器初始化功能的部分逆向代码(详细内容可以参考2018年 BlackHat);

1723600774_66bc0f8645585380b3271.png!small?1723600774598

此函数使用两个未公开函数获取ntdll的导出表,并通过自定义ror算法计算apiHash(ntdll运行时模拟函数),如果命中任意3个Mpclient函数hash则返回错误码0xC0000462,再通过上层函数判断退出进程;

1723600781_66bc0f8da1ade105c4d80.png!small?1723600782372

分别调用Windows内核函数NtIsProcessInJob和NtCompressKey传入无效句柄,判断是否会返回虚拟模块的预定值,返回预期值则退出进程;1723602247_66bc15471becf837fa5ef.png!small?1723602247684

5、防御绕过

传入无效标识符,尝试动态加载COM类对象,判断返回值CLASS_E_CLASSNOTABAILABLE是否符合预期;

1723602254_66bc154e867b3c46dfb65.png!small?1723602254801

在堆分配一块较大的内存空间,尝试是否可以成功,通过这种方式验证系统环境;

1723602261_66bc1555d2a7aaa3f61a5.png!small?1723602262366

调用VirtualAllocExNuma函数申请物理内存,此函数的运行环境要求存在多个物理CPU;判断SxIn.dll模块是否被当前进程加载(360沙箱的分析dll) ;

1723602270_66bc155eb5f3b9860b9d3.png!small?1723602271761

获取SYSTEM_INFO结构体,该结构体包含系统的硬件信息 ,判断处理器数量;

1723602279_66bc15675289e0615e99a.png!small?1723602279765

获取当前主机名,通过主机名字符创建互斥体对象,判断是否存在;

1723602286_66bc156eb54df530737c7.png!small?1723602287446

获取令牌信息,判断进程是否能提升权限,尝试runas以管理员身份启动,进入死循环(用户未通过会无限弹窗)

1723602297_66bc1579b650070676f99.png!small?1723602298294

判断c:\\xxxx.ini文件是否存在,此文件默认由Gh0st后门创建;

1723602305_66bc1581453a8c333c1d3.png!small?1723602307185

1723602310_66bc1586eb8e338213d30.png!small?1723602311531

通过GetTickCount64函数来测量Sleep调用前后的时间差,判断环境是否加速,__rdtsc()函数同理;

1723602318_66bc158e40dcb4e6ae022.png!small?1723602318580

1723602323_66bc1593b6488a467a8b5.png!small?1723602324032

6、防御削弱

通过扫描进程列表、服务进程、检索窗口类综合判断360杀软是否存在,综合来看攻击者更倾向于个人电脑;

1723602340_66bc15a4758a2042dc5e5.png!small?1723602340861

通过API发送线程消息、控制信号尝试关闭360杀软,若失败跳转到后续代码下载BYOVD驱动模块结束杀软;

1723602347_66bc15ab9808aaed300ec.png!small?1723602348411

检测WindowsDefender防病毒相关进程服务是否存在;

执行powershell命令添加C:\ProgramData和C:\User\Public目录到扫描排除项(后门存放路径),在8月的版本中会新增Program Files (x86)目录;

1723602356_66bc15b454f31d6bdf994.png!small?1723602356851

1723602363_66bc15bb96d4b15702c03.png!small?1723602364106

攻击者整体使用凯撒密码对字符串解密,此算法比较简单,使用固定key进行逐字节移位;

1723602381_66bc15cd2bc7b80aaf83c.png!small?1723602381534

此处解密完成后得到存储桶地址;根据地址表下载一组后门文件,下载完成后根据偏移标识填入随机值,使得下载文件没有固定hash(在以往的样本中,银狐会通过多种方式实现此功能);

1723602390_66bc15d637619d5695dc4.png!small?1723602391189

下载后的文件会随机存储在C:\Users\Public目录,并在下层创建随机字符目录;在某些版本,会另外下载一组后门隐藏在C:\ProgramData目录中;

1723602397_66bc15dd286fca7ab84f7.png!small?1723602397755

下载BYOVD驱动模块,当进程权限不足时跳过此部分;payload下载完成后以内存dll形式解压,并获取导出函数指针,再使用RPC管道构建计划任务配置并调用NdrClientCall3函数创建,此任务用于维持BYOVD模块;

1723602404_66bc15e43c8aea08fdd2c.png!small?1723602404904

此驱动漏洞属于EDR Killer类型,可以通过传入特定的控制码0x22E044和进程pid 在内核强制结束对应的进程;

1723602412_66bc15ecc0bfd4f80889d.png!small?1723602413303

驱动内部会根据传入控制码触发调用,通过IOCTL(IO control codes)命令执行结束进程(支持Win11);

1723602419_66bc15f31b2cc6123fd83.png!small?1723602420239

7、后门远控

后门程序使用一组白加黑配合两个加密的payload文件, 这是银狐的惯用手法;dll使用VMProtect保护,运行后使用RC4算法对payload进行解密,完成后加载log.src文件,再次解密得到内存dll(VMProtect保护);

1723602425_66bc15f9e8a475f1be96d.png!small?1723602426931

获取内存dll的导出函数CLRCreateInstance,此函数内部会为后门程序创建持久化任务、禁用UAC等功能;

1723602433_66bc1601460539d6982f4.png!small?1723602434986

最后会加载vcxproj后缀文件解密,完成后得到Gh0st变种后门,上线前会请求ip地址表,查看是否更新;

1723602440_66bc160881704cd5afbbb.png!small?1723602440966

Gh0st包含很多功能模块,具体功能此处不详细介绍了,后门还包含一些固定的cmd命令,适合作为检测补充;

1723602447_66bc160f566f8a80148cf.png!small?1723602448914

四、检测思路分享

  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规则,后续将会同步到顺丰安全应急响应中心预推出的成文实验室知识星球,敬请期待!)


# 灰产圈
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录