nmap参数原理抓包分析

实验环境:

Nmap7.70

实验步骤:

1.主机发现

2.端口扫描

3.服务版本探测

一、主机发现

主机发现,如果主机活跃,扫描1000个常用的tcp端口

1、Nmap ip   #默认进行主机发现、端口扫描、服务版本探测等

1.1先以一个不存在的ip为例:nmap 1.2.3.4 抓包分析

  

可以看到如果没有给出主机发现选项,nmap默认使用以下四种方式来确认目标机器是否活跃(只有以下四种方式任意一个得到目标的响应就可以说明目标主机存活)

1.nmap就发送一个ICMP 回声请求到每台目标机器,

2.TCP ACK 报文到80端口,

3.TCP ACK 报文到443端口,

4.还有一个基于时间的ICMP请求到每台目标机器

  

  从上图可以看到,nmap不带参数默认使用上面的四种方式来确定目标机器是否存活

1.2再以一个存在的ip为例:nmap 121.194.14.84  抓包分析

 可以看到获得扫描成功的结果

  

分析抓包的数据,可以看到目标机器对ICMP回显请求响应了,对基于时间的icmp请求响应了,对TCP ACK 报文到80端口和TCP ACK 报文到443端口响应了

  

得到主机存活之后,就开始了扫描1000个常用的端口(默认扫描的端口)

  

2、nmap -sP ip    #ping扫描 只主机发现  #须注意,目标必须是公网ip,局域网ip本参数无效,因为局域网扫描时,默认使用ARP扫描目标(-PR参数)

该选项告诉Nmap仅仅进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机 。 没有进一步的测试 (如端口扫描或者操作系统探测)

2.1以一个存在的IP为例: nmap -sP 121.194.14.84  抓包分析

可以看到只进行主机发现,没有进一步的测试

  

可以看到抓取的数据包只有关于主机发现的数据,得到目标主机存活之后也没有进行下一步测试(因为nmap -sP参数的限制)

  

要注意的是即使 您指定了其它 -P*选项,ARP发现(-PR)对于局域网上的 目标而言是默认行为,因为它总是更快更有效。

2.2下面以nmap -sP 192.168.43.200  为例扫描一个局域网IP,抓包分析  #注意目标IP是局域网IP

下图可以看到,局域网扫描可以获得目标主机的MAC地址

  

可以看到下图的抓包,虽然使用的是-sP参数,但因为是在局域网内扫描目标IP,默认使用ARP扫描

  

3.nmap -P0  ip   #无ping 跳过主机发现  把目标ip看成是活跃的直接进行高强度扫描(端口扫描、服务版本探测或操作系统版本探测等)

该选项完全跳过 Nmap发现阶段。通常nmap在进行高强度的扫描时用它确定正在运行的机器

3.1以一个存在的IP为例: nmap -sP 121.194.14.84  抓包分析

运行的结果如下:

  

通过查看下图抓取的数据包,可以看到没有进行主机发现,直接进行高强度的扫描

  

4.nmap -PS  ip   #TCP SYN 扫描   主机发现只连接目标的tcp 80端口,不使用ICMP

只要目标主机响应TCP SYN 就说明目标主机是活跃的,无论响应的是哪种数据包(RST或者SYN/ACK)

该选项发送一个设置了 SYN 标志位的空 TCP 报文, 默认目的端口为80, 但不同的端口也可以作为选项指定。甚至可以指定一个以逗号分隔的端口列表(如 -PS22,23,25,80,113,1050,35000),在这种情况下,每个端口会被并发地扫描。

SYN 标志位告诉对方您正试图建立一个连接。通常目标端口是关闭的,一个RST(复位) 包会发回来。 如果碰巧端口是开放的,目标会进行 TCP 三步握手的第二步,回应 一个 SYN/ACKTCP报文。然后运行 Nmap 的机器则会扼杀这个正在建立的连接,发送一个 RST 而非 ACK报文,否则,一个完全的连接将会建立。 RST 报文是运行 Nmap 的机器而不是 Nmap 本身响应的,因为它对收到 的 SYN/ACK感到很意外。

Nmap 并不关心端口开放还是关闭。 无论 RST 还是 SYN/ACK响应都告诉 Nmap 该主机正 在运行。

4.1以一个存在的IP为例: nmap -PS 121.194.14.84  抓包分析

可以看到目标响应一个SYN/ACK包,说明目标ip是活跃的,然后便进行默认端口扫描

  

4.2 nmap -PS ip 也可以指定端口(不指定默认1000个常用的端口)

下面以nmap -PS 192.168.43.200 -p 80,443,53为例,抓包分析

  

分析下图的数据包可以看到扫描53端口的过程:nmap发送TCP SYN包到目标IP,目标IP响应SYN/ACK包,nmap不进行第三次握手(ACK包),就直接发送RST包。这就是-PS参数的特点。

  

5.nmap -PA ip  #TCP ACK 扫描  

TCPACK ping 和刚才讨论的 SYN ping相当类似。区别就是设置 TCP 的 ACK标志位而不是 SYN 标志位。-PA选项使用和 SYN 探测(-PS)相同的默认端口(80)

ACK报文表示确认一个建立连接的尝试,但该连接尚未完全建立。 所以远程主机应该总是回应一个 RST 报文, 因为它们并没有发出过连接请 求到运行 Nmap 的机器,如果它们正在运行的话。

由于没头没脑的 ACK 报文通常会被识别成伪造的而丢弃。解决这个两难的方法是通过即指定 -PS 又指定-PA来即发送 SYN又发送 ACK。

5.1以一个存在的IP为例: nmap -PS 121.194.14.84  抓包分析

  

分析抓取到的数据,可以看到主机发现的过程(默认以80端口作为主机发现):namp直接发送一个ACK的报文到目标IP,目标IP响应RST报文,说明主机存活

  

5.2带端口的跟不带端口的原理一样,这里不进行测试了。

5.3由于没头没脑的 ACK 报文通常会被识别成伪造的而丢弃。解决这个两难的方法是通过即指定 -PS 又指定-PA来即发送 SYN又发送 ACK。

以一个存在的IP为例: nmap -PS  -PA  121.194.14.84  抓包分析

  

可以看到同时应用了-PS和-PA参数就构造成了一个完整的数据包,不会轻易被防火墙拦截丢弃

  

6.namp -PU  ip   #UDP扫描

它发送一个空的(除非指定了--data-length)UDP报文到给定的端口。端口列表的格式和前面讨论过的-PS 和-PA选项还是一样。如果不指定端口,默认是31338。

如果目标机器的端口是关闭的,UDP 探测应该马上得到一个 ICMP 端口无法到达的回应报 文。 这对于 Nmap 意味着该机器正在运行。

一个存在的IP为例: nmap -PU  121.194.14.84  抓包分析

  

分析抓取的数据包,可以发现nmap给目标机器的端口31338(默认的UDP端口),得到响应的是目标不可达,说明目标机器是存活的。(因为31338端口是一个关闭的端口)

  

二、端口扫描

1.Nmap -sS ip    #半连接 2/3 默认用-sP去发现主机,如果没结果请尝试改成-PS或者-PU 或者-P0

SYN 扫描作为默认的也是最受欢迎的扫描选项, SYN 扫描相对来说不张扬,不易被注意到,因为它从来不完成 TCP连接

它常常被称为半开放扫描,因为它不打开一个完全的TCP连接

一个存在的IP为例: nmap -sS  121.194.14.84  抓包分析

  

下面以80端口为例,分析-sS参数的过程,namp发送一个SYN报文到目标IP,目标IP响应一个SYN/ACK报文,然后nmap就不回复了。

  

2.Nmap -sT ip    #全连接3/3  默认用-sP去发现主机,如果没结果请尝试改成-PS或者-PU 或者-P0

一个存在的IP为例: nmap -sT  121.194.14.84  抓包分析

下面以443端口为例,分析-sS参数的过程: namp发送一个SYN报文到目标IP,目标IP响应一个SYN/ACK报文,然后nmap回复ACK。

  

三、服务版本探测

一个存在的IP为例: nmap -sV  121.194.14.84

  

nmap参数原理抓包分析的更多相关文章

  1. SMB协议原理抓包分析

    SMB协议原理抓包分析 目录: 1.SMB概述 2.SMB原理 3.SMB配置 一.SMB概述 SMB(全称是Server Message Block)是一个协议名,可用于在计算机间共享文件.打印机. ...

  2. SMB协议利用之ms17-010-永恒之蓝漏洞抓包分析SMB协议

    SMB协议利用之ms17-010-永恒之蓝漏洞抓包分析SMB协议 实验环境: Kali msf以及wireshark Win7开启网络共享(SMB协议) 实验步骤: 1.查看本机数据库是否开启,发现数 ...

  3. Nmap 常用命令及抓包分析

    1.主机发现:主机发现也称为ping扫描,但是Nmap中主机发现的技术已经不是简单的采用ping工具发送简单的ICMP回声请求报文.用户完全可以通过使用列表扫描(-sL)或者通过关闭ping(-P0) ...

  4. Nmap扫描与Tcpdump抓包分析

    扫描与抓包分析 3.1 问题 本案例要求熟悉Linux主机环境下的常用安全工具,完成以下任务操作: 使用NMAP扫描来获取指定主机/网段的相关信息 使用EtterCAP截获明文通信的密码.检测非加密通 ...

  5. Wireshark抓包分析/TCP/Http/Https及代理IP的识别

    前言 坦白讲,没想好怎样的开头.辗转三年过去了.一切已经变化了许多,一切似乎从没有改变. 前段时间调研了一次代理相关的知识,简单整理一下分享之.如有错误,欢迎指正. 涉及 Proxy IP应用 原理/ ...

  6. [转] Android实时抓包分析 : 善用adb调试桥

    Android实时抓包分析 : 善用adb调试桥   谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包 ...

  7. 转:tcpdump抓包分析(强烈推荐)

    转自:https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666539134&idx=1&sn=5166f0aac71 ...

  8. 使用Charles进行移动APP抓包分析

    一.简介 Charles是目前最强大最流行的http抓包调试工具,Mac.Unix.Windows各个平台都支持.特别是做APP开发,调试与服务端的通信,Charles是必备工具. 目前Charles ...

  9. 抓包分析LVS-NAT中出现的SYN_RECV

    CIP:192.168.10.193 VIP:192.168.10.152:8000 DIP:100.10.8.152:8000 RIP:100.10.8.101:8000 和 100.10.8.10 ...

随机推荐

  1. Android View 的事件分发原理解析

    作为一名 Android 开发者,每天接触最多的就是 View 了.Android View 虽然不是四大组件,但其并不比四大组件的地位低.而 View 的核心知识点事件分发机制则是不少刚入门同学的拦 ...

  2. man exportfs(exportfs命令中文手册)

    本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html exportfs() System Manager's Manual exportfs ...

  3. vue_drf之支付宝接口

    一.配置 1,生成应用秘钥和公钥 下载对应系统的秘钥生成工具: https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=10 ...

  4. zabbix实现QQ邮件报警通知--技术流ken

    前言 前几天搜了下网上使用zabbix邮件报警通知的文章,大多数还是使用mailx的方法,过程配置起来比较冗余繁琐,这几天想着把自己平时用到的qq邮件报警的方法分享出来供大家参考,以此减少不必要的步骤 ...

  5. Java并发(一)—— 使用多线程

    Java的线程机制是抢占式的,所谓的抢占式指的是每一个线程都会被分配一个指定大小的时间片,一旦这个时间片用完,就会通过上下文切换到另一个线程上去. 并发是主要是为了提高单处理器的性能.创建一个线程会有 ...

  6. AngularJs_自定义注入对象_笔记1

    A-自定义控件示例: 我的自定义控件文件为:angular-seagull2-common.js (function (window, angular) { 'use strict'; $urlPro ...

  7. 使用NetDrive将虚拟机映射到本地磁盘,使用smba映射本地磁盘(替代FileZilla)

    使用NetDrive映射到本地磁盘 使用NetDrive软件来替代FileZilla,NetDrive是一个能把FTP空间虚拟成本地硬盘的软件,这样我们就不需要再使用FileZilla来来回拷贝文件了 ...

  8. Spring核心——设计模式与IoC

    “Spring”——每一个Javaer开发者都绕不开的字眼,从21世纪第一个十年国内异常活跃的SSH框架,到现在以Spring Boot作为入口粘合了各种应用.Spring现在已经完成了从web入口到 ...

  9. 【Java每日一题】20170213

    20170210问题解析请点击今日问题下方的“[Java每日一题]20170213”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...

  10. Java学习笔记之——包

    可以利用包,把不同的类分类存放,方便管理 在同一个包下不允许出现同名的类,可以利用分包达到可以出现同名的类 (1)包的创建: 命名:尽量做到不重复 一般:域名倒置作为前缀,再加上功能等分包 eg:   ...