【内网信息收集】之搜集本机信息
为什么要进行内网本机信息收集:
在内网渗透测试环境中,有很多的设备和防护软件。通过收集目标内网信息,洞察内网网络拓扑结构,找到内网中最薄弱的环节。
渗透人员进入内网后,需要先对当前的网络环境进行判断,所处的内网结构是什么样的、其角色是什么、使用这台机器的人的角色是什么、以及这台机器上装了什么杀毒软件等,都需要进行信息收集。
正如某大佬所说:渗透的本质就是信息收集。
手动信息收集:
本机信息包括操作系统、权限、内网IP地址段杀毒软件、端口、服务、补丁更新频率、网络连接、共享、会话等。如果是域内主机,操作系统、应用软件、补丁、服务、杀毒软件一般都是批量安装的。
通过本机的相关信息,可以进一步了解整个域的操作系统版本、软件及补丁安装情况、用户命名方式。
查询网络配置信息:
命令: ipconfig/all
查询操作系统及软件信息:
-
查询操作系统和版本系统:
命令: systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
如果为中文版系统则执行命令: systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
-
查看系统体系结构:
命令: echo %PROCESSOR_ARCHITECTURE%
-
查看安装的软件及版本、路径等:
利用 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
如果在执行时报错,无法加载列资源,可以使用chcp命令将编码暂时设置为英文。
执行: chcp 437
运行完schtasks以后再使用chcp命令将编码设置回中文GBK(936)。
执行: chcp 936
查看主机开机时间:
命令: net statistics workstation
查询用户列表:
-
查看本机用户列表:net user
-
查看本地管理员: net localgroup administrators
-
显示有关登录到系统的所有用户的信息: query user
列出或断开本地计算机与所连接的客户端之间的会话:
命令: net session
查询端口列表:
命令:netstat -ano
查看补丁列表:
命令: systeminfo
使用wmic查看安装在系统的补丁: wmic qfe get Caption,Description,HotFixID,InstalledOn
查看本机共享列表:
命令: net share
利用wmic命令查找共享列表: wmic share get name,path,status
查询路由表及所有可用接口的ARP缓存表
命令:route print 和 arp -a
防火墙相关配置:
- 关闭防火墙
- Windows Server 2003及之前版本
命令:netsh firewall set opmode disable - Windows Server 2003之后版本
命令:netsh advfirewall set allprofiles state off
-
查看防火墙配置
命令: netsh advfirewall show allprofiles
-
修改防火墙配置
- 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=out program="C:\nc.exe" - 允许3389端口放行
命令: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"
查看代理配置情况:
命令: reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
查询并开启远程连接服务:
- 查询远程连接端口
命令: REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber
0xd3d转换为十进制就是3389
- 在Windows Server 2003中开启3389端口
命令: wmic path win32_terminalservicesetting where (__CLASS !="") call setallowsconnections 1 - 在其它系统(亲测了server2012、win7、win10)开启和关闭3389端口
开启命令: REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
关闭命令: REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 11111111 /f
自动收集本机信息:
任何版本的Windows xp低权限无法执行wmic,Windows 7以上版本的低权限用户允许访问wmic并执行相关操作
创建.bat文件执行后结果会写入HTML文件:
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
查询当前权限:
查看当前权限:
当内网中存在域时,本地普通用户只能查询本机相关信息,不能查询域内信息。本地管理员用户和域内用户可以查询域内信息。原理:域内所有查询都是通过域控制器实现的(基于LDAP协议),而这个查询需要权限认证,所以只有域内用户才有这个权限,当域用户执行命令时,会自动使用Kerberos协议进行认证,无须额外输入账号密码。
获取域SID:
命令: whoami /all
查询指定用户详细信息:
命令: net user username /domain
判断是否有域:
获取了本机相关信息后,判断当前内网是否有域,如果存在域,就需要判断所控主机是否在域内。
使用ipconfig命令
执行命令查看网关IP、DNS的IP地址、域名、本机是否和DNS服务器处于同一网段等信息。
命令: ipconfig /all
然后,通过反向查询命令nslookup来解析域名IP。用解析后的IP地址进行对比,判断域控制器和DNS服务器是否在同一台服务器上。
查看系统详细信息:
"域"即域名,"登陆服务器"为域控制器。如果"域"为"WORKGROUP",表示当前服务器不在域内。
命令:systeminfo
查询当前登陆域及登陆用户状态:
"工作站域DNS名称"为域名(如果为"WORKGROUP"表示当前为非域环境),"登陆域"表示当前登陆用户是域用户还是本地用户。
命令: net config workstation
判断主域:
命令:net time /domain,三种情况:
- 存在域,但当前不是域用户
- 存在域,当前是域用户
- 不存在域,当前网络环境为工作组