|
Sniffer:黑客入侵最常用的手段 ' f( l4 ^9 W: m* e" B) b+ @+ w2 E
7 W$ [1 O1 t) ]7 u- n来源:中国协议分析网
5 F1 f. @5 S: L. s随着Internet及电子商务的日益普及,Internet的安全也越来越受到重视。在Internet安全隐患中扮演重要角色的是Sniffer和Scanner,本文将介绍Sniffer以及如何阻止sniffer。
9 _4 O: @1 ]% t& g7 {" Y* K 大多数的黑客仅仅为了探测内部网上的主机并取得控制权,只有那些"雄心勃勃"的黑客,为了控制整个网络才会安装特洛伊木马和后门程序,并清除记录。他们经常使用的手法是安装sniffer。
( L( U0 ]( b' g% j/ I 在内部网上,黑客要想迅速获得大量的账号(包括用户名和密码),最为有效的手段是使用 "sniffer" 程序。这种方法要求运行Sniffer 程序的主机和被监听的主机必须在同一个以太网段上,故而在外部主机上运行sniffer是没有效果的。再者,必须以root的身份使用sniffer 程序,才能够监听到以太网段上的数据流。 1 ~( k. @9 }+ `
黑客会使用各种方法,获得系统的控制权并留下再次侵入的后门,以保证sniffer能够执行。在Solaris 2.x平台上,sniffer 程序通常被安装在/usr/bin 或/dev目录下。黑客还会巧妙的修改时间,使得sniffer程序看上去是和其它系统程序同时安装的。
; O3 P/ e0 w3 m V, v$ } 大多数 "ethernet sniffer"程序在后台运行,将结果输出到某个记录文件中。黑客常常会修改ps程序,使得系统管理员很难发现运行的sniffer程序。 , h3 n }/ `: }! c1 t. v
"ethernet sniffer"程序将系统的网络接口设定为混合模式。这样,它就可以监听到所有流经同一以太网网段的数据包,不管它的接受者或发送者是不是运行sniffer的主机。 程序将用户名、密码和其它黑客感兴趣的数据存入log文件。黑客会等待一段时间 ----- 比如一周后,再回到这里下载记录文件。 1 o6 A' Z! J7 ^) o( h
一、什么是sniffer
; c4 G3 X; w! @, K$ x1 k1 P. f7 E5 ] 与电话电路不同,计算机网络是共享通讯通道的。共享意味着计算机能够接收到发送给其它计算机的信息。捕获在网络中传输的数据信息就称为sniffing(窃听)。
2 s1 u4 J! O* \( d! U4 [* X- n 以太网是现在应用最广泛的计算机连网方式。以太网协议是在同一回路向所有主机发送数据包信息。数据包头包含有目标主机的正确地址。一般情况下只有具有该地址的主机会接受这个数据包。如果一台主机能够接收所有数据包,而不理会数据包头内容,这种方式通常称为"混杂" 模式。 ( ^- |* E/ `; {0 e
由于在一个普通的网络环境中,帐号和口令信息以明文方式在以太网中传输, 一旦入侵者获得其中一台主机的root权限,并将其置于混杂模式以窃听网络数据,从而有可能入侵网络中的所有计算机。
6 _0 e) I( W+ L2 W6 m二、sniffer工作原理
& B: v; q$ h+ n+ t' m 通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧: 1 t! |# I9 R0 C( K
1、帧的目标区域具有和本地网络接口相匹配的硬件地址。
+ ?8 H7 K3 J3 ^1 z' K1 [! } 2、帧的目标区域具有"广播地址"。 u6 f% c+ I7 u2 O M
在接受到上面两种情况的数据包时,nc通过cpu产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。
% Z! p6 [& \* F ?# v 而sniffer就是一种能将本地nc状态设成(promiscuous)状态的软件,当nc处于这种"混杂"方式时,该nc具备"广播地址",它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的nc具备置成 promiscuous方式的能力) V+ h3 y! u" p5 b, y# d; c* m
可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
0 ?8 S: A: z. Q' P$ n 通常sniffer所要关心的内容可以分成这样几类:
1 m4 f1 V2 f: u" |! |; O 1、口令 # T/ i* ^9 }7 T5 k6 U, q7 _2 j2 _" M
我想这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd.就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里边吃肉串边想办法算出你的算法。
* y8 d5 k/ l1 l6 n# [7 L, r3 a 2、金融帐号 , V# o) |' i) }! P" [, E
许多用户很放心在网上使用自己的信用卡或现金帐号,然而sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin. 1 d& C9 Q7 a! f) k! }3 e5 z
3、偷窥机密或敏感的信息数据
" n8 f7 s7 x4 _9 ]/ \ 通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。 x, s0 `3 v& o ^4 u
4、窥探低级的协议信息。 * e; ]8 s2 R& B' Y# P5 s8 q, g* g
这是很可怕的事,我认为,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的ip地址欺诈就要求你准确插入tcp连接的字节顺序号,这将在以后整理的文章中指出)如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大得多。(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧) 4 b7 ^: g4 ~8 x( W6 [
" d2 M) \& O/ g9 m& e- g7 `3 C三、 哪里可以得到sniffer " L8 R2 _/ f b/ c3 H7 a5 }
Sniffer是黑客们最常用的入侵手段之一。你可以在经过允许的网络中运行sniffer,了解它是如何有效地危及本地机器安全。 5 v) i& g6 [( @) A; f4 V
Sniffer可以是硬件,也可以是软件。现在品种最多,应用最广的是软件Sniffer,绝大多数黑客们用的也是软件Sniffer。 8 Q$ ~: b$ t1 @+ u4 s1 L, n
以下是一些也被广泛用于调试网络故障的sniffer工具: 3 H/ F' F, l s* ~9 O) _; d- v
商用sniffer: $ V. e! h3 r5 r* R" `0 ~9 [" j( M
1. Network General. ! z" `; B3 x2 J, E
Network General开发了多种产品。最重要的是Expert Sniffer,它不仅仅可以sniff,还能够通过高性能的专门系统发送/接收数据包,帮助诊断故障。还有一个增强产品"Distrbuted Sniffer System"可以将UNIX工作站作为sniffer控制台,而将sniffer agents(代理)分布到远程主机上。 1 u- L, ^8 L; p# x
2. Microsoft's Net Monitor
9 v3 {: Q2 z1 L+ T, D) V9 ] 对于某些商业站点,可能同时需要运行多种协议--NetBEUI、IPX/SPX、TCP/IP、802.3和SNA等。这时很难找到一种sniffer帮助解决网络问题,因为许多sniffer往往将某些正确的协议数据包当成了错误数据包。Microsoft的Net Monitor(以前叫Bloodhound)可以解决这个难题。它能够正确区分诸如Netware控制数据包、NT NetBios名字服务广播等独特的数据包。(etherfind只会将这些数据包标识为类型0000的广播数据包。)这个工具运行在MS Windows 平台上。它甚至能够按MAC地址(或主机名)进行网络统计和会话信息监视。只需简单地单击某个会话即可获得tcpdump标准的输出。过滤器设置也是最为简单的,只要在一个对话框中单击需要监视的主机即可。 ( S& W w; l e
免费软件sniffer & }" Q# B: A9 l' m8 z) [ H) y& g- i
1. Sniffit由Lawrence Berkeley 实验室开发,运行于Solaris、SGI和Linux等平台。可以选择源、目标地址或地址集合,还可以选择监听的端口、协议和网络接口等。这个SNIFFER默认状态下只接受最先的400个字节的信息包,这对于一次登陆会话进程刚刚好。 + ?/ s. {" t$ Z% H& _! R
2. SNORT:这个SNIFFER有很多选项供你使用并可移植性强,可以记录一些连接信息,用来跟踪一些网络活动。
" S5 w7 W8 ]+ v 3. TCPDUMP:这个SNIFFER很有名,linux,FREEBSD还搭带在系统上,是一个被很多UNIX高手认为是一个专业的网络管理工具,记得以前TsutomuShimomura(应该叫下村侵吧)就是使用他自己修改过的TCPDUMP版本来记录了KEVINMITNICK攻击他系统的记录,后来就配合FBI抓住了KEVINMITNICK,后来他写了一文:使用这些LOG记录描述了那次的攻击,HowMitnickhackedTsutomuShimomurawithanIPsequenceattack- u/ o( b% M8 B t; X
(http://www.attrition.org/security/newbie/security/sniffer/shimomur.txt) $ f9 N9 ?2 `- {
4. ADMsniff:这是非常有名的ADM黑客集团写的一个SNIFFER程序。 - s4 k$ g8 X1 K
5. linsniffer:这是一个专门设计杂一LINUX平台上的SNIFFER。
% W9 f" Z. \) `7 l 6. Esniffer:这个也是一个比较有名的SNIFFER程序。
& a* l8 \5 ~* @+ T9 \ 7. Solsniffer:这是个Solarissniffer,主要是修改了SunSniff专门用来可以方便的在Solair平台上编译。 & ^+ ^8 i* t y. Z+ u3 {+ Z
8. Ethereal是一基于GTK+的一个图形化Sniffer : c7 w/ i9 H1 {" _5 ?: T
9. Gobbler(for MS-DOS&Win95)、Netman、NitWit、Ethload...等等。
4 e6 S. n6 C/ y' k0 \" c/ ?0 D: |1 \0 M6 J3 O# p
四、sniffer的安装使用。
/ D; T/ K6 G5 o9 x& b. V" Z 我主要以sniffit为例分别介绍在nt和linux下的应用。
m3 F5 Z% @9 S# x+ O [1] 在linux下的sniffit
9 C. d8 [$ s, {% v3 K( U 安装软件的安装很简单: / [" M3 ?/ U5 Y8 o9 k$ U" Z/ e
1、用tar zvfx sniffit.*.*.*.tgz将下载下来的sniffit.*.*.*.tgz解压缩到你想要的目的文件夹,如果版本是0.3.7的话,你会看到该目录下出现一个sniffit.0.3.7的目录。
. x3 U6 B& B$ Z T 2、cd sniffit.0.3.7
* V. T7 Y7 x" T 3、./configure && make,只要在这个过程中终端上没有意外的error信息 * G( {5 |# j1 \$ L4 U
出现,你就算编译成功了--可以得到一个二进制的sniffit文件。 9 |& m: w& ]6 K
4、make clean把不用的垃圾扫掉…… . ]# c$ V+ T" P/ I# F0 N
使用方法 5 p2 z) [, ]0 P& T) w
1、参数
3 a& G' S; ~& K1 ` 这个东东具有如下的命令选项:
/ F: ?" V/ C1 h9 {7 u; ? -v显示版本信息) }2 {) c& k5 J8 T. W2 |* \
-t让程序去监听指定流向某IP的数据包% e+ ^ s/ |3 g6 n
-s让程序去监听从某IP流出的IP数据包,可以使用@通配符,如-t199.145.@
( X2 \, X8 g% u3 f: r, w -i显示出窗口界面,能察看当前在你所属网络上进行连接的机器
6 |1 b9 o/ }) a K -I扩展的交互模式,忽略所有其它选项,比-i强大得多……
# @* U- u9 t2 g5 l; I. L -c利用脚本来运行程序
0 R8 q b: ]% P+ k$ @: `+ J& k/ f -F强制使程序使用网络硬盘% @7 [/ o( B0 s" F7 d
-n显示出假的数据包。象使用ARP、RARP或者其他不是IP的数据包也会显示出来
7 g$ b2 Z* Q6 O+ ]5 P8 T -N只运行plugin时的选项,使其它选项失效" o8 ^5 q7 @( K( ^5 |% Q
在-i模式下无法工作的参数:/ ^: O- x9 @ N. ~& M0 X3 [2 }
-b同时做-t和-s的工作……: Y' `0 M U! m- h, O4 x; E
-d将监听所得内容显示在当前终端--以十六进制表示
( U1 r. M- @, O/ J -a将监听所得内容显示在当前终端--以ASCII字符表示6 g% {( }1 e, H7 ~3 b
-x打印TCP包的扩展信息(SEQ,ACK,Flags),可以与'-a','-d','-s','-t','-b'一起运作,注意-- 它是输出在标准输出的,如果只用-t,-s,-b 而没有其它参数配合的话不会被写入文件。
- b3 `% {- ^4 w( ^/ ~0 m -R将所有通信记录在文件中
& p6 V1 j2 e2 N' d. _7 b9 f0 k -r这一选项将记录文件送往sniffit,它需要-F的参数配合指明设备,假设你用'eth0'(第一块网卡)来记录文件,你必须在命令行里面加上'-Feth0'或者'或者'或者'或者'或者'-Feth'-A遇到不认识的字符时用指定的字符代替-P定义监听的协议,DEFAULT为TCP--也可以选IP、ICMP、UDP……* J; A$ ?+ D& d
-p定义监听端口,默认为全部
& w% Q" B( j+ _6 Q7 t7 p -l设定数据包大小,default是300字节。) w+ t P; w! b0 T
-M激活插件
5 O- E+ I% z; g -I,-i模式下的参数# q8 I$ u5 @8 ^, v- T) B% p
-D所有的记录会被送到这个磁盘上。
7 O; j- I5 f: r8 Y* x7 T -c模式下的参数
* _6 U9 M# J$ l3 e* N1 i5 I -L
: |# J$ k# |- ]( O 其中logparam可以是如下的内容:
3 b1 D5 \2 T: r4 D raw:轻度
2 w8 z4 X) ~* ]8 ?( |: q' ] norm:常规/ `& J; y S% ^
telnet:记录口令(端口23); s1 ?$ ?3 O3 R. G$ ^# n/ }
ftp:记录口令(端口21)
" N1 }8 I/ N: X3 q" I* {$ ? mail:记录信件内容(端口25)
$ _- R& o8 q4 ~ 比如说"ftpmailnorm"就是一个合法的logparam |