微 机 发 展 2001年第 5期
端口扫描与反扫描技术
Port-Scanning and Anti-Port-Scanning Technology
文章蕾号 :1005—3751(2001)05—0060—04
王 灏 ,王换招(西安交通大学计算机科学与技术 系,陕西西安 710049)
WANG Hao,WANGHuan一 (Dept of Computer Sci.andTech.,Xi。&rt JmotongUniv..Xi’an 710049,Chin&)
■ 要:本文首先分析 隔堵端 I:1扫描的技术基础 .然后从 实现
的角度分析了各种端 I:1扫 描的实现方{击.最后给出了一十反
靖 I:1扫插 的实用解决方案
关■调:网络安全 ;端日扫描 ;反端 I:l扫描 ;
B^ nL^cT·Thiz paper first analy~ the underling technical
knowledge of the port~anrfing,nl~0Ct proems various approache~
of the port scanning from the arIgk of application. 1ast give~a
【lab1e scheme 0n how to prevent the po rt s~ninng.
KEYWORDS;Network Security;B0rt Sc,~aing;Anti Port Scartm~
中圉分类号 :TP393.08 文献标识码:A
1 前 言
进入 90年代以后.人们在享受着互联 网方便性 的
同时,也不得不去思考自己的系统是否安全.为了解决
上述问题 ,需要一项能够检查和检铡系统安全隐 患、预
防有可能非法入侵的技术。非法 的黑客 .也需要这项
技术来探测 目标系统提供 了哪些可 利用的服务 无
论出于何种 目的.都需要深入了解与阿络安全有着密
切关系的一种技术—— 端 口扫描。
端 口扫描是一项 自动探测本地和远程 系统安全隐
患的技术 。它几乎和计 算机网络同步发 展,目的是 使
系统用户了解系统 目前 向外界提供了哪些服务,从而
为系统用户管理阿络提供一种手段。
2 蝴口扫描的技术基础
端13这十概念是在传输层提出的.是传输层标识
服务的手段 因此,本文的讨论就从阿络的侍输层开
始 。传输 层有 两十 重要 的 传输协 议 :传 输控 制协 议
(TCP)及用户 数据报协议 (UDP)。由于 UDP协 议 比
较简单,本文稍后只作简单分析 ;而对 于 TCP协议 .因
为大部分 常 用 的应 用层协 议 (如 FTP、Tdnet、SMTP
等等)都是以它为基础.所以车文进行较详细剖析。
2.1 TCP变量
为了分析的方便,先定义几组变量,并且给出各组
ftt箱 日期 2001—03—15
变量 的关系。
●发送方 变量 SN'D UNA:未得到 应答 的发
送序号 ;SND WND:发 送窗 口太 小;SND.NXT:下一
个发送序号 ;ISS:初始 的发送序号。它 们之 间的关 系
如 臣 1
A ¨ 【 】)
一 一 一 一 +一一一一+一一一一斗一一一一一
SND.UNA SND.NX'I I_、^+S I) 、I)
A:已应答的序号空间 IB:巳发送但未收到应答的序号空间 c:当前允
许传输的序号空『可;D:当前衄出技进宙 口. 允许传|膏的序号空 阿
囤 1 发送方变量之 问的关幕
●接 收方变量 RCV.NXT:下一十接收序 号;
RCV WND:接收窗口;IRS:初始的接收序号。它们之
间的关系如图 2。
^ B C
⋯ 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一
RC NXT RCVHXT~RCMW ND
A:巳经正确接收的序号空间;B:当前允许接槛的序号空间 }
C;衄出接收窗 口.当前不允许接收的序号空问
囤 2 接收方变量之阿的关系
●报 文段 中 的 变量 SEG.SEQ:报 文 序 号 ;
SEG ACK:报文 应答 号 ;SEG LEN:报文 长度 ;SEG
WND:接收方传输给发送方的接收 窗 口太小.用于流
量控制。
2.2 TCP状态
定义上面三组变量以后,还需说明一下 TCP的状
态。TCP的实质是由用户命令、到达报文和超时定时
器驱动的一十有 限状态 机。分析用 户命令 、到 达报文
如何驱动 TCP,将 为后面的端 口扫描 分析提供重要的
技术基础。图 3给出 TCP的所有状态,并标 出了用户
命令、到达报文如何驱动 TCP进行状态转换。
从图 3看出:被动打开的链接(通常为服务器端的
链接)的状态转换和所要发送的报文 类型在 嗣络正常
的情况下几乎都是依赖于 收到 的报 文(但不排除有些
服务的主动关闭方是服务器方.但这不影 响本文 的分
析)。比如 收到 SYN 报 文。服 务器 的 状 态会 从 LIS—
维普资讯
2001年第 5期 微 机 发 展 61
TEN转 变 成 SYN-RCVD,并且 同时 发 送 SYN&ACK
报文。这样 .我们可 以得 出这样的结论 :通过有意传送
某种类型的报文 .诱发服务器发送响应报文.分析响应
报文可 以推断出服务 器端 口当前的状态。
注:虚线是被动打开和被 动关闭的执行路线,加重 实线是
主动打井 和主动差舟j的执行路线 ;r代表接收;,代表
发送;舢 P代表应用程序发出的舟奇。
圈 3 3EP状态转换圈
2,3 TCP发送报文与响应报文的关系
本文研 究的状态不是图 3描述的所有状态.而是
与主题 密切 相 关 的三 十 状 态 :CLOSED、LISTEN 和
SYN—RCVD。若 目标主机端 日当前状态是 CLOSED,
贝!f目标 端 口处 于 关 闭 状 态 ;如 果 是 LISTEN 或 者
SYN—RCVD状态 ,目标 端日就处于打开状态。
●首先假 设 目标 主机 的 目标端 日处于 CLOSED
状态.看看扫描主机发送 的报文与接 收的报 文是 什么
关系.并假设我们是在 目标主机的目标端[『上观察。
(1)如果到达报文中包含 RsT标志,那 么报文被
丢弃 .不作任何响应。
(2)如果 到达 报 文不 包含 RST标 志,那 么发 送
RST响应报文。报文的格式如下 :
若到达报文中 ACK标志置位
[SEq=SEG A删 [LTL=RST】
若ACK标志投有置位
【sEq=0l【A胚 =SEG SEQ+SEG LEN】[CTL=RST.ACK]
●然后但定 目标主机的 目标端 日处于 LISTEN状
态,仍在 目标主机 的目标端 口上观察。
(I)如果到达报文的 RST 标志置位,那 么到达报
文被忽略,处理完成。
(2)如果到达报文的 ACK标志置位。则到达报 文
非法.因为处于这一状态的端 日没有发送任何数据报
文 .不应收到 应答报文。发送 RST报文 ,格式为:
[SEQ=SEGACK]【cTL=RST]
丢弃到 达报文.处理 完成。
(3)如果 SYN标 志置位,先 进行安全性 检查 ,再
进行优 先级捡查。如果其中之一不能通过检查 .剐发送
RST 响应报文,报文格式为 :
[SEQ=ol[Acl~=SEG.s日q十SEG LEN】[CTL=RST,A渊
丢弃到 达报文.处理完成(虽然协议 中这 么要求 .但是
很多网络内核的 TCP不进行这样的检查)
如果上面的两项检查 通过,剐设置 RCV.NXT=
SEG SEQ+1.IRS:SEG.SEQ.并且选择一个随机值
ISS 发送 SYN报文 .格式为:
[ssq=iss][Acl~=RCV NXTI【cTL=$YN,AcK1
这时 SND NXT被设置为 ISiS+1.SND.uNA设置为
ISS,进入 SYN—RCVD状态。
(4)如果是其他报文,肯定不包含 ACK标志,否剐
在第(2)步 ACK就已处理过.则丢弃报文,处理完成。
● 最 后假 定 目标 主 机 的 目标 端 日处 于 SYN—
RCVD。本文仅关心它如何处理到来的 RST报文(原
因在第 3节给出)。如果收到这样的报文,目标主机仅
仅退回到 LISTEN状态。并且不向应用层发送任何信
号.处理完毕。
2,4 UBP和防火墙对到来报文的处理方法
LrDp对到来报文的处理方法相当简单。如果目
标端 口当前处于打开状态 .LrDp就不发送任何 响应报
文,因为 LrDp不是可靠传输协议。而端口若处于关闭
状态.UDP会发一个端 口不可迭的 ICMP响应报文。
防火墙软件为了提高分组过撼性能。通常将过撼
部分放在 网络层。这就是说.如果到达报文被 防火墙
过滤掉.扫描方要么接 收到 目标不可达 的 ICMP报文
(IP协议层是不可靠传输层),要么收不到任何应答报
文。这就为第 3节用 ACK扫描探测 防火墙过 撼规则
提供丁技术基础。
3 端 口扫描技术
根据扫描时发送端发送 的报 文类型来分 .扫描技
术可分为 :TCP链接扫描、TCP同步扫 描、FIN 系列扫
描、UDP扫描 、ACK(应答)扫描和窗 口扫描。
3.1 TcP链接 扫描
TCP链接扫描是向目标端口发送 SIN报文,等特
维普资讯
微 机 发 展 2001年第 5期
目标端口发送 SYN&ACK报文,收到后向目标端 口发
送 AcK报文。仔细 观察图 3的 TCP状态 图,可 看
到源主机和 目标主机双双进 八 ESTABLISHED状 态。
其实.这就是著名的 三次握手”。虽然这里有三个报
文交换 .但对使用 伯克利 SOCKET的用 户来说.只需
一 十“CONNECT'、系统调用,检查 CO NNECT返 回状态
就可完成 。这种 扫描技 术简单 易行、但容 易被发现 。
容易被发现是指如果将它运用于探测别人的网络服务
时.很容易被目标主机记录,所以高级黑客通常使用后
面给出的技术 ;方便是指它不需超级用户权限.任何希
望管理端日服务的^都可 使用。
3.2 TCP同步扫描
TcP同步扫描其 实就是 向 目标端 口发送 伪造 的
SYN控制报文。从 2.3节可知,发送方可 收到来 自
接收方的两种响应撮文:SEG SEQ=0的 RST报文和
sEG SEQ=ISS的 SYN&ACK报文。如果 是前一 种
报文,则目标端 口处于 CLOSED状 态;如果是后者,则
处于 LISTEN状态.即打开状态 ,随后扫描方发送一十
RST控制报文,趴 2.3节可知 .处于 SYN RCVD状志
的接收方 端 口默默 丢弃它.然 后返 回 LISTEN状 态
这样,被扫描方就没有任何察觉 .因为扫描 前后被扫描
主机状态没有改变。
3.3 FIN系列扫描
向目标主机的 目标端 口发送 FIN控制报文 ,随后
会收到 2 3节描述的应答报文。处于 CLOSED状态
的 目标端 口发送 RST控制报文 .而处于 LISTEN状志
的目标端I:l则忽略到达报文,不作任何应答。这样,判
断是否有报文收到,就可知目标主机的端口状态。
FIN系列扫描还有两种构造发送报文的格式:一
种是报文的 RST、FIN、URG 标志全部 置⋯1,另一种
是关闭所有标志。无论是 哪一种 ,收到的响应报文都
是 一样的。但是 .有些系统 (如 Windows)却不遵守上
面所说的响应规 则,全部忽略 。所 这种技术对 系统
的依赖性 很强 。一十 积极的剧作用是可以通过它判断
目标系统是 Windows系统。
3.4 UDP扫描
从 2 4节的描述可知 .如 果 UDP端 口打开.则没
有应答报文 ;如 果端 口关闭台有 ICMP搬文(端口不 可
遮 )。这样 .只需构造一十 UDP报文,观察响应报文就
可知道 目标端口的状态。虽然用 UDP提供的眼务 不
多.但是有 些没有公开的服务很有可能是利用 UDP的
高端 I:l服务。如果需要证实有没有这样 的服务,可以
利用这种扫描技术
3.s ACK扫描
这种扫描技术几乎不用 来扫 描端 日.而是用 来桥
测过滤性防火墙的过滤规 删。从 2+3节 可 以知道.无
论 目标端 口的状态如何 .如果发送 ACK报 文,就 只能
收到 SEG SEQ:ACK的 RST响应报文。但 是对于防
火墙 如 果端 日被过 滤,要 么收不 到 报文.要 么 收到
ICMP报文(目标不可达);相反.如果没有被过滤时,
则收到 2 3节规定的 RST撮文。
3 6 窗口扫描
这种扫描技术是向 目标端 日发送窗 口控制报 文。
由于窗 口控 糊报 文总是 以应答报 文(ACK)的方式 发
进,所以可 以和 ACK扫描一样用来探 测过滤性 防火墙
的过 滤 规则。但 有意 思 的是,一 些 网络 实 现,比如
BSD4.3.在 LISTEN状态对 于到达 的窗 口控制 报文.
发送的 RST 响应 报文 中部包 含 了当前 的窗 口大 小。
有关细节可参见文献[1]。这样,只要检查 RST报文
的 SEQ.WND.就可通过 窗 口扫描得到 目标端 口的状
态
4 反端 口扫描技术
现在,已经知道 丁端 日扫描 的技术细节,如果能够
知道 端 扫描者 的扫描 方式.那么就可以进一步制 定
解决端 口扫描 的技术方案了。
4 1 扫描方式
端 口可 分 为三类 :(1)知 名端 口;(2)受保 护端
口;(3)用户定义端 口。知名端 日是指端 日号介 于 1
255的端 口,常见的网络服务端 口都在这个范 围;受保
护的端 口是指端 I:l号介 于 256—1023之 间的端 口,常
见的系统服务都在这个范围;而 1024以上的端I:l是用
户定义的端 口(但 端口号 6000周 围和系统规定为透 明
代理的端 口范围除外)。
端口扫描者事先无法知道被扫描主机所打开端I:l
的分布状况,因此扫描方式是 选择一十感兴趣 的范 围
进行扫描,最为关心的端 I:l是知名端 口和受保护端 口。
范围确定后,会对这个范围的端 口逐一袒I试 .以判断各
十端 日的状态。虽然扫描时会随机的选择端 日进 行.
但是最终还是会遍布整个 感 趣的范 围。也就是说,
如 果被 扫描 主机 曲装一 些端 口(比如 FTP、w咖 、
1080、8080等常 用端 口).使它处于打 开状 态.然 后接
收扫描方发送的报文 .记录扫描方 的信息,扫描方是没
有察觉的。这就是匣扫描的基出原理
4 0 反扫描技术
首先分析本地主机哪 些端 口处于打开状 态,特别
维普资讯
2001年第 5期 傲 机 发 展
注意那些 低于 255的常用知名服务端 日。然后将 某些
投有打开 的端 日曲装成打开状态 接收到达的报文并
进行正确 应答,同时记 录那些 访 同这些端 日的主机。
至于对这些主机采取什么措施,完全由用户的控制策
略决定。常用的控制策略有 :(1)对该主机 进行记账处
理;(2)向用户提示有人非法扫描本机端 日;(3)拒绝该
主机访问等等。
如果选择第 1种策略 ,系统向记赋程序的配置文
件中播加该主机的配置信息,以后该主机对本机的任
何访 阿都会得到记录 ;如果选择第 2种策略 ,系统向系
统管理员或本机用户发 出提示信息 ,给出进行非 法扫
描机器的主机信息,由用户或系统管理员作进一 步处
理i如果采取第 3种策略,系统会自动拒绝扫描主机的
访 问。这 里可以利用 的技术大致有以下几种 :
①向/etc/host deny文本文件 中掭 加该主机的 IP
地址。服务器通常在进行 服务前会检查该文件 ,所 以
列在这里 的主机不能访问本机服务 。
②利用操作系统本身提供的 route程序 向路 由表
中播加一条路 由,将扫描主机路由到一个不存 在的 IP
地址 .或者一十 非法地址 ,比如 127 0 0 X,这样扫描
主机就无法访 问本机的服务。
③有的系统 比如 Linux,在 route程序中提供了 de
ny命令,利用这十命夸也可以拒绝扫描主机的访问。
@直接向防火墙软件 中添加过滤扫描主机 的过滤
规则 .拒绝扫描主机访问。
4 3 反端 口扫描技术实施应注意的问题
端 日扫描软件在设计 时会仔细考 虑被扫描主机的
防范措蓝.因此,这种软件在设计 时会 采取一些手段伪
装 自己。这里最常用的方法是伪造源地址 .使得 被扫
描主机无法确定扫描主机的身份。如果反端 日扫描技
术采 取的策略不恰 当,有可能造成 被扫描 主机无 法访
问网络。一个典型的侧子就是扫描主机将源地址 伪装
成受 害者所在网络的 网关 或路 由器地址,如果被 扫描
主机采取上面的第(3)种策略,就拒绝 了路 由器或者阿
关和本机的通 信,造成本机无法访 问网络。因此,在采
取的第 (3)种策略之前,一定要考虑网络是 否会因此 出
现问题 。
5 结柬语
本文从网络内核实现 的角度讨论了端 Elj弓描的技
术基础及几种方法,并且给 出反端 日扫描的技术 解决
7b-;~。随着网络的发展和 内核的进 一步 修改.新 的扫
描方法及反端1:1扫描技术还会诞生。即便是就 目前而
言 已经诞生了一项技术 :通过端 口扫 描判断操作 系统
类型,并且在慢慢完善,那么如何防止这种新的扫描方
式还需要对各种网络实现作进一步的研 究。
[参考文献 ]
[I】 G rR wr讪 l& W.Richald St~ ."rcelw 悼悍暑 2i宴现
【M] 北京 :机械工业出版牡,2000
[2】 w Richtu'zt s 一 TCPIIP详解眷 1:协议 【M3北京:机械工
业出版牡,2000
3】 MH dd Rey RFC791 Ittm~et P可b∞I[M】1981
4】 J Postel RFC792 h Ⅲ Cc~trdM目H P~ oa[M】1981
5] ‰ n日 Rey RYCY98 Tranmaimi~ Caamlol Pt~ood【M1
1981
:6] R B~den RFC1122 R蝴 ㈣ h Im~amet H 蟑——c—
m— tI∞ Layem【M] 1989.
∞ ≈ 0 ∞ -∞ - ∞ ), ≈ 0 ∞ 0 0 ’,
下期主要内容
基于 Cluster的岁服务器客错与切撬挂术的研宽
一 种清墙阻像射群生鼻的嘉用方击
串行 ADC及 其在 Windows茸 境 下 的应 用
一 十基于 OORBA的异构数据库集成查曲 隶地
衄件扩展方式下 MIS数据的安奎访问挂术
一 种表 单驱 动封 面 向对摹 的建 楗方 法
氍机应用束兢 中竹干扰和抗干扰
windows DNA及 其 COM
AutoCADObjectARX中宴体 B—R~P的数据蛄曲
数字 PⅢ 耳法中的氍分饱和与积分也和问题
跟瞄伺服快速调转的数 字控 制
Diffse~ 中基于膏源动态分配的 SPFQ的研究
二 卫决 蕞 固在逻辑 蚌 奇 中的应 用
基于 GIS的 UML建楗研究与实直
单 片机 对液 晶 显示器 的控 制
基 于 WinScck DLL的 网蚌 安奎检 测 方法
PowerBuikder实 现 用户权’E分 配 的方 法
基于神经同蝽的专家木地体 丰研兜
互 控 电 台中语音 压缩 的设 计 与 实现
基于,卜连变换与 忐学的边界 t叠图像的拼接耳法
匿像数据库检索木兢的蛄构设计和快速柱南方法
ja~aBena及中间件挂术在电子商务开璺中的应 用
用并行遗传耳法解刘丰控制问题
智能 CAD丰兢中的关木型匿 数据蛄抽
吏互式 视 频挂 木亚 其应 用
Web敷 据库 访闩技 术
知 识库 中的空 值振 讨
一 种新的拨号网蚌计沓的设计
最佳退近圆周竹正多迪形耳法
时志数据库挂 木
女 ☆ ☆ A A 0 ^^ .0 e
维普资讯