hacktricks/generic-methodologies-and-resources/phishing-methodology/README.md

21 KiB
Raw Blame History

钓鱼方法论

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS Red Team Expert

支持HackTricks的其他方式

方法论

  1. 侦察受害者
  2. 选择受害者域名
  3. 进行一些基本的网络枚举,搜索受害者使用的登录门户,并决定你将冒充哪一个。
  4. 使用一些OSINT查找电子邮件
  5. 准备环境
  6. 购买用于钓鱼评估的域名
  7. 配置与邮件服务相关的记录SPF、DMARC、DKIM、rDNS
  8. 使用gophish配置VPS
  9. 准备活动
  10. 准备电子邮件模板
  11. 准备用于窃取凭据的网页
  12. 启动活动!

生成类似的域名或购买可信任的域名

域名变体技术

  • 关键词:域名包含原始域名的重要关键词例如zelster.com-management.com
  • 连字符子域:将子域的点换成连字符例如www-zelster.com
  • 新TLD:使用新TLD的相同域名例如zelster.org
  • 同形字符:用看起来相似的字母替换域名中的一个字母例如zelfser.com
  • 转位:在域名中交换两个字母例如zelsetr.com
  • 单数/复数形式在域名末尾添加或删除“s”例如zeltsers.com
  • 省略:从域名中删除一个字母例如zelser.com
  • 重复:在域名中重复一个字母例如zeltsser.com
  • 替换类似于同形字符但不那么隐蔽。用另一个字母替换域名中的一个字母可能是键盘上原始字母附近的字母例如zektser.com
  • 子域:在域名中引入一个点例如ze.lster.com
  • 插入:在域名中插入一个字母例如zerltser.com
  • 缺失点将TLD附加到域名中。 例如zelstercom.com

自动工具

网站

位翻转

由于各种因素(如太阳耀斑、宇宙射线或硬件错误),存储或通信中的一些位可能会自动翻转。

当这个概念应用于DNS请求DNS服务器收到的域名可能与最初请求的域名不同。

例如在域名“windows.com”中进行单个位修改可能会将其更改为“windnws.com”。

攻击者可能会利用这一点注册多个位翻转域,这些域与受害者的域名相似。他们的目的是将合法用户重定向到自己的基础设施。

欲了解更多信息,请阅读https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/

购买可信任的域名

您可以在https://www.expireddomains.net/上搜索一个过期的域名来使用。
为了确保您即将购买的过期域名具有良好的SEO,您可以查看它在以下网站中的分类:

发现电子邮件

为了发现更多有效的电子邮件地址或验证已经发现的电子邮件地址您可以尝试暴力破解受害者的smtp服务器。了解如何验证/发现电子邮件地址
此外,不要忘记,如果用户使用任何网页门户访问他们的邮件,您可以检查该门户是否容易受到用户名暴力破解的攻击,并在可能的情况下利用该漏洞。

配置GoPhish

安装

您可以从https://github.com/gophish/gophish/releases/tag/v0.11.0下载。

下载并解压缩到/opt/gophish内,并执行/opt/gophish/gophish
您将在输出中获得端口3333上管理员用户的密码。因此请访问该端口并使用这些凭据更改管理员密码。您可能需要将该端口隧道转发到本地

ssh -L 3333:127.0.0.1:3333 <user>@<ip>

配置

TLS 证书配置

在这一步之前,您应该已经购买了要使用的域名,并且它必须指向您正在配置gophishVPS的IP

DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
sudo apt install snapd
sudo snap install core
sudo snap refresh core
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot certonly --standalone -d "$DOMAIN"
mkdir /opt/gophish/ssl_keys
cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem
cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt

邮件配置

开始安装:apt-get install postfix

然后将域添加到以下文件:

  • /etc/postfix/virtual_domains
  • /etc/postfix/transport
  • /etc/postfix/virtual_regexp

还要更改 /etc/postfix/main.cf 中以下变量的值

myhostname = <domain>
mydestination = $myhostname, <domain>, localhost.com, localhost

最后修改文件 /etc/hostname/etc/mailname 为您的域名,然后 重新启动您的 VPS。

现在,创建一个指向 VPS 的 DNS A 记录 mail.<domain>,以及一个指向 mail.<domain>DNS MX 记录

现在让我们测试发送电子邮件:

apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com

Gophish配置

停止gophish的执行然后进行配置。
/opt/gophish/config.json修改为以下内容注意使用https

{
"admin_server": {
"listen_url": "127.0.0.1:3333",
"use_tls": true,
"cert_path": "gophish_admin.crt",
"key_path": "gophish_admin.key"
},
"phish_server": {
"listen_url": "0.0.0.0:443",
"use_tls": true,
"cert_path": "/opt/gophish/ssl_keys/key.crt",
"key_path": "/opt/gophish/ssl_keys/key.pem"
},
"db_name": "sqlite3",
"db_path": "gophish.db",
"migrations_prefix": "db/db_",
"contact_address": "",
"logging": {
"filename": "",
"level": ""
}
}

配置gophish服务

为了创建gophish服务使其可以自动启动并作为一个服务进行管理您可以创建文件/etc/init.d/gophish,内容如下:

#!/bin/bash
# /etc/init.d/gophish
# initialization file for stop/start of gophish application server
#
# chkconfig: - 64 36
# description: stops/starts gophish application server
# processname:gophish
# config:/opt/gophish/config.json
# From https://github.com/gophish/gophish/issues/586

# define script variables

processName=Gophish
process=gophish
appDirectory=/opt/gophish
logfile=/var/log/gophish/gophish.log
errfile=/var/log/gophish/gophish.error

start() {
echo 'Starting '${processName}'...'
cd ${appDirectory}
nohup ./$process >>$logfile 2>>$errfile &
sleep 1
}

stop() {
echo 'Stopping '${processName}'...'
pid=$(/bin/pidof ${process})
kill ${pid}
sleep 1
}

status() {
pid=$(/bin/pidof ${process})
if [["$pid" != ""| "$pid" != "" ]]; then
echo ${processName}' is running...'
else
echo ${processName}' is not running...'
fi
}

case $1 in
start|stop|status) "$1" ;;
esac

完成配置服务并进行检查:

mkdir /var/log/gophish
chmod +x /etc/init.d/gophish
update-rc.d gophish defaults
#Check the service
service gophish start
service gophish status
ss -l | grep "3333\|443"
service gophish stop

配置邮件服务器和域名

等待并保持合法性

域名越老被识别为垃圾邮件的可能性就越小。因此在进行钓鱼评估之前您应该尽可能等待至少1周。此外如果您发布关于声誉良好领域的页面获得的声誉会更好。

请注意,即使您需要等待一周,您现在也可以完成所有配置。

配置反向DNSrDNS记录

设置一个将VPS的IP地址解析为域名的rDNSPTR记录。

发件人策略框架SPF记录

您必须为新域名配置SPF记录。如果您不知道什么是SPF记录阅读此页面

您可以使用https://www.spfwizard.net/生成您的SPF策略使用VPS机器的IP

这是必须设置在域名的TXT记录中的内容

v=spf1 mx a ip4:ip.ip.ip.ip ?all

基于域的消息认证、报告和合规性DMARC记录

您必须为新域配置DMARC记录。如果您不知道什么是DMARC记录阅读此页面

您必须创建一个新的DNS TXT记录将主机名_dmarc.<domain>指向以下内容:

v=DMARC1; p=none

DomainKeys Identified Mail (DKIM)

您必须为新域配置DKIM。如果您不知道什么是DMARC记录阅读此页面

本教程基于:https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy

{% hint style="info" %} 您需要连接DKIM密钥生成的两个B64值

v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB

{% endhint %}

测试您的电子邮件配置分数

您可以使用https://www.mail-tester.com/进行测试
只需访问该页面并向他们提供的地址发送电子邮件:

echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com

您还可以通过向check-auth@verifier.port25.com发送电子邮件来检查您的电子邮件配置,并阅读响应(为此,您需要打开端口25,并在文件/var/mail/root中查看响应如果您以root用户发送电子邮件
检查您是否通过了所有测试:

==========================================================
Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
Sender-ID check:    pass
SpamAssassin check: ham

您还可以发送消息到您控制的 Gmail,并在您的 Gmail 收件箱中检查电子邮件的标头dkim=pass 应出现在 Authentication-Results 标头字段中。

Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
dkim=pass header.i=@example.com;

从 Spamhouse 黑名单中移除

页面 www.mail-tester.com 可以告诉您您的域名是否被 Spamhouse 阻止。您可以在以下网址请求将您的域名/IP 移除:https://www.spamhaus.org/lookup/

从 Microsoft 黑名单中移除

您可以在 https://sender.office.com/ 请求将您的域名/IP 移除。

创建并启动 GoPhish 攻击活动

发送配置

  • 设置一个用于识别的名称作为发件人配置
  • 决定从哪个账户发送钓鱼邮件。建议使用:noreply, support, servicedesk, salesforce...
  • 您可以留空用户名和密码,但请确保勾选“忽略证书错误”

{% hint style="info" %} 建议使用“发送测试邮件”功能测试一切是否正常。
我建议将测试邮件发送到 10min 邮箱地址,以避免在测试中被列入黑名单。 {% endhint %}

邮件模板

  • 设置一个用于识别的名称作为模板
  • 然后编写一个主题(不要太奇怪,只需是您期望在常规邮件中看到的内容)
  • 确保已勾选“添加跟踪图片
  • 编写邮件模板(您可以使用变量,如以下示例中所示):
<html>
<head>
<title></title>
</head>
<body>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;color:black">Dear {{.FirstName}} {{.LastName}},</span></p>
<br />
Note: We require all user to login an a very suspicios page before the end of the week, thanks!<br />
<br />
Regards,</span></p>

WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY

<p>{{.Tracker}}</p>
</body>
</html>

注意:为了增加电子邮件的可信度,建议使用客户的某个签名。建议:

  • 发送电子邮件到一个不存在的地址,并检查响应中是否有签名。
  • 搜索像info@ex.com或press@ex.com或public@ex.com这样的公共电子邮件并发送电子邮件等待响应。
  • 尝试联系一些已发现的有效电子邮件,并等待响应。

{% hint style="info" %} 电子邮件模板还允许附加文件进行发送。如果您还想使用一些特别制作的文件/文档来窃取NTLM挑战请阅读此页面。 {% endhint %}

着陆页面

  • 编写一个名称
  • 编写网页的HTML代码。请注意,您可以导入网页。
  • 标记捕获提交的数据捕获密码
  • 设置重定向

{% hint style="info" %} 通常您需要修改页面的HTML代码并在本地进行一些测试可能使用一些Apache服务器直到您满意为止。然后将HTML代码写入框中。
请注意如果您需要为HTML使用一些静态资源也许是一些CSS和JS页面您可以将它们保存在_/opt/gophish/static/endpoint_然后从_static/<filename>_访问它们 {% endhint %}

{% hint style="info" %} 对于重定向,您可以将用户重定向到受害者的合法主网页或将其重定向到_/static/migration.html_例如放置一些旋转的轮子https://loading.io/5秒钟然后指示过程成功。 {% endhint %}

用户和组

  • 设置一个名称
  • 导入数据(请注意,为了使用示例模板,您需要每个用户的名字、姓氏和电子邮件地址)

活动

最后创建一个活动选择一个名称电子邮件模板着陆页面URL发送配置文件和组。请注意URL将是发送给受害者的链接

请注意,发送配置文件允许发送测试电子邮件,以查看最终钓鱼电子邮件的外观

{% hint style="info" %} 我建议将测试电子邮件发送到10分钟邮件地址,以避免在测试中被列入黑名单。 {% endhint %}

一切准备就绪后,启动活动!

网站克隆

如果出于任何原因您想克隆网站,请查看以下页面:

{% content-ref url="clone-a-website.md" %} clone-a-website.md {% endcontent-ref %}

带后门的文档和文件

在一些钓鱼评估中(主要用于红队),您可能还想发送包含某种后门的文件也许是一个C2或者可能只是会触发身份验证的东西
查看以下页面以获取一些示例:

{% content-ref url="phishing-documents.md" %} phishing-documents.md {% endcontent-ref %}

钓鱼MFA

通过代理MitM

前面的攻击相当聪明因为您正在伪造一个真实网站并收集用户设置的信息。不幸的是如果用户没有输入正确的密码或者如果您伪造的应用程序配置了2FA这些信息将无法让您冒充被欺骗的用户

这就是像evilginx2CredSnipermuraena这样的工具派上用场的地方。这些工具将允许您生成类似MitM的攻击。基本上攻击的工作方式如下

  1. 冒充真实网页的登录表单。
  2. 用户将其凭据发送到您的伪造页面,工具将这些凭据发送到真实网页,检查凭据是否有效
  3. 如果帐户配置了2FAMitM页面将要求输入一旦用户输入工具将其发送到真实网页。
  4. 一旦用户经过身份验证,您(作为攻击者)将捕获到凭据、2FA、cookie和工具执行MitM期间的任何交互的任何信息

通过VNC

如果不是将受害者发送到一个看起来与原始页面相同的恶意页面,而是将其发送到一个连接到真实网页的浏览器的VNC会话会怎样您将能够看到他的操作窃取密码、使用的MFA、cookie...
您可以使用EvilnVNC

检测检测

显然,要知道自己是否被发现是最好的方法之一是在黑名单中搜索您的域名。如果它被列出,那么您的域名以某种方式被检测为可疑。
检查您的域名是否出现在任何黑名单中的一种简单方法是使用https://malwareworld.com/

但是,还有其他方法可以知道受害者是否在野外主动寻找可疑的钓鱼活动,如下所述:

{% content-ref url="detecting-phising.md" %} detecting-phising.md {% endcontent-ref %}

您可以购买一个与受害者域名非常相似的域名,或者为您控制的域名的子域生成一个包含受害者域名关键字的证书。如果受害者与它们进行任何形式的DNS或HTTP交互,您将知道他正在主动寻找可疑的域名,您需要非常隐秘。

评估钓鱼

使用Phishious来评估您的电子邮件是否会被放入垃圾邮件文件夹,或者是否会被阻止或成功发送。

参考资料

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式