Nmap 7.8 的使用

462 阅读5分钟

详细参见Nmap中文官方文档:http://www.nmap.com.cn/doc/manual.shtm#2 注意:在UNIX机器上,通常只有特权用户 root 能发送和接收原始的TCP报文,因此有些命令需要sudo或者提升到管理员身份才能够运行。

TCP报文结构

TCP报文结构

1.目标说明

-iL ...\list.txt  # 根据提供的地址列表进行端口扫描
-iR <生成的数量>  # 告诉Nmap随机生成几个主机地址(都是随机的,有可能是公网IP)来扫描(0是一直扫描),多用于调查研究
nmap -sS -PS80 -iR 0 -p 80  # (很有意思的)可以发现互联网上一些开放80端口的主机
--exclude <主机1[,主机2][,主机3],...>  # 指定哪些IP不被扫描
--excludefile <文件> (文件中指定的IP列表都不扫描)

2.主机发现

主机发现有时也叫Ping扫描,此Ping扫描不是ping命令扫描,而是基于TCP、UDP、SCTP来实现的

-sL  # 列表扫描,是主机发现的退化形式,仅仅列出指定网络上的每台主机, 不发送任何报文到目标主机,最后给出IP数量
-sn # ping扫描,不扫描端口,能够得到MAC地址,以及是哪种电脑

-sn

-P*选项(用于选择 ping的类型)

-Pn # 将所有主机都视为存活状态

作用:每次扫描nmap都会先发送icmp包验证目标主机是否存活,有可能存在误判,ping不通但是主机是存活状态,这样就容易造成漏扫,-Pn参数会将目标主机都视为存活,即不先发送icmp包进行探测,如图。

-Pn

-PS[端口1,端口2,..]  # TCP SYN Ping,该选项发送一个设置了SYN标志位的空TCP报文。 默认目的端口为80 
-PA[端口1,端口2,..] # TCP ACK Ping,提供SYN和ACK两种ping探测的原因是使通过防火墙的机会尽可能大。
-PU[端口1,端口2,..]  # UDP Ping,它发送一个空的(除非指定了--data-length UDP报文到给定的端口(默认31338),优势是可以穿越只过滤TCP防火墙和过滤器。
-PY[端口1,端口2,..]  # SCTP(Stream Control Transmission Protocol,流量传输控制协议:SCTP提供的服务与TCP和UDP类似),基本不被使用。

下面这些都是ICMP Ping类型。nmap还可以发送真正的ping扫描,但介于现在很多主机和防火墙都封锁这种报文,因此不太适合去使用。如果仅仅是对于内部网络的检测还是有一定作用的。

-PE # 回声请求
-PP # 时间戳查询
-PM # 地址掩码查询
-PO # 
-n/-R # 不解决域名问题/解决域名问题[默认:有时解决]
--dns-servers <serv1[,serv2],...> # 指定DNS服务器
--system-dns # 使用系统提供的DNS解析
--traceroute # 跟踪跳转路径到每个主机

traceroute

3.扫描技术

都是基于TCP的扫描
-sS # 半连接扫描,不建立三次握手
-sT # 全连接扫描,使用系统提供的conect()函数来连接目标端口,会建立完整的三次握手
-sA # ACK扫描,发送ACK位置为1的TCP数据包,但回包无法确定端口是否开放,只是被标记为未过滤,未响应的端口会被标记为被过滤的。它用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。
-sW # 窗口扫描,它和ACK扫描完全一样,只不过在某些系统上,开放端口用正数表示窗口大小(甚至对于RST报文)而关闭端口的窗口大小为0。因此,当收到RST时,窗口扫描不总是把端口标记为unfiltered,而是根据TCP窗口值是正数还是0,分别把端口标记为open或者 closed
-sM # Maimon(发现者名字)scans,这项技术和Null,FIN,以及Xmas扫描完全一样,除了探测报文是FIN/ACK。
-sN # Null扫描,不设置任何标志
-sF # 置FIN位为1
-sX # Xmas扫描,设置FIN,PSH,和URG标志位。
--scanflags <flags> # 自定义标志位组合
-sU # UDP扫描
-sI <僵尸机IP> # 闲置扫描(僵尸扫描)
基于SCTP协议
-sY # init扫描
-sZ # cookie-echo扫描
-sO # IP协议扫描,可以确定目标机支持哪些IP协议 (TCP,ICMP,IGMP,等等)。

IP协议扫描

-b # FTP反弹扫描
FTP协议的一个有趣特征(RFC959)是支持所谓代理ftp连接。它允许用户连接到一台FTP服务器,然后要求文件送到一台第三方服务器。这个特性在很多层次上被滥用,所以许多服务器已经停止支持它了。其中一种就是导致FTP服务器对其它主机端口扫描。只要请求FTP服务器轮流发送一个文件到目标主机上的所感兴趣的端口。错误消息会描述端口是开放还是关闭的。这是绕过防火墙的好方法,因为FTP服务器常常被置于可以访问比Web主机更多其它内部主机的位置。

4.端口说明和扫描顺序

-p <端口范围> # 只扫描指定端口
例子:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <端口范围> # 指定那些端口不扫描
-F # 设置此参数后,会比默认扫描端口数量少
-r # 连续的扫描端口,而不是随机
--top-ports <number> # 扫描指定数量最常见的端口
--port-ratio <ratio> # 扫描比指定比率高的端口

未完待续