目錄
- 一,緒論與背景
- 1.1,緒論
- 1.1.1,專案概述與背景
- 1.1.2,定義與術語
- 二,需求分析
- 2.1,系統設計概述
- 2.1.1,需求分析
- 2.1.2,概要設計
- 2.2,功能設計
- 2.3,功能需求
- 三,詳細設計
- 3.1,系統結構設計
- 3.2,模塊設計
- 3.2.1,弱口令檢測
- 3.2.2,埠掃描檢測
- 3.2.3,本地安全檢測
- 3.2.4,系統版本及補丁檢測
- 3.2.5,網路配置檢測
- 3.2.6,安全日志檢測
- 3.3,程式函式清單
- 設計成果
- 設計心得
一,緒論與背景
1.1,緒論
近年來,隨著人類社會的進步和資訊技術的發展,人類在能源、環境、交通、居住、安全等領域都面臨著嚴峻的挑戰,迫使人們不得不利用大資料、物聯網等互聯網技術實作更加高效、智能的資源利用和調配模式,
在大資料成為國家戰略的今天,企業的組織、生產和經營活動都以資料為基礎開展和優化,不僅是資訊類產品和服務,在交通、能源電力、市政管理、金融、環境保護、教育、醫療、安防反恐等領域,對互聯網的依賴也越來越強,隨之而來的資料被泄漏、篡改,網路攻擊等問題也越來越嚴重,
網路安全問題,關乎百姓生活與社會穩定,從大處看,會影響能源、交通等基礎設施的正常運行,影響金融、教育、醫療等各行業的秩序,甚至影響地緣政治的穩定;往小處看,每個人的隱私、企業的商業機密泄漏都會帶來各種各樣的社會問題,
而作為網路空間安全學院學生的我們,也在不斷的了解和學習有關安全的知識,這一次的資訊安全課程設計,我們選擇了題目二——“Windows或Linux作業系統安全配置自動檢測技術”,而Windows作為全球應用范圍最廣,知名度最高的作業系統,在有著強大功能的同時,也隱藏著不少漏洞,安全軟體公司 BeyondTrust 近日發布了一份《2021 年度微軟漏洞報告》,在 2020 年在微軟產品中共發現了 1268 個漏洞,創歷史新高,其中 Windows 產品的漏洞達 907 個,且有 132 個為關鍵性漏洞,更加嚴重的是,很多Windows用戶并沒有很強的安全意識,他們對自己的電腦了解不深,對電腦的安全配置也沒有一個很好的布置,在互聯網技術高度發達、人們的財產和隱私與電腦和網路高度連結的今天,維護互聯網、電腦系統的任務迫在眉睫,
1.1.1,專案概述與背景
Windows 系統的“漏洞”就像它的GUI(圖形界面)一樣“舉世聞名”,幾乎每個星期都有新的漏洞被發現,這些漏洞常被計算機病毒和黑客們用來非法入侵計算機,進行大肆破壞,雖然微軟會及時發布修補程式,但是發布時間是隨機的,而且這些漏洞會因Windows軟體版本的不同而發生變化,這就使得完全修補所有漏洞成為頭號難題,
1.1.2,定義與術語
-
弱口令:
沒有嚴格和準確的定義,通常認為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令,弱口令指的是僅包含簡單數字和字母的口令,例如“123”、“abc”等,因為這樣的口令很容易被別人破解,從而使用戶的計算機面臨風險,因此不推薦用戶使用, -
Windows power shell :
Windows PowerShell 是一種命令列外殼程式和腳本環境,使命令列用戶和腳本撰寫者可以利用 .NET Framework的強大功能,它引入了許多非常有用的新概念,從而進一步擴展了您在 Windows 命令提示符和 Windows Script Host 環境中獲得的知識和創建的腳本, -
Telnet :
Telnet協議是TCP/IP協議族中的一員,是Internet遠程登錄服務的標準協議和主要方式,它為用戶提供了在本地計算機上完成遠程主機作業的能力,在終端使用者的電腦上使用telnet程式,用它連接到服務器,終端使用者可以在telnet程式中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制臺上輸入一樣,可以在本地就能控制服務器,要開始一個telnet會話,必須輸入用戶名和密碼來登錄服務器,Telnet是常用的遠程控制Web服務器的方法, -
SSH :
SSH 為 Secure Shell 的縮寫,由 IETF 的網路小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議,SSH 是較可靠,專為遠程登錄會話和其他網路服務提供安全性的協議,利用 SSH 協議可以有效防止遠程管理程序中的資訊泄露問題, -
KB:
KB是微軟對補丁的命名方式,是Knowledge Base(知識庫)的簡稱,
其指的是某個補丁對應微軟知識庫中哪一篇文章,例如KB888111,就是對應 知識庫中888111號文章, -
POC
POC,Proof of Concept,中文意思是“觀點證明”,這個短語會在漏洞 報告中使用,漏洞報告中的POC則是一段說明或者一個攻擊的樣例,使得 讀者能夠確認這個漏洞是真實存在的, -
EXP
EXP,Exploit,中文意思是“漏洞利用”,意思是一段對漏洞如何利用 的詳細說明或者一個演示的漏洞攻擊代碼,可以使得讀者完全了解漏洞的機 理以及利用的方法, -
CVE漏洞編號
CVE 的英文全稱是“Common Vulnerabilities & Exposures”公共漏洞和暴露,例如CVE-2015-0057、CVE-1999-0001等等,CVE就好像是一個字典表,為廣泛認同的資訊安全漏洞或者已經暴露出來的弱點給出一個公共的名稱,如果在一個漏洞報告中指明的一個漏洞,如果有CVE名稱,你就可以快速地在任何其它CVE兼容的資料庫中找到相應修補的資訊,解決安全問題,
二,需求分析
2.1,系統設計概述
本系統是對Windows作業系統安全配置等進行全面掃描,從六個方面排查本機作業系統可能出現的風險與問題,并基于一套詳盡的評分體系可以給出各項的評分結果以及總評,
2.1.1,需求分析
作業系統本身設計的安全性可能比較高,但可能由于使用和配置的不當,造成作業系統實際的安全性能降低,通過作業系統安全評估,發現主機和網路設備的漏洞和安全隱患,通過實驗,使學生認識作業系統安全評估與檢測的重要性,掌握作業系統安全評估與檢測的內容和方法,
2.1.2,概要設計
最開始我們通過查詢各種,得知了一個判斷漏洞的方法,根據版本號和補丁與最新版本的對比,但是這樣的對比只能證明這是一個潛在的漏洞,也就是說系統有潛在的不安全因素,但不能說系統一定不安全,如果還需要進一步的判斷系統是否存在該問題,最好還是設計一個腳本攻擊一下,但是我們最終版本,只是設計出來檢測潛在的不安全因素,并沒有具體的去攻擊證明漏洞的存在,我們從以下幾個方面進行分析,然后給出一個較為全面的判斷,

該安全檢測程式主要從圖示幾個方面進行權衡打分,分別是安全日志、弱口令、網路配置、版本系統日志、本地安全檢測、埠掃描,
- 弱口令:
從本地安全策略和爆破嘗試出發,進一步檢查口令強度,這里的弱口令從兩個方面出發,一個是管理員口令,和windows登錄時的口令, - 埠掃描:
通過系統cmd指令查詢開放的埠號和系統行程的檢測,把二者形成的表通過PID匹配,形成一個完整的資訊表,再通過已有資料判斷是否有高危埠被打開,和一些建議關閉非必須打開的埠被打開了來評判,掃描的資訊還獲取了本地地址和外部地址,以及埠所在狀態,可以利于人工進一步分析, - 本地安全檢測:
通過呼叫power shell查詢計算機自身狀態,和查找windows本地安全策略,通過windows 10專業版自帶的系統檔案進行一個全面的評價打分,最后查詢防火墻狀態, - 版本系統自查:
通過查詢windows版本號和對應的補丁,判斷系統是否已經達到現版本的最 佳狀態, - 網路配置:
查找組態檔中是否有非必須開啟的服務, - 安全日志:
調取系統安全日志,對安全日志進行分析,判斷有無危害系統安全的行為,
2.2,功能設計

此軟體的功能為對計算機的系統安全進行全方面的掃描,共分為六個部分,生成六分小報告,并最終生成一份總體的報告,每一份報告中都會對該項進行打分,滿分為一百分,
2.3,功能需求

三,詳細設計
3.1,系統結構設計

通過六個部分打分評測,并且各自生成一份具體的報告,然后最后再合成一份整體的報告,對系統進行全面的評測,
3.2,模塊設計
3.2.1,弱口令檢測
本課題中,針對作業系統弱口令的檢測,我們從兩個方面開展,
一方面,我們通過讀取作業系統本地安全策略中對密碼的設定、要求來評判,在windows10的作業系統中,可以設定“密碼必須符合復雜性要求”,進一步可以規定具體的密碼長度,密碼由幾種字符組成,密碼的最短、最長使用期限等,設定復雜性強的密碼且養成更換密碼的習慣,可以防范密碼泄露、社會工程學等隱患,此外,安全策略中還有賬戶鎖定策略,防止惡意腳本攻擊或設備被盜取造成個人資訊泄露,
有的時候,設備需要面臨多用戶使用,設定科學的密碼策略,有助于提高全體用戶的密碼魯棒性,保障整個系統的安全運轉,

另一方面,我們采用不同角度的實踐操作來檢驗弱口令,
針對弱口令檢測的工具有很多,我們選用了Ophcrack、Hydra兩個工具分別檢測,
Ophcrack有獨特的彩虹表結構,找到存盤對應哈希值的檔案,匯入軟體,可以進行查找和破解;在Hydra的操作中,在kali的Hydra支持下,我們選用了大小為2萬的密碼本再次進行了檢測,依然未能成功,

隨后,我們使用Python撰寫腳本,直接向cmd發送指令嘗試,發現在用戶鎖定策略的限制下,無法進行有效的嘗試就會被賬戶鎖,且賬戶鎖定期間手動也無法獲取管理員權限,
因此,在多次嘗試弱口令爆破失敗之后,我們采用獲取本地安全策略的方式,通過允許最小密碼長度,密碼復雜度等多維度來衡量弱口令安全分數值,
3.2.2,埠掃描檢測
定義:
埠掃描是指發送一組掃描訊息,了解其提供的計算機網路服務型別(這些網路服務均與特定的埠號系結),埠掃描是網路安全作業者的必備的利器,
埠掃描定義是客戶端向一定范圍的服務器埠發送對應請求,以此確認可使用的埠,雖然其本身并不是惡意的網路活動,但也是網路攻擊者探測目標主機服務,以利用該服務的已知漏洞的重要手段,埠掃描的主要用途仍然只是確認遠程機器某個服務的可用性,
掃描多個主機以獲取特定的某個埠被稱為埠清(Portsweep),以此獲取特定的服務,例如,基于SQL服務的計算機蠕蟲就會清掃大量主機的同一埠以在 1433 埠上建立TCP連接,
通過資料查詢,我們了解到:Windows10默認開啟一些日常用不到的埠,這些埠讓黑客有機可乘(黑客會使用工具掃描計算機上的埠,并入侵這些埠),關閉這些高危埠,可使我們的電腦避免遭受攻擊,例如關閉445埠等,可有效防止勒索病毒防止互聯網上出現針對Windows作業系統的勒索軟體的攻擊案例,
當然,因為技術問題,我們的埠掃描和市面上的主要軟體還是有所差距,我們的埠掃描主要是查詢本地計算機開放的埠、狀態、外部地址、以及pid對應的行程,

演算法實作:
1. import sys
2. import os
3. import re
4. class Logger(object):
5. def __init__(self, filename="Default.log"):
6. self.terminal = sys.stdout
7. self.log = open(filename, "a")
8.
9. def write(self, message):
10. self.terminal.write(message)
11. self.log.write(message)
12.
13. def flush(self):
14. pass
15.
16. sys.stdout = Logger('a.txt')
17. netinfo = os.popen('netstat -ano')
18. cmt = re.compile("[^\s]+")
19.
20. pids = []
21. result = []
22.
23. i=0
24. for x in netinfo.readlines():
25. temp=cmt.findall(x)
26. if(i!=4):
27. i+=1 #舍棄前四行
28. else:
29. result.append(temp) ##雙層串列保存netstat讀出的資訊
30. #res[len(res)-1]
31.
32. i=0
33. for y in os.popen('tasklist').readlines():
34. temp = cmt.findall(y)
35. if (i != 4):
36. i += 1 # 舍棄前四行
37. else:
38. pids.append(temp) ##雙層串列保存netstat讀出的資訊
39.
40. for res in result:
41. for pid in pids:
42. if(pid[1]==res[len(res)-1]):
43. res.append(pid[0])
44.
45.
46.
47. output = open('D:/data(final).xls','w',encoding='gbk')
48. output.write('協議\t本地地址r\t外部地址\t狀態\tPID\t行程名\n')
49. for i in range(len(result)):
50. for j in range(len(result[i])):
51. output.write(str(result[i][j])) #write函式不能寫int型別的引數,所以使用str()轉化
52. output.write('\t') #相當于Tab一下,換一個單元格
53. output.write('\n') #寫完一行立馬換行
54. print("thanks")
以上是代碼的主要部分
通過python陳述句呼叫cmd命令列,在cmd中輸入對應指令,查詢本機開放埠資訊,再查詢運行的行程資訊,在行程和埠之間有個共通之處,那就是PID,我們通過PID實作了兩個表的連接,最終形成了一個完整的表,通過對作業系統的知識學習,PID是行程識別號,每次啟動,甚至每臺電腦,可能對應的PID對應的行程都不一樣,所以PID其實并沒有太大作用,需要的是行程的名字,在連接的程序中需要有資訊的篩選和匹配,我們使用了python中的正則運算式來幫助我們實作這個目標,
cmd命令列為windows提供了DOS命令netstat,可以顯示當前的 TCP/IP 網頁持續環境,讓用戶得知有哪些網路連接正在運作
netstat -ano :-a 可以查詢顯示所有socket,包括正在監聽的 -n 以網路IP地址代替名稱,顯示出網路連接情形,-o 顯示太網統計資訊(timers),
“Tasklist”命令是一個用來顯示運行在本地或遠程計算機上的所有行程的命令列工具,帶有多個執行引數,
我們通過資料查詢到的幾個危險埠,這些高危埠通過各種百科的定義都是屬于一般情況下不會打開,并且有風險,我們有理由認為,這些埠的打開的風險大于收益,因此建議關閉,這一類埠會進行扣分,扣兩分,然后建議用戶關閉,還有一類是屬于有特殊需求的用戶可能會開放的埠,但是鑒于常見的計算機都沒有這部分需求,所以我們會給出建議并扣分,這類埠扣一分,然后用戶可以通過對應的行程和自己的需求自行判斷是否需要開放該埠,
該演算法還會在每次分析后生成一個檔案,類似于日志記錄每次的評分,也可以查詢歷史評分,
3.2.3,本地安全檢測
模塊設計思路:
1)利用Powershell檢查計算機的狀態,在這部分內容中,我們利用了Microsoft官網給出的專門檢測計算機各項能夠代表計算機安全狀態的命令Get-MpComputerStatus來檢查我們的計算機目前的防護能力,按照我們選出的評分標準進行分數的評判,
2)利用cmd命令secedit /export /cfg gp.txt /log 1.log檢測本地安全策略中用戶權限分配中的各項并將它到gp.txt中,我們利用查找工具來找到這個txt檔案在整個計算機中的位置,我們讀取檔案后利用正則運算式去查找我們所需的評分項,提取出里面的要點來進行打分,
3)利用cmd命令netsh firewall show config檢測本地防火墻狀態,監督所有與外界有包經過防火墻的行程,我們利用正則運算式來選取幾項得分項判斷這些得分項是否符合我們的標準,并給出最后的得分,
3.2.4,系統版本及補丁檢測
一個基于主機系統版本號與已有的KB的漏洞掃描程式,
步驟:
1.利用powershell腳本采集主機的系統版本與KB資訊
2.在微軟官網上收集CVE與KB對應的關系,并存盤進資料庫(db檔案)中
3.用系統版本與KBt與資料庫中資料比較,尋找主機沒有對應KB的CVE
4.獲取上一步中得到的CVE的威脅分類
5.根據威脅分類評分
威脅分類與危險等級評估可見評分手冊,
演示效果:

資料庫(CVE與KB對應的關系)展示:

3.2.5,網路配置檢測
簡要介紹:
對于網路配置的安全性來說,我們去上網查找了許多資料,在cmd中輸入ipconfig就可以查看該電腦的網路配置,不過我們直在安全性上陷入了迷茫,最后才在與網路相關的服務中做文章,我們的計算機中有許多網路部分相關的服務,而這些服務卻并不是都對我們的日常使用會有幫助,有一些少用、甚至完全用不上的服務,就可以選擇關閉掉,于是我去上網路上找到了一些常見的不必要開啟的網路服務,并通過python呼叫windows的服務系統,檢測相關的服務是否關閉,并且會有一個相關的打分評價,評價是基于我去查看windows網路服務具體的內容,根據關閉后對普通用戶的影響大小,來進行或高或低的打分評價,同時,作為網路中重要的一環,internet的連接檢測也加入在內,原理則是通過呼叫ping指令,并以www.baidu.com為測驗的站點,對網路連接狀況進行檢測,值得一說的是,加上這一點的理由是我在查閱常見的與網路配置有關的問題的時候,有一個問題是微信和qq可以正常使用,但是上網卻做不到,就是因為本身就沒有連上internet網路,但是qq與微信有備用的dns服務器,所以能夠正常使用,不過比較可惜的是,并沒有能夠解決有關dns服務器出現問題的進一步處理,
程式撰寫的思路:
這次有關于網路配置服務的檢測程式結構相對比較簡單,主要就是引入了wmi類,使用了Win32_Service函式就是可以直接呼叫服務的資訊,再通過if條件來進行具體情況的一個判斷,并進行一個相應的打分,而且為了讓用戶更好的了解這些不太必要的服務的具體情況,我也在后面加上了一些對服務的解釋,具體的服務功能和扣分情況有在評分手冊里面詳細說明,這里可以簡單談談選擇這些服務的原因,
1.DHCP Client
如果是手動分配的ip就可以關閉,不過現在大多都是自動獲取ip地址了,
2.Background Intelligent Transfer Service
如果不用系統自動更新,并且已經關閉win10系統自動更新的用戶可以關閉此服務,對系統使用沒有任何的影響,但是想要使用win10系統自動更新的用戶千萬不要關閉此服務,
3.Computer Browser
家庭用戶一般不會涉及到局域網是可以禁用掉的,但是網吧或企業就要用到局域網檔案共享是需要開啟這個服務的,
4.IP Helper
用于IPV6的服務,在之前的話可能還要調成手動,現在的話完全可以打開,
5.Print Spooler
不使用列印機的就可以關閉該服務,
6.Remote Registry
如果遠程的計算機連接到了你的計算機那么他可以通過字符界面或者其他方式遠程修改注冊表.這是一個相當嚴重的漏洞,可以為黑客入侵提供早期的方便(修改某些專案便于入侵,比如作業系統版本). 因此關閉這個服務沒有什么害處,而益處很多.強烈建議關閉,并且禁用.另外系統中沒有其他服務是依賴或者跟此服務有關聯的,所以禁用之后不會對其他服務產生影響,
7.Server
該服務提供RPC支持以及檔案、列印和命名管道共享,Server服務是作為檔案系統驅動器來實作的,可以處理I/O請求,如果用戶沒有提供適當的保護,會暴露系統檔案和列印機資源,對于Windows系統而言,這是一個高風險服務,Windows中默認共享的存在就是該服務的問題,如果不禁用該服務,每次注銷系統或開機后,默認共享就會打開,你的所有重要資訊都將暴露出來,同時,由于很多 Windows使用者為了使用方便把管理員密碼設定為空密碼或非常簡單的密碼組合,這給了黑客可乘之機,
所以,如果不是作業環境下,不需要使用局域網和共享列印機的,建議關閉此項服務,
8. TCP/IP NetBIOS Helper
NetBIOS在Win 9X下就經常有人用它來進行攻擊,然后將此資料寫入日志或觸發警報為了防止被遠程計算機搜索資料,否則一定要禁止它,
9.Windows Remote Management (WS-Management)
如果不是用遠程界面就可以關閉的服務,
10. Windows Error Reporting Service
如果電腦性能不是很好的話建議關閉,如果電腦性能優秀的話建議開啟,畢竟這些錯誤的資訊有助于微軟幫我們改善系統,是跟我們的利益切身相關的,
下面展示一些 行內代碼片,
1.c = wmi.WMI()
2.count = 0
3.score = 100
4.running_service = c.Win32_Service(State="Running")
5.for s in running_service:
6.
7. if(s.Name == "Dhcp"):
8. print(s.Caption,"服務正在運行,如果不使用動態ip地址,就禁用該服務\n")
9. count+=1
10. score-=0.5
11. if(s.Name == "BrokerInfrastructure"):
12. print(s.Caption, "服務正在運行,如果不啟動自動更新,就禁用該服務\n")
13. count+=1
14. score-=1
15. if (s.Name == "Browser"):
16. print(s.Caption, "服務正在運行,建議禁用\n")
17. count += 1
18. score-=2
19. if (s.Name == "iphlpsvc"):
20. print(s.Caption, "服務正在運行,建議禁用,該服務用于轉換IPv6 to IPv4\n")
21. count += 1
22. score-=2
23. if (s.Name == "Spooler"):
24. print(s.Caption, "服務正在運行,如果不需要列印,建議禁用該服務\n")
25. count += 1
26. score -= 1.5
27. if (s.Name == "RemoteRegistry"):
28. print(s.Caption, "服務正在運行,該服務主要用于遠程管理注冊表,建議禁用該服務\n")
29. count += 1
30. score -= 2
31. if (s.Name == "LanmanServer"):
32. print(s.Caption, "服務正在運行,如果不使用檔案共享,就禁用該服務,禁用本服務將關閉默認共享\n")
33. count += 1
34. score -= 1
35. if (s.Name == "lmhosts"):
36. print(s.Caption, "服務正在運行,建議禁用\n")
37. count += 1
38. score -= 1
39. if (s.Name == "WinRM"):
40. print(s.Caption, "服務正在運行,建議禁用\n")
41. count += 1
42. score -= 1
43. if (s.Name == "FontCache"):
44. print(s.Caption, "通過快取常用字體資料優化應用程式的性能,如果尚未運行該服務,則應用程式將啟動該服務,也可以禁用該服務,但是這樣做會降低應用程式性能,\n")
45. count += 1
46. score -= 1
47. if (s.Name == "WinHttpAutoProxySvc"):
48. print(s.Caption, "服務正在運行,建議禁用\n")
49. count += 1
50. score -= 2
51. if (s.Name == "WerSvc"):
52. print(s.Caption, "允許在程式停止運行或停止回應時報告錯誤,并允許提供現有解決方案,還允許為診斷和修復服務生成日志,如果此服務被停止,則錯誤報告將無法正確運行,而且可能不顯示診斷服務和修復的結果,\n")
53. count += 1
54. score -= 1.5
55.print ("共 %d 項建議關閉的應用\n" %(count))
56.print ("評分為%d分" %(score))
(部分檢測服務和打分功能的實作)
而網路連接檢測則是通過os.system函式,函式會回傳0或者其他值,只有回傳0,才表示能夠連接到后面的網路地址,
1.import os
2.exit_code = os.popen('ping www.baidu.com')
3.exit_code1 = os.system('ping www.baidu.com')
4.out = exit_code.read()
5.print(out)
6.if exit_code1==0:
7. print("網路連接正常\n")
8.else:
9. print("無法連接到Internet\n")
3.2.6,安全日志檢測
安全日志可以記錄我們在每個物件上設定的審核策略定義的每個事件,它可以看作是計算機自己記錄的“日記”一樣,它在記錄這些事件的同時為這些事件確定了等級,這可以讓我們在眾多事件中找到一些例外的可能對我們的計算機造成一定損害的事件,這對于我們來說可謂是一個很實用的工具,
模塊設計思路:
在這個部分中,由于Windows系統安全日志存放在C:\Windows\System32\winevt\Log\中,由于系統自帶的權限管理和防護,我們如果要在這里對日志進行操作的話會很麻煩,所以我們選擇將Windows安全日志調出到D盤以實作整個流程,由于以evtx為擴展名的檔案我們是沒有辦法處理的,因此我們利用一個Microsoft的插件LogParser來實作從evtx檔案到csv格式的轉化,由于讀入csv時會出現編碼的問題,因此我們采取了將檔案重命名的方法,將csv檔案來轉化為txt檔案,通過對于txt的讀取,我們可以看到Windows最近存盤的20M系統日志,我們利用正則運算式來實作對于總體的檔案所需的事件ID和事件等級的提取,最后利用我們的分數計算函式來計算出我們的計算機在Windows安全日志部分的得分,
3.3,程式函式清單
- 實作編碼的轉換
def change(path,coding): - 獲得所有txt檔案的路徑,傳入檔案所在檔案夾路徑
def find_all_file(path): - 修改檔案編碼方式 path是絕對路徑
def change_to_utf_file(path): - 判斷是不是utf-8編碼方式 回傳編碼格式
def judge_coding(path): - 多執行緒加速官網漏洞庫掃描
class CVEScanThread(threading.Thread) - 多執行緒加速shodan網站CVE-POC查詢
class POCScanThread(threading.Thread): - 獲取本系統資訊
Def python_call_powershell() - 更新CVEKB資料庫
Def update_cvekb_database() - 對官網資料進行分頁
def get_page_num(dstDateStrArg=None) - 每一頁的查詢
def update_onepage_cvedb_database() - 根據系統資訊查找無KB的CVE
def select_CVE(tmpList=[], windowsProductName="", windowsVersion="") - 通過一個cve查找poc,用字典存盤,便于扣分
def check_POC_every_CVE(CVE) - 多執行緒查詢CVE對應的POC
def update_cvepoc_dir(cveList=[]) - 評分函式
def assessment(cveList=[]) - 自己定義的埠掃描
def port_scanning - 構成生成日志
Class Logger
Def write
Def flush
設計成果


設計心得
本次小學期的選題是windows作業系統安全配置缺陷自動檢測技術,我們也通過這次的學習與實踐,對windows系統又有了更加深刻的了解,不過比較遺憾的是以我們目前的技術水平只能做到呼叫windows的本地策略,為用戶提交一份有關的報告,并沒能做到深入檢測系統檢測不到的漏洞,雖然我們也知道這樣的難度會大大增加,不過我們也相信,這一次又一次的課程實踐,能夠讓我們成長更多,并向著更加高端的技術前進,
在寫這部分代碼的時候,我們也遇到過很多問題,例如:我們無法利用cmd命令列來實作對于系統日志的列印和修改,我們也沒有辦法更改csv檔案的編碼格式,現在仔細一想,我們也算是另辟蹊徑,從不同的方向到達了同樣的地點,在這其中,我們其實走了不少的彎路,我們在這上面也是花了很長的時間去實作,其實如果按照原本的設想去實作的話,我們其實可以節約很長的時間,可以去實作在更廣的領域開展更加深入的探索和研究,在今后的大學時光中,我們會不斷吸收和計算機安全相關的知識,讓自己的內涵更加充實,從而在更多的專案中發揮出更大的作用,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/340662.html
標籤:其他
下一篇:網路安全之滲透實戰學習
