钓鱼攻击简易化
Hannah Cartier //
社会工程学,尤其是钓鱼攻击,在红队演练和真实攻击中越来越普遍。随着安全意识提升和系统加固,人为因素成为更具吸引力的攻击向量。钓鱼活动可用于测试公司员工的安全控制,获取一个有效登录凭证可节省测试人员数小时甚至数天的漏洞扫描和利用时间。
本文将逐步指导如何为钓鱼活动搭建简单而有效的登录页面,使用BHIS开发的开源工具,无需复杂安装或付费组件。
动机
我曾被要求为钓鱼演练搭建登录页面,但仅收到这些指令。最初尝试使用WordPress创建注册表单,但WordPress比预期复杂,或我的技术能力不足。在界面挣扎数小时后,耐心耗尽且测试日期临近,我决定放弃。但作为普通Web开发者,每次从头搭建显然不可持续。
最终,我使用开源HTML模板设计登录页面,通过NGINX提供服务,并通过NGINX反向代理将表单提交转发到Flask服务器,记录客户端IP、用户代理和表单数据到日志。随后开发了工具Sinker来自动化整个过程,避免重复劳动。
本文剩余部分将通过示例展示如何使用该工具搭建钓鱼活动。
目标:Black Hills Information Security
域名:blackhills.phishingdomain.com
钓鱼邮件:
主题:RE: 新的健康与安全措施。请在ARBITRARY_DATE前完成
现在,我们需要在“以下链接”处实际存在可捕获凭证的内容,这正是Sinker工具帮助构建和部署的。
部署
要求
- 可公开访问的服务器(理想运行Ubuntu的Debian系统)
- 域名,DNS A记录指向您的服务器
设置
-
克隆GitHub仓库:https://github.com/Hannnah1/Sinker
-
打开inventory文件,将IP地址替换为服务器的公网IP。如需在多个服务器部署,为每个额外IP添加一行。
-
打开vars.yml,更改以下配置变量:
- site: 包含登录页面的目录,必须与phishinglines/目录下的目录名完全匹配
- target_name: 目标公司名称,将显示在登录页面上
- ssh_key: 用于登录远程服务器的SSH密钥位置
- domain_name: 您的域名
- certbot_mail_address: 用于生成letsencrypt证书的邮箱,仅允许目标通过HTTPS连接
示例:
|
|
以上代码片段已针对攻击Black Hills Information Security进行编辑。除了公司名称,我们还自定义了CSS的主色和次色值。使用目标公司的颜色可增强页面可信度。
配置完成后,运行playbook,在终端中输入以下命令:
|
|
下一步最重要: 放开键盘,站起来,去泡一杯热咖啡,程序将为您完成以下操作:
- 更新软件包
- 安装nginx
- 为您的域名和登录页面配置nginx
- 使用certbot生成letsencrypt证书
- 将模板和登录页面目录内容复制到/var/www/
- 安装tmux
- 在tmux会话中运行flask应用,接收nginx转发的表单提交并写入日志文件
如果一切顺利,您将看到以下输出:
如果您未安装Cowsay,输出格式会略有不同,同事会觉得您不够酷。只要没有失败或不可达错误,就表示成功。
浏览blackhills.phishingdomain.com显示登录页面按预期显示。
提交表单后,目标收到确认提交的提示,目的是不引起怀疑。
服务器记录客户端IP地址、输入的姓名、邮箱和密码以及用户代理。登录服务器控制台查看forms.txt,将看到以下内容:
创建额外登录页面
有数百个免费HTML模板可快速编辑以满足需求。
例如,本文中我们适配了此模板:https://tympanus.net/Tutorials/LoginRegistrationForm/index3.html#toregister
为使这些自动化设置脚本兼容,需进行以下更改:
- 任何需要显示目标公司名称的地方,用确切文本{{ Target_Name }}替换
- 表单必须包含id=“name”、id=“email"和id=“password"的元素
- 确保提交按钮类型为“submit”,并插入send.js脚本
|
|
页面必须命名为target.html.j2,遵循模板格式。
恭喜!您现在拥有可快速为多个演练搭建的登录页面。
结论
钓鱼攻击简单但耗时。希望此程序能使其更简单快速。作者建议不要在客户报告中包含上当者的姓名和邮箱,确切知道获取了谁的凭证无助于修复,并可能给该人带来麻烦。