内网渗透测试基础——内网信息收集

发布时间:2023年12月20日

内网渗透测试基础——内网信息收集

在内网渗透测试环境中,有很多设备和防护软件,例如Bit9、ArcSight、Maniant等。它们通过收集目标内网的信息,洞察内网网络拓扑结构,找出内网中最薄弱的环节。信息收集的深度,直接关系到内网渗透测试的成败。

1. 内网信息收集概述

渗透测试人员进入内网后,面对的是一片“黑暗森林”。所以,渗透测试人员首先需要对当前所处的网络环境进行判断。判断设计如下三个方面。

我是谁?——对当前机器角色的判断。

这是哪?——对当前机器所处网络环境的拓扑结构进行分析和判断。

我在哪?——对当前机器所处区域的判断。

对当前机器角色的判断,是指判断当前机器是普通Web服务器、开发测试服务器、公共服务器、文件服务器、代理服务器、DNS服务器还是存储服务器等。具体的判断过程,是根据机器的主机名、文件、网络连接等情况综合完成的。

对当前机器所处网络环境的拓扑结构进行分析和判断,是指对所处内网进行全面的数据收集和分析整理,绘制出大致的内网整体拓扑结构图。对当前机器所处区域的判断,是指判断机器处于网络拓扑中的哪个区域,是在DMZ、办公区还是核心区。当然,这里的区域不是绝对的,只是一个大概的环境。处于不同位置的网络,环境不一样,区域界限也不一定明显。

2. 收集本机信息

不管是在外网还是内网中,信息收集都是重要的第一步。对于内网中的一台机器,其所处内网的结构是什么样的、其角色是什么、使用这台机器的人的角色是什么,以及这台机器上安装了什么杀毒软件、这台机器是通过什么方式上网的、这台机器是笔记本电脑还是台式机等问题,都需要通过信息收集来解答。

2.1 手动收集信息

本机信息包括操作系统、权限、内网IP地址段、杀毒软件、端口、服务、补丁更新频率、网络连接、共享、会话等。如果是域内主机,操作系统、应用软件、补丁、服务、杀毒软件一般都是批量安装的。通过本机的相关信息,可以进一步了解整个域的操作系统版本、软件及补丁安装情况、用户命名方式等。

1. 查询网络配置信息

执行如下命令,获取本机网络配置信息,如图所示。


ipconfig /all


内网信息收集1
2. 查询操作系统及软件的信息

(1)查询操作系统和版本信息


systeminfo | findstr /B /C:“OS Name” /C:“OS Version”


执行以上命令,可以看到当前系统为Windows Server 2008 R2 Enterprise。如果是中文版操作系统,则输入如下命令,如图所示。


systeminfo | findstr /B /C:“OS 名称” /C:“OS 版本”


内网信息收集2

(2) 查看系统体系结构

执行如下命令,查看系统体系结构,如图所示。


echo %PROCESSOR_ARCHITECTURE


内网信息收集3

(3) 查看安装的软件及版本、路径等

利用wmic命令,将结果输出到文本文件中。具体命令如下,运行结果如图所示。


wmic product get name, version


内网信息收集4

利用PowerShell命令,收集软件的版本信息。具体命令如下,运行结果如图所示。


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


内网信息收集5
3. 查询本机服务信息

执行如下命令,查询本机服务信息,如图所示。


wmic service list brief


内网信息收集53
4. 查询进程列表

执行如下命令,可以查看当前进程列表和进程用户,分析软件、邮件客户端、VPN和杀毒软件等进程,如图所示。


tasklist


内网信息收集8

执行如下命令,查看进程信息,如图所示。


wmic process list brief


内网信息收集9

常见杀毒软件的进程,如表所示。

? 常见杀毒软件的进程

进 程软件名称
360sd.exe360杀毒
360tray.exe360实时保护
ZhDongFangYu.exe360主动防御
KSafeTray.exe金山卫士
SafeDogUpdateCenter.exe服务器安全狗
McAfee McShield.exeMcAfee
egui.exeNOD32
AVP.EXE卡巴斯基
avguard.exe小红伞
bdagent.exeBitDefender
5. 查看启动程序信息

执行如下命令,查看启动程序信息,如图所示。


wmic startup get command, caption


内网信息收集10

6. 查看计划任务

执行如下命令 ,查看计划任务,结果如图所示。


schtasks /query /fo LIST /v


内网信息收集11
7. 查看主机开机时间

执行如下命令,查看主机开机时间,如图所示。


net statistics workstation


内网信息收集12

8. 查询用户列表

执行如下命令,查看本机用户列表。


net user


通过分析本机用户列表,可以找出内网机器的命名规则。特别是个人机器的名称,可以用来推测整个域的用户命名方式,如图所示。

内网信息收集14

执行如下命令,获取本地管理员(通常包含域用户)信息。


net localgroup administrators


执行如下命令,查看当前在线用户,如图所示。


query user || qwinsta


内网信息收集15

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

执行如下命令,列出或断开本地计算机与所连接的客户端之间的会话。


net session


10. 查询端口列表

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


netstat -ano


此时可以看到当前机器和哪些主机建立了连接,以及TCP、UDP等端口的使用和监听情况,如图所示。可以先通过网络连接进行初步判断(例如,在代理服务器中可能会有很多机器开放了代理端口,更新服务器可能开放了更新端口8530,DNS服务器可能开放了53端口等),再根据其他信息进行综合判断。

内网信息收集16
11. 查看补丁列表

执行如下命令,查看系统的详细信息。


systeminfo


需要注意系统的版本、位数、域、补丁信息及更新频率等。域内主机的补丁通常是批量安装的,通过查看本机补丁列表,就可以找到未补丁的漏洞。可以看到,当前系统更新了4个补丁,如图所示。

内网信息收集17

使用wmic命令查看安装在系统中的补丁,具体如下。


wmic qfe get Caption,Description,HotFixID,InstalledOn


补丁的名称、描述、ID、安装时间等信息,如图所示。

内网信息收集18

12. 查询本机共享列表

执行如下命令,查看本机共享列表和可访问的域共享列表(域共享在很多时候是相同的),如图所示。


net share


内网信息收集19

利用wmic命令查找共享列表,具体如下,如图所示。


wmic share get name,path,status


内网信息收集20

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

执行如下命令,查询路由表及所有可用接口的ARP(地址解析协议)缓存表,结果如图所示。


route print

arp -a


内网信息收集21内网信息收集22

14. 查询防火墙相关配置

(1)关闭防火墙

Windows Server 2003及之前的版本,命令如下。


netsh firewall set opmode disable


Windows Server 2003之后的版本,命令如下。


netsh advfirewall set allprofiles state off


(2) 查看防火墙配置


netsh firewall show config # win2008 Server 系统

netsh advfirewall firewall show rule name=all dir=in type=dynamic # Windows 10操作系统


(3)修改防火墙配置

Windows Server 2003及之前的版本,允许指定程序全部连接,命令如下。


netsh firewall add a allowedprogram c:\nc.exe “allow nc” enable


Windows Server2003之后的版本,情况如下。

  • 允许指定程序进入,命令如下。

netsh advfirew


all 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” protocol=TCP dir=in localport=3389 action=allow


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


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


15. 查看代理配置情况

执行如下命令,可以看到服务器127.0.0.1的1080端口的代理配置信息,如图所示。


reg query “HKEY_CURRENT_USER\SoftWare\Microsoft\Windows\CurrentVersion\Internet Settings”


内网信息收集23

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

(1)查看远程连接端口

在命令行环境中执行注册表查询语句,命令如下。连接的端口为0xd3d,转换后为3389,如图所示。


REG QUERY”HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /V PortNumber


内网信息收集24

(2)在Windows Server 2003中开启3389端口


wmic path win32_terminalservicesetting where (_CLASS !=“”) call setallowtsconnections 1


(3)在Windows Server 2008和Windows Server 2012中开启3389端口,如图所示。


wmic .namespace:\root\cimv2\terminalservices path win32_terminalservicesetting where (__CLASS !=“”) call setallowtsconnections 1


内网信息收集25


wmic /namespace:\\root\cimv2\terminalservices path win32_tsgeneralsetting where (TerminalName=‘RDP-Tcp’) call setuserauthenticationrequired 1


内网信息收集30


reg add “HKLM\SYSTEM\CURRENT\CONTROLSET\CONTROL\TERMINAL SERVER” /v fSingleSessionPerUser /t REG_DWORD /d 0 /f


2.2 自动收集信息

为了简化操作,可以创建一个脚本,在目标机器上完成流程、服务、用户账号、用户组、网络接口、硬盘信息、网络共享信息、操作系统、安装的补丁、安装的软件、启动时运行的程序、时区等信息的查询工作。网上很多类似的脚本,当然,我们也可以自己定制一个。在这里,推荐一个利用WMIC收集目标机器信息的脚本。

WMIC(Windows Management Instrumentation Command-Line, Windows管理工具命令行)是最有用的Windows命令行工具。在默认情况下,任何版本的Windows XP的低权限用户不能访问WMIC,Windows 7以上版本的低权限用户允许访问WMIC并执行相关查询操作。

WMIC脚本的下载地址,[http://www.fuzzysecurity.com/scripts/files/wmic_info.rar]

内网信息收集31

3. 查询当前权限

3.1 查看当前权限

查看当前权限,命令如下。


whoami


获取一台主机的权限后,有如下三种情况。

  • 本地普通用户:当前为win7本机的user用户,如图所示。

内网信息收集32

  • 本地管理员用户:当前为win7本机的administrator用户,如图所示。

内网信息收集33

  • 域内用户:当前为htftime域内的administrator用户,如图所示。

内网信息收集34

在这三种情况中,如果当前内网中存在域,那么本地普通用户只能查询本机相关信息,不能查询域内信息,而本地管理员用户和域内用户可以查询域内信息。其原理是:域内的所有查询都是通过域控制器实现的(基于LDAP协议),而这个查询需要经过权限认证,所以,只有域用户才拥有这个权限;当域用户执行查询命令时,会自动使用Kerberos协议进行认证,无须额外输入账号和密码。

本地管理员Administrator权限可以直接提升为Ntauthority或System权限,因此,在域中,除普通用户外, 所有的机器都有一个机器用户(用户名是机器名加上"$")。在本质上,机器的system用户对应的就是域里面的机器用户。所以,使用System权限可以运行域内的查询命令。

3.2 获取域SID

执行如下命令,获取域SID,如图所示。


whoami /all


内网信息收集35

当前域htftime的SID为S-1-5-21-3021483069-261499070-2475277354,域用户administrator的SID为S-1-5-21-3021483069-261499070-2475277354-500。

3.3 查询指定用户的详细信息

执行如下命令,查询指定用户的详细信息。


net user XXX /domain


在命令行环境中输入命令"net user user /domain",可以看到,当前 用户在本地组中没有本地管理员权限,在域中属于Domain Users组,如图所示。

内网信息收集36

4. 判断是否存在域

获得了本机的相关信息后,就要判断当前内网中是否存在域。如果当前内网中存在域,就需要判断所控主机是否在域内。下面讲解几种方法。

4.1 使用ipconfig命令

执行如下命令,可以查看网关IP地址、DNS的IP地址、域名、本机是否和DNS服务器处于同一网段等信息,如图所示。


ipconfig /all


内网信息收集37

然后,通过反向解析查询命令nslookup来解析域名的IP地址。用解析得到的IP地址进行对比,判断域控制器和DNS服务器是否在同一台服务器上,如图所示。

内网信息收集38

4.2 查看系统详细信息

执行如下命令,如图所示,”域“即域名(当前域名为htftime.com),”登录服务器“为域控制器。如果”域“为”WORKGROUP",表示当前服务器不在域内。


systeminfo


内网信息收集39

4.3 查询当前登录域及登录用户信息

执行如下命令,如图所示,“工作站域DNS名称”为域名(如果为“WORKGROUP”, 表示当前为非域环境),“登录域”用于表示当前登录的用户是域用户还是本地用户,此处表示当前登录的用户是域用户。


net config workstation


内网信息收集40

4.4 判断主域

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


net time /domain


执行以上命令后,通常有如下情况。

  • 存在域,且当前用户是域用户,如图所示。

内网信息收集41

  • 当前网络环境为工作组,不存在域,如图所示。

内网信息收集42

5. 探测域内存活主机

内网存活主机探测是内网渗透测试中不可或缺的一个环节。可在白天和晚上分别进行探测,以对比分析存活主机和对应的IP地址。

5.1 利用NetBIOS快速探测内网

NetBIOS是局域网程序使用的一种应用程序编程接口(API),为了程序提供了请求低级别服务的统一命令集,为局域网提供了网络机及其他特殊功能。几乎所有的局域网都是在NetBIOS协议的基础上工作的。NetBIOS也是计算机的标识名,主要用于局域网中计算机的互访。NetBIOS的工作流程就是正常的机器名解析查询应答过程,因此推荐优先使用。

nbtscan是一个命令行工具,用于扫描本地或远程TCP/IP网络上的开放NetBIOS名称服务器。nbtscan有Windows和Linux两个版本,体积很小,不需要安装特殊的库或DLL就能使用。NetBIOS的使用方法比较简单。将其上传到目标主机中,然后直接输入IP地址范围并运行,如图所示。

内网信息收集43

显示结果的第一列为IP地址,第二列为机器名和所在域的名称,最后一列是对应的MAC地址。

5.2 利用ICMP协议快速探测内网

除了利用NetBIOS探测内网,还可以利用ICMP协议探测内网。依次对内网中的每个IP地址执行ping命令,可以快速找出内网中所有存活的主机。在渗透测试中,可以使用如下命令循环探测整个C段,如图所示。


for /l %i in (1,1,200) do @ping -w 1 -n 1 192.168.1.%i | find /i “ttl”


内网信息收集44

也可以使用VBS脚本进行探测,具体如下。


strSubNet = “192.168.1.”
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 alived ! 😃 "
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


在使用VBS脚本时,需要修改IP地址段。输入如下命令,扫描结果默认保存在C:\Windows\Temp\Result.txt中,如图所示。


cscript c:\windows\temp\1.vbs


内网信息收集45

5.3 通过ARP扫描探测内网
  1. arp-scan工具

直接把arp.exe上传到目标机器中并运行,可以自定义掩码、指定扫描范围等,命令如下,如图所示。


arp.exe -t 192.168.1.0/20


内网信息收集arp-scan

  1. Empire中的arpscan的模块

Empire内置了arpscan模块。该模块用于在局域网内发生ARP数据包、收集活跃主机的IP地址和MAC地址信息。在Empire中输入命令”usemodule situational_awareness/network/arpscan",即可使用其内置的arpscan模块,如图所示。

  1. Nishang中的Invoke-ARPScan.ps1脚本

使用Nishang中的Invoke-ARPScan.ps1脚本,可以将脚本上传到目标主机中运行,也可以直接远程加载脚本、自定义掩码和扫描范围,命令如下,如图所示。


powershell.exe -exec bypass -Command “& {Import-Module C:\windows\temp\Invoke-ARPScan.ps1; Invoke-ARPScan -CIDR 192.168.1.0/20}” >> C:\windows\temp\log.txt


Nishang脚本

5.4 通过常规TCP/UDP端口扫描探测内网

ScanLine是一款经典的端口扫描工具,可以在所有版本的Windows操作系统中使用,体积小,仅使用单个文件,同时支持TCP/UDP端口扫描,命令如下,如图所示。


scanline -h -t 22,80 - 89,110,389,445,3389,1099,1433,2049,6379,7001,8080,1521,3306,3389,5432 -u 53,161,137,139, -O c:\windows\temp\log.txt -p 192.168.1.1-254 /b


scanline1

6. 扫描域内端口

通过查询目标主机的端口开放信息,不仅可以了解目标主机所开放的服务,还可以找出其开放服务的漏洞、分析目标网络的拓扑结构等,具体需要关注以下三点。

  • 端口的Banner信息。
  • 端口上运行的服务。
  • 常见应用的默认端口。

在进行内网渗透测试时,通常会使用Metasploit内置的端口进行扫描。也可以上传端口扫描工具,使用工具进行扫描。还可以根据服务器的环境,使用自定义的端口扫描脚本进行扫描。在获得授权的情况下,可以直接使用Nmap、masscan等端口扫描工具获取开放的端口信息。

6.1 利用telnet命令进行扫描

Telnet协议是TCP/IP协议族的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在目标计算机上使用Telnet协议,可以与目标服务器建立连接。如果只是想快速探测某台主机的某个常规高危端口是否开放,使用telnet命令是最方便的。telnet命令的一个简单使用示例,如图所示。

内网信息收集48

6.2 S扫描器

S扫描器是早期的一种快速端口扫描工具,支持大网段扫描,特别适合运行在Windows Server 2003以下版本的操作系统中。S扫描器的扫描结果默认保存在其安装目录下的result.txt文件中。推荐使用TCP扫描,命令如下,如图所示。


S.exe TCP 192.168.1.1 192.168.1.254 445, 3389,1433, 7001,1099,9080,80,22,23,21,25,110,3306,5432,1521,6379,2049,111 256 /Banner /save


内网信息收集49

6.3 Metasploit端口扫描

Metasploit 不仅提供了多钟端口扫描技术,还提供了与其他扫描工具的接口。在msfconsole下运行"search portscan"命令,即可进行搜索。

在本实验中,使用auxiliary/scanner/portscan/tcp模块进行演示,如图所示。

内网信息收集50

可以看到,使用Metasploit的内置端口扫描模块,能够找到系统中开放的端口。

6.4 PowerSploit的Invoke-portscan.ps1脚本

PowerSploit的Invoke-Portscan.ps1脚本,推荐使用无文件的形式进行扫描,命令如下,如图所示。


powershell.exe -nop -exec bypass -c “c:\Users\CISP-PTE\Desktop\Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports ‘445,1433,8080,3389,80’ -oA c:\windows\temp\res.txt”


内网信息收集51

6.5 Nishang的Invoke-PortScan模块

Invoke-PortScan是Nishang的端口扫描模块,用于发现主机、解析主机名、扫描端口,是一个很实用的模块。输入“Get-Help Invoke-PortScan-full"命令,即可查看帮助信息。

Invoke-PortScan的参数介绍如下。

  • StartAddress:扫描范围的开始地址。
  • EndAddress:扫描范围的结束地址。
  • ScanPort:进行端口扫描。
  • Port:指定扫描端口。默认扫描的端口有21、22、23、53、69、71、80、98、110、139、111、389、443、445、1080、1433、2001、2049、3001、3128、5222、6667、6868、7777、7878、8080、1521、3306、3389、5801、5900、5555、5901。
  • TimeOut:设置超时时间。

使用以下命令对本地局域网进行扫描,搜索存活主机并解析主机名,如图所示。


Invoke-PortScan -StartAddress 192.168.1.1 -EndAddress 192.168.1.255 -ResolveHost


内网信息收集52

备注:Nishang的用法可以参照【https://blog.csdn.net/weixin_40412037/article/details/115510209】

??:不知为啥解析出来的主机名都是同一个。如果有知道为什么的,给我留言或私信。

6.6 端口Banner信息

如果通过扫描发现了端口,可以使用客户端连接工具或者nc,获取服务端的Banner信息。获取Banner信息后,可以在漏洞库中查找对应CVE编号的POC、EXP,在ExploitDB、Seebug等平台上查看相关的漏洞利用工具,然后到目标系统中验证漏洞是否存在,从而有针对性地进行安全加固。相关漏洞的信息,可以参考如下两个网站。

  • 安全焦点:其中的BugTraq是一个出色的漏洞和Exploit数据源,可以通过CVE编号或者产品信息漏洞直接搜索,
  • Exploit-DB:取代了老牌安全网站milw0rm,提供了大量的Exploit程序和相关公告,【https://www.exploit-db.com/】

常见的端口及说明,如下表所示。

文件共享服务端口

端口号端口说明使用说明
21、22、69FTP/TFTP文件传输协议允许匿名的上传、下载、爆破和嗅觉操作
2049NFS服务配置不当
139SAMBA服务爆破、未授权访问、远程代码执行
389LDAP目录访问协议注入、允许匿名访问、弱口令

远程连接服务端口

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

Web应用服务端口

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

数据库服务端口

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

邮件服务

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

网络常见协议端口

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

特殊服务端口

端口号端口说明使用说明
2181ZooKeeper服务未授权访问
8069Zabbix服务远程执行、SQL注入
9200、9300Elasticsearch服务远程执行
11211Memcached服务未授权访问
512、513、514Linux rexec服务匿名访问、文件上传
873rsync服务匿名访问、文件上传
3690SVN服务SVN泄露、未授权访问
使用说明
-----------------------------------------------------------------
53DNS域名系统允许区域传送、DNS劫持、缓存投毒、欺骗
67、68DNS域名系统DHCP服务劫持、欺骗
161SNMP协议爆破、搜集目标内网信息

特殊服务端口

端口号端口说明使用说明
2181ZooKeeper服务未授权访问
8069Zabbix服务远程执行、SQL注入
9200、9300Elasticsearch服务远程执行
11211Memcached服务未授权访问
512、513、514Linux rexec服务匿名访问、文件上传
873rsync服务匿名访问、文件上传
3690SVN服务SVN泄露、未授权访问
50000SAP Management Console远程执行
文章来源:https://blog.csdn.net/weixin_41905135/article/details/135099141
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。