目 录CONTENT

文章目录

SWAKS和GoPhish

Administrator
2025-03-11 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

一、SWAKS

1. 工具细节

"Swaks"(全称为 "Swiss Army Knife SMTP")并不是一个专门为钓鱼而设计的工具。它是一个灵活的、命令行的 SMTP 测试工具,主要用于测试和调试与 SMTP 服务器的连接和邮件发送。Swaks 能够帮助用户测试邮件服务器的功能,如发送邮件、测试邮件服务器的反应,以及调试邮件发送过程中的问题。

Swaks 的主要特点包括:

最适合做最小化的样本测试,尤其有smtp命令行交互shell的情况下,操作一下:

这个命令使用 swaks ,参数配置了一个邮件,并尝试发送它。下面是参数的详细解释:

  1. 支持多种 SMTP 协议扩展:比如 STARTTLS(启动安全传输层协议)、AUTH(认证)等。

  2. 灵活性:它允许用户指定几乎所有邮件发送相关的参数,如发件人、收件人、主题、正文、附件等。

  3. 调试功能: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

常用参数列表

序号

参数名称

用途

示例

详细说明

1

--to

指定邮件的收件人地址

--to user@redteamnotes.com

指定邮件的收件人地址,可以包含多个地址,用逗号分隔。

2

--from

指定邮件的发件人地址

--from sender@redteamnotes.com

指定邮件的发件人地址。

3

--server

指定SMTP 服务器的主机名或IP地址

--server smtp.redteamnotes.com

指定要连接的 SMTP 服务器。

4

--port

指定连接SMTP 服务器的端口号

--port 587

指定连接 SMTP 服务器的端口号。

5

--auth

指定用于身份验证的方法

--auth LOGIN

指定用于身份验证的方法,如"LOGIN"、"PLAIN" 等。

6

--auth-user

指定身份验证的用户名

--auth-user username

指定身份验证的用户名。

7

--auth-password

指定身份验证的密码

--auth-password password

指定身份验证的密码。

8

--subject

指定邮件的主题

--subject "Hello"

指定邮件的主题。

9

--body

指定邮件的正文内容

--body "This is a test email."

指定邮件的正文内容。

10

--html

指定邮件的 HTML 正文内容

--html '<html><body>...</body></html>'

指定邮件的 HTML 正文内容。

11

--attach

指定附件的文件路径

--attach /path/to/attachment.txt

指定附件的文件路径。

12

--tls

启用 TLS 加密连接

--tls

启用 TLS 加密连接。

13

--tls-on-connect

在连接建立时就启用TLS 加密

--tls-on-connect

在连接建立时就启用 TLS 加密。

14

--timeout

设置连接的超时时间(秒)

--timeout 10

设置连接的超时时间。

15

--header

添加自定义邮件头部信息

--header "X-Custom-Header: Value"

添加自定义的邮件头部信息。

17

--ehlo

自定义EHLO 或HELO 字符串

--ehlo myclient

自定义 EHLO 或 HELO 字符串。

18

--help

显示swaks 的帮助信息

--help

显示 swaks 的帮助信息。

19

--server-response

显示服务器的响应信息

--server-response

显示 SMTP 服务器的响应信息。

20

--dump

将 SMTP会话信息保存到文件

--dump session.log

将 SMTP 会话信息保存到指定文件中。

21

--data

指定邮件的 DATA 部分内容

--data "This is the DATA part"

指定邮件的 DATA 部分内容。

2. swaks典型命令举例

以下是常用的 swaks 命令示例,涵盖了日常使用中的各种情形,包括发送电子邮件、测试邮件服务器、处理 eml 文件等:

  1. 发送简单文本邮件:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --server smtp.redteamnotes.com \
 --auth LOGIN \
 --auth-user username \ 
 --auth-password password \
 --tls
  1. 发送带主题的邮件:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --subject "Hello" \
 --body "This is a test email" \
 --server smtp.redteamnotes.com \
 --tls
  1. 发送带附件的邮件:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --attach /path/to/attachment.pdf \
 --server smtp.redteamnotes.com \
 --tls
  1. 使用代理服务器发送邮件:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --server smtp.redteamnotes.com \
 --tls \
 --proxy-host proxy.redteamnotes.com \
 --proxy-port 8080
  1. 发送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
  1. 发送带图片的邮件:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --attach /path/to/image.png \
 --inline /path/to/image.png \
 --server smtp.redteamnotes.com \
 --tls
  1. 发送多个收件人:

swaks --to user1@redteamnotes.com,user2@redteamnotes.com \
 --from sender@redteamnotes.com \ 
 --server smtp.redteamnotes.com \
 --tls
  1. 发送延迟邮件:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --server smtp.redteamnotes.com \
 --tls \
 --delay 3600
  1. 发送高优先级邮件:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --server smtp.redteamnotes.com \
 --tls \
 --header "X-Priority: 1 (Highest)" \
 --header "Importance: High"
  1. 测试邮件服务器的支持情况:

waks --server smtp.redteamnotes.com \
 --ehlo \
 --tls
  1. 测试邮件服务器的垃圾邮件过滤:

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."
  1. 转发 EML 文件:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --data /path/to/email.eml \
 --server smtp.redteamnotes.com \
 --tls
  1. 发送 UTF-8 编码的邮件:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --charset utf-8 \
 --server smtp.redteamnotes.com \
 --tls
  1. 设置邮件服务器超时时间:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --server smtp.redteamnotes.com \
 --tls \
 --timeout 30
  1. 测试 SMTP 服务器是否开放:

swaks --to user@redteamnotes.com \
 --from sender@redteamnotes.com \
 --server smtp.redteamnotes.com \
 --tls \
 --quit-after STARTTLS
  1. 设置邮件的重要性标志:

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.

  1. Web界面:GoPhish提供一个用户友好的web界面,用于创建和管理钓鱼攻击。

  2. 模板化的攻击:用户可以创建电子邮件模板、登陆页面和其他资源,用于模拟真实的钓鱼攻击。

  3. 实时报告:GoPhish会实时报告目标用户如何响应钓鱼邮件,例如他们是否点击了链接、是否提交了凭据等。

  4. 开源:GoPhish是完全开源的,这意味着任何人都可以查看、修改和分发其代码。

  5. 简单部署: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是做不到的,没有功能支持。

的确,它一般用于安全意识培训。

-.-

0

评论区