本文正文實際上是本身的畢業論文,如今搬上來有兩個緣由。php
一是以前大學的文檔都放在百度網盤上,大概去年的時候百度網盤改版搞得不太穩定,文件夾移動次數一多裏邊就會有一些文件丟失了,也沒有很在乎。但前幾天看申請軟著的彙編記事本代碼文件怎麼找都找不到,本身電腦也早就換了,放網盤不靠譜放本身電腦也不靠譜,這狀況怕是如今沒丟的東西之後也會丟有必要另想他法保存。html
二是當時論文答辯的時候,導師問「你以爲你的掃描器對比網上現有的掃描器有什麼優點」,當時回答的是「如今網上不少掃描器不少是閉源的這掃描器是開源的」----其實內心想的是「和十多年前的X-Scan比都差很遠能有什麼優點」----如今也還以爲功能比較差有不少問題(好比最明顯的掃描時主線程卡死),但開源這事能夠順手作一下以便自我安慰當時並不是隨口亂說。git
如今我也沒有意會爲何兩輪答辯導師都問我這個問題,感受這不是給我挖坑嗎。不過一辯另一位老師問的問題當時就反應過來了,他問「代碼都是你本身寫的嗎有沒有用到現成的代碼」,我首先說「確定有用現成的代碼無論怎麼樣你最底層都得用系統的API,如今基本是一個頁面一個類底層都用了現成的代碼」,而後他又問「這些類都是你本身實現的嗎」,我說「是我本身實現的」。首先經過調用系統API這個沒人能繞過的問題正面回答「有沒有用現成代碼」的問題,迫其把本身的提問修改爲「這些類都是你本身實現的嗎」,而後回答都是我本身實現的。在「調用系統API」和「類本身實現」中間的「類的代碼是否是你本身原創的」這最關鍵的地方直接被沒有說謊地迴避掉了。其實這掃描器核心功能代碼都出自李瑞民的《網絡掃描技術揭密》,本身作的主要工做主要是篩選、驗證、整合;必定要說代碼原創的話,應該五五之間吧。但其實也不必定是老師沒有注意到我回避了他的問題,和不少時候同樣別人問你一個問題並不必定是要你給出真實的、正確的答案,若是你的態度、思路、應變能力能讓人承認那別人也就以爲夠了。程序員
下面直接把論文貼上來,只作些格式調整內容就不作修改了。項目使用VC++6.0編譯應該沒問題,因爲使用Socket Raw因此要以管理員身分啓動。github
github地址:https://github.com/PrettyUp/Scannerweb
伴隨互聯網的不斷髮展,人們對互聯網的依賴與日俱增,愈來愈多的我的信息被存放到電腦等各終端上,終端安全亟待獲得保證。若是知識和習慣仍停留在無心識狀態用戶的信息安全將面臨極大安全隱患。掌握本身電腦等終端設備的網絡運行情況正如以前瞭解本身電腦本地的安全情況同樣逐漸成爲網民的必備素質。算法
本設計本着兼顧界面友好和功能齊備的要求,設計了一款面向普通網民的網絡掃描器。該掃描器使用VC++6.0基於MFC6.0開發,運行於Windows7操做系統,具備主機掃描、端口掃描、NetBIOS掃描、SNMP掃描、弱密碼掃描、嗅探器、DOS攻擊、SQL注入檢測和掃描報告生成等九項功能。主機掃描實現對指定IP主機是否存活進行判斷,端口掃描實現對指定端口是否開放進行判斷,NetBIOS掃描實現對目標主機的NetBIOS信息進行讀取,SNMP掃描實現對目標主機的SNMP信息進行讀取,弱密碼掃描實現對系統弱用戶名和密碼的猜解,嗅探器實現對含指定信息的數據包進行攔截,DOS攻擊可以對目標主機發起指定數量的線程鏈接,SQL注入可以對網頁是否存在注入漏洞進行半自動地掃描,報告生成可對掃描結果以HTML等格式生成掃描報告。sql
關鍵詞:網絡安全 掃描器 VC++ 網絡協議 掃描算法數據庫
The Design and Implementation of Network Scanner編程
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
據中國互聯網網絡信息中心數據,截至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]
通常來講,網絡攻擊要遵循下面的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]。伴隨着安全技術的與國外接軌和國內網絡安全行業的規範化,這些曾經由我的或團隊開發的名盛一時的已漸漸淡出人們的視野,現今綠盟等安全公司有一些商業版本能夠購買,其餘一些大大小小的掃描器則散落在安全人士或黑客手中。整體而言國內掃描器缺乏重量級產品。
針對用戶須要一款掃描器,而國內掃描器沉寂國外掃描器不接地氣的狀況,個人目標是編寫一款對普通用戶友好的而功能又相對完善的具備必定電腦使用基的用戶便可使用的掃描器,並藉此以本身的理解對使用到的和種掃描技術進行闡述,以供有興趣的朋友交流學習。
本文第一章對該掃描器的開發背景進行更爲詳細的說明。第二章對該掃描器的開發環境、涉及的端口等概念和使用多線程等技術進行全面闡述。第三四五章分別就掃描器的主體及其九大功能的界面設計、編程實現和測試結果進行系統介紹。第六章是本次畢業設計的總結與展望。
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主要版本及發行年份
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等的調用關係圖
本掃描器在使用VC++6.0編譯器基於MFC6.0在Windows7 32位操做系統上開發而成,經測試,當dll文件齊全時能夠在Windows XP和Windows 7上運行。
網絡安全是指網絡系統的硬件系統、軟件系統及其系統中涉及的數據因受到預設的保護,而能夠連續、可靠、正常地運行,並不因偶然事故或惡意處理而遭受破壞、非法更改、信息泄漏。網絡安全從其本質上來說就是網絡上的信息安全和服務安全,從廣義來講,凡是涉及網絡上信息的保密性、完整性、可用性、真實性和可控性的相關技術和理論都是網絡安全的研究領域。[14]
網絡安全根源主要源於如下四點:①黑客的惡擊,②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]進一步而言,網絡掃描就是構造符合某項協議的包,依據目標計算機的返回的數據包的內容,對目標計算機協議對應的服務是否啓開及服務版本等各類信息的進行判斷的行爲。
網絡掃描紡程和通常的網絡編程的區別是,首先通常的網絡編程一般是服務端和客戶端一塊兒編寫,而網絡掃描一般只是編寫客戶端其目標服務是既有的服務端程序;其次通常的網絡編程一般只會使用一種應用層協議,而因爲掃描器的目標是這些各不相同的服務,因此就得使用衆多不一樣的應用層協議,在編程上就是你要構造和處理更多不一樣的數據包,因此通常來講網絡掃描編程較通常的絡編程要複雜很多。
病毒木馬查殺、垃圾數據清理和開機加速是傳統安全衛士的三大核心功能,咱們注意到的特色是,這些功能的實現主要是讀寫本地磁盤文件來實現不須要經過網絡;去看附加的沙箱,桌面整理也大都如此。而咱們反觀網絡掃描器,從其簡單的主機存活掃描、端口開發掃描開始可能是要使用協議構造數據包去探測的。固然他們會有交集,因爲大面全的發展方向他們的交集會愈來愈大,固然你要問那按這說法他們最終會合並那會兼併誰?我以爲這問題和防火牆和入侵檢測系誰會兼併誰同樣難說,固然也許這也沒那麼最要,就好比如今的手機基本實現了對MP三、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操做系統等等,固然若是你設定的特徵庫出錯,那麼你的掃描結果也就可能出錯。因此能夠說特徵庫的準確與否是一個掃描器好壞的重要體現。固然還要提醒一句特徵庫能夠以數據庫形式保存,並且隨着特徵庫的擴大和可擴展性可維護性要求的提升存放於數據庫也是一種趨勢,但徹底也能夠以其餘形式保存隨編程者的意願。
進程就是一個運行起來的軟件,進程是計算機資源分配的最小單位;線程就是進程中的進程,線程是計算機資源使用的最小單位;當一個進程不啓用多線程時就只存在線程,那麼這個主線程就是進程;當啓用多線程時全部啓的的線程的總和纔是這個進程。單線程的缺點是若是主線程正在爲一個任務忙碌那麼進程就不能進行另外的任務了,好比若是你家若是隻有你一我的,若是你你在去買菜那麼家裏電話響了因沒人接了,若是家裏多一我的那這問題就解決了。多線程正是這個思路,多線程常被用來下降程序的運行時間。[17]固然多線程也不是天衣無縫在同步和參數傳遞兩方面比線程麻煩。在本掃描器上,主機存活掃描和端口掃描等多處使用了多線程技術。
使用從小到大的增序掃描,很容易被防火牆和入侵檢測統判斷出來而阻止爲了能夠不修改防火牆或入侵檢測系的策略,咱們能夠設法消除增序的特徵。首先的方法是與增序相反的逆序掃描,固然這種改進顯然是有限的。第二個方法是隨機重排,就是先將要掃描的端口放入數組,而後產生一個隨機數來進行交換。這是一種可行的算法。但對多線程掃描而言有一種更爲巧妙的處理方法,就是在每一個線程建立以後掛起一個隨機時間,這樣既解決了增序的問題又不用進行重排處理。
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個數都是重載的,不僅一個樣式。
並不是任何問題都有簡單明顯的解決辦法,事實上,許多問題不可能在預約的系統規模或時間期限以內解決。若是問題沒有可行的解,那麼花費在這項工程上的任什麼時候音、人力、軟硬件資源和經費,都是無謂的浪費。[18]下面我將從技術、經濟和操做三方面對本設計進行可行性分析。
在前面章節中提到,咱們提到本設計的目是設計出一個面向普通用戶的掃描器。面向普通用戶的掃描器,其要點有二,一是功能要完善,經常使用的功能也都要有,若是沒什麼功能這樣的設計是沒什麼意義的;二是要界面要友好,須要手動配置的參數不能過多功能不要隱藏太深,讓用戶感受十分複雜。
首先對第一點要求,本設計爲掃描器設計了主機掃描等經常使用的九項功能,應該來講徹底可以知足通用戶的需求。在技術上X-Scan等掃描器都有實現相似功能因此說明在技術上是沒有什麼問題的。具體到我的而言,本身較爲系統地學習過網絡協議同時也有相應的網絡編程和網站開發經驗,再加上參考資料和老師指導,技術上能夠實現。
對於第二點本設計採用了模塊化的設計,每個功能都分爲一個模塊不相關功能不參入,知足高內聚低耦合原則,而後同一功能全部參數都直接在擺到界面上。對此在技術上,設計爲了基於對話框的技術,而後在MFC中提供了一個CTabCtrl類,該類是一個選項卡功能的類,這樣咱們使用它就能將各功能模塊以一個選項卡的形式組織起來。知足界面直觀友好的要求。
在開發環境準備上,計算機設備、操做系統和編譯器是原來就準備好的,不用專門支出,對從事軟件行業的其餘人也是如此。在開發過程當中,咱們只是要本身編寫一個軟件,因此除了我的的時間外並不須要投入其餘成本,這段時間原本就是爲畢業設計準備的,因此不成問題。在後期上,雖然沒有贏利可是也沒有後續的投入。因此最終結論是此掃描器的開發在經濟上可行。
在設計上咱們採用了模塊化的方式並用選項卡組織對用戶友好,在技術上程序是Windows平臺最爲流行的基於MFC框架的基於對話框的程序,對有稍徽有計算機使用經驗的人都不會感受到陌生。對於一些錯誤的操做,好比嗅探器啓動時沒有關鍵字等,也設計了友善的提醒。因此在操做上也是可行的。
根據對對安全形式的觀察判斷,結合用戶的廣泛需求,本文設計的掃描器具備如下九大模塊:主機掃描模塊、端口掃描模塊、NetBIOS掃描模塊、SNMP掃描模塊、弱密碼掃描模塊、嗅探器模塊、DoS攻擊模塊、注入檢測模塊和報告生成塻塊。對應的層次圖如圖3-1所示,對應的界面如圖3-2所示。
主機掃描功能主要是經過向目標IP發送手動構造ICMP包,若是收到目標IP的數據包則判斷IP對應的主機已經開啓。其流程圖如圖3-1所示。
端口掃描功能主要是實現向目標IP指定的口範圍內的端口逐個進行掃描,依據返加結果列出打開的端口,並指出這些開放的口通常對應的服務。其流程圖如圖3-2所示。
NetBIOS掃描功能實現使用使用NetBIOS協議對目標IP進行掃描讀取遠端主機的時間、共享目錄、組列表、本地組、操做系統類型、所支持服務、用戶名列表、會話及TCP鏈接等NetBIOS信息。另外咱們還整合主機名和MAC地址讀取功能。其流程圖如圖3-3所示。
SNMP掃描功能實現完成對支持SNMP(Simple Network Management Protocol,簡單網絡管理協議)的網絡軟硬件的信息的讀取。其流程圖如圖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)。各選項卡具體設計將在下邊依次介紹。整體設計圖以下所示:
原始套接字:在聲明socket時在協議參數有3個可選項,依次是SOCK_STREAM、SOCK_DGRAM和SOCK_RAW,分別表示TCP鏈接方式、UDP鏈接方式和原始套接字方式,前兩種不用也不能本身構造IP和TCP頭部,SOCK_RAW能夠選則本身手動構造IP及更上層協議的頭部。本項功能就是使用原始套接字方式,手動構造IP頭和ICMP頭再加上一個字符串組成ICMP包向目標主機發送。
管道技術:管道技術就是讓一個程序的輸出經過管道能讓其成爲令一個程序的輸入的技術。大致而言就是使用CreatePipe函數建立管道並同時指定讀寫句柄,而後上游程序使用WriteFile函數和寫句柄向管道寫入內容,下游程序經過ReadFile函數和讀句柄從管道讀出內容。
首先檢測主機存活又有管道技術徹底是能夠使用Windows自帶的ping命令,可是ping命令一是不能一次對多個IP進行;二是ping命令中每一個ICMP請求包發送間隔有1000毫秒而正常來講請求和響應的往返時間才幾十毫秒對咱們的掃描工具來講效率有些低下。爲此咱們選擇了自編檢測工具,並改變了掃描算法。
咱們選擇了發送ICMP請求和處理接收到的各用一個線程的方式;在點擊開始按鈕後,直接將要掃描的IP地址插入到CListCtrl控件上,而後啓動一個接收線程並使用WSAictol函數將網卡設置爲混雜模式若是接收目標IP發送來的包就將對應的IP的狀態標爲「通」自始至終沒有的不處理,再而後啓用一個線程對要掃描的IP地址逐個發送手動構造的ICMP請求包。
發送和接收不使用同一線程及將網卡設置爲混雜模式是兩點算法上的設計。對於前者,一方面通常的ping命令的處理方法是:發送探測數據包在下來幾秒內若是接收到應答則顯示相關數據沒有應答則顯示超時發送下一個探測包。這其中有一個等待時間其要遠長於純粹的發送和接收數據包的時間,這在對單個IP的探測而言是沒有問題的,而掃描器經常使用於一次探測多個IP,仍採用同樣的算法總的等待時間將顯得很是長,因此本設計中將接收和發送兩項式做分給兩個線程,「避開」等待時間;另外一方面只要接收到目標主機發送的任意數據包而不必定要ICMP應答包便可判斷目標主機是開啓的,若是使用同一線程在其啓動前關閉後或發送探測包時都有可能有目標主機發送的數據包傳來而引時線程不能處理,因此分開兩個線程提升了掃描的準確性。將網卡設置爲混雜模式也是出於只要接收到數據包而不一要是ICMP應答包便可判斷主機存活的原理。
鑑於端口數較多,爲了追求最快的掃描速度,對每個IP的每個端口咱們都啓動了一個線程建立一個CSocket使用成員函數Connect掃描。若是返回值是true示端口開放反之未開放;對於的開放端口,若是小於1024則使用getservbyport函數獲取對應的服務名稱,若是不是熟知端口,則到到本身設置的口服務對應庫中查詢,實在沒有的服務名賦空值。最後將掃描的IP插入CTreeCtrl中,並將IP開放的端口插入其下。
NetBIOS(NETWORK BASIC INPUT/OUTPUT SYSTEM)網絡基本輸入/輸出系統,是一種用於計算機之間進行通訊的專用程序,是計算機網絡通訊中的重要協議之一。它支持TCP/IP、MAP/TOP、IEEE和OSI等協議,並且NetBIOS正迅速成爲不一樣操做系統環境下廣泛使用的編程平臺。NetBIOS基本概念包括NetBIOS名字、NetBIOS命令、NetBIOS通訊方式等。[19]
對於主機名讀取經過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)函數實現,其要點與讀取共訊止錄相同。
MIB(Management Information Base,管理信息庫)是以樹狀目錄形式保存軟硬件設備的網絡設備信息庫,其分枝節點用於軟硬件的分門別類,葉子結點表明一個具體的軟硬件設備所以又稱「MIB對象」或「MIB變量」。
到此咱們能夠想到要訪問某個值只要使用「全路徑」方式去訪問對應的葉子結點就能夠了,可是這種字符串定位的方式不能很好地表示出兩個節點間的相對位置。因此在ASN.1中爲每一個節點都分配了一個數值表示,葉子結點癸路徑名稱對應的數值串就是一個葉子結點的OID(Object Idetity).在本文設計的掃描器中,正時經過OID值去讀取對相的設備的值。
本項功能的要點是先經過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掃描邏輯圖
命名管道是管道技術的特列,普通管道只能用於父子或兄弟進和之間的通訊,命名管道能夠突破這種限制,只要知道管道名稱和用戶名密碼,即便不一樣主機上的兩個進程也能夠經過命名管道進行通訊。
IPC$(Internet Process Connection)是微軟爲了方便對遠程計算機的訪問而在Windows NT上引入的命名管道,若是能提供遠程主機上存在的用戶名和密碼那麼就能夠IPC$便可鏈接成功。WNetAddConnection2正是構建鏈接的數,對於咱們的掃描器而言則是能夠經過WNetAddConnection2函數創建鏈接成功與否來判斷目標主機是否存在所使嘗試的用戶名密碼組合。
因爲用戶名和密碼各支持兩種式,因此要設置兩層判斷,在外層先判斷用戶模式在裏層判斷密碼模式後調用不一樣的處理方法。存方用戶名和密碼的文件都使用dic格式每行一個值,使用CstdioFile類打開,其readLines成員函數能夠實現按行讀取。
雖說有四個不一樣處理函數但其要點都是一至的,就是構造好一組要進行測試的用戶名密碼,使用DWORD WNetAddConnection2(LPNETRESOURCE lpNetResource,LPCTSTR lpPassword,LPCTSTR lpUsername,DWORD dwFlags)函數嘗試鏈接,若是返回值是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注入在OWASP TOP10上長期佔據第一的位置。[20]在開始的時候SQL注入沒被發現或者應該說沒被重視,由於在B/S架構興起以前,使用的都是C/S結構,雖說經過攔截客戾端和服務器的通訊數據包仍是能夠實現注入檢測,可是基於每一個軟件的實現的功能是不同的,即使是相同的功能實現的方式也可能是不同的,因此說手動檢測注入是可能的,對一個軟件的某個版本編寫一個掃描器也是可能的,可是面對大量的設計不一致要編寫一個通用的注入掃描基本是不可能的。而在B/S興起的初期網頁都是靜態的HTML頁面,注入檢測也無用武之地。
在B/S架構使用統一的80端口,統一經過URL提交全部的用戶輸入,服務器統一處理然後統一返回處理結果和web2.0數據庫引入兩個條件知足後,SQL注入攻擊手段才興起,在新世紀初SQL注入方式因爲相對統一的URL方式使得注入檢測相對簡單,SQL沒有過濾因此屢試不爽。不過在表單多改成post方式提交再加上SQL過濾技術成熟以後SQL注入掃描器編寫難度大大提高,這也是咱們計的掃描器只能實現半自動甚至說手動的緣由。
起動一個線程,建立一個TCP類型的socket,而後將UEL和參數按http格格式養到一個CString類型的變量中使用send函數發送出去,而後使用recv函數據收返回的應答,若是應答數據包中找到用戶設定的關鍵詞便提示存在漏洞。要注意的是參數記得要進行URL編碼,就是「’」要用「%27」代替,空格要用「%20」代替等等。
本文設計的掃描器報告選項卡將前邊的九大功能以複選框的形式給出,若是選擇執行那麼就使用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搭建的Windows 7虛擬機。結果信息與實際信息相一致。
圖5-3 NetBIOS掃描測試結果圖
在SNMP掃描中咱們仍採用192.168.80.135虛擬機進行測試。在與NetBIOS相重的用戶列表上,用戶名是相一致的因此兩均可以相互印證對方的正確性。
圖5-4 SNMP掃描測試結果圖
在本項功能咱們目標主機還是192.168.80.135虛擬機,用戶名手動輸入,密碼採用密碼文件。本項功能同時證實NetBIOS和SNMP兩項功能掃描出來的「web」用戶確實存在。
圖5-5 弱密碼掃描測試結果圖
本項功能咱們對「http」和「ip」兩個關鍵字進行監聽,結果成功攔截到了數據包。
圖5-6 嗅探器測試結果圖
在本項功能的測試中咱們啓動1000個線程對192.168.80.135進行了鏈接。
圖5-7 DOS攻擊測試結果圖
在注入檢測中,爲了進行測試咱們在本地使用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 注入檢測測試結果圖
如下是掃描器生成的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.
基於國際標準的家庭用戶安全指導工具
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中,咱們介紹了在這項研究中採用的安全概念。
安全與保護資產免受威脅相關,在威脅被分類的地方,它們被歸類於其濫用保護資產的可能性。全部類別的威脅應該被考慮;然而,在域的安全裏與人類有關的行爲應給予更大的重視,不論他們是不是惡意的。
維護權益資產是全部者或是對這些資產的價值的使用者的責任。實際或假定的威脅代理人也可能對資產的價值,並尋求濫用與全部者利益相悖的資產。業主認爲這些威脅會形成資產的減值,這樣的資產的全部者的資產將會減小。常見的具體減值一般包括但不限於,損害披露的資產,未經受權的收件人(保密),經過未經受權的資產損害修改(完整性的喪失),或未經受權的剝奪得到資產(可用性損失)。
資產的全部者將分析可能的威脅,以肯定哪些適用於他們的環境。結果被稱爲風險。這種分析能夠幫助選擇對策,將風險下降到可接受的水平。
實施對策,以減小脆弱性和知足業主的安全要求的資產。在實施後的對策後仍然可能殘留脆弱性。便如漏洞可能做爲表明的資產風險的殘留水平被威脅代理人利用。因此擁有者應尋求最大限度地減小殘餘漏洞。
在論文即將完成之際,首先要感謝的是楊鋒老師,由於他的用心指導和鬆馳有度的要求我才能很好地肯定論文的寫做方向和把控論文的進度。其次要感謝同一導師的同窗,我很是喜歡人人蔘與、無拘無束的交流,他們給予了我這樣的感覺,同時還幫我解答了論文方面的如格式等的很多問題。還要感謝個人舍友們,和他們一塊兒討論就有了不少思路,看他們在趕本身也就不會放鬆。還要感謝個人父母,當論文寫得十分煩燥的時候回去見見他們,心情就平復了不少。還要感李道豐老師,沒有他以前在學習上的教導,我不可作得出這個畢業設計,他嚴謹務實、認真負表還平易近人的作風讓我非常受益。最後要感謝其餘全部給予過我由衷的讚揚、設身處地的理解、或大或小的幫助、耐心的包容和藹意的批評的全部人。在此一併祝他們身休健康、學習進步、工做順利、生活幸福。