dns隧道的智能检测方案(利用DNS隧道通信木马分析)
在2017年4月份,我们发布了一篇关于恶意程序的详细报道,该程序使用DNS隧道与C&C服务器进行通信。这项研究促使我们开发了一种技术来检测类似的威胁,这使得我们能够使用DNS隧道技术来收集大量的恶意软件样本。
在本文中,我们将研究一些使用DNS隧道技术的典型的恶意程序。卡巴斯基实验室的安全产品使用通用的('Trojan.Denes.UDP.C&C'或'Backdoor.Win32.Denis。*')判断方法或人为检测的方法来检测它们。
Trojan.Win32.Ismdoor.gen下面的第一个恶意软件有多层的C&C通信协议结构,类似于OSI模型。由于这点将它与文章中的其他木马区分开来,而Trojan.Win32.Ismdoor.gen的创造者显然在设计和开发方面付出了很多努力。
当然,这个木马的传输层使用了DNS隧道技术。尽管DNS服务器配置和实际的协议允许这个值更大,但发出的'数据报'的长度还是被限制为60个字符,C&C服务器的命令被解析成IPv6地址。
图 传输层请求和响应的结构
在DNS隧道传输层之上有一个会话层协议,这意味着其具有交换“短”和“长”数据包的功能。不同于传输层的是,它有一个机制来检查丢失的消息。当全部的包发送并接收后,传输层会话终止,会话层通过检查每个发送的数据包是否并正确接收从而关闭。这一切都取决于服务器决定使用哪个选项;例如,在受感染的计算机上使用“长”数据包协议上传文件。
图 短消息交换协议的例子
短消息在这个级别上,程序的操作可以分解为五个步骤:
告诉服务器会话ID
用数据包发送消息
发送已发送数据包的序号
接收即将收到的数据包序号
接收即将收到的数据包
一个会话例子如下图:
1.告诉服务器会话ID
每次通信会话建立时,程序都会生成一个GUID并将其发送到服务器。然后使用此GUID来标识该会话中的所有通信,并总是将其写入第三级域名的位置。在这种情况下,url的结构如下:
n.n.c...com
消息A67DDB8A2A17334765443253702AA3就是一个积极的回应。否则,GUID再次发送到服务器。
2.用数据包发送消息
正如我们前面所说,选定的通信机制对数据包大小施加了一定的限制。发出的消息被分成60个字节长的数据包,并以URL的形式发送:
..dr.. .com
得到的响应必须是A67DDB885A3432576548A2A3707334。
3.发送已发送数据包的序号
当所有数据包发送成功后,它们的序号将作为查询发送,格式如下:
n..f...com
应该注意的是,分组编号从0开始, 得到的响应为20202020202020202020202020202020。
4.接收即将收到的数据包序号
这一步的URL格式如下:
n.n.fc...com
响应必须采用以下格式:
A67D: DB8: 85A3: 4325: 7654: 8A2A ::
5. 接收即将到来的数据包
接收下一个数据包的请求如下所示:
www. .s. ..com
即将收到的的消息以16字节的IPv6数据包的形式出现。
长消息在这种情况下,与服务器的通信可以分解成以下步骤:
发送文件被分割的数据包的数量;
发送文件;
定期向服务器发送查询以检查丢失的数据包;
重发丢失的数据包。
1.发送数据包的数量
查询: n....com
响应: A67DDB8A2A17334765443253702AA3
2.发送文件
查询: ..d...com
响应:服务器没有回复此消息,或发送“服务器失败”。
3.定期向服务器发送查询以检查丢失的数据包
程序定期地将下面的查询发送到服务器:
uff.< Number of packets >..com
响应:20202020202020202020202020202020
之后,实现上一部分中的“接收即将到来的数据包数量”和“接收即将到来的数据包”。
作为响应,发送服务器丢失的包的数量(以逗号分隔)。
4.重发丢失的数据包
查询: ..dl...com
OSI中的表示层负责编码和解码消息,服务器响应中的IPV4地址段是一个的常规16进制的ASCII字符串,向服务器发送查询包含的DNS查询,使用重新定义的索引表,并用Base64编码。
图 第一条消息和它的表示层的示例
应用程序层只是一组类似于C&C服务器的类GET查询:
检查连接:查询为字符串'M:CC?';
注册连接:这决定了可用的命令,以及受感染计算机和木马的ID(M:AV?appId = <...>&uniqueId = <...>);
确定注册命令;
'泛型'响应(M:ME?appId = <...>&message = <...>);
接收命令(M:GAC?appId = 8);
确认命令(M:CR?cd = );
发送文件(M:SF?commandId=CmdResult=|||);
接收文件(M:GF?)。
如上所述,这个木马是精心设计和编写的,有一个经过深思熟虑的通信系统以及一个有效载荷的丰富功能。下面是一些它的主要命令:
SI - 发送有关感染系统的信息;
RunNewVersion - 更新;
Restart - 重启;
remove - 删除;
CreateMimi1Bat - 执行 Mimikatz;
ExecuteKL - 激活键盘记录器;
RemoveKL - 删除由ExecuteKL创建的文件;
GetVersion - 报告木马的版本;
PauseUpload - 暂停上传文件到服务器;
ResumeUpload - 恢复上传文件到服务器;
PauseDownload - 暂停从服务器上下载文件;
ResumeDownload - 恢复从服务器上下载文件;
PWS - 截图;
DownloadFile - 从服务器下载文件;
UploadFile - 上传文件到服务器。
其他可用于木马的命令负责其操作的逻辑(如改变C&C地址等)。
Backdoor.Win32.ClIEcker下一个样本使用了一种不同的工作流,基于ANY DNS 数据包。该机制允许恶意程序从服务器接收随机结构的DNS数据包。这个木马没有任何逻辑上的子协议 - 只有发送和接收数据包的请求。我们能够检测到这个木马的几处不同,接下来我们描述一下这些特征。
Backdoor.Win32.ClIEcker的一个有趣的特点是如何找到受害者计算机的IP地址 - 它使用了Internet Explorer的COM接口。该木马包含一系列网页地址,访问者在其中可以看到他们自己的IP地址(例如http://www.ip-adress.com)。该木马随机选择其中一个地址访问,在页面主体中查找IP地址后面的字符串,并提取该字符串。为了尽可能掩盖这个查询,木马还将选择一个随机引用地址,并将其用于Internet Explorer的相应请求。
唯一不清楚的是为什么使用这种复杂的方法,通常,木马通过向站点返回包含IP地址的字符串作为HTML页面的数据,来找出计算机的IP地址。也许这样做是为了避免解决这个木马的IoC列表中的IP地址,或者它可能只是一个从代码存储库或论坛中进行的无意义的剪切和粘贴工作。
更复杂的是,木马程序支持一个命令,在服务器请求的情况下,在Internet
Explorer中打开一个网站 - 为此使用形式为“IEXPLORE.EXE
google.com”的简单调用,而不是复杂的COM交互。因此,虽然木马可能被检测为Trojan-Clicker,但正如我们在前面的文章中所解释的那样,木马程序通常使用虚拟桌面来执行此操作。
图 用于解析IP /引用地址和通过COM接收页面内容的URL地址示例
在发起请求时,描述受害者系统的几个参数与一个唯一的RC4密钥一起发送,该密钥是使用受害者计算机中的以下信息创建的:
操作系统的版本;
显示调制解调器连接是否被使用的逻辑标志位;
木马ID;
经加密的用户IP地址;
反病毒服务代码。
解释下最后一点,该木马包含一个安全软件列表;每个安全产品在发送到服务器的代码中都有一个编码号。例如,所有与McAfee产品相关的进程都将通过反病毒服务代码中的标志0x400表示。
接下来,我们将给出一些命令的描述:
代码号为8的命令值得特别注意,因为它包含了木马的主要功能。它的工作是下载和启动有效载荷。这个命令有以下的参数:
文件以TXT格式的DNS数据包中传输。
在默认情况下,所有与服务器进行的通信均使用基于受害者计算机信息生成的RC4密钥进行加密。但是,服务器可能会要求更改密钥,并在文件下载请求中发送新的密钥。在任何情况下,生成S盒所需的密钥都是自己加密的,随后使用结果字符串。
S盒根据分组编号进行修改,因此每个新分组都是唯一的。
解密完成后,使用CRC32检查生成的文件的完整性。
Backdoor.Win32.DenisBackdoor.Win32.Denis具有最简单的结构和DNS服务器通信功能。这个恶意软件与本文中描述的木马具有相同的名称,这是仅有的一点相同之处。
这个恶意程序使用一个DNS格式的数据包与DNS服务器进行通信; 在这种格式中,响应大小被限制为4字节。所有迹象表明这是一个常规的木马下载器,并且下载文件的速度很慢,发送到服务器的消息的典型格式如下所示:
IC...
“Container”域指的是木马程序的打包形式,其结构会因命令和响应而变化很大。UID是长度为0x20个字节长度的用户ID,它是一个Base32编码的字符串,经解码后具有以下的结构:
“container”也是一个Base32编码的字符串:
在这里一共有四种类型的容器,木马根据收到的命令和执行结果确定需要哪一个:
命令
从命令的描述可以看出,这个木马的目的是下载和启动文件。
本文由看雪翻译小组 fyb波 编译,来源securelist 转载请注明来自看雪社区
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com