nmap参数原理抓包分析
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参数原理抓包分析的更多相关文章
- SMB协议原理抓包分析
SMB协议原理抓包分析 目录: 1.SMB概述 2.SMB原理 3.SMB配置 一.SMB概述 SMB(全称是Server Message Block)是一个协议名,可用于在计算机间共享文件.打印机. ...
- SMB协议利用之ms17-010-永恒之蓝漏洞抓包分析SMB协议
SMB协议利用之ms17-010-永恒之蓝漏洞抓包分析SMB协议 实验环境: Kali msf以及wireshark Win7开启网络共享(SMB协议) 实验步骤: 1.查看本机数据库是否开启,发现数 ...
- Nmap 常用命令及抓包分析
1.主机发现:主机发现也称为ping扫描,但是Nmap中主机发现的技术已经不是简单的采用ping工具发送简单的ICMP回声请求报文.用户完全可以通过使用列表扫描(-sL)或者通过关闭ping(-P0) ...
- Nmap扫描与Tcpdump抓包分析
扫描与抓包分析 3.1 问题 本案例要求熟悉Linux主机环境下的常用安全工具,完成以下任务操作: 使用NMAP扫描来获取指定主机/网段的相关信息 使用EtterCAP截获明文通信的密码.检测非加密通 ...
- Wireshark抓包分析/TCP/Http/Https及代理IP的识别
前言 坦白讲,没想好怎样的开头.辗转三年过去了.一切已经变化了许多,一切似乎从没有改变. 前段时间调研了一次代理相关的知识,简单整理一下分享之.如有错误,欢迎指正. 涉及 Proxy IP应用 原理/ ...
- [转] Android实时抓包分析 : 善用adb调试桥
Android实时抓包分析 : 善用adb调试桥 谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包 ...
- 转:tcpdump抓包分析(强烈推荐)
转自:https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666539134&idx=1&sn=5166f0aac71 ...
- 使用Charles进行移动APP抓包分析
一.简介 Charles是目前最强大最流行的http抓包调试工具,Mac.Unix.Windows各个平台都支持.特别是做APP开发,调试与服务端的通信,Charles是必备工具. 目前Charles ...
- 抓包分析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 ...
随机推荐
- python 闯关之路四(下)(并发编程与数据库编程)
并发编程重点: 并发编程:线程.进程.队列.IO多路模型 操作系统工作原理介绍.线程.进程演化史.特点.区别.互斥锁.信号. 事件.join.GIL.进程间通信.管道.队列. 生产者消息者模型.异步模 ...
- 面向连接的TCP概述
TCP连接概述 TCP是因特网运输层面向连接的(connection-oriented)可靠运输协议.之所以说它是面向连接的是因为 一个应用进程向另外一个应用进程发送数据之前,两个进程必须先 ...
- 不规范的json文档 转化成 java 对象的处理
最近练习爬取数据,遇到了json文档中属性名称没有用双引号的情况,内容如下: 标准的json文档,属性名称都是带双引号的 最后写了个方法,替换属性名字 为 两头追加双引号的属性名字, 特别要注意,防止 ...
- 深入MySQL复制(三):半同步复制
1.半同步复制 半同步复制官方手册:https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.html 默认情况下,MySQL的复制是异 ...
- python可变对象和不可变对象的解释
数据类型分为可变.不可变.可变对象表示可以原处修改该数据对象,不可变对象表示必须创建新对象来保存修改后的数据. 在基础数据类型中: 数值.字符串.元组.frozenset是不可变对象 列表.set.d ...
- 使用Topshelf开发Windows服务、log4net记录日志
开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf. 不过使用topshelf需要.netframework 4.5.2版本,在vs2 ...
- 《Office 365开发入门指南》上市说明和读者服务
写在最开始的话 拙作<Office 365开发入门指南>上周开始已经正式在各大书店.在线商城上市,欢迎对Office 365的开发.生态感兴趣的开发者.项目经理.产品经理参考本书,全面了解 ...
- Android Material Design控件使用(二)——FloatButton TextInputEditText TextInputLayout 按钮和输入框
FloatingActionButton 1. 使用FloatingActionButton的情形 FAB代表一个App或一个页面中最主要的操作,如果一个App的每个页面都有FAB,则通常表示该App ...
- Reinforcement Learning: An Introduction读书笔记(2)--多臂机
> 目 录 < k-armed bandit problem Incremental Implementation Tracking a Nonstationary Problem ...
- 减少页面加载时间的n种方法
减少HTTP请求 1:减少调用其他页面.文件的数量 2:使用css spirit , 减少图片加载次数 压缩js,css代码 1:一般js.css文件中存在大量的空格.换行.注释,这些利于阅读,如果能 ...