第 5章 网络攻击技术分析
5.1 网络信息采集
5.2 拒绝服务攻击
5.3 漏洞攻击
5.4 本章知识点小结
第 五 章
网络攻击技术分析
概 述
– 网络攻击是网络安全所要应对的主要问题,了解网络攻
击技术和机理,才能实现有效的、有针对性的防护。
– 按照攻击目的,可将攻击分为 破坏型 和 入侵型 两种类型。
– 破坏型 攻击以破坏目标为目的,但攻击者不能随意控制
目标的系统资源。例如 5.2节所讲的 DoS
– 入侵型 攻击以控制目标为目的,比破坏型攻击威胁更大,
常见的攻击类型多为入侵型攻击。例如 5.3节讲的漏洞
攻击
攻击工作流程
– 主要 工作流程 是:收集情报,远程攻击,远程登录,取
得普通用户权限,取得超级用户权限,留下后门,清除
日志等。
– 网络攻击技术的 主要内容 包括:网络信息采集、漏洞扫
描、端口扫描及各种基于网络漏洞的攻击技术。
– 攻击者首先侦察目标网络获取 网络信息,分析网络拓扑
结构、服务类型、目标主机的系统信息、端口开放程度
等;针对获得的网络信息,试探已知的配置漏洞、协议
漏洞和程序漏洞,试图发现目标网络中存在的 突破口 ;
攻击者通过编制攻击脚本最终 实施攻击 。
5.1 网络信息采集
5.1.1 常用信息采集命令
5.1.2 漏洞扫描
5.1.3 端口扫描
5.1.4 网络窃听
5.1.5 典型信息采集工具
概 述
– 入侵者一般首先通过网络扫描技术进行网络信息采集,
获取网络 拓扑结构,发现 网络漏洞,探查 主机基本情况
和 端口开放程度,为实施攻击提供必要的信息。
– 网络信息采集有多种途径,既可以使用诸如 ping、
whois等 网络测试命令 实现,也可以通过 漏洞扫描、端
口扫描 和 网络窃听工具 实现。
5.1.1 常用信息采集命令
1.Ping命令
2.host命令
3.Traceroute命令
4,Nbtstat命令
5.Net命令
6,Finger命令
7.Whois命令
8.Nslookup命令
1.Ping命令
– Ping( packet internet groper) 命令用于确定本地主
机是否能与远程主机交换数据包, 通过向目标主机发送
ICMP(internet control message protocol,
Internet控制报文协议 )回应请求来测试目标的可达性 。
– 使用 ping命令能够察看网络中有哪些主机接入 Internet;
测试目标主机的计算机名和 IP地址;计算到达目标网络
所经过的路由数;获得该网段的网络拓扑信息 。
例 ping局域网内主机名为 abc的
目标主机 (1)
C:\>ping abc #输入命令和主机名
pinging abc [192.168.1.123]with 32 bytes of data:
#向主机 192.168.1.123发送 32字节数据包
Reply from 192.168.1.123,bytes=32 time<10ms
TTL=128
#接收到 32字节, 用时小于 10 ms
Reply from 192.168.1.123,bytes=32 time<10ms
TTL=128
Reply from 192.168.1.123,bytes=32 time<10ms
TTL=128
例 ping局域网内主机名为 abc的
目标主机 (2)
Reply from 192.168.1.123,bytes=32 time<10ms
TTL=128
ping statistics for 192.168.1.123:
#有关该 IP地址的 ping测试统计信息
Packets,Sent = 4,Received = 4,Lost = 0 (0%
loss),
#发送 4个包, 接收 4个包, 丢失 0个包
Approximate round trip times in milli-seconds:
#近似往返时间 ms
Minimum = 0ms,Maximum = 0ms,Average = 0ms
#用时最短 0ms,最长 0ms,平均 0ms
推算数据包通过的路由器数
– 由于数据包每通过一个路由器其 TTL值减 1,故路由器数
等于本地 TTL初值减去返回 TTL值。
– 本地 TTL初值必定为 2的整数次幂,且大于或等于返回
TTL值,所以,TTL初值应是一个与返回 TTL值最接近的
2的整数次幂。
– 例如,返回 TTL值为 119,可以推算出 TTL初值为 128,
源地址到目标地址要通过 128-119=9个路由器。
2.host命令
– host命令是 Linux,Unix系统提供的有关 Internet域名
查询的命令。
– 可以从域中的 DNS(domain name server,域名服务器 )
服务器获得所在域内主机的相关资料,实现主机名到 IP
地址的映射,得知域中邮件服务器的信息。
例 对 bu.edu的 host查询 ( 1)
host -l -v -t any bu.edu
#列出域 bu.edu中相关主机的信息
其部分查询结果如下:
Found 1 addresses for BU.EDU
#在域名服务器 BU.EDU上发现一个主机地址
Found 1 addresses for RS0.INTERNIC.NET #同上
Found 1 addresses for SOFTWARE.BU.EDU #同上
Found 5 addresses for RS.INTERNIC.NET #同上
Found 1 addresses for NSEGC.BU.EDU #同上
Trying 128.197.27.7
#测试 IP地址 128.197.27.7获得域名服务器基本参数配制
信息
例 对 bu.edu的 host查询 ( 2)
bu.edu 86400 IN SOA BU.EDU HOSTMASTER.BU.EDU
#SOA类型记录,定义了 DNS授权区域的起始点。相关的数据文件记
#录在 BU.EDU主机上,负责维护域名服务器的管理员的邮件地址为
#HOSTMASTER@BU.EDU。
961112121 ; serial (version)
#序列号。辅 DNS服务器根据序列号来判断是否应该进行传输,以更
#新数据库信息。
900;refresh period
#刷新周期。辅服务器检查主服务器是否同步的间隔时间,单位:秒。
900;retry refresh this often
#循环周期。辅服务器在区间传送失败后,等待再次传送的时间间隔。
604800;expiration period
#终止时间。如果不能保证辅服务器与主服务器同步,最长可以使用辅
#服务器数据的时间,到期仍不能进行传送,辅服务器将丢弃数据。
例 对 bu.edu的 host查询 ( 3)
86400;minimum TTL
#TTL时间。规定 DNS服务器对数据缓存的时间长度,TTL
#到期,DNS服务器必须丢弃缓存数据并从授权的 DNS服
#务器中重新获取新的数据,以确保域数据在整个网络上
的一致性。
bu.edu 86400 IN NS SOFTWARE.BU.EDU
#NS类型的记录,标识了在域中的授权服务器名。指定域
bu.edu中的
#一个 DNS服务器为 SOFTWARE.BU.EDU,TTL为 86400。
bu.edu 86400 IN NS RS.INTERNIC.NET #同上
bu.edu 86400 IN NS NSEGC.BU.EDU #同上
例 对 bu.edu的 host查询 ( 4)
bu.edu 86400 IN A 128.197.27.7
#A类型记录,给出域名 bu.edu的 IP地址为 128.197.27.7,
#TTL为 86400。
bu.edu 86400 IN HINFO SUN-SPARCSTATION-
10/41 UNIX
#HINFO类型记录,给出域名 bu.edu使用的设备 SUN-
#SPARCSTATION-10/41及运行的操作系统 UNIX。 TTL
#为 86400。
PPP-77-25.bu.edu 86400 IN A 128.197.7.237
#以下内容全部解释同上
例 对 bu.edu的 host查询 ( 5)
PPP-77-25.bu.edu 86400 IN HINFO PPP-HOST PPP-SW
PPP-77-26.bu.edu 86400 IN A 128.197.7.238
PPP-77-26.bu.edu 86400 IN HINFO PPP-HOST PPP-SW
ODIE.bu.edu 86400 IN A 128.197.10.52
ODIE.bu.edu 86400 IN HINFO DEC-ALPHA-3000/300LX OSF1
STRAUSS.bu.edu 86400 IN HINFO PC-PENTIUM
DOS/WINDOWS
BURULLUS.bu.edu 86400 IN HINFO SUN-3/50 UNIX (Ouch)
GEORGETOWN.bu.edu 86400 IN HINFO MACINTOSH MAC-OS

PSY81-PC150.bu.edu 86400 IN HINFO PC WINDOWS-95
BUPHYC.bu.edu 86400 IN HINFO VAX-4000/300 OpenVMS
3.Traceroute命令
– Traceroute命令用于路由跟踪,判断从本地主机到目标
主机经过哪些路由器、跳计数、响应时间等。
– Traceroute程序跟踪的路径是源主机到目的主机的一条
路径,但是,不能保证或认为数据包总是遵循这个路径。
– traceroute是一个运行得比较慢的命令,如果指定的目
标地址比较远,测试每个路由器大约需要 15秒钟。
例 通过 tracert命令获息网络
拓扑结构 ( 1)
C:\>tracert www.yahoo.com #使用 traceroute命令跟踪 yahoo
站点
Tracing route to www.yahoo.com [204.71.200.75]
#跟踪 yahoo站点, 获得 IP为 204.71.200.75
over a maximum of 30 hops:#最大限定 30跳
1 161 ms 150 ms 160 ms 202.99.38.67
#第一个路由器的 IP为 202.99.38.67,三次测试得到的响应时间分别
#为 161 ms,150 ms,160 ms。
2 151 ms 160 ms 160 ms 202.99.38.65 #以下解释同上
3 151 ms 160 ms 150 ms 202.97.16.170
4 151 ms 150 ms 150 ms 202.97.17.90
5 151 ms 150 ms 150 ms 202.97.10.5
6 151 ms 150 ms 150 ms 202.97.9.9
例 通过 tracert命令获息网络拓
扑结构 ( 2)
7 761 ms 761 ms 752 ms border7-serial3-0-
0.Sacramento.cw.net [204.70.122.69]
#路由器 204.70.122.69及该节点的域名信息 border7-
#serial3-0-0.Sacramento.cw.net,可以看出该节点位
于美国加州
#首府萨克拉曼多。
8 751 ms 751 ms * core2-fddi-
0.Sacramento.cw.net [204.70.164.49]
#以下解释同上
9 762 ms 771 ms 751 ms border8-fddi-
0.Sacramento.cw.net [204.70.164.67]
例 通过 tracert命令获息网络拓
扑结构 ( 3)
10 721 ms * 741 ms globalcenter.Sacramento.cw.net
[204.70.123.6]
11 * 761 ms 751 ms pos4-2-155M.cr2.SNV.globalcenter.net
[206.132.150.237]
12 771 ms * 771 ms pos1-0-2488M.hr8.SNV.globalcenter.net
[206.132.254.41]
13 731 ms 741 ms 751 ms bas1r-ge3-0-hr8.snv.yahoo.com
[208.178.103.62]
14 781 ms 771 ms 781 ms www10.yahoo.com
[204.71.200.75]
Trace complete,#跟踪结束
4,Nbtstat命令
– nbtstat( NBT statistics,NBT统计信息,其中 NBT为
NetBIOS over TCP/IP)命令是 Windows命令,用于
查看当前基于网络基本输入输出系统 NetBIOS
( network basic input output system)的 TCP/IP
连接状态。
– 通过该工具可以获得远程或本地机器的组名和机器名。
例 列出本地主机 NetBIOS里缓
存的连接过的的 IP地址
C:\>nbtstat –c
本地连接 2,
Node IpAddress,[192.168.1.108] Scope Id,[ ]
#本地节点的 IP地址为 192.168.1.108,
#Scope ID为空。其中 Scope ID是字符串类型的组名,用以
#标识可以相互通信的计算机集合。
NetBIOS Remote Cache Name Table #NetBIOS缓冲区中的名
字列表
Name Type host Address Life [sec]
---------------------------------------------
HYX <00>UNIQUE 192.168.1.56 355
ZJX <00>UNIQUE 192.168.1.44 242
5.Net命令
– Windows 2000提供了许多有关网络查询的命令,并且
大多以 net开头。
– 其中,用于检验和核查计算机之间 NetBIOS连接的 net
view和 net use两个命令可能被攻击者利用,来查看局
域网内部情况和局域网内部的漏洞。
– 有关 net命令的帮助信息可以在命令行下输入 net help
<command>来获得。
例 命令 net的使用 --net view( 1)
使用 net view查看局域网中主机的情况
C:\ >net view
服务器名称 注释 #下面列出本地主机所在域中的所有可访问主机
\\CAI
\\DIZ
\\DYJ
\\HXB MASTER
\\TYG
\\WANGXA
\\WY
\\ZWH 命令成功完成。
例 命令 net的使用 --net view( 2)
使用 net view查看特定主机的共享信息,例如查看主机 WY的共享信息
C:\ >net view \\wy
在 \\wy 的共享资源
共享名 类型 用途 注释
print Print HP LaserJet 6L
wy Disk
命令成功完成 。
可以看到主机 WY上有一个共享打印机 HP LaserJet 6L,和一个共享文件
夹 wy。
例 命令 net的使用 --net use( 1)
– 通过 net use命令,可建立与特定共享点的映像驱动器的
连接(此处将主机 wy上的共享文件夹 WY设置为本地映
像驱动器 r:)
C:\>net use r,\\wy\wy
– 命令成功完成。
– 在建立映像驱动器之后,就可登录映像驱动器,并查看
共享信息
C:\>r:
R:\>dir #查看共享点的资源
驱动器 R中的卷没有标签。卷的序列号是 D4CE-2115。
例 命令 net的使用 --net use( 2)
R:\ 的目录
2004-12-07 15:27 <DIR>,
2004-12-07 15:27 <DIR>,.
2004-12-07 15:29 40 helloworld.txt
#该共享点有一个共享文件 helloworld.txt,大小为 40字节,创建时
#间为 2004-12-07 15:29
1 File(s) 40 bytes #该共享点有一个文件,用去 40字节
2 Dir(s) 13,237,248 bytes free #该共享点有 13M空间可
使用
如果想删除该映像驱动器,可使用如下命令:
C:\>net use R,/d #删除本地共享点 R:
R,已经删除。
命令 net的使用
– 使用 net view和 net use命令,攻击者可以发现局域网
内存在的共享信息。
– 在需要用户名和口令时,攻击者可以采用网络监听、字
典攻击等方法实现登录。
– 如果有某台主机配置不当,可以被攻击者用来上载木马、
下载机要文件。
6,Finger命令
– Finger命令用来查询用户的信息, 通常会显示系统中某
个用户的用户名, 主目录, 闲滞时间, 登录时间, 登录
shell等信息 。
– 如果要查询远程主机上的用户信息, 需要采用 [用户名 @
主机名 ]的 格式, 执行该命令的 前提 是要查询的网络主机
需要运行 finger守护进程 。
– Linux中 Finger命令格式 为:
finger [选项 ] [使用者 ] [用户 @主机 ]
例 使用 finger命令查询用户信息 ( 1)
[root@localhost root]finger –s #使用 finger命令显示用户信息
Login Name Tty Idle Login
Time
Office Office
Phone
root Root tty1 Nov
18
16:12
例 使用 finger命令查询用户信息 ( 2)
#用户名为 root、实际名字为 root、终端名称为,tty1、无停滞时间
#信息、
#登录时间为 11月 18日 16点 12分、没有该用户的部门和部门电话信
#息。
[root@localhost root]#finger –l #以多行形式显示用户信息
Login:root Name:root #用户名为 root、实际名字为 root
Directory,/root Shell,/bin/bash
#该用户使用的文件目录为 /root,shell为 /bin/bash
On since Thu Nov 18 16:12 (CST) on tty1
#登录时间和终端名称,同上
New mail received Thu Nov 18 05:48 2004 (CST)
#收到一封新的来信及其时间
Unread since Mon Nov 10 04:18 2003 (CST) #未读信件时间
No Plan,#无执行计划
7.Whois命令
– Whois命令是一种 Internet的目录服务命令, 它提供了
在 Internet上的一台主机或某个域所有者的信息, 包括:
管理员姓名, 通信地址, 电话号码, Email信息,
Primary和 Secondary域名服务器信息等 。
– 攻击者通过了解目标网络的相关信息, 可以猜测目标主
机的用户名和口令, 尽量缩小蛮力攻击时使用的字典的
大小, 减少攻击时间 。
– 以 Linux操作系统为例, whois命令格式如下:
whois [OPTION] query [@server[:port]]
8.Nslookup命令
– Nslookup是 Windows 2000提供的 DNS排错工具 。
– 在 Internet中存在许多免费的 nslookup服务器,它们提
供域名到 IP地址的映射服务和 IP地址到域名的映射等有
关网络信息的服务。
– 通过 nslookup攻击者可以在 whois命令的基础上获得更
多目标网络信息。
– 管理员可以禁止 DNS服务器进行区域传送 。
例 使用 nslookup查询网络信息
c:\>nslookup
Default Server,corp.lab.org
#默认的 DNS服务器为 corp.lab.org
Address,192.168.1.99 #服务器 IP为,192.168.1.99
>ls –d lab.org #列出域 lab.org上的所有记录
[[192.168.1.99]] #服务器 IP为,192.168.1.99
lab.org SOA corp.lab.org admin.
#SOA型记录, 以 lab.org为起始点的数据信息记录在 corp.lab.org上
#,负责维护域名服务器的管理员的邮件地址为 admin@lab.org
lab.org A 192.168.1.99
#A类型记录, 给出域名 lab.org的 IP地址为 128.197.27.7。
lab.org NS corp.lab.org
#NS类型的记录, 指定域 lab.org中的 DNS服务器为 corp.lab.org。
5.1.2 漏洞扫描
– 漏洞是指系统硬件、操作系统、软件、网络协议、数据
库等在设计上和实现上出现的可以被攻击者利用的错误、
缺陷和疏漏。
– 漏洞扫描程序是用来检测远程或本地主机安全漏洞的工
具。
– 针对扫描对象的不同,漏洞扫描又可分为 网络扫描, 操
作系统扫描, WWW服务扫描, 数据库扫描 以及 无线网
络扫描 等。
1.堆栈指纹扫描
– 不同操作系统在网络协议上存在差异,可以通过总结操
作系统之间的这种差异,编写测试脚本,向目标系统的
端口发送各种特殊的数据包,并根据系统对数据包回应
的差别来判定目标系统及相关服务。
– 这种利用 TCP/IP协议识别不同 操作系统和服务种类的技
术称为 堆栈指纹扫描技术 。
2.常用堆栈指纹扫描技术
( 1) ICMP错误消息抑制机制
( 2) ICMP错误消息引用机制
( 3) ICMP错误消息回文完整性
( 4) FIN探查
( 5) TCP ISN采样
( 6) TCP初始窗口
( 7) TCP选项
( 8) MSS选项
( 9) IP协议包头不可分片位
( 10)服务类型 TOS
( 1) ICMP错误消息抑制机制
– 在 RFC1812关于 IPv4路由的规定中,对 ICMP的错误类
型信息的发送频率作了限制,不同操作系统对这种限制
的策略不同。
– 例如,Linux内核限制发送目标不可到达信息次数为每 4
秒 80次,如果超过这个限制则会延迟 1/4秒。
– 攻击者可以向某个随机的高端 UDP端口发送成批的数据
包,并计算接收到的目标不可达数据包的数量,来判断
操作系统类别。
– 这种探测操作系统的方法需要的时间较长,并且对网络
性能会造成一定的影响。
( 2) ICMP错误消息引用机制
– 对于端口不可达信息,几乎所有操作系统都使用了规范
的 ICMP错误信息格式,即回送一个 IP请求头加 8字节长
度的包,
– Solaris和 Linux返回的数据包大于这个长度。
– 据此可猜测目标主机是否使用 Linux或 Solaris操作系统 。
( 3) ICMP错误消息回文完整性
– 当返回端口不可达数据包时,某些操作系统在初始化处
理过程中会弄乱返回数据包的包头,这样接收到的数据
包中会出现不正常的数据。
– 例如,AIX和 BSDi返回的 IP包中总长度域会被设置为 20
字节;又如 BSDi,FreeBSD,OpenBSD,ULTRIX和
VAX等操作系统会修改请求头中的 IP的 ID值。
– 由于 TTL值的改变导致校验和需要修改时,AIX、
FreeBSD等操作系统将返回不正确的校验和或设置校验
和为 0。
( 4) FIN探查
– FIN探查不遵循完整的三次握手连接,而是直接向目标端
口发送一个带有 FIN标记的 TCP数据包。根据 RFC793中
的图 6( TCP连接状态图)和 3.9节 (事件处理 ),当处于关
闭、监听、请求同步状态时,如果接收到 FIN数据包,则
丢弃该包并返回原状态。
– 但 MS Windows,BSDi,HP-UX,MVS,IRIX等操作
系统并不遵守这个规定,而会使用 RESET响应这个 FIN
数据包。
– 据此,可粗略推断目标主机使用的操作系统类别 。
( 5) TCP ISN采样
– TCP初始序列号 ISN( initial sequence numbe)采样
是利用 TCP协议中初始序列号长度与特定的操作系统相
匹配的方法。
– 较早的 Unix版本 在处理 TCP协议时,初始序列号长度为
64K; Solaris,IRIX,FreeBSD,DigitalUnix,Cray
等操作系统,则使用随机增长的长度; Windows操作系
统的序列号长度使用依赖时间的模型,使 ISN在每个时
间周期递增一个小的固定数值;有 一些设备 则使用固定
的常数,如 3Com的集线器使用常数 0x803H,Apple
LaserWriter打印机使用常数 0xc7001。
– 有经验的攻击者甚至可以通过计算有关序列号的函数,
来进一步识别操作系统类别。
( 6) TCP初始窗口
– TCP使用滑动窗口为两台主机间传送缓冲数据。
– 每台主机支持两个滑动窗口,一个接收数据,另一个发
送数据。窗口尺寸表示计算机可以缓冲的数据量大小。
– 通过在初始化三次握手后检查返回的 TCP包窗口大小和
改变大小的规律,可识别某些操作系统的类型。
– 例如,AIX操作系统的窗口大小为 0x3F25H,这个大小
是唯一的; Linux默认的窗口大小为 0x7D78; Linux、
FreeBSD和 Solaris在一个完整的会话过程中保持相同的
窗口大小,而 Windows操作系统在一个会话过程中经常
改变窗口大小。
( 7) TCP选项
– 并不是所有的操作系统都支持 TCP包中的所有选项,可
以设计 TCP包内容和类型,探测目标操作系统类别。
– 可以向目标主机发送带有可选项标记的数据包,如果操
作系统支持这些选项,会在返回包中也设置这些标记。
– 例如,TCP选项中的 SACK(selective
acknowledgment,选择性的应答 ) 选项,通常被
Windows和 Linux使用,但 FreeBSD和 Solaris不使用
这个选项。
– 使用 TCP选项方法,可以一次在数据包中设置多个可选
项,增加探测的准确度,节约探测时间 。
( 8) MSS选项
– 根据 RFC793有关 TCP头格式的资料(第 3.1节),
MSS(maximum segment size最大数据段大小 )规定
了发送方可以接收的最大的 TCP分片。
– 但不同的操作系统的 MSS值略有不同,绝大多数系统 使
用 1460 大小的 MSS,NOVELL使用的是 1368,而 部分
FreeBSD的版本使用 512大小的 MSS。
( 9) IP协议包头不可分片位
– IP协议包头内有一段 3位的标志位,其中第一个控制位指
定数据包是否被分片。
– 根据 RFC1191,当使用路径 MTU( maximum
transmission unit,最大传输单元)发现技术查询
PMTU(path MTU),以确定传输路径上的最小 MTU时,
所有 TCP数据包必须设置 DF位 (don't fragment不可分
片 ),但 FreeBSD 5.0-CURRENT版本 存在缺陷,在
SYN-ACK包中没有设置 DF位,攻击者可以通过连接服
务器并截获网络通信数据判别是否是 FreeBSD 5.0-
CURRENT系统。
( 10) 服务类型 TOS
– IP包头有 8位服务类型字段,用来规定数据包的处理方式,
其中包括3位的 优先域 ( precedence field),用来指
定 IP数据包的8个优先级别;4位的 服务类型域 (type
of service),用来描述网络在路由 IP数据包时如何平衡
吞吐率、延时、可靠性和代价;和 MBZ(must be zero)
域。
– 当一个 MBZ为1的 ICMP请求数据包到达目标主机时,
FreeBSD 4.1.1送回的应答数据包中 MBZ为1,而
Windows 2000 Pro送回的应答数据包中 MBZ为 0。
5.1.3 端口扫描
– 计算机的 端口 是输入 /输出设备和 CPU之间进行数据传输
的通道。
– 通过端口扫描,可以发现打开或正在监听的端口,一个
打开的端口就是一个潜在的入侵通道。
– 每一台计算机都有 65536个端口可供使用。
– 前 1024个端口被作为系统处理的端口而保留,并向外界
的请求提供众所周知的服务,所以这些端口被攻击者视
为重点检查对象,以减少扫描范围,缩短扫描时间 。
端口扫描类型
1,TCP端口扫描
2,TCP SYN扫描
3,TCP FIN扫描
4,NULL扫描
5,Xmas tree扫描
6,UDP扫描
1,TCP端口扫描
– 向目标主机的指定端口 建立一个 TCP全连接过程,即完
成三次握手过程,从而确定目标端口是否已激活或正在
监听。
– 这是一种最基本的,也是最简单的扫描方式。
– 但通常也会留下日志,易被发现 。
2,TCP SYN扫描
– 向目标端口 发送一个 SYN数据包,如果应答是 RST,说
明端口是关闭的;如果应答中包含 SYN和 ACK,说明目
标端口处于监听状态。
– 使用 SYN扫描并不完成三次握手过程,所以这种技术通
常被称为 半连接扫描 。
– 由于很少有站点会记录这种连接,所以 SYN扫描也被称
为 半公开或秘密扫描 。
3,TCP FIN扫描
– 对于一些操作系统,当 FIN数据包到达一个关闭的端口时,
会返回一个 RST数据包;当端口开放时,这种数据包被
忽略,不作任何应答,从而可以判断端口状态。
– 防火墙和包过滤器会监视 SYN数据包,而使用 FIN数据
包有时能够穿过防火墙和包过滤器,所以,这种方法较
SYN扫描 更为隐蔽 。
4,NULL扫描
– 发送一个没有任何标志的 TCP包到目标端口,称为 NULL
扫描 。
– 根据 RFC 793中的连接状态图和规定,如果目标端口是
关闭状态,应该返回一个 RST数据包。
5,Xmas tree扫描 ( 圣诞树扫描 )
– 向目标端口发送一个标记为 FIN,URG和 PUSH数据包。
– 根据 RFC793,如果目端口是关闭状态,那么应该返回
一个 RST数据包。
6,UDP扫描
– 按照 UDP协议,当 UDP数据包到达目标端口时,无论该
端口是否开放,目标主机都不作任何应答,即打开的端
口不会回送确认数据包、关闭的端口不会回送错误数据
包。
– 这给 UDP扫描带来一定困难,但是,当数据包到达一个
关闭的端口时,大部分主机会返回一个
ICMP_PORT_UNREACH的错误信息数据包,据此可以
判定该端口是关闭的,除此之外的其他端口是打开的。
5.1.4 网络窃听
– 网络窃听 是指截获和复制系统、服务器、路由器或防火
墙等网络设备中所有的网络通信信息。
– 用于网络窃听的嗅探器可以被安装在网络的任何地方,
并且很难被发现,所以,非法网络窃听严重地危害着网
络的安全。
– 以太网通信采用 广播 机制,网卡一般有四种接收方式,
广播方式:网卡接收网络中的广播数据。组播方式:网
卡接收组播数据。直接方式:只有目的网卡才能接收该
数据。 混杂模式,这种模式使网卡能够接收一切通过它
的数据,而不管该数据是否是传给它的。
– 通过将网卡设置成 混杂模式,就可以探听并记录下同一
网段上所有的数据包。
– 攻击者可以从数据包中提取信息,如登录名、口令等。
无线网络通信安全
– 无线网络通信相对于有线网络通信有更多的漏洞,由于
无线网络固有的特点和无线网络技术本身的不成熟,如
加密机制不完善、缺乏数据保护和安全认证机制,使得
对于无线网络的探测更为简单。
– 现有的工具,如,Network Associates 公司的 Sniffer
Wireless,Airsnort,WEPCrack等都可以用来实现对
无线网络的网络监控和窃听。
5.1.5 典型信息采集工具
1.nmap扫描器
2,Axcet NetRecon扫描器
3,ping Pro扫描器
4,ISS Internet Scanner扫描器
1.nmap扫描器
– nmap是当前最流行的扫描器之一,能够在全网
络范围内实现 ping扫描、端口扫描和操作系统检
测。
– nmap使用操作系统堆栈指纹技术。
– nmap可以准确地扫描主流操作系统,还可以扫
描路由器和拨号设备,还可以绕过防火墙。
2,Axcet NetRecon扫描器
– Axcet NetRecon是最先为 Windows NT网络设计的网
络扫描产品之一。
– Axcet NetRecon能够发现、分析、报告网络的各种设
备,检测它们存在的漏洞。
– NetRecon能够扫描 多种操作系统,包括 Unix,Linux、
Windows以及 NetWare等。
– NetRecon提供对服务器、防火墙、路由器、集线器、
交换机,DNS服务器、网络打印机,Web服务器以及其
他网络 服务设备 的测试。
– NetRecon通过模拟入侵或攻击行为,找出并报告网络
弱点,提出建议和修正措施。
3,ping Pro扫描器
– ping Pro是也是常用的扫描工具之一, 以图形方式实现
了大多数命令行程序功能, 为网络扫描提供了方便 。
– ping Pro可以侦查出网络上开启的端口, 通过监测远程
过程调用服务所使用的 TCP,UDP135端口和网络会话
所使用的 UDP137,138和 139端口来实现扫描 。
– ping Pro只能工作在其所在网段上 。
4,ISS Internet Scanner扫描器
– ISS Internet Scanner可以跨网段扫描远程主机,可以
检查出内部网、防火墙,Web服务器或某台主机所存在
的漏洞和潜在的攻击威胁。
– ISS Ineternet Scanner工作于 Unix和 NT平台,分为三
个模块:内部网、防火墙和 Web服务器,可以针对不同
的扫描对象制定不同的扫描方案,从而更直接的发现重
要设备中潜在的隐患,在不同的模块中,用户还可以进
一步定义自己的扫描参数。
5.2 拒绝服务攻击
5.2.1 基本的拒绝服务攻击
5.2.2 分布式拒绝服务攻击
概 述
– 拒绝服务 DoS( denial of service)攻击是常用的一种
攻击方式。 DoS通过抢占目标主机系统资源使系统过载
或崩溃,破坏和拒绝合法用户对网络、服务器等资源的
访问,达到阻止合法用户使用系统的目的。
– DoS属于破坏型攻击。
– DoS对目标系统本身的破坏性并不是很大,但影响了正
常的工作和生活秩序,间接损失严重,社会效应恶劣。
5.2.1 基本的拒绝服务攻击
– 当一个授权实体不能获得对网络资源的访问或当访问操
作被严重推迟时,就称为 DoS。
– DoS可能由网络部件的 物理损坏 引起,也可能由 网络负
荷超载 所引起,还可能由不正确的使用 网络协议 而引起。
– DoS攻击有两种基本形式,目标资源匮乏 型和 网络带宽
消耗 型。
– 目标资源匮乏 型攻击又可分为 服务过载 和 消息流 两种。
– 网络带宽消耗 型攻击的目标是整个网络,攻击使目标网
络中充斥着大量无用的、假的数据包,而使正常的数据
包得不到正常的处理。
目标资源匮乏型攻击的两种类型
– 服务过载 指的是向目标主机的服务守护进程发送大量的
服务,造成目标主机服务进程发生服务过载,拒绝向合
法用户的正常使用要求提供应有的服务。
– 消息流 指攻击者向目标主机发送大量的畸形数据包,使
得目标主机在重组数据包过程中发生错误,从而延缓目
标主机的处理速度,阻止处理正常的事务,严重时可以
造成目标主机死机。
拒绝服务攻击发生时的特点
1,消耗系统或网络资源, 使系统过载或崩溃 。
2,难以辨别真假 。
3,使用不应存在的非法数据包来达到拒绝服务攻
击的目的 。
4,有大量的数据包来自相同的源 。
5.2.2 分布式拒绝服务攻击
–分布式拒绝服务 DDoS( Distributed Denial of
Service)攻击是一种基于 DoS的特殊形式的拒
绝服务攻击。
–是分布式的、协作的大规模攻击方式,较 DoS具
有更大的破坏性。
1.分布式拒绝服务攻击的体系结构
攻击者 主控端
控制傀儡机
代理端
攻击傀儡机
受害者
图 5.1 分布式拒绝服务攻击体系结构
2.分布式拒绝服务攻击的步骤
– 要构建 DDoS攻击体系, 集合众多的傀儡机进行协同工作,
与入侵单台主机相比 DDoS攻击要复杂得多 。
– 进行 DDoS攻击的基本步骤如下:
( 1) 搜集目标情况
( 2) 占领傀儡机
( 3) 实施攻击
5.3 漏洞攻击
5.3.1 配置漏洞攻击
5.3.2 协议漏洞攻击
5.3.3 程序漏洞攻击
概 述
– 由于 应用软件和操作系统 的复杂性和多样性,使得在网
络信息系统的软件中存在着不易被发现的安全漏洞;
– 现有 网络技术 本身存在着许多 不安全性,如 TCP/IP协议
在设计初期并没有考虑安全性问题,其本身就有许多不
完善之处。
– 对于网络设计和管理人员而言,不合理的 网络拓扑 结构
和不严谨的 网络配置,都将不可避免的造成网络中的漏
洞。
– 对于一个复杂系统而言,漏洞的存在是不可避免的。
5.3.1 配置漏洞攻击
– 配置漏洞 可分为 系统 配置漏洞和 网络 结构配置漏洞。
– 系统配置漏洞 多源于管理员的疏漏,如:共享文件配置
漏洞、服务器参数配置漏洞等。
– 网络结构配置漏洞 多与网络拓扑结构有关,例如:将重
要的服务设备与一般用户设备设置与同一网段,为攻击
者提供了更多的可乘之机,埋下了安全隐患。
1.默认配置漏洞
– 操作系统和服务应用程序在安装时使用默认的设置,虽
然方便了系统的安装过程,但默认参数实际上为攻击者
留下了后门。
– 如默认用户名和口令、默认端口和默认服务,通常都是
首选的突破口和入侵点。
– 默认的目录路径则为攻击者查找机要文件,放置后门程
序提供了方便。
2.共享文件配置漏洞
– 大部分操作系统都提供了文件共享机制,方便网络资源
的共享。
– 但是共享配置不当就会暴露重要文件,攻击者能够轻易
的获得机密资料。
3.匿名 FTP
– 匿名 FTP网络服务允许任何网络用户通过 FTP访问服务器
系统上 指定的资源,但不适当的 FTP配置,将会造成服
务器系统非授权资源的泄漏。
– 一般的匿名 FTP的权限都是只读权限,即不允许匿名用
户在服务器上创建文件和目录。否则,攻击者可很容易
的放置木马程序,设置系统后门,为进一步的攻击提供
便捷 。
4,wu-ftpd
– 作为 FTP服务程序的 wu-ftpd( Washington
university FTP server daemon,华盛顿大学 FTP服务
器守护程序)中存在的漏洞,可以使攻击者由系统的任
何账号获得 root权限。
– wu-ftpd的配置文件 src/pathnames.h中有一个名为
_PATH_EXECPATH的变量,这个变量应该被设置为不
包含 shell或命令解释器的目录,例如 /bin/ftp-exec,
但在建立默认的系统配置时 _PATH_EXECPATH被设为
/bin。这样在编译时,用户可以进入目录 /bin,使得任
何用户,只要不是匿名登录,就可在有漏洞的 FTP上获
得 root权限 。
5.3.2 协议漏洞攻击
1.SYN Flood攻击
2.循环攻击
3.Land攻击
4.Smurf攻击
5.WinNuke攻击
6.Fraggle攻击
7.Ping to death攻击
概 述
– Internet上现有的大部分协议在设计之初并没有考虑安
全因素,使得攻击者可以利用协议固有的漏洞对目标进
行攻击。
– 操作系统在设计处理 TCP/IP协议时,并没有预计到要处
理非法数据包,当这种不应存在的特殊数据包出现时,
许多系统会发生处理速度缓慢、停止响应和系统崩溃等
不正常现象。
1.SYN Flood攻击
– SYN Flood攻击利用的是 TCP协议的设计漏洞。
– 假设一个用户向服务器发送了 SYN报文后突然死机或掉
线,那么服务器在发出 SYN+ACK应答报文后是无法收
到客户端的 ACK报文的。在这种情况下服务器端会重试,
再次发送 SYN+ACK给客户端,并等待一段时间,判定
无法建立连接后,丢弃这个未完成的连接。这段等待时
间称为 SYN中止时间 ( Timeout),一般为 30秒 --2分
钟。
– 如果攻击者大量模拟这种情况,服务器端为了维护非常
大的半连接列表就会消耗非常多的资源。此时从正常客
户的角度来看,服务器已经丧失了对正常访问的响应,
这便是 SYN Flood攻击的机理。
2.循环攻击 (UDP flood攻击 )
– 循环攻击利用的是 UDP协议漏洞。
– UDP端口 7为回应端口 ( echo),当该端口接收到一个
数据包时,会检查有效负载,再将有效负载数原封不动
的回应给源地址。 UDP端口 19为字符生成端口
(chargen,character generator字符生成 ),此端口
接收到数据包时,以随机字符串作为应答。如果这些端
口是打开的,假设运行了回应服务的主机为 E( echo主
机 ),运行了字符生成服务的主机为 C(chargen主机 ),
攻击者伪装成 E主机 UDP端口 7向 C主机 UDP端口 19发送
数据包,于是主机 C向 E发送一个随机字符串,然后,E
将回应 C,C再次生成随机字符串发送给 E。这个过程以
很快的速度持续下去,会耗费相关主机的 CPU时间,还
会消耗大量的网络带宽,造成资源匮乏。
3.Land攻击
– Land攻击的特征是 IP协议中 IP源地址和目标地址相同。
– 操作系统如 Window NT不知道该如何处理这种情况,就
可能造成死机。
– Land攻击向 UDP目标端口 135发送伪装的远程过程调用
RPC(remote procedure call)的 UDP数据包,使之看
上去好像是一个 RPC服务器在向另一个 RPC服务器发送
数据,目标服务器将返回一个 REJECT数据包,而源服务
器用另一个 REJECT数据包应答,结果就会造成死循环,
只有当数据包作为异常处理被丢掉时循环才会中止。
– 如果将伪装的 UDP数据包发送至多台主机,就会产生多
个循环,将消耗大量处理器资源和网络带宽。
4.Smurf攻击
– IP协议规定主机号为全 1的地址为该网段的广播地址,路
由器会把这样的数据包广播给该网络上的所有主机。
– Smurf攻击利用了广播数据包,可以将一个数据包“放大”
为多个。攻击者伪装某源地址向一个网络广播地址发送一
组 ICMP回应请求数据包,这些数据包被转发到目标子网
的所有主机上。由于 Smurf攻击发出的是 ICMP回应请求,
因此所有接收到该广播包的主机将向被伪装的源地址发回
ICMP回应应答。攻击者通过几百个数据包就可以产生成
千上万的数据包,这样不仅可以造成目标主机的拒绝服务,
而且还会使目标子网的网络本身也遭到 DoS攻击。
5.WinNuke攻击
– 操作系统在设计处理 TCP数据包时,都严格遵循了 TCP
状态机,但遇到不符合状态机的数据包时,若不知所措,
就可能造成死机。
– WinNuke攻击首先发送一个设置了 URG标志的 TCP数据
包,当操作系统接收到这样的数据包时,说明有紧急情
况发生,并且,操作系统要求得到进一步的数据,以说
明具体情况。此时,攻击者发送一个 RST数据包,构造
了 TCP状态机中不会出现的数据包,若操作系统(如未
打补丁的 Windows NT)不能正确处理,就会死机,使
连接异常终止,服务中断。
6.Fraggle攻击
– Fraggle攻击发送畸形 UDP碎片,使得被攻击者在重组
过程中发生未加预料的错误,导致系统崩溃。
– 典型的 Fraggle攻击使用的技术有:碎片偏移位的错乱、
强制发送超大数据包等。
– 例如:一个长为 40字节的数据在发送时被分为两段,包
含第一段数据的数据包发送了数据 0~36字节,包含第二
段数据的数据包在正常情况下应该是 37~40的 4个字节,
但攻击者构造并指定第二个数据包中包含第二段数据且
为数据的 24--27字节来迷惑操作系统,导致系统崩溃。
7.Ping to death攻击
– 根据有关 IP协议规定的 RFC791,占有 16位的总长度控
制字确定了 IP包的总长度为 65535字节,其中包括 IP数
据包的包头长度。
– Ping to death攻击发送超大尺寸的 ICMP数据包,使得
封装该 ICMP数据包的 IP数据包大于 65535字节,目标
主机无法重新组装这种数据包分片,可能造成缓冲区溢
出、系统崩溃。
5.3.3 程序漏洞攻击
1.缓冲区溢出攻击
2.BIND漏洞攻击
3,Finger漏洞攻击
4.Sendmail漏洞攻击
概 述
– 由于编写程序的复杂性和程序运行环境的不可预见性,
使得程序难免存在漏洞。
– 程序漏洞攻击成为攻击者非法获得目标主机控制权的 主
要手段 。
1.缓冲区溢出攻击的原理
– 缓冲区溢出攻击是利用系统、服务、应用程序中存在的
漏洞,通过恶意填写内存区域,使内存区域溢出,导致
应用程序、服务甚至系统崩溃,无法提供应有的服务来
实现攻击目的。 不检测边界 是造成缓冲区溢出的主要原
因。
– UNIX主要设计语言是 C语言,而 C语言缺乏边界检测,若
不检查数组的越界访问,就会留下基于堆栈攻击的隐患。
– UNIX进程在内存中分为正文段、数据段和堆栈段。堆栈
段用于为动态变量分配空间和临时保存函数调用的参数
和返回地址。动态分配是 UNIX程序采用的主要方法,但
是,若动态变量从栈中分配空间时没有作边界检查,则
可能发生缓冲区溢出,造成段越界。
段越界错误程序
程序:
void f(char *str){
char buffer[15];
strcpy(buffer,str);
}
void main(){
char longString[256];
int i;
for(i =0;i<=255;i++)
longString[i]=’A’;
f(longString);
}
段越界错误堆栈
调用 strcpy()前 调用 strcpy()后
argc UserStack argc UserStack
*str Strcpy()写 256字节,重写了返
回地址,sfp等return address
sfp
buffer[15] buffer[15]
heap heap
2.BIND漏洞攻击
– 运行在 DNS服务器上的 BIND(Berkeley internet
name domain,Berkeley internet名字域 )DNS服务
器软件是最易遭受攻击的软件之一。
– BIND存在的脆弱性可以对系统造成根级的安全威胁。如
BIND 8.2版本存在漏洞,攻击者伪装成 DNS服务器,发
送一个大的 NXT记录( next,域中不存在的名字被标定
为 NXT类型),并在记录中包含攻击代码,使存在漏洞
的 DNS服务器缓冲区溢出,从而获得 root权限。
3,Finger漏洞攻击
– Solaris自带的 Finger服务器存在如下一些漏洞:当攻击
者在向 Finger服务器提交以数字做用户名的询问请求时,
Finger服务器会把日志文件 wtmp(wtmp 一个用户每次
登录和退出时间的记录 ) 中所有的用户名返回给攻击者。
– 当攻击者对服务器进行 finger查询时,如果询问一个不
存在的用户,服务器会返回一个带,.”的回答,这可能造
成攻击者用暴力法判断系统上存在的用户。
4.Sendmail漏洞攻击
– 在旧版本的 sendmail中,为解决反向编码的问题,数据库中
包含一个 decode入口,这个 UNIX程序可以将一个以纯文本
编码的二进制文件,转化为原有的二进制的形式和名字。反
向编码完全尊重被编码的文件,例如当一个名为 bar.uu的文
件声称其原始文件是 /home/foo/.rhosts时,则反编码程序
将试图转化 bar.uu文件为 foo下的,rhosts文件。
– 一般情况下 sendmail将 undecode作为半特权用户后台程序
运行,所以 email发出的编码文件不会覆盖任何系统文件。但
是,如果目标程序是全局可写的,那么编码程序允许远程用
户修改这些文件,使攻击者可以放置木马,留下后门,达到
攻击目的。
5.4 本章知识点小结
– 网络攻击是网络安全所面临的主要威胁,是网络安全工
作者要应对的主要问题之一。
– 了解网络攻击的技术路线,攻击的主要原理、手段、方
法和途径,对于发现网络安全漏洞、采取安全应对措施、
制定安全防护策略有重要的指导意义。
1,网络信息采集
(1) 常用的信息采集命令
ping,host,traceroute,nbtstat,net、
finger,nslookup
(2) 漏洞扫描
(3) 端口扫描
(4) 网络窃听
(5) 典型信息采集工具
nmap扫描器, Axcet NetRecon扫描器,
ping Pro扫描器, ISS Internet Scanner扫描器
2,拒绝服务攻击
– (1) 基本的拒绝服务攻击
– 拒绝服务攻击使授权实体不能获得对网络资源的正常
访问或访问操作被严重推迟 。 DoS攻击有两种基本形
式:目标资源匮乏型和网络带宽消耗型 。
– (2) 分布式拒绝服务攻击
– 分布式拒绝服务攻击是一种分布式的, 协作的大规模
攻击方式 。 分布式拒绝服务攻击在攻击前要建立特有
的体系结构, 并采用各种方式隐藏攻击程序, 清除攻
击痕迹 。 分布式拒绝服务攻击通过搜集目标情况, 占
领傀儡机, 实施攻击三个步骤实现攻击 。
3,漏洞攻击
– (1) 配置漏洞攻击
– 默认配置漏洞、共享文件配置漏洞、匿名 FTP,wu-ftpd配置漏洞等。
– (2) 协议漏洞攻击
– SYN Flood攻击、循环攻击 (UDP Flood攻击 ),Land攻击,Smurf攻
击,WinNuke攻击,Fraggle攻击,Ping to death攻击等,
– (3) 程序漏洞攻击
– 对程序和服务实施缓冲区溢出攻击是攻击者获得目标控制权的主要手
段。
– 缓冲区溢出攻击的攻击原理,BIND漏洞攻击,Finger漏洞攻击、
Sendmail漏洞攻击等的基本原理。