Henry's Blog
  • CobaltStrike系列
    • CobaltStrike的基本操作
    • CobaltStrike会话管理
    • CobaltStrike重定向服务
    • CobaltStrike钓鱼攻击
    • 凭据导出与存储
    • Beacon的常用操作
    • DnsBeacon详解
    • 权限提升
    • 简单的内网信息收集
    • Cross2生成LinuxShell
    • CNA插件开发
    • Profile编写规则
    • BOF开发
    • execute-assembly原理
    • Vps搭建可能遇到的问题
  • OPSEC(免杀)
    • BypassPPL
    • Certutil绕过技巧
    • DLL劫持技术(白+黑)
    • PEB伪装
    • PpidSpoofing
    • Python反序列化免杀
    • WebShell绕过技巧
    • mimikatz免杀
    • 利用CobaltStrikeProfile实现免杀
    • 利用Windows异常机制实现Bypass
    • 削弱WindowsDefender
    • 模拟Powershell实现Bypass
    • 浅谈CobaltStrikeUDRL
    • 添加用户和计划任务(Bypass)
    • 移除NtDll的hook
    • 定位修改MsfShellcode特征码实现免杀
    • 利用COM接口实现进程断链执行.md
    • 免杀工具篇
      • Invoke-Obfuscation
      • Shellter
    • 流量检测逃避
      • CobaltStrike流量逃避.md
      • MSF流量加密.md
      • NC反弹Shell流量加密.md
  • Shellcode加密
    • 前置知识
    • XOR加密
    • AES加密
  • Shellcode加载器
    • 常见的加载方式
    • 分离加载
    • 创建纤程加载
    • 动态调用API加载
    • 基于APC注入加载
    • 基于反调试加载
    • 基于回调函数加载
    • 基于线程池加载
    • 模块踩踏
    • 进程镂空注入(傀儡进程)
    • 反射dll注入(内嵌式)
  • Web渗透
    • 信息收集
    • 各类Webshell
    • 基本漏洞利用
    • 远程命令执行漏洞
    • sql注入
    • sqlmap的使用方法
  • 内网渗透
    • 内网渗透前置知识
    • BadUsb制作
    • Linux反弹Shell总结
    • 内网渗透技术总结
    • 横向移动
      • GoToHttp
      • MS14-068
      • PassTheHash
      • PassTheTicket
      • Psexec
      • RustDesk
      • SMB横移
      • WMI横移
      • 用户枚举与爆破
    • 流量加密
      • CobaltStrike流量加密
      • MsfShell流量加密
      • OpenSSL加密反弹shell
  • 协议分析
    • TCP_IP协议
  • 权限提升
    • 土豆提权原理
    • UAC提权
  • 蓝队技术
    • 应急响应流程总结
  • 进程注入
    • Conhost注入
    • session0注入
    • 内核回调表注入
    • 剪切板注入
  • 逆向技术
    • HOOK技术
    • IDA遇到的坑
    • Shellcode的原理与编写
    • Windbg的使用
    • 使用Stardust框架编写Shellcode
    • PeToShellcode
    • 破解系列
      • PUSH窗体大法
      • VM绕过技巧(易语言)
      • Crackme_1
      • 反破解技术
      • 按钮事件特征码
      • 逆向调试符号
      • 破解实例
        • IDA逆向注册码算法
  • 钓鱼技术
    • Flash网页钓鱼
    • LNK钓鱼
    • 自解压程序加载木马
  • 隧道应用
    • 隧道应用前置知识
    • BurpSuite上游代理
    • DNS隧道传输
    • EarthWorm内网穿透
    • Frp内网穿透
    • ICMP隧道传输
    • MsfPortfwd端口转发
    • Neo-reGeorg内网穿透
    • NetCat工具使用
    • Netsh端口转发
    • SSH端口转发
    • 正向连接与反向连接
  • 基础学习
    • C和C++
      • C++编程
      • C程序设计
    • Linux学习
      • Linux Shell编程
      • linux基础
    • Python基础
      • python之Socket编程
      • python之多线程操作
      • python基础
      • python算法技巧
    • Qt基础
      • Qt笔记
    • 逆向基础
      • PE结构
      • Win32
      • 汇编语言
  • 漏洞复现
    • Web漏洞
      • ApacheShiro反序列化漏洞
    • 系统漏洞
      • Linux漏洞
        • ShellShock(CVE-2014-6271)
  • 靶场系列
    • Web靶场
      • pikachu靶场
      • sqli-labs
      • upload-labs
    • 内网靶场
      • Jarbas靶场
      • SickOS靶场
      • W1R3S靶场
      • prime靶场
      • vulnstack靶场系列一
      • vulnstack靶场系列二
      • vulnstack靶场系列四
  • 代码审计
    • PHP代码审计基础
  • 一些杂七杂八的
    • 开发工具与环境
      • Github的使用
      • JSP环境搭建
      • Pycharm设置代码片段
      • VS2017安装番茄助手(破解版)
      • VisualStudio项目模板的使用
      • WindowsServer搭建IIS环境
      • 安装Scoop
      • c++安装vcpkg
      • dotnet-cnblog的安装与使用
      • gitbook使用教程
      • kali安装burpsuite
      • 配置win2012域服务器
      • VSCode配置MinGW
    • 踩坑记录
      • BurpSuite导入证书
      • Powershell禁止执行脚本
      • centos7没有显示ip
      • kali安装pip2
      • oracle12没有scott用户
由 GitBook 提供支持
在本页
  • 简介
  • dns2tcp
  • 工具安装及配置
  • 配置域名解析
  • 服务端操作
  • 客户端操作
  • Xshell动态端口转发(dynamic)
  • Proxifier配置系统代理
  • 运行测试
  • 参考文章
  1. 隧道应用

DNS隧道传输

上一页BurpSuite上游代理下一页EarthWorm内网穿透

最后更新于1年前

简介

DNS隧道是一种相对隐蔽的隧道, 通过将其他协议封装到DNS协议中来进行传输通信

因为DNS协议是网络中的基础协议且必不可少, 所以大部分防火墙和入侵检测设备是不会对DNS流量进行拦截, 这就给DNS作为隐蔽通信提供了有力条件, 从而可以利用它实现诸如僵尸网络或木马的远程控制通道和对外传输数据等等

DNS隧道依据其实现方式大致可分为直连和中继两类:

  • 直连: 用户端直接和指定的目标DNS服务器建立连接,然后将需要传输的数据编码封装在DNS协议中进行通信。这种方式的优点是具有较高速度,但蔽性弱、易被探测追踪的缺点也很明显。另外直连方式的限制比较多,如目前很多的企业网络为了尽可能的降低遭受网络攻击的风险,一般将相关策略配置为仅允许与指定的可信任DNS服务器之间的流量通过

  • 中继隧道: 通过DNS迭代查询而实现的中继DNS隧道,这种方式及其隐秘,且可在绝大部分场景下部署成功。但由于数据包到达目标DNS服务器前需要经过多个节点的跳转,数据传输速度和传输能力较直连会慢很多

dns2tcp

工具安装及配置

在自己的云服务器上执行如下命令安装dns2tcp工具

apt-get update
apt-get install dns2tcp

修改dns2tcp配置文件: vim /etc/dns2tcpd.conf, 设置域名及DNS隧道密码, 注意监听地址要修改成0.0.0.0

检查云服务器的53端口是否被占用: netstat -anp | grep "53", 发现53端口上运行了systemd-resolve服务, 此服务无法使用kill命令进行关闭, 只能使用: systemctl stop systemd-resolved

​

配置域名解析

此处我选择的是godaddy的域名: henry666.xyz

添加一条A记录,主机记录为dns, 记录值为124.71.209.202

再添加一条NS记录, 主机记录为dns2tcp, 记录值为dns.henry666.xyz

解释: A记录表示dns.henry666.xyz指向124.71.209.202; NS记录表示若想要知道dns2tcp.henry666.xyz的ip地址, 就要通过dns.henry666.xyz去查询

上述配置完成后, 在我们的云服务器上对53端口抓包来验证NS记录是否设置成功, 命令如下所示:

tcpdump -n -i eth0 udp dst port 53

在客户端cmd命令输入: nslookup dns2tcp.henry666.xyz, 随后查看云服务上的抓包情况, 发现有很多数据回显, 说明这些二数据最终都流向了dns.henry666.xyz这个域名服务器

这里我简单说明下DNS查询数据的流程: 首先解析此域名会先去本地的hosts文件查询数据, 查询不到再去学校的DNS服务器查询(此处我用的是校园网), 再查询不到又去根域名henry666.xyz的godaddy域名服务器查询, 然后godaddy域名服务器告诉我们此数据要去找dns.henry666.xyz这个域名服务器, 最后数据包流向了我们的云服务器

服务端操作

服务端(云服务器)输入如下命令运行dns2tcpd工具

dns2tcpd -f /etc/dns2tcpd.conf -F -d 3		

客户端操作

将dns2tcp工具解压至客户主机, 并在文件夹打开cmd命令输入: dns2tcpc -r ssh -k henry666 -z dns2tcp.henry666.xyz 124.71.209.202 -l 8888 -c -d 3

-r : 后接服务名称ssh/socks/http中的任意一个 -z : 后接你设置的NS记录以及云服务器ip -l : 后接本地监听端口 -d : 开启Debug模式

使用xshell连接本机的8888端口, 随后输入要登录的用户名及密码, 即可连接上云服务器

Xshell动态端口转发(dynamic)

鼠标右键ssh会话, 添加隧道转发规则, 此处选择SOCKS, 侦听端口为1080

随后点击查看->隧道窗格, 查看刚刚创建的转移规则是否生效

Proxifier配置系统代理

点击配置文件->代理服务器, 添加代理服务器127.0.0.1:1080

运行测试

打开火狐浏览器, 搜索IP可发现本机IP为云服务器的IP

我用其他浏览器访问网页总是显示“代理服务器连接失败”, 只有使用火狐浏览器才能正常访问页面

在运行浏览器的期间, 可在proxifier界面看到浏览器的网页数据流向至socks代理服务器

参考文章

  • https://blog.csdn.net/a15608445683/article/details/122803795

  • https://blog.csdn.net/jd_cx/article/details/122660833

  • https://www.baidu.com/link?url=8_ioEY96YssEa3B_EXOcBNLrb4YDg6sngpAj93DiGuWOX_zZEC8qIUADERWQAsFY&wd=&eqid=d0ca3b550000fa500000000663650fe8

image-20221102202110650
image-20221103165234024
image-20221102204446000
image-20221103202824464
image-20221103203030470
image-20221103203106700
image-20221102213628103
image-20221104214436862
image-20221103205222419
image-20221103232830018
image-20221103233414959
image-20221103233502907