红蓝对抗之邮箱入口
目錄
爆破郵箱賬號(hào)
1:收集目標(biāo)郵箱系統(tǒng)賬號(hào)
2:驗(yàn)證郵箱賬號(hào)可用性
3:爆破郵箱賬號(hào)
繞過SPF
SPF記錄的語法
1:SPF解析不當(dāng)導(dǎo)致繞過
2、SPF配置不當(dāng)導(dǎo)致繞過
3、高權(quán)限用戶繞過
4、郵件客戶端內(nèi)容解析差異
5、From字段名截?cái)嗬@過
魚叉釣魚
釣魚文件制作
發(fā)送釣魚郵件
在紅藍(lán)對(duì)抗中,郵箱是一個(gè)非常重要的一個(gè)入口。針對(duì)郵箱攻擊有幾個(gè)思路:
- 郵箱系統(tǒng)是否有漏洞
- 能否爆破出可用的郵箱賬號(hào)進(jìn)行登錄(根據(jù)爆破出賬號(hào)密碼的權(quán)限再進(jìn)行下一步操作)
- 能否偽造任意用戶發(fā)送郵件進(jìn)行魚叉釣魚(SPF是否可繞過)
本文中,關(guān)于郵箱系統(tǒng)的漏洞暫不提及,會(huì)在以后的文章中繼續(xù)分析。本文主要講如何爆破出可用的郵箱賬號(hào)和能否繞過SPF偽造任意用戶發(fā)送郵件。
爆破郵箱賬號(hào)
1:收集目標(biāo)郵箱系統(tǒng)賬號(hào)
要想爆破郵箱賬號(hào),肯定首先得有足夠多的郵箱賬號(hào)。那么,我們從哪里去獲取目標(biāo)郵箱系統(tǒng)的郵箱賬號(hào)呢?
- https://hunter.io/??
- https://www.email-format.com/i/search/
這兩個(gè)網(wǎng)站只要輸入目標(biāo)域名,就可以從互聯(lián)網(wǎng)上搜到對(duì)應(yīng)格式的郵箱賬號(hào)。
還有兩個(gè)Github上的項(xiàng)目:
- https://github.com/bit4woo/teemo
- https://github.com/laramies/theHarvester
2:驗(yàn)證郵箱賬號(hào)可用性
收集到郵箱賬號(hào)后,我們還需要對(duì)郵箱賬號(hào)的可用性進(jìn)行檢測(cè)。因?yàn)橛行┼]箱賬號(hào)很有可能已經(jīng)棄用了。通過下面這些網(wǎng)站可以驗(yàn)證郵箱地址的可用性:
- https://mailtester.com/testmail.php
- https://github.com/Tzeross/verifyemail
3:爆破郵箱賬號(hào)
篩選出可用的郵箱賬號(hào)后,我們就需要對(duì)目標(biāo)郵箱系統(tǒng)進(jìn)行爆破了。對(duì)郵箱進(jìn)行爆破,有兩種方式:
- 一是對(duì)郵箱的端口號(hào)進(jìn)行爆破
- 二是對(duì)網(wǎng)頁版的郵箱登錄處進(jìn)行爆破。
既然對(duì)端口號(hào)進(jìn)行爆破,那么我們就自然得知道郵箱的常用端口號(hào)了。
- SMTP默認(rèn)端口是25 ,SSL加密端口是 465?
- POP3默認(rèn)端口是110,SSL加密端口是 995?
- IMAP默認(rèn)端口是143,SSL加密端口是 993
傳送門:SMTP、POP3和IMAP郵件協(xié)議
常見的爆破工具有:超級(jí)弱口令檢查工具、medusa、hydra、SNETCracker、APT34組織、?owa爆破工具。
繞過SPF
? ? ?SPF(Sender Policy Freamwork)發(fā)件人策略框架,是一種以IP地址認(rèn)證電子郵件發(fā)件人身份的技術(shù)。在SPF出現(xiàn)之前,發(fā)件人的郵箱地址是可以由發(fā)信人任意聲明的,這帶來了很大的危險(xiǎn)性。SPF的出現(xiàn),就是為了防止發(fā)信人隨意偽造發(fā)件人。
? ? ?SPF記錄實(shí)際上是服務(wù)器的一個(gè)DNS記錄,原理如下:假設(shè)郵件服務(wù)器收到一封來自IP為192.168.10.10主機(jī)發(fā)送的郵件,并且聲稱發(fā)件人為 admin@qq.com 。郵件系統(tǒng)為了確認(rèn)發(fā)件人不是偽造的,郵件服務(wù)器會(huì)去查詢 qq.com?的SPF記錄。如果該域的SPF記錄中允許該IP發(fā)送郵件,則郵件服務(wù)器就認(rèn)為該郵件是合法的,?否則會(huì)認(rèn)為這是一封非正常郵件并且拒收或標(biāo)記為垃圾、仿冒郵件。因?yàn)楣粽唠m然可以聲稱郵件是來自 qq.com ,但是他卻無權(quán)操作qq.com的DNS記錄,并且他也無法偽造自己的IP地址為SPF中允許的IP地址,因此正確配置SPF還是很有效果的。目前大多數(shù)郵件服務(wù)提供商都會(huì)去驗(yàn)證SPF。
? ?郵件系統(tǒng)如果沒有配置SPF,則攻擊者可以隨便偽造郵件。即使配置了SPF(錯(cuò)誤配置),也存在被繞過的風(fēng)險(xiǎn)。下面命令查看目標(biāo)域名郵件系統(tǒng)是否配置SPF。
nslookup -type=txt taobao.comSPF記錄的語法
一條 SPF 記錄定義了一個(gè)或者多個(gè)策略,而策略則定義了哪些 IP 是允許的,哪些 IP 是拒絕的。
這些策略包括以下幾類:
all | ip4 | ip6 | a | mx | ptr | exists | includeall
表示所有 IP,肯定會(huì)命中。因此通常把它放在 SPF 記錄的結(jié)尾,表示處理剩下的所有情況。例如:
"v=spf1 -all" 拒絕所有 "v=spf1 +all" 接受所有ip4
格式為?ip4:<ip4-address>?或者?ip4:<ip4-network>/<prefix-length>,指定一個(gè) IPv4 地址或者地址段。如果prefix-length沒有給出,則默認(rèn)為/32。例如:
"v=spf1 ip4:192.168.10.1/24 -all" 只允許在 192.168.10.1 ~ 192.168.10.255 范圍內(nèi)的 IPip6
格式和ip4的很類似,默認(rèn)的prefix-length是/128。例如:
"v=spf1 ip6:1080::8:800:200C:417A/96 -all" 只允許在 1080::8:800:0000:0000 ~ 1080::8:800:FFFF:FFFF 范圍內(nèi)的 IPa 和 mx
這倆的格式是相同的,以?a?為例,格式為以下四種之一:
a a/<prefix-length> a:<domain> a:<domain>/<prefix-length>會(huì)命中相應(yīng)域名的 a 記錄(或 mx 記錄)中包含的 IP 地址(或地址段)。如果沒有提供域名,則使用當(dāng)前域名。例如:
"v=spf1 mx -all" 允許當(dāng)前域名的 mx 記錄對(duì)應(yīng)的 IP 地址。"v=spf1 mx mx:deferrals.example.com -all" 允許當(dāng)前域名和 deferrals.example.com 的 mx 記錄對(duì)應(yīng)的 IP 地址。"v=spf1 a/24 -all" 類似地,這個(gè)用法則允許一個(gè)地址段。例如,這是一個(gè)比較常見的 SPF 記錄,它表示支持當(dāng)前域名的 a 記錄和 mx 記錄,同時(shí)支持一個(gè)給定的 IP 地址;其他地址則拒絕:
v=spf1 a mx ip4:173.194.72.103 -allinclude
格式為include:<domain>,表示引入<domain>域名下的 SPF 記錄。注意,如果該域名下不存在 SPF 記錄,則會(huì)導(dǎo)致一個(gè)PermError結(jié)果。例如:
"v=spf1 include:example.com -all" 即采用和 example.com 完全一樣的 SPF 記錄exists
格式為?exists:<domain>。將對(duì)<domain>執(zhí)行一個(gè) A 查詢,如果有返回結(jié)果(無論結(jié)果是什么),都會(huì)看作命中。
ptr
格式為ptr或者ptr:<domain>。使用ptr機(jī)制會(huì)帶來大量很大開銷的 DNS 查詢,所以連官方都不推薦使用它。
訪問控制
每個(gè)策略可以有四種前綴:
"+" Pass(通過) "-" Fail(拒絕) "~" Soft Fail(軟拒絕) "?" Neutral(中立)測(cè)試時(shí),將從前往后依次測(cè)試每個(gè)策略。如果一個(gè)策略包含了要查詢的 IP 地址(稱為命中),則測(cè)試結(jié)果由相應(yīng)策略的前綴決定。默認(rèn)的前綴為+,也就是通過。如果測(cè)試完所有的策略也沒有命中,則結(jié)果為Neutral中立。
除了以上四種情況,還有 None(無結(jié)果)、PermError(永久錯(cuò)誤)和 TempError(臨時(shí)錯(cuò)誤)三種其他情況。對(duì)于這些情況的解釋和服務(wù)器通常的處理辦法如下:
| 結(jié)果 | 含義 | 服務(wù)器處理辦法 |
| Pass | 發(fā)件 IP 是合法的 | 接受來信 |
| Fail | 發(fā)件 IP 是非法的 | 退信 |
| Soft Fail | 發(fā)件 IP 非法,但是不采取強(qiáng)硬措施 | 接受來信,但是做標(biāo)記 |
| Neutral | SPF 記錄中沒有關(guān)于發(fā)件 IP 是否合法的信息 | 接受來信 |
| None | 服務(wù)器沒有設(shè)定 SPF 記錄 | 接受來信 |
| PermError | 發(fā)生了嚴(yán)重錯(cuò)誤(例如 SPF 記錄語法錯(cuò)誤) | 沒有規(guī)定 |
| TempError | 發(fā)生了臨時(shí)錯(cuò)誤(例如 DNS 查詢失敗) | 接受或拒絕 |
注意,上面所說的服務(wù)器處理辦法僅僅是 SPF 標(biāo)準(zhǔn)做出的建議,并非所有的郵件服務(wù)器都嚴(yán)格遵循這套規(guī)定。?
關(guān)于v=spf1,這是必須的,這個(gè)表示采用 SPF 1 版本,現(xiàn)在它的最新版本就是第 1 版。
1:SPF解析不當(dāng)導(dǎo)致繞過
假設(shè)目標(biāo)郵件系統(tǒng)的SPF記錄設(shè)置為
v=spf1 ip4:192.168.10.0/24 ~all這條SPF記錄的意思是只接收192.168.10.0/24范圍內(nèi)的IP發(fā)送的郵件,其他地址發(fā)送的郵件軟拒絕。
這就存在兩個(gè)安全隱患:
- 一個(gè)是IP段過大,在C段里面,只要獲取任意一臺(tái)主機(jī)的權(quán)限,那么就可以使用合法的IP進(jìn)行郵件偽造。
- 一個(gè)是軟拒絕,也就是會(huì)接受來信,但可能被標(biāo)記為垃圾郵件。如果SPF記錄設(shè)置拒絕,就會(huì)有大量的郵件被丟棄或者隔離,影響辦公效率,有一些郵件系統(tǒng)管理員為了減少業(yè)務(wù)影響,而采用軟拒絕的策略。
當(dāng) SPF 記錄設(shè)置成 ~all 時(shí),通過測(cè)試可以發(fā)現(xiàn),outlook 郵箱可以接收郵件,QQ郵箱不接收,163郵箱被標(biāo)記為垃圾郵件。
還有一種極為嚴(yán)重的錯(cuò)誤,就是SPF解析記錄配置錯(cuò)誤,早在之前鵝廠就出現(xiàn)過SPF解析錯(cuò)誤,比如:
v=spf1 ip4:113.110.223.0/24 183.110.226.0/24 183.110.255.0/24 59.110.132.0/24 -all這里介紹一個(gè)工具,輸入域名和SPF記錄,可快速檢查SPF記錄是否正確
測(cè)試地址:https://www.kitterman.com/spf/validate.html
SPF記錄報(bào)錯(cuò),在這條SPF記錄中,存在多個(gè)IP段,但只有開頭的一段ip用了ipv4,這就導(dǎo)致了語法錯(cuò)誤。因?yàn)檫@個(gè)錯(cuò)誤,將導(dǎo)致整個(gè)SPF記錄完全失效,因?yàn)镾PF無效,郵件接收方的SPF檢測(cè)功能也就完全失效了。
綜上,當(dāng)我們?cè)诓榭匆粋€(gè)域名的SPF記錄時(shí),它其實(shí)不只是一條解析記錄,更是一種郵件安全的策略,SPF記錄配置不嚴(yán)或SPF解析錯(cuò)誤,就容易導(dǎo)致大量本該被攔截的郵件直接被放進(jìn)來,而繞過的策略就隱藏在這條SPF記錄里面。
2、SPF配置不當(dāng)導(dǎo)致繞過
郵件服務(wù)器管理員做SPF配置時(shí),其實(shí)是需要兩個(gè)步驟的。首先在域名中增加SPF記錄,向支持SPF功能的郵件服務(wù)器提供驗(yàn)證信息,使別人能驗(yàn)證自己;另外,需要配置郵件服務(wù)器支持 SPF,這樣才可以驗(yàn)證別人。
那么,在SPF配置過程中,也常常因?yàn)榕渲貌划?dāng)導(dǎo)致繞過,比如:
第一種情況:
域名增加了SPF記錄,但是郵件服務(wù)器不支持SPF檢查或郵件網(wǎng)關(guān)未開啟SPF檢測(cè),無法驗(yàn)證郵件來源。這種情況下,我們聲明了自己是誰,但卻無法驗(yàn)證對(duì)方是誰,SPF檢測(cè)無效,可偽造任意用戶發(fā)送到你的域名郵箱里。
第二種情況:
SPF解析在公網(wǎng)DNS,郵件服務(wù)器配置內(nèi)部DNS,內(nèi)部DNS無法進(jìn)行SPF解析,從而導(dǎo)致繞過,可從公網(wǎng)偽造任意用戶發(fā)送郵件。
第三種情況:
攻擊者在公司內(nèi)網(wǎng),內(nèi)網(wǎng)SMTP服務(wù)器開啟匿名郵件發(fā)送或者在信任服務(wù)器IP段,就可以使用任意用戶發(fā)送郵件。
比如,當(dāng) mynetworks=192.168.10.0/24,在內(nèi)網(wǎng),任意一臺(tái)終端就可以直連公司的SMTP服務(wù)器,偽造了一封來自 admin@taobao.com 的郵件發(fā)給自己。
python SimpleEmailSpoofer.py -t [目標(biāo)郵箱] -n QQ郵箱管理員 -f admin@qq.com -j "郵件主題" -e 1.txt -s [內(nèi)網(wǎng)郵件服務(wù)器IP]3、高權(quán)限用戶繞過
對(duì)于Exchange郵箱系統(tǒng),擁有Domain admins權(quán)限的域用戶,可通過outlook直接指定發(fā)件人,偽造任意發(fā)件人發(fā)送郵件。偽造郵件的方式十分簡(jiǎn)單,且郵件頭無法顯示真實(shí)IP。
測(cè)試過程:我給自己的賬號(hào)添加了Domain admin權(quán)限。
使用Outlook2013客戶端指定發(fā)件人發(fā)送郵件,接收郵件直接顯示偽造人的名字,偽造成功
使用Outlook2016客戶端測(cè)試,郵件接收方的發(fā)件人位置顯示”XXX代表XXX”,偽造失敗
4、郵件客戶端內(nèi)容解析差異
很多時(shí)候,大部分的企業(yè)郵箱SPF配置都是正確的,理論上,它會(huì)對(duì)每一封郵件進(jìn)行檢測(cè),那么它是如何驗(yàn)證發(fā)件人IP地址的?
我們使用一個(gè)SPF在線檢測(cè)的工具,來做一個(gè)的嘗試,利用我本地搭建的匿名SMTP服務(wù)器偽造 admin@qq.com 郵箱。
測(cè)試地址:https://www.kitterman.com/spf/validate.html
點(diǎn)擊Test SPF Recod進(jìn)行驗(yàn)證:
結(jié)果毫無疑問,SPF驗(yàn)證失敗,偽造郵箱不成功,偽造的郵件將會(huì)被退回。
通過查看郵件頭信息,有兩個(gè)比較重要的字段,Sender和From。
Sender字段,代表的是郵件的實(shí)際發(fā)送者,郵件接收方會(huì)對(duì)它的郵件域名進(jìn)行SPF檢測(cè),確認(rèn)是否包含了發(fā)信人的IP地址。From字段,代表的是郵件發(fā)送人,即郵件里所顯示的發(fā)件人,容易被偽造。
在SPF配置有效的情況下,Sender必須通過SPF檢驗(yàn),所以我們可以設(shè)置為正常的郵件服務(wù)器地址,然后對(duì)From字段進(jìn)行偽造。
使用swaks做一個(gè)郵件測(cè)試:
QQ郵箱網(wǎng)頁版查看郵件,Sender和From字段不一樣時(shí),發(fā)件人的位置顯示由admin@evil.com代發(fā)。
使用Foxmail客戶端查看同一封郵件,Sender和From字段不一樣時(shí),不顯示代發(fā),偽造成功。
我們分別使用網(wǎng)頁版郵箱和客戶端郵箱打開同一封郵件,通過對(duì)比可以發(fā)現(xiàn),不同的郵件客戶端對(duì)發(fā)件人位置的內(nèi)容解析是不一樣的。
平時(shí)工作中,不少使用騰訊企業(yè)郵箱的童鞋,都喜歡使用Foxmail客戶端查收郵件,這就給了我們成功偽造郵件的可乘之機(jī)。
通過測(cè)試可以發(fā)現(xiàn):qq郵箱、163郵箱網(wǎng)頁版均會(huì)顯示代發(fā),Outlook郵箱不顯示代發(fā),具體郵件客戶端軟件可具體再行測(cè)試。
5、From字段名截?cái)嗬@過
當(dāng)我們偽造郵件發(fā)送的時(shí)候,Sender和From字段不一樣,郵件接收方會(huì)這樣提示郵件代發(fā)。
那么有沒有辦法只顯示偽造的發(fā)件人,不顯示郵件代發(fā)呢?
在網(wǎng)絡(luò)上看到一種思路,來源于網(wǎng)貼《關(guān)于郵件偽造的一些新思路》,挺有意思的。
在用SMTP發(fā)送電子郵件時(shí),發(fā)件人別名,格式為:From:發(fā)件人別名<郵件地址>。通過對(duì)發(fā)件人別名字段填充大量的特殊字符,使郵箱客戶端截取真實(shí)的郵件地址失敗,從而只展示我們偽造的發(fā)件人別名和偽造郵箱。
郵件偽造測(cè)試過程:
使用 —data 參數(shù)發(fā)送郵件?
sudo ./swaks --data mail.eml --to 67*****28@qq.com --from admin@test.com成功發(fā)送給目標(biāo)郵箱,QQ郵箱接收郵件后的呈現(xiàn)效果
備注:從測(cè)試情況看,偽造的郵件進(jìn)了QQ垃圾箱,但這種思路還是挺不錯(cuò)的,重新Fuzz,或許可以構(gòu)造特殊的數(shù)據(jù)包觸發(fā)這個(gè)問題。
魚叉釣魚
釣魚文件制作
- 直接exe格式的木馬文件,這里就不細(xì)說了。MSF和CobaltStrike都可以直接生成。
- 生成word宏文件
發(fā)送釣魚郵件
如果目標(biāo)郵件服務(wù)器沒有配置SPF的話,可以直接使用swaks偽造郵件發(fā)送
參考文章:郵件偽造之SPF繞過的5種思路
? ? ? ? ? ? ? ? ??紅隊(duì)測(cè)試之郵箱打點(diǎn)
? ? ? ? ? ? ? ? ??SPF 記錄:原理、語法及配置方法簡(jiǎn)介
總結(jié)
- 上一篇: Yandex企业邮箱注册
- 下一篇: RT-Thread学习笔记——邮箱