概述

当进入内网后,面对的是一片黑暗森林。我们需要对当前网络环境进行判断,涉及如下几个方面:

  • 我是谁:对当前机器角色的判断。
  • 这是哪:对当前机器所处网络环境的拓扑结构进行分析判断。
  • 我在哪:对当前机器所处区域的判断。

收集本机信息

手动信息收集

本机信息收集包括:操作系统、权限、内网ip地址段、杀毒软件、端口、服务、补丁更新频率、网络连接、共享和会话等。如果是域内主机,操作系统、杀毒软件、应用软件、补丁和服务一般是批量安装的。

查询网络配置信息

输入如下命令获取本机的网络配置信息:

ipconfig /all

如图所示:

本机网络配置信息

查询操作系统及软件的信息

(1)查询操作系统和版本信息(cmd下无乱码,ps下有乱码):

systeminfo | findstr /B /C:"OS"

如图所示:

查看本机操作系统及版本

(2)查看系统体系结构(只能cmd下执行):

echo %PROCESSOR_ARCHITECTURE%

如图所示:

查看本机系统体系结构

(3)查看安装的软件及版本等: 利用wmic命令,将结果输出到文本文件中:

wmic product get name,version

如图所示:

查看本机安装的软件及版本

利用powershell收集软件的版本信息:

powershell "Get-WmiObject -class Win32_Product |Select-Object -Property name,version"

如图所示:

查看本机安装的软件和版本

查询本机服务信息

执行如下命令查询本机服务信息:

wmic service list brief

如图所示:

查看本机运行的服务

查询进程列表

输入如下命令可以查看当前进程列表和进程用户,分析软件、邮件客户端、VPN和杀毒软件等进行:

tasklist

如图所示:

查看当前运行的进程和进程用户

输入如下命令查询进程信息:

wmic process list brief

如图所示:

查看进行信息

查询启动程序信息

执行如下命令查看启动程序信息:

wmic startup get command,caption

如图所示:

查询启动程序信息

查询计划任务

输入如下命令查询计划任务:

schtasks /query /fo LIST /v

如图所示:

查询计划任务

查询主机开机时间

执行如下命令查询主机的开机时间:

net statistics workstation

如图所示:

查看主机开机时间

查询用户列表

执行如下命令查询本机的用户列表

net user

如图所示:

获取用户列表

执行如下命令查询本地管理员(通常包含域用户)信息:

net localgroup administrators

如图所示:

查询本地管理员

输入如下命令查询当前在线用户:

query user || qwinsta

如图所示:

查询当前在线用户

列出或断开本地计算机与所连接的客户端之间的会话

输入如下命令即可:

net session

如图所示:

列出或端口本地计算机与所连接的客户端之间的会话

查看端口列表

执行如下命令,查询本机开放的端口列表、本机开放的端口所对应的服务和应用程序:

netstat -ano

如图所示:

查看本机开发的端口和对应的服务

查看补丁列表

输入如下信息获取系统的详细信息,需要注意系统的版本、位数、域、补丁信息以及更新频率等:

systeminfo

如图所示(可以看到还没打补丁的):

查询补丁列表

使用wmic查询安装在系统中的补丁,命令如下:

wmic qfe get Caption,Description,HotFixID,InstalledOn

如图所示:

利用wmic查询补丁安装情况

查看本机共享列表

执行如下命令查询本机共享列表和可访问的域共享列表:

net share

如图所示:

查询本机的共享列表和可访问的域共享列表

利用wmic查询本机的共享列表:

wmic share get name,path,status

如图所示:

wmic查询本机的共享列表

查询路由表及所有可用接口的ARP缓存表

输入如下命令即可:

route print
arp -a

如图所示:

查询路由表及所有可用接口的ARP缓存表

查询防火墙相关配置

(1)关闭防护墙: windows server 2003及之前的版本,命令如下:

netsh firewall set opmode disable

windows server 2003之后的版本,命令如下:

netsh advfirewall set allprofiles state off

(2)查询防火墙配置

netsh firewall shwo config

(3)修改防火墙配置 windows server 2003及之前的版本,允许执行程序全部连接,命令如下:

netsh firewall add allowedprogram c:\nc.exe "allow nc" enable

windows server 2003之后的版本,情况如下:

① 允许指定程序进入,命令如下:

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"

③ 允许3389端口放行,命令如下:

netsh advfirewall firewall add rule name="Remote Desktop" protocal=TCP dir=in localport=3389 action=allow

(4)自定义防火墙日志的存储位置:

netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log"

查询代理配置情况

执行如下命令,可以查询服务器127.0.0.1的1080端口的代理配置信息:

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

如图所示:

查询代理配置情况

自动化信息收集

通过前面的学习,也发现使用wmic进行本机信息收集比较方便和易于阅读,所以我们可以使用网上开源的利用wmic进行自动化信息收集的脚本来进行信息收集。

这里推荐使用fuzzysecurity上的一个利用wmic进行本机信息收集的一个bat脚本,内容如下:

for /f "delims=" %%A in ('dir /s /b %WINDIR%\system32\*htable.xsl') do set "var=%%A"

wmic process get CSName,Description,ExecutablePath,ProcessId /format:"%var%" >> out.html
wmic service get Caption,Name,PathName,ServiceType,Started,StartMode,StartName /format:"%var%" >> out.html
wmic USERACCOUNT list full /format:"%var%" >> out.html
wmic group list full /format:"%var%" >> out.html
wmic nicconfig where IPEnabled='true' get Caption,DefaultIPGateway,Description,DHCPEnabled,DHCPServer,IPAddress,IPSubnet,MACAddress /format:"%var%" >> out.html
wmic volume get Label,DeviceID,DriveLetter,FileSystem,Capacity,FreeSpace /format:"%var%" >> out.html
wmic netuse list full /format:"%var%" >> out.html
wmic qfe get Caption,Description,HotFixID,InstalledOn /format:"%var%" >> out.html
wmic startup get Caption,Command,Location,User /format:"%var%" >> out.html
wmic PRODUCT get Description,InstallDate,InstallLocation,PackageCache,Vendor,Version /format:"%var%" >> out.html
wmic os get name,version,InstallDate,LastBootUpTime,LocalDateTime,Manufacturer,RegisteredUser,ServicePackMajorVersion,SystemDirectory /format:"%var%" >> out.html
wmic Timezone get DaylightName,Description,StandardName /format:"%var%" >> out.html

作用就是执行一些wmic命令,输出到当前执行目录的out.html文件夹中。

查询当前权限

输入如下命令查询当前权限:

whoami

但是分为如下三种情况:

  1. 本地普通用户。
  2. 本地管理员用户。
  3. 域的用户。

本地普通用户只能查询本机信息,不能查询域内信息

输入如下命令可以查看域的SID:

whoami /all

如图所示:

查看域的SID

输入如下命令可以查询指定用户的详细信息:

net user XXX /domain

如图所示:

查询指定用户的详细信息

判断是否存在域

当获取完毕本机的信息后,就要判断当前内网中是否存在域。如果当前内网中存在域,就需要判断所控主机是否在域内。

(1)使用ipconfig命令

输入 ipconfig /all 命令,得到网络配置信息,查看网关IP、DNS的IP、域名、本机是否与DNS服务器处于同一网段等信息,如图所示:

查看网络配置

然后通过nslookup判断域控和DNS服务器是否在同一台机器上,输入如下命令:

nslookup pinger.testlab

如图所示(可以看到,此处是):

判断域控和DNS服务器是否在同一主机上

(2)查看系统详细信息

输入如下命令,得到的结果中,域即域名,登录服务器指的是域控,如果域为WORKGROUP,则代表当前服务器不在域内:

systeminfo

如图所示:

systeminfo

(3)查询当前登录域以及登录用户信息

输入如下命令,如果得到的结果中,工作站域DNS名称为WORKGROUP,则代表当前非域环境;登录域表示当前登录的用户是域用户还是本地用户:

net config workstation

如图所示(此处代表当前登录用户是域用户):

net config workstation

(4)判断主域

执行如下命令,判断主域(域服务器通常会作为时间服务器使用):

net time /domain

得到的结果有三种结果:

  1. 存在域,但当前用户不是域用户。提示"发生系统系统错误 5,拒绝访问"。
  2. 存在域,且当前用户是域用户。会得到时间结果。
  3. 当前网络环境为工作组,不存在域。提示"找不到WORKGROUP的域控制器"。