仅按 IP 地址扫描一次,并在处理大量数据时使用 Nmap 缩短扫描时间。Unimap 是“Unique Nmap Scan”的缩写。该工具可在 Linux、OSX、Windows 或 Android(Termux)上无问题运行。
如果你计划对整个组织运行 Nmap,你需要考虑到,肯定会有数十个、数百个甚至数千个子域名指向同一个 IP 地址,到那时继续扫描将变得几乎不可能。此外,由于对同一远程主机地址进行多次扫描,你的 IP 最终可能会被屏蔽,还有其他类似问题。
Unimap 使用其自身技术来初步解析所有子域名的 IP 地址。一旦此过程完成,它会创建一个包含唯一 IP 地址的向量,并根据用户配置的线程数使用 Nmap 启动并行扫描。同时,它会分析 Nmap 创建的文件中的数据,以确定每条信息对应哪个 IP。最后,Unimap 将每个与子域名关联的 IP 的信息关联起来。因此,例如,如果你有 50 个子域名指向同一个 IP,你只需执行一次 Nmap 扫描,但同时就能获得与每个子域名关联的所有数据。在大型扫描中,这可以节省数天或数周的时间。
你需要在计算机上安装 Rust(1.88 或更新版本)和 Nmap,然后运行:
1. git clone https://github.com/Edu4rdSHL/unimap.git && cd unimap
# 或者,你可以从 https://github.com/Edu4rdSHL/unimap/releases/latest 下载一个发布版本,
# 解压后继续下一步。
2. cargo build --release
# 现在二进制文件位于 ./target/release/unimap
# 下一条命令仅适用于 Linux 和 MacOS。Windows 用户需要在环境变量中指定目标路径。
3. cp ./target/release/unimap /usr/local/bin
# 现在你可以在任何地方使用 `unimap` 命令。
镜像 edu4rdshl/unimap 在每次发布时都会为 linux/amd64 和 linux/arm64 发布,标签为 latest 以及发布版本号:
docker pull edu4rdshl/unimap:latest
docker run --rm edu4rdshl/unimap:latest -t hackerone.com --fast-scan
# 保留 CSV 和 Nmap XML 文件:将目录挂载到 /opt/unimap
docker run --rm -v "$(pwd):/opt/unimap" edu4rdshl/unimap:latest -f targets.txt --fast-scan -u results.csv
参见 docker/README.md 以自行构建镜像。
为你的操作系统下载最新版本并使用它。
unimap 可以通过 AUR 辅助工具 从可用的 AUR 软件包 中安装。例如,
$ paru -S unimap
如果你愿意,也可以克隆 AUR 软件包,然后使用 makepkg 进行编译。例如,
git clone https://aur.archlinux.org/unimap.git && cd unimap && makepkg -si
Unimap 需要 root/管理员权限才能启动 Nmap TCP SYN(隐蔽)扫描,我们使用它是为了准确性和性能方面的考虑。 如果你使用的是 Linux 或基于 Linux 的系统,只需使用 root shell 或使用 sudo 运行该工具;在 Windows 中,你可以以管理员身份打开命令提示符(CMD)并照常运行该工具。
unimap -f targets.txt -u log.csv 执行完整扫描并将输出写入 log.csv。unimap -f targets.txt --fast-scan -o 执行快速扫描并将日志文件保存到 logs/ 文件夹。sudo unimap -f targets.txt --ports "1-1000" --min-rate 5000 以 5000 的最小速率扫描 1-1000 端口,并进行服务和版本检测(如果你想要快速扫描,请使用 --fast-scan 标志)。--threads 和 --min-rate 的数量(后者最为重要)。运行单元测试和集成测试(无需网络、root 权限或 Nmap):
cargo test
运行一个简短的端到端检查,该检查会构建 Docker 镜像并对 scanme.nmap.org 发起真实扫描(需要 Docker 和互联网访问):
scripts/container-test.sh
请打开一个 issue。