這篇文章把Dns分爲兩種,一種是主機或嵌入式設備dns,一種是網站域名dns,來說述dns淪陷以後帶來的危害。linux
一:路由器dns劫持nginx
你本地的網絡鏈接的dns是經過路由器獲取的,假若有一天你家裏的路由被******了,***者修改了你家裏路由器的dns,那麼他能夠對你訪問記錄很是清楚,如系在文件,流量記錄。既然解析都經過dns,咱們徹底能夠自建dns,來進行***。git
1.路由器怎麼樣淪陷github
***手法:csrf 路由器漏洞chrome
CSRFshell
IE 出了一個安全補丁,禁止了Http Authentication Url, 使用此方法在IE下***是無效的 完美兼容FF chrome。 https://support.microsoft.com/zh-cn/kb/834489windows
<img src=http://192.168.1.1/userRpm/LanDhcpServerRpm.htm?dhcpserver=1&ip1=192.168.1.100&ip2=192.168.1.199&Lease=120&gateway=0.0.0.0&domain=&dnsserver=惡意的dns地址&dnsserver2=0.0.0.0&Save=%B1%A3+%B4%E6></img>安全
設備漏洞服務器
烽火通訊某款路由器被爆存在漏洞-可遠程修改DNScookie
http://www.exploit-db.com/exploits/28450/
2.自建dns(window)
在這裏我使用微軟自家產,(徹底能夠用其餘產品代替,我的習慣問題)
配置劫持域名
myhack58.com
轉發器配置
轉發器解決這臺服務器沒有應答的dns查詢請求, 如這臺主機只有myhack58.com, baidu.com等是不存在的,這種狀況把會把baidu.com請求轉發到你配置的dns去解析。我配置解析的dns是8.8.8.8
配置劫持域名A記錄
剛纔dns填寫是跟域,這時候須要對A記錄進行解析,好比我劫持www.myhack58.com到本地127.0.0.1。
我這解析是vps的IP,測試能夠寫127.0.0.1。但要用起來你解析寫公網ip地址,否則別人解析是127.0.0.1,127.0.0.1是你本地,找不到的地址,沒辦法跟反向代理代理配合。
測試dns是否配置成功
可使用dnslookup ping 等去測試
Dns已配置成功,雖然如今解析本地了,我本地難道就只能掛個黑頁?固然不是,個人目的是要求是替換頁面的內容.好比插入js,修改某個文字等。
客戶端的配置
因爲我在公司沒有路由器,直接使用客戶端作測試,客戶端的dns獲取來源仍是路由器。
這時候配置成功,你能夠打開baidu.com來測試,是否能夠解析,正常打開。
3.反向代理搭建
反向代理來這裏啓到做用是,把dns解析www.myhack58.com的vps的這個請求代理到真實的解析。
咱們要作的事情 要給頁面插入一段js。
Openresty介紹
在這裏咱們使用Openresty,Openresty是基於nginx,它打包了標準的 Nginx 核心,不少的經常使用的第三方模塊,nginx第三方模塊都須要編譯,在window下比較噁心 我直接找了一個Openresty_For_Windows,已打包我想要的是第三方模塊http_sub_module。
下載地址:
https://github.com/LomoX-Offical/nginx-openresty-windows
使用nginx -V 查看已支持的第三方模塊
http_sub_module缺點
1.只能使用一條規則
2.不支持中文
反向代理配置
監聽端口vps的公網IP的80端口.當dns查詢請求解析到本地80的時候,80正好監聽vps公網ip,反向代理是myhack58.com。實際上vps公網ip是myhack58.com
打開/conf/nginx.conf文件進行配置
使用了http_sub_module,替換了內容把
</head>換成</head><script sec=safe.js></script>,我故意寫錯 寫成sec=
測試是否成功
先前已經把dns設置過去了,如今也能夠ping通,那咱們就查看源碼 是否替換了頁面內容。
配置其餘功能
如今dns加反向代理配置已經完成了,你能夠替換他的頁面了
Openresty配置反向代理,你要是須要其餘的配置還能夠設置不少參數,如proxy_cache proxy_header proxy_send_timeout proxy_read_timeout。取決於本身用途。
二:網站域名dns劫持
當你經過社工拿到了某個域名權限, 可是你的目的是getshell,這時候你能夠作反向代理,能夠從兩方面下手去作。
A記錄劫持演示
直接修改域名劫持到A記錄的你的惡意反向代理,可是這時候反向代理必須有配置upstream,在upstream指定原域名解析的ip地址,路由器劫持dns沒有配置upstream 是由於上層的dns還能夠解析到劫持域名的真實ip,而你這時候意見把A記錄解析修改到了你的惡意反向代理機器,不去指定解析的地址, 上層找到解析的地址仍是惡意的反向代理,造成一個死循環,永遠打不開網站。
域名A記錄劫持
www.sanr.org 192.168.182.128
反向代理 192.168.182.129
爲何要劫持A記錄
如你經過社工之類拿到了域名的控制權限,這時候你想獲取他的後臺地址,或者cookie等你就須要這樣作。
目前我已經控制sanr.org的域名解析權限,如今咱們要作的是把www.sanr.org的A記錄解析到192.168.182.129。讓反向代理去訪問真實的ip(也就是192.168.182.128),在反向代理的時候咱們動手腳,插個js代碼進去。
沒修改A記錄以前
修改域名A記錄
修改域名到反向代理服務器 192.168.182.129
反向代理服務器搭建(192.168.182.129)
綁定域名爲www.sanr.org 端口80,並指定上游(upstream)地址是192.168.182.128,必須指定上游地址(upstream),只有proxy_pass無upstream他會自動請求解析A記錄。
路由器dns劫持那塊沒有用upstream是由於域名的A記錄的iP地址你能夠經過proxy_pass獲取到。
而如今域名A記錄解析是反向代理機器也就是本機(192.168.182.129),如不使用upstrema去指定真實的IP地址,proxy_pass直接去解析到的是本地IP,那麼就會形成死循環,一直解析的都是本機。
下面是反向代理配置文件。
劫持成功
成功的給sanr.org的植入safe.js代碼
dns劫持
跟路由器劫持dns同樣,自建dns,以後把域名的dns解析配置的A記錄解析到惡意的反向代理,反向代理中仍是要指定upstream,跟a記錄劫持同樣,否則形成死循環。
Dns服務 反向代理軟件有不少,徹底取決於本身的習慣,用本身最喜歡的。
Dns win
WinMyDNS
微軟自家
Dns linux
dnschef 「msfconsole auxiliary/server/fakedns」
Powerdns bind 等 linux開源項目太多
反向代理
Squid Varnish nginx 或者nginx 衍生版(Tengine Openresty)
***手法不只僅是替換網頁內容 插入js,如劫持你路由器的dns, 鏈接3389也是輸入域名也是經過dns解析的,我徹底能夠把A記錄劫持我本地,鏈接3389是我本機的機器,以後安裝WinlogonHack,來記錄密碼,WinlogonHack須要改爲即便是錯誤密碼也要記錄,否則記錄不到。
把www.baidu.com解析到我vps主機的ip
Dns已生效,解析baidu.com也返回是vps主機的ip
鏈接3389(其實這時候是我vps的IP)
只要涉及到域名解析的 本地host 本地客戶端dns 路由器dns,均可以這樣去劫持,***手法變化多樣,看你出自於什麼目地去作。