侦察知识库Skill reconnaissance-knowledge

这个技能库提供了全面的网络侦察和服枚举知识。它包括端口扫描、服务指纹识别、Web目录发现和漏洞识别的方法论。包括最佳实践的结构化数据收集。

渗透测试 0 次安装 13 次浏览 更新于 3/3/2026

侦察知识库

目的

这个知识库提供了全面的侦察方法和技术。它涵盖了在不执行利用的情况下,关于目标的信息收集,包括发现服务、版本、技术和潜在的攻击向量。

可用工具

网络扫描

  • nmap - 端口和服务发现
  • masscan - 快速端口扫描(如果需要速度)
  • nc (netcat) - 横幅抓取

Web枚举

  • gobuster - 目录/文件暴力破解
  • dirb - 替代目录扫描器
  • nikto - Web漏洞扫描器
  • whatweb - 技术识别
  • curl/wget - 手动HTTP交互

服务枚举

  • enum4linux - SMB/Samba枚举
  • smbclient - SMB交互
  • showmount - NFS枚举
  • snmpwalk - SNMP枚举

DNS/子域

  • dig - DNS查询
  • host - DNS查找
  • nslookup - DNS信息

分层侦察策略

核心原则: 每个侦察任务都有3层 - 当前一层结果不足时升级。

每项任务的层框架:

第1层(快速 & 广泛):
  - 快速工具,默认参数
  - 目标:获取初步立足点信息
  - 时间:1-5分钟
  - 示例:nmap前1000个端口,gobuster使用小词表

第2层(深入 & 密集):
  - 相同工具,积极参数
  - 目标:从已知服务中提取最大信息
  - 时间:5-30分钟
  - 示例:nmap所有端口+版本检测,gobuster使用大词表

第3层(替代 & 创意):
  - 不同工具或手动技术
  - 目标:找到标准工具遗漏的信息
  - 时间:可变
  - 示例:手动横幅抓取,替代扫描器,自定义脚本

升级触发器:

  • 第1层返回无结果 → 升级到第2层
  • 第2层返回信息极少 → 升级到第3层
  • 第3层仍然不足 → 重新评估整个方法

侦察阶段

第1阶段:端口发现

目标:找到所有开放端口

# 快速扫描(前1000个端口)
nmap -p- --min-rate=1000 -T4 目标

# 全面扫描(所有端口)
nmap -p- -T4 目标 -oN ports.txt

输出格式

{
  "ports": [
    {"port": 22, "state": "open", "protocol": "tcp"},
    {"port": 80, "state": "open", "protocol": "tcp"}
  ]
}

第2阶段:服务检测

目标:识别服务和版本

# 服务版本检测
nmap -p22,80,443 -sV -sC -A 目标 -oN services.txt

# 积极扫描与脚本
nmap -p22,80 -sC -sV --script=default,vuln 目标

输出格式

{
  "services": [
    {
      "port": 22,
      "service": "ssh",
      "version": "OpenSSH 7.6p1",
      "os": "Ubuntu Linux"
    },
    {
      "port": 80,
      "service": "http",
      "version": "Apache httpd 2.4.29",
      "technologies": ["PHP/7.2"]
    }
  ]
}

第3阶段:Web枚举(如果发现HTTP/HTTPS)

目标:发现隐藏文件、目录和Web技术

分层Web扫描:

# 第1层:快速目录扫描
gobuster dir -u http://目标 -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -t 50

# 如果第1层发现很少/没有,升级到第2层:
# 第2层:深度目录扫描,更大的词表
gobuster dir -u http://目标 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt,zip,bak -t 100

# 如果仍然不足,尝试第3层:
# 第3层:替代工具或技术
# 选项A:不同的工具
feroxbuster -u http://目标 -w /usr/share/wordlists/dirb/common.txt

# 选项B:漏洞扫描器
nikto -h http://目标

# 选项C:技术检测
whatweb http://目标

# 替代更大的词表
gobuster dir -u http://目标 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50

# 技术检测
whatweb http://目标

# 漏洞扫描
nikto -h http://目标

输出格式

{
  "web": {
    "url": "http://10.10.10.1",
    "technologies": ["Apache/2.4.29", "PHP/7.2", "WordPress 5.0"],
    "directories": [
      "/admin (状态:403)",
      "/uploads (状态:301)",
      "/backup (状态:200)"
    ],
    "files": [
      "/config.php (状态:200)",
      "/README.txt (状态:200)"
    ],
    "vulnerabilities": [
      "过时的WordPress版本",
      "/uploads上启用目录列表"
    ]
  }
}

第4阶段:特定服务枚举

SMB(端口139/445)

# 基本枚举
enum4linux -a 目标

# 列出共享
smbclient -L //目标 -N

# 检查匿名访问
smbmap -H 目标

FTP(端口21)

# 检查匿名登录
ftp 目标
# 尝试:anonymous / anonymous

# 横幅抓取
nc 目标 21

SSH(端口22)

# 获取SSH版本和算法
ssh -v 目标

# 检查用户枚举
ssh 用户@目标 2>&1 | grep -i "invalid\|denied"

MySQL/MSSQL(端口3306/1433)

# 横幅抓取
nc 目标 3306

# 测试默认凭据
mysql -h 目标 -u root -p
# 尝试常见密码:root, admin, password, ''

最佳实践

1. 结构化输出

始终以JSON格式格式化发现,便于解析:

# 示例:将nmap输出解析为JSON
nmap -p- 目标 -oG - | grep "Ports:" | awk '{print $2, $4}' | sed 's/\/open//' | jq -R -s 'split("
") | map(select(length > 0) | split(" ") | {port: .[1], service: .[0]})'

2. 隐蔽性与速度

  • 对于游乐场环境:使用积极扫描(-T4,–min-rate=1000)
  • 对于真实环境:使用较慢,隐蔽的扫描(-T2)

3. 保存所有输出

# 始终保存原始输出
nmap ... -oN nmap-full.txt -oX nmap-full.xml

# 将发现保存到状态文件
cat discovered.json >> .pentest-state.json

4. 全面覆盖

不要错过:

  • UDP端口(较慢但重要):nmap -sU --top-ports 100 目标
  • 所有TCP端口:nmap -p- 目标
  • 多个词表的Web目录
  • 发现的所有服务的默认凭据

5. 时间管理

  • 快速初始扫描:最多5分钟
  • 全面扫描:15-20分钟最多
  • 这是一个游乐场,不是现实世界 - 速度很重要

常见词表

# 小型(快速)
/usr/share/wordlists/dirb/common.txt

# 中型(平衡)
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

# 大型(全面)
/usr/share/wordlists/dirbuster/directory-list-2.3-big.txt

# 特定于Web应用
/usr/share/wordlists/wfuzz/general/common.txt

输出模板

完成侦察后,以这种格式提供摘要:

{
  "target": "10.10.10.1",
  "scan_date": "2025-01-15",
  "discovered": {
    "ports": [
      {"port": 22, "service": "ssh", "version": "OpenSSH 7.6p1"},
      {"port": 80, "service": "http", "version": "Apache 2.4.29"}
    ],
    "web": {
      "technologies": ["Apache", "PHP", "WordPress"],
      "interesting_paths": ["/admin", "/uploads", "/wp-admin"],
      "vulnerabilities": ["过时的WordPress", "目录列表"]
    },
    "potential_vectors": [
      "通过/uploads上传文件",
      "WordPress插件漏洞",
      "SSH密码认证启用"
    ]
  },
  "recommended_actions": [
    "测试/uploads上的文件上传功能",
    "搜索检测到版本的WordPress漏洞",
    "使用wpscan枚举WordPress用户"
  ]
}

关键原则

  1. 全面性:不要错过服务或目录
  2. 结构:始终输出JSON以便协调者解析
  3. 速度:在全面和高效之间取得平衡
  4. 上下文:提供下一步建议
  5. 不利用:停留在侦察阶段,不要测试漏洞

移交到下一阶段

当侦察足够时,提供:

  1. 完整的服务清单
  2. 识别的漏洞
  3. 推荐的利用方法
  4. 任何发现的凭据/默认登录
  5. 更新的.pentest-state.json

侦察完成后,使用渗透知识进行利用阶段。