黑客攻防从入门到精通(黑客与反黑工具篇·全新升级版)
上QQ阅读APP看书,第一时间看更新

1.3 了解端口

端口是传输层的内容,是面向连接的,它们对应着网络上常见的一些服务。这些常见的服务可划分为使用TCP端口(面向连接如打电话)和使用UDP端口(无连接如写信)两种。

在网络中可以被命名和寻址的通信端口是一种可分配资源,由网络OSI(Open System Interconnection ReferenceModel,开放系统互联参考模型)协议可知,传输层与网络层的区别是传输层提供进程通信能力,网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。因此,当应用程序(调入内存运行后一般称为进程)通过系统调用与某端口建立连接(Binding,绑定)之后,传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都从该端口输出。

1.3.1 各类端口详解

在网络技术中,端口大致有两种意思:一是物理意义上的端口,如集线器、交换机、路由器等用于连接其他的网络设备的接口;二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围为0~65535,如浏览网页服务的80端口、用于FTP服务的21端口等。

逻辑意义上的端口有多种分类标准,常见的分类标准有如下两种。

1.按端口号分布划分

按端口号分布划分可以分为“公认端口”“注册端口”及“动态和/或私有端口”等。右下表为服务器常见应用端口。

(1)注册端口。注册端口包括端口号为1024~49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的,如许多系统处理动态端口从1024左右开始。

服务器常见应用端口

(2)公认端口。公认端口包括端口号为0~1023。它们紧密绑定于一些服务。通常这些端口的通信明确表明了某种服务的协议,如80端口分配给HTTP服务、21端口分配给FTP服务等。

(3)动态和/或私有端口。动态和/或私有端口包括端口号为49152~65535。理论上,不应为服务分配这些端口。但是一些木马和病毒就比较喜欢这样的端口,因为这些端口不易引起人们的注意,从而很容易屏蔽。

2.按协议类型划分

根据所提供的服务方式,端口又可分为“TCP端口”和“UDP端口”两种。一般直接与接收方进行的连接方式,大多采用TCP协议。只是把信息放在网上发布出去而不去关心信息是否到达(也即“无连接方式”),则大多采用UDP协议。

使用TCP协议的常见端口主要有如下几种。

(1)Telnet协议端口。一种用于远程登录的端口,用户可以自己的身份远程连接到计算机上,通过这种端口可提供一种基于DOS模式的通信服务。如支持纯字符界面BBS的服务器会将23端口打开,以对外提供服务。

(2)SMTP协议端口。现在很多邮件服务器使用的都是这个简单邮件传送协议来发送邮件。如常见免费邮件服务中使用的就是此邮件服务端口,所以在电子邮件设置中经常会看到有SMTP端口设置栏,服务器开放的是25号端口。

(3)FTP协议端口。定义了文件传输协议,使用21端口。某计算机运行了FTP服务便启动了文件传输服务,下载文件和上传主页都要用到FTP服务。

(4)POP3协议端口。POP3协议用于接收邮件,通常使用110端口。只要有相应使用POP3协议的程序(如Outlook等),就可以直接使用邮件程序收到邮件(如使用126邮箱的用户就没有必要先进入126网站,再进入自己的邮箱来收信)。

使用UDP协议的常见端口主要有如下几种。

(1)HTTP协议端口。这是用户使用得最多的协议,也即“超文本传输协议”。当上网浏览网页时,就要在提供网页资源的计算机上打开80号端口以提供服务。通常的Web服务器使用的就是这个端口。

(2)DNS协议端口。DNS用于域名解析服务,这种服务在Windows NT系统中用得最多。Internet上的每一台计算机都有一个网络地址与之对应,这个地址就是IP地址,它以纯数字形式表示。但由于这种表示方法不便于记忆,于是就出现了域名,访问计算机时只需要知道域名即可,域名和IP地址之间的变换由DNS服务器来完成(DNS用的是53号端口)。

(3)SNMP协议端口。简单网络管理协议,用来管理网络设备,使用161号端口。

(4)QQ协议端口。QQ程序既提供服务又接收服务,使用无连接协议,即UDP协议。QQ服务器使用8000号端口监听是否有信息到来,客户端使用4000号端口向外发送信息。

1.3.2 端口的查看

为了查找目标主机上都开放了哪些端口,可以使用某些扫描工具对目标主机一定范围内的端口进行扫描。只有掌握目标主机上的端口开放情况,才能进一步对目标主机进行攻击。

在Windows系统中,可以使用Netstat命令查看端口。在“命令提示符”窗口中运行“netstat -a-n”命令,即可看到以数字形式显示的TCP和UDP连接的端口号及其状态,具体步骤如下。

步骤1 单击“开始”按钮,在弹出的“开始”菜单中单击“运行”按钮。

步骤2 在打开的“运行”对话框中输入“cmd”命令,然后单击“确定”按钮。

步骤3 弹出“命令提示符”窗口后输入“netstat-a-n”命令,查看TCP和UDP连接的端口号及其状态。

如果攻击者使用扫描工具对目标主机进行扫描,即可获取目标计算机打开的端口情况,并了解目标计算机提供了哪些服务。根据这些信息,攻击者即可对目标主机有一个初步了解。

如果在管理员不知情的情况下打开了太多端口,则可能出现两种情况:一种是提供了服务,管理者没有注意到,如安装IIS服务时,软件就会自动地增加很多服务;另一种是服务器被攻击者植入了木马程序,通过特殊的端口进行通信。这两种情况都比较危险,管理员不了解服务器提供的服务,就会减小系统的安全系数。

通过这些方法可以轻松地发现基于TCP/UDP协议的木马,希望能给用户的计算机带来帮助。但是对木马重在防范,而且如果碰上反弹端口木马,利用驱动程序及动态链接库技术制作的新木马时,以上这些方法就很难查出木马的痕迹了。所以我们一定要养成良好的上网习惯,不要随意运行邮件中的附件,安装一套杀毒软件,如瑞星杀毒软件。从网上下载的软件先用杀毒软件检查一遍再使用,在上网时打开网络防火墙和病毒实时监控,保护自己的计算机不被木马入侵。

1.3.3 端口的开启与关闭

一般情况下,Windows有很多端口是开放的,在用户上网的时候,网络病毒和黑客可以通过这些端口连上用户的计算机。

为了让用户的系统变为铜墙铁壁,应该封闭这些端口,主要有:TCP 135、139、445、593、1025端口,UDP 135、137、138、445端口,一些流行病毒的后门端口(如TCP 2745、3127、6129端口),以及远程服务访问端口3389。

下面介绍如何在Windows XP/7/8下关闭这些网络端口。

1.开启端口

在Windows 8系统中开启端口的具体操作步骤如下。

步骤1 单击“开始”按钮,选择“控制面板主页”选项。

步骤2 在打开“所有控制面板项”窗口中将查看方式切换为“大图标”,双击“管理工具”选项。

步骤3 在打开“管理工具”窗口中可以查看各种服务项目,双击“服务”选项。

步骤4 在打开的“服务”窗口中选定要启动的服务后,右击该服务,在弹出的快捷菜单中选择“属性”选项。

步骤5 启动类型设置。在“启动类型”下拉列表中选择“自动”选项,然后单击“启动”按钮。启动成功后单击“确定”按钮。

步骤6 查看已启动的服务。显然该服务在状态栏已标记为“已启动”,启动类型为“自动”。

2.关闭端口

在Windows 8操作系统中关闭端口的具体操作步骤如下。

步骤1 在“管理工具”窗口中双击“服务”选项。

步骤2 在打开的“服务”窗口中选定要关闭的服务,右击该服务,在弹出的快捷菜单中选择“属性”选项。

步骤3 启动类型设置。在“启动类型”下拉列表中选择“禁用”选项,然后单击“停止”按钮。服务停止后单击“确定”按钮。

步骤4 查看已停止的服务。显然该服务启动类型已标记为“禁用”,状态栏也不再标记“已启动”。

1.3.4 限制端口的步骤

经常看到关于安全的书籍上会介绍不要开放多余的端口,那么如何限制端口才好呢?

实际上端口限制的方法大体上分为以下两种。

其一,通过应用程序来处理。例如,启动Apache之类的Web服务程序时,会打开Well known ports中的80号端口(如果没有特别的设置),然后通过80号端口开始等待通信。

因此,如果关闭了服务端应用程序,端口也会自动被关闭,不要开放多余的端口也就是不要启动多余的应用程序。

其二,限制通信。代表性的方法就是过滤数据包。通过过滤数据包,可以实现关闭特定端口的通信,特定IP的通信。

Linux中的iptables命令就可以过滤数据包。通过iptables命令,可以详细地指定拦截何种通信,所以可以实现拦截某个主机的特定端口。

需要查看哪个端口是打开的,可以使用netstat、lsof、nmap等命令。这里不再介绍这些命令的详细信息,简单来说:通过netstat和lsof命令可以知道本机上打开了哪些端口?

通过nmap命令可以知道其他主机上打开了哪些端口?

在过滤数据包时,需要注意的是通过netstat和lsof命令来查看端口,有时端口是空闲的。具体设置的操作步骤如下。

步骤1 打开“管理工具”窗口,双击“本地安全策略”选项。

步骤2 创建IP安全策略。右击“IP安全策略在本地计算机”选项,在弹出的快捷菜单中选择“创建IP安全策略”选项。

步骤3 在打开的“IP安全策略向导”对话框中输入IP安全策略名称及描述信息,单击“下一步”按钮。

步骤4 在出现的“欢迎使用IP安全策略向导”对话框中单击“下一步”按钮。

步骤5 在出现的“安全通信请求”对话框中取消勾选“激活默认响应规则”复选框,单击“下一步”按钮。

步骤6 在出现的“正在完成IP安全策略向导”对话框中取消勾选“编辑属性”复选框,单击“完成”按钮。

步骤7 在“本地安全策略”窗口中右击“IP安全策略”选项,在弹出的快捷菜单中单击“管理IP筛选器列表和筛选器操作”选项。

步骤8 进入“管理IP筛选器列表”选项卡,单击“添加”按钮。

步骤9 在出现的“新IP筛选器列表”对话框中输入筛选器名称,然后单击“确定”按钮。

步骤10 在“IP筛选器向导”对话框中单击“下一步”按钮。

步骤11 在“IP筛选器描述和镜像属性”对话框中的“描述”文本框中输入描述信息,单击“下一步”按钮。

步骤12 在“IP流量源”对话框中的“源地址”下拉列表中选择IP流量的源地址,单击“下一步”按钮。

步骤13 在“IP流量目标”对话框中的“目标地址”下拉列表中选择IP流量的目标地址,单击“下一步”按钮。

步骤14 在“IP协议类型”对话框中的“选择协议类型”下拉列表中选择IP协议类型为“TCP”,单击“下一步”按钮。

步骤15 在“IP协议端口”对话框中选中“从任意端口”“到此端口”单选按钮,此端口的端口号设置为“1106”,单击“下一步”按钮。

步骤16 在“正在完成IP筛选器向导”对话框中取消勾选“编辑属性”复选框,单击“完成”按钮。

步骤17 返回“IP筛选器列表”对话框,查看已创建的筛选器,并单击“确定”按钮。

步骤18 切换至“管理筛选器操作”选项卡,取消勾选“使用‘添加向导’”复选框,然后单击“添加”按钮。

步骤19 设置筛选器操作为阻止。选中“阻止”单选按钮,然后单击“确定”按钮。

步骤20 成功添加筛选器。查看已添加的筛选器操作,然后单击“关闭”按钮。

步骤21 返回“本地安全策略”窗口,双击创建的IP安全策略。

步骤22 添加IP规则。在“规则”选项卡单击“添加”按钮。

步骤23 在“安全规则向导”对话框中单击“下一步”按钮。

步骤24 指定IP安全规则的隧道终结点。在“隧道终结点”对话框中选定“此规则不指定隧道”单选按钮,单击“下一步”按钮。

步骤25 在“网络类型”对话框中选中“所有网络连接”单选按钮,单击“下一步”按钮。

步骤26 在“IP筛选器列表”对话框中选中“新IP筛选器列表”单选按钮,单击“下一步”按钮。

步骤27 在“筛选器操作”对话框中选中“新筛选器操作”单选按钮,单击“下一步”按钮。

步骤28 在“正在完成安全规则向导”对话框中取消勾选“编辑属性”复选框,单击“完成”按钮。

步骤29 返回“新IP安全策略 属性”对话框,单击“确定”按钮。

步骤30 返回“本地安全策略”对话框,右击新建的IP安全策略,在弹出的快捷菜单中选择“分配”选项完成设置。