域内信息收集命令汇总

1. 判断是否存在域

1
2
ipconfig /all
systeminfo

image-20210419223138293

如果显示workgroup则可能是不在域内

image-20210419223518170

1
net time /domain           //有三种情况

1)存在域并且是当用户是域用户

image-20210419223544770

2)存在域,当前用户不是域用户

image-20210419223717737

3)不存在域

image-20210419223735608

1
net config workstation   查看当前登录域

image-20210419223905163

2. 域内存活主机探测

==利用netbios探测主机存活==

工具:nbtscan

==利用icmp协议探测内网==

ping 命令:

1
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr "TTL="

image-20210419225354903

==利用arp扫描探测内网==

工具:arp-scan

1
arp-scan.exe -t 192.168.52.0/24

image-20210419225639280

3. 域内端口扫描

==telnet命令扫描==

工具:s扫描器

1
s.exe TCP 192.168.52.1 192.168.52.254 端口号 /Banner /save

==metasploit端口扫描模块==

1
auxiliary/scanner/portscan/tcp

4. 查找域控制器

1
nltest /DCLIST:域的名称

image-20210419230045616

1
net group "Domain Controllers" /domain

image-20210419230151231

1
netdom query pdc

image-20210419230223214

1
nslookup -type=SRV _LDAP._tcp

image-20210419230340481

1
net time /domain

5. 获取域内用户和管理员

==查询所有域用户列表==

1
2
3
4
net user /domain
wmic useraccount get /all
dsquery user #外部程序
net localgroup administrators /domain

image-20210419230825439

image-20210419230936934

image-20210419230948966

image-20210419230956887

==查询域管理员用户组==

1
2
net group "domain admins" /domain
net group "Enterprise Admains" /domain

image-20210419231221049

image-20210419231302207

6. 定位域管理员

利用工具

1
2
3
PsLoggedon.exe
NetSess.exe //查看主机当前会话
PVEFindADUser.exe -current

image-20210419231504432

7. 查找域管理进程

==1、本机检查==

1
2
net group "Domain Admins"  /domain     //获取域管理员列表
tasklist /v //列出本机所有进程及进程用户

​ 然后寻找是否有进程所有者为域管理员的进程

image-20210419231810115

==2、查询域控制器的域用户会话==

1
2
net group "Domain Controllers"  /domain     //收集域控制器的列表
net group "Domain Admins" /domain //收集域管理员列表

image-20210419232021031

使用Netsess.exe查询每个域控制器,收集所有活动域会话的列表,将域管理员列表与活动会话列表交叉引用,以确定哪些IP地址具有活动域令牌

1
Netsess.exe  -h

image-20210419232214710

==3、扫描远程系统上运行的任务==

前提是目标使用了本地域管理员共享账户

1
FOR /F %i in (ips.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL > output.txt && FOR /F %n in (names.txt) DO @type output.txt | findstr %n > NUL && echo [!] %n was found running a process  on %i && pause

==4、扫描远程系统上NetBIOS信息==

1
for /F %i in (ips.txt) do @echo [+] Checking %i && nbtstat -A %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i

8. 利用PowerShell收集域内信息

PowerShell 常用的执行权限共有四种。

1
2
3
4
 Restricted:默认设置,不允许执行任何脚本。
 Allsigned:只能运行经过证书验证的脚本。
 Unrestricted:权限最高,可以执行任意脚本。
 RemoteSigned:本地脚本无限制,但是对来自网络的脚本必须经过签名。

在 PowerShell 中输入“Get-ExecutionPolicy”,看到为默认 Restricted权限,

如果想执行一个 PowerShell 脚本,需要修改 PowerShell 的默认权限为执行权限。

1
Set-Executionpolicy Unrestricted

image-20210419233148972

PowerView 集成在 PowerSploit 工具包中,下载地址为

https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1

                                 PowerView 中的常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Get-NetDomain           	  // 获取当前用户所在的域名称。
Get-NetUser // 返回所有用户的详细信息。
Get-NetDomainController // 获取所有域控制器。
Get-NetComputer // 获取所有域内机器的详细信息。
Get-NetOU // 获取域中的 OU 信息。
Get-NetGroup // 获取所有域内组和组成员信息。
Get-NetFileServer // 根据 SPN 获取当前域使用的文件服务器。
Get-NetShare // 获取当前域内所有网络共享。
Get-NetSession // 获取在指定服务器存在的会话信息。
Get-NetRDPSession // 获取在指定服务器存在的远程连接信息。
Get-NetProcess // 获取远程主机的进程信息。
Get-UserEvent // 获取指定用户的日志信息。
Get-ADObject // 获取活动目录的对象信息。
Get-NetGPO // 获取域所有组策略对象。
Get-DomainPolicy // 获取域默认或域控制器策略。
Invoke-UserHunter // 用于获取域用户登录计算机及该用户是否有本地管理权限。
Invoke-ProcessHunter // 查找域内所有机器进程用于找到某特定用户。
Invoke-UserEventHunter // 根据用户日志获取某域用户

如果在实战中目标powershell的权限是不允许执行任意脚本,那么可以用 -exec bypass 来进行绕过

1
powershell -exec bypass "import-module c:\powerview.ps1;get-netuser"