内网信息收集是渗透测试和红队行动中至关重要的一步,目的是在获得一个初始立足点后,深入了解内部网络环境,寻找横向移动和权限提升的机会。下面我将详细阐述内网信息收集的内容、常用命令和工具。
核心思想
由点到面,由浅入深:从已控制的单台主机开始,逐步摸清整个网络的结构、资产和信任关系。
一、信息收集的核心内容
可以将内网信息收集分为以下几个层面:
-
本机信息
-
用户信息:当前用户权限、登录过的用户、管理员组用户。
-
系统信息:操作系统版本、补丁情况、安装的软件、进程列表、服务、计划任务。
-
网络信息:本机IP地址、DNS服务器、ARP表、路由表、防火墙规则、 hosts 文件。
-
敏感信息:密码文件、历史命令、配置文件、数据库连接字符串、浏览器保存的密码。
-
凭证信息:内存中的密码、保存的RDP凭证、WiFi密码、PuTTY等工具的会话信息。
-
-
网络拓扑与存活主机发现
-
网段信息:判断当前所在网段,寻找其他网段(如 DMZ、办公网、生产网)。
-
存活主机发现:探测同一网段或相邻网段内存活的主机。
-
端口与服务探测:发现存活主机上开放的服务和端口。
-
网络设备识别:识别路由器、交换机、防火墙等网络设备。
-
-
域环境信息(如果存在Active Directory)
-
域基本信息:域名、域控制器位置、域功能级别。
-
域用户与组:枚举所有域用户、计算机、组及其成员关系(尤其是高权限组如Domain Admins)。
-
域策略:密码策略、账户锁定策略、Kerberos策略等。
-
信任关系:林内信任、林间信任。
-
关键服务:查找文件共享、SQL Server、Exchange邮件服务器等。
-
二、常用命令与工具详解
(一)Windows 系统
1. 本机信息收集
-
用户与权限
cmd
# 查看当前用户及权限 whoami whoami /priv # 查看当前用户的特权 whoami /groups # 查看当前用户所在的组 net user # 查看本地用户 net user [username] # 查看指定用户详细信息 net localgroup administrators # 查看管理员组用户 net localgroup "Remote Desktop Users" # 查看远程桌面用户组
-
系统与网络信息
cmd
# 系统信息 systeminfo # 查看详细的系统信息(包括补丁) hostname # 查看主机名 set # 查看环境变量 # 网络信息 ipconfig /all # 查看详细的IP配置(包括DNS) route print # 查看路由表 arp -a # 查看ARP缓存表 netsh advfirewall firewall dump # 查看防火墙规则(需要管理员权限) netsh wlan show profiles # 查看保存的WiFi配置文件(需要管理员权限) netsh wlan show profile name="[ProfileName]" key=clear # 查看WiFi密码
-
进程、服务、连接
cmd
# 进程与服务 tasklist # 查看进程列表 tasklist /svc # 查看进程对应的服务 net start # 查看正在运行的服务 sc query # 查看所有服务的状态 wmic service list brief # 使用WMI查看服务 # 网络连接 netstat -ano # 查看所有网络连接、监听端口和对应的PID
-
敏感文件与信息
cmd
# 查看计划任务 schtasks /query /fo LIST /v # 查看共享 net share # 查找敏感文件 dir /s *pass* == *.config == *vnc* == *.pem == *.p12 == *.kdbx == *.txt findstr /si password *.xml *.ini *.txt *.config # 查看浏览器密码(需要工具如:LaZagne, Mimikatz)
2. 域环境信息收集(如果主机已加入域)
-
基础域信息
cmd
# 判断是否在域中 systeminfo | findstr /B /C:"Domain" net config workstation # 查询域基本信息 net view /domain # 查看所有域 net view /domain:[DomainName] # 查看指定域中的机器列表(可能被禁用) nltest /dclist:[DomainName] # 查找域控制器
-
使用PowerShell(更强大)
powershell
# 需要先获取执行权限,通常使用:Set-ExecutionPolicy Bypass -Scope Process # 获取当前域 Get-ADDomain # 获取域控制器 Get-ADDomainController # 枚举域用户 Get-ADUser -Filter * -Properties * | select Name, SamAccountName, Description, LastLogonDate # 枚举域计算机 Get-ADComputer -Filter * -Properties * | select Name, OperatingSystem, LastLogonDate # 枚举域组和组成员(重点关注高权限组) Get-ADGroupMember "Domain Admins" -Recursive Get-ADGroupMember "Enterprise Admins" -Recursive # 获取域密码策略 Get-ADDefaultDomainPasswordPolicy # 使用PowerView.ps1(更专业的AD信息收集脚本) Import-Module .\PowerView.ps1 Get-NetDomain # 获取域信息 Get-NetUser # 获取所有域用户 Get-NetComputer # 获取所有域计算机 Invoke-ShareFinder # 查找域内共享
(二)Linux 系统
1. 本机信息收集
-
用户与权限
bash
# 查看当前用户及权限 whoami id sudo -l # 查看当前用户可以以root权限执行的命令(非常重要!) cat /etc/passwd # 查看所有用户 cat /etc/group # 查看所有组 cat /etc/shadow # 查看密码哈希(需要root权限) last # 查看登录历史
-
系统与网络信息
bash
# 系统信息 uname -a # 查看内核版本等信息 cat /etc/*-release # 查看系统发行版 cat /etc/issue ps aux # 查看所有进程 df -h # 查看磁盘空间 # 网络信息 ifconfig 或 ip addr # 查看IP地址 cat /etc/resolv.conf # 查看DNS配置 route -n # 查看路由表 arp -a # 查看ARP表 iptables -L -n # 查看防火墙规则(需要root权限)
-
敏感信息与配置
bash
# 查看计划任务 crontab -l ls -la /etc/cron* # 查看环境变量 env # 查找敏感文件 find / -name "*.pem" -o -name "*id_rsa*" -o -name "*.kdbx" -o -name "*.config" 2>/dev/null grep -r "password" /etc /home /opt 2>/dev/null # 查看历史命令 history
2. 网络信息收集(跨平台工具)
-
存活主机发现
bash
# Windows (需要安装或系统自带) ping -n 1 192.168.1.1 for /L %i in (1,1,254) do @ping -n 1 -w 100 192.168.1.%i | findstr "TTL" # Linux/Windows (使用nmap,需安装) nmap -sn 192.168.1.0/24 # Ping扫描,发现存活主机 nmap -sP 192.168.1.0/24 # 同上 # Linux (使用arp-scan) arp-scan --localnet # Linux (使用fping) fping -a -g 192.168.1.0/24 2>/dev/null
-
端口与服务探测
bash
# 使用nmap进行端口扫描 nmap -sS -sV -O 192.168.1.100 # TCP SYN扫描,版本探测,操作系统探测 nmap -sS -p 1-65535 192.168.1.100 # 全端口扫描(慢) nmap -sS -p- --min-rate 5000 192.168.1.100 # 快速全端口扫描 nmap -sU -p 53,161,162 192.168.1.1 # UDP端口扫描 # 使用masscan进行极速端口扫描 masscan -p1-65535 192.168.1.0/24 --rate=10000
-
SMB/网络共享枚举
bash
# Linux (smbclient, enum4linux) smbclient -L //192.168.1.100 -N # 匿名列举共享 enum4linux -a 192.168.1.100 # 全面的SMB枚举 # Windows net view \\192.168.1.100 # 查看目标共享
三、自动化工具
为了提升效率,通常会使用自动化脚本或工具。
-
Windows:
-
PowerSploit / PowerView: 专业的PowerShell AD信息收集框架。
-
BloodHound / SharpHound: 可视化分析域内攻击路径的神器。SharpHound用于收集数据,BloodHound用于展示。
-
LaZagne: 跨平台的凭证恢复工具,用于提取浏览器、系统等保存的密码。
-
Mimikatz: 神器,主要用于从内存中提取明文密码、哈希、票据等(需要高权限)。
-
-
Linux:
-
LinEnum: 经典的Linux本地枚举脚本,检查权限提升点。
-
Linux Smart Enumeration: 更强大的Linux枚举脚本。
-
LinPEAS: 功能非常全面的Linux权限提升审计脚本,自动化检查各种漏洞。
-
Autorecon: 自动化网络扫描工具,能自动进行端口扫描、服务识别、漏洞检查等。
-
四、注意事项与防御建议
-
隐蔽性: 内网信息收集活动会产生大量网络流量和日志,容易被IDS/IPS、EDR、态势感知等设备检测到。需要尽量低调,控制扫描速度,使用合法工具。
-
权限: 很多命令和工具需要管理员/root权限才能获取完整信息。
-
防御建议(蓝队视角):
-
最小权限原则: 为用户和应用程序分配所需的最小权限。
-
网络分段: 将网络划分为不同的安全区域,限制横向移动。
-
强化端点安全: 部署EDR、杀毒软件,并保持更新。
-
日志监控与审计: 集中收集和分析系统、网络、安全设备日志,设置告警规则(如异常登录、大量端口扫描)。
-
禁用不必要的服务和共享: 减少攻击面。
-
定期进行漏洞扫描和渗透测试: 主动发现自身弱点。
-
总之,内网信息收集是一个系统性工程,需要根据目标环境灵活运用各种命令和工具,并将收集到的信息进行关联分析,才能绘制出完整的内网攻击地图。