开发者社区> 玄学酱> 正文

Linux下NMAP常用扫描简介(二)

简介:
+关注继续查看

在我们之前的 NMAP 安装一文中,列出了 10 种不同的 ZeNMAP 扫描模式,大多数的模式使用了不同的参数。各种不同参数代表执行不同的扫描模式。之前我们介绍过两种扫描类型 PING 扫描 和 UDP 扫描,这篇文章将介绍最后剩下的两种常用扫描类型。

四种通用扫描类型

下面列出了最常用的四种扫描类型:

  1. PING 扫描(-sP)
  2. TCP SYN 扫描(-sS)
  3. TCP Connect() 扫描(-sT)
  4. UDP 扫描(-sU)

当我们利用 NMAP 来执行扫描的时候,这四种扫描类型是我们需要熟练掌握的。更重要的是需要知道这些命令做了什么,并且需要知道这些命令是怎么做的。在这篇文章中将介绍两种 TCP 扫描 — TCP SYN 扫描和 TCP Connect() 扫描。

TCP SYN 扫描 (-sS)

TCP SYN 扫描是默认的 NMAP 扫描方式。为了运行 TCP SYN 扫描,你需要有 Root 权限。

TCP SYN 扫描的目的是找到被扫描系统上的已开启端口。使用 NMAP 扫描可以扫描在防火墙另一侧的系统。当扫描通过防火墙时,扫描时间会延长,因为数据包会变慢。

TCP SYN 扫描的工作方式是启动一个“三次握手”。正如在另一篇文章中所述,“三次握手”发生在两个系统之间。首先,源系统发送一个包到目标系统,这是一个同步(SYN)请求。然后,目标系统将通过同步/应答(SYN/ACK)响应。接下来,源系统将通过应答(ACK)来响应,从而建立起一个通信连接,然后,可以在两个系统之间传输数据。

TCP SYN 扫描通过执行下面的步骤来进行工作:

  1. 源系统向目标系统发送一个同步请求,该请求中包含一个端口号。
  2. 如果添加在上一步中的所请求的端口号是开启的,那么目标系统将通过同步/应答(SYN/ACK)来响应源系统。
  3. 源系统通过重置(RST)来响应目标系统,从而断开连接。
  4. 目标系统可以通过重置/应答(RST/ACK)来响应源系统。

这种连接已经开始建立,所以这被认为是半开放连接。因为连接状态是由 NMAP 来管理的,所以你需要有 Root 权限。

如果被扫描的端口是关闭的,那么将执行下面的步骤:

  1. 源系统发送一个同步(SYN)请求到目标系统,该请求中包含一个端口号。
  2. 目标系统通过重置(RST)响应源系统,因为该端口是关闭的。

如果目标系统处于防火墙之后,那么 ICMP 传输或响应会被防火墙禁止,此时,会执行下面的步骤:

  1. 源系统发送一个同步(SYN)请求到目标系统,该请求中包含一个端口号。
  2. 没有任何响应,因为请求被防火墙过滤了。

在这种情况下,端口可能是被过滤、或者可能打开、或者可能没打开。防火墙可以设置禁止指定端口所有包的传出。防火墙可以禁止所有传入某个指定端口的包,因此目标系统不会接收到请求。

注:无响应可能发生在一个启用了防火墙的系统上。即使在本地网络,你也可能会发现被过滤的端口。

我将向 图片1那样执行对单一系统(10.0.0.2)的 TCP SYN 扫描。使用命令 sudo nmap -sS <IP 地址> 来执行扫描。<IP 地址>可以改为一个单一 IP 地址,像图片1那样,也可以使用一组 IP 地址。

图片1

你可以看到它表明 997 个被过滤端口没有显示在下面。NMAP 找到两个开启的端口:139 和 445 。

注:请记住,NMAP 只会扫描绝大多数熟知的 1000 多个端口。以后,我们会介绍可以扫描所有端口或者指定端口的其它扫描。

该扫描会被 WireShark 俘获,正如图片2所展示的那样。在这儿,你可以看到对目标系统的初始地址解析协议(ARP)请求。在 ARP 请求下面的是一长列到达目标系统端口的 TCP 请求。第 4 行是到达 http-alt 端口(8080)。源系统的端口号为 47128 。正如图片3 展示的,许多 SYN 请求只有在做出响应以后才会发送。

图片2

图片3

在图片3的第 50 行和第 51 行,你可以看到,重置(RST)包被发送给了目标系统。第 53 行和第 55 行显示目标系统的 RST/ACK(重置/应答)。第 50 行是针对 ‘microsoft-ds’ 端口(445),第 51 行是针对 ‘netbios-ssn’ 端口(135),我们可以看到,这两个端口都是打开的。(LCTT 译注:在 50 行和 51 行之前,目标系统发回了 SYN/ACK 响应,表示端口打开。)除了这些端口,没有其他 ACK(应答)是来自目标系统的。每一个请求均可发送超过 1000 次。

正如图片4所展示的,目标系统是 Windows 系统,我关闭了系统防火墙,然后再次执行扫描。现在,我们看到了 997 个已关闭端口不是 997 个被过滤端口。目标系统上的 135 端口之前被防火墙禁止了,现在也是开启的。

图片4

TCP Connect() 扫描 (-sT)

尽管 TCP SYN 扫描需要 Root 权限,但 TCP Connect() 扫描并不需要。在这种扫描中会执行一个完整的“三次握手”。因为不需要 Root 权限,所以在无法获取 Root 权限的网络上,这种扫描非常有用。

TCP Connect() 扫描的工作方式也是执行“三次握手”。正如上面描述过的,“三次握手”发生在两个系统之间。源系统发送一个同步(SYN)请求到目标系统。然后,目标系统将通过同步/应答(SYN/ACK)来响应。最后,源系统通过应答(ACK)来响应,从而建立起连接,然后便可在两个系统之间传输数据。

TCP Connect 扫描通过执行下面的步骤来工作:

  1. 源系统发送一个同步(SYN)请求到目标系统,该请求中包含一个端口号。
  2. 如果上一步所请求的端口是开启的,那么目标系统将通过同步/应答(SYN/ACK)来响应源系统。
  3. 源系统通过应答(ACK)来响应目标系统从而完成会话创建。
  4. 然后,源系统向目标系统发送一个重置(RST)包来关闭会话。
  5. 目标系统可以通过同步/应答(SYN/ACK)来响应源系统。

若步骤 2 执行了,那么源系统就知道在步骤 1 中的指定端口是开启的。

如果端口是关闭的,那么会发生和 TCP SYN 扫描相同的事。在步骤 2 中,目标系统将会通过一个重置(RST)包来响应源系统。

可以使用命令 nmap -sT <IP 地址> 来执行扫描。<IP 地址>可以改为一个单一 IP 地址,像图片5那样,或者使用一组 IP 地址。

TCP Connect() 扫描的结果可以在图片5中看到。在这儿,你可以看到,有两个已开启端口:139 和 445,这和 TCP SYN 扫描的发现一样。端口 80 是关闭的。剩下没有显示的端口是被过滤了的。

图片5

让我们关闭防火墙以后再重新扫描一次,扫描结果展示在图片6中。

图片6

关闭防火墙以后,我们可以看到,更多的端口被发现了。就和 TCP SYN 扫描一样,关闭防火墙以后,发现 139 端口和 445 端口是开启的。我们还发现,端口 2869 也是开启的。也发现有 996 个端口是关闭的。现在,端口 80 是 996 个已关闭端口的一部分 — 不再被防火墙过滤。

在一些情况下, TCP Connect() 扫描可以在一个更短的时间内完成。和 TCP SYN 扫描相比,TCP Connect() 扫描也可以找到更多的已开启端口





作者:Jarret
来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
常用Map实现类对比
翻译人员: 铁锚 翻译时间: 2013年12月12日 原文链接: HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap Map 是最常用的数据结构之一.
781 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
13862 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18989 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
25231 0
nmap 常用指令
nmap -sn 主机 nmap -sT 常用1000端口 nmap -sT -p22 端口 nmap -sv localhost 端口、应用、及版本 nmap -sO localhost 操作系统
891 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
20690 0
(周期计划-8)常用集合的源码分析:HashMap
写在前面 感兴趣的看官,可以看看我的其他文章:1、从公司代码看Notification2、Java反射实践:从反射中理解class3、从公司项目配置看Gradle 上一篇博客,我们分析了ArrayList的源码实现,ArrayList吊起来观察一番之后,那么下一个被吊起来的肯定就是HashMap了。
836 0
+关注
玄学酱
这个时候,玄酱是不是应该说点什么...
20709
文章
438
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载