zoukankan      html  css  js  c++  java
  • Nmap 常用命令及抓包分析

    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如下图,设置完成后 systemctl restart networking.service 重启网络服务即可ping通

     


    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 也就是说 连接不能建立,就代表了这个端口没有开启监听

     

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

     

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

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

     没打开的80端口  就是直接 RST ACK了 而不是SYN ACK


    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多分钟

    抓包分析:

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

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

     以上

    UDP和TCP扫描时的区别:
    1. TCP是有连接的协议,而UDP是无连接的;

    2. TCP扫描检测(ACK SYN)或者是(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


    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掉连接

     

     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:~#
    

     

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


    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使用说明以及扫描原理

  • 相关阅读:
    Git使用教程
    H5项目常见问题汇总及解决方案
    globalAlpha 示例
    canvas 绘制三次贝塞尔曲线
    canvas 绘制二次贝塞尔曲线
    html5 图片360旋转
    HTML5 arc的例子
    HTML5 绘制阴影
    HTML5 canvas绘制文本
    html5 lineTo的使用例子
  • 原文地址:https://www.cnblogs.com/Zh1z3ven/p/12653477.html
Copyright © 2011-2022 走看看