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