瑞星2011年1月至5月間新增感染型病毒趨勢分析報告
【51CTO.com綜合報道】
病毒在變得簡單而又全能
瑞星對2011年1月至5月期間新增感染型病毒記錄的病毒樣本的感染行為分析情況來看,病毒的編譯方式正在從傳統的全部直接由低級匯編語言撰寫逐漸轉變為兼并使用低級和高級語言混合撰寫的方式,病毒已經開始采用使用少量的匯編編寫的引導部分去加載由高級語言的主體功能部分這種混合方式。
通過對嵌入C語言程序的Kuku家族和加載動態鏈接庫的Loader家族分析來看,這種新型的感染型病毒在結構和分工上較傳統的單一語言編寫的感染型病毒顯得更為明朗和清晰。由高級語言編寫的主體部分可以更加容易地添加實現更多的功能,簡化后的匯編部分的功能則更為單一,但隨著編寫難度上大幅度降低,促成了更多新型功能更強的病毒誕生。預計用高級語言編寫病毒會在未來形成主流,數目上可能會成為僅次于木馬的第二大惡意軟件,在功能上未來可能會揉合更多后門和木馬功能的特征,如下載運行、廣告程序、盜取隱私、遠程控制等。可以說,感染型病毒正向著結構簡單但功能多元化的方向發展。
感染型病毒結構趨于簡單化——DLL文件同樣可能是感染源
傳統意義上的感染型病毒,通常的目標是可執行性文件(在Windows平臺下,只有后綴為.exe的文件,用戶雙擊后才可以運行),但是就目前截獲到的感染型病毒記錄來看,出現了一批后綴為.dll的感染型病毒樣本。這種后綴為.dll的文件是Windows下的動態庫文件,通常情況下,此種文件是不能夠直接運行的,而是需要通過應用程序的主執行文件動態加載使用的。就目前的樣本來看,此種后綴為.dll文件的宿主文件多為Windows操作系統的系統動態庫。
圖1:Win32.Loader.la樣本文件
這種感染型病毒并不是使用傳統意義上通過用戶點擊感染的可執行程序獲得執行的,而是騙取操作系統或者應用程序的信任。當被感染的機器上運行了某些正常程序需要加載系統的動態鏈接庫來使用某種API函數的過程中,不幸將感染后的系統動態庫加載,在這加載過程中,感染病毒的樣本就會獲得執行機會,并得以傳播。由于此種病毒需要依靠其他可執行程序的運行來被動加載,所以一般此種病毒一般會存在于當前應用程序的所在目錄或者直接存在于系統目錄。
這種感染型病毒的最大特點是結構極其簡單,只完成從指定的位置加載另一個動態庫后就退出,而真正的功能(如感染功能)則由另一個動態庫來完成,所以通常這種病毒被命名為Loader。這種看似簡單的結構給感染型病毒帶來了更多的發展機會,由于Loader操作簡單,所以很容易實現代碼短小,被修改的宿主程序的變化不大,因此隱蔽性好。短小的匯編代碼又更容易編寫,且更容易使用變形引擎做變形躲避查殺。而主要功能轉移到另一dll文件,就可以使用常規的軟件開發工具和高級語言快速實現各種功能,且變種繁多。
高級語言編寫的病毒開始流行——Dephi編寫的感染型病毒乍現
感染型病毒由于其自身的特性,需要附加到其他宿主程序上進行運行,并且為了躲避殺毒軟件的查殺,通常感染型病毒都會將自身分割、變形或加密后,再將自身的一部分或者全部附加到宿主程序上。這種特殊的要求使得傳統的病毒來使用匯編作為最為適合的編寫語言,但是由于匯編語言在編寫上十分抽象且易于出錯,所以制作隱蔽性好且功能豐富的感染型病毒難度過高,并且制作周期十分漫長。而且往往這種精雕細琢的病毒出現后,雖然有著變形引擎的保護,但如果特征上存在著一些共性,就很容易被殺毒軟件公司添加了殺毒方法后殺絕。而另一方面,病毒一旦寫好,再做大幅度的修改來躲避查殺的成本又過大。所以在于殺毒廠商抗衡的過程中,這種病毒的制作者發現了這個問題,逐漸的引進了高級語言來協助快速地開發感染型病毒。目前最早發現使用高級語言編寫的感染型病毒之一是Kuku,它使用了內嵌C++語言編寫病毒主體,外層使用了匯編編寫一個PE加載器來自己加載內嵌的病毒體。
圖2:Kuku感染型病毒結構示例
當宿主程序執行時,病毒會截獲到執行權限,將執行流程跳轉到事先編寫的加載器上,通過加載器來加載高級語言生成的病毒主體,其主要的病毒功能就是在這里實現。由于使用了高級語言來實現主要功能,所以一些曾經不可思議的高級功能都可以由這個病毒主體來實現,同時這些病毒還可以使用正常軟件的功能代碼,如Win32.Kuku家族的病毒主體中就包含著一套類似常規P2P下載軟件的網絡傳輸引擎,用于在不同的主機中實現病毒更新和信息共享。
圖3:Kuku感染型病毒運行示例
目前,病毒正逐漸向著簡單化的形式發展,這種趨勢不僅在木馬程序上有所體現,在感染型病毒的制作上也同樣如此。新生的感染型病毒在逐漸縮小使用傳統病毒制作語言進行編寫的部分,逐步更加青睞于使用高級語言進行撰寫主體的功能部分。最近的感染型樣本中的Win32.Logogo.a(下文簡稱為Logogo病毒)家族的感染型病毒,更是將高級語言Dephi引入到了病毒的制作之中。
Logogo病毒使用高級語言的思路極其簡單,它借鑒了Dropper類型的木馬工作機制,篡改宿主文件入口點到病毒新添加的節開始的小段匯編代碼。這段匯編代碼主要完成從新添加的節中讀取嵌入在節中的內涵的病毒體文件后釋放到硬盤,并在其運行后刪除。其中這個內涵的病毒體文件就是直接使用的Dephi編寫的病毒應用程序。
圖4:Logogo病毒主體釋放方法示例
高級語言編寫的感染型病毒的出現,對于病毒制作者意味著可以快速、容易地開發出新的變體,或者用已有的病毒模塊方便地相互組合。預計未來可能會出現比較通用的用于高級語言編寫病毒的模塊,如釋放器和加載器等。高級語言出現的同時也會給病毒帶來更加強大的功能,比如可以重用現有的后門程序的代碼,還可以更容易地編寫出更富有變化性的變形引擎,用于感染型病毒入口點的匯編代碼的混合,給病毒的查殺帶來更多難度。
除此之外,對于病毒分析人員來說,分析格式未公開的高級編譯器編譯出的代碼要比用較低級編譯語言的難度大得多。對于目前Microsoft公司的VisualBasic編譯器編譯出的PCode代碼和吳濤公司的易語言編譯器編譯出的易語言二進制文件的分析都是難點。按照目前的感染型病毒發展趨勢來看,使用更高級且格式未公開的編譯語言制作感染型病毒的可能性都很高。從這個角度來說,高級語言感染型病毒的出現對病毒分析人員的能力提出了更高的要求。
感染型病毒功能趨于多元化——潛在威脅無所不在
通常提到感染型病毒,用戶可能更關心它的傳播途徑是什么、傳播速度有多快等,但感染型病毒的目的不僅僅是為了傳播自身到更廣的范圍,同時也有出于達到某種目的來編寫的。從病毒的發展史來看,從最初的為了炫耀程序員的能力,到達某種政治目標,到最近出現的攻擊伊朗核電站的國家病毒。病毒一直都是為了實現某種目的,而感染型病毒借助著自身的傳染特性,可以將帶有特定功能的病毒滲透到系統的各個角落,并等待時機到來后發起行動。
感染型病毒可能包含有后門功能,如目前還活動的Virut變種病毒,含有一個小型的后門客戶端,用于獲取用戶操作系統信息、系統運行情況以及下載運行指定應用程序等功能。在感染了此種病毒用戶的機器上,病毒的操縱者可以遠程連接到用戶電腦,首先獲取用戶電腦的配置信息,再根據配置情況指定一個網絡路徑,要求客戶機去自動下載某個攻擊程序后運行攻擊某些重要目標主機,同時病毒的操縱者還可以監視著客戶機運行情況,在適當的情況下,再將下載的程序刪除掉摸清痕跡,讓偵查人員無從下手。除此之外virut病毒在設計的過程中就考慮到了不同操作系統的兼容問題,它同時包含兩套功能等價代碼,分別用于win98系列的系統和winnt內核系列的系統,這一設計讓病毒的適用范圍更加廣闊,無論新老電腦都會受到影響。
感染型病毒還可能揉合木馬程序的各種功能,如目前新增病毒Win32.Crypt.p,它可以感染如.exe一類的可執行程序、如rar壓縮包一類的非可執行程序以及網頁內容。Win32.Crypt.p病毒會從被感染程序中釋放文件到硬盤,然后執行病毒的主體。該病毒主體外層加有兩層殼進行保護,并使用高級語言編寫,其中包含有rar的解包功能感染壓縮包中的文件,能夠釋放驅動強制在系統級別將殺毒軟件終止,自身復制刪除并將自身安裝成為服務,除此之外它還擁有盜號木馬的一些特征,如截取用戶屏幕后保存為文件,將釋放出的imm.dll注冊為輸入法注入到其他進程后截取用戶信息,最終還會把所有截獲的信息通過http協議發送出去。
從以上兩個方面我們可以看出,感染型病毒并不是以傳播作為最終目的,而是作為其他病毒程序的跳板,將它們傳播到計算機的各個角落后,再將其載體激活后完成最終的目的。感染型病毒就好比是一架B2轟炸機,其負載的功能就如同機艙中負載的貨物,這些貨物有可能是普通一批深入敵后的空降部隊,也有可能是具有毀滅性質的原子彈。而感染型病毒的性能就如轟炸機的轟炸范圍,炸到地方可能是無人的沙漠,也有可能是人口密集的廣島。
感染型病毒發展趨勢——木馬與病毒趨于合二為一
木馬和病毒被經常被混淆,傳統意義上木馬和病毒的區分主要在于他們的特征,木馬善于潛伏并完成某種預先設定的功能,而病毒主要擁有感染傳播的能力。就目前的感染型病毒的發展趨勢來看,感染型病毒逐漸采納了木馬程序的編寫手段和功能,而木馬程序的傳播途徑上又存在著與感染型病毒趨近的趨勢,它們之間的距離正在逐步縮小。
惡意程序都是出于某種特殊目的而產生的,病毒的制作者也會考慮到各種不同惡意程序的優處和不足,并使之相互彌補和融合。但總體上,不論木馬還是病毒的發展趨勢都是向著簡單高效的開發方式發展的,功能上的相互融合使感染型病毒擁有了前所未有的對被感染機器的控制能力和隱蔽性。