北京北大青鸟:Sniffer-黑客们最常用的入侵手段三

北京北大青鸟通州校区学术部提供:

扩展阅读:
Sniffer-黑客们最常用的入侵手段一

Sniffer-黑客们最常用的入侵手段二

四、sniffer的安装使用。

  我主要以sniffit为例分别介绍在windows和linux下的应用。北京北大青鸟通州校区,软件工程师培训。
  [1] 在linux下的sniffit
   安装软件的安装很简单:
  1、用tar zvfx sniffit.*.*.*.tgz将下载下来的sniffit.*.*.*.tgz解压缩到你想要的目的文件夹,如果版本是0.3.7的话,你会看到该目录下出现一个sniffit.0.3.7的目录。   
  2、cd sniffit.0.3.7
  3、./configure && make,只要在这个过程中终端上没有意外的error信息
出现,你就算编译成功了--可以得到一个二进制的sniffit文件。
  4、make clean把不用的垃圾扫掉……

  、使用方法
  1、参数
  这个东东具有如下的命令选项:
  -v显示版本信息
  -t让程序去监听指定流向某IP的数据包。北京北大青鸟通州校区,软件工程师培训。
  -s让程序去监听从某IP流出的IP数据包,可以使用@通配符,如-t199.145.@
  -i显示出窗口界面,能察看当前在你所属网络上进行连接的机器
  -I扩展的交互模式,忽略所有其它选项,比-i强大得多……
  -c利用脚本来运行程序
  -F强制使程序使用网络硬盘
  -n显示出假的数据包。象使用ARP、RARP或者其他不是IP的数据包也会显示出来
  -N只运行plugin时的选项,使其它选项失效
  在-i模式下无法工作的参数:
  -b同时做-t和-s的工作……
  -d将监听所得内容显示在当前终端--以十六进制表示
  -a将监听所得内容显示在当前终端--以ASCII字符表示
  -x打印TCP包的扩展信息(SEQ,ACK,Flags),可以与'-a','-d','-s','-t','-b'一起运作,注意-- 它是输出在标准输出的,如果只用-t,-s,-b 而没有其它参数配合的话不会被写入文件。
  -R将所有通信记录在文件中
  -r这一选项将记录文件送往sniffit,它需要-F的参数配合指明设备,假设你用'eth0'(第一块网卡)来记录文件,你必须在命令行里面加上'-Feth0'或者'或者'或者'或者'或者'-Feth'-A遇到不认识的字符时用指定的字符代替-P定义监听的协议,DEFAULT为TCP--也可以选IP、ICMP、UDP……
  -p定义监听端口,默认为全部
  -l设定数据包大小,default是300字节。
  -M激活插件
  -I,-i模式下的参数
  -D所有的记录会被送到这个磁盘上。
  -c模式下的参数
  -L
  其中logparam可以是如下的内容:
  raw:轻度
  norm:常规
  telnet:记录口令(端口23)
  ftp:记录口令(端口21)
  mail:记录信件内容(端口25)
  比如说"ftpmailnorm"就是一个合法的logparam

  2、图形仿真界面 北京北大青鸟通州校区,软件工程师培训。
  就是上面所说的-i选项啦,我们输入sniffit-i会出现一个窗口环境,从中可以看到自己所在的网络中有哪些机器正在连接,使用什么端口号,其中可用的命令如下:
  q退出窗口环境,结束程序
  r刷新屏幕,重新显示正在在连线的机器
  n产生一个小窗口,包括TCP、IP、ICMP、UDP等协议的流量
  g产生数据包,正常情况下只有UDP协议才会产生,执行此命令要回答一些
  关于数据包的问题
  F1改变来源网域的IP地址,默认为全部
  F2改变目的网域的IP地址,默认为全部
  F3改变来源机器的端口号,默认为全部
  F4改变目的机器的端口号,默认为全部
北京北大青鸟通州校区,软件工程师培训。
  、一些示例

  假设有以下的设置:在一个子网中有两台主机,一台运行了sniffer,我们称之为sniffit.com,另一台是66.66.66.7,我们称之为target.com。
  <1>你希望检查sniffer是否能运行sniffit:~/#sniffit-d-p7-t66.66.66.7 并且开另一个窗口:
  sniffit:~/$telnettarget.com7
  你可以看到sniffer将你telnet到对方7号端口echo服务的包捕获了。
  <2>你希望截获target.com上的用户密码
  sniffit:~/#sniffit-p23-t66.66.66.7
  <3>target.com主机的根用户声称有奇怪的FTP连接并且希望找出他们的击键
  sniffit:~/#sniffit-p21-l0-t66.66.66.7
  <4>你希望能阅读所有进出target.com的信件
  sniffit:~/#sniffit-p25-l0-b-t66.66.66.7&或者sniffit:~/#sniffit-p25-l0-b-s66.66.66.7&
  <5>你希望使用用户交互界面
  sniffit:~/#sniffit-i
  <6>有错误发生而且你希望截获控制信息
  sniffit:~/#sniffit-Picmp-b-s66.66.66.7
  <7>Gowildonscrollingthescreen.
  sniffit:~/#sniffit-Pip-Picmp-Ptcp-p0-b-a-d-x-s66.66.66.7
  与之效果相当的是sniffit:~/#sniffit-Pipicmptcp-p0-b-a-d-x-s66.66.66.7
  <8>你可以用'more66*'读取下列方式记录下的密码
  sniffit:~/#sniffit-p23-A.-t66.66.66.7或者sniffit:~/#sniffit-p23-A^-tdummy.net
北京北大青鸟通州校区,软件工程师培训。
  、高级应用

  1、用脚本执行
  这是配合选项-c的,其执行方法也很简单,比如以如下方式编辑一个叫sh的文件
  selectfromhost180.180.180.1
  selecttohost180.180.180.10
  selectbothport21
  然后执行:sniffit-csh
  说明:监听从180.180.180.1送往180.180.180.10的数据包,端口为FTP口。这里不做更多说明,你可以自己去看里面的README。
  2、插件
  要获取一个插件是很简单的,你将它放入sniffit的目录下,并且象如下方式编辑sn_plugin.h文件:
  #define PLUGIN1_NAME "Myplugin"
  #define PLUGIN1(x) main_plugin_function(x)
  #include "my_plugin.plug"
  注意:
  a)你可以让plugin从0-9,所以从PLUGIN0_NAME到PLUGIN1_NAME……不必是连续的
  d)#include"my_plugin.plug"这是我的插件源代码放置的地方。如果想详细了解的话,还是看看里面的plugin.howto吧。
  3、介绍tod
  这东东便是sniffit最有名的一个插件了,为什么叫TOD呢--touchofdeath,它可以轻易地切断一个TCP连接,原理是向一个TCP连接中的一台主机发送一个断开连接的IP包,这个IP包的RST位置1,便可以了。
  将下载下来的tod.tar.gz拷贝到sniffit所在目录下,解压安装后ln-stodsniffit_key5就可以将这相程序与F5键连接起来,想切断哪台机器的话,只要在窗口中将光标指到需要断线的机器上按下F5键就可以了。你可以自由地定义成其它的F功能键--F1~F4不行,它们已经被定义过了……
北京北大青鸟通州校区,软件工程师培训。

  [2] 在windows下的sniffit
  Sniffit 0.3.7推出了windows版本,这个sniffit需要WinPcap包,就是类似与libpcap的包,支持WIN32平台上可以信息包捕获和网络分析,是基于UNIX的libpcap和BPF(Berkeley 分帧过滤器)模型的包。它包括内核级的包过滤驱动程序,低级动态连接库(packet.dll),和高级系统无关性库(libpcap,基于0.4a6版本)。
  这个WinPcap信息包捕获启动程序可把设备驱动增加在Windows 95, Windows 98, Windows NT 和 Windows 2000 上,可以有能力捕获和发送通过原始套接口的信息包(raw packets),Packet.dll是一个能用来直接访问BPF驱动程序的API。
  WinPcap在http://netgroup-serv.polito.it/windump和http://netgroup-serv.polito.it/analyzer这两个工具中成功应用。最新的WinPcap是版本2.02,修补了2.01版本中的一些缺陷,并且支持WIN2000。具体信息和源代码可以在下面这个站点找到:
  http://netgroup-serv.polito.it/winpcap/
  下面是在WIN2K中安装的步骤:
  1)先下载packet.exe这个程序后展开安装。
  2)打开WINDOWS2000的控制面板
  3)从控制面板中双击"网络和拨号连接"图标,在打开"本地连接"图标,并选择属性选项。
  4)在显示的对话框中选择"安装",安装网络组件。
  5)再在出现的对话框中选择"协议",点击"增加"。
  6)在出现的对话框中选择"从磁盘安装",选择正确路径,就是刚才你解压的网络设备驱动程序(这个文件夹中必须包含packet.inf和packet.sys)的地方,在选择确定。
  7)在选择"Packet capture Driver v X.XX ",并按照指示来完成安装,往往要你WINDOWS2000的安装光盘。
  8)查看网络组件中有没有 Packet capture Driver v X.XX 这一行,有的话说明这个驱动程序已经建立并绑定了网络接口。
  再重新启动机器。然后解压sniffit_nt.0.3.7.beta,再使用命令行模式,我简单的使用了一个命令行,刚开始是使用sniffit -t 192.168.0.1 -p 21,想监视下21 FTP端口的密码捕获成不成功,但出现"Automatic network device lookup not yet supported in Win32 version... use '-F \Device\Packet_{31BB7ED2-125E-11D4-8F11-D79985727802}' to force the choice,Read the README.FIRST on how to force network devices.的提示,于是我按照其提示所示,使用了sniffit -F \Device\packet_{31BB7ED2-125E-11D4-8F11-D79985727 802} -t 192.168.0.1 -p 21命令,这时出现下面的提示:
  Forcing device to \Device\packet_{31BB7ED2-125E-11D4-8F1 quested)...
  Make sure you have read the docs carefully.
  Sniffit.0.3.7 Beta is up and running.... (192.168.0.1)
  这就表明sniffit在工作了,于是在FTP到NT的端口,输入密码,随即就可以在刚才SNIFFIT的目录下看到一个关于192.168.0.2.1281-192.168.0.1.21的文件,打开后查看里面的内容如下所示:
  USER xundi
  PASS xxxxxxx-------->我隐藏了,XIXI
  SYST
  PORT 192,168,0,2,5,2
  LIST
  PORT 192,168,0,2,5,3
  LIST
  CWD g:
  CWD c
  PORT 192,168,0,2,5,26
  LIST
  CWD hack
  PORT 192,168,0,2,5,88
  LIST
  看,是不是很整洁啊,至于文件名为何是这样192.168.0.2.1281-192.168.0.1.21,那是应该是一个客户/服务器模式,客户端的连接是随意开一个1281端口地址和192.168.0.1的21口连接。
北京北大青鸟通州校区,网络工程师、软件工程师培训。
五、如何监测主机正在窃听(sniffed)

  如何才知道有没有sniffer在我的网上跑呢?这也是一个很难说明的问题,比较有说服力的理由证明你的网络有sniffer目前有这么几条:
  1、你的网络通讯掉包率反常的高。
  通过一些网络软件,你可以看到你的信息包传送情况(不是sniffer),向ping这样的命令会告诉你掉了百分几的包。如果网络中有人在听,那么你的信息包传送将无法每次都顺畅的流到你的目的地。(这是由于sniffer拦
截每个包导致的)
  2、你的网络带宽将出现反常。
  通过某些带宽控制器(通常是火墙所带),你可以实时看到目前网络带宽的分布情况,如果某台机器长时间的占用了较大的带宽,这台机器就有可能在听。在非高速信道上,如56Kddn等,如果网络中存在sniffer,你应该也可以察觉出网络通讯速度的变化。
  3、通常一个sniffer的记录文件会很快增大并填满文件空间。在一个大型网络中,sniffer明显加重机器负荷。这些警告信息往往能够帮助管理员发现sniffer。
  4、一个主机上的sniffer会将网络接口置为混杂模式以接收所有数据包。对于某些UNIX系统, 通过监测到混杂模式的网络接口。虽然可以在非混杂模式下运行sniffer,但这样将只能捕获本 机会话。只有混杂模式下的 sniffing才能捕获以太网中的所有会话,其它模式只能捕获本机会话。
  对于SunOS、linux和其它BSD Unix系统,如下命令:
  "ifconfig -a"
  会显示所有网络接口信息和是否在混杂模式。DEC OSF/1和IRIX等系统需要指定设备。要找到系统中有什么网络接口,可以运行如下命令:
  # netstat -r
  Routing tables

  Internet:
  Destination Gateway Flags Refs Use Interface
  default iss.net UG 1 24949 le0
  localhost localhost UH 2 83 lo0
  然后通过如下命令检查每个网络接口:  
  #ifconfig le0
  le0: flags=8863
  inet 127.0.0.1 netmask 0xffffff00 broadcast 255.0.0.1
  入侵者经常会替换ifconfig等命令来避开检查,因此一定要检查命令程序的校验值。
  在ftp.cert.org:/pub/tools/的cpm程序(SunOS平台)可以检查接口是否有混杂模式标记。
  这些命令只在sniffer与内核存在链接时有效。而在缺省情况,sniffer是没有与内核链接的。大多数的Unix系统,例如Irix、Solaris、SCO等,都没有任何标记来指示是否处于混杂模式,因此入侵者能够窃听整个网络而却无法监测到它。
  如果机器上使用两块网卡,把一块设置为杂乱模式,并把IP地址设置为0.0.0.0,另一块卡处于正常的模式并是正确的地址,这样将很难发现SNIFFER的存在。
  注意:要监测只采集数据而不对任何信息进行响应的窃听设备,需要逐个仔细检查以太网上所有物理连接,不可能仅通过远程发送数据包或ping就可以检查计算机是否正在窃听.
北京北大青鸟校区,网络工程师、软件工程师培训。(未完待续)

北大青鸟网上报名
北大青鸟招生简章