Nmap 常用命令及抓包分析

摘要:
获得的响应可用于推测IP地址是否有效。由于TCP是具有连接的可靠协议,因此需要使用三次握手来建立连接。三次握手的信息分别是、和。

1.主机发现:主机发现也称为ping扫描,但是Nmap中主机发现的技术已经不是简单的采用ping工具发送简单的ICMP回声请求报文。用户完全可以通过使用列表扫描(-sL)或者通过关闭ping(-P0)跳过ping的步骤,也可以使用多个端口把TPC SYN/ACK,UDP和ICMP任意组合使用。通过获得的响应以推测某个IP地址是否是活动的。

-sL:列表扫描

-sn: Ping扫描 – 禁用端口扫描

-Pn: 检测所有在线主机 — 跳过主机发现

-PR:利用ARP协议扫描局域网

-n/-R: 从不DNS解析/始终解析 [默认: 有时]
–dns-servers < 服务器1[,服务器2],…>:指定自定义DNS服务器
–system-dns: 使用系统自带的DNS解析器
–traceroute: 每个主机跟踪一跳路径

准备两台虚拟机 :

我用的是hbza和kali,都设置桥接,然后给kali设置eth0网卡(vim/etc/network/interfaces)设置一个静态ip如下图,设置完成后systemctlrestartnetworking.service重启网络服务即可ping通

Nmap 常用命令及抓包分析第1张


01:扫描33.1这台机器的所有端口, -p1-65536 = -p-

0端口是默认保留端口,如果不指定端口nmap默认扫描1-1024端口再加上nmap-services列出的端口号(当然格式也要和下面命令中指定的一样)nmap-services是一个包含大约2200个著名的服务的数据库,Nmap通过查询该数据库可以报告那些端口可能对应于什么服务器,但不一定正确。

注意:nmap有自己的库,存放一些已知的服务和对应端口号,假如有的服务不在nmap-services,可能nmap就不会去扫描,这就是明明一些端口已经是处于监听状态,nmap默认没扫描出来的原因,需要加入-p参数让其扫描所有端口。
虽然直接使用nmap 192.168.33.1 也可以扫描出开放的端口,但是使用-p1-65535 能显示出最多的端口
区别在于不加-p 时,显示的都是已知协议的端口,对于未知协议的端口没显示
root@zhaizewen:~# nmap 192.168.2.100 -p-
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 10:53 CST
Nmap scan report for 192.168.2.100
Host is up (0.0028s latency).
Not shown: 65531 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5901/tcp open  vnc-1
6001/tcp open  X11:1
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 44.67 seconds

看抓包文件可以看到,比如80端口没有开放,那么只有一个SYN的请求报文和一个RST的返回报文,其中RST的返回报文中的RST值为1也就是说连接不能建立,就代表了这个端口没有开启监听

Nmap 常用命令及抓包分析第2张

Nmap 常用命令及抓包分析第3张

而已经打开的22端口也就是ssh端口,可以观察一下,给我们返回的报文中RST值是0而SYN值是1,所以这个端口开启监听了,并且一共进行了3次报文交互,只不过最后一次是nmap发的RST请求,算是半连接

Nmap 常用命令及抓包分析第4张

Nmap 常用命令及抓包分析第5张

TCP端口扫描是通过SYN数据包进行的,用于扫描目标机器的端口上是否存在程序监听,通常意义上,普通个人机器上的某个端口如果有程序监听的话,那么它一般是系统漏洞。由于TCP是一个有连接的可靠协议,所以要使用三次握手来建立连接,三次握手的报文分别是(SYN)、(ACKSYN)和(ACK)。进行端口扫描时,首先向对方主机的某一端口发送(SYN)报文,如果对方这一端口上有程序在监听(或者说存在漏洞),则回复(SYNACK)报文,否则回复(RST)报文。据此就可以判断对方端口上是否有程序在监听了,或者是否存在漏洞了。

比如TCP扫描时处于open状态的端口抓包:

Nmap 常用命令及抓包分析第6张

没打开的80端口就是直接RSTACK了而不是SYNACK

Nmap 常用命令及抓包分析第7张


02:扫描一个IP的多个端口

连续的端口可以用横线连起来,端口之间可用逗号隔开,在hbza上再启动两个tcp的监听,分别占用6666和7777端口用于测试,加上&符号可以放入后台。

[root@zh1z3ven ~]# nc -l 6666&
[1] 54408
[root@zh1z3ven ~]# nc -l 7777&
[2] 54415
[root@zh1z3ven ~]#
root@zhaizewen:~# nmap 192.168.2.100 -p1-1000,6666,7777
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 11:29 CST
Nmap scan report for 192.168.2.100
Host is up (0.00057s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
6666/tcp open  irc
7777/tcp open  cbt
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 13.67 seconds
root@zhaizewen:~#

03:-sU 扫描UDP端口

UDP扫描发送空的(没有数据)UDP报头到每个目标端口。 如果返回ICMP端口不可到达错误(类型3,代码3), 该端口是closed(关闭的)。 其它ICMP不可到达错误(类型3, 代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。 偶尔地,某服务会响应一个UDP报文,证明该端口是open(开放的)。 如果几次重试后还没有响应,该端口就被认为是open|filtered(开放|被过滤的)。 先查看哪些ipv4的监听,使用grep -v 排除回环接口上的监听

[root@zh1z3ven ~]# netstat -lnup --inet |grep -v 127.0.0.1
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           696/avahi-daemon: r 
udp        0      0 0.0.0.0:833             0.0.0.0:*                           669/rpcbind         
udp        0      0 192.168.122.1:53        0.0.0.0:*                           1469/dnsmasq        
udp        0      0 0.0.0.0:47169           0.0.0.0:*                           696/avahi-daemon: r 
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1469/dnsmasq        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           669/rpcbind         
[root@zh1z3ven ~]#

这里我只选择了1-1024的端口如果要全扫描的话需要20多分钟

Nmap 常用命令及抓包分析第8张

抓包分析:

可以看到udp这里是有个portmap协议的响应包的,portmap进程的主要功能是把RPC程序号转化为Internet的端口号。portmap只在第一次建立连接的时候起作用,帮助网络应用程序找到正确的通讯端口,但是一旦这个双方正确连接,端口和应用就绑定,portmap也就不起作用了。但对其他任何第一次需要找到端口建立通讯的应用仍然有用。

Nmap 常用命令及抓包分析第9张

UDP端口扫描是通过普通数据包进行的,也是用于扫描对方端口上是否有程序在运行,就像上面所说的,如果普通个人机器上存在这样的端口,那一般也是系统漏洞。但对于UDP来说,不存在监听这个概念,因为它是无连接不可靠的协议,发送数据包过去以后,通常也不会有任何的对等回应。因此,UDP端口扫描主要是检测是否存在ICMP端口不可达数据包。若该数据包出现,则说明对方这一端口上没有程序在监听,或者说该端口不存在漏洞,否则就说明该端口上有程序在监听,或者说存在漏洞。

Nmap 常用命令及抓包分析第10张

以上

UDP和TCP扫描时的区别:
1.TCP是有连接的协议,而UDP是无连接的;
2.TCP扫描检测(ACKSYN)或者是(RST)报文,而UDP检测ICMP端口不可达报文;
3.TCP协议是可靠但低效的,可以有效进行端口扫描,范围广,效率低,可以应用于任何网络中;UDP协议时不可靠但高效的,范围小,效率高,一般应用于局域网内部,随着网络规模的增大,UDP端口扫描的结果准确度会越来越差,极端情况是,如果对Internet使用UDP端口扫描,所得到的结果一定不准确。
那可以看到上图,UDP扫描一般没有程序在其上运行的端口就会返回一个ICMP的无法到达目的主机的包,这也就证明了端口没被监听(close,没有程序在其上运行)而883和111就不一样了,111端口收到了portmap的replay包所以表示它open(监听,或者有程序在其上运行)而883没有回应也没有目标不可达就代表open|filtered
参考文章


04:扫描多个IP的用法

ip中间可用逗号或者空格连接

连续的ip之间可用- 例如 192.168.2.100-101

root@zhaizewen:~# nmap 192.168.2.100 192.168.2.150
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 12:48 CST
Nmap scan report for 192.168.2.100
Host is up (0.00066s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5901/tcp open  vnc-1
6001/tcp open  X11:1
6666/tcp open  irc
7777/tcp open  cbt
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap scan report for 192.168.2.150
Host is up (0.0000070s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
111/tcp open  rpcbind

Nmap done: 2 IP addresses (2 hosts up) scanned in 26.62 seconds
root@zhaizewen:~# 

用逗号隔开:

root@zhaizewen:~# nmap 192.168.2.100,150
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 12:50 CST
Nmap scan report for 192.168.2.100
Host is up (0.0020s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5901/tcp open  vnc-1
6001/tcp open  X11:1
6666/tcp open  irc
7777/tcp open  cbt
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap scan report for 192.168.2.150
Host is up (0.0000060s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
111/tcp open  rpcbind

Nmap done: 2 IP addresses (2 hosts up) scanned in 26.39 seconds
root@zhaizewen:~# 

0x05:-sP :进行ping扫描

打印出对ping扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):

下面去扫描192.168.2.0/24这个网段的的主机

root@zhaizewen:~# nmap -sP 192.168.2.0/24
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:09 CST
Nmap scan report for 192.168.2.100
Host is up (0.045s latency).
MAC Address: 00:50:56:2D:67:A3 (VMware)
Nmap scan report for 192.168.2.150
Host is up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 29.89 seconds
root@zhaizewen:~# 

抓包分析:用ARP协议,直接广播,有响应的主机即为 host is up

Nmap 常用命令及抓包分析第11张


06:-sn: Ping Scan - disable port scan ping探测扫描主机, 不进行端口扫描

(测试过对方主机把icmp包都丢弃掉,依然能检测到对方开机状态)

root@zhaizewen:~# nmap -sP 192.168.2.0/24
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:09 CST
Nmap scan report for 192.168.2.100
Host is up (0.045s latency).
MAC Address: 00:50:56:2D:67:A3 (VMware)
Nmap scan report for 192.168.2.150
Host is up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 29.89 seconds
root@zhaizewen:~# 

07:-sA (发送tcp的ack包进行探测,可以探测主机是否存活)

ACK扫描探测报文一般只设置ACK标志位。当扫描未被过滤的系统时, open(开放的)和closed(关闭的) 端口 都会返回RST报文。Nmap把它们标记为 unfiltered(未被过滤的),意思是 ACK报文不能到达,但至于它们是open(开放的)或者 closed(关闭的) 无法确定。不响应的端口 或者发送特定的ICMP错误消息(类型3,代号1,2,3,9,10, 或者13)的端口,标记为 filtered(被过滤的)。

root@zhaizewen:~# nmap 192.168.2.100 -sA
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:19 CST
Nmap scan report for 192.168.2.100
Host is up (0.00091s latency).
All 1000 scanned ports on 192.168.2.100 are unfiltered
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 13.41 seconds
root@zhaizewen:~# 

08:-sS 半开放扫描 Tcp SYN Scan

半开放扫描,它只发送一个SYN报文然后等待回应,若SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监听者。如果数次重发后仍没响应, 该端口就被标记为被过滤。如果收到ICMP不可到达错误 (类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤。

root@zhaizewen:~# nmap  -sS   192.168.2.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:25 CST
Nmap scan report for 192.168.2.100
Host is up (0.0011s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5901/tcp open  vnc-1
6001/tcp open  X11:1
6666/tcp open  irc
7777/tcp open  cbt
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 13.41 seconds
root@zhaizewen:~# 

0x09:-sT 3次握手方式tcp的扫描

正儿八经的三次握手最后RST掉连接

Nmap 常用命令及抓包分析第12张

Nmap 常用命令及抓包分析第13张

Tcp connect() scan (sT)和上面的Tcp SYN 对应,TCP connect()扫描就是默认的扫描模式.
不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().
优点:你勿需root权限。普通用户也可以使用。
缺点:这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息,由于它要完成3次握手,效率低,速度慢,建议使用-sS
CPConnect()扫描是默认的TCP扫描,Nmap通过创建connect() 系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。

root@zhaizewen:~# nmap -sT 192.168.2.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:31 CST
Nmap scan report for 192.168.2.100
Host is up (0.055s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5901/tcp open  vnc-1
6001/tcp open  X11:1
6666/tcp open  irc
7777/tcp open  cbt
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 16.36 seconds
root@zhaizewen:~# 

10:-sF:FIN scan(sF) 也是tcp的扫描一种,发送一个FIN标志的数据包

有时候TcpSYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手.
和sS扫描效果差不多,比sT速度快

root@zhaizewen:~#nmap -sF 192.168.2.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:41 CST
Nmap scan report for 192.168.2.100
Host is up (0.00018s latency).
Not shown: 996 closed ports
PORT     STATE         SERVICE
22/tcp   open|filtered ssh
111/tcp  open|filtered rpcbind
5901/tcp open|filtered vnc-1
6001/tcp open|filtered X11:1
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 14.36 seconds
root@zhaizewen:~#

Nmap 常用命令及抓包分析第14张

处于open|filtered状态的端口没有返回RST,ACK包也没有做出响应而close的端口是会返回RST,ACK的包的

Nmap 常用命令及抓包分析第15张


11:-sV:版本检测(sV) 常用
版本检测是用来扫描目标主机和端口上运行的软件的版本,如下扫描,多出了ssh的版本信息

root@zhaizewen:~# nmap -sV 192.168.2.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 15:02 CST
Nmap scan report for 192.168.2.100
Host is up (0.00050s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.4 (protocol 2.0)
111/tcp  open  rpcbind 2-4 (RPC #100000)
5901/tcp open  vnc     VNC (protocol 3.8)
6001/tcp open  X11     (access denied)
MAC Address: 00:50:56:2D:67:A3 (VMware)
Service Info: OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 28.41 seconds
root@zhaizewen:~# 

12:--top-ports <number>: Scan <number> most common ports
扫描常用的端口,number如果写成10,那就是扫描最常用的10个端口。比如,ssh,http,ftp等热门端口
也是基于TCP的扫描

root@zhaizewen:~# nmap --top-ports 10 192.168.2.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 15:04 CST
Nmap scan report for 192.168.2.100
Host is up (0.00028s latency).

PORT     STATE  SERVICE
21/tcp   closed ftp
22/tcp   open   ssh
23/tcp   closed telnet
25/tcp   closed smtp
80/tcp   closed http
110/tcp  closed pop3
139/tcp  closed netbios-ssn
443/tcp  closed https
445/tcp  closed microsoft-ds
3389/tcp closed ms-wbt-server
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 13.30 seconds
root@zhaizewen:~# 

参考文章:Nmap使用说明以及扫描原理

免责声明:文章转载自《Nmap 常用命令及抓包分析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ElementUI el-dialog中打开一个新的el-dialog(Vue子组件定义变量的一个坑)BLDC开发笔记3.霍尔接口与触发换相下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CentOS 7上的程序管理:rpm、yum和源码编译安装

简介 在Linux的早期时代(也许吧?我猜的。也可能是Unix。),想要在系统上安装一款应用程序,是比较复杂的。需要专业的人员自行获取程序的源代码,并且编译安装,这是非常的复杂且需要一定的专业功底的,这种方式叫做源码编译安装(后面会描述)。 再后来就有人/组织将这个过程简化了,他们将事先已经编译好的软件打包后,放到互联网上供用户下载。用户下载适用于自己的操...

jmeter压力测试50并发用户运行时长5分钟,报错java.net.BindException: Address already in use: connect

原因:windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致我们在短时间内跑大量的请求时将端口占满了,导致如上报错。 解决办法(在jmeter所在服务器操作): 1.cmd中输入regedit命令打开注册表; 2.在 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServi...

Centos7开放3306端口

一、firewalld 防火墙 语法命令如下:启用区域端口和协议组合 firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>] 此举将启用端口和协议的组合。 端口可以是一个单独...

iis提示“另一个程序正在使用此文件,进程无法访问。(异常来自HRESULT:0x80070020) ”解决办法

iis提示“另一个程序正在使用此文件,进程无法访问。(异常来自HRESULT:0x80070020) ”解决办法 今天在做服务器测试的时候意外发生IIS的默认网站启不来,尝试启动的时候得到如何错误,如下图: 很明显,80或是443端口已被另一个程序占用,所以发生此错误。解决此问题得找到哪个程序占用掉80或是443端口,方法如下: 1、 打开CMD DOS模...

pgpool-II主备流复制的架设

1.环境 OS: CentOS release 6.4 (Final) DB: postgresql 9.3.6 pgpool服务器: pgpool 172.16.0.240 数据库主服务器:master 172.16.0.241 数据库从服务器:slave 172.16.0.242  其中主从数据库使用的流复制,并且已经配置完毕,新配置的pgpool...

Centos7安装完成后一些小优化

1、修改ip地址、网关、主机名、DNS等 [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #网卡名字 BOOTPROTO=static #静态IP地址获取状态 如:DHCP表示自动获取IP地址 IPADDR=192.168.1.1...