nuclide-research/nu-recon

GitHub: nuclide-research/nu-recon

nu-recon是一款单主机被动侦察工具,生成JSON报告。

Stars: 0 | Forks: 0

# nu-recon 单主机被动侦察:一个IPv4地址输入,一个JSON报告输出。 nu-recon在发送主动扫描流量之前查询四个来源:通过`gethostbyaddr`进行反向DNS查询,使用Shodan主机API查询开放端口和服务标志,通过在指定端口上使用stdlib `ssl`进行TLS证书抓取,以及通过主机名在crt.sh上进行证书透明度查找。它将结果组装成一个扁平的JSON报告,包含每个服务的威胁图和低/中/高风险摘要。当没有Shodan密钥可用时,它将使用标记的占位符值并标记输出中的`simulated: true`。 ## 安装 ``` pip install -r requirements.txt # 可编辑: pip install -e . ``` Python 3.10+. 一个依赖项:`requests>=2.31`。入口点:`nu-recon`(通过`pyproject.toml`注册)。 ## 使用 ``` nu-recon 192.0.2.10 nu-recon 192.0.2.10 -o report.json nu-recon 192.0.2.10 --ssl-port 8443 --crtsh-identity example.com nu-recon 192.0.2.10 --no-network nu-recon 192.0.2.10 -v ``` | 标志 | 默认值 | 作用 | |------|---------|--------| | `target` | required | IPv4地址;在解析时验证 | | `-o, --output` | `host-report.json` | 输出JSON路径 | | `--shodan-key` | `SHODAN_API_KEY`环境变量 | 覆盖环境变量 | | `--ssl-port` | `443` | 证书抓取的TLS端口 | | `--crtsh-identity` | PTR名称 | 在crt.sh上查询的域名(覆盖解析的PTR) | | `-v, --verbose` | off | 调试日志 | | `--no-network` | off | 跳过所有网络调用;加载模拟数据 | ## 报告字段 | 字段 | 内容 | |-------|---------| | `target_ip` | 输入地址 | | `hostname` | PTR记录,或第一个Shodan主机名 | | `geolocation` | 来自Shodan的`country`、`city`、`org`、`isp` | | `open_ports` | 整数列表 | | `services` | `{port, product, version, transport, banner}`列表 | | `web_technologies` | 端口80、443、8080、8443的`{port, server, version}` | | `ssl_certificate` | `port`、`subject`、`issuer`、`not_before`、`not_after`、`serial_number`、`san`、`der_sha256_bytes` | | `crtsh_domains` | 来自crt.sh的排序唯一域名 | | `threat_graph` | 每个服务的`{threat, impact, likelihood, mitigation}`条目(ssh、web、mysql、rdp) | | `risk_summary` | `overall_risk`(低/中/高)、`open_ports_count`、`vulnerability_count`、`exposed_databases`、`exposed_management`、`recommendation` | | `simulated` | 当Shodan数据被替换时为`true` | 风险等级逻辑:任何暴露的数据库端口(3306、5432、27017、6379、9200、1433)→ `高`;两个或更多漏洞,或具有超过五个总开放端口的托管端口→ `中`;否则 `低`。 ## 示例 ``` $ nu-recon 192.0.2.10 -o report.json INFO nurecon.mapper: reverse DNS: host.example.com INFO nurecon.mapper: crt.sh: 3 unique names [+] report: report.json { "timestamp": "2026-06-03T12:00:00+00:00", "target_ip": "192.0.2.10", "hostname": "host.example.com", "geolocation": {"country": "US", "city": "Anytown", "org": "Example Corp", "isp": "Example ISP"}, "open_ports": [22, 443], "services": [ {"port": 22, "product": "OpenSSH", "version": "8.9", "transport": "tcp", "banner": null}, {"port": 443, "product": "nginx", "version": "1.24", "transport": "tcp", "banner": null} ], "web_technologies": [{"port": 443, "server": "nginx", "version": "1.24"}], "vulnerabilities": [], "dns_records": {}, "ssl_certificate": { "port": 443, "subject": {"commonName": "host.example.com"}, "issuer": {"organizationName": "Let's Encrypt"}, "not_before": "Mar 1 00:00:00 2026 GMT", "not_after": "Jun 1 00:00:00 2026 GMT", "san": ["host.example.com"], "der_sha256_bytes": 1234 }, "crtsh_domains": ["host.example.com", "mail.example.com", "www.example.com"], "threat_graph": { "ssh": [{"threat": "credential-based auth exposure", "impact": "interactive session", "likelihood": "medium", "mitigation": "key-only auth, fail2ban, source-IP allowlist"}], "web:nginx:443": [{"threat": "web application surface (injection, auth bypass, RCE)", "impact": "data access or host compromise", "likelihood": "depends on app", "mitigation": "patch, WAF, input validation"}] }, "risk_summary": { "overall_risk": "low", "open_ports_count": 2, "vulnerability_count": 0, "exposed_databases": [], "exposed_management": [22], "recommendation": "reduce attack surface; verify each exposed service is intended" }, "simulated": false } ``` ## 测试 ``` pip install -r requirements-dev.txt pytest ``` ## nu-recon不是什么 nu-recon读取四个被动来源并打开一个TLS套接字。它不扫描端口,不进行暴力破解凭据,也不运行漏洞利用流量。TLS证书抓取创建一个TCP连接以检索对等证书。Shodan和crt.sh查询仍然会在那些服务上生成日志条目;请根据您拥有的资产或明确授权测试的资产进行使用。 ## 许可证 MIT。NuClide工具链的一部分。联系:[nuclide-research.com](https://nuclide-research.com)
标签:逆向工具