基于VC++的网络扫描器设计与实现
本文正文其实是自己的毕业论文,现在搬上来有两个原因。
一是之前大学的文档都放在百度网盘上,大概去年的时候百度网盘改版搞得不太稳定,文件夹移动次数一多里边就会有一些文件丢失了,也没有很在意。但前几天看申请软著的汇编记事本代码文件怎么找都找不到,自己电脑也早就换了,放网盘不靠谱放自己电脑也不靠谱,这情况怕是现在没丢的东西以后也会丢有必要另想他法保存。
二是当时论文答辩的时候,导师问“你觉得你的扫描器对比网上现有的扫描器有什么优势”,当时回答的是“现在网上很多扫描器很多是闭源的这扫描器是开源的”----其实心里想的是“和十多年前的X-Scan比都差很远能有什么优势”----现在也还觉得功能比较差有很多问题(比如最明显的扫描时主线程卡死),但开源这事可以顺手做一下以便自我安慰当时并非随口乱说。
现在我也没有意会为什么两轮答辩导师都问我这个问题,感觉这不是给我挖坑吗。不过一辩另外一位老师问的问题当时就反应过来了,他问“代码都是你自己写的吗有没有用到现成的代码”,我首先说“肯定有用现成的代码不管怎么样你最底层都得用系统的API,现在基本是一个页面一个类底层都用了现成的代码”,然后他又问“这些类都是你自己实现的吗”,我说“是我自己实现的”。首先通过调用系统API这个没人能绕过的问题正面回答“有没有用现成代码”的问题,迫其把自己的提问修改成“这些类都是你自己实现的吗”,然后回答都是我自己实现的。在“调用系统API”和“类自己实现”中间的“类的代码是不是你自己原创的”这最关键的地方直接被没有说谎地回避掉了。其实这扫描器核心功能代码都出自李瑞民的《网络扫描技术揭密》,自己做的主要工作主要是筛选、验证、整合;一定要说代码原创的话,应该五五之间吧。但其实也不一定是老师没有注意到我回避了他的问题,和很多时候一样别人问你一个问题并不一定是要你给出真实的、正确的答案,如果你的态度、思路、应变能力能让人认可那别人也就觉得够了。
下面直接把论文贴上来,只做些格式调整内容就不做修改了。项目使用VC++6.0编译应该没问题,由于使用Socket Raw所以要以管理员身分启动。
github地址:https://github.com/PrettyUp/Scanner
摘 要
伴随互联网的不断发展,人们对互联网的依赖与日俱增,越来越多的个人信息被存放到电脑等各终端上,终端安全亟待得到保证。如果知识和习惯仍停留在无意识状态用户的信息安全将面临极大安全隐患。掌握自己电脑等终端设备的网络运行状况正如以前了解自己电脑本地的安全状况一样逐渐成为网民的必备素质。
本设计本着兼顾界面友好和功能齐备的要求,设计了一款面向普通网民的网络扫描器。该扫描器使用VC++6.0基于MFC6.0开发,运行于Windows7操作系统,具有主机扫描、端口扫描、NetBIOS扫描、SNMP扫描、弱密码扫描、嗅探器、DOS攻击、SQL注入检测和扫描报告生成等九项功能。主机扫描实现对指定IP主机是否存活进行判断,端口扫描实现对指定端口是否开放进行判断,NetBIOS扫描实现对目标主机的NetBIOS信息进行读取,SNMP扫描实现对目标主机的SNMP信息进行读取,弱密码扫描实现对系统弱用户名和密码的猜解,嗅探器实现对含指定信息的数据包进行拦截,DOS攻击能够对目标主机发起指定数量的线程连接,SQL注入能够对网页是否存在注入漏洞进行半自动地扫描,报告生成可对扫描结果以HTML等格式生成扫描报告。
关键词:网络安全 扫描器 VC++ 网络协议 扫描算法
The Design and Implementation of Network Scanner
ABSTRACT
With the continuous development of the Internet, people's dependence on the Internet is increasing day by day, more and more personal information is stored in the computer and other terminals, terminal security should be guaranteed. If knowledge and habit is still in no state of consciousness, the user's information security will face a great security risk.To master the network operation status of their own computer and other terminal equipments as before to understand tthe local security situation of their own computer has become the essential quality of netizen.
This text that is based on the requirements of friendly interface and complete functions, designs a network scanner for ordinary netizens.The scanner that based on the MFC6.0 framework uses the VC++6.0 compiler for development,it runs on the Windows7 operating system.The scanner has host scanning, port scanning, NetBIOS scan, SNMP scan, weak passwords scanning, sniffer, DoS attacks, SQL injection detection and scanning report generation and so on nine functions. The functionn of the host scan is to determine whether the specified IP host survival,the port scanning is to determine whether the specified port is opening , NetBIOS scan is to read the NetBIOS information of the target host, the SNMP scan is to read the SNMP information of target host,the Weak password scanning is to realize the guess of system's weak username and password, sniffer is to achieve the interception of data packets that contain the specified information,the DOS attacks can initiate a specified number of threads to the target host,the SQL injection can judge Whether there are loopholes in the web page by semi-automatic scan,and the report generation can make the scan results be generated in the format of HTML scan report.
Keyword: Network security; Scanner; Networking protocol; Scanning algorithm
目 录
摘 要 I
ABSTRACT II
第一章 绪论 1
1.1 设计背景 1
1.2 国内外发展现状 1
1.3 本毕业设计主要工作 2
第二章 扫描器相关概念介绍 3
2.1 开发运行环境 3
2.2 基本概念介绍 5
2.3 扫描器常用技术介绍 6
第三章 扫描器的分析与设计 9
3.1 可行性分析 9
3.2 需求分析 10
3.3 扫描器的设计 11
第四章 扫描器的实现 21
4.1 总体设计的实现 21
4.2 主机扫描选项卡 22
4.3 端口扫描选项卡 23
4.4 NetBIOS扫描选项卡 24
4.5 SNMP扫描选项卡 25
4.6 弱密码扫描选项卡 26
4.7 嗅控器选项卡 27
4.8 DOS攻击选项卡 28
4.9 注入检测选项卡 29
4.10 报告选项卡 30
第五章 扫描器测试及结果 31
5.1 主机扫描结果 31
5.2 端口扫描结果 31
5.3 NetBIOS扫描结果 32
5.4 SNMP扫描结果 32
5.5 弱密码扫描结果 33
5.6 嗅探器扫描结果 33
5.7 DOS攻击结果 34
5.8 注入检测结果 34
5.9 报告功能结果 36
第六章 总结与展望 37
参考文献 38
附录 40
致谢 46
第一章 绪论
1.1设计背景
据中国互联网网络信息中心数据,截至2015年12月中国网民数量达到6.88亿人,互联网普及率达到50.3%,较2014年新增网民3951万人提升2.4个百分点;其中城镇网民4.93亿占比71.6%,较2014年底增加网民2257万人增幅4.8%,农村网民1.95亿占比达到28.4%,较2014年底增加1694万人增幅9.5%。[1]而据中国电子商务研究中心发布的《2015年(上)中国电子商务市场数据监测报告》数据显示,中国网络零售市场交易规模占到社会消费品零售总额的11.4%,较2014年上半年的8.7%,增长31%。[2]与之相应的是,据腾讯2014年6月发布的数据,在12周内苏一省遭受的黑客攻击源就达3亿9648万次。[3]因此无论从个人感受上还是从统计数据上,毋庸置疑互联网不断从广度和深度两个维度向人们的生活渗透,而同时在这种趋势下网络安全显得格外重要起来。
2005年9月周鸿祎创立的奇虎360凭借360杀毒,以“免费+增值服务+其他”的商业模式进入市场[4],以迅雷不及掩耳之势拿下个人用户安全市场,就只结果来看,十年过后用户的系统安全意识有了很大提高用户系统环境安全也确实得到了极大改善。然而在安全防护技术升级的同时,攻击手段也从下个工具抓鸡的时代进入到专业化系统化的时代。2014年2月27日中央网络安全和信息化领导小组宣告成立[5],在表示对网络安全重视的同时也表示网络安全形势的严峻。杀毒软件的查杀清理优化功能和和仅仅掌握杀毒软件的使用已不足以应对日新月异层出不穷攻击手段,用户上网的行为习惯不能停留在毫无防范意识的状态,[6]而需要更进一步的了解网络击的知识和帮助他们了解网络攻击知识的辅助工具。Guillermo Horacio Ramirez Caceres和Yoshimi Teshigawara等人也执类似观点并为家庭用户安全防护设计了一套防护系统。[7]
1.2国内外发展现状
一般来说,网络攻击要遵循下面的5个阶段:侦察、扫描、获得访问、维持访问和擦除踪迹[8]。在扫描阶段,最常用的方法是使用ping命令探测主机是否存活,使用telnet命令去判断端口是否开放,然而效率低下是手动扫描的一大弊端。因此扫描自然而然地进入了通用扫描器阶段,这类扫描器的特点是只能扫描主机是否存活以及端口是否开放。但是这样初级的信息不够用,因此扫描器向专用扫描器的方向发展,这类扫描器的特点是追求扫描所有端口,更追求准确地定位端口的服务信息。先精后全是现代扫描器的主要发展方向。所谓先精后全,就是扫描器在一项功能做到极致后向下一向相邻功能发展直到大而全,当然在相当长一段时间内系统和web还是一条扫描器明显的分界线。
在国外,1992年Chris Klaus设计的Internet Security Scanner和1996年Renaud Derasion编写的Nessus两种扫描器基本上奠定了扫描器技术的基础,现仿的扫描器技术在此基础上没有太大发展。[9]现今Nessus和Appscan一起作为商业扫描器的优秀代表,Nmap和Metasploit框架以其开源而备受推崇,其中Nmap更偏端口扫描,Metasploit更偏向渗透攻击。
在国内,X-Scan是一个优秀的扫描器类工具软件,X-Scan V1.0版由安全焦点公司(www.xfocus.net)于2000年12月首次发布[10],啊D也是一个多年前网站渗透的必备工具[11]。伴随着安全技术的与国外接轨和国内网络安全行业的规范化,这些曾经由个人或团队开发的名盛一时的已渐渐淡出人们的视野,现今绿盟等安全公司有一些商业版本可以购买,其他一些大大小小的扫描器则散落在安全人士或黑客手中。总体而言国内扫描器缺少重量级产品。
1.3本毕业设计主要工作
针对用户需要一款扫描器,而国内扫描器沉寂国外扫描器不接地气的情况,我的目标是编写一款对普通用户友好的而功能又相对完善的具有一定电脑使用基的用户即可使用的扫描器,并藉此以自己的理解对使用到的和种扫描技术进行阐述,以供有兴趣的朋友交流学习。
本文第一章对该扫描器的开发背景进行更为详细的说明。第二章对该扫描器的开发环境、涉及的端口等概念和使用多线程等技术进行全面阐述。第三四五章分别就扫描器的主体及其九大功能的界面设计、编程实现和测试结果进行系统介绍。第六章是本次毕业设计的总结与展望。
第二章 扫描器相关概念介绍
2.1开发运行环境
2.1.1Windows操作系统
1980年微软以5万美元的价格从西雅图电脑产品公司买断了QDOS,在稍加修改之后改名MS-DOS授权IBM使用,其中一个细节是每出售一台机器微软按比例抽成而非买断使用。在操作系统简易繁多和以硬件为主的时代急于抢夺苹果PC市场的IBM并没有太多在意用谁的操作系统以及怎么合作,而当其后知后觉弱小的微软公司竞然在合作时敢和自己平起平坐的时候,脚踏多只船授权多家公司使用MS-DOS的微软公司确实已不是自己可以任意揉捏的软柿子。其实微软很多成功的产品都是收购来的,包括PowerPoint(1987)、SQL Server(1994)都是收购来的,可以说微软才真的是收购的行家。[12]
刚兴起的微软聪明地没有妄自尊大地与市场前辈们正面冲突,一方面使用Xenix联手SCO搅乱UNIX竞争格局,另一方面通过同意共同开发OS/2安抚意见很大的IBM公司,假装仍旧依赖MS-DOS推出“如同玩具”的Windows1.0等版本示弱于苹果公司,避开漩涡中心在旁煽风点火为自己节省最大的精力和争取更多的研发时间,这些应对手段显示出了盖茨和微软极大的运营智慧。
1990年推出的Windows3.0获得了极好的市场反应,微软从此进入良性发展的快车道1995年推出的Windows95更是一举奠定其PC操系统不可撼动的霸主地位。时至今日Windows仍然占据90%以上的桌面市场。回首看来,恰当的合纵联横、富有远见的投资是Windows成功的外在条件,而友好的用户界面、强大的office办公软件和配套的VC++等开发工具是其成功的内在因素。一款成功的商品往往是营销和品质完美结合的产物,虽然微软在竞争中的手段有些投机乃至卑劣,但不能否认Windows是相当成功和强大的产品。或者我们还要应当承认,商场也是一个成王败寇的世界,多年以后人们只会津津乐道有一个公司叫Microsoft它有个系统叫Windows,而失败的对手们只留在了历史文献里。
图2.1 Windows主要版本及发行年份
2.1.2VC++和MFC
Microsoft Visual C++是微软公司1992年开始推出的可视化的C++集成开发环境,以及界面友好功能完善而深受用户喜爱。从7.0版本开始VC++逐渐被整合到Visual Studio,但是1998年发行VC++6.0以其功能齐全、小巧和参考资料多而问题占有很大一部分市场。
在我看来MFC(Microsoft Foundation Classes,微软基础类库)是VC++相较其他编译器最大的竞争优势。首先MFC是对Windows API的封装,借助MFC用户可以从面向过程编程进入到面向对象编程。其次MFC不单是一个类库而且是一个开发框架,一是指代码上很多重复性的代码、工作不用再编写、组织,而只需要生成对应的类调用其中的方法即可;二是指MFC将程序员从传统的switch-case中解放出来,简化了Active X 控件的开发,其结构框架使得 Windows对象,如窗口、对话框及控件变得如同C++中的对象一样操作[13]。当然MFC的设计给使用者带来方便的同时也给很多初学都带来了理解上的困难,比如找不到Main函数所以不清楚程序庞杂的函数的执行顺序、不用编写控制逻辑所以难以理解如何调用对应的消息响应函数、通过窗口添加不明白变量和对话框如何对应等等。所以MFC简化了好多工作确实使人容易上手,而但如果要想要熟练运用,理解MFC程序的代码组织结构其实和C++是一样的这部分工作还是要用不少的时间去补回来的。
图2-2 VC++和MFC等的调用关系图
2.1.3扫描器开发运行环境
本扫描器在使用VC++6.0编译器基于MFC6.0在Windows7 32位操作系统上开发而成,经测试,当dll文件齐全时可以在Windows XP和Windows 7上运行。
2.2基本概念介绍
2.2.1网络安全
网络安全是指网络系统的硬件系统、软件系统及其系统中涉及的数据因受到预设的保护,而可以连续、可靠、正常地运行,并不因偶然事故或恶意处理而遭受破坏、非法更改、信息泄漏。网络安全从其本质上来讲就是网络上的信息安全和服务安全,从广义来说,凡是涉及网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。[14]
2.2.2网络安全问题的根源
网络安全根源主要源于以下四点:①黑客的恶击,②TCP/IP协议缺少认证和加密机制,③网络基于协议连接无须面对面的开放性,④用户端安全意识不强或防护措施不到位。我们看到从攻击源到链路到被攻击端都存在着威胁,共同构成了网络安全问题的根源。
2.2.3端口和服务
所谓端口就是计算机操作系统的一种软件式的编号,使用2 个字节16位表示范围从1(20)到65535(216)。所有计算机的内外交流都要经过端口,当然要明白的是端口只是一个数字编号,本身不能处理任何信息,计算机的内外交流最终要依靠服务。所谓服务就是软件通过端口对外提供的网络交互功能。服务要经过端口才能对外服务,而大多数服务只合用一个特定端口所以有时端口和服务可以互相指代。
2.2.4网络协议
上述的端口就是传输层的众多值里的一个值而已,所以更准确的说法应该是软件通过协议对外提供服务,至于人们平时更多的说端口,是因为端口是普通程序员和普通用户最常控制的变量。对于计算机专业接受高等教育的人总会听说七层开放互联参考模型(OSI),而TCP/IP协议是事实的工业标准,对于为什么即然TCP/IP成了标准还要一直说OSI是因为,我们前面说TCP/IP协议没有认证和加密机制是造成网络安全威胁的一大原因,而OSI模型的会话层和表示层是解决这两大问题的一个不错的设计方案。网络协议和“层”表现形式到底是什么?我们可以把数据包想成是一个数组,比如packet[1024],packet[0]到packet[13]和packet[1020]到packet[1023]是网络接口层,packet[14]到packet[23]是网络层,packet[24]到packet[43]是传输层其中packet[24]和packet[25]的值就是所指的端口,packet[44]到packet[1019]就是应用层数据,如果要加入会话层和表示层再从packet[44]之后划出若干位来表示就好了。服务通常与应用层协议一一对应,所以协议和服务有时也可以互相指代。
2.2.5网络扫描
端口扫描是指向目标主机的 TCP/IP服务端口发送探测数据包,并记录目标主机的响应,通过分析响应来判断服务端口是打开还是关闭, 进而得知端口的状态。[15]进一步而言,网络扫描就是构造符合某项协议的包,依据目标计算机的返回的数据包的内容,对目标计算机协议对应的服务是否启开及服务版本等各种信息的进行判断的行为。
2.2.6网络扫描编程和网络编程的区别
网络扫描纺程和一般的网络编程的区别是,首先一般的网络编程通常是服务端和客户端一起编写,而网络扫描通常只是编写客户端其目标服务是既有的服务端程序;其次一般的网络编程通常只会使用一种应用层协议,而由于扫描器的目标是这些各不相同的服务,所以就得使用众多不同的应用层协议,在编程上就是你要构造和处理更多不同的数据包,所以一般来说网络扫描编程较一般的络编程要复杂不少。
2.2.7网络扫描器和安全卫士的区别
病毒木马查杀、垃圾数据清理和开机加速是传统安全卫士的三大核心功能,我们注意到的特点是,这些功能的实现主要是读写本地磁盘文件来实现不需要通过网络;去看附加的沙箱,桌面整理也大都如此。而我们反观网络扫描器,从其简单的主机存活扫描、端口开发扫描开始多是要使用协议构造数据包去探测的。当然他们会有交集,由于大面全的发展方向他们的交集会越来越大,当然你要问那按这说法他们最终会合并那会兼并谁?我觉得这问题和防火墙和入侵检测系谁会兼并谁一样难说,当然也许这也没那么最要,就比如现在的手机基本实现了对MP3、MP4的吞并又正在蚕食照相机市场,我们只知道我们大大方便了其他谁吞并谁哪用管那么多呢,等哪天吞并完了我们再去给个盖棺定论就完了。当然非说看法那还是在普通用户市场上,安全卫士吞并扫描器的可能性大,扫描器可能只会以插件的形势存在字全卫士中,因为比如一个360安全卫士其技术复杂性比一个普通扫描器要难得多,二是安全办公卫士已存在用户市场多年而网络扫描器对很多用户是个新鲜事物。
2.3扫描器常用技术介绍
2.3.1网络编程
对面向联接的即在传输层使用TCP协议的也就是在packet[24]到packet[43]按TCP协议的格式填充内容的网络编程,其有比较因定的模式,对于服务端一般是sock->bind->listen->accept->receive->send;对于相应的客户端则是sock->connect->send->receive。对于面向无连接的即在传输层使用UDP协议的也就是在UDP对应的数组位置按UDP填充内容的网络编程,服务端一般是sock->bind->receivefrom->sendto;对应的客户端是sock->bind->sendto->receivefrom 。网络程一般使用socket套接字,一般只需要设置IP地址和端口就好了,其他采用默认值。扫描器要模拟各类客户端所以经常用至上述的客户端编程模式,但也有不少扫描功能要从头到尾一一写packet数组,当然是通过关部结构去与数组对应而不是一个字节一个字节地去赋值。
2.3.2特征库
我孙说扫描器通过构造与服务端相应的协议的数据包去与服务端交流,那扫描器是怎么得出对服务端的状态的扫描结论的,这就依赖特征库。特征库是指一种通过捕获网络数据样本,横向比较网络数据包,提取能表征该协议的特征串,并将其按照一定的语法写成的文件。[16]更通俗而言特征库就是你设定的某种状态的充要条件,比如返回的TTL值为255就等价目标系统是UNIX操作系统等等,当然如果你设定的特征库出错,那么你的扫描结果也就可能出错。所以可以说特征库的准确与否是一个扫描器好坏的重要体现。当然还要提醒一句特征库可以以数据库形式保存,而且随着特征库的扩大和可扩展性可维护性要求的提高存放于数据库也是一种趋势,但完全也可以以其他形式保存随编程者的意愿。
2.3.3多线程技术
进程就是一个运行起来的软件,进程是计算机资源分配的最小单位;线程就是进程中的进程,线程是计算机资源使用的最小单位;当一个进程不启用多线程时就只存在线程,那么这个主线程就是进程;当启用多线程时所有启的的线程的总和才是这个进程。单线程的缺点是如果主线程正在为一个任务忙碌那么进程就不能进行另外的任务了,比如如果你家如果只有你一个人,如果你你在去买菜那么家里电话响了因没人接了,如果家里多一个人那这问题就解决了。多线程正是这个思路,多线程常被用来降低程序的运行时间。[17]当然多线程也不是完美无缺在同步和参数传递两方面比线程麻烦。在本扫描器上,主机存活扫描和端口扫描等多处使用了多线程技术。
2.3.4非顺序扫描
使用从小到大的增序扫描,很容易被防火墙和入侵检测统判断出来而阻止为了可以不修改防火墙或入侵检测系的策略,我们可以设法消除增序的特征。首先的方法是与增序相反的逆序扫描,当然这种改进显然是有限的。第二个方法是随机重排,就是先将要扫描的端口放入数组,然后产生一个随机数来进行交换。这是一种可行的算法。但对多线程扫描而言有一种更为巧妙的处理方法,就是在每个线程创建之后挂起一个随机时间,这样既解决了增序的问题又不用进行重排处理。
2.3.4INI文件和注册表
INI文件是Windows3.x的配置的存储方式,文件内常以不同段名分类配置,段下是配置的键值对。INI文件的的读写主要由GetprivateProfileString、GetprivateProfileInt和WritePrivateProfileString三个函数完成。INI文件存在散乱和容易被编缉等弱点,为此微软从Windows95开始引入了注册表这小型数据库,注册表主要通过RegCreateKeyEx、RegOpenKeyEx、RegQueryValueEx、RegSetValue和RegDeleteKey等函数进行操作。注册表键对应INI文件的段,子键和值对应INI文件的键值,不过注册表下的子键可以是子键,但就存储方式读写等操作来说都没多大差别。在我们设计的扫描器中为了简便和不会因失误而破坏到注册表我们使用了INI文件的配置方式。
2.3.5CTreeCtrl和CListCtrl
CTreeCtrl是MFC的树型控件,通过InsertItem函数插入节点。CListCtrl是MFC的列表控件,通过InsertColumn函数插入列,通过InsertItem函数插入行。在我们的扫描器中,对于结果需要分类的功能我们使用CTreeCtrl控件,对于同类型而有多项内容的功能我们使用CListCtrl控件进行展示。当然要提醒的是这3个数都是重载的,不只一个样式。
第三章 扫描器的分析与设计
3.1可行性分析
并非任何问题都有简单明显的解决办法,事实上,许多问题不可能在预定的系统规模或时间期限之内解决。如果问题没有可行的解,那么花费在这项工程上的任何时音、人力、软硬件资源和经费,都是无谓的浪费。[18]下面我将从技术、经济和操作三方面对本设计进行可行性分析。
3.1.1技术可行性分析
在前面章节中提到,我们提到本设计的目是设计出一个面向普通用户的扫描器。面向普通用户的扫描器,其要点有二,一是功能要完善,常用的功能也都要有,如果没什么功能这样的设计是没什么意义的;二是要界面要友好,需要手动配置的参数不能过多功能不要隐藏太深,让用户感觉十分复杂。
首先对第一点要求,本设计为扫描器设计了主机扫描等常用的九项功能,应该来说完全能够满足通用户的需求。在技术上X-Scan等扫描器都有实现类似功能所以说明在技术上是没有什么问题的。具体到个人而言,自己较为系统地学习过网络协议同时也有相应的网络编程和网站开发经验,再加上参考资料和老师指导,技术上可以实现。
对于第二点本设计采用了模块化的设计,每一个功能都分为一个模块不相关功能不参入,满足高内聚低耦合原则,然后同一功能所有参数都直接在摆到界面上。对此在技术上,设计为了基于对话框的技术,然后在MFC中提供了一个CTabCtrl类,该类是一个选项卡功能的类,这样我们使用它就能将各功能模块以一个选项卡的形式组织起来。满足界面直观友好的要求。
3.1.2经济可行性分析
在开发环境准备上,计算机设备、操作系统和编译器是原来就准备好的,不用专门支出,对从事软件行业的其他人也是如此。在开发过程中,我们只是要自己编写一个软件,所以除了个人的时间外并不需要投入其他成本,这段时间本来就是为毕业设计准备的,所以不成问题。在后期上,虽然没有赢利但是也没有后续的投入。所以最终结论是此扫描器的开发在经济上可行。
3.1.3操作可行性分析
在设计上我们采用了模块化的方式并用选项卡组织对用户友好,在技术上程序是Windows平台最为流行的基于MFC框架的基于对话框的程序,对有稍徽有计算机使用经验的人都不会感觉到陌生。对于一些错误的操作,比如嗅探器启动时没有关键字等,也设计了友善的提醒。所以在操作上也是可行的。
3.2需求分析
根据对对安全形式的观察判断,结合用户的普遍需求,本文设计的扫描器具有以下九大模块:主机扫描模块、端口扫描模块、NetBIOS扫描模块、SNMP扫描模块、弱密码扫描模块、嗅探器模块、DoS攻击模块、注入检测模块和报告生成塻块。对应的层次图如图3-1所示,对应的界面如图3-2所示。
3.3扫描器的设计
3.3.1扫描器总体设计
主机扫描功能主要是通过向目标IP发送手动构造ICMP包,如果收到目标IP的数据包则判断IP对应的主机已经开启。其流程图如图3-1所示。
3.3.2端口扫描的设计
端口扫描功能主要是实现向目标IP指定的口范围内的端口逐个进行扫描,依据返加结果列出打开的端口,并指出这些开放的口一般对应的服务。其流程图如图3-2所示。
3.3.3NetBIOS扫描的设计
NetBIOS扫描功能实现使用使用NetBIOS协议对目标IP进行扫描读取远端主机的时间、共享目录、组列表、本地组、操作系统类型、所支持服务、用户名列表、会话及TCP连接等NetBIOS信息。另外我们还整合主机名和MAC地址读取功能。其流程图如图3-3所示。
3.3.4SNMP扫描的设计
SNMP扫描功能实现完成对支持SNMP(Simple Network Management Protocol,简单网络管理协议)的网络软硬件的信息的读取。其流程图如图3-4所示。
3.3.5弱密码扫描的设计
弱密码扫描实现实现对目标IP用户名和密码扫描,用户名支持指定和遍历文件两种模式,密码支持暴力破解和遍历文件两种模式。其流程图如图3-5所示。
![](https://img2018.cnblogs.com/blog/1116722/201904/1116722-20190413112113095-1226087080.png)
3.3.6嗅探器设计
嗅探器功能实现对存在指定监测关键字的收发的数据包进行监视,截取用户感兴趣的信息。其流程图如图3-6所示。
3.3.7DoS攻击设计
本选项卡实现启动指定的线侱数对指定的IP指定的端口不断进行接,消耗目标机器的资源。其流程图如图3-7所示。
3.3.8注入检测设计
注入检测实现对使用post方式的提交表单的页面进行SQL注入检测。不过URL和参数及注入成功都要用户自己输入,多只算半自动扫描,做不做像sqlmap那样的自动扫描。其流程图如图3-8所示。
3.3.9报告生成设计
报告生成功能实现对允许选择前边提供的任意多种扫描功能并将他的的扫描结果以报告文件的形式给出。其程序流程图如图3-9所示。
3.3.10扫描器的总体设计
总体设计要组织安排好各子模块;结合界面友好的要求功能要一目了然,此我们选择了选项卡模式。共程序流程图如图3-10所示。
第四章 扫描器的实现
4.1总体设计的实现
4.1.1逻辑设计
CTabCtrl是MFC的选项卡控件,通过InsertItem(index,lpstr)成员函数插入选项卡,然后通过对话框类的Create(DIALOGID)成员函数创建各选项卡,之后是通过对话框类的MoveWindow(CRect)成员函数将窗口移至CTabCtrl的客户区域,是后设置CTabCtrl的SelectChange事件监听代码将与选项卡对应的对话框设置ShowWindow(true)其他对话框设置ShowWindow(false)。
本文设计的扫描器就是在主对话框(ScannerDlg)上放置一个CTabCtrl控件(m_TabMain),然后下置9大选项卡,依次是:主机扫描(m_HostScanTab)、端口扫描(m_PortScanTab)、NetBIOS扫描(m_NetBIOSScanTa)、SNMP扫描(m_SNMPScan)、弱密码扫描(m_WeakKeyScanTab)、嗅探器(m_SnifferScanTab)、DOS攻击(m_DOSScanTab)、注入检测(m_SQLScanTab)以及告(m_AllScanTab)。各选项卡具体设计将在下边依次介绍。总体设计图如下所示:
4.2主机扫描选项卡
4.2.1原始套接字和管道技术
原始套接字:在声明socket时在协议参数有3个可选项,依次是SOCK_STREAM、SOCK_DGRAM和SOCK_RAW,分别表示TCP连接方式、UDP连接方式和原始套接字方式,前两种不用也不能自己构造IP和TCP头部,SOCK_RAW可以选则自己手动构造IP及更上层协议的头部。本项功能就是使用原始套接字方式,手动构造IP头和ICMP头再加上一个字符串组成ICMP包向目标主机发送。
管道技术:管道技术就是让一个程序的输出通过管道能让其成为令一个程序的输入的技术。大体而言就是使用CreatePipe函数创建管道并同时指定读写句柄,然后上游程序使用WriteFile函数和写句柄向管道写入内容,下游程序通过ReadFile函数和读句柄从管道读出内容。
4.2.2逻辑设计
首先检测主机存活又有管道技术完全是可以使用Windows自带的ping命令,但是ping命令一是不能一次对多个IP进行;二是ping命令中每个ICMP请求包发送间隔有1000毫秒而正常来说请求和响应的往返时间才几十毫秒对我们的扫描工具来说效率有些低下。为此我们选择了自编检测工具,并改变了扫描算法。
我们选择了发送ICMP请求和处理接收到的各用一个线程的方式;在点击开始按钮后,直接将要扫描的IP地址插入到CListCtrl控件上,然后启动一个接收线程并使用WSAictol函数将网卡设置为混杂模式如果接收目标IP发送来的包就将对应的IP的状态标为“通”自始至终没有的不处理,再然后启用一个线程对要扫描的IP地址逐个发送手动构造的ICMP请求包。
发送和接收不使用同一线程及将网卡设置为混杂模式是两点算法上的设计。对于前者,一方面一般的ping命令的处理方法是:发送探测数据包在下来几秒内如果接收到应答则显示相关数据没有应答则显示超时发送下一个探测包。这其中有一个等待时间其要远长于纯粹的发送和接收数据包的时间,这在对单个IP的探测而言是没有问题的,而扫描器常用于一次探测多个IP,仍采用一样的算法总的等待时间将显得非常长,所以本设计中将接收和发送两项式作分给两个线程,“避开”等待时间;另一方面只要接收到目标主机发送的任意数据包而不一定要ICMP应答包即可判断目标主机是开启的,如果使用同一线程在其启动前关闭后或发送探测包时都有可能有目标主机发送的数据包传来而引时线程不能处理,所以分开两个线程提高了扫描的准确性。将网卡设置为混杂模式也是出于只要接收到数据包而不一要是ICMP应答包即可判断主机存活的原理。
4.3端口扫描选项卡
4.3.1逻辑设计
鉴于端口数较多,为了追求最快的扫描速度,对每一个IP的每一个端口我们都启动了一个线程创建一个CSocket使用成员函数Connect扫描。如果返回值是true示端口开放反之未开放;对于的开放端口,如果小于1024则使用getservbyport函数获取对应的服务名称,如果不是熟知端口,则到到自己设置的口服务对应库中查询,实在没有的服务名赋空值。最后将扫描的IP插入CTreeCtrl中,并将IP开放的端口插入其下。
4.4NetBIOS扫描选项卡
4.4.1NetBIOS协议
NetBIOS(NETWORK BASIC INPUT/OUTPUT SYSTEM)网络基本输入/输出系统,是一种用于计算机之间进行通信的专用程序,是计算机网络通信中的重要协议之一。它支持TCP/IP、MAP/TOP、IEEE和OSI等协议,而且NetBIOS正迅速成为不同操作系统环境下普遍使用的编程平台。NetBIOS基本概念包括NetBIOS名字、NetBIOS命令、NetBIOS通信方式等。[19]
4.4.2逻辑设计
对于主机名读取通过struct HOSTENT *gethostbyaddr(char *addr,int len,int type)函数实现,IP放于addr参数中。
对于MAC地址读取通过DWORD SendARP(UINT DestIp,UINT SrcIP,PULONG pMacAddr,PULONG OhyAddrLen)函数实现,其中读取到的MAC地址放于pMacAddr。
读取时间使用NET_API_STATUS NetRemoteTOD(LPCWSTR UncServerName, LPBYTE *BufferPtr)函数实现,其中的要点是主机名放入UncServerName,返回的时间存于BufferPtr。
读取共享目录使用NET_API_STATUS NetShareEnum(LPWSTR servername, DWORD level,*bufprt,DWORD prefmaxlen,LPDWORD entriesread,LPDWORD totalentries,LPWDORD resume_handle)函数实现。其要点是IP放于servername共享目录数返回于totalentries,共享目录返回于bufptr。
读取组列表通过NET_API_STATUS NetGrounpEnum(LPCWSTR servername, DWORD level,LPBYTE *bufptr,DWORD prefmaxlen,LPDWORD entriesread, LPWORD totalentries,PDWORD_PTR resume_handle)函数实现。其要点与读取共享目录相同。
读取操作系统类型通过NET_API_STATUS NetServerGetInfo(LPSTR strIP,PBYTE *server)函数实现。其要点是目标IP放于数strIP中,返回的系统消息在server数中。
读取所支持服务通过NET_API_STATUS NetRemoteComputerSupports(
LPCWSTR UncServerName,DWORD OptionsWanted,LPDWORD optionsSupported)函数实现。其要点是目标IP放于参数uncServerName中,需要检测的服务放于参数optionsWanted中,支持的服务返中于参数optionsSupported中;optionsWanted和optionsSupported都是32位长,每种服务占用其一位表示。
读取用户名列表通过NET_API_STATUS NetUserEnum(LPCWSTR serverName, DWORD level,DWORD filter,LPBYTE *bufptr,DWORD prefmaxlen,LPDWORD enteriesRead,LPDWORD totalEntries,LPDWORD resumeHandle)函数实现。其要点与读取共享目录相同。
读取用户会话通过NET_API_STATUS NetSessionEnum(LPWSTR servername, LPWSTR UncClientName,LPWSTR username,DWORD level,LPBYTE *bufptr,DWORD prefmaxlen,LPDWORD entriesread,LPDWORD resume_handle)函数实现。其要点是目标IP放于servername参数中,会话数返回于entriesread中,UncClientName指明回的会话类型,username指明返回会话的用户。
读取TCP连接通过NET_API_STATUS NetShareEnum(LPWSTR servername, DWORD level,*bufprt,DWORD prefmaxlen,LPDWORD entriesread,LPDWORD totalentries,LPWDORD resume_handle)函数实现,其要点与读取共讯止录相同。
4.5SNMP扫描选项卡
4.5.1MIB和OID
MIB(Management Information Base,管理信息库)是以树状目录形式保存软硬件设备的网络设备信息库,其分枝节点用于软硬件的分门别类,叶子结点代表一个具体的软硬件设备因此又称“MIB对象”或“MIB变量”。
到此我们可以想到要访问某个值只要使用“全路径”方式去访问对应的叶子结点就可以了,但是这种字符串定位的方式不能很好地表示出两个节点间的相对位置。所以在ASN.1中为每个节点都分配了一个数值表示,叶子结点癸路径名称对应的数值串就是一个叶子结点的OID(Object Idetity).在本文设计的扫描器中,正时通过OID值去读取对相的设备的值。
4.5.2逻辑设计
本项功能的要点是先通过LPSNMP_MGR_SESSION SnmpMgrOpen(LPSTR lpAgentAddress,LPSTR lpAgentCommunity,INT nTimeOut,INT nRetries)函数与远端主机完成连接,目标IP存于lpAgentAddress参数中。然后通过SNMPAPI SnmpMgrRequest(LPSNMP_MGR_SESSION session,BYTE requestType, RFC1157VarBindList *variableBindList,AsnInteger *errorStatus, AsnInteger *errorIndex)实现值的读取,其中要读取的叶子结点的OID值和返回的叶子结点的值都在variableBindList变量中。
图4-5 SNMP扫描逻辑图
4.6弱密码扫描选项卡
4.6.1IPC$命名管道和WNetAddConnectiong2函数
命名管道是管道技术的特列,普通管道只能用于父子或兄弟进和之间的通信,命名管道可以突破这种限制,只要知道管道名称和用户名密码,即使不同主机上的两个进程也可以通过命名管道进行通信。
IPC$(Internet Process Connection)是微软为了方便对远程计算机的访问而在Windows NT上引入的命名管道,如果能提供远程主机上存在的用户名和密码那么就可以IPC$即可连接成功。WNetAddConnection2正是构建连接的数,对于我们的扫描器而言则是可以通过WNetAddConnection2函数建立连接成功与否来判断目标主机是否存在所使尝试的用户名密码组合。
4.6.2逻辑设计
由于用户名和密码各支持两种式,所以要设置两层判断,在外层先判断用户模式在里层判断密码模式后调用不同的处理方法。存方用户名和密码的文件都使用dic格式每行一个值,使用CstdioFile类打开,其readLines成员函数可以实现按行读取。
虽然说有四个不同处理函数但其要点都是一至的,就是构造好一组要进行测试的用户名密码,使用DWORD WNetAddConnection2(LPNETRESOURCE lpNetResource,LPCTSTR lpPassword,LPCTSTR lpUsername,DWORD dwFlags)函数尝试连接,如果返回值是EROR_SUCCESS(即true)则用户名密码可用。其中目标IP放于lpNetResource参数,用户名放于lpUsername参数,密码放于lpPassword参数。
4.7嗅控器选项卡
4.7.1逻辑设计
在点击开始按钮后,由于电脑可能有多块网卡所以先弹出网卡选择的模态对话框,行·锭择之后为不让程序出现卡顿状态使用AfxBeginThread函数启用一个线程去处理。在这个线程中先用socket函数创建一个原始套接字类型的socket,然后设置绑定到的本地的IP和端口,之后瑞使用WSAIoctl函数设置为接收所有收发的包,再然后将recvfrom到的每个包放入recvBuf中,历recvBuf将每个字节变为大写放到strTemp,最后使用CString类的Find成员函数查找包中是否包含监测的关键字(也要转为大写),如果有则在CTreelist控件中呈现该数据包如果没有则处理下一个数据包。
在处理中我们将内容和关键字都变为大写再匹配,是因为每个程序员编写时大小写习惯可能不同,比如“密码”有人写password有人写Password还有人可能写PassWord,而显然如果我们想监测“密码”那么有这些关键字数据包都是我们感兴趣的,当然你也可以都加入监测而不用大写处理但是这样不蛱一个优先选择的处理方法。
4.8DOS攻击选项卡
4.8.1拒绝服务攻击
拒绝服务攻击是通过网络使用某种方法使目标机器的CPU、内存等资源耗尽而不能提供正常服务的行为。我们首先要明白的是拒绝服务攻击并不会对受攻击机器造成硬件、软件或数据的任何损坏,甚至可以认为是损失最小技术含量最低的攻击行为。
拒绝服务攻击首先可以划分为分布式拒绝服务和普通拒绝服务,前者借用多台机器对目标机器进行拒绝服务攻击后者使用本机对目标机进行拒绝服务。然后按照使用三次握手不同组合等请求连接方式的不同又可以细分为多种。本文设计的扫描器只是实现最原始的不断建立三次握手连接。
4.8.2逻辑设计
使用for循环和AfxbeginThread函数建立指定的线程数,在每个线程中创建使用socket函数建立TCP类型的socket,并在while中每隔100毫秒对目标IP进行一次connect请求。
4.9注入检测选项卡
4.9.1SQL注入
SQL注入是一种通过操纵输入而改变后台SQL语句的攻击技术。攻击都可以直接触及数据库,所以这也是为什么将SQL称为最具威胁性的攻击的原因。SQL注入在OWASP TOP10上长期占据第一的位置。[20]在开始的时候SQL注入没被发现或者应该说没被重视,因为在B/S架构兴起之前,使用的都是C/S结构,虽然说通过拦截客戾端和服务器的通信数据包还是可以实现注入检测,但是基于每个软件的实现的功能是不一样的,即便是相同的功能实现的方式也多是不一样的,所以说手动检测注入是可能的,对一个软件的某个版本编写一个扫描器也是可能的,但是面对大量的设计不一致要编写一个通用的注入扫描基本是不可能的。而在B/S兴起的初期网页都是静态的HTML页面,注入检测也无用武之地。
在B/S架构使用统一的80端口,统一通过URL提交所有的用户输入,服务器统一处理而后统一返回处理结果和web2.0数据库引入两个条件满足后,SQL注入攻击手段才兴起,在新世纪初SQL注入方式由于相对统一的URL方式使得注入检测相对简单,SQL没有过滤所以屡试不爽。不过在表单多改为post方式提交再加上SQL过滤技术成熟之后SQL注入扫描器编写难度大大提升,这也是我们计的扫描器只能实现半自动甚至说手动的原因。
4.9.2逻辑设计
起动一个线程,创建一个TCP类型的socket,然后将UEL和参数按http格格式養到一个CString类型的变量中使用send函数发送出去,然后使用recv函数据收返回的应答,如果应答数据包中找到用户设定的关键词便提示存在漏洞。要注意的是参数记得要进行URL编码,就是“’”要用“%27”代替,空格要用“%20”代替等等。
4.10报告选项卡
4.10.1逻辑设计
本文设计的扫描器报告选项卡将前边的九大功能以复选框的形式给出,如果选择执行那么就使用PostMessage函数依次给前边各选项卡发送开始按钮按下的消息,报告通过取选项卡在CTreeCtrl和CListCtrl等控件上的结果生成。因为如果是在各选项卡中添加是不是报告模式,如果不是则结果显示到控件上,而如果是则写入到报告文件上的话,那这基本是一倍的代码量。
第五章 扫描器测试及结果
5.1主机扫描结果
在主机扫描功能中选择103.51.144.90-93这个范围进行测试,结果显示90和92两台主机处在存活状态。其中90主机是百度的CDN。
图5-1 主机扫描测试结果图
5.2端口扫描结果
在端口功能中仍选择有103.51.144.90主机扫描结果显示开放了80端口,这与其百度CDN的身份是相符的。
图5-2 端口扫描测试结果图
5.3NetBIOS扫描结果
在NetBIOS中我们选择192.168.50.135主机作为目标,该主机是我使用VMware搭建的Windows 7虚拟机。结果信息与实际信息相一致。
图5-3 NetBIOS扫描测试结果图
5.4SNMP扫描结果
在SNMP扫描中我们仍采用192.168.80.135虚拟机进行测试。在与NetBIOS相重的用户列表上,用户名是相一致的所以两都可以相互印证对方的正确性。
图5-4 SNMP扫描测试结果图
5.5弱密码扫描结果
在本项功能我们目标主机仍是192.168.80.135虚拟机,用户名手动输入,密码采用密码文件。本项功能同时证明NetBIOS和SNMP两项功能扫描出来的“web”用户确实存在。
图5-5 弱密码扫描测试结果图
5.6嗅探器扫描结果
本项功能我们对“http”和“ip”两个关键字进行监听,结果成功拦截到了数据包。
图5-6 嗅探器测试结果图
5.7DOS攻击结果
在本项功能的测试中我们启动1000个线程对192.168.80.135进行了连接。
图5-7 DOS攻击测试结果图
5.8注入检测结果
在注入检测中,为了进行测试我们在本地使用PHP和Apache搭建了一个简易测试网站。图5-8是网站的登录页面login.html的页面效果图5-11是其对应的源代码;图5-9和图5-10分别是respone.php验证成功和失败呈现的结果,图5-12对应其源代码。
我们就使用这个仅有两个网页的网站进行测试,我意到如果成功登录会以“welcome”+“用户名”的结果返回,即如果成功登录总会有“welcome”这个词,我们便以之为存在注入漏洞的标志。结果如图5-13所示。
图5-8 注入检测测试登录页面
图5-9 注入检测测试登录成功页面
图5-10 注入检测测试登录失败页面
图5-11 注入检测测试登录页面html代码
图5-12 注入检测后台php代码
图5-13 注入检测测试结果图
5.9报告功能结果
以下是扫描器生成的HTML扫描报告的部分截图。
图5-14 扫描报告部分截图
第六章 总结与展望
字典、暴力破解、NetBIOS、数据包甚至扫描器等概念原先虽说或学过或用过,但对其真正的存在形式或工作原理都是半懂不懂,带着这么多问题去做这个毕业设计是不小的挑战,不过还好在自己的坚持和很多人的帮助下最终还是算完成了这个工作,对前边说的这些概念有了算是深入的认识,取得了不小的进步。
本文先讨论了当下的安全状况引入扫描器的话题,然后对扫描器及其相关知识进行了介绍,最后使用VC++6.0编译器基于MFC6.0编程实现了一个Windows平台的具有九大项功能的扫描器,并对其各项功能众设计到实现要点到测试结果一一进行了介绍。
本扫描器的九项功能基本能满足其定位的普通用户的需求。但是也存在着一些缺点和不足,首先是不能跨平台,只支持Windows不支持Linux等系统;其次是就算Windows平台本身兼容性也不好,在Windows10等新系统或Windows98等旧系统上运行存在问题;再次是有些功能没能很好地实现,比如端口扫描只有一种扫描方式,多线程没能处处处理好有些能依然卡顿,报告只支持HTML等等,这也是将来工作的改进方向。
参考文献
[1] 中商情报网. CNNIC:中国网民规模6.88亿互联网普及率达50.3%. http://www.
askci.com/news/chanye/2016/01/22/161140ajpy.shtml,2016-05-20.
[2] 曹磊.2015年(上)中国电子商务市场数据监测报告. http://b2b.toocle.com/zt/
2015sndbg/, 2016-05-20.
[3] 扬子晚报网. 腾讯发布数据 江苏受黑客攻击次数仅次于上海. http://www.yangtse.
com/minsheng/2014-06-10/145483.html, 2016-05-20.
[4] 李涛. 奇虎360投资价值分析报告[D]. 成都: 西南财经大学, 2014.
[5] 王世伟. 网络安全、网络战争与国际法.[J]. 政治与法律, 2014, 7: 147-160.
[6] Goran Bubaš, Tihomir Orehovački,Mario Konecki.Factors and Predictors of Online Security
and Privacy Behavior. Journal of Information and Organizational Sciences[J], 2008, Vol,
32(2): 79-98.
[7] Guillermo Horacio Ramirez Caceres, Yoshimi Teshigawara. Security guideline tool for home
users based on international standards.Information Management & Computer Security[J],
2010, Vol.18 (2): 101-123.
[8] 崔建清. 基于攻击图的网络安全分析方法的研究[D]. 上海: 上海交通大学, 2008.
[9] 李俊民. 网络安全与黑客攻防[M]. 第3版. 北京: 电子工业出版社, 2011: 209.
[10] 王强, 刘斌. X-Scan漏洞扫描器软件实施网络系统安全测试的方法[J]. 计算机与现
代化. 2006, 11: 25-26.
[11] 牟晓东, 一个败于细节的网站“失守”案例[J]. 电脑知识与技术, 2012, 10: 44-49.
[12] 白鼠窝. 520开心在一起,盘点收购来的天下:微信、安卓、DOS.http://yeyuan.baijia.
baidu.com/article/462576, 2016-05-20.
[13] 孔垂柳. VC++中MFC框架技术探索[J]. 吉林建筑工程学院学报, 2009, 26(4):
82-84.
[14] 李瑞民. 网络扫描技术揭密[M]. 北京: 机械工业出版社, 2012:1-5.
[15] 金导航. 端口服务及版本探测的研究[J]. 科技创业, 2007,7: 177-178.
[16] 李吉宗. 基于特征库识别的流量监控系统的设计与实现[D]. 济南: 山东大学,
2014.
[17] Diksha Gautam Kumar, Madhumita Chatterjee.MAC based solution for SQL injection.
Journal of Computer Virology and Hacking Techniques[J], 2015, Vol.11(1): 1-7.
[18] 张海藩,牟永敏. 软件工程导论[M]. 第6版. 北京: 清华大学出版社, 2013: 35-53.
[19] 邓亚玲,王新房. 基于NetBIOS协议的网络通信技术[J]. 陕西工学院学报, 2000,
16(2): 90-94.
[20] Miroslaw Thor. A multi-thread approach reducing program execution time in a heterogene-
ous reconfigurable multi-processor architecture.Journal of Systems Architecture[J], 1997,
Vol.43: 143-153.
附录
1、外文参考文献原文
2、外文参考文献部分译文
基于国际标准的家庭用户安全指导工具
Guillermo Horacio Ramirez Caceres1, Yoshimi Teshigawara2
(1.工程研究院,创价大学,东京,日本
2.工程研究院,创价大学,东京,日本)
摘要
目的
对家庭信息系统安全水平可以被描述为他们的能力来抵御所有的意外或故意的恶意活动,基于评估保证级别(EAL)作为国际标准定义。本文的目的是提出一个安全的指导工具,用于家庭用户系统的基础上实现的家庭用户的安全指引工具。
设计/方法/方式
该应用程序是在三个基本步骤中开发的。首先,PP为家庭用户系统在国际标准ISO / IEC 15408的基础上创建的。然后,本文创建了一个知识基础,包括聚丙烯信息,以及一个安全政策,包括其他国际标准,如上述。最后,本文创建了一个网络应用程序的工具,以用于家庭用户的安全指南。
结果
这个工具是为了支持用户了解影响他们的环境的威胁,选择合适的安全策略。通过使用该工具,用户可以根据自己的知识水平,获取国际标准的信息。
研究限制/影响
作者创建了一个工具,基于EAL4。在未来,基于EAL1,EAL2工具和EAL3可以轻轻松松地在现有模型的基础上。
独创性/价值
本页规定了家庭用户信息技术(信息技术)环境的安全要求,并利用国防部的信息安全保障方针和政策,建立必要的安全目标的必要性的基础上。该聚丙烯是为家庭用户创建安全的家,它的环境中使用的参考。操作系统对该页可以在EAL4。
关键词:数据安全 信息系统 风险管理 互联网 国际标准
正文
1.绪论
当下,得益于移动通信的进步和互联网的发展,许多家庭用户正享受着信息技术革命带来的好处。然而在安全方面,相当数量的用户并没有意识到信息窃和隐私泄漏的风险。
按照国际标准,家庭信息系统的安全水平可视为信息系统抵御意外或恶意行为的能力等级。意外或恶意行为主要是指会危及已存储或正传输的数据的机密性、完整性、可用性的操作,当然那些试图通过正常的网络服务获取访问权的行为也包括其中。
要保证系统真正安全,升级到最新版本、配置特定文件、或注意管理用户对资源的访问权限已不能完全胜任。它需要一种方法去避免任何可能影响系统的危胁。
除非本身关闭,否则没有系统是绝对安全的。当一个系统启动它就存在被病毒攻击的可能性,系统的数据乃至硬件可能会因此而遭受破坏。不过,通过采用适当的安全策略的话,确实有可能拥有一个相对安全的系统。
在本研究中,作者基于ISO/IEC15408和ISO/IEC 15446为家庭用户系统提出了一种保护轮廓的模型。除了展示对信息系统的常见威胁的详细信息和为识别到的威胁创建一个知识库并将之应用到信息系统不境中之外,该系统允许用户就自己的具体情况选择一个基于国际标准的而具有针对性的安全策略。我们为家庭用户提出了一个基于知识训的安全指导工具。
本文组织如下:在第二节中我们提出了在本研究中关于安全的概念,同时概述一典型家庭用户的安全问题。在第三节我们回顾信息安全的相关标准。读后感第四节则提出了本次研究的主要目标,同时我们也对PP如何用于家庭用户系统作出解释。在第六节,我们介绍使用PP的知识库工具。在实现这个系统的基上,我们最后总结癸文并指出未来的工作方向。
2.家庭用户系统的安全环境
为了了解家用系统的安全环境,都逐一走访了100名日本和100名阿根廷用户。访问包含两组问题:一组是家庭环境一组是IT环境。
在家庭环境方面,日本和阿根廷之间的调查结果没有多少差异。只有3%的日本家庭将安全系统用到他们的住宅上,而在阿根廷,没有一个单一的参与者已经实施了这样的措施。在这方面,阿根廷遇到安全问题用户数占39%。家庭安全的一个重点是在家里的客人的数量,在日本,37%的家庭有客人,而在阿根廷的百分比是大约是76%。从安全的角度看,这是一个非常重要的观点,因为它直接指示物理接触计算机的人数。
根据问卷调查结果,对于家庭用户的安全性,95%的家庭用户希望保护自己的隐私。然而,只有9%的用户在家使用了防火墙。超过30%的用户使用Windows XP很少用户会更新他们的系统。因此,在每个国家都有非常多漏洞的操作系统,这些漏洞可以被威胁代理利用。另一个问题关注用户账号的数量,47%的用户不使用个人账号登录系统。而其实如果每个用户的个人账户,如果有数据丢失只需要检查登录报表,那么我们可以知道谁在使用计算机。
在用户看来,“安全问题”和“病毒”是同义词。然而,攻击可以有几个目标,包括欺诈、勒索、盗窃信息、报复或简单的挑战穿透性系统。操作系统被成功攻陷多数只是由于少数具有漏洞的软件(米特尼克和西蒙,2002)。这可以归因于因素攻击者是机会主义。他们采取的最简单和最方便的路线,并利用最有效和最广泛使用的攻击工具。
2.1安全的概念
在它的家庭用户的环境有很大的漏洞,这些漏洞可以利用威胁代理。在图1中,我们介绍了在这项研究中采用的安全概念。
安全与保护资产免受威胁相关,在威胁被分类的地方,它们被归类于其滥用保护资产的可能性。所有类别的威胁应该被考虑;然而,在域的安全里与人类有关的行为应给予更大的重视,不论他们是否是恶意的。
维护权益资产是所有者或是对这些资产的价值的使用者的责任。实际或假定的威胁代理人也可能对资产的价值,并寻求滥用与所有者利益相悖的资产。业主认为这些威胁会造成资产的减值,这样的资产的所有者的资产将会减少。常见的具体减值通常包括但不限于,损害披露的资产,未经授权的收件人(保密),通过未经授权的资产损害修改(完整性的丧失),或未经授权的剥夺获得资产(可用性损失)。
资产的所有者将分析可能的威胁,以确定哪些适用于他们的环境。结果被称为风险。这种分析可以帮助选择对策,将风险降低到可接受的水平。
实施对策,以减少脆弱性和满足业主的安全要求的资产。在实施后的对策后仍然可能残留脆弱性。便如漏洞可能作为代表的资产风险的残留水平被威胁代理人利用。所以拥有者应寻求最大限度地减小残余漏洞。
致谢
在论文即将完成之际,首先要感谢的是杨锋老师,因为他的用心指导和松驰有度的要求我才能很好地确定论文的写作方向和把控论文的进度。其次要感谢同一导师的同学,我非常喜欢人人参与、无拘无束的交流,他们给予了我这样的感受,同时还帮我解答了论文方面的如格式等的不少问题。还要感谢我的舍友们,和他们一起讨论就有了很多思路,看他们在赶自己也就不会放松。还要感谢我的父母,当论文写得十分烦燥的时候回去见见他们,心情就平复了很多。还要感李道丰老师,没有他之前在学习上的教导,我不可做得出这个毕业设计,他严谨务实、认真负表还平易近人的做风让我很是受益。最后要感谢其他所有给予过我由衷的赞赏、设身处地的理解、或大或小的帮助、耐心的包容和善意的批评的所有人。在此一并祝他们身休健康、学习进步、工作顺利、生活幸福。