1. 域渗透常用指令
以下所有指令均为在域成员主机上执行的结果:
得到域控制器的IP:dsquery server ==》 ping 主机名获取域控IP
得到域控制器主机名:net group “domain controllers” /domain,注意通过该指令得到的机器名后面会多一个$符号
查询域管理用户:net group “domain admins” /domain
查看域用户:net user /domain
这里有一个特殊用户叫做krbtgt,该用户是用于Kerberos身份验证的帐户,获得了该用户的hash,就可以伪造票据进行票据传递攻击了,此外,还有以下几个常用指令:
查询当前登陆域:net config workstation
查询域密码策略:net accounts /domain
查看补丁信息:wmic qfe
查看操作系统类型:wmic os
总结:常用域渗透命令
1 | * net use |
2. SPN扫描
不同于常规的tcp/udp端口扫描,由于spn本质就是正常的Kerberos请求,所以扫描是非常隐蔽,日前针对此类扫描的检测暂时也比较少。
大部分win系统默认已自带spn探测工具即:setspn.exe
此操作无需管理权限
域内机器执行,可完整查出当前域内所有spn
1 | setspn -T target.com -Q */* q |
3. 定位域控
查询dns解析记录
若当前主机的dns为域内dns,可通过查询dns解析记录定位域控。
1 | nslookup -type=all _ldap._tcp.dc._msdcs.h0e4a0r1t.com |
SPN扫描
在SPN扫描结果中可以通过CN=OWA2013,OU=Domain Controllers,DC=rootkit,DC=org
来进行域控的定位。
net group
1 | net group "domain controllers" /domain |
端口识别
扫描内网中同时开放389和53端口的机器。
1 | 端口:389 |
域内关键组
比如在拿到域控后可以通过重点关注关键部门人员的机器来得到更多的信息。
以上图为例,我们可以重点关注和监控运维部的用户机器,通常他们的机器上存在大量内网网络拓扑和网络构架信息或者是一些重要的密码本。
AdFind
真的是难找,连官网都下了 :)
下载地址:https://github.com/h0e4a0r1t/ADFind/blob/master/AdFind.zip
常用命令如下:
列出域控制器名称:
1 | AdFind -sc dclist |
查询当前域中在线的计算机:
1 | AdFind -sc computers_active |
查询当前域中在线的计算机(只显示名称和操作系统):
1 | AdFind -sc computers_active name operatingSystem |
查询当前域中所有计算机:
1 | AdFind -f "objectcategory=computer" |
查询当前域中所有计算机(只显示名称和操作系统):
1 | AdFind -f "objectcategory=computer" name operatingSystem |
查询域内所有用户:
1 | AdFind -users name |
查询所有GPO:
1 | AdFind -sc gpodmp |
域渗透流程
- ipconfig /all 查看计算机名、IP地址、子网掩码、DNS服务器以及域的名字
- net user /domain 获取域中所有的用户名单
- net view /domain 查看内网中有多少个域
- net group “domain admins” /domain 获取域管理员列表
- net user 域用户 /domain 获取指定域用户的详细信息
- net view 列出域内计算机列表,刺探内网机器分布情况
- nbtstat -a 域用户 || ping 域用户 获取域用户对应的IP地址
- 上一步可探测出DNS服务器,若要证明DNS服务和域控是否为同一台机器,ping 域用户.local
- arp -a 查看内网有哪些机器通讯
骚技巧
net time /domain 查看域控服务器时间,写入计划任务执行木马
普通域用户以管理员用户权限运行指定程序:runas /noprofile /user:h0e4a0r1t.com\administrator cmd(第一次运行需要输入密码,所以前提是知道域控的用户密码)(可以往没有权限的目录中写木马)
RUNAS 用法: RUNAS [ [/noprofile | /profile][/env] [/savecred | /netonly] ] /user:
program