版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
木馬檢測工具的實現—畢業(yè)設計論文畢業(yè)設計(論文)木馬檢測工具的實現論文作者姓名:申請學位專業(yè):申請學位類別:指導教師姓名,職稱,:論文提交日期:木馬檢測工具的實現摘要近年來,“特洛伊木馬”(以下簡稱木馬)數量迅速增加,在各類非法程序中已經占到了極大的比重,由木馬所造成的破壞和損失也越來越嚴重,因此,反木馬的研究己成為網絡安全領域的一個熱點和重點。基于特征碼的靜態(tài)掃描技成為反木馬、反病毒等術由于具有檢測潛伏的木馬、病毒等非法程序的能力,研究領域的一個熱點,所以至今特征碼技術得到了廣泛的應用。特征代碼法,是目前公認的檢測己知病毒的最簡單、開銷最小的方法。檢測工具在將已知木馬以二進制讀取到的4096位字符串,通過MD5取摘要作為特征碼,然后將這些木馬獨有的特征搜集在一個木馬特征碼數據庫中。每當需要確定文件是否為木馬的時候,檢測工具會以掃描的方式將數據文件與特征碼數據庫內的現有特征,如果雙方數據吻合,就可以判定該數據文件為木馬文件。本工具碼一一比對檢測準確,可識別病毒的名稱,依據檢測結果,可做相應的處理。關鍵詞:網絡安全;木馬;MD5;特征碼TheImplementationofaTrojanDetectionToolAbstractInrecentyears,thenumberoftrojanisincreasingveryrapidanditnowamountstothemostpartamonginalltheillegalprograms.Trojanshavebroughtmuchmoreseriousdamagesandlosses.Asaresult,theresearchofanti-trojanhasalreadybecomethehotspotandthemainemphasisintheareaofnetworksecurity.Becauseofitsabilityofdetectingunknowntrojans,signature-basedscanninghascurrentlyturnedintohotspotintheanti-trojanresearcharea.Sothecharacteristiccodetechnologyisusedwidely.ThecharacteristiccodetechnologyisthemethodthathasthesimplestandlowestexpensetochecktheTrojans.Thetoolgets4,096bitsfromtheknownTrojansfile,andgetsitsmessagedigestwithMD5algorithm,thenputsthisvalueinanINIfileasthedatabaseofTrojancharacteristiccode.Whenafileischecked,thetoolwillscanthefileandcomparewiththecharacteristiccodedatabase,ifthemessagedigestofthisfileisequaltoacertainrecord,thenwecandeterminethefileisaTrojanfile.Theaccuracyofourtoolisveryhigh,andcanidentifythenameoftheTrojan.Accordingtotheresult,itcantakecorrespondingmeasuretodealwiththeTrojanfile.Keywords:Networksecurity;Trojan;MD5;Characteristiccode目錄論文總頁數:26頁引 1木馬查殺工具設計背景 1木馬的概念及技術原理 1木馬的?,F在流行的查殺方害 現在流行的查殺方 31.2式 3木馬檢測的實現方法 61.3PE文件靜態(tài)信息的提取和特征碼的設置 6特征碼選擇與采 8特征碼庫的設計 8信息摘要技術中的MD5算法 9MD5算法的原理及應用 10MD5作特征碼簡介 112 需求分析及方案設計 112.1本工具要完成的功環(huán)境需能 求 112.2 112.3可行性研究 113木馬查殺功能的實現 123.1工具模塊介紹 123.2木馬特征碼的讀取 123.3獲得文件MD5特征碼
143.4文件屬性的更 143.4文件屬性的更實現驅動器的選改 實現驅動器的選 193.5擇 193.6MD5 特征碼查殺 22結論 23參考文獻 24致謝 25聲明 261引言木馬查殺工具設計背景“特洛伊木馬”這個詞源于希臘古神話中的一場戰(zhàn)役,而今天計算機的應用領域中,木馬的存在給網絡安全帶來了不容忽視的問題。計算機網絡發(fā)展到今天,已經迅速延伸到世界的每個角落,大到政府、公司,小到家庭、網吧等場所,己經處處離不開網絡,隨時隨地都要接入Internet與世界同步。信息產業(yè)的發(fā)展的確使我們生活有了很大的改善,但是如何控制信息的安全性呢。有人為了竊取商業(yè)機密,個人隱私,使用非法手段,利用操作系統(tǒng)的漏洞,為目標計算機植入木馬,這就相當于在對方計算機中安排“內應”,而對方使用者卻毫于是被植入木馬的計算機對于入侵者來說完全就是透明的了,毫無機無察覺,密可言。所以木馬的出現給網絡帶來了非常嚴重的負面影響。在計算機安全學中,特洛伊木馬是指一種表面上有某種功能,而內部隱藏著完成特殊任務代碼的計算機程序。它利用自身具有的植入功能或依附其它具有傳播能力病毒等途徑,進駐目標機器,搜集各種敏感信息,并通過網絡發(fā)回搜集到的敏感信息,接受植入者指令,完成各種操作,在一定程度上,木馬也可以稱為是計算機病毒。但從木馬的本質來講,它是一種遠程控制的黑客工具,具有隱蔽性和非授權性。一般的木馬執(zhí)行文件都很小,如果把木馬捆綁到其它正常文件上,用戶很難發(fā)現。并且,木馬一般不像計算機病毒那樣去破壞文件、占用系統(tǒng)資源,而是在背后充當“間諜”的角色,因此,用戶即使中了木馬,也很難察覺到它的存在。從以往網絡安全事件的統(tǒng)計分析中可以發(fā)現,有相當部分的網絡入侵是通過木馬進行。利用木馬,攻擊者可以竊取密碼、控制系統(tǒng)操作、進行文件操作等,造成用戶資料的泄漏、破壞或整個系統(tǒng)崩潰。隨著網絡化程度的提高,如何有效防范木馬己成為人們關注的問題。目前,國內外很多新版殺毒軟件都加入了木馬清除功能,市場上也出現了很多“木馬”專殺工具,這些軟件主要根據木馬的動態(tài)執(zhí)行特性識別木馬,不能有效識別潛伏的木馬。針對這一情況,本文提出兩種根據文件靜態(tài)信息檢測木馬的新方法,能有效識別木馬文件,特別是潛伏著的沒有發(fā)作的木馬文件。木馬的概念及技術原理木馬是一種網絡通信程序,它既不同于病毒,也不同于蠕蟲。病毒具有自我復制和感染文件的特點,它能迅速地感染某臺計算機上的每個應用程序文件,但它在不同計算機之間的傳播通常不是自發(fā)的,需要依靠各種人為因素,例如人為發(fā)送電子郵件等等。蠕蟲則通常會通過網絡主動在計算機之間傳播,因此,第1頁共26頁它的傳播速度一般比病毒快。而木馬既不會自我復制和感染文件,也不會主動傳播。木馬可分為后門類木馬、網銀類木馬、網游類木馬等,其中后門類木馬最為常見,網銀類和網游類木馬次之圖1后門類木馬客戶端與服務器的通信示意圖不論哪類木馬,均包含服務器程序,平常所說的“中了木馬”,更確切地講是“中了木馬服務器”。服務器程序具有較強的隱蔽性和偽裝性,它通常包含在一些合法程序或數據當中,或者木馬服務器本身偽裝為一個合法程序,例如,游戲軟件、工具軟件、電子郵件的附件、網頁等等,如果計算機運行這些程序、打開這些文件或訪問這些網頁,就可能同時在計算機操作系統(tǒng)的后臺啟動了木馬服務器的安裝程序,但普通計算機用戶對此是無法覺察的。后門類木馬的通信如圖1所示,除服務器外,還包含客戶端,兩者遵守一定的通信協議。如果木馬服務器被安裝到某臺計算機并成功啟動,該計算機就木馬投放者或者第三方可在網絡的另一端,成為受控于木馬客戶端的目標機,通過木馬客戶端向其發(fā)送各種命令,而服務器則負責接收、解析和執(zhí)行命令,并將執(zhí)行結果返回給客戶端。通過這些命令,可以實現對目標機的遠程文件管理、遠程屏幕監(jiān)視、鍵盤和鼠標消息記錄、遠程關機和重啟、系統(tǒng)信息獲取、硬盤數據共享以及遠程程序執(zhí)行等。網銀類木馬通常沒有客戶端,它的主要目的在于竊取目標機用戶的網絡銀行帳號和密碼,并將其發(fā)送到指定的電子郵箱。而網游類木馬的目的則在于竊取網絡游戲的帳號、密碼和虛擬裝備等,并將其發(fā)送到指定的電子郵箱,供郵件接收者牟利。多數服務器會隨著目標機的啟動而自動運行,運行時,一般還會隱藏進程和網絡連接,以躲避進程查看工具以及防火墻軟件。另外,目前某些木馬還具有自我恢復功能,在目標機上存放多個服務器程序及相關文件的備份,如果只是其中的某一個被刪除,那么,其它備份又會在一定條件下運行起來。木馬一直是國內外黑客和安全專家研究的熱點,它發(fā)展至今,從早期的第2頁共26頁BackOrifice、Netspy、冰河等到現在的廣外女生、網絡神偷等木馬,功能越來越強大,隱藏、自啟動等方面的技術手段也逐漸多樣化。木馬的危害木馬不僅破壞計算機及計算機網絡,而且對其進行控制,并竊取或篡改重要信息,不斷對網絡安全造成嚴重的破壞。另外,木馬還被許多不法分子用作犯罪工具,造成巨大的經濟損失,甚至擾亂社會治安。綜觀2006年國內的各類典型木馬,“傳奇男孩”、“劍俠幽靈”及“蜜蜂大盜”等網類木馬會盜取網絡游戲的帳號、密碼及游戲裝備,并將其發(fā)送到指定電子郵箱,供木馬使用者出售牟利,嚴重侵犯了網絡游戲合法用戶的網絡虛擬財產;“MSN小尾巴”、“QQ小尾巴”等廣告類木馬會修改網頁定向,導致被感染的計算機無法訪問一些網站;“網銀大盜A”等網銀類木馬采用竊取擊鍵記錄的方法,盜用合法用戶網上銀行的帳號和密碼,給用戶帶來巨大的經濟損失 ;而“灰鴿子”、“黑洞”等后門類木馬則可能使計算機系統(tǒng)完全受到非法控制。據國際著名風險管理公司公布的調查結果顯示,在2006年,病毒、蠕蟲和特洛伊木馬等惡意程序或混合型攻擊共給全球造成了1890億美元的經濟損失。同時它預計,全球約有6億部Windows計算機,每部計算機因遭受攻擊而帶來的經濟損失大約在281美元到340美元之間。基于上述情況,反木馬應是反病毒工作者的重點工作之一。目前,一般的反病毒軟件都加入了反木馬功能,甚至出現了專門的反木馬軟件。反木馬的研究正日益受到關注?,F在流行的查殺方式通過網絡監(jiān)控發(fā)現網絡通信的異常并阻斷木馬的網絡通信,或者定義各種規(guī)則,使木馬無法進行網絡通信。防火墻、入侵檢測(IntrusionDetection)以及入侵保護(IntrusionProtection)是這類技術的典型代表。它們對網絡通信的端口及網絡連接作了嚴格的限制和嚴密的監(jiān)控,發(fā)現并攔截任何未經允許的網絡連接或者通信端口的使用,并向用戶報警。此外,入侵檢測還能探測網絡流量中潛在的入侵和攻擊。而入侵保護在此基礎上又增加了主動阻斷功能,目前的入侵保護系統(tǒng)產品在性能和數據包的分析能力上比入侵檢測系統(tǒng)產品都有了質的提升。另外,防火墻聯動技術的發(fā)展將防火墻從眾多的安全問題中解脫出來,與其它技術互補互益,架構起立體的防護系統(tǒng)。例如,防火墻與入侵檢測系統(tǒng)聯動,可以對網絡進行動靜結合的保護,對網絡行為進行細顆粒的檢查,并對網絡內外兩個部分都進行可靠管理。第3頁共26頁特征碼技術:特征碼技術最初被應用于反病毒,后亦用于反木馬,它被作為檢測這些非法程序的最基本的技術沿用至今,也是目前各類反病毒軟件普遍采用的主要技術。實時監(jiān)控:“實時監(jiān)控”從文件、郵件、網頁等多個不同的角度對流入、流出系統(tǒng)的數據進行過濾,檢測并處理其中可能含有的非法程序代碼。與其它技術相比,它在反病毒、反木馬等方面體現出實時性的特點,能較明顯地減少甚至完全避免由非法程序帶來的危害。目前國內外各類較為著名和常用的安全軟件(如Kaspersky,江民、金山毒霸、瑞星等)均具備了這項功能。行為分析:簡而言之,行為分析就是根據程序的動態(tài)行為特征(如在注冊表設置自啟動項等)判斷其是否可疑。目前,病毒、木馬等非法程序的種類迅速增加、變化不斷加快,帶來的危害日益嚴重,而特征碼的提取又必然滯后于非法程序出現,根據國際著名的信息安全廠商熊貓軟件公司的技術文獻,從某種特征碼未知的非法程序出現,到研究出它的檢測和清除方法,通常會相隔72個小時甚至更多的時間。因而需要這樣一種技術:能在特征碼提取之前,檢測特征碼未知的非法程序,以有效的阻止其進行破壞,更大程度地降低損失。行為分析正是具有可檢測特征碼未知的非法程序的特點,所以成為目前國內外反病毒、反木馬等領域研究的熱點。然而,行為分析在具體應用時一般有較高的誤報率,這也是它早在20世紀90年代早期就被提出,而至今仍未得到廣泛應用的主要原因。如何在不提高漏報率的同時,有效地降低行為分析在具休實施時的誤報率,是承待解決的問題之一。最近幾年,很多國外研究者將新的智能處理技術引入網絡攻擊和病毒的檢測,提出了許多檢測網絡攻擊和惡意程序的新方法,如:1、在2001年NAFIPS(NorthAmericanFuzzyInformationProcessingSociety)國際會議上,J.E.Dickerson等人提出基于Agent方法的網絡入侵監(jiān)測系統(tǒng),該系統(tǒng)通過在各個Agent上對網絡活動進行分析,匯總后識別網絡攻擊行為,可有效識別網絡入侵。后來基于Agent的方法也被很多人用于惡意程序的分析上但這種方法基本可歸類為前面提到的方法,對檢測潛伏木馬仍有一定局限性。2、在可執(zhí)行程序中檢測惡意代碼的觀點是由LSFM研究組提出的。他們應用各種靜態(tài)和動態(tài)方法執(zhí)行模型檢驗,看分析的程序是否與違背預先定義的安全策略。這種識別惡意代碼方式存在的最大問題是需要分析者以策略的形式定第4頁共26頁義惡意代碼的行為。在ACSAC'02會議上,MWeber等人對此方法進行了改進,提出了PEAT系統(tǒng),該系統(tǒng)不需要定義或識別惡意代碼的行為,而是為用戶提供了一些工具來分析整個程序的結構特征。他們認為被插入可執(zhí)行程序的惡意代碼,其結構特征一般與宿主程序的結構特征不一致,并據此判定文件中是否插入了惡意代碼。但如果病毒編寫者對該應用程序的結構非常熟悉,模仿其結構特征,或用惡意代碼完全替換原程序代碼,那么該方法就很難檢測出惡意代碼的存在。3,EleazarEskin等人在2005年初的報告中提出將數據挖掘技術用于木馬文件的檢測。與本設計提出方法不同之處是,他們先利用數據挖掘技術發(fā)現己然后利用這些特征構造分類器來檢測木馬文件。知類型木馬的特征,與國外相比,國內研究者的主要結合木馬的攻擊原理與特征研究木馬的檢測方法,近年提出的檢測方法主要是對傳統(tǒng)檢測方法的改進,也對未知木馬的檢測進行了探討:1、西安交通大學的李順東等人運用字母集合到數字集合的映射理論、字符串的可計算性理論與數論理論,設計的特洛伊木馬檢測算法;陳桂清等人提出的通過監(jiān)視與跟蹤系統(tǒng)對外通信進程的操作檢測木馬的方法等等。這些方法對識別新型的木馬,特別是DLL型木馬,就需要進一步改進。2、中國科學技術大學的朱明等人提出了基于多Agent協作實現未知木馬自動識別的方法。該方法利用駐留在局域網各機器監(jiān)測Agent和網絡監(jiān)測Agent所收集的證據和初步判斷,并由協作Agent對這些證據和初步判斷進行融合印證并做出最終結論。該方法將Agent技術引入木馬防范領域,但仍是通過動態(tài)執(zhí)行特性檢測木馬,對檢測潛伏木馬仍有一定局限性。3、2004年,武漢大學計算機學院的單氏虹將人工智能中的啟發(fā)式分析技術引入木馬檢測,提出一種啟發(fā)式分析的木馬實時查殺模型。這種模型既可以實現對已知木馬的查殺,又可以對未知木馬進行啟發(fā)式分析,并將分析數據提交專家系統(tǒng),由專家系統(tǒng)對其判定。本設計提出的通過分析文件的靜態(tài)信息,發(fā)現木馬文件與正常文件的區(qū)別,不需要上面提到的專家系統(tǒng)的支持。傳統(tǒng)的木馬檢測與清除方法歸納起來可分為兩類:一種是利用木馬程序運行時的特征碼檢測木馬,另一種通過監(jiān)視系統(tǒng)端口、網絡連接、注冊表狀態(tài)變化等動態(tài)監(jiān)控的方法檢測木馬。這些方法共同特點是通過文件的動態(tài)執(zhí)行狀態(tài)、特性信息來檢測木馬,對發(fā)現某些潛伏得十分隱蔽和新出現的未知木馬,沒有較好方法。本設計提出基于文件自身的靜態(tài)信息來檢測木馬,是與傳統(tǒng)木馬檢測方法的最大區(qū)別,為有效解決潛伏木馬的識別問題開辟了一條新思路。第5頁共26頁木馬檢測的實現方法特征碼技術被作為反病毒技術中最基本的技術沿用至今,也是到目前為止各類反病毒軟件仍普遍采用的技術?!疤卣鞔a”是一串信息,它能唯一標識某一非法程序(如病毒、木馬等)。研究人員通過對非法程序樣本的分析,提取出“特征碼”寫入反病毒軟件的特征碼庫特征碼技術的基本原理就是在待測文件中查找特征碼,一旦查找到,就判定該文件是非法程序或包含了非法程序,并作相應的處理。基于特征碼的靜態(tài)掃描便是對特征碼技術最直接的應用,目前的各類反病毒軟件均具備這項基本功能,它對用戶指定的某個或某幾個文件進行掃描,以確定是否包含非法程序的特征碼。據有吻合之處,就可以判定該數據文件己遭病毒感染。特征代碼法的實現步驟如下(1)采集己知病毒樣本。如果病毒既感染COM文件,又感染EXE文件,那么要對這種病毒要同時采集COM型病毒樣本和EXE型病毒樣本。(2)在病毒樣本中,抽取病毒特征代碼。對于既感染COM文件又感染EXE文件的病毒樣本,要抽取兩種樣本共有的代碼。(3)將特征代碼存入病毒庫。(4)檢測文件。打開被檢測文件,在文件中搜索,檢查文件中是否含有病毒數據庫中的病毒特征代碼。如果發(fā)現病毒特征代碼,查詢病毒特征代碼就可以知道所感染的病毒類型。在具體實現時,它最初是采用對待測文件全部掃描的方式,在病毒等非法程序出現的早期,非法程序的種類不過數百種,采用這種掃描方式還是比較快捷的,但在目前病毒、木馬、蠕蟲及其變種的總數超過60000的情況下,這種方式顯然是效率低下的。為此,采用了一些用來提高特征碼掃描效率的技術。因為木馬文件一個很明顯的特征就是它的文件名和大小,所以通過這兩個特征來作為靜態(tài)查殺的初步選擇。另外就是取文件的MD5值來進行查殺,先對掃描文件進行MD5計算,然后根據得到的MD5值與庫中特征碼進行比較,如果相同就進行處理。PE文件靜態(tài)信息的提取和特征碼的設置PE文件是PortableExecutablefile( 可移植的執(zhí)行文件)的簡稱,它是Window、環(huán)境自帶的可執(zhí)行文件的標準格式,它的一些特性繼承了 Unix的Coff(CommonObjectFileFormat)文件格式?!癙ortableExecutable”意味著此文件格式是跨win32平臺的:即使Window、運行在非Intel的CPU上,任何win32平臺下的PE裝載器都能識別和使用該文件格式。當然,移植到不同的 CPU上PE執(zhí)行文件必然得有一些改變。所有win32執(zhí)行程序(除了VxD和16位的DLL外)都使用PE文件格式,包括NT的內核模式驅動程序。第6頁共26頁PE文件主體結構如圖2所示。PE文件使用的是一個平面地址空間,所有代碼和數據都被合并在一起,組成一個很大的結構。文件的內容被分割為不同的區(qū)塊(Section,又稱區(qū)段、節(jié)),區(qū)塊中包含代碼或數據,各個區(qū)塊按頁邊界對齊,區(qū)塊沒有大小限制,是一個連續(xù)結構。每個區(qū)塊都有它自己在內存中的一套屬性,如該區(qū)塊是否包含代碼、是否只讀或可讀/寫等。每一個區(qū)塊都有不同的名字,這個名字用來表示區(qū)塊的功能。例如,一個叫rdata的區(qū)塊表明它是一個只讀區(qū)塊。常見的區(qū)塊有text,rdata,data,idata和rsrc等。各種塊的具體含義詳見圖3塊名的具體含義。PE文件最大的優(yōu)點是如圖4物理結構與內存結構對在磁盤上的數據結構與內存中的結構是一致的,照圖。圖2PE文件主體結構第7頁共26頁圖3塊名與對應的解釋圖4物理結構與內存結構特征碼選擇與采集特征碼采集的好壞直接影響到整個實驗的結果,如果所采集的樣本具有一定的普遍性和代表性的話,那么理論值與實際值差別不會有很大出入,甚至直接應用到產品中去;如果木馬特征碼特性帶有局部性,不能代表一般性的話,即使得出結論,也會使實驗結果與實際產生很大的偏離。所以采集特征碼的方式在本工具中被列為了重點。本工具的根本目的是要找出木馬文件在文件靜態(tài)特征上的特征,即文件在執(zhí)行以前所具有的特征差異,重點是木馬文件的靜態(tài)特性。所以在選擇特征碼時,既要選擇有代表性的PE文件,又要滿足一定的數量。特征碼庫的設計由于是簡單木馬的查殺,所以直接采用了ini文件手動設置特征碼庫,特征碼庫ini文件如圖5。注:[mnum]的值代表收錄的木馬特征碼個數;第8頁共26頁[n]代表的是具體第n+1個病毒;Name代表的是木馬文件的文件名;Size代表的是木馬文件的文件大?。ㄒ詁yte計算);MD5代表的是木馬文件的MD5值;圖5特征碼庫的具體格式信息摘要技術中的MD5算法MD5的全稱是Message-Digestalgorithm5,MD5是一種不可逆的算法,即對生成的密文求逆,對應著無窮個逆。在90年代初山MITLaboratoryforComputerScience(IT計算機科學實驗室)和RSADataSecurity(RSA數據安全公司)的RonaldL.Rivest開發(fā)出來,經MD2,MD3和MD4發(fā)展而來。它的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被“壓縮”成一種保密的格式(就是把一個任意長度的字節(jié)串變換成一定長的大整數)。不管是MD2,MD4還是MD5,它們都需要獲得一個隨機長度的信息,產生一個128位的信息摘要。雖然這些算法的結構或多或少有些相似,但是MD2的設計與MD4和MD5完全不同,是因為MD2是為8位機器做過設計優(yōu)化的,而MD4和MD5卻是而向32位的電腦。這三個算法的描述和C語言源代碼在Internetrfcs1321中有詳細的描述,這是一份最具權威的文檔,由RonaldL.Rivest在1992年8月向IFFT提交。Van.Oorscho和Wiener曾經考慮過一個在散列中暴力搜尋沖突的函數(bruteforcehashfunction),而目他們猜測一個被設計專門用來搜索MD5沖突的機器(這臺機器在1994年的制造成本大約是一百萬美元)可以平均每24天就找第9頁共26頁到一個沖突,但從1991年到2001年這10年間,竟沒有出現替代MD5算法的MD6或被叫做其他什么名字的新算法這一點,我們就可以看出這個瑕疵沒有太多的影響MD5的安全性。上而所有這些都不足以成為MD5的在實際應用中的問題,并且由于MD5算法的使用不需要支付任何版權費用的,所以在一般的情況下 (非絕密應用領域,但即便是應用在絕密領域內,MD5也不失為一種非常優(yōu)秀的中間技術),MD5怎么都應該算得上是非常安全的了。MD5算法的原理及應用Message-Digest泛指字節(jié)串(Message)的Hash變換,就是把一個任意長度的字節(jié)串變換成一定長的大整數。請注意我使用了“字節(jié)串”而不是“字符串”這個詞,是因為這種變換只與字節(jié)的值有關,與字符集或編碼方式無關。 MD5將任意長度的“字節(jié)串”變換成一個128bit的大整數,并且它是一個不可逆的字符串變換算法,換句話說就是,即使看到源程序和算法描述,也無法將一個 MD5的值變換回原始的字符串,從數學原理上說,是因為原始的字符串有無窮多個,這有點像不存在反函數的數學函數。MD5的典型應用是對一段Message(字節(jié)串)產生fingerprint(指紋),以防止被“篡改”。舉個例子,將一段話寫在一個叫readme.txt文件中,并對這個readme.txt產生一個MD5的值并記錄在案,然后可以傳播這個文件給別人,別人如果修改了文件中的任何內容,對這個文件重新計算MD5時就會發(fā)現。如果再有一個第三方的認證機構,用MD5還可以防止文件作者的“抵賴”,這就是所謂的數字簽名應用。MD5的應用非常廣泛,如加密和解密技術等等。在802.1x認證中,EAP,MD5認證采用MD5算法,用戶密碼不以明文方式在網上傳輸,從而保證了認證信息的安全。同時,它還被應用于加密和解密技術上,譬如在Unix系統(tǒng)中用戶的密碼就是使用MD5算法(或其他類似的算法)加密后存儲在文件系統(tǒng)中。當用戶登錄的時候,系統(tǒng)把用戶輸入的密碼計算成MD5值,然后再去和保存在文件系統(tǒng)中的MD5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統(tǒng)在并不知道用戶明文密碼的情況下就可以確定用戶登錄的合法性,也就是說,用戶的密碼是以MD5值(或類似的其它算法)的方式保存的,用戶Login的時候,系統(tǒng)是把用戶輸入的密碼計算成MD5值,然后再去和系統(tǒng)中保存的MD5值進行比較,而系統(tǒng)并不“知道”用戶的密碼是什么。這樣不但可以避免普通用戶的密碼被系統(tǒng)管理員知道,而且還在一定程度上增加了密碼被破解的難度。另外,大家比較熟悉的即時通信軟件MyIM也使用MD5算法。利用MD5算法來進行文件校驗的方案,被大量應用在軟件下載站點、論壇數據庫和系統(tǒng)文件安全等方面。第10頁共26頁MD5作特征碼簡介本文描述了MD5報文摘要算法,此算法將對輸入的任意長度的信息進行計算,產生一個128位長度的“指紋”或“報文摘要”,假定兩個不同的文件產生相同的報文摘要或由給定的報文摘要產生原始信息在計算上是行不通的。MD5算法適合用在文件判定應用中,在此應用中,一個大的文件必須在類似RSA算法的公用密鑰系統(tǒng)中用私人密鑰加密前被“壓縮”在一種安全模式下。MD5算法能在32位機器上能以很快的速度運行。MD5的作用是對一段信息(message)生成信息摘要(messagedigest),該摘要對該信息具有唯一性,可以作為特征碼。用于驗證文件的有效性(是否有丟失或損壞的數據),對木馬文件的判定,在哈希函數中計算散列值輸入一個任意長度的字節(jié)串,生成一個128位的整數。由于算法的某些不可逆特征,在加密應用上有較好的安全性。并且,MD5算法的使用不需要支付任何版權費用。唯一性和不可逆性都不是絕對的,從理論上分析是一種多對一的關系,但兩個不同的信息產生相同摘要的概率很小。不可逆是指從輸出結果中反推輸入所需的運算量和計算時間太大,使用窮舉字典的方法又需要太多的存儲空間。所以用 MD5來作為特征碼是很有高效性和穩(wěn)定性的。需求分析及方案設計本工具要完成的功能本工具的運行是基于Windows平臺的,選用所熟悉的開發(fā)工具及開發(fā)環(huán)境進行本工具的設計與開發(fā)。設計開發(fā)一個木馬檢測工具,本設計要求實現部分功能——(1)能對特征碼庫進行設置;(2)本工具能自動的讀取特征碼庫中的特征碼;(2)本工具能檢測指定盤符的文件,并進行相應的檢測。(4)本工具能進行的檢測有普通查殺和特征碼查殺。環(huán)境需求操作系統(tǒng):WindowsXPSP2開發(fā)平臺:VisualC++6.0可行性研究本程序的開發(fā)利用VisualC++作為開發(fā)工具。使用其作為程序的開發(fā)工具,是因為它采用面向對象的編程方法把程序和數據封裝起來作為一個對象,并為每個對象賦予相應的屬性;事件驅動的編程機制通過事件執(zhí)行對象的操作,在設計應用程序時,不必建立具有明顯的開始和結束的程序,而是編寫若干個過程,通過這些過程執(zhí)行指定的操作;提供完善的指令控制語句,給開發(fā)第11頁共26頁高性能的系統(tǒng)提供了保障,保證了代碼的模塊化要求,而且VisualC++本身就自帶一些庫函數能夠提供一些功能,更利于本工具的開發(fā)。木馬查殺功能的實現工具模塊介紹模塊一:驅動器的選擇,該模塊可以選擇機器上所以本地硬盤和移動盤模塊二:普通查殺的選擇,即快速查殺,通過比較文件名和文件大小來查殺。模塊三:特征碼查殺的選擇,即MD5特征碼查殺,通過讀取特征庫里的數據與文件特征碼進行比較來進行查殺。模塊四:顯示查殺成功的文件。模塊五:顯示正在查殺的文件夾。圖6木馬查殺工具的功能模塊界面木馬特征碼的讀取由于本工具用的是ini文件作為特征庫文件,所以木馬查殺工具開始運行第一件事就是對特征庫文件的讀取,獲得病毒的特征碼。讀取的方法是首先打開和工具同一目錄下的code.ini文件,首先讀取得到總共的病毒數,然后依次循環(huán)讀出每個section下的屬性值,即對應的文件的name屬性和size屬性,也就是文件名和文件大小。下是基于ini特征庫文件讀取的代碼:CStringCIniFile::GetFileString(CStringSection,CStringItem,CStringValue)第12頁共26頁ReadIniFile();//打開文件if(bFileExist==FALSE||FileContainer.GetSize()<0)returnValue;//文件打開出錯或文件為空,返回默認值inti=0;intiFileLines=FileContainer.GetSize();CStringstrline,str;while(i<iFileLines){strline=FileContainer.GetAt(i++);strline.TrimLeft();if(strline.GetAt(0)=='[')//查找Section,第一個必須為[{str=strline.Left(strline.Find("]"));// 去掉]右邊str=str.Right(str.GetLength()-str.Find("[")-1);// 去掉[左邊str.TrimLeft();str.TrimRight();if(Section==str)//找到Section{while(i<iFileLines){strline=FileContainer.GetAt(i++);strline.TrimLeft();if(strline.GetAt(0)=='[')returnValue;//如果到達下一個[],即找不到,返回默認值str=strline.Left(strline.Find("="));// 去掉=右邊str.TrimLeft();str.TrimRight();if(Item==str)//找到Item{去掉=左去掉=左str.TrimLeft();str.TrimRight();returnstr;第13頁共26頁}}returnValue;//找不到,返回默認值}}}returnValue;//找不到,返回默認值}獲得文件MD5特征碼本工具使用MD5做特征碼,所以寫了一個MD5類來實現對文件的MD5特征碼的獲得,下面是MD5值的獲得的實現步驟和描述:因為本工具是基于特征碼來對木馬進行查殺的,所以第一步當我們獲得一個木馬時,就對它進行MD5計算,然后把獲得的MD5值保存到ini文件(即特征碼庫)。算法的初始化:md5_init(md5_state_t*pms){pms->count[0]=pms->count[1]=0;pms->abcd[0]=0x67452301;pms->abcd[1]=0xefcdab89;pms->abcd[2]=0x98badcfe;pms->abcd[3]=0x10325476;}添加字符竄到消息摘要中:md5_append(md5_state_t*pms,constmd5_byte_t*data,intnbytes){constmd5_byte_t*p=data;intleft=nbytes;intoffset=(pms->count[0]>>3)&63;md5_word_tnbits=(md5_word_t)(nbytes<<3);if(nbytes<=0)return;/*Updatethemessagelength.*/pms->count[1]+=nbytes>>29;第14頁共26頁pms->count[0]+=nbits;if(pms->count[0]<nbits)pms->count[1]++;/*Processaninitialpartialblock.*/if(offset){intcopy=(offset+nbytes>64?64-offset:nbytes);memcpy(pms->buf+offset,p,copy);if(offset+copy<64)return;p+=copy;left-=copy;md5_process(pms,pms->buf);}/*Processfullblocks.*/for(;left>=64;p+=64,left-=64)md5_process(pms,p);/*Processafinalpartialblock.*/if(left)memcpy(pms->buf,p,left);}完成消息摘要并返回:md5_finish(md5_state_t*pms,md5_byte_tdigest[16]){staticconstmd5_byte_tpad[64]={0x80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};md5_byte_tdata[8];inti;/*Savethelengthbeforepadding.*/for(i=0;i<8;++i)data[i]=(md5_byte_t)(pms->count[i>>2]>>((i&3)<<3));第15頁共26頁/*Padto56bytesmod64.*/md5_append(pms,pad,((55-(pms->count[0]>>3))&63)+1);/*Appendthelength.*/md5_append(pms,data,8);for(i=0;i<16;++i)digest[i]=(md5_byte_t)(pms->abcd[i>>2]>>((i&3)<<3));}MD5算法的主要變換過程:md5_process(md5_state_t*pms,constmd5_byte_t*data/*[64]*/){md5_word_ta=pms->abcd[0],b=pms->abcd[1],c=pms->abcd[2],d=pms->abcd[3];md5_word_tt;#ifndefARCH_IS_BIG_ENDIAN#defineARCH_IS_BIG_ENDIAN1/*slower,defaultimplementation*/#endif#ifARCH_IS_BIG_ENDIAN*Onbig-endianmachines,wemustarrangethebytesintheright*order.(Thisalsoworksonmachinesofunknownbyteorder.)md5_word_tX[16];constmd5_byte_t*xp=data;inti;for(i=0;i<16;++i,xp+=4)X[i]=xp[0]+(xp[1]<<8)+(xp[2]<<16)+(xp[3]<<24);#else/*!ARCH_IS_BIG_ENDIAN*//**Onlittle-endianmachines,wecanprocessproperlyaligneddata*withoutcopyingit.*/md5_word_txbuf[16];constmd5_word_t*X;if(!((data-(constmd5_byte_t*)0)&3)){/*dataareproperlyaligned*/第16頁共26頁X=(constmd5_word_t*)data;}else{/*notaligned*/memcpy(xbuf,data,64);X=xbuf;}#endif#defineROTATE_LEFT(x,n)(((x)<<(n))|((x)>>(32-(n))))/*Round1.*//*Let[abcdksi]denotetheoperationa=b+((a+F(b,c,d)+X[k]+T[i])<<<s).*/#defineF(x,y,z)(((x)&(y))|(~(x)&(z)))#defineSET(a,b,c,d,k,s,Ti)\t=a+F(b,c,d)+X[k]+Ti;\a=ROTATE_LEFT(t,s)+b/*Dothefollowing16operations.*/SET(a,b,c,d,0,7,T1);***部分代碼省略******SET(b,c,d,a,15,22,T16);#undefSET/*Round2.*//*Let[abcdksi]denotetheoperationa=b+((a+G(b,c,d)+X[k]+T[i])<<<s).*/#defineG(x,y,z)(((x)&(z))|((y)&~(z)))#defineSET(a,b,c,d,k,s,Ti)\t=a+G(b,c,d)+X[k]+Ti;\a=ROTATE_LEFT(t,s)+b/*Dothefollowing16operations.*/SET(a,b,c,d,1,5,T17);SET(d,a,b,c,6,9,T18);***部分代碼省略******SET(c,d,a,b,7,14,T31);第17頁共26頁SET(b,c,d,a,12,20,T32);#undefSET/*Round3.*//*Let[abcdkst]denotetheoperationa=b+((a+H(b,c,d)+X[k]+T[i])<<<s).*/#defineH(x,y,z)((x)^(y)^(z))#defineSET(a,b,c,d,k,s,Ti)\t=a+H(b,c,d)+X[k]+Ti;\a=ROTATE_LEFT(t,s)+b/*Dothefollowing16operations.*/SET(a,b,c,d,5,4,T33);***部分代碼省略******SET(b,c,d,a,2,23,T48);#undefSET/*Round4.*//*Let[abcdkst]denotetheoperationa=b+((a+I(b,c,d)+X[k]+T[i])<<<s).*/#defineI(x,y,z)((y)^((x)|~(z)))#defineSET(a,b,c,d,k,s,Ti)\t=a+I(b,c,d)+X[k]+Ti;\a=ROTATE_LEFT(t,s)+b/*Dothefollowing16operations.*/SET(a,b,c,d,0,6,T49);***部分代碼省略******SET(b,c,d,a,9,21,T64);#undefSET/*Thenperformthefollowingadditions.(Thatisincrementeachofthefourregistersbythevalueithadbeforethisblockwasstarted.)*/pms->abcd[0]+=a;pms->abcd[1]+=b;第18頁共26頁pms->abcd[2]+=c;pms->abcd[3]+=d;}文件屬性的更改在windows操作系統(tǒng)下,當文件屬性為只讀時,刪除文件將無法成功,所以需要對文件進行屬性更改,以進行查殺,以下為實現代碼:CFileStatusstatus;status.m_attribute=0x00;CFile::SetStatus(tFileName,status);DeleteFile(tFileName);實現驅動器的選擇為了方便用戶查殺方便和深度查殺,所以設置了驅動器(本地硬盤和移動設備)的選擇,下面實現代碼:voidCDiskCleanDlg::GetSysDriver(){UINTdrvType=0;CStringdrv;charch;for(ch='C';drvType!=1;ch++){drv="X:\\";drv.SetAt(0,ch);drvType=GetDriveType(drv);if(drvType==DRIVE_FIXED||drvType==DRIVE_REMOVABLE){m_ctlComboDrive.AddString(drv);}}}普通查殺的實現首先是對特征碼庫(code.ini文件)的特征碼進行讀取,下面是具體實現代碼:voidFileNameRead()第19頁共26頁for(inti=0;i<mnum;i++){CStringstr1;str1.Format("%d",i);name[i]=IniFile.GetString(str1,"name"," 不知道");size[i]=IniFile.GetInt(str1,"size",10);md5[i]=IniFile.GetString(str1,"md5"," 不知道");}}接下來是掃描文件時候進行文件名和文件大小的比較,然后和特征碼進行對比,判斷進行處理:voidDealRabbishScan(CStringpath){if(!gbRuning)return;chdir(path);//更換當前目錄gPath1=path;::SendMessage(gpMainWnd->m_hWnd,WM_ANSWER,(WPARAM)2,(LPARAM)0);for(inti=0;i<mnum;i++){DeleteRabbishFile(path,name[i],size[i]);}BOOLflag;CFileFindm_File;DWORDdwRes;flag=m_File.FindFile(NULL);while(flag&&gbRuning){dwRes=WaitForSingleObject(ghThreadExitEvent,0);if(dwRes==WAIT_OBJECT_0){gbRuning=FALSE;break;}第20頁共26頁flag=m_File.FindNextFile();if(m_File.IsDirectory()){if(!m_File.IsDots()){path=m_File.GetFilePath();//DeleteZeroFile(path);DealRabbishScan(path);}}}//}}CFileStatusstatus;//下面是對文件刪除的具體實現:voidDeleteRabbishFile(CStringFilePath,CStringFileName,intSize)CFileFindfindfile;CStringtFileName;CStringPath;LV_ITEMlvitem;lvitem.mask=LVIF_TEXT;status.m_attribute=0x00;SetCurrentDirectory(FilePath);if(findfile.FindFile(FileName)){while(findfile.FindNextFile()){Path=findfile.GetFilePath();gPath=Path;tFileName=findfile.GetFileName();if(findfile.GetLength()==Size){CFile::SetStatus(tFileName,status);DeleteFile(tFileName);::SendMessage(gpMainWnd->m_hWnd,WM_ANSWER,第21頁共26頁(WPARAM)1,(LPARAM)0);}}Path=findfile.GetFilePath();gPath=Path;tFileName=findfile.GetFileName();if(findfile.GetLength()==Size){CFile::SetStatus(tFileName,status);DeleteFile(tFileName);::SendMessage(gpMainWnd->m_hWnd,WM_ANSWER,(WPARAM)1,(LPARAM)0);}}}MD5特征碼查殺因為MD5的特性,所以兩個不同文件的MD5值相同的幾率非常的小,所以通過MD5來作為特征碼有很好的針對性,本查殺方式就是通過對文件的 MD5值的計算,然后與特征碼庫里的MD5值進行比較,通過判斷結果來進行查殺,下面是功能具體實現代碼。下面的代碼具體功能打開需要查殺的文件,然后從文件頭開始循環(huán)讀取4096次一個字節(jié)的二進制數據,并添加到字符串中,利用md5_process函數進行具體的替換、轉換等等來實現MD5值的獲得,而且是對指定盤符下的所有文件都進行檢測,可以對潛伏的木馬文件進行查殺。f=fopen(ff.GetFilePath(),"rb");md5_init(&state);while(1)n=(int)fread(buf,1,4096,f);if(n<=0)break;nbytes+=n;md5_append(&state,buf,n);}md5_finish(&state,binout);第22頁共26頁for(i=0;i<16;i++){sprintf(Md5String+2*i,"%02x",binout[i]);}Md5String[32]=0;fclose(f);結論本文主要分析了木馬查殺的主要方法,并對特征碼查殺的主要技術做了描述。同時設計并實現了一個木馬查殺。該木馬查殺工具是基于WindowsXp操作系統(tǒng)開發(fā)的,是一個實驗性的程序。整個系統(tǒng)由普通查殺,和MD5特征碼查殺等幾大模塊功能構成。測試報告如下:測試環(huán)境:MicrosoftWindowsXPProfessionalServicePack2系統(tǒng):主機:AMDAthlon(tm)XP2600+1.91GHz512M內存1普通查殺測試在c:下幾個不同深度的目錄下放置木馬文件,然后對木馬文件的特征碼提取并保存入庫,進行查殺,查殺結果很理想,而且速度很快。2(MD5特征碼查殺在d:下幾個不同深度的目錄下放置木馬文件,然后對木馬文件的MD5特征碼提取并保存入庫,進行查殺,查殺結果也很理想,但是由于在查殺過程中要對文件進行MD5預算,所以耗費的時間和機器的CPU與內存的占用率都不低。木馬特征碼技術契合了目前檢測未知木馬的迫切需求,隨著對其研究的深入和實踐的展開,必定能使其得到廣泛的應用,使人們從中受益。但正如McAfee公司在其06年的一份白皮書中提出的,特征碼技術并不能完全替代行為分析,至少在今后很長一段時間內,兩者還將共存下去。特征碼技術、行為分析以及其它反木馬技術相輔相成,各取所長,才能更有效地抵御木馬的入侵和破壞。未來開發(fā)方向:一種可行的方案是:以特征碼技術為主,同時輔以啟發(fā)式技術:對某個程序進行靜態(tài)特征碼掃描后,如未發(fā)現異常,則可選用靜態(tài)啟發(fā)式掃描,還可以通過行為分析做進一步的確認。譬如,同時使用實時監(jiān)控和行為分析這兩種技第23頁共26頁術,對于已知木馬的程序文件,在執(zhí)行之前,實時監(jiān)控就會檢測到文件中包含的特征碼,并阻止它運行;對于未知木馬,雖然可以避開實時監(jiān)控,但一旦其運行起來,并表現出木馬的行為特征,就會被行為分析技術檢測出來。參考文獻凍正凱(c++函數庫查詢辭典[M](北京:中國鐵道出版社,2002。王維(基于文件靜態(tài)特征的木馬檢測[D](天津:天津理工大學,2004。[3]單長虹,張煥國等(一種啟發(fā)式木馬查殺模型的設計與分析[J],計算機工程與應用,2004,(1):120,130何長龍,林蓉(如何檢測和刪除系統(tǒng)中的木馬[J](信息安全與通信保密,2001,(7),55,58。黃天戍,孫夫雄,楊顯嬌(網絡安全管理之特洛伊木馬的防御[J],計算機應用,2002,:22-26。[6]陳桂清,伍乃哄,滕少華(通過進程監(jiān)視檢測木馬攻擊[J],計算機應用,2006,(8):33-35。[7]宋彥民(檢測和刪除木馬病毒的方法[J],現代電子技術,2002,(12):22-25。第24頁共26頁致謝本文是在熊淑華老師和張金全老師的熱情關心和指導下完成的,他們淵博的知識和嚴謹的治學作風使我受益匪淺,對順利完成本設計起到了極大的作用。在此向他們表示我最衷心的感謝~在論文完成過程中,本人還得到了陳曉龍同學的熱心幫助,本人向他表示深深的謝意~最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝~作者簡介:姓名:魏云柯性別:男出生年月:1984年8月民族:漢E-mail:第25頁共26頁聲明本論文的工作是2007年2月至2007年6月在成都信息工程學院網絡工程系完成的。文中除了特別加以標注地方外,不包含他人已經發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學院或其他教學機構的學位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作。關于學位論文使用權和研究成果知識產權的說明:本人完全了解成都信息工程學院有關保管使用學位論文的規(guī)定,其中包括:(1)學校有權保管并向有關部門遞交學位論文的原件與復印件。(2)學??梢圆捎糜坝?、縮印或其他復制方式保存學位論文。學??梢詫W術交流為目的復制、贈送和交換學位論文。學??稍试S學位論文被查閱或借閱。學校可以公布學位論文的全部或部分內容(保密學位論文在解密后遵守此規(guī)定)。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學院。特此聲明~作者簽名:2007年6月日第26頁共26頁ChristopherTolkienAINULINDAL?TheMusicoftheAinurTherewasEru,theOne,whoinArdaiscalledIl 鷙atar;andhemadefirsttheAinur,theHolyOnes,thatweretheoffspringofhisthought,andtheywerewithhimbeforeaughtelsewasmade.Andhespoketothem,propoundingtothemthemesofmusic;andtheysangbeforehim,andhewasglad.Butforalongwhiletheysangonlyeachalone,orbutfewtogether,whiletheresthearkened;foreachcomprehendedonlythatpartofmemindofIl 鷙atarfromwhichhecame,andintheunderstandingoftheirbrethrentheygrewbutslowly.Yeteverastheylistenedtheycametodeeperunderstanding,andincreasedinunisonandharmony.AnditcametopassthatIl 鷙atarcalledtogetheralltheAinuranddeclaredtothemamightytheme,unfoldingtothemthingsgreaterandmorewonderfulthanhehadyetrevealed;andthegloryofitsbeginningandthesplendourofitsendamazedtheAinur,sothattheybowedbeforeIl鷙atarandweresilent.ThenIl鷙atarsaidtothem:'OfthethemethatIhavedeclaredtoyou,IwillnowthatyemakeinharmonytogetheraGreatMusic.AndsinceIhavekindledyouwiththeFlameImperishable,yeshallshowforthyourpowersinadorningthistheme,eachwithhisownthoughtsanddevices,ifhewill.ButIwinsitandhearken,andbegladthatthroughyougreatbeautyhasbeenwakenedintosong.'ThenthevoicesoftheAinur,likeuntoharpsandlutes,andpipesandtrumpets,andviolsandorgans,andlikeuntocountlesschoirssingingwithwords,begantofashionthethemeofIl 鷙atartoagreatmusic;andasoundaroseofendlessinterchangingmelodieswoveninharmonythatpassedbeyondhearingintothedepthsandintotheheights,andtheplacesofthedwellingofIl 鷙atarwerefilledtooverflowing,andthemusicandtheechoofthemusicwentoutintotheVoid,anditwasnotvoid.NeversincehavetheAinurmadeanymusicliketothismusic,thoughithasbeensaidthatagreaterstillshallbemadebeforeIl鷙atarbythechoirsoftheAinurandtheChildrenofIl鷙ataraftertheendofdays.ThenthethemesofIl 鷙atarshallbeplayedaright,andtakeBeinginthemomentoftheirutterance,forallshallthenunderstandfullyhisintentintheirpart,andeachshallknowthecomprehensionofeach,andIl 鷙atarshallgivetotheirthoughtsthesecretfire,beingwellpleased.ButnowIl 鷙atarsatandhearkened,andforagreatwhileitseemedgoodtohim,forinthemusictherewerenoflaws.Butasthethemeprogressed,itcameintotheheartofMelkortointerweavemattersofhisownimaginingthatwerenotinaccordwiththethemeofIl 鷙atar,forhesoughtthereintoincreasethepowerandgloryofthepartassignedtohimself.ToMelkoramongtheAinurhadbeengiventhegreatestgiftsofpowerandknowledge,andhehadashareinallthegiftsofhisbrethren.HehadgoneoftenaloneintothevoidplacesseekingtheImperishableFlame;fordesiregrewhotwithinhimtobringintoBeingthingsofhisown,anditseemedtohimthatIl 鷙atartooknothoughtfortheVoid,andhewasimpatientofitsemptiness.YethefoundnottheFire,foritiswithIl 鷙atar.Butbeingalonehehadbeguntoconceivethoughtsofhisownunlikethoseofhisbrethren.Someofthesethoughtshenowwoveintohismusic,andstraightwaydiscordaroseabouthim,andmanythatsangnighhimgrewdespondent,andtheirthoughtwasdisturbedandtheirmusicfaltered;butsomebegantoattunetheirmusictohisratherthantothethoughtwhichtheyhadatfirst.ThenthediscordofMelkorspreadeverwider,andthemelodieswhichhadbeenheardbeforefounderedinaseaofturbulentsound.ButIl鷙atarsatandhearkeneduntilitseemedthatabouthisthronetherewasaragingstorm,asofdarkwatersthatmadewaroneuponanotherinanendlesswraththatwouldnotbeassuaged.ThenIl鷙atararose,andtheAinurperceivedthathesmiled;andhelifteduphislefthand,andanewthemebeganamidthestorm,likeandyetunliketotheformertheme,anditgatheredpowerandhadnewbeauty.ButthediscordofMelkorroseinuproarandcontendedwithit,andagaintherewasawarofsoundmoreviolentthanbefore,untilmanyoftheAinurweredismayedandsangnolonger,andMelkorhadthemastery.ThenagainIl鷙atararose,andtheAi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五農行個人貸款抵押合同資產保全操作流程
- 2025年度綠色建筑項目融資及還款合同3篇
- 二零二五年度農村土地流轉農民公寓產權登記合同
- 2025年度美術作品版權授權與收益分成合同
- 2025個人信用卡透支額度調整合同補充協議3篇
- 二零二五年度城鄉(xiāng)規(guī)劃編制與實施監(jiān)督合同4篇
- 二零二五年度土地儲備項目土地資源評估委托合同
- 2025年度別墅裝修材料環(huán)保檢測認證合同3篇
- 2025年度建筑工程合同履行與索賠風險防控指南2篇
- 第三人民醫(yī)院二零二五年度肉類配送服務及食品安全監(jiān)控協議3篇
- 充電樁巡查記錄表
- 阻燃材料的阻燃機理建模
- CJT 511-2017 鑄鐵檢查井蓋
- 配電工作組配電網集中型饋線自動化技術規(guī)范編制說明
- 職業(yè)分類表格
- 2024高考物理全國乙卷押題含解析
- 廣東省深圳高級中學2023-2024學年八年級下學期期中考試物理試卷
- 介入科圍手術期護理
- 青光眼術后護理課件
- 設立工程公司組建方案
- 《物理因子治療技術》期末考試復習題庫(含答案)
評論
0/150
提交評論