Web連接埠複用正向後門研究實現與防禦

來源:互聯網
上載者:User

標籤:.exe   sysman   方案   成本   ext   開源   編寫   資訊服務   參考文獻   

0×01背景

現在的很多遠控/後門因為目前主流防火牆規則的限制,基本上都採用TCP/UDP反彈回連的通訊形式;但是在較高安全環境下,尤其負責web相關業務的環境,因為安防裝置(防火牆,IDS,IPS等)規則的嚴格限制,TCP/UDP(HTTP/HTTPS/DNS)甚至ICMP等隧道都不能很輕易從內網訪問Internet,只接受外部的請求。在這種情境下,攻擊者在拿到了webshell的前提下,考慮植入除webshell以外的後門就需要考慮如何來繞過防火牆等安防裝置的限制了。

實際上關於連接埠複用這一古老的後門技術,一直研究者眾多,也提出了一些卓有成效的方法和工具,其中很多的解決方案都是通過劫持web伺服器相關進程/服務的記憶體空間、系統API甚至劫持網路驅動去達到目的,手法相當精妙,不過因為動作較大在不經意間就會觸發主動防禦。本文將從IIS 6.0以後的微軟提供的原生機制出發,討論一種較自然的連接埠複用的技術:Net.tcp Port Sharing,直譯是為“連接埠共用”。

本文將通過分析Net.TCP Port Sharing這個機制,最後實現一個基於連接埠複用的正向後門,目的是分享一些攻防技術的研究成果,請勿作為非法用途。

0×02 Net.TCP Port Sharing 機制

在以前的Web應用中,一個Web應用綁定一個連接埠,若有其他應用則需要綁定其他的連接埠才能是西安監聽。如所示,Web Application 1綁定了80連接埠後,Web Application 2再去綁定80連接埠會出錯。

 

現在使用微軟提供的NET.TCP Port Sharing服務,只要遵循相關的開發介面規則,就可以實現不同的應用共用相同的web伺服器連接埠。如中Web Application1 和Web Application2同時綁定在80連接埠。

 

 

Net.TCP Port Sharing服務是WCF(Windows Communication Foundation)中的一個新的系統組件,這個服務會開啟net.tcp 連接埠共用功能以達到在使用者的不同進程之間實現連接埠共用。這個機制的最終是在HTTP.sys中實現的,目前將許多不同HTTP應用程式的流量複用到單個TCP連接埠上的HTTP.SYS模型已經成為Windows平台上的標準配置。這為防火牆管理員提供了一個共同的控制點,同時允許應用程式開發人員最小化構建可利用網路新應用程式的部署成本。跨多個 HTTP應用程式共用連接埠的功能一直是Internet資訊服務(IIS)的一項功能。實際上,HTTP.SYS允許任意使用者進程共用專用於HTTP流量的TCP連接埠。

 

HTTP.sys是在Windows Server 2003最開始引進的,這個驅動監聽HTTP流量,然後根據URL註冊的情況去分發,這樣多個進程可以在同一個連接埠監聽HTTP流量了。微軟公開了HTTP Server API庫,像httpcfg,netsh.exe等都是基於它的。如。

 

 

整個流程說明如下:

 

(1)當IIS或者其他的應用使用HTTP Server API去監聽請求路徑的時候,這些應用需要在HTTP.SYS上面註冊url prefix ,關於註冊URL的規則,可以參考MSDN: https://msdn.microsoft.com/en-us/library/windows/desktop/aa364698(v=vs.85).aspx 。這是註冊的過程。

 

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

 

 

0×03 後門實現方式研究

 

微軟提供了HTTP Server API庫用於構建在Windows上的Web伺服器,原生支援基於Net.tcp Port Sharing的Web Application 開發。目前HTTP Server API有兩個版本,推薦使用HTTP Server API 2.0。微軟提供了HTTP Server API 1.0的一個demo,地址在: https://msdn.microsoft.com/en-us/library/windows/desktop/aa364640(v=vs.85).aspx。

 

這是一個簡單的基於HTTP Server API 1.0的web server 例子,通過修改可以實現遠程命令執行的功能。

 

開發的應用只需要註冊與當前系統不衝突的URL(綁定的地址是一致的,只是URL路徑有差別),就可以實現URL註冊,瀏覽器(或者自訂開發的用戶端網路程式)訪問對應的URL,服務端網路程式會根據自身註冊的URL去解析執行用戶端的命令。基於此,完全可以通過伺服器註冊一些特殊URL與用戶端訪問這些URL來達到一個HTTP一問一答的訪問模式的正向後門。

 

 

0×04 功能示範

 

環境:Windows 2008 R2 x64

 

IIS 7.0(預設設定)

 

防火牆狀態預設開啟

 

許可權要求:功能需要Adminstrator使用者的完整性層級,即使沒有啟用Administrator,通過UAC提高程式完整性層級即可運行程式。

 

達到的目的:與Web伺服器綁定同一連接埠,自身程式不監聽連接埠,通過註冊回呼函數等待系統服務分發流量。伺服器通過解析用戶端發送的請求(GET/POST或者其它方法)載荷,解析執行命令,然後以HTTP Response 的形式返回給用戶端。 

 

(1)在部署IIS的伺服器上,後門程式註冊一個URL

 

 

  當前編寫的只是一個demo,若是要做使用者態Rootkit,就需要做自身隱藏的功能,請讀者朋友們自由發揮,在這個過程中需要注意許可權的控制。 

 

(2)使用控制器串連目標機器的URL

 

 

當前控制器作為一個demo實現了一個互動CMD SHELL,代碼最佳化後會開源出來。

 

0×05 緩解措施與對抗策略研究

 

(1)防火牆/IDS/IPS與web伺服器配合使用,在其規則中採用白名單機制去判斷是否屬於web伺服器當前允許的ACL URL。

 

(2)請大家提出更多的建議。

 

0×06 參考文獻

 

https://www.codeproject.com/Articles/437733/Demystify-http-sys-with-HttpSysManager

 

https://msdn.microsoft.com/en-us/library/windows/desktop/aa364510(v=vs.85).aspx

 

Web連接埠複用正向後門研究實現與防禦

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.