跳板攻击之:dns2tcp

1 dns2tcp简介

dns2tcp 是一个利用 DNS 隧道转发 TCP 连接的工具,支持 KEY 和 TXT 类型的请求,用 C 语言开发。它分为两个部分,服务端和客户端,服务端运行在 linux服务器上,客户端可以运行在 linux 和 windows 上,编译完成后在服务端上的可执行文件名称为 dns2tcpd,在客户端上的名称为dns2tcpc,kali 默认安装了二者。

  • 采用直连,但速度不是特别乐观
  • 利用合法DNS服务器实现DNS隧道
  • C/S(dns2tcpc / dns2tcpd)结构
  • 默认通过TXT记录(base64编码)传输数据(A记录长度有限)
  • 隧道建立后保持连接,大概0.6s发出一个数据包,最大是3s可以设置
  • 还需要配合其他代理工具

2 dns2tcp 食用说明

2.1 dns2tcpd 服务端

2.1.1 服务端参数说明

# dns2tcpd
-F 强制在在台运行,默认在后台
-i IP address
监听 ip,默认 0.0.0.0
-f 配置文件
指定使用的配置文件路径
-d debug level
指定调试级别,输出相关级别日志,默认为 1,2,3

2.1.2 配置文件

listen = 127.0.0.1
port = 53
# If you change this value, also change the USER variable in /etc/default/dns2tcpd
user = nobody
chroot = /tmp
domain = your.domain
resources = ssh:127.0.0.1:11022, smtp:127.0.0.1:25
  • 最后的resources里面配置的是dns2tcp供客户端使用的资源。作用是:客户端在本地监听一个端口,并指定使用的资源,当有数据往端口传送后,dns2tcp客户端将数据用DNS协议传动到服务器,然后服务器将数据转发到对应的资源配置的端口中。

2.2 客户端参数说明

# dns2tcpc
-c : 启用压缩
-z <domain> : 指定所使用的域名
-d <1|2|3> : 调试级别 (1, 2 or 3)
-r <resource> : 访问的目标资源
-f <filename> : 配置文件路径
-l <port|-> : 本地监听端口
-T <TXT|KEY> : DNS 请求类型,默认为 TXT

3 实验环境

4 利用过程

  1. 实现:内网Win10通过DNS隧道代理访问到外网

  2. 设置域名信息

    # 添加 A 记录 acdns.fcarey.com 指向 VPS IP
    
    # 添加 NS 记录 aclab.fcarey.com 指向 acdns.fcarey.com
  3. VPS 服务端上安装DNS2TCP

    apt install dns2tcp
  4. VPS 服务端上修改配置文件如下

    listen = 0.0.0.0
    port = 53
    # If you change this value, also change the USER variable in /etc/default/dns2tcpd
    user = acuser
    key = Admin123
    chroot = /tmp
    domain = aclab.fcarey.com
    resources = ssh:127.0.0.1:22 , http:127.0.0.1:80 , socks:127.0.0.1:12321
    • user:密码是服务端系统的用户
    • key:设置VPS密码
  5. 启动 DNS2TCPD 服务

    dns2tcpd -f /etc/dns2tcpd.conf -F -d 3
  6. Win10客户端执行

    # 使用http代理
    dns2tcpc -l 4444 -r ssh -k Admin123 -z aclab.fcarey.com <VPSIP> -c -d 3 # 使用使用SOCKS代理
    dns2tcpc -l 12321 -r socks -k Admin123 -z aclab.fcarey.com <VPSIP> -c -d 3
  7. 剩下的就是

    1. 通过DNS隧道远程连接VPS ssh服务,并通过开启SSH本地转发功能,通过SSH代理转发访问外网其他目标。

      ssh lighthouse@127.0.0.1 -p12321

    2. 或通过VPS上建立本地socks代理访问,使内网Win10主机访问外网

跳板攻击之:dns2tcp的更多相关文章

  1. msf客户端渗透(七):跳板、post模块、自动运行脚本

    跳板 假设有这样一个场景,有一个局域网内网网关是1.1.1.1,局域网里的主机1是kali,它经过一个防火墙连接到公网,主机2和主机3在另一个内网网关为2.1.1.1的局域网,由于防火墙做了设置,只有 ...

  2. MSF基础攻击实践报告

    MSF基础攻击实践 MSF的六个模块:exploit,encoder,payload,aux,post,nops exploit——渗透攻击模块 测试者利用它来攻击一个系统,程序,或服务,以获得开发者 ...

  3. chapter1 渗透测试与metasploit

    网络对抗技术课程学习 chapter1 渗透测试与metasploit 一.读书笔记 二.渗透测试 通过模拟恶意攻击者的技术与方法进行攻击,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响 ...

  4. 渗透攻防工具篇-后渗透阶段的Meterpreter

    作者:坏蛋链接:https://zhuanlan.zhihu.com/p/23677530来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 前言 熟悉Metasploit ...

  5. Kali Linux Web 渗透测试— 第二十课-metasploit.meterpreter

    Kali Linux Web 渗透测试— 第二十课-metasploit.meterpreter 原文链接:http://www.xuanhun521.com/Blog/7fc11b7a-b6cb-4 ...

  6. (一)走进Metasploit渗透测试框架

    渗透测试的流程 渗透测试是一种有目的性的,针对目标机构计算机系统安全的检测评估方法,渗透测试的主要目的是改善目标机构的安全性.渗透测试各个阶段的基本工作: 1.前期交互阶段 在这个阶段,渗透测试工程师 ...

  7. Meterpreter命令详解

      0x01初识Meterpreter 1.1.什么是Meterpreter Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以 ...

  8. Metasploit用法大全

    Metasploit用户接口msfconsoleArmitage:  KaliGUI启动:armitage命令启动 Metasploit功能程序msfvenom集成了载荷生成器.载荷编码器.空指令生成 ...

  9. 《Metasploit渗透测试魔鬼训练营》第一章读书笔记

    第1章 魔鬼训练营--初识Metasploit 20135301 1.1 什么是渗透测试 1.1.1 渗透测试的起源与定义 如果大家对军事感兴趣,会知道各国军队每年都会组织一些军事演习来锻炼军队的攻防 ...

  10. 第一次亲密接触MSF

    第一次亲密接触MSF Metasploit Framework介绍 Metasploit是一款开源安全漏洞检测工具,附带数百个已知的软件漏洞,并保持频繁更新.被安全社区冠以“可以黑掉整个宇宙”之名的强 ...

随机推荐

  1. GitHub上的一个笔记相关小项目

    就是一个笔记屑小项目, C++编写,有想一起开发的私信 AlgorithWeaver/V-note (github.com) 项目名V-note QVQ

  2. jjava基础语法

    java基础语法1 注释 注意: SDK要选择JDK1.8,且下面的语言要选择8,配置完这个环境后,JAVA才能正常运行. 单行注释 //+text 快捷键:ctrl+/ 多行注释  /*+text+ ...

  3. Jenkins基本配置

    1.Configure System (系统设置) 在系统设置这里,只需要设置最后面的一项,配置远程服务器地址,即代码最终运行的服务器地址信息,当然这里是可以配置多台远程Linux服务器的,配置完成后 ...

  4. ping localhost时出现::1的原因以及解决办法

    ping localhost时出现: 在cmd中ping localhost解析出来的是ipv6的::1的原因是windows有个优先解析列表,当ipv6的优先级高于ipv4时,就会出现这种情况. 具 ...

  5. Python + logging 控制台有日志输出,但日志文件中数据为空

    源码: def output(self, level, message): fh = logging.FileHandler(self.logpath, mode='a', encoding='utf ...

  6. Python使用pipreqs生成requirements.txt

    当一个Python完成后,若要在新环境下运行,往往需要重新安装各种包依赖,这就需要记录当前环境下所用到的包.包的版本等,非常麻烦,这里介绍一种方法,可以较为快速便捷地生成requirements.tx ...

  7. react 高效高质量搭建后台系统 系列 —— 脚手架搭建

    其他章节请看: react 高效高质量搭建后台系统 系列 脚手架搭建 本篇主要创建新项目 myspug,以及准备好环境(例如:安装 spug 中用到的包.本地开发和部署.自定义配置 react-app ...

  8. JavaScript:操作符:空值合并运算符(??)

    这是一个新增的运算符,它的功能是: 对于表达式1 ?? 表达式2,如果表达式1的结果是null或者undefined时,返回表达式b的结果:否则返回表达式a的结果: 它与赋值运算符结合使用,即??=, ...

  9. if多条件判断

    在一个if语句中,括号里面包含多个条件时.条件是否被执行要看if语句里面各个条件是"与"的关系还是"或"的关系. #include<stdio.h> ...

  10. 真实世界的人工智能应用落地——OpenAI篇 ⛵

    作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 本文地址:https://www.showmeai.tech/artic ...