日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

AD 侦查-MSRPC

發(fā)布時間:2025/5/22 61 如意码农
生活随笔 收集整理的這篇文章主要介紹了 AD 侦查-MSRPC 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文通過 Google 翻譯 AD Recon – MSRPC (135/539) 這篇文章所產(chǎn)生,本人僅是對機(jī)器翻譯中部分表達(dá)別扭的字詞進(jìn)行了校正及個別注釋補(bǔ)充。

導(dǎo)航

  • 0 前言
  • 1 MSRPC(遠(yuǎn)程過程調(diào)用)– Port 135
  • 2 初始枚舉 – Nmap 掃描
  • 3 枚舉 RPC 端點(diǎn) – rpcdump.py
    • 3.1 查找有趣的服務(wù)
  • 4 映射 RPC 端點(diǎn) – rpcmap.py
    • 4.1 通過 MSRPC 檢索網(wǎng)絡(luò)接口的 IPs 地址

      • 4.1.1 枚舉 IPv6 地址
  • 5 使用 Metasploit 枚舉 RPC
    • 5.1 auxiliary/scanner/dcerpc/endpoint_mapper
    • 5.2 auxiliary/scanner/dcerpc/hidden
    • 5.3 auxiliary/scanner/dcerpc/management
    • 5.4 auxiliary/scanner/dcerpc/tcp_dcerpc_auditor
  • 6 最后的想法

0、前言

在這篇文章中,我們將介紹幾種不同的工具,用來枚舉運(yùn)行在 TCP/UDP 135 端口上的 MSRPC 服務(wù)。

首先,我們會簡要介紹 MSRPC 并概述其工作原理;其次,在 Windows 10 主機(jī)上執(zhí)行 nmap 掃描并發(fā)現(xiàn) MSRPC 服務(wù)正在運(yùn)行;然后,使用 rpcdump.py 工具枚舉 RPC 端點(diǎn),同時了解如何查找特定的服務(wù);接著,使用 rpcmap.py 工具映射 RPC 端點(diǎn)。(遺憾的是,Windows 10 主機(jī)不允許匿名訪問。于是,我們把精力集中在了 DC 上,這樣運(yùn)氣可能會好一些。)

在映射 RPC 端點(diǎn)之后,我們發(fā)現(xiàn)了一個有趣的 RPC 服務(wù)正在運(yùn)行且可以被利用。于是,利用公開的漏洞,我們提取到了 DC 自身的一些網(wǎng)絡(luò)接口及其對應(yīng)的 IP 地址。

在提取到 IP 地址列表之后,我們對其進(jìn)行逐一檢查,于是再次得到了一個可訪問的 IPv6 地址。這意味著,枚舉范圍將再次擴(kuò)大。于此同時,我們也將了解一些可以用來枚舉 IPv6 地址的工具用法。

最后,我們將探索可用于枚舉 MSRPC 的四個不同的 Metasploit 模塊。

1、MSRPC(遠(yuǎn)程過程調(diào)用)– Port 135

微軟遠(yuǎn)程過程調(diào)用 (MSRPC) 是一種通信協(xié)議,它用于向網(wǎng)絡(luò)中另一臺計(jì)算機(jī)上的程序請求服務(wù)。換句話說,MSRPC 調(diào)用遠(yuǎn)程系統(tǒng)上的其它進(jìn)程,就像是在本地系統(tǒng)中調(diào)用它們一樣。這是通過“客戶端-服務(wù)器”或“請求-響應(yīng)”模型實(shí)現(xiàn)的。

如果想更詳細(xì)地了解 RPC 的工作原理,請查看維基百科。

RPC 端點(diǎn)映射器可通過 TCP 和 UDP 135 端口、使用空會話或驗(yàn)證會話(TCP 139 和 445)的 SMB (管道)以及監(jiān)聽 TCP 593 端口的 web 服務(wù)進(jìn)行訪問。此外,在 49xxx 上打開 RPC 端口也很常見,而這些端口又被稱為“隨機(jī)分配的高 TCP 端口”。

注:TCP端口 593 是 RPC over HTTP(通常叫 RPC over HTTP v1/v2,后來也叫 RPC over HTTPS)使用的標(biāo)準(zhǔn)端口。

MSRPC 服務(wù)使用 IPC 機(jī)制(如 命名管道、NetBIOS、Winsock)在客戶端和服務(wù)器之間建立通信,協(xié)議 IPC$、TCP、UDP、HTTP 用于提供對服務(wù)的訪問,了解這一點(diǎn)對于理解基于 SMB 進(jìn)行的 MSRPC 訪問至關(guān)重要。

注:(1)IPC 機(jī)制(Inter-Process Communication,進(jìn)程間通信)是一種在不同進(jìn)程之間交換數(shù)據(jù)或信號的機(jī)制。(2)IPC$ 是 Windows 電腦都會打開的默認(rèn)共享,同時它也是 SMB 管道協(xié)議提供訪問 RPC 服務(wù)的一個代表。

然而,在這篇文章中,我們會將注意力盡可能多地集中在對 135 端口的枚舉上,而關(guān)于 SMB 的 RPC 則會在下一篇文章中再詳細(xì)介紹。

此外,由于 RPC 是用于從網(wǎng)絡(luò)中的另一臺主機(jī)請求遠(yuǎn)程服務(wù)的服務(wù),因此,作為攻擊者我們應(yīng)該考慮如何將特制的輸入傳遞給應(yīng)用程序以在目標(biāo)系統(tǒng)上執(zhí)行任意代碼。

2、初始枚舉 – Nmap 掃描

首先,假設(shè)我們有一臺 Windows 10 的目標(biāo)機(jī)器,其 IP 地址為 172.16.1.200,然后使用 nmap 對其進(jìn)行 TCP 掃描。

nmap -A -sV -sC -T4 172.16.1.200 -p- -oN tcp_full.nmap

從上面的輸出中可以看到,端口 135 以及高 RPC 端口是開放的,那么接下來就讓我們開始 RPC 服務(wù)的枚舉吧。

3、枚舉 RPC 端點(diǎn) – rpcdump.py

我們可以與 135 端口交互,以查詢 RPC 定位器服務(wù)和各個 RPC 端點(diǎn)。這樣,我們就能對通過 TCP、UDP、HTTP 和 SMB 命名管道運(yùn)行的有趣服務(wù)進(jìn)行分類。

RPC 定位器服務(wù)能被訪問主要是通過以下五種協(xié)議綁定類型:

  • ncacn_ip_tcp — TCP 端口 135
  • ncadg_ip_udp — UDP 端口 135
  • ncacn_http — RPC over HTTP 通過 TCP 端口 80、593 或其它端口
  • ncacn_np — SMB 命名管道 \pipe\epmapper
  • ncalrpc — 基于本機(jī)的本地 RPC 通信協(xié)議(不走網(wǎng)絡(luò),以上 4 種是通過網(wǎng)絡(luò)進(jìn)行的)

ncacn_ip_tcpncacn_np 是我們在枚舉過程中最常見的協(xié)議綁定,但理解其它綁定也很重要。

可以用來遠(yuǎn)程查詢 RPC 定位器服務(wù)的最佳工具是 rpcdump.py,它是Impacket 腳本集合的一個腳本。

該腳本會轉(zhuǎn)儲目標(biāo)上注冊的 RPC 端點(diǎn)協(xié)議綁定列表。此外,它還會嘗試將轉(zhuǎn)儲的列表與已知端點(diǎn)列表進(jìn)行匹配。

注:端點(diǎn)在 rpcdump 的結(jié)果中是指“Protocol、Provider、UUID、Bindings”的綜合,但實(shí)際上只是“UUID、Bindings”的綜合,而協(xié)議綁定列表僅指 Bindings 中的值。工具 rpcdump.py 轉(zhuǎn)儲讀到的信息應(yīng)該只有 UUID、Bindings 有值,至于說 Protocol、Provider 中也會出現(xiàn)的值,應(yīng)該是工具匹配已知 RPC UUID 列表并處理之后的結(jié)果。

rpcdump.py 172.16.1.200 -p 135

從上面可以看到,rpcdump.py 能夠收集目標(biāo)機(jī)器上所有的端點(diǎn),即目標(biāo)系統(tǒng)上運(yùn)行的服務(wù)及其綁定的協(xié)議列表。總共轉(zhuǎn)儲了 334 個使用端點(diǎn)映射器分配了 RPC 端口號的端點(diǎn)(334 個正在運(yùn)行的且注冊了 RPC 的服務(wù))。

RPC 端點(diǎn)映射器允許 RPC 客戶端讀取以確定當(dāng)前分配給特定 RPC 服務(wù)的端口號。客戶端只有知道了特定服務(wù)對應(yīng)的協(xié)議綁定列表,然后才能去和該服務(wù)進(jìn)行通信。

3.1、查找有趣的服務(wù)

在上面的 334 個服務(wù)中,我們看到的大多都是一些僅在主機(jī)內(nèi)部運(yùn)行的服務(wù),因此我們應(yīng)該查找一些可以為我們提供潛在攻擊的特定遠(yuǎn)程服務(wù)。例如,可以檢查 Print Spooler 打印服務(wù)是否在運(yùn)行,如果在運(yùn)行,我們就可以遠(yuǎn)程利用 PrintNightmare 并獲得 SYSTEM shell。

rpcdump.py 172.16.1.200 -p 135 | egrep 'MS-RPRN|MS-PAR'

有返回值,則表明該主機(jī)很可能會受到 PrintNightmare 的攻擊!

有關(guān) PrintNightmare 漏洞的更多信息,可查看該帖子。

現(xiàn)在我們已經(jīng)了解了如何遠(yuǎn)程轉(zhuǎn)儲目標(biāo)主機(jī)上的端點(diǎn)列表,那么接下來就可以更進(jìn)一步,以嘗試發(fā)現(xiàn)一些有趣的端點(diǎn)映射。

4、映射 RPC 端點(diǎn) – rpcmap.py

可以用來枚舉 MSRPC 的另一個工具是 rpcmap.py,它也來自 Impacket 腳本集合。

Rpcmap.py 會掃描正在監(jiān)聽的 DCE/RPC 接口,并綁定到 MGMT 接口以獲取接口 UUID 列表。如果 MGMT 接口不可用,它就會使用已知的外部接口 UUID 列表,并嘗試綁定到每個接口。因此,該工具將識別目標(biāo)系統(tǒng)上開放的 DCE/RPC 接口。

注:rpcmap.py 首先嘗試遠(yuǎn)程綁定到 RPC 的 MGMT 接口,成功的話就能獲取到目標(biāo)機(jī)器上的大量的 UUID 接口,然后再逐一對這些接口發(fā)起遠(yuǎn)程綁定請求,請求成功的則記錄下來。如果綁定 MGMT 接口失敗,那么它就使用一份已知的 UUID 列表,然后去逐一嘗試去發(fā)起綁定請求,同樣也是成功的記錄下來。【關(guān)于 MGMT 的概念可查看本文 5.3 小節(jié)處的注釋】

因此,這種方式很像是一種 UUID 爆破,它和 rpcdump.py 的端點(diǎn)轉(zhuǎn)儲還不太一樣。但這種方式的好處就是:(1)隱藏的 UUID 通過轉(zhuǎn)儲無法發(fā)現(xiàn),但它能爆破出來。(2)最終記錄出來的 UUID 基本都是 ncacn_ip_tcp 這樣的可以通過網(wǎng)絡(luò)遠(yuǎn)程通信的。

注:DCE/RPC 即 Distributed Computing Environment / Remote Procedure Calls,分布式計(jì)算環(huán)境 / 遠(yuǎn)程過程調(diào)用,它們都屬于 RPC 的稱呼。

通俗來講,rpcdump.py 能夠轉(zhuǎn)儲端點(diǎn)和綁定,而 rpcmap.py 可以用來確定端點(diǎn)映射是否可以通過遠(yuǎn)程綁定。

接下來,我們從枚舉綁定在 ncacn_ip_tcp(TCP port 135)上的映射開始。

rpcmap.py 'ncacn_ip_tcp:172.16.1.200'

不幸的是,在默認(rèn)情況下,我們無法以匿名身份枚舉加入了域的 Windows 10 機(jī)器。

然而,Windows Server 計(jì)算機(jī)并非總是如此。通常情況下,它們默認(rèn)允許我們在 MSRPC 級別進(jìn)行匿名訪問。

因此,我們將把重點(diǎn)轉(zhuǎn)移到域控制器上,看看通過匿名會話可以找到些什么。

rpcmap.py 'ncacn_ip_tcp:172.16.1.5'

Amazing!我們能夠匿名轉(zhuǎn)儲端點(diǎn)映射,在獲得這些端點(diǎn)的服務(wù)信息后,我們可以在線搜索,看看其中是否有任何服務(wù)容易受到遠(yuǎn)程溢出攻擊。

遠(yuǎn)程溢出漏洞在舊版 Windows 中更為常見。話雖如此,但最近有一個值得關(guān)注的漏洞:CVE-2022-26809

在這個網(wǎng)站中,我們可以用它來引用 UUID 值來確定它們的分配情況。具體來說,我們應(yīng)該特別關(guān)注的是 IObjectExporter 的 RPC 接口的 UUID,也就是 IOXIDResolver(在土豆攻擊中使用過)。

IObjectExporter – {99fcfec4-5260-101b-bbcb-00aa0021347a}

4.1、通過 MSRPC 檢索網(wǎng)絡(luò)接口的 IPs 地址

發(fā)現(xiàn) IObjectExporter 服務(wù)正在運(yùn)行后,我們可以使用一個很酷的技巧來提取目標(biāo)主機(jī)上所有網(wǎng)絡(luò)接口的 IP 地址。然后根據(jù)提取到的網(wǎng)絡(luò)接口,我們很可能會發(fā)現(xiàn)另外一種可以轉(zhuǎn)移到其它網(wǎng)絡(luò)的方式,也可能會提供 IPv6 地址。

如果發(fā)現(xiàn) IPv6 地址,就可以使用它來嘗試在主機(jī)上找到要枚舉/利用的其它服務(wù)。此時,需要使用此腳本進(jìn)行。

./IOXIDResolver.py -t 172.16.1.5

BOOM!通過腳本,我們成功發(fā)現(xiàn)了另一個網(wǎng)絡(luò)的 IP 地址 10.0.3.15。這可能是在后滲透階段一個潛在的突破機(jī)會,但在此時它基本不會有什么作用。還是把目光看向?qū)?yīng) 172.16.1.5 接口的 IPv6 地址吧。

令人驚訝的是,這在 Windows 10 主機(jī)上也能正常工作,盡管我們使用 rpcmap.py 時被拒絕訪問。

4.1.1、枚舉 IPv6 地址

首先,通過 ping IPv6 地址以確保我們可以與其進(jìn)行通信。

ping -c 3 2607:fea8:9961:d700:7d6d:b8f1:231e:c614

Perfect!ping 是成功的。

然后,我們使用 nmap 查找任何以前未被發(fā)現(xiàn)的開放端口,選項(xiàng) -6 表示支持 IPv6 地址。

nmap -6 -A -sV -sC -T4 2607:fea8:9961:d700:7d6d:b8f1:231e:c614 -p- -oN tcp_ipv6.nmap

我們希望可以找到一個只在 IPv6 上運(yùn)行不在 IPv4 上運(yùn)行的新的有趣的服務(wù),但經(jīng)過掃描我們并沒有發(fā)現(xiàn)這個服務(wù)。

例如,如果我們發(fā)現(xiàn) 445 端口在 IPv6 上開放,而在 IPv4 上未開放,那我們?nèi)匀豢梢允褂迷S多用于攻擊 IPv4 的工具去攻擊 IPv6。這是因?yàn)樵S多工具基本都添加了對 IPv6 的支持,因?yàn)?IPv6 在當(dāng)今的現(xiàn)代網(wǎng)絡(luò)中是至關(guān)重要的。

下面僅舉幾個工具,以展示在面對 IPv6 地址時它們是如何使用的。

smbclient -L 2607:fea8:9961:d700:7d6d:b8f1:231e:c614 -N

crackmapexec smb 2607:fea8:9961:d700:7d6d:b8f1:231e:c614 --shares -u '' -p ''

好了,讓我們回到正文。

除了上面介紹的 Impacket 工具 rpcdump.py 和 rpcmap.py 之外,可以用來枚舉端口 135 上的 MSRPC 的另一個好工具是 Metasploit

5、使用 Metasploit 枚舉 RPC

Metasploit 有一些非常好的模塊,可以完成我們用 rpcdump.py 和 rpcmap.py 所能完成的大量工作,甚至更多。

首先,讓我們使用以下命令啟動 Metasploit:

msfconsole -q

然后使用以下命令來查看所有 RPC 枚舉腳本:

search auxiliary/scanner/dcerpc

通過搜索,我們找到了 8 個輔助模塊,然而,并非所有這些模塊都對我們的枚舉有用。

對于我們當(dāng)前的枚舉,我們將把重點(diǎn)放在使用端口 135 的四個模塊上,它們分別是:

  • auxiliary/scanner/dcerpc/endpoint_mapper
  • auxiliary/scanner/dcerpc/hidden
  • auxiliary/scanner/dcerpc/management
  • auxiliary/scanner/dcerpc/tcp_dcerpc_auditor

接下來,讓我們看看每個模塊的實(shí)際示例!

5.1、auxiliary/scanner/dcerpc/endpoint_mapper

Endpoint_mapper 模塊會查詢遠(yuǎn)程系統(tǒng)的 EndPoint Mapper 服務(wù),以確定哪些服務(wù)可用。其功能與 rpcdump.py 類似。

use auxiliary/scanner/dcerpc/endpoint_mapper
show options
set RHOSTS 172.16.1.200
exploit

5.2、auxiliary/scanner/dcerpc/hidden

該模塊將查詢端點(diǎn)映射器并列出所有 ncacn_tcp RPC 服務(wù)的列表。然后,它將連接到每個服務(wù),并使用管理 API 列出該端口上可訪問的所有其他 RPC 服務(wù)。

注:正常基于 RPC 的服務(wù)會把自己的接口信息注冊到 135 端口上的端點(diǎn)映射器上,但一些 RPC 服務(wù)(為測試接口、故意隱藏管理接口、廠商私有擴(kuò)展)不走標(biāo)準(zhǔn)注冊流程導(dǎo)致普通掃描器就掃不出來。這時客戶端可以根據(jù)一些已知的隱藏接口的 UUID 強(qiáng)行與其發(fā)起綁定請求,若回復(fù)則標(biāo)識接口存在,反之接口不存在。

端口 135處運(yùn)行的服務(wù)是 RPC 端點(diǎn)映射器服務(wù),而那些注冊了 RPC 的服務(wù)則可以稱為 RPC 服務(wù)。

任何被發(fā)現(xiàn)連接到 TCP 端口但未在端點(diǎn)映射器中列出的 RPC 服務(wù)都將被顯示和分析,以確定是否允許匿名訪問。

use auxiliary/scanner/dcerpc/hidden
show options
set RHOSTS 172.16.1.200
exploit

從上面可以看到,在針對 Windows 10 機(jī)器進(jìn)行測試時,所有接口的匿名訪問都被拒絕。

然而,當(dāng)瞄準(zhǔn) DC 時,會發(fā)現(xiàn)一些隱藏的服務(wù)。

這很酷,因?yàn)樗鼮槲覀兲峁┝祟~外的 UUID,而這些 UUID 是我們從轉(zhuǎn)儲端點(diǎn)中無法獲得的。希望這些隱藏的服務(wù)能映射到存在漏洞的服務(wù)。

5.3、auxiliary/scanner/dcerpc/management

該模塊可用于從遠(yuǎn)程管理接口 DCERPC 服務(wù)獲取信息。

注:

MGMT(RPC management):管理所有注冊到 RPC 的服務(wù)的 UUID,相當(dāng)于一個檔案管理員。

EPM(RPC endpoint_mapper):根據(jù)客戶端提供的接口UUID,告訴客戶端這個 UUID 接口在什么地方監(jiān)聽。相當(dāng)于一個指路人。

MGMT 接口是列出/管理所有注冊的 RPC 接口信息;EPM 是幫助客戶端根據(jù) UUID 找到 RPC 服務(wù)位置的訪問端口。

use auxiliary/scanner/dcerpc/management
show options
set RHOSTS 172.16.1.200
exploit

再次,當(dāng)面向 Windows 10 主機(jī)時,匿名訪問會被拒絕。

而當(dāng)面向 DC 時,我們的運(yùn)氣會更好一些,并且匿名訪問是可以接受的。

5.4、auxiliary/scanner/dcerpc/tcp_dcerpc_auditor

該模塊允許我們確定哪些 DCERPC 服務(wù)可通過 TCP 端口訪問。

注:該模塊會爆破一份內(nèi)置的 UUID 列表(里面是常見的、危險(xiǎn)的、敏感的DCE/RPC接口UUID,比如MS-SAMR、MS-LSAD、MS-DRSR),然后對每一個 UUID 嘗試進(jìn)行 Bind 請求操作,若成功則記錄該 UUID,從而找出暴露的 RPC 接口。

use auxiliary/scanner/dcerpc/tcp_dcerpc_auditor
show options
set RHOSTS 172.16.1.200
exploit

有趣的是,它連接到 IObjectExporter,這正是我們之前使用 rpcmap.py 在 DC 上找到的。然后我們利用它來提取所有適配器 IP。

此外,當(dāng)使用 rpcmap.py 拒絕訪問時,可以用它來確認(rèn)該服務(wù)是否正在運(yùn)行。

6、最后的想法

如您所見,在端口 135 上可以進(jìn)行一些相當(dāng)不錯的枚舉,它提供給了我們很多東西,因此絕對是一個不應(yīng)該被忽視的端口。

作為攻擊者,我們應(yīng)該始終嘗試以匿名的方式在任何可能的地方進(jìn)行枚舉。像如 MSRPC 這樣的服務(wù),當(dāng)它允許匿名訪問時,它會提供大量的信息,而這些信息可能有助于我們找到憑據(jù),甚至在系統(tǒng)上獲得立足點(diǎn)。

總結(jié)

以上是生活随笔為你收集整理的AD 侦查-MSRPC的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。