深入理解naabu--一款基于Go语言开发的快速端口扫描工具

naabu功能

快速简单的SYN/CONNECT探针扫描

使用Shodan Internetdb API的被动端口枚举功能

优化了易用性和资源的轻量级

端口扫描引入自动IP重复数据消除

基于NMAP的服务发现功能

多来源输入支持:STDIN/HOST/IP/CIDR

多格式输出支持:JSON/TXT/STDOUT

naabu下载安装

https://github.com/projectdiscovery/naabu/releases

选择合适的版本下载

naabu使用

naabu

常用参数:
-host    指定目标ip,ip之间以逗号分隔(ipv4、ipv6)
-list(-l)    指定目标ip文件,ip之间以换行符分隔
-exculde-hosts(-eh)    指定不扫描的ip
-exclude-file(-ef)    指定不扫描的ip文件

-port(-p)    指定扫描端口(如:80,443,100-200)(-p -  扫描全端口)
-exclude-ports(-ep)    指定不扫描的端口
-ports-file(-pf)    指定扫描的端口文件,端口之间以逗号分隔
-port-threshold(-pts)    整数值,跳过主机端口扫描的端口阈值
-top-ports(-tp) 100    扫描前100个端口

-c    指定一般内部的工作线程数,默认25
-rate    指定每秒发包数量,默认1000

-output(-o)    输出结果到文件
-json(-j)    以json形式输出结果,简写-j会报错
-csv    以csv格式输出结果

-probe-tcp-syn(-ps)    TCP SYN Ping(半开放扫描)
-probe-tcp-ack(-pa)    TCP ACK Ping
-probe-icmp-echo(-pe)    ICMP echo request Ping
-arp-ping(-arp)    ARP Ping

-nmap-cli 'nmap -sV --version-light -n --send-ip -P0'    调用nmap命令,当naabu实现第一阶段的主机探活和端口探活后,此时会调用nmap对第一阶段中的ip和所有开放端口去重,下发nmap命令进行扫描
 举个栗子

扫描x.x.x.x的80端口,并且调用nmap对其端口服务进行轻量级端口服务扫描,最后将结果以json形式输出到naabu.json文件中。

# 扫描x.x.x.x的80端口,并且调用nmap对其端口服务进行轻量级端口服务扫描,最后将结果以json形式输出到naabu.json文件中

naabu -host x.x.x.x -p 80,443 -nmap-cli 'nmap -sV --version-light' -o naabu.json -json

 查看结果文件 vim naabu.json

注:这里的naabu.json文件中只会出现naabu扫描的结果,对于间接调用nmap得到的结果,需要另外指定nmap参数-oX naabu_nmap.xml文件进行输出

TCP SYN Ping、TCP ACK Ping、ICMP Ping的区别
  • TCP SYN Ping:探测设备向目标ip的常用端口发送SYN TCP数据报文,目标ip端口若是开放则回包SYN ACK TCP报文,之后探测设备会立即发送RST包来终止TCP的连接
  • TCP ACK Ping:探测设备向目标ip的常用端口发送ACK TCP数据报文,不论端口开放与否,只要目标ip主机状态是活动的都会返回一个RST报文
  • ICMP echo request Ping:就是ICMP Ping,探测设备向目标ip发送ICMP echo request(类型为8)的数据表,若是目标ip主机在线,则会回一个ICMP echo reply(类型为0)的数据包以及时间戳(请求从源到目的再返回的时间--延迟) 

naabu同nmap对比

naabu工具相对于nmap而言,最大的优势就是,naabu可以通过-c和-rate调节并发线程数和每秒发包数,从而提升扫描速度。

以下是nmap参数和naabu参数的详细对比:

nmap

naabu

指定扫描ip

10.121.110.113

-host 10.121.110.113

指定扫描端口

-p T:80,443,U:161

-p 80,443,1-59

并发控制

一般内部工作线程数

不支持

-c 100(默认是25)

每秒发包数

不支持

-rate 2000(默认是1000)

主机探活

ICMP echo request Ping

-PE

-pe

ICMP timestamp request Ping

-PP

-pp

ICMP address mask request Ping

-PM

-pm

ARP Ping

-PR

-arp

TCP SYN Ping

-PS 80,443

-ps 80,443

TCP ACK Ping

-PA

-pa

UDP Ping

-PU

要求Nmap通过原IP套接字发送报文,而不是低层的以 太网帧

--send-ip

不用域名解析

-n

主机超时时间

--host-timeout 600s

-timeout

跳过主机发现

-P0

-Pn

端口探活

TCP SYN 扫描

-sS

-s SYN(默认)

发送RST数据包

--default-rst-ratelimit

不支持

TCP connection()扫描(nmap默认的tcp扫描)

-sT

-s CONNECT

UDP扫描

-sU

不支持

端口服务扫描

-sV --version-light(轻量级服务扫描)

不支持

输出扫描结果到文件中

-oX xxx.xml

-o 1.txt 输出到文件

-json 指定json形式

-csv 指定csv数据形式

设置最大往返时间(每个探测的最长响应时间)

--max-rtt-timeout 200ms

不支持

Go语言中执行naabu命令

若是不拼接-nmap-cli ‘nmap -sV'类似参数去调用nmap的话,可以常规使用go语言中的exec.Command函数进行命令拼接

cmd := exec.Command("naabu", "-host", ip, " -p", port)

但若是要拼接-nmap-cli ‘nmap -sV'类似参数,因为一个参数中存在单引号和空格,常规使用exec.Command函数会解析参数错误,导致无法正确调用nmap,这时可以用bash形式直接指定一整个命令

cmd := exec.Command("bash", "-c", "naabu -host 10.121.110.113 -p 80,443 -nmap-cli 'nmap -sV'")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八月和我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值