一、本机信息
1、系统程序
收集系统信息,包括操作系统版本,已安装补丁列表等。通常使用以下方法收集:
1 | net config workstation/server # 查询简易系统信息 |
注:其中systeminfo命令查询内容最全,但如果系统更新的补丁较多,可能会导致反应反应时间过长;使用 webshell 执行此命令可能会因为超时导致无法正常回显,或回显内容长度过长,无法全部显示。
2、进程服务
1 | tasklist /v # 查询正在运行的进程 |
windows 自带防火墙及特殊过滤规则等网络访问均可使用netsh
及相关命令查看。
1 | netsh firewall show config # 查看防火墙信息,但 firewall 命令已弃用,可使用 advfirewall 命令代替 |
3、用户信息
1 | whoami # 当前用户 |
注:quser、qwinsta和query命令只存在于允许安装 RDP 服务的主机上,官方描述其仅存在于 server 2012 及以上版本存在。其中query termserver命令存在问题,本地测试时与描述严重不符,无法列出信息。
4、操作记录
cmd 和 powershell v3 以下的操作记录无法长时间保存,仅限当前窗口。
1 | Get-History | Format-List -Property * # 查询 powershell 当前窗口历史操作记录 |
可以通过向进程发送键盘内容的方式将运行中的窗口历史操作记录导出。
powershell v5 以上的操作历史记录会直接保存在指定文件中。直接查看即可。
1 | 可以通过向进程发送键盘内容的方式将运行中的窗口历史操作记录导出。 |
powershell v3、v4 版本需要安装Get-PSReadlineOption
。msiexec /q /i PackageManagement_x64.msi
二、网络发现
内网网络发现是一个很重要的信息收集内容,一般情况下是不建议使用扫描器扫描,尤其不建议使用 nmap,当然,如果是靶场,或是甲方授权就另当别论。
1、基本信息收集
1 | ipconfig /all # 列出当前主机详细网络信息 |
使用 arp 命令收集最近建立过连接的 ip,但是此方法在某些时候无法收集到网段外的 ip 地址。
2、SPN 信息收集
SPN:服务主体名称。使用 Kerberos 须为服务器注册 SPN,因此可以在内网中扫描 SPN,快速寻找内网中注册的服务,SPN 扫描可以规避像端口扫描的不确定性探测动作。
主要利用工具有:setspn、GetUserSPNs.vbs和Rubeus。
利用 Windows 自带的 setspn 工具
普通域用户权限执行即可
1 | setspn -T domain.com -Q / |
利用 GetUserSPNs.vbs
使用 Rubeus 工具
3、协议探测
icmp 协议
直接回显
1 | for /l %i in (1,1,255) do @ ping 10.0.0.%i -w 1 -n 1|find /i "ttl=" |
输出文件
1 | @for /l %i in (1,1,255) do @ping -n 1 -w 40 192.168.0.%i & if errorlevel 1 (echo 192.168.0.%i >> ip.txt) else (echo 192.168.0.%i >> ip.txt) |
Netbios 协议
msf 扫描
1 | msf > use auxiliary/scanner/netbios/nbname |
nbtscan 扫描,下载:
1 | http://www.unixwiz.net/tools/nbtscan.html#download |
参数:-m 192.168.1.0/24
UDP 协议
msf
1 | msf > use auxiliary/scanner/discovery/udp_probemsf > use auxiliary/scanner/discovery/udp_sweep |
smb-version
python版:https://github.com/amitn322/smb-version
c#版:https://www.zcgonvh.com/post/CSharp_smb_version_Detection.html
SNMP 协议
msf
1 | msf > use auxiliary/scanner/snmp/snmp_enum |
4、系统日志
可以使用wevtutil.exe psloglist.exe
或者 powershell 的Get-WinEvent
模块进行日志导出,server 03 的域控可使用 eventquery.vbs 导出。
wevtutil 不需要 UAC, 支持很多过滤语法,若有需要请查看官方说明。
1 | # 查询登录日志语法 |
本地使用 LogParser 日志分析工具整理导出的日志,然后去除重复数据、无效数据(以 ‘$’ 结束的用户名)
1 | LogParser.exe -i:EVT -o txt "SELECT TO_UPPERCASE(EXTRACT_TOKEN(Strings,5,'|')) as USERNAME,TO_UPPERCASE(EXTRACT_TOKEN(Strings,18,'|')) as SOURCE_IP FROM C:\ProgramData\log.evtx" > C:\ProgramData\log.txt |
导出域控登录日志到域控上:
1 | wevtutil epl Security C:\ProgramData\dc.evtx /q:"*[EventData[Data[@Name='LogonType']='3'] and System[(EventID=4624) and TimeCreated[timediff(@SystemTime) <= 2592000000]]]" /r:域控IP /u:域管 /p:域管密码 |
5、浏览器日志
收集浏览器访问记录。
chrome
1 | C:\Users$username\AppData\Local\Google\Chrome\User Data\Default\History |
firefox
1 | C:\Users$username\AppData\Roaming\Mozilla\Firefox\Profiles$name.default\places.sqlite |
IE
1 | reg query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs" 或C:\Users$user\AppData\Local\Microsoft\Windows\History |
edge, v79+:
1 | C:\Users$user\AppData\Local\Microsoft\Edge\User Data\Default\History |
v44+
1 | C:\Users$user\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat |
6、DNS 服务器记录
如果目标机器在域内,只需要按部就班收集域信息,准备域横向渗透即可。
但其中有一点单独提一下,一般在域环境中都会有一台 DNS 服务器,小企业或内网环境较小的可能会和域控为同一台,大一些的企业,多为独立的 DNS 服务器。
由于 DNS 服务器的特性,因此,在 DNS 服务器上会存在大量内网地址解析记录,如果可以获取,会极大的方便内网拓扑展开,同时很多其他主机无法到达的地址,DNS 服务器是可以到达的。
列出 DNS 区域中当前节点的资源记录
1 | dnscmd . /EnumZones |
列出 test.com 的信息
1 | dnscmd . /ZoneInfo test.com |
列出 test.com 中的详细记录
1 | dnscmd . /ZonePrint test.com |
列出 test.com 中的记录
1 | dnscmd . /EnumRecords test.com |
DNS 记录有正向解析和反向解析两种。
正向解析是从域名到IP,反向解析则是从 IP 到域名。
反向隔离和正向隔离相同,都会有一个对应的区域,因此,查询方式与正向记录相同。
DNS 服务器还存在域传送漏洞。可以直接获得 DNS 记录。
1 | nslookup -type=all_ldap._tcp.dc.greyfinger.com |
三、域信息查询
1、基本信息收集
域信息收集,需要当前用户为域用户。本地用户无法执行域命令查询域内容。
1 | net config workstation # 查询当前登录域 |
想要定位域管和域控机器,可以查询domain admin
和domain controllers
组,需要注意的是,组名会随系统语言变化而变化,如domain controllers
会变化成domaine contrôleurs
。
在域内其他机器上,查询组是net group /domain
,而在域控上则是net group
。
2、dsquery
dsquery 命令很少使用,而且限制较大仅能在域控上执行,所以相对而言较为鸡肋,但是在一定条件下还是具有一定的使用价值。
1 | dsquery computer # 查询目录中的计算机 |
3、powershell
1 | # 查询当前Domain信息 |
四、配置文件收集
配置文件
IIS 配置文件路径为:
1 | %windir%\system32\inetsrv\config\applicationHost.config |
使用 appcmd 的方式可以快速导出所需内容:
1 | %windir%\system32\inetsrv\appcmd list site /config %windir%\system32\inetsrv\appcmd list site /config /xml > c:\sites.xml |
密码保存
navicat
数据库 | 路径 |
---|---|
MySQL | HKEYCURRENTUSER\Software\PremiumSoft\Navicat\Servers\ |
MariaDB | HKEYCURRENTUSER\Software\PremiumSoft\NavicatMARIADB\Servers\ |
MongoDB | HKEYCURRENTUSER\Software\PremiumSoft\NavicatMONGODB\Servers\ |
Microsoft SQL | HKEYCURRENTUSER\Software\PremiumSoft\NavicatMSSQL\Servers\ |
Oracle | HKEYCURRENTUSER\Software\PremiumSoft\NavicatOra\Servers\ |
PostgreSQL | HKEYCURRENTUSER\Software\PremiumSoft\NavicatPG\Servers\ |
SQLite | HKEYCURRENTUSER\Software\PremiumSoft\NavicatSQLite\Servers\ |
navicat
系统版本 | 路径 |
---|---|
xp/win2003 | C:\Documents and Settings\USERNAME\Application Data\VanDyke\Config\Sessions |
win7/win2008以上 | C:\Users\USERNAME\AppData\Roaming\VanDyke\Config\Sessions |
Xshell
版本 | 路径 |
---|---|
Xshell 5 | %userprofile%\Documents\NetSarang\Xshell\Sessions |
Xshell 6 | %userprofile%\Documents\NetSarang Computer\6\Xshell\Sessions |
WinSCP
1 | HKCU\Software\Martin Prikryl\WinSCP 2\Sessions |
VNC:
版本 | 路径 | 类型 |
---|---|---|
RealVNC | HKEYLOCALMACHINE\SOFTWARE\RealVNC\vncserver | Password |
TightVNC | HKEYCURRENTUSER\Software\TightVNC\Server Value | Password or PasswordViewOnly |
TigerVNC | HKEYLOCALUSER\Software\TigerVNC\WinVNC4 | Password |
UltraVNC | C:\Program Files\UltraVNC\ultravnc.ini | passwd or passwd2 |