安全圈 | 专注于最新网络信息安全讯息新闻

首页

滲透技巧——windows系統遠程桌面的多用戶登入–3gstudent–good in study,attitude and health

作者 landy 时间 2020-03-01
all

0x00前言

在滲透測試中,經常會接觸Windows服務器的遠程桌面服務,通過介面對服務器進行管理。而對於普通的Windows系統,在某些條件下也需要進行介面操作。

雖然我們可以通過編寫程式來實現介面操作(捕獲案頭資訊,壓縮傳輸,發送滑鼠鍵盤消息等),但是如果能够使用遠程桌面服務,豈不是更加方便高效

那麼,對應非服務器版本的Windows系統,在使用遠程桌面服務有哪些需要注意的問題呢,本文將會逐個分析介紹。

0x01簡介

本文將要介紹如下內容:

0x02開啟遠程桌面的方法

1、查詢系統是否允許3389遠程連接

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections

1表示關閉,0表示開啟

查看遠程連接的埠:

REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber

埠格式為16進制,如下圖

0xd3d轉換為十進位為33389

0xd3d 33389

2、本機開啟3389遠程連接的方法

方法1:通過cmd

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 00000000 /f REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f

方法2:通過reg檔案

內容如下:

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] "fDenyTSConnections"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] "PortNumber"=dword:00000d3d

導入註冊表:

注:

如果修改連接埠,系統重啟後才能生效

補充

如果系統未配寘過遠程桌面服務,第一次開啟時還需要添加防火牆規則允許3389埠,如下圖

修改防火牆配寘,允許3389埠的命令如下:

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow rdesktop 192.168.1.1:3389

Windows:

0x03非服務器版本的Windows系統默認只允許一個帳戶登入

具體表現為:

遠端存取時,使用與原系統相同的帳戶,原系統將被切換到登錄介面

如下圖

使用不同的帳戶,登入時提示其他用戶已登入到此電腦,如下圖

選擇繼續後,原系統案頭將彈框提示是否斷開當前連接(30秒後默認選擇同意,退回到登錄介面)

如下圖

0x04非服務器版本的Windows系統支援多用戶登錄的方法

1、使用mimikatz

privilege::debug ts::multirdp

執行如下圖

開啟多用戶登錄功能,最高支持到Win7

使用與原系統相同的帳戶,原系統還是會被切換到登錄介面

使用與原系統不同的帳戶,登入成功,如下圖

通過查看mimikatz的源碼找到修改思路,程式碼位置如下:

https://github.com/gentilkiwi/mimikatz/blob/master/mimikatz/modules/kuhl_m_ts.c

Windows在開啟服務Remote Desktop Services時,會加載termsrv.dll,如下圖

通過修改記憶體中的termsrv.dll實現開啟多用戶功能,具體操作如下:

Win7 x86:

查找:0x3B86200300000F84

0x3B86200300000F84

替換為:0xC78620030000FFFFFF7F9090

0xC78620030000FFFFFF7F9090

Win7 x64:

查找:0x39873C0600000F84

0x39873C0600000F84

替換為:0xC7873C060000FFFFFF7F9090

0xC7873C060000FFFFFF7F9090

當然,該方法在系統重啟後失效

更近一步,如果我們直接修改檔案termsrv.dll,能否實現永久開啟多用戶登錄的功能呢?

繼續接下來的測試

2、修改termsrv.dll

推薦工具:CFF Explorer

CFF Explorer c:\windows\system32

Hex Editor

查看十六進位數據39873C0600000F84

39873C0600000F84

如下圖

從0x0001738A處開始,選中12位元組,替換為C7873C060000FFFFFF7F9090

0x0001738A C7873C060000FFFFFF7F9090

保存dll

注:

需要先停止遠程桌面服務才能替換termsrv.dll

替換termsrv.dll後,重新開啟服務TermService

嘗試使用不同用戶遠程連接,成功,驗證該思路正確

完整操作如下:

1.查看Remote Desktop Services服務狀態

2.如果服務啟動,需要先關閉

3.删除原termsrv.dll

del c:\windows\system32\termsrv.dll

4.替換新termsrv.dll

5.啟動服務

6.遠程連接

成功實現多用戶登錄

補充1:

Win7 x86:

查找:0x3B86200300000F84

0x3B86200300000F84

替換為:0xC78620030000FFFFFF7F9090

0xC78620030000FFFFFF7F9090

補充2

常見Windows系統的版本號:

3、使用工具rdpwrap

工程地址:

https://github.com/stascorp/rdpwrap

工具地址:

https://github.com/stascorp/rdpwrap/releases

支持Win Vista - Win 10

不修改termsrv.dll,通過傳入不同參數實現

安裝:

測試如下圖

釋放rdpwrap.dll和rdpwrap.ini至System32資料夾

rdpwrap.dll會被加載到同termsrv.dll相同的行程

此時,能够使用不同用戶進行遠程連接

卸載:

0x05小結

本文介紹了三種支持遠程桌面多用戶登錄的方法,適用於不同條件,對於替換termsrv.dll的方法,需要根據系統具體版本,使用不同的替換位置

LEAVE A REPLY