文档库 最新最全的文档下载
当前位置:文档库 › 课程设计说明书模版

课程设计说明书模版

课程设计

题目:黑客攻击技术与防范

学生姓名:付银麟

学号:20091339

系部名称:计算机科学与技术

专业班级:计算机科学与技术09-2 指导教师:吴长伟董树森

职称:讲师讲师

二○一二年五月三十一日

摘要

随着网络技术的发展和网络应用的普及,越来越多的信息资源放在了互联网上,网络的安全性和可靠性显得越发重要。因此,对于能够分析、诊断网络,测试网络性能与安全性的工具软件的需求也越来越迫切。网络嗅探器具有两面性,攻击者可以用它来监听网络中数据,达到非法获得信息的目的,网络管理者可以通过使用嗅探器捕获网络中传输的数据包并对其进行分析,分析结果可供网络安全分析之用。

本文对网络嗅探技术进行了简要分析,研究了网络数据包的捕获机制,如winpcap、原始套接字。文中首先分析了嗅探的原理和危害,并介绍了几种常见的嗅探器,然后研究了入侵检测系统中使用的包捕获技术。本文利用原始套接字在windows 平台下实现了一个网络嗅探器程序,完成了对数据包进行解包、分析数据包的功能。

关键词:网络嗅探器数据包捕获数据包分析原始套接字

课程设计任务书

组内学生姓名人数 1

系部名称计算机科学与

技术

专业计算机科学与技术班级、学号

指导教师姓名吴长伟

孙栩

职称

讲师

讲师

从事专业

信息管理与

信息系统

题目名称

一、课程设计的目的、意义

信息安全与信息管理实习旨在巩固学生所学的基础知识、拓宽视野、增强实践能力、了解IT 行业和信息安全与信息管理所需的知识。通过设计主要达到以下目的:

1.帮助学生加深对信息安全和信息管理理论知识的掌握,并能够应用实用技术进行信息安全防护与信息管理;

2.通过查阅技术资料,选用设计方法,搜集数据,增强学生分析问题、解决问题的能力;

3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;提高程序设计和调试能力。

通过课程设计的综合训练,可以帮助学生提高思维能力,培养科学的软件工作方法,促进学生综合应用能力和专业素质的提高。

二、课程设计的主要内容、技术要求(包括原始数据、技术参数、设计要求、工作量要求等)

SY-027

三、课程设计完成后应提交的成果

1、设计说明书

2、源程序及说明文档

3、设计日志

四、课程设计的工作进度安排

第1天:熟悉设计工具,复习与设计题目相关的数据结构知识,查阅文献资料。

第2天:确定设计方案,设计模块结构,确定各模块流程。

第3天:调试、测试

第4天:撰写课程设计报告

第5天:设计演示

五、主要参考资料

[1] 作者:邓忠良《网络安全秘技》电脑报电子音像出版社

[2] 作者:夏添《黑客攻防实战技术完全手册 [专著] : 扫描、嗅探、入侵与防御》人民邮电出版社

[3] 作者:刘辉《黑客攻防轻松入门》电脑报电子音像出版社

[4] 作者:仇建平《网络安全与信息保障》清华大学出版社

[5] 作者:刘前《计算机网络技术》国防工业出版社

[6] 作者:石勇《计算机网络安全教程》清华大学出版社

[7] 作者:贺思德《计算机网络信息安全与应用》清华大学出版社

[8] 作者:陕华《计算机网络技术实用教程》清华大学出版社

[9] 作者:雷建军《计算机网络实用技术》中国水利水电出版社

[10] 作者:于锋《计算机网络技术基础》中国电力出版社

六、备注

指导教师签字:

年月日教研室主任签字:

年月日

前言 (1)

一、嗅探器基础知识 (6)

二、嗅探器是如何工作的 (6)

三、反嗅探技术 (10)

四、ping 方法 (10)

五、本机嗅探程序的检测 (10)

六、Ethereal 抓包、封包內容分析 (12)

七、总结与感悟 (24)

八、参考文献 (25)

前言

从事网络安全的技术人员和相当一部分准黑客(指那些使用现成的黑客软件进行攻击而不是根据需要去自己编写代码的人)都一定不会对网络嗅探器(sniffer)感到陌生,网络嗅探器无论是在网络安全还是在黑客攻击方面均扮演了很重要的角色。通过使用网络嗅探器可以把网卡设置于混杂模式,并可实现对网络上传输的数据包的捕获与分析。此分析结果可供网络安全分析之用,但如为黑客所利用也可以为其发动进一步的攻击提供有价值的信息。可见,嗅探器实际是一把双刃剑。虽然网络嗅探器技术被黑客利用后会对网络安全构成一定的威胁,但嗅探器本身的危害并不是很大,主要是用来为其他黑客软件提供网络情报,真正的攻击主要是由其他黑软来完成的。而在网络安全方面,网络嗅探手段可以有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的。权衡利弊,有必要对网络嗅探器的实现原理进行介绍。

1.嗅探- 嗅探器的基础知识

什么是嗅探器?

嗅探器的英文写法是Sniff,可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生的众多的信息。简单一点解释:一部电话的窃听装置, 可以用来窃听双方通话的内容,而计算机网络嗅探器则可以窃听计算机程序在网络上发送和接收到的数据。

可是,计算机直接所传送的数据,事实上是大量的二进制数据。因此, 一个网络窃听程序必须也使用特定的网络协议来分解嗅探到的数据,嗅探器也就必须能够识别出那个协议对应于这个数据片断,只有这样才能够进行正确的解码。

计算机的嗅探器比起电话窃听器,有他独特的优势:很多的计算机网络采用的是“共享媒体"。也就是说,你不必中断他的通讯,并且配置特别的线路,再安装嗅探器,你几乎可以在任何连接着的网络上直接窃听到你同一掩码范围内的计算机网络数据。我们称这种窃听方式为“基于混杂模式的嗅探”(promiscuous mode)。尽管如此,这种“共享”的技术发展的很快,慢慢转向“交换”技术,这种技术会长期内会继续使用下去,它可以实现有目的选择的收发数据。

2.嗅探- 嗅探器是如何工作的如何窃听网络上的信息

刚才说了,以太网的数据传输是基于“共享”原理的:所有的同一本地网范围内的计算机共同接收到相同的数据包。这意味着计算机直接的通讯都是透明可见的。

正是因为这样的原因,以太网卡都构造了硬件的“过滤器”这个过滤器将忽略掉一切和自己无关的网络信息。事实上是忽略掉了与自身MAC地址不符合的信息。

嗅探程序正是利用了这个特点,它主动的关闭了这个嗅探器,也就是前面提到的设置网卡“混杂模式”。因此,嗅探程序就能够接收到整个以太网内的网络数据了信息了。

什么是以太网的MAC地址MAC:Media Access Control.

由于大量的计算机在以太网内“共享“数据流,所以必须有一个统一的办法用来区分传递给不同计算机的数据流的。这种问题不会发生在拨号用户身上,因为计算机会假定一切数据都由你发动给modem然后通过电话线传送出去。可是,当你发送数据到以太网上的时候,你必须弄清楚,哪台计算机是你发送数据的对象。的确,现在有大量的双向通讯程序出现了,看上去,他们好像只会在两台机器内交换信息,可是你要明白,以太网的信息是共享的,其他用户,其实一样接收到了你发送的数据,只不过是被过滤器给忽略掉了。

MAC地址是由一组6个16进制数组成的,它存在于每一块以太网卡中。后面的章节将告诉你如何查看自己计算机的MAC地址。

如果你对网络结构不太熟悉,建议参考一下OSI 7-Layer Model,这将有助于你理解后面的东西以太网所使用的协议主要是TCP/IP,并且TCP/IP也用于其他的网络模型(比如拨号用户,他们并不是处于一个以太网环境中)。举例一下,很多的小团体计算机用户都为实现文件和打印共享,安装了“NetBEUI”因为它不是基于TCP/IP协议的,所以来自于网络的黑客一样无法得知他们的设备情况。

基于Raw协议,传输和接收都在以太网里起着支配作用。你不能直接发送一个Raw数据给以太网,你必须先做一些事情,让以太网能够理解你的意思。这有点类似于邮寄信件的方法,你

不可能直接把一封信投递出去,你必须先装信封,写地址,贴邮票,网络上的传输也是这样的。

下面给出一个简单的图示,有助于你理解数据传送的原理:

_________

/.........

/..Internet.

+-----+ +----+.............+-----+

UserA-----路由https://www.wendangku.net/doc/3418351771.html,erB

+-----+ ^ +----+.............+-----+

.........../

---------/

+------+

嗅探器

+------+

UserA IP 地址: 10.0.0.23

UserB IP 地址: 192.168.100.54

现在知道UserA要于UserB进行计算机通讯,UserA需要为10.0.0.23到192.168.100.54的通讯建立一个IP包

这个IP包在网络上传输,它必须能够穿透路由器。因此,UserA必须首先提交这个包给路由器。由每个路由器考查目地IP地址然后决定传送路径。

UserA 所知道的只是本地与路由的连接,和UserB的IP地址。UserA并不清楚网络的结构情况和路由走向。

UserA必须告诉路由预备发送的数据包的情况,以太网数据传输结构大概是这样的:

+--+--+--+--+--+--+

目标MAC

+--+--+--+--+--+--+

源MAC

+--+--+--+--+--+--+

08 00

+--+--+-----------+

. .

. IP 包 .

. .

+--+--+--+--+-----+

CRC校验

+--+--+--+--+

理解一下这个结构,UserA的计算机建立了一个包假设它由100个字节的长度(我们假设一下,20 个字节是IP信息,20个字节是TCP信息,还有60个字节为传送的数据)。现在把这个包

发给以太网,放14个字节在目地MAC地址之前,源MAC地址,还要置一个0x0800的标记,他指示出了TCP/IP栈后的数据结构。同时,也附加了4个字节用于做CRC校验(CRC校验用来检查传输数据的正确性)。

现在发送数据到网络。

所有在网内的计算机通过适配器都能够发现这个数据片,其中也包括路由适配器,嗅探器和其他一些机器。通常,适配器都具有一块芯片用来做结构比较的,检查结构中的目地MAC地址和自己的MAC地址,如果不相同,则适配器会丢弃这个结构。这个操作会由硬件来完成,所以,对于计算机内的程序来说,整个过程时毫无察觉的。

当路由器的以太网适配器发现这个结构后,它会读取网络信息,并且去掉前14个字节,跟踪4个字节。查找0x8000标记,然后对这个结构进行处理(它将根据网络状况推测出下一个最快路由节点,从而最快传送数据到预定的目标地址)。

设想,只有路由机器能够检查这个结构,并且所有其他的机器都忽略这个结构,则嗅探器无论如何也无法检测到这个结构的。

MAC地址的格式是什么?

以太网卡的MAC地址是一组48比特的数字,这48比特分为两个部分组成,前面的24比特用于表示以太网卡的寄主,后面的24比特是一组序列号,是由寄主进行支派的。这样可以担保没有任何两块网卡的MAC地址是相同的(当然可以通过特殊的方法实现)。如果出现相同的地址,将发生问题,所有这一点是非常重要的。这24比特被称之为OUI(Organizationally Unique Identi fier)。

可是,OUI的真实长度只有22比特,还有两个比特用于其他:一个比特用来校验是否是广播或者多播地址,另一个比特用来分配本地执行地址(一些网络允许管理员针对具体情况再分配M AC地址)。

举个例子,你的MAC地址在网络中表示为03 00 00 00 00 01 。第一个字节所包含的值二进制表示方法为00000011。可以看到,最后两个比特都被置为真值。他指定了一个多播模式,向所有的计算机进行广播,使用了“NetBEUI”协议(一般的,在Windows计算机的网络中,文件共享传输等是不使用TCP/IP协议的)。.

我如何得到自己计算机的MAC地址?

Win9x

Win9x自带的这个程序将告诉你答案:“winipcfg.exe”

WinNT

在命令行的状态下运行这个命令:"ipconfig /all"

它会显示出你的MAC网卡地址,下面是一个例子:

Windows 2000 IP Configuration

Host Name . . . . . . . . . . . . : bigball

Primary DNS Suffix . . . . . . . :

Node Type . . . . . . . . . . . . : Hybrid

IP Routing Enabled. . . . . . . . : No

WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :

Description . . . . . . . . . . . : Legend/D-Link DFE-530TX PCI Fast Eth ernet Adapter (Rev B)

Physical Address. . . . . . . . . : 00-50-BA-25-5D-E8

DHCP Enabled. . . . . . . . . . . : No

IP Address. . . . . . . . . . . . : 192.168.10.254

Subnet Mask . . . . . . . . . . . : 255.255.128.0

Default Gateway . . . . . . . . . : 192.168.10.3

Ethernet adapter SC12001:

Description . . . . . . . . : DEC DC21140 PCI Fast Ethernet

Linux

运行“ifconfig”。结果如下:

eth0 Link encap:Ethernet HWaddr 08:00:17:0A:36:3E

inet addr:192.0.2.161 Bcast:192.0.2.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:1137249 errors:0 dropped:0 overruns:0

TX packets:994976 errors:0 dropped:0 overruns:0

Interrupt:5 Base address:0x300

Solaris

用“arp”或者“netstat -p”命令

我如何才能知道有那些计算机和我的MAC地址直接关联?

对于WinNT和Unix机器,可以直接使用“arp -a”查看。

我能够改变我的MAC地址吗?

可以。简单的说一下:

第一种方法,你要做地址欺骗,因为MAC地址是数据包结构的一部分,因此,当你向以太网发送一个数据包的时候,你可以覆盖源始的MAC信息。

第二种方法,很多网卡允许在一定的时间内修改内部的MAC地址。

第的三种方法,你可以通过重新烧录EEPROM来实现MAC地址的修改。但是这种方法要求你必须有特定的硬件设备和适用的芯片才能修改,而且这种方法将永远的修改你的MAC地址。

3.嗅探- 反嗅探技术

我如何才能检测网内是否存在有嗅探程序?

理论上,嗅探程序是不可能被检测出来的,因为嗅探程序是一种被动的接收程序,属于被动触发的,它只会收集数据包,而不发送出任何数据,尽管如此,嗅探程序有时候还是能够被检测

出来的。

一个嗅探程序,不会发送任何数据,但是当它安装在一台正常的局域网内的计算机上的时候会产生一些数据流。举个例子,它能发出一个请求,始DNS根据IP地址进行反相序列查找。

下面一种简单的检测方法:

4.嗅探- ping 方法

很多的嗅探器程序,如果你发送一个请求给哪台有嗅探程序的机器,它将作出应答

说明:

1. 怀疑IP地址为10.0.0.1的机器装有嗅探程序,它的MAC地址确定为00-40-05-A4-79-3

2.

2. 确保机器是在这个局域网中间。

3. 现在修改MAC地址为00-40-05-A4-79-33.

4. 现在用ping命令ping这个IP地址。

5. 没有任何人能够看到发送的数据包,因为每台计算机的MAC地址无法与这个数据包中的目地MAC不符,所以,这个包应该会被丢弃。

6. 如果你看到了应答,说明这个MAC包没有被丢弃,也就是说,很有可能有嗅探器存在。

现在,这种方法已经得到了广泛的推崇和宣扬,新一代的黑客们也学会了在他们的代码中加入虚拟的MAC地址过滤器很多的计算机操作系统(比如Windows)都支持MAC过滤器(很多过虑器只检查MAC的第一个字节,这样一来,MAC地址FF-00-00-00-00-00和FF-FF-FF-FF-FF- FF就没有区别了。(广播地址消息会被所有的计算机所接收)。这种技术通常会用在交换模型的以太网中。当交换机发现一个未知的MAC地址的时候,它会执行类似“flood”的操作,把这个包发送给每个节点。

5.嗅探- 本机嗅探程序的检测

本机嗅探的程序检测方法比较简单,只要检查一下网卡是否处于混杂模式就可以了,在Linu x下,这个比较容易实现,而在Windows平台上,并没有现成的函数可供我们实现这个功能,我们来用一点小技巧:

#include

#define MAX_PACK_LEN 65535

#define MAX_HOSTNAME_LAN 255

#pragma comment (lib , "ws2_32.lib")

int main()

{

SOCKET SockRaw,Sock;

WSADATA wsaData;

int ret=0;

struct sockaddr_in sAddr,addr;

char RecvBuf[MAX_PACK_LEN];

char FAR name[MAX_HOSTNAME_LAN];

struct hostent FAR * pHostent;

char *Buf=(char *)malloc(128);

int settimeout=1000;//这里我们设置了一秒钟超时

printf("UNSniffer for Win2k v1.0nPower by BigBallnHomePage:https://www.wendangku.net/doc/3418351771.html,/l iumynEmail:liumy@https://www.wendangku.net/doc/3418351771.html,nOicq:9388920nnChecking your system ,wait a moment ple ase...n");

WSAStartup(MAKEWORD(2,2),&wsaData);

//建立一条RawSocket

SockRaw=socket(AF_INET,SOCK_RAW,IPPROTO_IP);

再建立一条UDP

Sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

memset(&sAddr,0,sizeof(sAddr));

memset(&addr,0,sizeof(addr));

sAddr.sin_family=AF_INET;

sAddr.sin_port=htons(5257);

addr.sin_family=AF_INET;

addr.sin_port=htons(5258);

//把IP地址指向本机

addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

memset(RecvBuf,0, sizeof(RecvBuf));

pHostent=malloc(sizeof(struct hostent));

gethostname(name, MAX_HOSTNAME_LAN);

pHostent=gethostbyname(name);

//取得自己的IP地址

memcpy(&sAddr.sin_addr.S_un.S_addr, pHostent->h_addr_list[0], pHostent->h_length);

free(pHostent);

//绑定一个本机的接收端口

bind(SockRaw, (struct sockaddr *)&sAddr, sizeof(sAddr));

//虚连接到本机的一个未打开的端口

connect(Sock,(struct sockaddr *)&addr,sizeof(addr));

Buf="1234567890!@#$%^&*";

//设置超时

setsockopt(SockRaw,SOL_SOCKET,SO_RCVTIMEO,(char *)settimeout,sizeof(int));

//向虚连接端口发送一个数据包

send(Sock,Buf,strlen(Buf),0);

//使用SockRaw尝试接收这个数据包

ret=recv(SockRaw,RecvBuf,sizeof(RecvBuf),0);

if(ret==SOCKET_ERROR ret==0)

printf("No found any sniffer in your system!n");

else

{

//进行ChkSum

if(Buf=="1234567890!@#$%^&*")

printf("Warning!!! Found sniffer!!!n");

}

closesocket(Sock);

closesocket(SockRaw);

free(pHostent);

free(Buf);

WSACleanup();

return 0;

6.Ethereal 抓包、封包內容分析

Ethereal软体介绍

Ethereal 封包监听器,是一套网管人员必备的超强软体。举凡在网路故障排除,监听异常封包,软体封包问题检测等等问题,甚至包含针对网路通讯协定的教育训练,都可以利用这套免费的软体来做到。

Unix 及Windows 平台封包撷取、网路分析程式- Ethereal,可以从动态的网路撷取封包,或者是由硬碟中撷取档桉来检查资料,您可以同时浏览每一个封包的撷取资料内容、检视概要及详细资讯,还有强大的过滤器语言显示、检视重建的TCP session 串流功能。

不久之前,Sniffer 和NetXRay 大概是网管人员最熟悉的封包监听软体,但Ethereal 这套免费的软体,由于採取开放原始码的方式,更新通讯协定Protocol 迅速,支援不同软体汇出的封包撷取档桉格式,目前广为世界各地专业网管使用。

很容易的可以选取撷取封包时间,主要透过图形介面来表示,清晰易懂。此外,使用过滤的功能,可以让你轻易的判别出封包种类,可以让你清楚的分析网路中各式各样流窜的封包内容。

目前支援620种不同的Protocol,还在持续增加之中。相容的封包撷取档桉格式包含:tcpdump、, NAI 的Sniffer,NetXray,Sun snoop,AIX 的iptrace,Microsoft 的Network Monitor,No vell 的LANalyzer,Cisco 的IDS iplog 等,几乎全部知名的封包撷取软体,通通都可以在这套

软体中读取检视。

执行安装过程的第一个欢迎画面

这是协议书

这是选择要安装的套件内容,一般都全选了

这是选择要在那裡建立始动捷径

start menu group=在开始->程式集->

desktop icon=桌面

quick launch icon=快速工具列

而下面file exetnsions勾勾的就是说要把那一些副档名和ethereal建立关联

选择安装的路径

也就是我之前所说的,winpcap已经寺装在一起了,所以在这裡要选择安装winpcap 3.1

开始複製档桉了……

会特别跳出winpcap的安装程式

已经安装完成

这是ethereal的软体画面了

我们开始来抓封包了,点选Capture->Options

在Interface选项裡,选择你要抓封包的网卡,我这张图裡有5张网卡,但我上网的是RTL8139,我就选择RTL8139

选好再按START

这是在抓封包的过程,可以观察得到各协定所抓到的封包数量(同时也可以看看协定比例对不对),你觉得抓得到你想要的封包时,就可以按STOP了,不过我先不按,因为这一次的教学我要找出FTP的连线密码,当然要先作ftp连线结束才再来按stop

我打开我的ftp 用户端,要连线的主机,帐号,密码都打上了,按下我的connect连线

连线成功

认证成功,伺服器回应的讯息

相关文档