一、SWAKS
1. 工具细节
"Swaks"(全称为 "Swiss Army Knife SMTP")并不是一个专门为钓鱼而设计的工具。它是一个灵活的、命令行的 SMTP 测试工具,主要用于测试和调试与 SMTP 服务器的连接和邮件发送。Swaks 能够帮助用户测试邮件服务器的功能,如发送邮件、测试邮件服务器的反应,以及调试邮件发送过程中的问题。
Swaks 的主要特点包括:
最适合做最小化的样本测试,尤其有smtp命令行交互shell的情况下,操作一下:
这个命令使用 swaks ,参数配置了一个邮件,并尝试发送它。下面是参数的详细解释:
支持多种 SMTP 协议扩展:比如 STARTTLS(启动安全传输层协议)、AUTH(认证)等。
灵活性:它允许用户指定几乎所有邮件发送相关的参数,如发件人、收件人、主题、正文、附件等。
调试功能:Swaks 可以显示与 SMTP 服务器交互的详细过程,帮助诊断连接或发送问题。
swaks --to "redpen@redteamnotes.com" --from "admin@redteamnotes.com" --body
"goto http://redfish.redteamnotes.com" --header "Subject: Cred Update, Pay
Attention More" --server 10.10.110.74--to "redpen@redteamnotes.com" :邮件的接收者地址。
--from "admin@redteamnotes.com" :邮件的发送者地址。
--body "goto http://redfish.redteamnotes.com" :邮件的正文内容。
--header "Subject: Cred Update, Pay Attention More" :邮件的主题。
--server 10.10.110.74 :SMTP 服务器的地址。
┌──(kali㉿RedteamNotes)-[~/RedteamingLive]
└─$ swaks --to "redpen@redteamnotes.com" --from "admin@redteamnotes.com" --
body "go to https://redpen.redteamnotes.com" --header "Subject: Cred Update,
Pay Attention More" --server 10.10.110.74
=== Trying 10.10.110.74:25...
=== Connected to 10.10.110.74.
<- 220 redteamnotes ESMTP Postfix (Ubuntu)
-> EHLO redteamnotes.0.100.168.192.in-addr.arpa
<- 250-redteamnotes
<- 250-PIPELINING
<- 250-SIZE 10240000
<- 250-VRFY
<- 250-ETRN
<- 250-ENHANCEDSTATUSCODES
<- 250-8BITMIME
<- 250-DSN
<- 250 SMTPUTF8常用参数列表
2. swaks典型命令举例
以下是常用的 swaks 命令示例,涵盖了日常使用中的各种情形,包括发送电子邮件、测试邮件服务器、处理 eml 文件等:
发送简单文本邮件:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--server smtp.redteamnotes.com \
--auth LOGIN \
--auth-user username \
--auth-password password \
--tls发送带主题的邮件:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--subject "Hello" \
--body "This is a test email" \
--server smtp.redteamnotes.com \
--tls发送带附件的邮件:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--attach /path/to/attachment.pdf \
--server smtp.redteamnotes.com \
--tls使用代理服务器发送邮件:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--server smtp.redteamnotes.com \
--tls \
--proxy-host proxy.redteamnotes.com \
--proxy-port 8080发送HTML格式的邮件:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--subject "HTML Email" \
--html "<html><body><h1>This is an HTML email</h1></body></html>" \
--server smtp.redteamnotes.com \
--tls发送带图片的邮件:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--attach /path/to/image.png \
--inline /path/to/image.png \
--server smtp.redteamnotes.com \
--tls发送多个收件人:
swaks --to user1@redteamnotes.com,user2@redteamnotes.com \
--from sender@redteamnotes.com \
--server smtp.redteamnotes.com \
--tls发送延迟邮件:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--server smtp.redteamnotes.com \
--tls \
--delay 3600发送高优先级邮件:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--server smtp.redteamnotes.com \
--tls \
--header "X-Priority: 1 (Highest)" \
--header "Importance: High"测试邮件服务器的支持情况:
waks --server smtp.redteamnotes.com \
--ehlo \
--tls测试邮件服务器的垃圾邮件过滤:
swaks --to spam@redteamnotes.com \
--from sender@redteamnotes.com \
--server smtp.redteamnotes.com \
--tls \
--header "Subject: Test Spam Filtering" \
--body "This is a test email to check spam filtering mechanisms."转发 EML 文件:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--data /path/to/email.eml \
--server smtp.redteamnotes.com \
--tls发送 UTF-8 编码的邮件:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--charset utf-8 \
--server smtp.redteamnotes.com \
--tls设置邮件服务器超时时间:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--server smtp.redteamnotes.com \
--tls \
--timeout 30测试 SMTP 服务器是否开放:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--server smtp.redteamnotes.com \
--tls \
--quit-after STARTTLS设置邮件的重要性标志:
swaks --to user@redteamnotes.com \
--from sender@redteamnotes.com \
--server smtp.redteamnotes.com \
--tls \
--header "Importance: High" \
--header "X-Priority: 1 (Highest)"┌──(kali㉿kali)-[~/RedteamNotes/aptlabs]
└─$ swaks --ehlo RedteamNotes --from "support@qq.com" --to 95588@qq.com --
header "Subject: 请即刻修改你的密码" --header "X-Mailer: RedteamNotes" --header
"Message-Id: 20240123" --header "Content-Type: text/html" --body '<!DOCTYPE
html><html><head><title>欢迎来到红队行动Live</title><meta charset="UTF-8"></head>
<body><h3>欢迎来到红队行动Live</h3><p>学渗透的终极是红队,要学红队就要对自己
狠一点。</p><footer><p>2024年10月19日晚</p></footer></body></html>'
=== Trying mx3.qq.com:25...
=== Connected to mx3.qq.com.
<- 220 newxmmxszc6-0.qq.com MX QQ Mail Server.
-> EHLO RedteamNotes
<- 250-newxmmxszc6-0.qq.com
<- 250-STARTTLS
<- 250-8BITMIME
<- 250-SMTPUTF8
<- 250-SIZE 73400320
<- 250 OK
-> MAIL FROM:<support@qq.com>
<** 550 SPF check failed. http://service.mail.qq.com/cgi-bin/help?
subtype=1&&id=20022&&no=1001445
[MEplxarcG6scAwHfjB/2mhTeqfgsxAkxgKpR/xQBumoQlix8mhe3QS3+LsyRfpyPiA== IP:
223.72.126.39]
-> QUIT
*** Remote host closed connection unexpectedly.--header "X-Mailer: RedteamNotes":这个 X-Mailer 是一个自定义的邮件头,通常用来标识发送邮件所使用的客户端软件。这里设置为 RedteamNotes ,表明发送该邮件的工具是"RedteamNotes",虽然这只是伪造的,并不一定是实际的发送工具。--header "Message-Id: 20240123": Message-Id 是一个唯一标识符,用于标记这封邮件。这是电子邮件协议中的标准头字段,通常由邮件服务器自动生成,但这里手动指定为 20240123 。--header "Content-Type: text/html": Content-Type 指定邮件内容的格式,这里设置为 text/html ,表明邮件正文是 HTML 格式,可以包含 HTML 标签和样式。--body '<!DOCTYPE html>... ': --body 指定邮件的正文部分。这里的正文是一段完整的 HTML 代码,包括 HTML 结构、元数据、标题和正文内容。该内容的 HTML 部分包含一个标题<h3>,正文<p>,以及页脚<footer>,这些内容将显示在接收邮件的用户界面中。
┌──(kali㉿kali)-[~/RedteamNotes/aptlabs]
└─$ swaks --ehlo RedteamNotes --from "support@cloud.tencent.com" --to
duiguxiagou@163.com --header "Subject: 请即刻修改你的密码" --header "X-Mailer:
RedteamNotes" --header "Message-Id: 20241019" --header "Content-Type:
text/html" --body '<!DOCTYPE html><html><head><title>欢迎来到红队行动Live</title>
<meta charset="UTF-8"></head><body><h3>欢迎来到红队行动Live</h3><p>学渗透的终极是红
队,要学红队就要对自己狠一点。</p><footer><p>2024年10月19日19时45分</p></footer>
</body></html>'
=== Trying 163mx03.mxmail.netease.com:25...
=== Connected to 163mx03.mxmail.netease.com.
<- 220 163.com Anti-spam GT for Coremail System (163com[20141201])
-> EHLO RedteamNotes
<- 250-mail
<- 250-PIPELINING
<- 250-AUTH LOGIN PLAIN
<- 250-AUTH=LOGIN PLAIN
<- 250-coremail
1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2Urt5_arUCa0xDrUUUUj
<- 250-STARTTLS
<- 250-SIZE 73400320
<- 250 8BITMIME
-> MAIL FROM:<support@cloud.tencent.com>
<- 250 Mail OK
-> RCPT TO:<duiguxiagou@163.com>
<- 250 Mail OK
-> DATA
<- 354 End data with <CR><LF>.<CR><LF>
-> Date: Sat, 19 Oct 2024 05:26:35 -0400
-> To: duiguxiagou@163.com
-> From: support@cloud.tencent.com
-> Subject: 请即刻修改你的密码
-> Message-Id: 20241019
-> X-Mailer: RedteamNotes
-> Content-Type: text/html
->
-> <!DOCTYPE html><html><head><title>欢迎来到红队行动Live</title><meta
charset="UTF-8"></head><body><h3>欢迎来到红队行动Live</h3><p>学渗透的终极是红队,要学
红队就要对自己狠一点。</p><footer><p>2024年10月19日19时45分</p></footer></body>
</html>
->
->
-> .
<- 250 Mail OK queued as gzga-mx-mtada-g6-2,_____wD3nxVLexNn3dCBAQ--.2207S2
1729329996
-> QUIT
<- 221 Bye
=== Connection closed with remote host.3. 如何绕过spf的机制
有如上我们分析的电子邮件的诸多安全机制,尤其spf和dkim、dmarc,但实际上和我们钓鱼相关的安全机制,且我们有操作空间的,就是SPF。
有spf情况下伪造发件人
其实是绕过,或者说障眼法。
以上直接提示spf检查失败,所以在我们检测我们的钓鱼对象有spf的时候,就要像之前演示gophish那样,发送,最终会呈现代发的字样。
其中我们腾挪的空间,就是让代发地址更类似真实发件箱地址,这也就是我们需要找和真实邮件域相似的域名用来钓鱼的原因。
有机可乘的例子
但是不同的邮箱会有不同的状态,可以不算漏洞,但启示我们面对具体的钓鱼需求是,值得尝试,本质上就是因为是复杂的配置,容易有机可乘。比如:
┌──(kali㉿kali)-[~/RedteamNotes/aptlabs]
└─$ nslookup -type=txt spf.mail.163.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
spf.mail.163.com text = "v=spf1 include:spf-a.mail.163.com include:spf-b.mail.163.com include:spf-c.mail.163.com include:spf-d.mail.163.com
include:spf-e.mail.163.com -all"
Authoritative answers can be found from:
┌──(kali㉿kali)-[~/RedteamNotes/aptlabs]
└─$ dig 163.com NS
; <<>> DiG 9.20.2-1-Debian <<>> 163.com NS
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2343
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;163.com. IN NS
;; ANSWER SECTION:
163.com. 5 IN NS ns2.166.com.
163.com. 5 IN NS ns6.nease.net.
163.com. 5 IN NS ns8.166.com.
163.com. 5 IN NS ns1.nease.net.
163.com. 5 IN NS ns3.nease.net.
163.com. 5 IN NS ns5.nease.net.
163.com. 5 IN NS ns4.nease.net.
;; Query time: 12 msec
;; SERVER: 172.16.94.2#53(172.16.94.2) (UDP)
;; WHEN: Sat Oct 19 05:36:01 EDT 2024
;; MSG SIZE rcvd: 164┌──(kali㉿kali)-[~/RedteamNotes/aptlabs]
└─$ nslookup -type=txt spf.mail.163.com ns1.nease.net
Server: ns1.nease.net
Address: 198.18.165.102#53
spf.mail.163.com text = "v=spf1 include:spf-a.mail.163.com include:spf-b.mail.163.com include:spf-c.mail.163.com include:spf-d.mail.163.com
include:spf-e.mail.163.com -all"算了,翻不过来,太多了。
二、GoPhish
GoPhish是一个开源的钓鱼攻击模拟工具,用于帮助组织测试员工对钓鱼攻击的抵抗能力,并提供培训和防范意识。它允许用户创建和执行钓鱼攻击,以模拟真实的攻击场景,然后收集和报告参与者的响应。以下是GoPhish的一些主要特点:
Github 项目地址 : https://github.com/gophish/gophish
Kali中是有默认安装的:
┌──(kali㉿kali)-[~/RedteamNotes/aptlabs]
└─$ gophish
Starting gophish...
Default user is: admin
Default password is: kali-gophish
Opening Web UI https://127.0.0.1:3333注意启动时的默认密码 admin:kali-gophish ,进入后要求修改密码,我们改为 RedteamN0t3s. 。
Web界面:GoPhish提供一个用户友好的web界面,用于创建和管理钓鱼攻击。
模板化的攻击:用户可以创建电子邮件模板、登陆页面和其他资源,用于模拟真实的钓鱼攻击。
实时报告:GoPhish会实时报告目标用户如何响应钓鱼邮件,例如他们是否点击了链接、是否提交了凭据等。
开源:GoPhish是完全开源的,这意味着任何人都可以查看、修改和分发其代码。
简单部署:GoPhish可以轻松部署在各种环境中,包括Windows、Linux和macOS。
可以看的教程:
Gophish钓鱼平台安装使用教程: https://www.bilibili.com/video/BV1Ua4y1M7Qj/
Gophish钓鱼实践指南: https://www.freebuf.com/articles/network/276463.html
钓鱼工具gophish的使用: https://www.cnblogs.com/xinssblog/p/15886097.html
官方教程: https://docs.getgophish.com/
但是我们从其功能看,有明确的不满足我们需求的地方,我们想绕过双因素验证钓鱼,用gophish是做不到的,没有功能支持。
的确,它一般用于安全意识培训。
-.-
评论区