史蒂夫·利维在其著名的《黑客电脑史》中指出的“黑客道德准则”(theHackerEthic)包括:通往电脑的路不止一条;所有的信息都应当是免费的;打破电脑集权;在电脑上创造艺术和美;计算机将使生活更美好。
黑客文化包含了自由不羁的精神,也包含了反传统、反权威、反集权的精神。
广义的、公众认为的“黑客”就是闯入计算机系统的人。这种观念令有才能的、真正的“黑客”感到难过。《Maximum Security》一书中对黑客和入侵者定义如下:
■ “黑客”指对于任何计算机操作系统的奥秘都有强烈兴趣的人。“黑客”大都是程序员,他们具有操作系统和编程语言方面的高级知识,知道系统中的漏洞及其原因所在;他们不断追求更深的知识,并公开他们的发现,与其他人分享;并且从来没有破坏数据的企图。
■ “入侵者”是指怀着不良的企图,闯入甚至破坏远程机器系统完整性的人。“入侵者”利用获得的非法访问权,破坏匾??荩?芫?戏ㄓ没Х?袂肭螅?蛭?俗约旱哪康闹圃炻榉场!叭肭终摺焙苋菀资侗穑?蛭??堑男形?嵌褚獾摹?nbsp;
这里黑客的概念源于50、60年代麻省理工学院的实验室里的计算机迷们。他们精力充沛,热衷于解决难题、独立思考并且奉公守法。
技术本身是没有错的,错误产生于人。网络安全性的分析可以被真正的黑客用于加强安全性、加强网络的自由度,也可以被入侵者用于窥探他人隐私、任意篡改数据、进行网上诈骗活动。
这里,我们讨论网络嗅探器(sniffer)在广义黑客领域的应用和网络管理中的应用。
一. 嗅探器(Sniffer)攻击原理
Sniffer既可以是硬件,也可以是软件,它用来接收在网络上传输的信息。网络可以是运行在各种协议之下的。包括Ethernet、TCP/IP、ZPX等等(也可以是其中几种协议的联合)。放置Sniffer的目的是使网络接口(在这个例子中是以太网适配器)处于杂收模式(promiscuous mode),从而可从截获网络上的内容。
嗅探器与一般的键盘捕获程序(Key Capture)不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——将以太网卡设置成杂收模式。
⒈关于以太网(Ethernet)
Ethernet是由Xerox的Palo Aito研究中心(有时也称为PARC)发明的。下面简介一下信息在网络(这里为以太网)上的传输形式。
数据在网络上是以很小的称为帧(Ftame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。(例如,以太网的前12个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等)。
帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。
每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器(这一点于Internet地址系统比较相似)。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。
在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据)。如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧。
Sniffer就是这样的硬件或软件,能够“听”到(而不是忽略)在网上传输的所有的信息。在这种意义上,每一个机器,每一个路由器都是一个Sniffer(或者至少可以说它们可以成为一个Sniffer)。这些信息就被储存在介质上,以备日后检查时用。
Sniffer可以是(而且通常是)软件和硬件的联合体,软件可以是普通的网络分析器带有比较强的debug功能,或者就是一个真正的Sniffer。
Sniffer必须是位于准备进行Sniffer工作的网络上的,它可以放在网络段中的任何地方。
Sniffer成为一种很大的危险,因为:
■ 它们可以捕获口令;
■ 它们可以截获机密的或专有的信息;
■ 它们可以被用来攻击相邻的网络或者用来获取更高级别的访问权限。
二. 用Sniffer获取信息
下面是利用Windows平台上的sniffer工具EtherPeek进行的信报监听结果。让我们分析一下这些数据(为避免不必要的麻烦,其中数据经修改完成)。
1. 匿名Ftp信报分析
Flags: 0x00
Status: 0x00
Packet Length:74
Timestamp: 19:11:21.743000 01/18/2000
Raw Packet Data(原始信报数据)
.惈纇.RT*.洲..E. 00 90 ab c0 68 00 52 54 ab 15 d6 de 08 00 45 00 [0-15]
.8..@. .)R?(1.. 00 38 10 09 40 00 20 06 29 52 a2 69 28 31 ca c8 [16-31]
*..*...f锚..*?P. 8c 02 04 b3 00 15 00 66 c3 aa 00 04 f0 3f 50 18 [32-47]
".+T..USER anony 22 0a 2b 54 00 00 55 53 45 52 20 61 6e 6f 6e 79 [48-63]
mous...... 6d 6f 75 73 0d 0a 00 00 00 00
也许这还不够清清楚楚明明白白,下面是该程序作的解码:
Flags: 0x00
Status: 0x00
Packet Length:74
Timestamp: 19:11:21.743000 01/18/2000
Ethernet Header
Destination: 00:90:ab:c0:68:00 [0-5]
Source: 52:54:ab:15:d6:de [6-11]
Protocol Type:08-00 IP [12-13]
IP Header - Internet Protocol Datagram
Version: 4 [14 Mask 0xf0]
Header Length: 5 [14 Mask 0xf]
Precedence: 0 [15 Mask 0xe0]
Type of Service: %000 [15 Mask 0x1c]
Unused: %00 [15 Mask 0x3]
Total Length: 56 [16-17]
Identifier: 4105 [18-19]
Fragmentation Flags: %010 Do Not Fragment [20 Mask 0xe0]
Fragment Offset: 0 [20-22 Mask 0x1fffff]
Time To Live: 32
IP Type: 0x06 TCP [23]
Header Checksum: 0x2952 [24-25]
Source IP Address: 162.105.40.49 [26-29]
Dest. IP Address: 202.200.140.2 [30-33]
No Internet Datagram Options
TCP - Transport Control Protocol
Source Port: 1203 [34-35]
Destination Port: 21 FTP Control - File Transfer Protocol [36-37]
Sequence Number: 6734762 [38-41]
Ack Number: 323647 [42-45]
Offset: 5 [46 Mask 0xf0]
Reserved: %000000 [46 Mask 0xfc0]
Code: %011000 [47 Mask 0x3f]
Ack is valid
Push Request
Window: 8714 [48-49]
Checksum: 0x2b54 [50-51]
Urgent Pointer: 0 [52-53]
No TCP Options
FTP Control - File Transfer Protocol
FTP Command: 0x55534552 (USER) User Name [54-57]
User Name:
20 [58]
Extra bytes (Padding):
anonymous.. 61 6e 6f 6e 79 6d 6f 75 73 0d 0a [59-69]
Frame Check Sequence: 0x00000000
哦,这是在传输用户名。用户名Name为anonymous。
下面还有源地址、目的地址相同的信报。
Flags: 0x00
Status: 0x00
Packet Length:71
Timestamp: 19:11:32.149000 01/18/2000
Raw Packet Data
.惈纇.RT*.洲..E. 00 90 ab c0 68 00 52 54 ab 15 d6 de 08 00 45 00 [0-15]
.5..@. . U?(1.. 00 35 12 09 40 00 20 06 27 55 a2 69 28 31 ca c8 [16-31]
*..*...f煤..*.P. 8c 02 04 b3 00 15 00 66 c3 ba 00 04 f0 87 50 18 [32-47]
!漏?..pass guest 21 c2 7c 00 00 00 70 61 73 73 20 67 75 65 73 74 [48-63]
@...... 40 0d 0a 00 00 00 00
这是作什么呢?
Flags: 0x00
Status: 0x00
Packet Length:71
Timestamp: 19:11:32.149000 01/18/2000
Ethernet Header
Destination: 00:90:ab:c0:68:00 [0-5]
Source: 52:54:ab:15:d6:de [6-11]
Protocol Type:08-00 IP [12-13]
IP Header - Internet Protocol Datagram
Version: 4 [14 Mask 0xf0]
Header Length: 5 [14 Mask 0xf]
Precedence: 0 [15 Mask 0xe0]
Type of Service: %000 [15 Mask 0x1c]
Unused: %00 [15 Mask 0x3]
Total Length: 53 [16-17]
Identifier: 4617 [18-19]
Fragmentation Flags: %010 Do Not Fragment [20 Mask 0xe0]
Fragment Offset: 0 [20-22 Mask 0x1fffff]
Time To Live: 32
IP Type: 0x06 TCP [23]
Header Checksum: 0x2755 [24-25]
Source IP Address: 162.105.40.49 [26-29]
Dest. IP Address: 202.200.140.2 [30-33]
No Internet Datagram Options
TCP - Transport Control Protocol
Source Port: 1203 [34-35]
Destination Port: 21 FTP Control - File Transfer Protocol [36-37]
Sequence Number: 6734778 [38-41]
Ack Number: 323719 [42-45]
Offset: 5 [46 Mask 0xf0]
Reserved: %000000 [46 Mask 0xfc0]
Code: %011000 [47 Mask 0x3f]
Ack is valid
Push Request
Window: 8642 [48-49]
Checksum: 0x7c00 [50-51]
Urgent Pointer: 0 [52-53]
No TCP Options
FTP Control - File Transfer Protocol
FTP Command: 0x70617373 (pass) Password [54-57]
Password:
20 [58]
Extra bytes (Padding):
guest@.. 67 75 65 73 74 40 0d 0a [59-66]
Frame Check Sequence: 0x00000000
哦,这里传输的就是密码啊!
试想,如果这里不是匿名登录,而是telnet、rlogin或pop3等的用户名与密码,那么……
2. Http信报分析
下面是捕获的一个HTTP信报。
Flags: 0x00
Status: 0x00
Packet Length:844
Timestamp: 19:28:09.400000 01/18/2000
Raw Packet Data
.惈纇.RT*.洲..E. 00 90 ab c0 68 00 52 54 ab 15 d6 de 08 00 45 00 [0-15]
.:..@. ._堍i(1.. 03 3a f1 0a 40 00 20 06 5f dc a2 69 28 31 a7 d8 [16-31]
.d.*.P.v