基于VC++的网络扫描器设计与实现诸子流

本文正文其实是自己的毕业论文,现在搬上来有两个原因。

一是之前大学的文档都放在百度网盘上,大概去年的时候百度网盘改版搞得不太稳定,文件夹移动次数一多里边就会有一些文件丢失了,也没有很在意。但前几天看申请软著的汇编记事本代码文件怎么找都找不到,自己电脑也早就换了,放网盘不靠谱放自己电脑也不靠谱,这情况怕是现在没丢的东西以后也会丢有必要另想他法保存。

二是当时论文答辩的时候,导师问“你觉得你的扫描器对比网上现有的扫描器有什么优势”,当时回答的是“现在网上很多扫描器很多是闭源的这扫描器是开源的”----其实心里想的是“和十多年前的X-Scan比都差很远能有什么优势”----现在也还觉得功能比较差有很多问题(比如最明显的扫描时主线程卡死),但开源这事可以顺手做一下以便自我安慰当时并非随口乱说。

现在我也没有意会为什么两轮答辩导师都问我这个问题,感觉这不是给我挖坑吗。不过一辩另外一位老师问的问题当时就反应过来了,他问“代码都是你自己写的吗有没有用到现成的代码”,我首先说“肯定有用现成的代码不管怎么样你最底层都得用系统的API,现在基本是一个页面一个类底层都用了现成的代码”,然后他又问“这些类都是你自己实现的吗”,我说“是我自己实现的”。首先通过调用系统API这个没人能绕过的问题正面回答“有没有用现成代码”的问题,迫其把自己的提问修改成“这些类都是你自己实现的吗”,然后回答都是我自己实现的。在“调用系统API”和“类自己实现”中间的“类的代码是不是你自己原创的”这最关键的地方直接被没有说谎地回避掉了。其实这扫描器核心功能代码都出自李瑞民的《网络扫描技术揭密》,自己做的主要工作主要是筛选、验证、整合;一定要说代码原创的话,应该五五之间吧。但其实也不一定是老师没有注意到我回避了他的问题,和很多时候一样别人问你一个问题并不一定是要你给出真实的、正确的答案,如果你的态度、思路、应变能力能让人认可那别人也就觉得够了。

下面直接把论文贴上来,只做些格式调整内容就不做修改了。项目使用VC++6.0编译应该没问题,由于使用SocketRaw所以要以管理员身分启动。

伴随互联网的不断发展,人们对互联网的依赖与日俱增,越来越多的个人信息被存放到电脑等各终端上,终端安全亟待得到保证。如果知识和习惯仍停留在无意识状态用户的信息安全将面临极大安全隐患。掌握自己电脑等终端设备的网络运行状况正如以前了解自己电脑本地的安全状况一样逐渐成为网民的必备素质。

本设计本着兼顾界面友好和功能齐备的要求,设计了一款面向普通网民的网络扫描器。该扫描器使用VC++6.0基于MFC6.0开发,运行于Windows7操作系统,具有主机扫描、端口扫描、NetBIOS扫描、SNMP扫描、弱密码扫描、嗅探器、DOS攻击、SQL注入检测和扫描报告生成等九项功能。主机扫描实现对指定IP主机是否存活进行判断,端口扫描实现对指定端口是否开放进行判断,NetBIOS扫描实现对目标主机的NetBIOS信息进行读取,SNMP扫描实现对目标主机的SNMP信息进行读取,弱密码扫描实现对系统弱用户名和密码的猜解,嗅探器实现对含指定信息的数据包进行拦截,DOS攻击能够对目标主机发起指定数量的线程连接,SQL注入能够对网页是否存在注入漏洞进行半自动地扫描,报告生成可对扫描结果以HTML等格式生成扫描报告。

关键词:网络安全扫描器VC++网络协议扫描算法

TheDesignandImplementationofNetworkScanner

WiththecontinuousdevelopmentoftheInternet,people'sdependenceontheInternetisincreasingdaybyday,moreandmorepersonalinformationisstoredinthecomputerandotherterminals,terminalsecurityshouldbeguaranteed.Ifknowledgeandhabitisstillinnostateofconsciousness,theuser'sinformationsecuritywillfaceagreatsecurityrisk.Tomasterthenetworkoperationstatusoftheirowncomputerandotherterminalequipmentsasbeforetounderstandtthelocalsecuritysituationoftheirowncomputerhasbecometheessentialqualityofnetizen.

Keyword:Networksecurity;Scanner;Networkingprotocol;Scanningalgorithm

摘要I

ABSTRACTII

第一章绪论1

1.1设计背景1

1.2国内外发展现状1

1.3本毕业设计主要工作2

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.4NetBIOS扫描选项卡24

4.5SNMP扫描选项卡25

4.6弱密码扫描选项卡26

4.7嗅控器选项卡27

4.8DOS攻击选项卡28

4.9注入检测选项卡29

4.10报告选项卡30

第五章扫描器测试及结果31

5.1主机扫描结果31

5.2端口扫描结果31

5.3NetBIOS扫描结果32

5.4SNMP扫描结果32

5.5弱密码扫描结果33

5.6嗅探器扫描结果33

5.7DOS攻击结果34

5.8注入检测结果34

5.9报告功能结果36

第六章总结与展望37

参考文献38

附录40

致谢46

据中国互联网网络信息中心数据,截至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]而需要更进一步的了解网络击的知识和帮助他们了解网络攻击知识的辅助工具。GuillermoHoracioRamirezCaceres和YoshimiTeshigawara等人也执类似观点并为家庭用户安全防护设计了一套防护系统。[7]

在国外,1992年ChrisKlaus设计的InternetSecurityScanner和1996年RenaudDerasion编写的Nessus两种扫描器基本上奠定了扫描器技术的基础,现仿的扫描器技术在此基础上没有太大发展。[9]现今Nessus和Appscan一起作为商业扫描器的优秀代表,Nmap和Metasploit框架以其开源而备受推崇,其中Nmap更偏端口扫描,Metasploit更偏向渗透攻击。

在国内,X-Scan是一个优秀的扫描器类工具软件,X-ScanV1.0版由安全焦点公司(www.xfocus.net)于2000年12月首次发布[10],啊D也是一个多年前网站渗透的必备工具[11]。伴随着安全技术的与国外接轨和国内网络安全行业的规范化,这些曾经由个人或团队开发的名盛一时的已渐渐淡出人们的视野,现今绿盟等安全公司有一些商业版本可以购买,其他一些大大小小的扫描器则散落在安全人士或黑客手中。总体而言国内扫描器缺少重量级产品。

针对用户需要一款扫描器,而国内扫描器沉寂国外扫描器不接地气的情况,我的目标是编写一款对普通用户友好的而功能又相对完善的具有一定电脑使用基的用户即可使用的扫描器,并藉此以自己的理解对使用到的和种扫描技术进行阐述,以供有兴趣的朋友交流学习。

本文第一章对该扫描器的开发背景进行更为详细的说明。第二章对该扫描器的开发环境、涉及的端口等概念和使用多线程等技术进行全面阐述。第三四五章分别就扫描器的主体及其九大功能的界面设计、编程实现和测试结果进行系统介绍。第六章是本次毕业设计的总结与展望。

1990年推出的Windows3.0获得了极好的市场反应,微软从此进入良性发展的快车道1995年推出的Windows95更是一举奠定其PC操系统不可撼动的霸主地位。时至今日Windows仍然占据90%以上的桌面市场。回首看来,恰当的合纵联横、富有远见的投资是Windows成功的外在条件,而友好的用户界面、强大的office办公软件和配套的VC++等开发工具是其成功的内在因素。一款成功的商品往往是营销和品质完美结合的产物,虽然微软在竞争中的手段有些投机乃至卑劣,但不能否认Windows是相当成功和强大的产品。或者我们还要应当承认,商场也是一个成王败寇的世界,多年以后人们只会津津乐道有一个公司叫Microsoft它有个系统叫Windows,而失败的对手们只留在了历史文献里。

图2.1Windows主要版本及发行年份

MicrosoftVisualC++是微软公司1992年开始推出的可视化的C++集成开发环境,以及界面友好功能完善而深受用户喜爱。从7.0版本开始VC++逐渐被整合到VisualStudio,但是1998年发行VC++6.0以其功能齐全、小巧和参考资料多而问题占有很大一部分市场。

图2-2VC++和MFC等的调用关系图

本扫描器在使用VC++6.0编译器基于MFC6.0在Windows732位操作系统上开发而成,经测试,当dll文件齐全时可以在WindowsXP和Windows7上运行。

网络安全根源主要源于以下四点:①黑客的恶击,②TCP/IP协议缺少认证和加密机制,③网络基于协议连接无须面对面的开放性,④用户端安全意识不强或防护措施不到位。我们看到从攻击源到链路到被攻击端都存在着威胁,共同构成了网络安全问题的根源。

所谓端口就是计算机操作系统的一种软件式的编号,使用2个字节16位表示范围从1(20)到65535(216)。所有计算机的内外交流都要经过端口,当然要明白的是端口只是一个数字编号,本身不能处理任何信息,计算机的内外交流最终要依靠服务。所谓服务就是软件通过端口对外提供的网络交互功能。服务要经过端口才能对外服务,而大多数服务只合用一个特定端口所以有时端口和服务可以互相指代。

上述的端口就是传输层的众多值里的一个值而已,所以更准确的说法应该是软件通过协议对外提供服务,至于人们平时更多的说端口,是因为端口是普通程序员和普通用户最常控制的变量。对于计算机专业接受高等教育的人总会听说七层开放互联参考模型(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]之后划出若干位来表示就好了。服务通常与应用层协议一一对应,所以协议和服务有时也可以互相指代。

端口扫描是指向目标主机的TCP/IP服务端口发送探测数据包,并记录目标主机的响应,通过分析响应来判断服务端口是打开还是关闭,进而得知端口的状态。[15]进一步而言,网络扫描就是构造符合某项协议的包,依据目标计算机的返回的数据包的内容,对目标计算机协议对应的服务是否启开及服务版本等各种信息的进行判断的行为。

网络扫描纺程和一般的网络编程的区别是,首先一般的网络编程通常是服务端和客户端一起编写,而网络扫描通常只是编写客户端其目标服务是既有的服务端程序;其次一般的网络编程通常只会使用一种应用层协议,而由于扫描器的目标是这些各不相同的服务,所以就得使用众多不同的应用层协议,在编程上就是你要构造和处理更多不同的数据包,所以一般来说网络扫描编程较一般的络编程要复杂不少。

病毒木马查杀、垃圾数据清理和开机加速是传统安全卫士的三大核心功能,我们注意到的特点是,这些功能的实现主要是读写本地磁盘文件来实现不需要通过网络;去看附加的沙箱,桌面整理也大都如此。而我们反观网络扫描器,从其简单的主机存活扫描、端口开发扫描开始多是要使用协议构造数据包去探测的。当然他们会有交集,由于大面全的发展方向他们的交集会越来越大,当然你要问那按这说法他们最终会合并那会兼并谁?我觉得这问题和防火墙和入侵检测系谁会兼并谁一样难说,当然也许这也没那么最要,就比如现在的手机基本实现了对MP3、MP4的吞并又正在蚕食照相机市场,我们只知道我们大大方便了其他谁吞并谁哪用管那么多呢,等哪天吞并完了我们再去给个盖棺定论就完了。当然非说看法那还是在普通用户市场上,安全卫士吞并扫描器的可能性大,扫描器可能只会以插件的形势存在字全卫士中,因为比如一个360安全卫士其技术复杂性比一个普通扫描器要难得多,二是安全办公卫士已存在用户市场多年而网络扫描器对很多用户是个新鲜事物。

对面向联接的即在传输层使用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数组,当然是通过关部结构去与数组对应而不是一个字节一个字节地去赋值。

我孙说扫描器通过构造与服务端相应的协议的数据包去与服务端交流,那扫描器是怎么得出对服务端的状态的扫描结论的,这就依赖特征库。特征库是指一种通过捕获网络数据样本,横向比较网络数据包,提取能表征该协议的特征串,并将其按照一定的语法写成的文件。[16]更通俗而言特征库就是你设定的某种状态的充要条件,比如返回的TTL值为255就等价目标系统是UNIX操作系统等等,当然如果你设定的特征库出错,那么你的扫描结果也就可能出错。所以可以说特征库的准确与否是一个扫描器好坏的重要体现。当然还要提醒一句特征库可以以数据库形式保存,而且随着特征库的扩大和可扩展性可维护性要求的提高存放于数据库也是一种趋势,但完全也可以以其他形式保存随编程者的意愿。

INI文件是Windows3.x的配置的存储方式,文件内常以不同段名分类配置,段下是配置的键值对。INI文件的的读写主要由GetprivateProfileString、GetprivateProfileInt和WritePrivateProfileString三个函数完成。INI文件存在散乱和容易被编缉等弱点,为此微软从Windows95开始引入了注册表这小型数据库,注册表主要通过RegCreateKeyEx、RegOpenKeyEx、RegQueryValueEx、RegSetValue和RegDeleteKey等函数进行操作。注册表键对应INI文件的段,子键和值对应INI文件的键值,不过注册表下的子键可以是子键,但就存储方式读写等操作来说都没多大差别。在我们设计的扫描器中为了简便和不会因失误而破坏到注册表我们使用了INI文件的配置方式。

CTreeCtrl是MFC的树型控件,通过InsertItem函数插入节点。CListCtrl是MFC的列表控件,通过InsertColumn函数插入列,通过InsertItem函数插入行。在我们的扫描器中,对于结果需要分类的功能我们使用CTreeCtrl控件,对于同类型而有多项内容的功能我们使用CListCtrl控件进行展示。当然要提醒的是这3个数都是重载的,不只一个样式。

在前面章节中提到,我们提到本设计的目是设计出一个面向普通用户的扫描器。面向普通用户的扫描器,其要点有二,一是功能要完善,常用的功能也都要有,如果没什么功能这样的设计是没什么意义的;二是要界面要友好,需要手动配置的参数不能过多功能不要隐藏太深,让用户感觉十分复杂。

首先对第一点要求,本设计为扫描器设计了主机扫描等常用的九项功能,应该来说完全能够满足通用户的需求。在技术上X-Scan等扫描器都有实现类似功能所以说明在技术上是没有什么问题的。具体到个人而言,自己较为系统地学习过网络协议同时也有相应的网络编程和网站开发经验,再加上参考资料和老师指导,技术上可以实现。

在设计上我们采用了模块化的方式并用选项卡组织对用户友好,在技术上程序是Windows平台最为流行的基于MFC框架的基于对话框的程序,对有稍徽有计算机使用经验的人都不会感觉到陌生。对于一些错误的操作,比如嗅探器启动时没有关键字等,也设计了友善的提醒。所以在操作上也是可行的。

根据对对安全形式的观察判断,结合用户的普遍需求,本文设计的扫描器具有以下九大模块:主机扫描模块、端口扫描模块、NetBIOS扫描模块、SNMP扫描模块、弱密码扫描模块、嗅探器模块、DoS攻击模块、注入检测模块和报告生成塻块。对应的层次图如图3-1所示,对应的界面如图3-2所示。

主机扫描功能主要是通过向目标IP发送手动构造ICMP包,如果收到目标IP的数据包则判断IP对应的主机已经开启。其流程图如图3-1所示。

端口扫描功能主要是实现向目标IP指定的口范围内的端口逐个进行扫描,依据返加结果列出打开的端口,并指出这些开放的口一般对应的服务。其流程图如图3-2所示。

SNMP扫描功能实现完成对支持SNMP(SimpleNetworkManagementProtocol,简单网络管理协议)的网络软硬件的信息的读取。其流程图如图3-4所示。

弱密码扫描实现实现对目标IP用户名和密码扫描,用户名支持指定和遍历文件两种模式,密码支持暴力破解和遍历文件两种模式。其流程图如图3-5所示。

嗅探器功能实现对存在指定监测关键字的收发的数据包进行监视,截取用户感兴趣的信息。其流程图如图3-6所示。

本选项卡实现启动指定的线侱数对指定的IP指定的端口不断进行接,消耗目标机器的资源。其流程图如图3-7所示。

注入检测实现对使用post方式的提交表单的页面进行SQL注入检测。不过URL和参数及注入成功都要用户自己输入,多只算半自动扫描,做不做像sqlmap那样的自动扫描。其流程图如图3-8所示。

报告生成功能实现对允许选择前边提供的任意多种扫描功能并将他的的扫描结果以报告文件的形式给出。其程序流程图如图3-9所示。

总体设计要组织安排好各子模块;结合界面友好的要求功能要一目了然,此我们选择了选项卡模式。共程序流程图如图3-10所示。

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)。各选项卡具体设计将在下边依次介绍。总体设计图如下所示:

管道技术:管道技术就是让一个程序的输出通过管道能让其成为令一个程序的输入的技术。大体而言就是使用CreatePipe函数创建管道并同时指定读写句柄,然后上游程序使用WriteFile函数和写句柄向管道写入内容,下游程序通过ReadFile函数和读句柄从管道读出内容。

我们选择了发送ICMP请求和处理接收到的各用一个线程的方式;在点击开始按钮后,直接将要扫描的IP地址插入到CListCtrl控件上,然后启动一个接收线程并使用WSAictol函数将网卡设置为混杂模式如果接收目标IP发送来的包就将对应的IP的状态标为“通”自始至终没有的不处理,再然后启用一个线程对要扫描的IP地址逐个发送手动构造的ICMP请求包。

鉴于端口数较多,为了追求最快的扫描速度,对每一个IP的每一个端口我们都启动了一个线程创建一个CSocket使用成员函数Connect扫描。如果返回值是true示端口开放反之未开放;对于的开放端口,如果小于1024则使用getservbyport函数获取对应的服务名称,如果不是熟知端口,则到到自己设置的口服务对应库中查询,实在没有的服务名赋空值。最后将扫描的IP插入CTreeCtrl中,并将IP开放的端口插入其下。

NetBIOS(NETWORKBASICINPUT/OUTPUTSYSTEM)网络基本输入/输出系统,是一种用于计算机之间进行通信的专用程序,是计算机网络通信中的重要协议之一。它支持TCP/IP、MAP/TOP、IEEE和OSI等协议,而且NetBIOS正迅速成为不同操作系统环境下普遍使用的编程平台。NetBIOS基本概念包括NetBIOS名字、NetBIOS命令、NetBIOS通信方式等。[19]

对于主机名读取通过structHOSTENT*gethostbyaddr(char*addr,intlen,inttype)函数实现,IP放于addr参数中。

对于MAC地址读取通过DWORDSendARP(UINTDestIp,UINTSrcIP,PULONGpMacAddr,PULONGOhyAddrLen)函数实现,其中读取到的MAC地址放于pMacAddr。

读取共享目录使用NET_API_STATUSNetShareEnum(LPWSTRservername,DWORDlevel,*bufprt,DWORDprefmaxlen,LPDWORDentriesread,LPDWORDtotalentries,LPWDORDresume_handle)函数实现。其要点是IP放于servername共享目录数返回于totalentries,共享目录返回于bufptr。

读取组列表通过NET_API_STATUSNetGrounpEnum(LPCWSTRservername,DWORDlevel,LPBYTE*bufptr,DWORDprefmaxlen,LPDWORDentriesread,LPWORDtotalentries,PDWORD_PTRresume_handle)函数实现。其要点与读取共享目录相同。

读取操作系统类型通过NET_API_STATUSNetServerGetInfo(LPSTRstrIP,PBYTE*server)函数实现。其要点是目标IP放于数strIP中,返回的系统消息在server数中。

读取所支持服务通过NET_API_STATUSNetRemoteComputerSupports(

LPCWSTRUncServerName,DWORDOptionsWanted,LPDWORDoptionsSupported)函数实现。其要点是目标IP放于参数uncServerName中,需要检测的服务放于参数optionsWanted中,支持的服务返中于参数optionsSupported中;optionsWanted和optionsSupported都是32位长,每种服务占用其一位表示。

读取用户名列表通过NET_API_STATUSNetUserEnum(LPCWSTRserverName,DWORDlevel,DWORDfilter,LPBYTE*bufptr,DWORDprefmaxlen,LPDWORDenteriesRead,LPDWORDtotalEntries,LPDWORDresumeHandle)函数实现。其要点与读取共享目录相同。

读取用户会话通过NET_API_STATUSNetSessionEnum(LPWSTRservername,LPWSTRUncClientName,LPWSTRusername,DWORDlevel,LPBYTE*bufptr,DWORDprefmaxlen,LPDWORDentriesread,LPDWORDresume_handle)函数实现。其要点是目标IP放于servername参数中,会话数返回于entriesread中,UncClientName指明回的会话类型,username指明返回会话的用户。

读取TCP连接通过NET_API_STATUSNetShareEnum(LPWSTRservername,DWORDlevel,*bufprt,DWORDprefmaxlen,LPDWORDentriesread,LPDWORDtotalentries,LPWDORDresume_handle)函数实现,其要点与读取共讯止录相同。

MIB(ManagementInformationBase,管理信息库)是以树状目录形式保存软硬件设备的网络设备信息库,其分枝节点用于软硬件的分门别类,叶子结点代表一个具体的软硬件设备因此又称“MIB对象”或“MIB变量”。

到此我们可以想到要访问某个值只要使用“全路径”方式去访问对应的叶子结点就可以了,但是这种字符串定位的方式不能很好地表示出两个节点间的相对位置。所以在ASN.1中为每个节点都分配了一个数值表示,叶子结点癸路径名称对应的数值串就是一个叶子结点的OID(ObjectIdetity).在本文设计的扫描器中,正时通过OID值去读取对相的设备的值。

本项功能的要点是先通过LPSNMP_MGR_SESSIONSnmpMgrOpen(LPSTRlpAgentAddress,LPSTRlpAgentCommunity,INTnTimeOut,INTnRetries)函数与远端主机完成连接,目标IP存于lpAgentAddress参数中。然后通过SNMPAPISnmpMgrRequest(LPSNMP_MGR_SESSIONsession,BYTErequestType,RFC1157VarBindList*variableBindList,AsnInteger*errorStatus,AsnInteger*errorIndex)实现值的读取,其中要读取的叶子结点的OID值和返回的叶子结点的值都在variableBindList变量中。

图4-5SNMP扫描逻辑图

命名管道是管道技术的特列,普通管道只能用于父子或兄弟进和之间的通信,命名管道可以突破这种限制,只要知道管道名称和用户名密码,即使不同主机上的两个进程也可以通过命名管道进行通信。

IPC$(InternetProcessConnection)是微软为了方便对远程计算机的访问而在WindowsNT上引入的命名管道,如果能提供远程主机上存在的用户名和密码那么就可以IPC$即可连接成功。WNetAddConnection2正是构建连接的数,对于我们的扫描器而言则是可以通过WNetAddConnection2函数建立连接成功与否来判断目标主机是否存在所使尝试的用户名密码组合。

由于用户名和密码各支持两种式,所以要设置两层判断,在外层先判断用户模式在里层判断密码模式后调用不同的处理方法。存方用户名和密码的文件都使用dic格式每行一个值,使用CstdioFile类打开,其readLines成员函数可以实现按行读取。

虽然说有四个不同处理函数但其要点都是一至的,就是构造好一组要进行测试的用户名密码,使用DWORDWNetAddConnection2(LPNETRESOURCElpNetResource,LPCTSTRlpPassword,LPCTSTRlpUsername,DWORDdwFlags)函数尝试连接,如果返回值是EROR_SUCCESS(即true)则用户名密码可用。其中目标IP放于lpNetResource参数,用户名放于lpUsername参数,密码放于lpPassword参数。

在点击开始按钮后,由于电脑可能有多块网卡所以先弹出网卡选择的模态对话框,行·锭择之后为不让程序出现卡顿状态使用AfxBeginThread函数启用一个线程去处理。在这个线程中先用socket函数创建一个原始套接字类型的socket,然后设置绑定到的本地的IP和端口,之后瑞使用WSAIoctl函数设置为接收所有收发的包,再然后将recvfrom到的每个包放入recvBuf中,历recvBuf将每个字节变为大写放到strTemp,最后使用CString类的Find成员函数查找包中是否包含监测的关键字(也要转为大写),如果有则在CTreelist控件中呈现该数据包如果没有则处理下一个数据包。

在处理中我们将内容和关键字都变为大写再匹配,是因为每个程序员编写时大小写习惯可能不同,比如“密码”有人写password有人写Password还有人可能写PassWord,而显然如果我们想监测“密码”那么有这些关键字数据包都是我们感兴趣的,当然你也可以都加入监测而不用大写处理但是这样不蛱一个优先选择的处理方法。

拒绝服务攻击是通过网络使用某种方法使目标机器的CPU、内存等资源耗尽而不能提供正常服务的行为。我们首先要明白的是拒绝服务攻击并不会对受攻击机器造成硬件、软件或数据的任何损坏,甚至可以认为是损失最小技术含量最低的攻击行为。

拒绝服务攻击首先可以划分为分布式拒绝服务和普通拒绝服务,前者借用多台机器对目标机器进行拒绝服务攻击后者使用本机对目标机进行拒绝服务。然后按照使用三次握手不同组合等请求连接方式的不同又可以细分为多种。本文设计的扫描器只是实现最原始的不断建立三次握手连接。

使用for循环和AfxbeginThread函数建立指定的线程数,在每个线程中创建使用socket函数建立TCP类型的socket,并在while中每隔100毫秒对目标IP进行一次connect请求。

SQL注入是一种通过操纵输入而改变后台SQL语句的攻击技术。攻击都可以直接触及数据库,所以这也是为什么将SQL称为最具威胁性的攻击的原因。SQL注入在OWASPTOP10上长期占据第一的位置。[20]在开始的时候SQL注入没被发现或者应该说没被重视,因为在B/S架构兴起之前,使用的都是C/S结构,虽然说通过拦截客戾端和服务器的通信数据包还是可以实现注入检测,但是基于每个软件的实现的功能是不一样的,即便是相同的功能实现的方式也多是不一样的,所以说手动检测注入是可能的,对一个软件的某个版本编写一个扫描器也是可能的,但是面对大量的设计不一致要编写一个通用的注入扫描基本是不可能的。而在B/S兴起的初期网页都是静态的HTML页面,注入检测也无用武之地。

在B/S架构使用统一的80端口,统一通过URL提交所有的用户输入,服务器统一处理而后统一返回处理结果和web2.0数据库引入两个条件满足后,SQL注入攻击手段才兴起,在新世纪初SQL注入方式由于相对统一的URL方式使得注入检测相对简单,SQL没有过滤所以屡试不爽。不过在表单多改为post方式提交再加上SQL过滤技术成熟之后SQL注入扫描器编写难度大大提升,这也是我们计的扫描器只能实现半自动甚至说手动的原因。

本文设计的扫描器报告选项卡将前边的九大功能以复选框的形式给出,如果选择执行那么就使用PostMessage函数依次给前边各选项卡发送开始按钮按下的消息,报告通过取选项卡在CTreeCtrl和CListCtrl等控件上的结果生成。因为如果是在各选项卡中添加是不是报告模式,如果不是则结果显示到控件上,而如果是则写入到报告文件上的话,那这基本是一倍的代码量。

在主机扫描功能中选择103.51.144.90-93这个范围进行测试,结果显示90和92两台主机处在存活状态。其中90主机是百度的CDN。

图5-1主机扫描测试结果图

在端口功能中仍选择有103.51.144.90主机扫描结果显示开放了80端口,这与其百度CDN的身份是相符的。

图5-2端口扫描测试结果图

在NetBIOS中我们选择192.168.50.135主机作为目标,该主机是我使用VMware搭建的Windows7虚拟机。结果信息与实际信息相一致。

图5-3NetBIOS扫描测试结果图

在SNMP扫描中我们仍采用192.168.80.135虚拟机进行测试。在与NetBIOS相重的用户列表上,用户名是相一致的所以两都可以相互印证对方的正确性。

图5-4SNMP扫描测试结果图

在本项功能我们目标主机仍是192.168.80.135虚拟机,用户名手动输入,密码采用密码文件。本项功能同时证明NetBIOS和SNMP两项功能扫描出来的“web”用户确实存在。

图5-5弱密码扫描测试结果图

图5-6嗅探器测试结果图

在本项功能的测试中我们启动1000个线程对192.168.80.135进行了连接。

图5-7DOS攻击测试结果图

图5-12注入检测后台php代码

图5-13注入检测测试结果图

以下是扫描器生成的HTML扫描报告的部分截图。

图5-14扫描报告部分截图

字典、暴力破解、NetBIOS、数据包甚至扫描器等概念原先虽说或学过或用过,但对其真正的存在形式或工作原理都是半懂不懂,带着这么多问题去做这个毕业设计是不小的挑战,不过还好在自己的坚持和很多人的帮助下最终还是算完成了这个工作,对前边说的这些概念有了算是深入的认识,取得了不小的进步。

本扫描器的九项功能基本能满足其定位的普通用户的需求。但是也存在着一些缺点和不足,首先是不能跨平台,只支持Windows不支持Linux等系统;其次是就算Windows平台本身兼容性也不好,在Windows10等新系统或Windows98等旧系统上运行存在问题;再次是有些功能没能很好地实现,比如端口扫描只有一种扫描方式,多线程没能处处处理好有些能依然卡顿,报告只支持HTML等等,这也是将来工作的改进方向。

askci.com/news/chanye/2016/01/22/161140ajpy.shtml,2016-05-20.

2015sndbg/,2016-05-20.

com/minsheng/2014-06-10/145483.html,2016-05-20.

[4]李涛.奇虎360投资价值分析报告[D].成都:西南财经大学,2014.

[5]王世伟.网络安全、网络战争与国际法.[J].政治与法律,2014,7:147-160.

[6]GoranBuba,TihomirOrehovaki,MarioKonecki.FactorsandPredictorsofOnlineSecurity

andPrivacyBehavior.JournalofInformationandOrganizationalSciences[J],2008,Vol,

32(2):79-98.

[7]GuillermoHoracioRamirezCaceres,YoshimiTeshigawara.Securityguidelinetoolforhome

usersbasedoninternationalstandards.InformationManagement&ComputerSecurity[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.

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]DikshaGautamKumar,MadhumitaChatterjee.MACbasedsolutionforSQLinjection.

JournalofComputerVirologyandHackingTechniques[J],2015,Vol.11(1):1-7.

[18]张海藩,牟永敏.软件工程导论[M].第6版.北京:清华大学出版社,2013:35-53.

[19]邓亚玲,王新房.基于NetBIOS协议的网络通信技术[J].陕西工学院学报,2000,

16(2):90-94.

[20]MiroslawThor.Amulti-threadapproachreducingprogramexecutiontimeinaheterogene-

ousreconfigurablemulti-processorarchitecture.JournalofSystemsArchitecture[J],1997,

Vol.43:143-153.

基于国际标准的家庭用户安全指导工具

GuillermoHoracioRamirezCaceres1,YoshimiTeshigawara2

(1.工程研究院,创价大学,东京,日本

2.工程研究院,创价大学,东京,日本)

摘要

目的

对家庭信息系统安全水平可以被描述为他们的能力来抵御所有的意外或故意的恶意活动,基于评估保证级别(EAL)作为国际标准定义。本文的目的是提出一个安全的指导工具,用于家庭用户系统的基础上实现的家庭用户的安全指引工具。

设计/方法/方式

该应用程序是在三个基本步骤中开发的。首先,PP为家庭用户系统在国际标准ISO/IEC15408的基础上创建的。然后,本文创建了一个知识基础,包括聚丙烯信息,以及一个安全政策,包括其他国际标准,如上述。最后,本文创建了一个网络应用程序的工具,以用于家庭用户的安全指南。

结果

这个工具是为了支持用户了解影响他们的环境的威胁,选择合适的安全策略。通过使用该工具,用户可以根据自己的知识水平,获取国际标准的信息。

研究限制/影响

作者创建了一个工具,基于EAL4。在未来,基于EAL1,EAL2工具和EAL3可以轻轻松松地在现有模型的基础上。

独创性/价值

本页规定了家庭用户信息技术(信息技术)环境的安全要求,并利用国防部的信息安全保障方针和政策,建立必要的安全目标的必要性的基础上。该聚丙烯是为家庭用户创建安全的家,它的环境中使用的参考。操作系统对该页可以在EAL4。

关键词:数据安全信息系统风险管理互联网国际标准

正文

1.绪论

当下,得益于移动通信的进步和互联网的发展,许多家庭用户正享受着信息技术革命带来的好处。然而在安全方面,相当数量的用户并没有意识到信息窃和隐私泄漏的风险。

按照国际标准,家庭信息系统的安全水平可视为信息系统抵御意外或恶意行为的能力等级。意外或恶意行为主要是指会危及已存储或正传输的数据的机密性、完整性、可用性的操作,当然那些试图通过正常的网络服务获取访问权的行为也包括其中。

要保证系统真正安全,升级到最新版本、配置特定文件、或注意管理用户对资源的访问权限已不能完全胜任。它需要一种方法去避免任何可能影响系统的危胁。

除非本身关闭,否则没有系统是绝对安全的。当一个系统启动它就存在被病毒攻击的可能性,系统的数据乃至硬件可能会因此而遭受破坏。不过,通过采用适当的安全策略的话,确实有可能拥有一个相对安全的系统。

在本研究中,作者基于ISO/IEC15408和ISO/IEC15446为家庭用户系统提出了一种保护轮廓的模型。除了展示对信息系统的常见威胁的详细信息和为识别到的威胁创建一个知识库并将之应用到信息系统不境中之外,该系统允许用户就自己的具体情况选择一个基于国际标准的而具有针对性的安全策略。我们为家庭用户提出了一个基于知识训的安全指导工具。

2.家庭用户系统的安全环境

为了了解家用系统的安全环境,都逐一走访了100名日本和100名阿根廷用户。访问包含两组问题:一组是家庭环境一组是IT环境。

在家庭环境方面,日本和阿根廷之间的调查结果没有多少差异。只有3%的日本家庭将安全系统用到他们的住宅上,而在阿根廷,没有一个单一的参与者已经实施了这样的措施。在这方面,阿根廷遇到安全问题用户数占39%。家庭安全的一个重点是在家里的客人的数量,在日本,37%的家庭有客人,而在阿根廷的百分比是大约是76%。从安全的角度看,这是一个非常重要的观点,因为它直接指示物理接触计算机的人数。

在用户看来,“安全问题”和“病毒”是同义词。然而,攻击可以有几个目标,包括欺诈、勒索、盗窃信息、报复或简单的挑战穿透性系统。操作系统被成功攻陷多数只是由于少数具有漏洞的软件(米特尼克和西蒙,2002)。这可以归因于因素攻击者是机会主义。他们采取的最简单和最方便的路线,并利用最有效和最广泛使用的攻击工具。

2.1安全的概念

在它的家庭用户的环境有很大的漏洞,这些漏洞可以利用威胁代理。在图1中,我们介绍了在这项研究中采用的安全概念。

安全与保护资产免受威胁相关,在威胁被分类的地方,它们被归类于其滥用保护资产的可能性。所有类别的威胁应该被考虑;然而,在域的安全里与人类有关的行为应给予更大的重视,不论他们是否是恶意的。

资产的所有者将分析可能的威胁,以确定哪些适用于他们的环境。结果被称为风险。这种分析可以帮助选择对策,将风险降低到可接受的水平。

实施对策,以减少脆弱性和满足业主的安全要求的资产。在实施后的对策后仍然可能残留脆弱性。便如漏洞可能作为代表的资产风险的残留水平被威胁代理人利用。所以拥有者应寻求最大限度地减小残余漏洞。

在论文即将完成之际,首先要感谢的是杨锋老师,因为他的用心指导和松驰有度的要求我才能很好地确定论文的写作方向和把控论文的进度。其次要感谢同一导师的同学,我非常喜欢人人参与、无拘无束的交流,他们给予了我这样的感受,同时还帮我解答了论文方面的如格式等的不少问题。还要感谢我的舍友们,和他们一起讨论就有了很多思路,看他们在赶自己也就不会放松。还要感谢我的父母,当论文写得十分烦燥的时候回去见见他们,心情就平复了很多。还要感李道丰老师,没有他之前在学习上的教导,我不可做得出这个毕业设计,他严谨务实、认真负表还平易近人的做风让我很是受益。最后要感谢其他所有给予过我由衷的赞赏、设身处地的理解、或大或小的帮助、耐心的包容和善意的批评的所有人。在此一并祝他们身休健康、学习进步、工作顺利、生活幸福。

THE END
1.基于HTML5和JSP的旅游信息平台设计与实现.doc[原创毕业论文]摘要:本网站为基于JSP和HTML5,CSS3的WEB应用程序,在互联网平台上实现旅游景点、路线、酒店、游记查询,发布,共享的平台。本论文主要论述了此网站开发的基本过程,开发中使用了JSP,Struts2,HTML5,JQery等相关技术。根据现在流行的开发模式,本网站采用了B/S结构的开发模式,以MyEclipse作为服务器,MYSQL作为数据库平台。 http://m.eeelw.com/jisuanji/177278.html
2.毕业论文基于WEB前端开发技术的网站设计.docx毕业论文--基于WEB前端开发技术的网站设计 来自淘豆网www.taodocs.com转载请标明出处. 文档信息 页数:33 收藏数:0 顶次数:0 上传人:小雄 文件大小:120 KB 时间:2021-06-09https://www.taodocs.com/p-502099484.html
1.HTML做一个简单漂亮的宠物网页(纯html代码)简单宠物店html一、?网站题目 宠物网页设计、保护动物网页、鲸鱼海豚主题、保护大象、等网站的设计与制作。 二、网站描述 ?HTML宠物网页设计,采用DIV+CSS布局,共有多个页面,排版整洁,内容丰富,主题鲜明,首页使用CSS排版比较丰富,色彩鲜明有活力,导航与正文字体分别设置不同字号大小。导航区域...https://blog.csdn.net/p305114466/article/details/127708493
2.毕设精选基于SpringBoot和Vue的相关系统51CTO博客springboot273基于JavaWeb的宠物商城网站含文档附源码 springboot272车辆管理系统含文档附源码 springboot271制造装备物联及生产管理ERP系统含文档附源码 springboot270基于JAVA的社团管理系统的设计与实现含文档附源码 springboot265基于Spring Boot的库存管理系统含文档附源码 ...https://blog.51cto.com/u_14519396/8680059
3.基于HTML5和云计算技术的网站群设计与实现《北京工业大学》 2014年 收藏 | 论文排版 基于HTML5和云计算技术的网站群设计与实现 崔勇 开通知网号 【摘要】: 政府、企事业单位的门户网站往往呈现由中心向地方辐射的普及方式。随着普及的进行,各部门和单位的网站链接到一起,形成网站群落。它们在形式上是统一的,实际上却是信息相互孤立隔离,不能够进行统筹管理...https://cdmd.cnki.com.cn/article/cdmd-10005-1015006510.htm
4.基于JavaWeb(SSM+MySQL)的社区文化推广网站系统设计与实现+毕业...基于(SSM+MySQL)的社区文化推广网站系统设计与实现+毕业论文+提案报告+作业信+答辩PPT+指导搭建视频 该系统包含两个角色:管理员和用户。 管理员角色:用户管理、社区新闻管理、社区公告管理、社区活动管理、医疗服务管理、社区餐饮管理、家政服务管理、活动登记管理、家政预约管理、系统管理。 https://chahouw.com/detail/179219.html
5.库存管理系统uml7-基于SSH的婴幼儿产品销售系统的开发与设计 8-基于WEB的网上购物系统的设计与实现-ssh源码 9-网上手机销售系统-jsp 10-Java网上体育商城的设计与实现-ssh 11-基于JSP+Servlet开发高校社团管理系统 12-Java在线考试系统-ssh 13-java开发电影订票网站系统-ssh14-JavaWeb校园二手平台项目+论文-ssh ...https://www.zboao.com/cgal/9126.html
6.html网页制作实验心得(精选6篇)其实你会使用HTML4.01,那么HTML5不需要多学,知道几个删除的标签和新增的标签就好。H5主要体现在新的javascript的api上,比如canvas的绘图,js与video标签结合来代替传统的flash player的播放模式。 篇3:基于HTML5的网页设计应用 HTML5是当今web技术领域中的一个流行术语, 它代表了Web业务和云业务在实现方式上的里程碑...https://www.360wenmi.com/f/filen38ro3ot.html
7.js特效汽车汽车js特效汽车学校js腾讯云开发者社区原始HTML+CSS+JS页面设计, web大学生网页设计作业源码,画面精明,排版整洁,内容丰富,主题鲜明,非常适合初学者学习使用。 --- <font 04 计算机毕业设计——基于html汽车商城网站页面设计与实现论文源码ppt(35页) HTML+CSS+JavaScript 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器...https://cloud.tencent.com/developer/information/js%E7%89%B9%E6%95%88%E6%B1%BD%E8%BD%A6
8.网页设计论文关键词:设计论文 1、DIV+CSS概念 DIV就是一个区块容器,用来封闭数据区域,属于行级区域,相当于一个可以容纳表格、段落、标题、图片等各种元素的容器。在进行网页布局排版时,需要将页面整体上进行DIV分块。层叠样式表CSS示国际W3C标准化组织制定的一套完整的扩展样式标准,主要是为了在HTML的样式编排上对其功能进行补充...https://www.ruiwen.com/lunwen/6161857.html