




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 TOC o 1-5 h z ( 1) (3) (7)(12)(18)(24)(30)(35)(41)十.(46)十一 (52)十二(61)一、前言 在進入正文之前呢,容我先說幾句廢話。 在寫此文之前,我曾寫過一篇“高級木馬的自我保護技術與查殺之策”,承蒙各位朋友的厚愛,被各網站所轉載, 亦曾有許多朋友來信求助。由于該文是心血來潮后的隨筆所寫,所以并沒有經過深思熟慮,也并沒有脈絡可循,至使有的朋友能看懂,有的卻 看不懂。而看得懂的呢,亦有很大一部分并不能真正的應用文中所提的查殺技巧。故一直有心再寫一篇文章,幫助深受木馬毒害的朋友們了解木馬是什么,又如何查殺。 本文適于下列人員閱讀 : 能熟練使
2、用計算機的人想自己動手解決問題的人錢沒有多到電腦一出問題就扔到電腦修理公司的人適于下列人員參考 :電腦維修人員微機管理人員安全相關的程序開發人員本文所要達到的目的是 :讓菜鳥也可以了解系統安全自己來動手查毒殺馬,由求助者變為幫助它人者。 在殺毒軟件無能為力的情況下,借助本文的知識讓你仍然能借助工具完成清理查殺的任務。 讓您真正的明白一些看似神秘的、高深莫測的專用術語與技術的內幕。讓您了解 Windows 系統的底層知識。本文以手動查殺為主, 輔以必要的工具, 文中用到的工具與測試用的仿木馬小程序都提供了下載地址,供朋友們下 載試用。本文作者為MuseHero,您可在網絡上任意轉載,但請注明出處
3、、作者并保持文章的完整性,謝謝。二、木馬知識掃盲篇 什么是木馬呢?木馬只是一類程序的名字,為實現特殊目的而制作并偷偷植入目的計算機中的程序的統稱。其名字源于古希臘神話木馬屠城記,全名為“特洛伊木馬”有興趣的可以翻看相關資料,很不錯的一篇故事。 那什么又是程序呢?呵,即然是掃盲篇,我們就不能回避這些讓人頭都大的問題,先從最基本的開始,熟悉計算機 的朋友們可以直接跳到第三章去。我們先了解一些基本的概念:概念一 :計算機。就是我們的電腦了,指的就是一堆硬件,顯示器、主機、鍵盤、鼠標等等,當然了,拆開主機還 有一堆零碎。我們只需要了解其中幾個后面會提到的就行了。CPU計算機的指令處理單元。所有的工作都
4、是由它來做的,同一個CPC同一時間只能處理一條指令,就是說一旦CPU被某一程序占用,那在同一時刻內其它程序就肯定是空閑等待狀態(雙核的可以同時執行兩條,以此類推)。內存:內部存儲器。CPU執行的指令都是由內存中讀取的,所以,一個程序要運行首先要裝入到內存中。 磁盤:外部存儲器。存放文件數據的地方。計算機中所有的數據平時都是存在這里的,只有在需要執行或查看時, 才讀取到內存中。但只有硬件,是不能使用的,還需要軟件的配合,我們買電腦時電腦中大都安裝了某一操作系統,主流的就是MSWindows系統了(還有其它的操作系統如 Linux等,這里不做討論)。這就是我們需要了解的也是以后要頻繁出現的 第二個
5、概念了“系統”。概念二 :系統。系統其實在大多數情況下都指的是操作系統,也就是幫我們使用與管理硬件的軟件系統,當我們按 下機箱電源后,即由主板上的 BIOS檢測硬件、再交由硬盤中的引導程序啟動操作系統,然后就出現了我們所熟悉的 Windows主窗口(計算機在啟動時做了些什么,我們會在后面詳細的講解),而以后我們的所有工作,看電影、聽歌曲、 玩游戲、上網瀏覽等等都是在這個窗口中進行。操作系統維持這個窗口的顯示及一些常用功能的完成,而這些功能是 由一系列的程序來實現的,這又引出了我們的第三個概念“程序”概念三 :程序。程序是什么呢?程序就是一組指令執行序列。呵,有點專業了是不?什么又叫指令執行序列
6、呢? 舉例來說:我管理著一個工廠,正常情況下我讓工人們按這樣來工作“先去原料倉庫取原料- 進行初步加工 -進行精細加工 - 進行零配件組裝 - 驗收 - 合格則送入成品庫 - 不合格則銷毀”。這就是一個指令執行序列,當情況 為正常時,工人們執行的是這個序列也就是這個“程序”。而在旺銷的季節呢,我還有第二個程序“取原料 進行初步加工-組裝-進成品庫”。當情況為供不應求時,我就執行第二個程序。還有第三個、第四個等等,在 不同的情況下,我讓工人們執行不同的程序。計算機程序也是一樣的,跟據用戶要求的不同,執行不同的指令序列,比如您要畫圖,你可能會這么操作“點擊開 始菜單 - 選擇所有程序 - 在所有的
7、程序中選擇附件 - 再在附件中選擇畫圖”,這就是你向操作系統下達的指令。操作 系統得到您的指令后,則會執行畫圖程序,也就是實現畫圖目的的一系列指令,而這些畫圖的指令儲存在“”文件中。 操作系統會將中的指令裝入到內存中交由CPU開始一條條的執行。總結一下:程序是什么呢?說白了就是一個計劃書,里面記載了先做什么后做什么。好的程序是好的計劃,壞的程 序就是壞的計劃,比如:“收集炸藥 - 買雷管- 制成炸彈 -放到張三的床下面 -引爆” ,這就是一個壞計劃,相對于計 算機來說就是一個壞程序。壞程序有破壞作用嗎?也就是說你寫了個爆了張三的計劃書就可以炸了張三嗎?當然不可 以,只有計劃是不行的,還要去執行
8、才能真正起到作用。所以,一個木馬程序僅僅是存在于您的計算機中時并不可怕, 可怕的是它執行起來。程序執行起來是什么呢?那就是我們要說的第四個概念“進程”- 執行中的程序。概念四 :進程。程序一旦進入內存中開始執行,就叫做進程(進程其實就是容納指令與資源的容器)。也就是說, 他已經開始工作了,開始買炸藥、制炸彈了,等執行到引爆那一條指令時,張三也就完蛋了。所以,檢查可疑進程, 就是查殺木馬的關鍵環節,也是重要的手段與方法。找到木馬的進程,并結束它,在它執行到引爆這條指令之前,就 停止它的執行,并將它的程序自計算機中刪除掉,就是我們所要達到的目的。說到這里,細心的讀者們可能想到了一個問題,畫圖程序的
9、執行,是因為我們向操作系統下達了畫圖的指令,所以 操作系統才調入畫圖程序開始執行畫圖的指令序列。但是木馬程序又是誰給操作系統下達的指令讓木馬的工作計劃得 到執行的呢?這就是我們下面要說的第五個概念“自啟動程序”概念五 :自啟動程序。顧名思義,自啟動程序,也就是不用您自己動手它自己就可以啟動起來開始執行的程序。這 是些什么程序呢?為什么要允許程序這樣做呢?難道是專為木馬準備的?呵,當然不是。自啟動程序有二大類,一是 系統需要的;二是用戶需要的。系統需要的,是因為有些工作是無須經過用戶同意,必須去做的。比如,鼠標驅動。為了能讓用戶使用鼠標,系統 要自動加載鼠標驅動程序并執行。用戶需要的,一些重復性
10、工作可能用戶想讓系統自動去做,而不是每天每時的重復這份工作。比如:用戶可以設定 多長時間無操作,就自動運行屏幕保護程序以便保護屏幕不被燒壞。這顯然必須要屏幕保護程序能自動的運行,用戶 是不可能每次手動去執行這個程序的。而木馬就是利用了這些本來是為系統或用戶提供方便的手段, 來實現自動運行它們自己的目的。 如:木馬用自己來 取代屏幕保護程序,這樣,長時間無操作時,運行的就不再是屏幕保護程序而是木馬了。在系統中有很多地方或方法是可以讓程序自動運行起來的,這個我們在后面將一一講述。 而清掉自啟動項, 讓木馬 程序得不到執行,顯然也就成為了我們查殺木馬的重要手段之一。而系統又是如何知道, 哪一個程序應
11、該在開機后就自動運行, 無須等用戶來操作呢?朋友們應該能猜到, 系統肯定 是把這些需要自動運行的程序都記錄到了某一個地方,記錄到哪里了呢?這就是我們要講的第六個概念“注冊表”概念六 :注冊表。 注冊表是什么呢?是系統記錄信息用的一個數據庫, 舉例來說它就像公司檔案柜一樣, 發工資時, 財務人員要查閱檔案,以確定哪個員工應該發多少錢。就像系統啟動時查閱注冊表,確定哪個程序應該自動啟動起來 一樣。這是一個非常寵大的數據中心,系統的關鍵信息都記錄到那里,與現實中我們的檔案柜一樣,都很重要,一旦損壞 將造成無可挽回的后果,所以微軟公司不建議直接對注冊表進行操作。當然了,木馬的作者通常是不會理會微軟的建
12、 議的。所以,木馬通常都會將自己寫入到注冊表的某個自啟動項中,以便開機時自動運行,而無須經過用戶的同意。講到這里,又有一個不容回避的問題出現了,上面我們說了,木馬程序其實就是一個計劃書,而為了執行這份計劃 書,木馬需要把自己寫到注冊表中的自啟動程序序列中去。而問題就是,這份計劃書是如何來的呢?如果得不到執行, 它又如何將自己寫到注冊表的自啟動程序中去呢?不放到自啟動程序中它就得不到執行,而得不到執行,它也就無法 起到作用也包括無法將自己寫到注冊表中去暈了,這成了先有雞還是先有蛋的問題了。那么木馬是如何進入我們 的計算機并獲得首次執行的呢?這就是我們要講的第七個概念了“侵入”概念七 :侵入。侵入
13、是什么呢?也就是侵略進入嘍,侵略需要被侵略者同意嗎?當然不需要。將木馬程序放入您的 計算機,并讓它得到首次執行的過程就是侵入。侵入的方法有很多種, 我們將在后面主動防御一章中詳細講解。 因為, 相信現在朋友們最關心的并不是如何不讓他 進來,而是我的電腦中現在是不是正在執行著木馬程序呢?已經執行到了哪一步呢?是否馬上就要引爆了呢?我 關機后下次還能打開不?好,接下來,就讓我們進入下一章,一起來看看,電腦中正在執行的木馬程序“木馬進程”。三、木馬的查殺之進程篇1、進程的查看 進程,我們上面說過了,狹義上講就是正在執行中的程序。那如何來查看系統中都有哪些程序正在執行呢?(先 看下圖 03-1 :)系
14、統自帶了一個“任務管理器”可以使我們看到系統中當前的進程,在桌面下方的任務欄按右鍵,選擇“任務管理 器”或同時按下“ Ctrl Alt Del”三個鍵、或同時按下“ CtrlShift ESC三個鍵,都可以打開任務管理器程序, 看到上面的窗口。看到上面的圖時,會不會有點發昏? 20 個進程,哪個是好的哪個是壞的呢?上面的信息又都是些什么意思呢? 不要著急,讓我來教教你怎么來看這些信息。首先,顯示哪些信息,是可以自由選擇的,看到最上面的菜單沒?就是“文件、選項、查看、關機、幫助”。依 次選擇“查看” - “選擇列”并勾選里面的相應項就可以顯示相應的信息。我們關心的是前五個,即:映像名稱、PID、
15、CPU CPU時間、內存使用,下面依次進行介紹。l映像名稱:即進程所對應的同名程序名字。其中有兩個是例外,“System”代表的是系統,并沒有對應的同名程序;“ System Idle Process ”代表的是空閑進程,同樣沒有對應的同名程序,它占據了CPU的空閑時間。我們可以依據此欄,來找到進程對應的程序文件。lPID :英文件縮寫,即進程的 ID ,是一個唯一的數字,唯一的代表一個進程。 我們可以依據此欄來區分進程,尤其是同名的進程,比如:進程。ICPU:即該進程當前消耗 CPU的百分比,如果某個進程正在工作,那么CPU一列的數值就會是非零,工作量越大,其數值越高。例外的是“ Syste
16、m Idle Process ”進程,它的數值越高,說明當前的系統越是空閑,所有進程的 CPU 一欄的數值相加等于10 0% CPU占用。我們可以依據此欄來查看,哪些進程正在工作,哪些進程是空閑的。上面我們說過,同一CPU在同一時間只能處理一個工作,所以如果某一進程長時間大量占用CPU那么將會導致其它進程得不到或得到很少的CPU時間來處理,使系統反應速度嚴重遲緩。這種情況的出現,通常是程序出現了問題,我們就要考慮結束掉霸占CPU不放的進程,并盡量查明原因。ICPU時間:自運行以來,該進程占用的全部CPU時間,此數值越大,代表該進程工作時間越長,注意,不是運行時間而是工作時間,如果運行后,進程只
17、是等待,并沒有工作,那么此時間也會很小。例外的仍然是“System IdIeProcess ”進程,它占據了 CPU全部的空閑時間。我們可以據此來判斷, 哪些進程在一直的工作, 而這一直工作的進程是不是應該工作的正常進程。 比如我們一直在 畫圖,那畫圖程序的進程 CPU時間很長,那就是很正常的;而如果我們在聽音樂,從來沒畫過圖,但這里卻顯示畫圖 程序用了大量的CPU時間,那很可能就是某個黑客或木馬或其它進程正在偷偷的使用畫圖程序呢。I 內存使用: 標明了該進程使用的內存數量, 要知道, 系統中的內存數量是有限的, 當某一個進程大量占用內存時, 就會導至系統或其它進程可用內存量減少,而至使系統運
18、行速度減慢。在某些情況下, 可以依此來找出系統變慢的原因, 并盡量使用占用內存小的程序來提高系統的性能。 雖然現在機器 的配置都高了,內存也都大了,但在同等條件下,優先考慮使用占用資源少的程序也是有必要的。要在這些進程中區分哪些是系統進程,哪些不是,用任務管理器顯然很難做到,最好的辦法是借助專業工具。(看下圖: 03-2 )上圖是用反黑工具狙劍查看進程時的樣子,狙劍程序的下載地址:下載后解壓縮,運行里面的 啟動狙劍,并選擇“進程管理” 就可以打開進程管理頁面,與任務管理器相比,首先映像文件帶了路徑,使您可以直接定位到程序文件。其次,多了父ID 欄,這個標明了該進程是由誰啟動的,比如:的進程 I
19、D是540,父ID是4 那么,我們就可 以知道,是由進程ID為4的system進程啟動的,而又啟動了與,接著由啟動了與。注意,有的進程并沒有看到父進程,比如: 它的父 ID 是: 1216 但進程中并沒有進程 ID 為 1216 的進程,這是因為系統在初始化時還有一個程 序會自動運行,那就是這個程序負責用戶初始化工作,并負責啟動,而工作完成后,它就退出運行了,所以進程中并 沒有它。最近有個木馬是通過感染來啟動的,由于啟動后就退出了,所以通過查看進程很難發現問題,這問題我們將 在“自啟動項”一篇中詳細講解。以上就是系統啟動的順序,從 System 開始,依次啟動了幾個進程,正常情況下,上面這幾個
20、進程都是系統關鍵進 程,結束它們的運行將導至系統出現問題。有很多朋友對開機以后系統都做了些什么比較感興趣, 而這對系統不能啟動時的故障查明也有幫助, 可以通過判斷 系統停在了哪個環節來斷定是哪個部分出了問題,在這里,我就對系統的啟動過程進行一下簡單的說明:系統的啟動過程:1、 當你按下開機鍵時,最早是由主板 BIOS蕊片中的BIOS程序來執行硬件檢測任務的,如果檢查過程中發現關鍵 硬件的故障,就會發出特定的響聲通知用戶,并停止啟動。而BIOS程序是哪里來的呢?這是在主板出廠時固化在芯片 中的一段程序。2、 當硬件沒有問題時,BIOS程序就會讀入硬盤的主引導記錄,將下面的任務交給主引導記錄代碼去
21、完成。而主引 導記錄又是哪里來的呢?這是在安裝操作系統時對磁盤進行分區格式化操作時,寫到硬盤中的。如果找不到主引導記 錄,會出錯停止,告訴你這是非法的系統啟動盤。3、 主引導記錄代碼的工作是讀入磁盤主分區的根目錄,在里面讀出NtIdr 文件,并裝入內存,然后將控制權交給 它。注意看一下,你的硬盤根目錄下是不是有個 NtIdr 文件?這個文件的屬性是隱藏、系統,所以查看時要選擇查看 所有,且不隱藏被保護的系統文件才可看到。這個文件是哪里來的?呵,當然是安裝操作系統時拷貝到硬盤上的,下 面提到的文件都是在安裝操作系統時拷上去的。如果沒能找到 NtIdr 文件,則會停止啟動,顯示 NtIdr 沒找到
22、的錯誤 信息。4、Ntldr 又做了些什么呢?它會將系統由原來的16 位實模式切換到 32 位保護模式或 64 位長模式。它的工作是讀取根目錄下的文件,顯然引導菜單,在多操作系統的計算機中,可以看到這個菜單。接著它會清屏,并在 Win2000 下 顯示一個黑白的進度條,在 XP下顯示XP的標志圖同時顯示下面不斷滾動的藍色進度條,提示你它正在加載一些重要 的文件。它在加載什么呢?它首先會加載、,如果這兩個文件找不到會出錯停機,并顯示找不到相應文件的信息。接 著它讀入注冊表的 SYSTEM鍵文件,從中找出自動啟動的各類驅動程序,這是很關鍵的,因為有些內核級的木馬就是在 這時啟動的。每加載一個屏幕上
23、的進度條就滾動一下子。中間如果某個驅動出問題,也可能會導至系統藍屏崩潰。5、接下來的工作由(或)來進行,這是內核程序,它做的工作實在是太多了,這里就不再細說了。它的最后一步 工作就是創建會話管理子系統,也就是我們上面說過的,由 System 進程創建的進程。6、 進程負責創建用戶模式環境,由用戶模式環境向Windows提供可視的窗口界面。它會運行 BootExecute 中定義的程序,正常情況下是 Autochk ,一個檢查磁盤的程序。但有些殺毒軟件會把自己的 程序加到這里,來實現引導時殺毒,如果您的系統安裝了江民類的殺毒軟件,那么此時就會執行它的引導期殺毒程序, 就是進入系統前出現的藍底藍字
24、的病毒掃描窗口。還會執行 SessionManager 中的文件刪除、移動操作,也就是調用API:MoveFileEx 并選擇重啟后移除文件的,就是在這個環節執行了。當前有很多號稱可以刪除一切文件的安全工具都使用了MoveFileEx 來實現文件的刪除,但是現在我們可以知道了,它的文件刪除是在這個階段執行的,而這時驅動程序已經加載了,所以用它們來清除驅動級的木 馬顯然是不勝任的。創建附加的頁面文件。加載,這個東西又是做什么的呢?這是一個內核模式的系統驅動程序,它負責了窗口的顯示、屏幕的輸入、鼠標鍵 盤和其它設備的輸入及消息的傳遞等。所以也是由將顯示器的分辯率設置為默認值的,也就是這個時候,咱們
25、的計算 機屏幕才真正的細致起來,在此以前都是VGA模式,當然了視頻驅動是上面裝載驅動程序時就已經加載了的,現在只是起到作用而已。再然后呢,就是啟動我們上面說過的那兩個進程了。就是與進程。啟動完這兩個進程后, 就進入了無限的等待, 它在等什么呢?它在等它創建的與, 等著看這兩個進程什么時候死掉, 一旦他們中有死掉的,馬上罷工,讓系統徹底崩潰。(在XP以后Csrss的死亡是由內核使系統崩潰的,而不是),所以千萬不要結束系統進程。是做什么的呢?它負責的工作是創建或刪除進程、線程,控制臺與虛擬DOS機的支持等。它到此就開始工作了,不再參于后面的啟動過程。但是還有很多工作要做呢,我們接下來看看后面的啟動
26、過程。7、是做什么的呢?看它的名字應該看出個大概了吧。是的,它是與登錄相關的,但現在還不到顯示登錄窗口的時候,它還要先啟動及進程,然后讀取注冊表GinaDLL中標明的DLL,由這個DLL來顯示一個登錄對話話,也就是我們在進入系統時輸入用戶名與口令的窗口。為什么要先啟動呢?因為, 這是本地安全認證子系統, 負責的就是本機系統的安全, 用戶名與口令的驗證工作是由 它來進行的。還有一個我們上面提到過的進程也是這個時候由來啟動的,是哪一個呢?就是那個,這是在用戶登錄進系統后, 啟動此進程來進行用戶初始化。你也可以自己加一個程序與放在一起,那么,在這個時候會將那一位置的所有程序都啟動起來。當然了,相信你
27、也想到了,這個還有那個GinaDLL也就成了木馬啟動的一個可選位置。8、最后,由啟動的開始加載標明為自啟動的各個服務,及標明為手動的卻是有必要加載的服務(它所做的工作我 們在后面細講)。9、而呢,它在完成用戶初始化后,就啟動了,并功成身退。10、最后,就成了我們的服務員,等待在那里靜候我們的指令,聽從我們的吩咐,進行相關程序的啟動與功能的處 理。接著上面的一篇來講:看完系統的啟動過程后, 我們再回過頭去看那個進程圖, 是不是明白了很多呢?除掉系統啟動環節中啟動的進程外, 我們再看其它的進程,注意看一下兒,剩余的進程是不是都是由或中的一個啟動的。是系統的 Shell 程序,響應用戶的請求,并執行
28、對應的程序的工作就是由它來完成的,比如上面我們說過的,您想 畫圖時,將畫圖程序啟動起來的就是這個程序。你想上網時,將瀏覽器啟動起來的也是它。當然了,一些用戶的自動 任務也是由它來完成啟動過程的。(這些我們將在下面的自啟動程序一章中詳細講解)是系統的服務控制管理器,由它啟動的進程稱為“服務”,是一組特殊的進程。此類進程是開機自動運行的,不依 賴于用戶的交互,說白了就是不用您管,它自己就會運行并且開始自己的工作,工作過程也無須您的干預。說到這里,您可能會想,這不就是木馬所需要的么?不錯,有很多木馬是以服務進程的形式存在的。那我們可以管 理這些服務嗎?答案是肯定的,我們的計算機,我們當然有權力管理了
29、。看下面的圖03-3 :在桌面上“我的電腦”上面按右鍵,選擇“管理”就可以打開如上圖所示的窗口。依次選擇:服務與應用程序 服務 就可以看到上圖右側的服務列表。最左側的一列是服務的名稱,需要注意的是這里列出的并非是對應的程序文件的名稱,而僅僅是服務本身的名稱。 那我們又怎么知道這個服務對應的是哪個程序文件呢?如果我們想停止這個服務,并刪除對應的程序文件,我們應該 怎么做呢?再看下圖 03-4 : 在某一個服務上面按鼠標右鍵,選擇“屬性”,就可以打開此服務對應的屬性頁面,如上圖所示。在這里,我們可 以看到一些有用的信息,并對此服務進行啟動、停止、禁用等操作。最上面的是服務名稱,第二列是顯示名稱,第
30、三列是關于服務的描述,也就是這個服務是做什么用的。當然了, 我們不能迷信這里的描述,因為木馬可以自行設定這個描述。再下面就是可執行文件的路徑,也就是對應的進程與程 序文件。這時我們再返回頭去看 03-2那個圖,看一看進程PID為968的進程是不是就是這個 “-knetsvcs ” 進程呢?這時再注意一下,又會發現問題,首先,在03-2圖中,啟動的服務一共是7個,而在圖 03-03中,已經啟動的服務卻有很多,遠不止7個,再挨個兒的查看每個服務的屬性,又會發現,有很多服務名稱雖然不同,但對應的可執行 文件路徑(進程)都是一樣的,都是“- knetsvcs ”進程,這又是咋回事呢?這里我們要解釋一下
31、這個進程了,這是 一個特殊的進程。從圖 03-1 中我們可以看到名字為“”進程一共是五個,我們沒辦法區分它們有什么不同。而在圖03-2 中,我們再查看這五個進程,卻可以從參數上來區分它們了,雖然進程名字相同,但它們的參數卻各不相同。對了,這就是區 分他們的方法了,是一個服務的宿主程序或者叫容器程序,它的里面是一組服務,而參數就標明了這一組服務的類型。 如果英文不是太差,那么從它的參數上就可以看明白這一組服務是做什么用的了。當然了, 我們是來查殺木馬的, 當然不會滿足于僅僅知道這是一組服務, 這一組中是不是會藏著一個木馬呢?所以, 我們還要知道這一組服務都分別是哪一個,怎么來查看呢?再來看下圖:
32、03-5上面的是什么呢?上面的就是我們在第一章中所提到的 “注冊表” 。依次選擇 - 開始- 運行- 輸入“” 確定。就可以調用系統自帶的注冊表編輯器來打開注冊表,再依次展開:HKEY_LOCAL_MACHINE-SYSTEM-CurrentControlSet-Services ,還記得上面 03-4 圖中的服務名稱么?對了就是那 個“ wuauserv ,在Services鍵下打開如上圖所示的“ wuauserv ”再展開,選中其下面的“ Parmeters ,看右邊的 窗口中,是不是找到了此服務所對應的程序文件了?就是那個嘍。每一個中的服務都可以通過這種方式找到其對應的程序文件。 看到這
33、里,朋友們是不是頭都大了?這么麻煩啊?查個進程居然這么麻煩,而且就算找到了,又怎么能知道是正常的程序還是木馬呢?呵,不要著急,也不要怕。上面不是在教給你知識么,而且在當年,沒有專業工具之前,我們可都是這么一個個 來找的。當然了,現在有了各種專業工具,的確是沒必要非手動去找了。在狙劍的進程管理列表中(圖 03-2),選中,然后按鼠標右鍵 - 選擇“查看模塊”,就可以得到上圖中的列表, 注意被藍條選中的那個是不是就是費半天勁所找到的那個:呢?找是找到了,可如何判斷這是不是系統的服務模塊呢?這一點微軟為我們想的很周到,他將大多數的系統文件都 進行了數字簽名,我們只需要檢查一下這個文件有沒有系統文件的
34、數字簽名,就可以準確的判斷,這是不是一個系統 文件。如何檢查呢?在列表中按右鍵,選擇“隱蕆微軟簽名項”就可以將所有系統文件隱藏起來,剩下的就是非系統的 文件啦,簡單不?數字簽名驗證還可以應用在對進程的判斷中,在圖 03-2 中,列表中共有 19 個進程,這些個進程中哪些是系統的 哪些又不是呢?我們仍然可以利用數字簽名來判斷,在列表中按右鍵,選擇“隱蕆微軟簽名項”就可以將所有系統進 程藏起來,剩下的就是非系統的進程。上面也說過了, 一共有5個進程,那我們是不是需要在每個進程上都重復一遍,查看模塊-隱藏微軟簽名項的過程呢?答案是不需要,在圖 03-2 的進程列表中,按右鍵,里面的一個“掃描無微軟簽
35、名模塊”的選項,點擊它一下, 就可以列出所有進程中所有沒有簽名的模塊了。還有一個問題是,如果手頭沒有工具怎么辦呢?就沒有辦法查看這些進程中的模塊了嗎?有的,仍然有辦法,看 下圖 03-7 :依次選擇“開始” - “所有程序” - “附件” - “系統工具” - “系統信息”就可以打開上面的窗口。在窗口 中選擇“加載的模塊”就可以看到左邊窗口中的信息,看到沒?我們找的那個wuauserv 就在里面。這里面列出了所有進程加載的所有模塊,可以參考,但也僅僅是參考,更多的情況仍然盡量的使用專業工具來檢查,會更方便更準確 一些。 O另外,有很多木馬是可以隱藏的,對于這一類木馬,用系統自帶的工具是檢查不出
36、的。注意看上面的幾張圖,發現 沒有,圖 03-2 比圖 03-1 中的進程多出來了一個這就是下面我們要講的“進程的隱藏了”。也許有朋友會說,是不是 取圖時這個進程已經關掉了呢?呵,沒關系,我這里提供了程序的樣本,您可以下載后運行一下試試,看是否可以在 任務管理器的進程列表中看到它。下載地址: 里面還附了隱藏進程的源代碼,懂編程的朋友們可以參考一下,看一看隱藏進程是如何的簡單。2、進程的隱藏與自我保護我們通過上面的講解已經知道,進程是一個程序運行所必須的,因此檢查進程也就成了查殺木馬的關鍵環節,我 們知道這一點,木馬的作者們當然更知道,所以,如何隱藏自己的進程,就成了養馬人處心積慮要實現的。說到
37、這里,有懂的朋友們可能要笑了,心里更可能在說“連無進程木馬都不知道,還好意思在這里顯擺呢”。一個程序可以無進程么?可以嗎?真的可以嗎?我可以很負責任的告訴您,在Windows系統下一個程序一定、確定以及肯定的會有一個進程,沒有進程是不可能的。那所謂的“無進程木馬”又是怎么回事兒呢?第一種無進程木馬是 DLL 注入型木馬:什么是DLL呢? DLL是動態鏈接庫,當某一進程需要實現某一功能時,此功能可能是放在某一動態鏈接庫文件中 的,所以,當進程需要使用時就要將動態庫文件加載到自己的進程中。舉例來說,如果進程就是一個工廠,那么,調 用DLL就是將工廠的某一部分工作外包給了DLL去做,而工作地點就在自
38、己的工廠內。明白了嗎?進程就是工作的廠地,即使外包出去了,也是需要地方干活的。“加載到自己的進程中”這一句是關鍵啊,并不是沒有進程,而是用了 其它程序的進程。像我們上面找了半天的那個服務:,注意一下文件的擴展名,不就是 DLL么,這就是一個典型的 DLL文件,如果這是一個木馬文件,那么,這就是一個典型的無進程木馬,因為他沒有自己的進程, 我們在進程列表中看到的是的進程。這個DLL是利用服務來加載的,在注冊表中還有很多位置可以讓一個DLL加載到其它進程中,這在后面自啟動程序一節中我們要講解。但是,通過注冊表來加載是可以的,但卻不是唯一的,還可以通過另一個進程,來打開現有的進程,來將DLL注入到被
39、打開的正常進程中,然后,執行注入的進程退出,這樣,在進程列表中仍然看不到木馬的進程。第二種無進程木馬是線程注入型的木馬。什么是線程呢?上面說了程序就像一個工廠工人工作的流程表,而進程就是將流程真正的運行起來,正式的開始 動手取原料 - 加工- 組裝- 驗收等等工作。但是,我們需要明白的一點是,工人們是可以分成小組后同時進行幾個 環節的,第一組工人負責取原料、第二組工廠人負責加工、而第三組工人負責組裝、第四組這樣,可以分工合作 同時進行形成流水線。而這工廠里的一組一組工人,相對于進程與線程而言,就是一個進程中的一個個線程。線程注 入又是咋回事呢?線程注入,就是木馬程序將一個惡意線程放到了正常進程
40、的線程序列中去執行,就像在工廠中多增 加了一組自己的工人負責制造炸彈,這一組工人與其它的正常的幾組工人沒有什么關系,但卻借用了人家的工廠去從 事著非法的勾檔。線程注入與DLL注入的區別是,線程注入只是增加了一組工人,這組工人是在以工廠的名義在工作,對外的名義也是工廠的名字,出了問題是由工廠負責的。而DLL注入呢,是外包,可能會增加一組工人也可能會增加多組,是以DLL自己的名義在工廠內工作的,出了問題是由DLL來負責的。當然了,如果問題大了,工廠也會受牽連的。看下面的圖 03-8 :在狙劍的進程列表中,選中一個進程按鼠標右鍵,選擇“查看線程”就可以查看此進程中的每一個線程,也就是查 看每組工人的
41、情況,還可以對某個線程執行暫停運行、結束運行等操作。我們注意看上面的線程列表,最后一列,顯示了一些DLL的名字,還有一個是,就是進程名字,我查看的就是進程的線程列表。明白我上面說的區別了么? ntdll 有三組線程在工作,那是 ntdll 在完成外包業務所需要的自己的三組工人;有一 組,那是工廠自己的工人,如果存在線程注入,那么就會多出一個線程。但是需要注意的是,有多個并不代表就一定 有線程注入,因為一個工廠也可以同時存在多條流水線。但只有一個那么通常情況下就是沒有線程注入,因為一個進 程肯定會有至少一個線程的存在,也就是說,一個工廠必定至少要有一組工人,皮包公司在Windows世界是不允許的
42、。了解了什么是DLL注入型木馬、什么是線程注入型木馬后,查殺他們顯然就很容易了。DLL注入型的,查起來很簡單,用上面說的方法“查看某一進程的模塊列表-再隱藏無微軟簽名的項”,就可以查出單個進程中被注入的模塊;如果在全系統范圍內查找,則使用“搜索無微軟簽名的模塊”就可以將注入到其它進 程中的模塊找出來,而大多數工具都提供了“卸載模塊”的功能,卸載后就可以刪除了,或直接用“卸載后刪除”的 功能,但有一點是需要注意的,如果該木馬使用了防卸載的技術,那么卸載此模塊時就會發生異常,對此也不必擔心, 我們還有其它方法清掉它,比如:清除其自啟動項,不讓他有注入的機會;或直接刪除其磁盤文件等。相比較起來,查殺
43、線程注入型的木馬,就比較困難了,我們上面說了,線程注入的沒有自己的文件,只是一段注入 的代碼。也就是說他只是混入工廠內的一組工人,并沒有自己的工廠也沒有自己招牌,想把他與正常的工人區分開, 是很困難的。這里提供了一個線程注入的測試程序:先試一試看看效果, 運行后,會打開一個窗口, 但你卻在進程列表中找不到有新增加的進程, 那窗口是如何來的呢? 這就是由注入到中的線程創建的。這時你再查看的線程列表,會發現多出來了一個線程,而線程的“模塊”那一列(圖 03-8 )標的名字就是,這時線程列表中已經有兩個名字為的線程了,但哪一個是好的,哪一個是后來注入的呢?通常 情況下看“基址”那一列(圖 03-8
44、),基址數值較大的那一個一般是起動起來較晚的,就是后來加入的了,選中那一 個線程選擇“結束線程”,發生了什么?是不是那個窗口被關閉了?(注意:如果是用狙劍查看的,那么在線程注入 后,查看新線程時,要重新刷新進程列表,不然會發現不了新注入的線程)當然了,上面只是做個試驗,讓朋友們親身體會一下線程注入是怎么一回事兒。真正查殺起線程注入型的木馬來, 用上面的方法顯然是不行的,首先,我們不知道他注入到了哪一個進程中。其次,即使一個進程中有多個以進程名為 名字的線程我們也無法確定那多出來的線程就是木馬線程。所以,我們仍然要從自啟動項入手來禁止線程注入。第三種無進程木馬是純驅動型木馬什么是驅動型木馬呢?就
45、是全部功能放到了驅動程序中去完成(當然了,純驅動型的并不多見, 大多驅動型木馬都是配了一個程序。)什么又叫驅動程序呢?驅動程序顧名思義就是驅使設備動起來的程序。A呵,可能不準確,但卻很容易理解。其作用是讓特殊的硬件和 Windows操作系統可以交換數據,比如我們按下了鍵盤的A鍵,那鍵盤驅動就要告訴 Windows系統“這家伙按下了 A鍵,你看咋辦吧”,它只是告訴一聲,后面的工作就由系統來處理了,系統會根據不同的情況 進行不同的處理,如果你是在打字,那就把A這個字符顯示在你的輸入頁面中,如果你用的是五筆,顯然直接顯示個A是不行的,Windows系統就會把你輸入 A的這個信息轉給了輸入法程序最終實
46、現你按A的目的。但驅動又怎么會與木馬有了關系呢?這就要從頭說起了, 話說當年木馬與驅動本來是分處于兩個天地, 互不相干的。 但隨著殺毒軟件、安全工具等木馬殺手對木馬的圍追堵截越來越是兇狠,木馬終于感到有點窮途未路了,在最后關頭, 它盯上了驅動程序!為什么盯上了驅動呢?因為驅動程序由于其特殊性,使得它在系統中有著超越一切的權力,而且 有著優先加載執行的優勢,它是做為操作系統的一部分來運行的。詳細情況涉及到系統權限的劃分與優先級設定,有 興趣的可以查閱相關資料,這里只要明白一點就行“系統的權限分為兩種R0與R3, 般的程序全部為 R3權限,其行為受到了很多限制;而操作系統與驅動則為R0權限,擁有對
47、整個計算機的全部權力,可以為所欲為”。舉例來說,殺毒軟件就像一個公司的人力部,對員工的行為進行考核,發現不好的就給予懲罰或辭退。如果木馬總 是隱藏在員工群里,那么就會受到嚴格的檢查與監管,一旦被查出有問題就會被立即辭退。而操作系統就是公司的董 事會或股東大會,驅動程序是董事或股東,有著超出人力部門監管的權力。為了逃脫追殺,開始有木馬以驅動程序的身份出現,當然了,木馬這個驅動是沒有硬件設備的,呵,如果中一個木 馬它就附帶一個設備,那么,哪怕它只是給一支鼠標,我也會沖天大喊“木馬們,都到我這里來吧”。所以它們有一 個好聽且很容易聽明白的名字“虛擬設備驅動程序”。當木馬成為公司的董事的時候, 身為人
48、力部門的安防程序開始感到郁悶, 明明發現那家伙就有問題, 但偏偏沒權力 辭退它。于是,殺毒軟件開始謀求同樣的身份,于是殺毒軟件也開始掛驅動,使其有了董事的身份來兼人力監管,于 是,新一輪的斗爭開始了。而這一輪的斗爭更是殘酷,本來在員工層的斗爭轉到了高層,本來斗爭的結果也就是員工 被辭退,還不至于傷筋動骨涉及公司根本,但現在卻是一不小心就讓公司整個解體了。對應于我們這些可憐的用戶來 說,殺軟與木馬的斗爭,一個不好惹來的就是藍屏死機、系統崩潰。OK 了解了驅動程序后,我們就要回到正題來了, 我們如何知道系統加載了哪些驅動呢?又如何知道哪些驅動是正常的系統驅動,哪些是木馬的驅動呢?看下圖 03-9
49、:在桌面我的電腦圖標上按右鍵,依次選擇“屬性 - 硬件 - 設備管理器”就可以打開上面的窗口了,再勾選上“查 看 顯示隱藏的設備”就可以看到“非即插即用驅動程序”。除了非即插即用外,其它的同級項目都是您機器上的硬件及它們的信息、資源、驅動等,他們是根正苗紅的正經設 備。由于這些都與硬件有關,所以,木馬動它們的可能性很小,必竟木馬也不想你的機器崩潰啊。因此,大多數木馬 驅動都隱藏在“非即插即用驅動程序”下面,而這里面的則是那些虛擬設備了(注:非即插即用驅動程序并非就是虛 擬設備驅動程序,這涉及到以前老版系統中的一些個問題,這里不再細說,您只需要明白,在當前的情況下,這里面 大多都是虛擬設備驅動程
50、序就可以了。)選中某一個項點鼠標右鍵,再選屬性,得到下圖 03-10 :一看到這張圖, 你最感興趣的一定是 “停止” 這個按鈕, 但我不得不很遺憾的告訴您 “是否能停止驅動程序的運行, 還要看這個驅動程序是否愿意停止運行”,是不是失望了?呵,應該是意料中的,如果木馬可以這么輕易的停掉,它 們還混什么吶?從這里不要奢望得到額外收獲,我們只需要了解一點就夠了,這個驅動的狀態是“已經啟動”。接下來要看的是“驅動程序詳細信息”這一欄。點一下,得到下面的這張圖03-11 :看到沒?這里面的就是驅動程序對應的文件了,至于下面的提供商、版權什么的,參考一下也就得了,如果木馬愿 意,它可以說它是“天宮”出品,
51、版權屬于“玉皇大帝”,那這里會絲毫不打折扣的給它顯示出來,你說能信嗎?按上面說的方法,你可以查看所有系統中加載的驅動程序,但很顯然,這么做的確是很麻煩,那有沒有省事點的方 法呢?有,我們看下圖 03-12:看到上面這張圖是不是有點眼熟?對了, 就是上面我們查找模塊時用到的圖, 打開方式同上, 向上翻就可以看到了。 藍條選中的那個,不就是與圖 03-11 中顯示的是一個么。這里面列出了所有的驅動程序,不用一個一個找了。到這里是不是有朋友有點火大了?明明有簡單的法子,卻帶著我們繞了這么大一個圈子。呵,上圖中的系統信息, 其實也就是系統自帶的一個工具,屬于專業工具范圍內的,且并不是太好使,木馬想在這
52、里隱藏信息很容易,而且禁 止這個的運行也很簡單。我們需要多了解幾個法了,以備不時之需,另外,我們需要的是盡量多的學一些知識,這才 是根本,了解了原理、懂得了知識,才能真正的成為高手,高手絕非只會使用工具。說到工具,那我們再看看專業工具對驅動程序的顯示:打開狙劍 - 選擇基本功能中的“內核模塊”,看到沒?不就在這里么。這么多,又如何來區分哪個是正常的哪個是 可疑的呢?很簡單,方法與我們篩選進程是一樣的,按右鍵 - 選擇“隱藏微軟簽名項”,剩下的,就是非系統的驅動 了。這里同樣提供了“停止運行”、“卸載模塊”等功能,但我還得遺憾的告訴大家,卸載它也得它自己愿意才行,但 想來木馬是不會愿意被卸載吧,
53、那我們就沒辦法了么?有,方法仍然與上面的相同,從自啟動程序入手,禁止它的加 載;或強制刪除它的文件。那驅動級木馬是不是就是真正的無進程呢?進程列表中找不到任何一個驅動程序的進程,而它也不像模塊與線程一樣,在其它進程內能夠找到,是不是真的可以無進程運行呢?當然不是,我前面已經說了,一個程序的運行,一定、 確定以及肯定的會依托一個進程,那這些驅動在哪個進程里呢?那就是System 進程,它們是做為系統的一部分來運行的。第四種無進程木馬就是利用技術手段隱藏進程的木馬 這顯然就不屬于無進程了,上面說的三種,的確是沒有自己的進程,只是利用了其它的進程。而利用技術手段隱藏 進程的木馬,則是有自己的進程,但
54、是如果你破解不了他的隱藏技術,那你就看不到它的進程。就像上面我們拿出來 的那個一樣,在任務管理器中看不到它的進程,而在狙劍中卻能看到,這就是隱藏與破解隱藏后的結果了。進程是如何隱藏的呢?這無可避免的會涉及到一些技術問題,下面我們盡量簡單明了的說一說,詳細的實現細節, 請參閱相關資料。在這里,我所想達到的目的,并非是讓您也同樣寫出一個能隱藏自身的木馬,而是讓您明白,什么 樣的手段可以隱藏木馬的進程,木馬又為什么會隱藏,而想破解這種解藏將它揪出來,又需要什么樣的技術,好有針 對性的選擇一些專業工具。同時,需要注意的是,隱藏進程的技術同樣適用于隱藏DLL模塊程序、隱藏驅動程序,下面為了描述方便,統一
55、說為進程。Windows系統給我們的開發人員提供了幾種列出系統中所有的進程、模塊、與驅動程序的方法,最常見的也是最常 用的方法就是調用系統 API:CreateToolHelp32Snapshot 、 EnumProcess、 EnumProcessModules 等,如果您不是開發人 員,您不用關心這幾個是什么東西,只需要明白,他們是獲取進程列表的第一層手段,我們調用這幾個其實就是在告 訴系統,我們需要進程列表,然后系統就會將列表返回給我們。而這幾個 API 在接到請求后又做了什么呢?他們會調用 ZwQuerySystemInformation , ZwQuerySystemInformat
56、ion 會調用KiSystemService 切入內核進入 R0權限,然后自SSDT表中查取得NtQuerySystemlnformation的地址,并調用其指向的實際代碼,而 NtQuerySystemInformation 的作用則是自系統的數據結構中取相應的數據,再順原路返回去。在中間任何一個環節進行攔截都可以實現隱藏進程的目的,這種攔截有一個名字叫做“HOOK,在切入內核進入 R0權限前進行HOOK稱為應用層HOOK而在之后進行 HOOI則是內核HOOK后者需要用驅動才能實現了。什么是HOOK什么是SSDT我們來舉例說明:Windows操作系統就像一個為我們管理電腦的服務公司,而他的工
57、作機制是逐級上報,各負其責的,他派了一個服 務人員時刻的跟著我們,看我們都有什么要求。當我們想查看系統中都有什么進程時, 我們會告訴服務員, 我們想了解當前都有哪些進程, 那么服務員就會把我們 的要求報上去,報給誰呢?他要先知道哪個部門負責哪個工作才行,SSDT表就是做這個的,SSDT表就像是一個路標,指明了什么樣的工作應該由哪一個部門負責處理。通過查表得知負責的部門后,工作就被移交到了那個部門,工作完 成后,部門會把工作結果交回給服務員,服務員再交給我們,而我們也就得到我們想要的結果了。應用層HOOK,就像是服務員被木馬偷偷的替換了,當我們提出要求時呢,他會檢查是否對他有害,或將對他有 害的
58、信息去掉,比如我們想查看進程,那他在將結果交給我們時,卻把木馬的進程自結果中抹去了,這樣,我們自然 是看不到木馬進程了。而最常見的內核 HOOK則是HOOK SSDT上面說了 SSDT就是一張表,標明了什么工作應該由什么部門負責。而 SSDT HOO也就是木馬將表上的內容給改了,本來交給A部門負責的工作被改成了交給由木馬負責,這樣,服務員在上報我們的請求時,一查表發現查看進程的工作是由木馬負責的,他就把這請求交給木馬了,而木馬呢?他可是知道 表中原來的內容是什么的呀,他只是對請求進行一下過濾,發現沒有對自己有害的,就直接轉交給原部門了,對自己 有害的,自然也就視情況濾掉或涂改了。我們先看看SS
59、DT到底是什么樣子的,看下圖(04-14 ):依次選擇狙劍-擴展功能-SSDT檢查-篩選可疑項,就可以看到上圖,那就是一個SSDT表,從左到右依次是序號、當前地址、所在模塊、HOO啖型、原地址、函數名。上面都是狙劍自己對 SSDT的HOOK當前安全軟件很多也用到了SSDT-HOO技術來實現對系統的安全防護。例如上面的第11號函數,所在模塊是“狙劍”,HOOK類型是“ HOOK,函數是“ NtAdjustPrivilegesToken ”。這是狙劍本身對 SSDT的一個HOOK用的技術就是 HOOK HOOK勺函數是用于增加進程 權限的。HOOK這個的目的是“在木馬進程為自己增加權限的時候進行攔
60、截,提醒用戶注意”這在主動防御一章中會詳 細講解。每一個函數都實現了某一種功能,比如:結束進程是由 NtTerminateProcess 來完成的(上圖中最后的那個 257 號 函數),如果HOOKT這個,那么在進程結束前,就有機會更改結果了,可以拒絕被結束。看下圖(03-15 )當你試圖在任務管理器中結束狙劍的進程時,系統會拒絕你的操作,其實這并不是系統拒絕的,而是狙劍自己,由 于狙劍HOOKT SSDT所以,結束進程的工作服務員都交給他去做了,他一旦發現結束的就是他自己,那他直接告訴服 務員這個進程不能結束,然后服務員就把這個結果給我們了,其實我們的這個請求并沒有真的到達應該送交的部門。而
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 信息系統監理師考試準備的時間規劃試題及答案
- 公路路基處理技術試題及答案
- 公路工程中的勞務用工管理試題及答案
- 深度分析行政組織理論趨勢試題及答案
- 學習路上的幫助三級數據庫試題及答案
- 理解數據標準化在數據庫中的必要性試題及答案
- 金屬絲繩在隧道工程中的應用與創新考核試卷
- 嵌入式編程技能測試試題及答案
- 計算機租賃業務中的風險管理框架優化與實施案例考核試卷
- 行政組織的數字化轉型與挑戰試題及答案
- 纖維基材料-生物質材料及應用課件
- 腫瘤患者的心理護理ppt
- 2023年中考英語作文How to deal with stress指導課件
- 人格權法完整版教學課件-整套教程電子講義(最全最新)
- 解一元一次方程移項合并同類項
- 首層放射科設備dr供電要求
- 夜市方案 專業課件
- 部編四年級語文下冊閱讀理解專項調研含答案
- 《綜合能源供應服務站建設規范》
- 關于磷化行業企業建設項目及污染排放有關問題法律適用的復函
- 07 二十五項反措 第12部分 防止大型變壓器損壞和互感器事故試題庫
評論
0/150
提交評論