一、開始菜單啟動目錄
“開始——程序——啟動菜單“,其中的程序和快捷方式都會在系統(tǒng)啟動時自動運行。
最常見的啟動位置如下:
當前用戶
**<C:\Documents and Settings\用戶名\「開始」菜單\程序\啟動> **
C:\Users\Current user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
所有用戶
**<C:\Documents and Settings\All Users\「開始」菜單\程序\啟動> **
C:\Users\All Users\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
二、注冊表啟動
注冊表是啟動程序藏身之處最多的地方,主要有以下幾項:
1.Run鍵
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]
其下的所有程序在每次啟動登錄時都會按順序自動執(zhí)行。
2.RunOnce鍵
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
與Run鍵不同的是,RunOnce下的程序僅會被自動執(zhí)行一次。
3.RunServicesOnce鍵
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
鍵值下的程序會在系統(tǒng)加載時自動啟動執(zhí)行一次。
4.RunServices鍵
RunServices繼RunServicesOnce之后啟動的程序,位于:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices]
5.RunOnceEx鍵
該鍵是Windows XP/2003特有的自啟動注冊表項,位于:
[HKEY_CURRENT_USER\\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ RunOnceEx]
6.load鍵
[HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows]
load鍵值下的程序也可以自啟動。
7.Winlogon鍵
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
注意下面的Notify、Userinit、Shell鍵值也會有自啟動的程序,而且其鍵值可以用逗號分隔,從而實現(xiàn)登錄的時候啟動多個程序。
8.其他注冊表位置
還有一些其他鍵值,經(jīng)常會有一些程序在這里自動運行,如:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\Shell]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad]
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts]
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\System\Scripts]
9.注冊表注入啟動
更改AppInit_DLLs和LoadAppInit_DLLs注冊表鍵值,User32.dll被加載到進程時,會獲取AppInit_DLLs注冊表項,若有值,則調(diào)用LoadLibrary() API加載用戶DLL。所以,DLL注冊表注入,并不會影響所有進程,只會影響加載了user32.dll的進程。該鍵值位于:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
10.創(chuàng)建服務
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services]
該鍵值下關(guān)聯(lián)本機啟動的服務進程,通過創(chuàng)建相應的服務去關(guān)聯(lián)惡意樣本實現(xiàn)啟動。
注冊表的[HKEY_LOCAL_MACHINE]和[HKEY_CURRENT_USER]鍵的區(qū)別:
前者對所有用戶有效,后者只對當前用戶有效。
32位和64位的在注冊表中的區(qū)別會多了一個Wow6432Node.
三、自動批處理文件
autoexec.bat(位于系統(tǒng)盤根目錄)這個自動批處理文件,它會在電腦啟動時自動運行,早期許多病毒利用它,使用deltree、format等危險命令來破壞硬盤數(shù)據(jù)。如“C盤殺手”就是用一句“deltree /y c:\*.*”命令,讓電腦一啟動就自動刪除C盤所有文件。在Windows 98中,Winstart.bat文件,winstart.bat位于Windows文件夾,也會在啟動時自動執(zhí)行。
在Windows Me/2000/XP中,上述兩個批處理文件默認都不會被執(zhí)行
四、常用的啟動——系統(tǒng)配置文件
在Windows的配置文件(包括Win.ini、System.ini和wininit.ini文件)也會加載一些自動運行的程序。
1.Win.ini文件
打開Win.ini文件,在[windows]段下的“Run=”和“LOAD=”語句后面就可以直接加可執(zhí)行程序,只要程序名稱及路徑寫在“=”后面即可?!發(fā)oad=”后面的程序在自啟動后最小化運行,而“run=”后程序則會正常運行。
2.System.ini文件
打開System.ini文件,找到[boot]段下“shell=”語句,該語句默認為“shell= Explorer.exe”,啟動的時候運行Windows外殼程序explorer.exe。如將該句變成“shell=Explorer.exe 惡意程序名”。
3.wininit.ini
wininit.ini文件是很容易被許多電腦用戶忽視的系統(tǒng)配置文件,因為該文件在Windows啟動時自動執(zhí)后會被自動刪除,這就是說該文件中的命令只會自動執(zhí)行一次。該配置文件主要由軟件的安裝程序生成,對那些在Windows圖形界面啟動后就不能進行刪除、更新和重命名的文件進行操作。
五、組策略編輯器啟動——開/關(guān)機/登錄/注銷腳本
在Windows 2000/XP中,單擊“開始→運行”,輸入gpedit.msc回車可以打開“組策略編輯器”,在左側(cè)窗格展開“本地計算機策略→用戶配置→管理模板→ 系統(tǒng)→登錄”,然后在右窗格中雙擊“在用戶登錄時運行這些程序”,單擊“顯示”按鈕,在“登錄時運行的項目”下就顯示了自啟動的程序。
六、定時啟動——任務計劃
在默認情況下,“任務計劃”程序隨Windows一起啟動并在后臺運行。如果把某個程序添加到計劃任務文件夾,并將計劃任務設(shè)置為“系統(tǒng)啟動時”或“登錄時”,這樣也可以實現(xiàn)程序自啟動。通過“計劃任務”加載的程序一般會在任務欄系統(tǒng)托盤區(qū)里有它們的圖標。大家也可以雙擊“控制面板”中的“計劃任務”圖標查看其中的項目。
“任務計劃”也是一個特殊的系統(tǒng)文件夾,單擊“開始→程序→附件→系統(tǒng)工具→任務計劃”即可打開該文件夾,從而方便進行查看和管理。
七、白加黑——服務進程加載被替換過的惡意dll模塊
利用系統(tǒng)本身自啟服務進程,通過替換其服務所加載的dll,實現(xiàn)自啟動。
八、dll劫持
因為WIndows上的Dll加載有一個默認的加載順序,就是先在主程序當前目錄下查找dll,如果沒有就在系統(tǒng)路徑下找,如果還沒有,就去環(huán)境變量路徑里找,就因為這個我們可以優(yōu)先級高的位置放入我們準備好的惡意dll,這個就可以優(yōu)先加載惡意dll,實現(xiàn)啟動。
九、Bootkit
1.通過感染MBR(磁盤主引記錄)
實現(xiàn)繞過內(nèi)核檢查和隱藏啟動。
2.修改固件系統(tǒng)
通過修改固件系統(tǒng)實現(xiàn)自啟動。例如方程式(EQUATION)組織的攻擊組件,通過修改硬盤固件,不依靠文件載體,而是完整的存在于注冊表中,依靠bootkit在操作系統(tǒng)啟動時執(zhí)行,這一機制穿透了安全產(chǎn)品以文件為檢測對象的機制,也穿透了相關(guān)基于白名單和可信計算的解決方案。