精华内容
下载资源
问答
  • 本文主要介绍利用 DNS 查询流量来封装 TCP 流量 , 达到绕过防火墙的目的,搭建DNS隧道绕过网络认证,实现上网。

    使用DNS2TCP搭建DNS隧道,绕过网络认证,实现免验证上网

    正常情况下,当我们连上酒店或者其他需要验证才可以使用的网络后,虽然上不了网,但是我们的计算机却分配到了IP地址(不分配IP地址web认证就实现不了),此时若我们进行一些上网的操作,那么计算机的数据包将从TCP443端口上发出,校园网、酒店等网关就会拦截从这个端口上发出的数据包。同理从其它端口上发出的数据包也会遭到拦截。

    在这里插入图片描述
    但是有一个神奇的端口,从这个端口发出的数据包不会遭到网关拦截,它就是UDP53端口(UDP53端口上运行的协议是DNS协议(域名解析协议))。

    连接
    未通过账号验证
    不通
    分配IP
    53/67/68 端口转发
    本机
    校园网
    TCP443等端口
    阻塞
    互联网
    DNS协议畅通

    常见的内网环境中 , 防火墙可能会限制只允许 udp 53 端口出站,这样我们可以利用 DNS 查询流量来封装 TCP 流量 , 达到绕过防火墙的目的。

    堵塞 但 分配IP
    安装dns2tcpc
    连接
    安装配置
    安装配置
    启动
    启动
    Internet
    电脑-客户端
    开启
    隧道
    公网VPS
    dns2tcp
    socks代理

    在这里插入图片描述
    DNS隧道。从名字上来看就是利用DNS查询过程建立起隧道,传输数据。

    具体来说:你在做 DNS 查询的时候,如果查的域名在 DNS 服务器本机的 cache 中没有,它就会去互联网上查询,最终把结果返回给你。如果你在互联网上有台定制的服务器。只要依靠 DNS 的这层约定,就可以交换数据包了。从 DNS 协议上看,你是在一次次的查询某个特定域名,并得到解析结果。但实际上,你在和外部通讯。你没有直接连到局域网外的机器,因为网关不会转发你的 IP 包出去。但局域网上的 DNS 服务器帮你做了中转。这就是 DNS Tunnel 了。

    在这里插入图片描述
    上图简单介绍了DNS tunnel的原理。当你连接上wifi后,你可以使用DNS服务器,向这个服务器的53端口发送数据,请求一个域名,比如 dns.dengxj.com 。这台DNS服务器上没有 dns.dengxj.com,那么它将向root,也就是根域名服务器请求,看看根知道不。root一看是.com的域名,就交给.com域名服务器进行解析。.com的域名服务器一看是.dengxj.com那么就会去找.dengxj.com的域名服务器,看看它有没有这条记录。.dengxj.com的域名服务器上一看是 dns.dengxj.com,如果它有这条A记录,那么就会返回dns.dengxj.com的地址。

    这里如果我们指定一个公网服务器,也就是上图绿色的服务器,在这台服务器中跑DNS tunnel的server端,作为一台假的DNS服务器,他不会返回dns.dengxj.com的地址,但是它会将你的请求转发到已经设定的端口中,比如SSH的22端口,22端口返回的数据它将转发到53端口返回给客户端(也就是你的电脑)。这时,你就可以用这台公网服务器的资源了,如果是一台http或者sock代理,那么你就可以用这个代理免费上网了。

    dns2tcp 是一个使用C语言开发的利用DNS隧道转发TCP连接的工具。

    客户端会在本地监听一个端口,并指定:要使用服务端上面的哪个资源(如ssh、socket、http)

    我们只需把数据扔进本地的该端口,dns2tcpc将使用DNS隧道传送到服务端。

    随后,服务端根据客户端指定要使用的资源,将数据转发到其本机的相应端口中去。

    这里的相应端口,可通过配置文件(/etc/dns2tcpd.conf)配置。

    需要提前准备的材料:
    1. 公网VPS(最好在中国大陆)
    2. 域名 (文末代码块给出了无域名情况下的解决方式)
    其他准备工作:
    1. 将TCP80,TCP443,UDP53端口的数据设置为允许入站与出站
      在这里插入图片描述

    2. 设置域名解析
      在这里插入图片描述
      第一条NS解析是在告诉域名系统,想要知道IP地址,就去问““dengxj.com
      第二条A类解析是在告诉域名系统,“dengxj.com”的IP地址是“xxx.xx.xx.xxx

    A记录 : 用来指定主机名或域名对应的IP地址记录,通俗来说A记录就是服务器的IP,域名绑定A记录就是告诉DNS,当你输入域名的时候给你引导向设置在DNS的A记录所对应的服务器。

    NS记录 : 域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析,简单的说,NS记录是指定由哪个DNS服务器解析你的域名。

    MX记录 : 邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。

    CNAME记录 : 别名记录,允许您将多个名字映射到同一台计算机。通常用于同时提供WWW和MAIL服务的计算机。

    设置监听端口
    假DNS服务器
    本机
    客户端
    53
    SSH http sock端口
    互联网

    当你连接上wifi后,你可以使用DNS服务器,向这个服务器的53端口发送数据,如果请求域名 dengxj.com 。这台DNS服务器上没有 dengxj.com,那么它将向root,也就是根域名服务器请求,看看根知道不。root一看是.com的域名,就交给.com域名服务器进行解析。.com的域名服务器一看是.dengxj.com那么就会去找.dengxj.com的域名服务器,看看它有没有这条记录。这里我设置了NS解析,是在告诉域名系统,想要知道IP地址,就去问““dengxj.com” ,第二条A类解析是在告诉域名系统,“dengxj.com”的IP地址是“xxx.xx.xx.xxx”。

    如果在这台IP地址是“xxx.xx.xx.xxx”的服务器中跑DNS tunnel的server端,作为一台假的DNS服务器,他不会返回dengxj.com的地址,但是它会将你的请求转发到已经设定的端口中,比如SSH的22端口 (http的8080端口,socks的7777端口,端口选择较为随意 可通过配置文件(/etc/dns2tcpd.conf)配置),端口返回的数据它将转发到53端口返回给客户端(也就是你的电脑)。

    SSH用于使用 公网服务器的资源
    http或者sock用于代理免费上网
    客户端CMD后 -r 后可选择接<ssh/socks/http中的任意一个>

    一、公网VPS配置

    (1)安装配置dns2tcp

    #安装dns2tcp
    sudo apt-get install dns2tcp
    
    #配置dns2tcp
    sudo vim /etc/dns2tcpd.conf  将其中内容修改为:
    
    listen = 0.0.0.0
    port = 53
    user = nobody
    chroot = /tmp
    domain = dengxj.com         #NS解析对应的域名
    resources = ssh:IP:22,http:IP:8080,socks:IP:7777   #其IP地址是云服务器公网IP,端口随意设置为了7777
    

    (2) 安装配置dante-server

    接下来需要搭建一个socks代理。我选择使用dante-server来搭建。首先安装它,命令如下:

    #安装
    apt-get install dante-server
    
    #配置
    sudo vim /etc/danted.conf  将其中内容修改为:
    
    logoutput: /var/log/sockd.log
    internal: eth0 port = 7777
    external: eth0
    socksmethod: username none
    user.privileged: proxy
    user.unprivileged: nobody
    client pass {
        from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
    }
    socks pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        protocol: tcp udp
    }
    

    我们现在看到的配置文件配置了一个监听端口7777的socks代理,无身份认证,允许任何客户端连接。

    二、办公电脑(客户端)软件配置

    获得dns2tcp的客户端程序dns2tcpc

    #Linux
    sudo apt-get install dns2tcp
    
    #Windows系统
    下载dns2tcp客户端程序dns2tcpc
    

    三、搭建隧道

    (1)公网VPS搭建隧道

    #创建后台会话 并 启动dns2tcp的服务器端
    screen -S dns2tcpd
    dns2tcpd -f /etc/dns2tcpd.conf -F -d 2
    
    其中参数“-f /etc/dns2tcpd.conf”指定了配置文件,“-F”要求程序在前台运行,“-d 2”指明了输出调试信息,级别为2。
    
    #启动socks代理
    /etc/init.d/danted start
    

    (2)办公电脑(客户端)搭建隧道

    #建立DNS隧道  打开CMD,键入并执行如下命令:
    
    dns2tcpc -r socks -z dengxj.com IP -l 8888 -d 2
    
    -r 后接服务名称<ssh/socks/http中的任意一个>
    -z 后接你设置的NS记录,和你的VPS公网ip  <公网ip> 可不填,不写将使用中继模式,否则使用直连模式
       中继模式像我们平时上网一样,DNS解析先经过互联网的迭代解析,最后指向我们的恶意DNS服务器。相比直连,速度较慢,但是更安全。
    -l 后接本地端口,随便一个常用端口就行,8888”指明了隧道的这头监听的端口
    -d 开启 Debug ,-d 2”指明了输出调试信息,级别为2,作用和服务器端相同
    -k 密码 可以省略
    

    (3)测试

    在办公电脑(客户端)里打开火狐浏览器,设置socksv5代理,IP地址是“云服务器公网IP”,端口是8888,如下图所示。

    在这里插入图片描述
    其他浏览器,可以打开Internet选项,依次选择”连接”->”局域网设置”->”为LAN使用代理服务器”->”高级”

    在socks/套接字输入框中,要使用的代理服务器地址填 云服务器公网IP,端口填8888,然后点击确定。

    在这里插入图片描述
    若是前面各步均正确无误,最后出现了错误:

    No response from DNS xx.xx.xx.xx
    
    把办公电脑的DNS直接设置为“xxx.xx.xx.xxx”(公网IP)
    
    #也可以在dns2tcpc的参数中指明要使用的DNS服务器
    dns2tcpc -r socks -z dns2tcp.werner.wiki dns.werner.wiki -l 8888
    
    第二个解决办法我们实际上完全抛开了现有的域名系统,也就没有了注册域名设置解析的必要。但若防火墙规则较为严格,只允许目的IP是特定DNS服务器的数据包通过,此方法便行不通了。
    

    参考:
    1: https://blog.csdn.net/wn314/article/details/81430554
    2: https://blog.csdn.net/qq_42433224/article/details/82668821

    展开全文
  • 1.很多采用web认证的WIFI网络是允许DNS查询,这时候就可以建立DNS隧道绕过认证系统。 2. 安装完DNS隧道就可以通过映射的本地端口(自行指定)访问服务器端口。 二 .条件 1.拥有一个域名,和一台DNS隧道服务器...

    用dns2tcp建立DNS隧道

    by HYH | 2018 年 3 月 31 日 上午 9:26

    一.简介

    1.很多采用web认证的WIFI网络是允许DNS查询,这时候就可以建立DNS隧道绕过认证系统。

    2. 安装完DNS隧道就可以通过映射的本地端口(自行指定)访问服务器端口。

    二 .条件

    1.拥有一个域名,和一台DNS隧道服务器(如果是内网,这些都可以自行设置,但如果最终目的是穿透到公网,那就只能自行申请域名)。

    在域名解析的管理界面里添加一条NS记录和一条A记录。NS记录把一个域或子域(用于DNS隧道的配置及连接)交由自己指定的服务器解析,A记录则指定DNS隧道服务器IP地址。

    2 . 安装dns2tcp

    1)使用带有dns2tcp的系统(如kali)。

    2)安装二进制软件包。

    3)源码编译安装。(可使用的源码:https://github.com/HEYAHONG/dns2tcp)

    三 .配置及使用

    1 . 服务端

    选项:

    其中最主要的选项之一就是-f选项指定配置文件。配置文件主要设置如下:

    listen = 要监听的网卡ip,0.0.0.0表示所有网卡。

    port = 监听的端口

    domain = DNS 隧道服务器管理的域名,客户端就是通过指定域名连接服务端。

    resources = 资源,可定义多个资源,用逗号隔开。每个资源可用 资源名(协议名):IP:端口 表示。资源必须能够访问(服务必须存在)。

    此外,在linux系统还有user和chroot选项用于指定dns2tcpd运行的用户(为了安全,指定为nobody)。

    2 . 客户端

    选项:

    最主要的选项:

    -z  域名(用于连接服务器)

    -r  指定资源名

    -l 指定映射的本地端口(自行指定未被使用的本地端口)

    示例:

     

     

     


    转载于:https://www.cnblogs.com/HEYAHONG/p/8682140.html

    展开全文
  • DNS隧道技术绕过上网认证限制

    千次阅读 2016-03-14 09:29:35
    Author:Pax.Mac Team核心--Conqu3r ...DNS隧道技术的实现:主要是通过对DNS查询机制的特殊性来利用的一种技术。DNS的隧道的工作原理: DNS查询是一种递归查询机制,如果本地没有记录,就会其

     Author:Pax.Mac Team核心--Conqu3r

    在OWASP2013的沙龙上,某牛分享了一个好的tips。记录了下来,回来学习了下,然后分享出来,知道这是干什么用的同学,可以学习下。

    一、DNS隧道实现原理

    DNS隧道技术的实现:主要是通过对DNS查询机制的特殊性来利用的一种技术。DNS的隧道的工作原理:

    DNS查询是一种递归查询机制,如果本地没有记录,就会其它服务器发起请求查询结果。然后,在需要认证的ISP或者防火墙,发现过滤规则的请求时,它们就会将查询结果的TCP或者UDP包返回结果内容进行丢弃,保返回域名的查询IP地址。查询方式如下图所示:

    tcp-over-dns-diagram

    也就是说,如果我们的请求数据包中的数据,不含过滤规则时,有限制的ISP或者防火墙则不会进行丢包处理。所以,我们在发起请求时,将请求数据包内容通过标准的DNS协议进行加密,标记解析请求的DNS地址,则有限制的ISP在解析客户端发起的域名请求时,无法识别地址,而去指定的DNS服务器上进行请求查询。此时,我们在指定的DNS服务器上进行数据包解密。再将查询内容返回,此时,有限制的ISP或者防火墙会再次检测内容是否为非认证状态,如果是非认证状态,则将查询结果内容进行丢包处理。所以,在特定的DNS服务器上,我们需要将结果进行标准DNS协议加密返回客户端。此时ISP无法识别结果,而直接返回客户端进行解密处理。这样我们就完成了一次DNS隧道请求,而完全绕过的ISP服务商的认证。加密传输方式数据包如下图:

    dns-packet-hex

     

    二、建立DNS隧道的环境需求

    1、可以连接有限制的ISP服务商,比如连接CMCC的无线信号

    2、需要一台高速的性能较高的安装好java的服务器(当然也可以随便一台国内的就行了,目的是为了提高查询的延迟速度)

    3、Tcp-over-dns工具,用来提供客户端、服务器通信加解密操作

    4、客户端全局代理工具Proxifier(非必需条件,只是我觉得可以用这个来让本机所有程序都代理上网)

    三、实现步骤

    1、设置自己的DNS服务器域名

    方法a:如果你有直接修改DNS记录的权限,可以在dns记录中加入:

    ;set up the DNS tunnel
    $ORIGIN dnstunnel.analogbit.com.
    @ IN NS ns.analogbit.com.
    ns IN A <server ip>

    paxmactun.mooo.com     NS   mypaxmac.mooo.com

    mypaxmac.mooo.com      A    xx.xx.xx.xx(服务器IP)

     

    方法c:直接修改我们购买域名时的DNS解析记录

    Dnstun    NS  ns.paxmac.org

    Ns       A      xx.xx.xx.xx(服务器IP)

    2、设置服务器

    下载tcp-over-dns软件,执行命令:

    Java -jar tcp-over-dns-server.jar  –domain  dnstun.paxmac.org  –forward-port  22(为了服务器安全,端口应设置在1024以下)

    必须包含–forward-port参数

    3、设置客户端

    在需要上网的主机上下载tcp-over-dns软件,执行

    Java -jar tcp-over-dns-client.jar  –domain dnstun.paxmac.org  –listen-port  8888  –interval 100(如果服务器性能较高,可以设置最低数值到5或者10)

    4、设置上网

    图片1

    或者直接在全局代理服务器中设置全局代理。这样就可以上网了,不过速度不会很快,毕竟要进行加解密。


     

    方法b:设置两个域名记录,其中一个NS记录,一个A记录


    展开全文
  • 不论你对出站流量采取多么严格的访问控制,你可能都要允许至少对一个服务器的 DNS 请求。对手就可以利用这个防火墙上的“大洞”来偷运数据,并且建立一个非常...隧道的部署实施需要一个由攻击者控制的主机来运行 dns

    不论你对出站流量采取多么严格的访问控制,你可能都要允许至少对一个服务器的 DNS 请求。对手就可以利用这个防火墙上的“大洞”来偷运数据,并且建立一个非常难以限制的隐蔽命令控制信道。为了学习 DNS 作为命令控制信道的使用方法,我们今天来介绍一个由 Ron Bowes 开发的工具 dnscat2,有了这个工具我们就能轻而易举的实现这种攻击技术。
    隧道的部署实施需要一个由攻击者控制的主机来运行 dnscat2 的服务器端程序。这个公网上的主机监听经过 dnscat2 特别定制过的 DNS 请求,这些请求是 dnscat2 客户端组件从受害者的位置发出,可以传递数据或者获得控制指令。

    安装 dnscat2 服务器端

    为了安装 dnscat2 服务器端组件,你需要有一台互联网可以访问到的公网主机,并且安装 Linux 系操作系统。你可以使用公有云提供商,例如 DigitalOcean。我喜欢这种公有云的提供商,他们提供了最低每月五美元的低端虚拟专用服务器,这样对我们 dnscat2 的实验再好不过。很简单的就可以部署一个 Ubuntu 实例:
    image_1anommeff1v1ikmh9g1eb8obg9.png-30.7kB
    一旦主机实例创建完成,登录后要用 root 来运行以下命令,这些都是安装 dnscat2 服务器端所必须的,我们假定你使用的也是 Ubuntu:

    apt-get update
    apt-get -y install ruby-dev git make g++
    gem install bundler
    git clone https://github.com/iagox86/dnscat2.git
    cd dnscat2/server
    bundle install

    全部正确执行后,至此 dnscat2 的服务器端就安装完毕了,但是我们还没有启动呢

    在全部 DNS 请求都被允许的情况下的 C2 信道

    我们假定了一种场景,在这种场景下目标环境允许全部 DNS 出站流量和任意 DNS 服务器进行通信。在这种情况下,你可以不配置任何参数直接激活 dnscat2 的服务器端,使用 root 用户来执行如下命令就可以在公网服务器上激活 dnscat2 的服务器端。
    ruby ./dnscat2.rb
    你应该在 dnscat2 的安装目录下执行这些命令,在我们的演示示例中路径是 dnscat2/server。激活完成后, dnscat2 的服务器端组件就会开始监听 53 端口,出现交互式 Shell 后就可以远程控制运行 dnscat2 客户端组件的系统。
    接下来,使用你的系统来模拟受害者的主机,不加任何参数就可以运行 dnscat2 客户端程序。如果在 Windows 上运行,你应该在作者的网站上下载预先构建好的 dnscat2 可执行程序。你应该带着 --host 参数来运行客户端程序,在 host 参数后带上你服务器的 IP 地址或者主机名。在我的实验中,我的 dnscat2 服务器端的 IP 地址是 104.131.93.152,所以我这样来运行 dnscat2 客户端 dnscat2-win32.exe --host 104.131.93.152
    image_1anopd9sffrm1c0ase11lqs1k6im.png-26.2kB
    当客户端运行起来,我们的 dnscat2 服务器会立即通知我有客户端系统和服务器建立了连接,然后为我提供一个远控的 Shell。为了简介起见,我在下面只摘录了部分有用的信息:

    ruby ./dnscat2.rb
    Starting Dnscat2 DNS server on 0.0.0.0:53 [domains = n/a]...
    No domains were selected, which means this server will only respond to direct queries (using --host and --port on the client)
    dnscat2> New session established: 16059
    dnscat2>

    这样我就可以与受感染的系统进行交互了,例如指定启动记事本:

    dnscat2> session -i 16059
    Welcome to a command session!
    Use 'help' for a list of commands or ^z for the main menu
    dnscat [command: 16059]> exec notepad.exe
    Sent request to execute
    dnscat [command: 16059]>

    除了可以在受感染的系统上执行任意命令外, dnscat2 还支持“上传”和“下载”用以在两台主机之间进行数据或程序的传递。
    监控受害者网络的分析师只会看到 DNS 请求与响应。这种通信流量将会像“噪音”一样混入普通的网络通信中。例如,建立初始 C2 连接时, dnscat2 客户端准备解析一个 TXT 记录,就发送给我的 DNS 服务器一个请求,就如同我们在 Wireshark 里看到的。
    image_1anpqhfdvb641v4f1shftgqp1q9.png-23.1kB
    为了防止这种情况的发生,真实情况下可能会对出站流量进行限制,只允许和少数受信任的服务器进行 DNS 通信。在本例中,这种方法就会限制对我的命令控制服务器(104.131.93.152)进行 DNS 出站请求。不幸的是,以 DNS 为隧道的命令控制流量仍然可以通过下面的方法完成控制。

    只允许和受信任的 DNS 服务器通信时的命令控制信道

    为了完成更健壮的命令控制配置,对手可以注册一个域名并指定运行 dnscat2 服务器软件的系统作为该域名的权威 DNS 服务器。这种方法下, dnscat2 客户端不再需要直接和命令控制服务器进行连接了。相反,受感染的主机将会对受受害者信任的服务器发起对恶意域名的请求,受其信任的 DNS 服务器将会把这个请求转发给命令控制服务器并且返回它的响应给客户端。在这种情况下,看似受保护的环境只能访问受信任的 DNS 服务器,但是受信任的 DNS 服务器也必须和外部 DNS 服务器进行通信才能解决无法直接响应的请求。

    我配置我的实验域名为 combatingmalware.com 并且绑定了 104.131.93.152 这个地址作为权威域名服务器。然后我启动了 dnscat2 的服务器程序,指定这个域名来作为命令控制的信道。

    ruby ./dnscat2.rb combatingmalware.com
    Handling requests for the following domain(s):
    combatingmalware.com
    Starting Dnscat2 DNS server on 0.0.0.0:53 [domains = combatingmalware.com]...
    Will also accept direct queries (using --host and --port on the client)
    dnscat2>

    接下来,我运行 dnscat2 的客户端,并且指定通信域名为 combatingmalware.com,命令如下
    image_1anps658mum7flb1ka01g9a1v0am.png-17.9kB
    这次,dnscat2 客户端没有直接给我的命令控制服务器发送 DNS 请求。相反,受害者的主机和标准的、受信任的 DNS 服务器进行了通信,尝试解析combatingmalware.com域名的主机名,正如在 Wireshark 中看到的:
    image_1anpscg9e1ee81s9klf21tbno9g13.png-24.7kB
    正如预期的那样,我们的命令控制服务器并不会直接和受害者的主机进行数据包的交换。我们的实验使用了 OpenDNS 的服务器,所以我们只和 OpenDNS 的服务器进行了通信。以下是我在服务器端运行 tcpdump 时捕捉到的流量:

    208.67.217.11.1679 > 104.131.93.152.53: 59036 [1au] TXT? 35bc006955018b0021636f6d6d616e642073657373696f6e00.combatingmalware.com.
    104.131.93.152.53 > 208.67.217.11.1679: 59036*- q: TXT? 35bc006955018b0021636f6d6d616e642073657373696f6e00.combatingmalware.com. 1/0/0 [1d] TXT "6c29006955d5b70000"
    208.67.217.21.2584 > 104.131.93.152.53: 41672 [1au] TXT? 3f29016955018bd5b7.combatingmalware.com.
    104.131.93.152.53 > 208.67.217.21.2584: 41672*- q: TXT? 3f29016955018bd5b7.combatingmalware.com. 1/0/0 [1d] TXT "11b8016955d5b7018b"

    这意味着,即使你对你的环境进行了配置,只允许可信的内部或外部服务器来应对 DNS 解析,并且封锁其他全部的 DNS 出站流量,对手仍然可以通过你认为正常的 DNS 基础结构来进行命令控制通信。
    如果你想集中你的精力在阻止 dnscat2 客户端在你的 Windows 系统上运行,阻止全部的恶意软件?听起来是个好主意,但是你最好确保你也能控制住 PowerShell,就像下面这个场景所展示的一样:

    使用 PowerShell 客户端进行 DNS 隧道通信

    相比于安装完全版本的 dnscat2 客户端,对手可以在被破坏的系统上使用 PowerShell 来与 dnscat2 进行通信。 Luke Baggett 的 dnscat2.ps1 脚本通过执行某些 dnscat2 的控制命令来达到使用 DNS 隧道进行通信的能力。
    对 dnscat2.ps1 进行实验,我把这个 PowerShell 脚本引入受害者的主机,然后通过 dnscat2 命令行工具的指引来通过 combatingmalware.com 域名打开一个与我的命令控制服务器链接的反弹 Shell。操作如下:
    image_1anq1rjcagje1nih1c29o5qgo1n.png-36kB
    正如前面的例子所示,流量通过 DNS 隧道传输。我能够间接地与命令提示符交互,这样令我可以在受害者的主机上执行任意命令:

    dnscat2> New session established: 9024
    dnscat2> session -i 9024
    Welcome to session 9024!
    If it's a shell session and you're not seeing output, try typing "pwd" or something!
    Microsoft Windows [Version 6.3.9600]
    (c) 2013 Microsoft Corporation. All rights reserved.
    C:\Users\REM\Desktop>

    怎样阻止 DNS 作为信道进行命令与控制

    DNS 的本质是允许企业系统通过发起 DNS 请求来与网络上任意主机进行通讯。这项能力使得像 dnscat2 这样的工具可以在 DNS 流量中隐藏数据和命令来绕过传统的网络安全策略。我努力想拿出一个解决方案来堵住防火墙上的“洞”,我没能做到。但是我有一些降低风险的建议:

    • 对你网络内的主机被允许访问的 DNS 服务器的数量进行限制,这不但使攻击者的信道部署变得更加复杂,而且还限制了你需要监控的 DNS 交互类型。
    • 如果可能的话,直接将 DNS 流量通过一系列你控制的 DNS 服务器,这样你可以随时检查它们,并且在需要的时候任意修改配置。
    • 监视 DNS 异常活动,查看 DNS 服务器或者查看网络日志。用于命令控制的 DNS 交互往往会表现出时序和负载上的背离,这种偏差会让你发现存在问题。
      (详情请看论文by Greg Farnhamadvice from Lance Jamessuggestions from Martin Lee

    使用 DNS 来传递数据和控制命令并不是第一天提出。然而,如同 dnscat2 这样的工具让这项技术变得极其容易实施,不论是用于恶意目的、渗透测试还是个人实验。对于使用 DNS 请求来暗中窃取数据的实际例子请看BernhardPOSMULTIGRAIN这两个恶意软件可以学到更多。

    阅读原文

    展开全文
  • 记一次学习DNS隧道无线网登陆验证过程 硬性要求工具:vps:35.220.243.222,内部ip10.170.0.3 域名:sunmuggle.ml 所需软件xshell vps端:dns2tcp windows端:dns2tcpc 准备工作:绑定域名和vps 开启vps 防火墙 ...
  • 通过dns2tcp绕过校园网认证进行免费上网 条件 下面是本次实验的前提条件: 需要在未认证的情况下,nslookup可以 使用 一台具有公网IP的服务器 一个域名 ** 判断,当连接校园网,但是未认证状态下 可以看到,通过...
  • 实战:通过DNS协议绕过防火墙

    千次阅读 2019-06-12 14:11:18
    可以通过dnscat2实现DNS隧道,然后进行内网渗透。在成功获取一个session之后执行 session -i id listen 4444 10.211.55.19:22 #将内网10.211.55.19的22端口转发到本地的4444 然后直接ssh本地的ip的4444端口 ...
  • [黑科技]DNS隧道-绕过wifi热点登陆免费上网
  • 4、DNS隧道

    千次阅读 2018-06-08 17:05:52
    0x00 前言前两天和朋友说到代理,随之讨论了一下关于隧道技术,之前也发一篇关于DNS隧道技术的文章,不过感觉没有写好,今天就重写一下关于隧道技术的总结;首先这篇文章是以前写的,也发在乌云,最近为博客更新...
  • 使用dns2tcp搭建DNS隧道

    万次阅读 多人点赞 2018-08-05 13:50:58
    现在我们想做的是通过使用dns2tcp建立DNS隧道,使得办公电脑可以访问互联网。 许多大学的校园网在连接后,打开浏览器会自动跳转到身份认证页面。在认证前,是无法访问互联网的,但一般来说,其DNS解析是...
  • 随着dns隧道应用的越来越广泛,尤其是xshell事件被公布以后,各大公司纷纷启动对dns隧道的监控,参考xshell的逻辑,大多数公司采取了“监控多个终端请求异常长度域名”的检测方案,其中注重检出率的公司为了提高检出...
  • DNS隧道工具之渗透神器』— cobalt strike

    千次阅读 多人点赞 2019-02-01 16:05:17
    它不是一个单纯的DNS隧道工具,把它放在此处讲,只是因为它也支持DNS隧道功能而已,所以下文也只会讲讲它的DNS隧道能力! 1、简介 cobalt strike(以下简称CS)作为一款协同APT工具,功能十分强大,针对内网的渗透...
  • 不论你对出站流量采取多么严格的访问控制,你可能都要允许至少对一个服务器的 DNS 请求。对手就可以利用这个防火墙上的“大洞”来偷运数据,并且建立一个... 隧道的部署实施需要一个由攻击者控制的主机来运行 dnsc...
  • 企业内网环境中,DNS协议是必不可少的网络通信协议之一,为了访问...在实际场景中,当攻击者拿下某台服务器权限,或服务器被恶意软件、蠕虫、木马等感染之后,通过建立DNS隧道从而达到敏感信息盗窃、文件传输、...
  • ---------Title:使用DNS2TCP搭建DNS隧道绕过网络认证,实现免验证上网 写在前面: 通过机器学习算法检测DNS隐蔽隧道时需要使用大量的数据作为训练集、测试集作为支撑,用以训练出一个不错的检测模型。而在此过程...
  • 在渗透测试过程中,我们常会遇到下面这种情况:我们获取一台web服务器权限,接下来想通过反弹shell、或流量转发建立一个内网据点,大多会...答案很简单,我们可以通过一款dns2tcp的软件对这种出站防火墙策略进行绕过
  • DNS隧道测试

    千次阅读 2017-04-11 20:59:45
    于是我想,能不能用DNS隧道呢? 服务器端已经配置好了,用 iodine sudo iodined -f 192.168 . 77.1 ns.mydomain.me -P mypassword 接下来是我的kali客户端。 ➜ ~ iodine -f -P mypassword 123...
  • DNS隧道技术防火墙

    千次阅读 2017-04-05 14:36:30
    0x01 概念 隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或...0x02 实例分析- DNS隧道技术 环境:客户机(Kali)+DNS服务器(window2003)+目标机(redh
  • CobaltStrike中DNS隐蔽隧道的利用详细版 文章目录 1.CobaltStrike的介绍和DNS ...恶意利用DNS隧道现象已存在多年,将数据封装在DNS协议中传输,大部分防火墙和入侵检测设备很少会过滤DNS流量,僵尸网络和入侵攻击可
  • 1. icmp隧道实战应用场景。 2. 在建立icmp隧道的两端机器上分别编译安装PingTunnel。 3. 通过icmp隧道来转发常规tcp端口。 基础环境准备 ubuntu16-LAMP 入侵者为公网的一台vps(ubuntu 16.04.3 LTS),相当于...
  • 对于大众而言,巧妙地利用DNS隧道可以绕过Wi-Fi登录限制实现免费上网,但实际上,DNS隧道可以作为内部受损主机的远程控制信道进而完成很多恶意操作,例如执行操作系统命令、文件传输,甚至是完整的IP隧道。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,528
精华内容 611
关键字:

dns隧道绕过