发布于22小时前22小时 背景在授权内网渗透中,工具的价值不在于扫描得多,而在于把资产、端口、服务版本、漏洞证据和修复复测串成可审计链路。本文以 Kali Linux 为操作端,目标范围使用文档网段 192.0.2.0/24,演示 Nmap 与 Nuclei 的安装校验、低扰动探测、结果关联和日志留存。实际执行前,应由资产负责人书面确认目标 IP、允许时段、扫描速率和禁止测试项。以下地址均为示例。不要把命令直接指向互联网或未授权网段;生产环境先从单主机、低并发开始。问题定位:先确认范围和网络路径常见误判并不是漏洞本身,而是测试机路由、代理、DNS 或出口 ACL 配置不正确。开始扫描前,先固化范围文件并检查 Kali 到目标网段的实际路径。范围文件应只包含已授权地址,后续所有工具都从该文件读取,避免手工输入造成越界。mkdir -p ~/pt/acme-2025/{scope,logs,raw,report} cd ~/pt/acme-2025 printf '%s\n' '192.0.2.10' '192.0.2.20' > scope/targets.txt chmod 600 scope/targets.txt ip -br addr ip route get 192.0.2.10 getent hosts app.intra.example sudo nft list ruleset > logs/kali-nft-rules.txt sha256sum scope/targets.txt | tee logs/scope.sha256 date -Is | tee logs/start-time.txt若目标经过 VPN,到达路径应显示对应隧道接口。若域名解析到范围外地址,应暂停并找负责人核对,而不是继续扫描。对禁止 ICMP 的环境,不要仅凭 ping 不通判断主机离线。工具安装与完整性检查Kali 优先使用官方 APT 仓库,便于版本追踪和卸载。不要直接执行来源不明的 curl 管道脚本。安装前检查仓库配置与签名状态,安装后记录版本。grep -Rhv '^#' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null sudo apt update apt-cache policy nmap nuclei sudo apt install --yes nmap nuclei jq nmap --version | tee logs/nmap-version.txt nuclei -version 2>&1 | tee logs/nuclei-version.txt dpkg-query -W -f='${Package}\t${Version}\n' nmap nuclei jq \ | tee logs/tool-packages.tsv nuclei -update-templates模板更新后应记录模板目录的 Git 提交或文件哈希。不同模板版本可能产生不同结果,缺少版本记录会导致复测无法重现。test -d ~/.local/nuclei-templates/.git && \ git -C ~/.local/nuclei-templates rev-parse HEAD \ | tee logs/nuclei-templates.commit find ~/.local/nuclei-templates -type f -name '*.yaml' -print0 \ | sort -z | xargs -0 sha256sum \ | sha256sum | tee logs/nuclei-templates.tree.sha256技术分析:分阶段探测而不是一次扫完内网探测建议拆成三步:存活与常用端口确认、服务识别、针对已确认 HTTP 服务的模板验证。这样既能降低对老旧设备的冲击,也能减少 Nuclei 对非 Web 端口的无效请求。第一阶段只检查批准的常用 TCP 端口,并限制发送速率。第二阶段仅对开放端口做服务识别,不默认启用侵入性 NSE 脚本。第三阶段从结果中提取 HTTP 服务,再运行限定严重级别和标签的 Nuclei 模板。Nmap 的 -sV 会主动与服务交互,-Pn 会把目标视为在线。生产网中应配合较低的 --max-rate、合理超时和重试次数。不要在不清楚影响时使用全端口高速扫描、UDP 全扫或带有爆破、拒绝服务语义的脚本。操作步骤一:Nmap 低速资产与服务识别cd ~/pt/acme-2025 sudo nmap -n -Pn -sS \ -p 22,80,443,445,3389,8080,8443 \ --max-rate 100 --max-retries 2 --host-timeout 5m \ -iL scope/targets.txt \ -oA raw/01-ports \ 2>&1 | tee logs/01-ports.console.log # 仅针对第一阶段发现的开放端口识别服务 sudo nmap -n -Pn -sV --version-light \ -p 22,80,443,445,3389,8080,8443 \ --script 'banner,http-title,http-headers,ssl-cert' \ --script-timeout 20s --max-rate 50 --max-retries 1 \ -iL scope/targets.txt \ -oA raw/02-services \ 2>&1 | tee logs/02-services.console.log-oA 会同时生成普通文本、XML 和 grepable 格式。XML 适合后续解析,普通文本适合人工复核。这里显式列出 NSE 脚本,而不是使用宽泛的 vuln 分类,避免意外执行不适合生产环境的探测逻辑。操作步骤二:从 Nmap XML 生成 Web 目标不要凭端口号直接认定协议。8080 可能不是 HTTP,443 也可能承载其他 TLS 服务。下面用 Python 读取 Nmap XML,根据服务名和 TLS 隧道字段生成候选 URL,并保留来源证据。python3 - <<'PY' import xml.etree.ElementTree as ET from pathlib import Path root = ET.parse('raw/02-services.xml').getroot() urls = set() for host in root.findall('host'): addr_node = host.find( 服务器、云资产与权限边界梳理示意 网络请求、日志与边界流量分析示意
22小时前22小时 这个流程建议把“资产发现、服务识别、Web 入口整理、模板验证”拆开做,不要直接对整个网段跑全端口加全量 Nuclei 模板。内网里打印机、工控设备和老旧中间件对高并发探测比较敏感,先确认授权网段、排除清单和扫描时段。 第一阶段只做存活发现,并保留原始结果: sudo nmap -sn -PE -PS22,80,443,445,3389 \ -iL scope.txt --excludefile exclude.txt \ -oA results/01-discovery awk '/Status: Up/{print $2}' results/01-discovery.gnmap \ > results/alive.txt 如果目标网段禁 ICMP,不要据此判定主机离线;后续端口扫描使用 -Pn。建议先扫业务常见端口,再对有响应资产补全端口: sudo nmap -Pn -sS -T3 --max-rate 500 \ -p 22,80,443,445,3389,8080,8443,8000,9000 \ -iL results/alive.txt \ -oA results/02-common-ports sudo nmap -Pn -sV --version-light -T3 \ --script-timeout 20s \ -p 80,443,8000,8080,8443,9000 \ -iL results/alive.txt \ -oA results/03-web-services 这里不建议一开始就用 -A:它会同时启用版本探测、脚本和路径跟踪,流量与日志噪声都比较大。需要核验某台资产时再定点增加 -sC -sV,并保存 XML,后续便于导入资产平台或复盘。 Nuclei 前最好先用 httpx 把真正可访问的 URL、协议和端口整理出来,避免把 IP 列表直接交给 Nuclei 后漏掉非标准端口: httpx -l results/alive.txt \ -ports 80,443,8000,8080,8443,9000 \ -follow-redirects -status-code -title -tech-detect \ -threads 20 -timeout 5 \ -o results/web-urls.txt 正式验证时先限定模板类别和严重级别,并控制速率: nuclei -l results/web-urls.txt \ -severity critical,high,medium \ -tags cve,misconfig,exposure \ -exclude-tags dos,fuzz,intrusive \ -rate-limit 30 -concurrency 10 -timeout 8 -retries 1 \ -jsonl-export results/nuclei.jsonl 有两个细节值得补充: 模板库先固定版本并记录更新时间,避免同一批资产因模板变化导致结果不可复现;不要未经审核就运行自定义或第三方模板。 Nuclei 命中只能算线索。复核时应查看模板 ID、匹配器和实际响应,重点排除统一错误页、反向代理默认页、版本号伪装等误报;验证以无破坏的版本、配置和响应特征为主,不要在生产环境直接执行利用。 最后建议把 Nmap XML、Nuclei JSONL、扫描时间、源 IP、授权范围和排除项一起归档。蓝队侧可同步按扫描源 IP 检索防火墙、WAF、IDS 和主机日志:既能确认扫描是否完整,也能检验现有告警规则是否覆盖端口枚举、异常 HTTP 路径和模板化请求。
创建帐户或登录后发表意见