滲透測試 埠復用正向後門

2021-09-26 15:32:10 字數 3523 閱讀 1825

補充一下埠復用的知識

0x01 關於埠復用

埠復用也是很老的後門技術,主要是劫持web伺服器相關程序/服務的記憶體空間、系統api甚至劫持網路驅動去達到目的,

在winsocket的實現中,對於伺服器的繫結是可以多重繫結的,在確定多重繫結使用誰的時候,根據一條原則是誰的指定最明確則將包遞交給誰,而且沒有許可權之分。這種多重繫結便稱之為埠復用。

這裡總結的是基於web服務組合http.sys驅動進行埠服用後門維權。

參考:簡單來說,剛引入tcp/ip協議的時候,tcp/ip 通過為每乙個應用程式協議分配乙個唯一的 16 位埠號,從而使用埠號來區分應用程式

部署使用非標準埠的應用程式經常會因為存在公司防火牆和個人防火牆而變得複雜或者甚至無法實現。 

現在使用微軟提供的net.tcp port sharing服務,只要遵循相關的開發介面規則,就可以實現不同的應用共享相同的web伺服器端口

在 http.sys 模型中,許多不同的 http 應用程式的通訊中將多路復用到單個 tcp 埠。此模型已經成為 windows 平台上的標準。 這為防火牆管理員提供了乙個公共控制點,同時可以讓應用程式開發人員盡可能降低生成可利用網路的新應用程式的部署成本。

在多個 http 應用程式之間共享埠的能力早已成為 internet 資訊服務 (iis) 的乙個功能。 但是,它是僅通過引入 http。使用此基礎結構完全得到廣泛的 iis 6.0 sys (核心模式 http 協議偵聽器)。 

(1)當iis或者其他的應用使用http server api去監聽請求路徑的時候,這些應用需要在http.sys上面註冊url prefix ,關於註冊url的規則,可以參考msdn: 

。這是註冊的過程。

(2)當乙個請求到來並被http.sys獲取到,它需要分發這個請求給註冊當前url對應的應用,這是路由的過程。

所以到這裡,埠復用的概念理解就很簡單了,使用http server api註冊不同的url請求位址,通過http.sys處理分發不同url請求給不同的應用實現埠復用,達到「不同應用共享埠」的效果。

http.sys驅動

http.sys驅動是iis的主要組成部分

使用

netsh http show servicestate
命令可以檢視所有在http.sys上註冊過的url字首。

實際上,winrm就是在http.sys上註冊了wsman的url字首,預設監聽埠5985。這點從微軟公布的winrm的架構圖也可以看出來。

條件:

首先是註冊urlprefix的格式。

urlprefix格式

urlprefix具有以下語法:

「方案://

主機:埠/ relativeuri」

開頭+:80 /虛擬根/」

正向後門程式註冊url

c:\documents and settings\administrator\桌面\door\d

oor.exe"

指定位址連線

還有一種常見的偽埠復用場景:

winrm服務

winrm全稱是windows remote management,是微軟伺服器硬體管理功能的一部分,能夠對本地或遠端的伺服器進行管理。winrm服務能夠讓管理員遠端登入windows作業系統,獲得乙個類似telnet的互動式命令列shell,而底層通訊協議使用的是http

開啟winrm服務

在windows 2012以上的伺服器作業系統中,winrm服務預設啟動並監聽了5985埠

對於windows 2008來說,需要使用命令來啟動winrm服務,快速配置和啟動的命令是

winrm quickconfig -q
這條命令執行後會自動新增防火牆例外規則,放行5985埠。

新增80埠listener

對於原本就開放了winrm服務的機器來講,需要保留原本的5985埠listener,同時需要新增乙個80埠的listener,這樣既能保證原來的5985埠管理員可以使用,我們也能通過80埠連線winrm。

使用下面這條命令即可新增乙個80埠的listener

winrm set winrm/config/service @
對於安裝windows 2012及以上版本作業系統的伺服器來講,只需要這一條命令即可實現埠復用。

這時候原本的5985埠還是保留著

修改埠為80:

winrm set winrm/config/listener?address=*+transport=http @
經過配置之後,winrm已經在80埠上監聽了乙個listener,與此同時,iis的web服務也能完全正常執行。

後門連線:

本地需要連線winrm服務時,首先也需要配置啟動winrm服務,然後需要設定信任連線的主機,執行以下兩條命令即可。

winrm quickconfig -q

winrm

set winrm/config/client @

連線使用

使用winrs命令即可連線遠端winrm服務執行命令,並返回結果

winrs -r: -p:***xx whoami
也可以接cmd 獲得互動shell。

winrm服務也是受uac影響的,所以本地管理員使用者組裡面只有administrator可以登入,其他管理員使用者是沒法遠端登入winrm的。要允許本地管理員組的其他使用者登入winrm,需要修改登錄檔設定。

reg add hklm\software\microsoft\windows\currentversion\policies\system /v localaccounttokenfilterpolicy /t reg_dword /d 1 /f
參考:

DELPHI黑客程式設計(一) 正向後門原理實現

在滲透測試中經常用到遠控 後門等輔助後滲透許可權維持工具,有一款好用的自製後門可以在鞏固滲透成果方面有很大的幫助。今天給大家簡單講解下後門的原理和實現的方法,主要針對技術研究和原理演示,請各位看官不要用於違法活動。按照連線方式可分為正向後門及 後門。字面上理解就是正向後門會在被控機上開啟監聽埠,等待...

Golang 埠復用測試

先給出結論 同乙個程序,使用乙個埠,然後連線關閉,大約需要30s後才可再次使用這個埠。首先使用埠9001連線服務端,傳送資料,然後關閉連線,接著再次使用埠9001連線服務端,如果連線失敗,間隔15s後,再次嘗試,最多嘗試3次,client package main import bufio fmt ...

滲透測試中常見的埠

1,web類 web漏洞 敏感目錄 第三方通用元件漏洞struts thinkphp jboss ganglia zabbix 80 web 80 89 web 8000 9090 web 2,資料庫類 掃瞄弱口令 1433 mssql 1521 oracle 3306 mysql 5432 pos...