Nmaps设计初衷
nmaps是后期开发信息搜集综合平台的子模块(Nmaps不需要识别所有端口指纹,但常见服务能识别出来),在以往进行端口探测时,往往是调用masscan/nmap进行探测,对于大批量资产探测会导致识别不精确、速度慢、调用不方便等缺点,或进行内网横向探测时能单文件跨平台使用,因此出现了Nmaps。
Nmaps扫描原理
①Nmaps进行端口存活探测
非root权限使用CONNECT方式扫描、root权限使用SYN方式扫描,对于批量资产探测,Nmaps借鉴了masscan核心扫描算法及naabu开源项目
Masscan首先将目标存储为一个“范围列表”。IP地址范围存储在一种结构中,端口范围存储在另一种结构中。然后,使用一个索引变量枚举所有IP:端口组合的集合。扫描的工作方式是简单地递增.
索引变量从0到探针总数(“range”)。然后,在枚举步骤之前,以1对1的映射将索引排列为相同范围内的另一个随机索引。换句话说,算法在理论上是可逆转的:给定置换函数的输出,我们就可以得到原始的索引。
②Nmaps的指纹识别
Nmaps使用nmap开源的指纹库,并去除了UDP及探测等级为8以上的部分不常用服务规则,对于单个端口的指纹识别,先并发探测等级优先的规则库,若未匹配到,则在并发探测下一等级规则库(由于是并发探测,故小部分服务会有多个匹配结果,导致匹配结果不精确),若还是未匹配到相应指纹,则使用常规端口对应的服务进行判断(Nmaps可能会有误报情况)
Nmaps命令行说明
- Usage of ./nmap:
- -c int
- Nmaps扫描并发工作协程数(切勿太大,造成网络波动) (default 25)
- -debug
- 输出debug调试信息
- -exclude-file string
- 指定包含要从扫描中排除的目标,以换行符分隔的文件 (ip, cidr)
- -exclude-hosts string
- 指定要从扫描中排除的目标以逗号分隔列表 (ip, cidr)
- -exclude-ports string
- 要从枚举中排除的端口
- -host string
- 指定扫描的主机地址
- -iL string
- 指定包含待扫描的主机文本文件
- -interface string
- 指定用于端口扫描的网络接口
- -interface-list
- 列出可用接口和公有IP
- -json
- 以json格式保存
- -nC
- 在输出中不使用彩色输出
- -nmaptimeout int
- 端口指纹识别socket连接超时时间 (default 7)
- -o string
- 指定保存扫描结果
- -p string
- 指定待扫描的端口范围 (80, 80,443, 100-200, (-p - 将全端口扫描)
- -ping
- 扫描前使用ping探针验证主机存活
- -ports-file string
- 指定包含要枚举的端口文件
- -rate int
- 端口扫描探测请求的速率 (default 1000)
- -retries int
- 端口扫描探测的重试次数 (default 1)
- -silent
- 仅在输出中显示找到的端口
- -source-ip string
- 指定在TCP数据包中使用的SourceIP
- -timeout int
- 扫描超时前等待的毫秒数 (default 700)
- -top-ports string
- 指定扫描的常规端口 (top 100/1000
- -v 显示详细输出
- -verify
- 扫描出端口后使用TCP连接二次验证
- -version
- 显示版本信息
- -warm-up-time int
- 扫描阶段之间的间隔时间(秒) (default 2)
下载地址
温馨提示:终身会员登陆后查看
温馨提示:终身会员登陆后查看
温馨提示:终身会员登陆后查看