云沙箱流量识别技术剖析

相信大家都知道,沙箱识别是老生常谈的话题了,目前大部分的识别方案都是基于样本侧去完成的。

例如常规方式,包括硬件检查(CPU核心数、输入输出设备、内存)、鼠标移动检查、进程名、系统服务、开机时长等,都不能直观准确地识别出目标进行流量交互的服务器是否是沙箱环境。

举个例子,之前看到有师傅使用鼠标移动检查的方式去识别目标是否是沙箱虚拟机环境。 那么问题来了,这种方式在钓鱼的场景下,我们虽然知道目标是PC客户端,有人使用这台电脑,但是对于目标是服务器场景的情况下,这种方法就不适用了。

运维人员并不会时刻都在每台服务器前面操作,所以我们需要一种更加优雅的识别方式。

当然,沙箱是快照还原,时间一般都存在问题。并且由于进行sleep加速,意味着这时候在样本侧进行延迟执行操作会被沙箱反调。

一旦样本被反调了,那么其样本就身处异常环境下,这时候延迟几秒后获取本地时间,就能够识别出异常。

这当然也是一种很好的反调试手段。但是,上述这些操作都是在样本侧完成的,需要定制化脚本实现功能,出现问题后进行排查等等都会比较麻烦。

本文将深入浅出地讲解基于流量侧对沙箱请求流量进行识别的方法,这种方法也能更易部署且有效识别,从而针对性的反制沙箱分析流量。

1 TLS JA3指纹

正式讲解流量侧识别云沙箱技术之前,我们先简述一下TLS JA3(S)指纹的基本概念。

JA3为客户端与服务器之间的加密通信提供了识别度更高的指纹,通过TLS指纹来识别恶意客户端和服务器之间的TLS协商,从而实现关联恶意客户端的效果。

该指纹使用MD5加密,易于在任何平台上生成,目前广泛应用于威胁情报。例如,在某些沙箱的样本分析报告中,可以看到以此佐证不同样本之间的关联性的样例。

如果可以掌握C2服务器与恶意客户端的JA3(S),即使加密流量且不知道C2服务器的IP地址或域名,我们仍然可以通过TLS指纹来识别恶意客户端和服务器之间的TLS协商。

相信看到这里大家就能想到,这也正是对付域前置、反向代理、云函数等流量转发隐匿手段的一种措施,通过沙箱执行样本识别与C2之间通信的TLS协商并生成JA3(S)指纹,以此应用于威胁情报从而实现辅助溯源的技术手段。

JA3通过对客户端发送的ClientHello数据包中的以下字段收集字节的十进制值: SSL 版本、接受的密码、扩展列表、椭圆曲线、椭圆曲线格式。

然后它将这些值按顺序连接在一起,使用“,”分隔每个字段,使用“-”分隔每个字段中的每个值。

示例:

771,39578-4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,23-65281-10-11-35-16-5-13-18-51-45-43-27-17513-21,56026-29-23-24,0

MD5编码:

9ef1ac1938995d826ebe3b9e13d9f83a

如上示例,最终得到并应用的JA3指纹即:

9ef1ac1938995d826ebe3b9e13d9f83a

之前文章提到的JARM与JA3(S)都是TLS指纹,那么他们的区别是什么呢?

一是JARM指纹是主动扫描并生成指纹的,类似FUZZ的效果;

二是JA3(S)是基于客户端与服务端流量交互识别并生成的指纹。

2 基于流量的云沙箱识别

上面简述了JA3(S)指纹的概念,这里应用到识别沙箱流量,也是类似的原理。我们需要一个基础设施可以监控识别上线主机和C2服务器之间的TLS协商,从而生成请求主机的JA3指纹。

这里我们以RedGuard举例。

通过上图不难看出,RedGuard充当着C2服务器与上线主机流量交互的代理主机,所有的流量都会经由它转发到C2服务器上,那么在这个过程中,我们基于流量侧生成并识别JA3指纹的想法就可以实现了,在不修改后端C2设施源码的基础上,赋予了生成识别JA3指纹的功能。

在云沙箱的立场上,通过监控样本与C2服务器之间流量交互,生成JA3(S)指纹,识别恶意客户端,从而进行关联。

而我们逆向思考,同样作为C2前置的流量控制设施,我们也可以进行这样的操作获取客户端请求的JA3指纹,通过对不同沙箱环境的调试,获取这些JA3指纹形成指纹库,从而形成基础拦截策略。

在测试某厂商沙箱环境时发现,其请求交互的出口IP虽然数量不大,但是通过IP识别沙箱并不准确,并且这是很容易改变的特征,但是其在多种不同配置的相同系统环境下JA3指纹是唯一的。

设想在分阶段木马交互的过程中,加载器会首先拉取远程地址的shellcode,那么在流量识别到请求符合JA3指纹库的云沙箱特征时,就会进行拦截后续请求。那么无法获取shellcode,不能完成整个加载过程,沙箱自然不能对其完整的分析。

如果环境是无阶段的木马,那么沙箱分析同样无法最终上线 到C2服务器上,相信大家都有睡一觉起来,C2上挂了一大堆超时已久的沙箱记录的经历吧。

当然理想状态下,我们可以对不同沙箱环境进行识别,这主要也是依赖于指纹库的可靠性。

3 识别网络空间测绘扫描

在测试的过程中,指纹库添加GO语言请求库的JA3指纹后,监测RedGuard请求流量情况。可以看到,大部分的请求触发了JA3指纹库特征的基础拦截。

这里我猜测其测绘产品在该扫描中,底层语言是以GO语言实现的大部分扫描任务。通过一条链路,不同底层语言组成的扫描逻辑最终完成了整个扫描任务,这也就解释了部分测绘产品的扫描为什么触发了GO语言请求库的JA3指纹拦截特征。

当然,触发拦截规则的请求都会被重定向到指定URL站点。

4 后记

JA3(S)指纹当然是可以更改的,但是会很大程度上提高成本,同样,修改基础特征无法对其造成影响。如果准备用劫持的方式去伪造JA3指纹,并不一定是可行的,OpenSSL会校验extension。如果和自己发出的不一致,则会报错:

OpenSSL: error:141B30D9:SSLroutines:tls_collect_extensions:unsolicitedextension

伪造JA3指纹可以看以下两个项目:

“https://github.com/CUCyber/ja3transport”

“https://github.com/lwthiker/curl-impersonate”

通常自主定制化的恶意软件会自己去实现TLS,这种情况下JA3指纹可以唯一的指向它。但是现在研发一般都会用第三方的库,不管是诸如Python的官方模块还是win下的组件,如果是这种情况,那么JA3就会重复,误报率很高。

当然应用到我们的流量控制设施,其实不需要考虑这些固定组件的问题,因为并不会有正常的封装组件的请求,多数也是上面提到某些语言编写的扫描流量。反而以此对这些语言请求的JA3指纹封装进指纹库,也能起到防止扫描的效果。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/132588.html<

(0)
管理的头像管理
上一篇2025-02-27 02:20
下一篇 2025-02-27 02:21

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注