混跡 Web 安全行業許久,查殺網站後門已是家常便飯。時間久了,養“馬”場也見的多了,Neo-reGeorg 算得上是同類中戰鬥力超群的“野馬”了,也深受黑客和安全滲透人員的喜愛。Neo-reGeorg 能夠簡化攻擊流程。通常,拿下 Web 伺服器並進一步橫向滲透時,在 Web 伺服器上安裝必要輔助工具的過程往往不會很順利。而 Neo-reGeorg 可以讓問題變得輕鬆很多,只需在本地安裝好掃描工具,通過 Neo-reGeorg 把流量透傳到 Web 伺服器內部就可以了。

1. 工具介紹

Neo-reGeorg 是 reGeorg 和 reDuh 的升級版,是為了應付複雜的網路環境重構的專案。該工具基於 HTTP(S) 協議建立隧道,會在本地建立 Socket 監聽 1080 埠用於正向代理訪問 Web 伺服器隧道指令碼,通過正向代理的方式把資料加密封裝到 HTTP 資料包中轉發到伺服器的橫向網路中,同時隧道指令碼也會把內網伺服器埠的資料加密封裝到 HTTP 資料包中轉發到本地的 Socket 介面。

2. 涉及的概念

  • 隧道技術

    隧道技術是網路裝置之間傳輸資料的一種方式,使用隧道技術的資料包會被特殊處理 (封裝打標籤),並通過網路傳輸,其傳輸所經過的邏輯路徑稱為隧道,資料到達最終目的地會進行資料還原處理。隧道技術涵蓋了資料封裝 (打標籤)、傳輸和解包 (去標籤) 的整個過程。隧道是邏輯上的概念,是基於現有網路基礎的產物。

  • 正向和反向代理

    正向代理:Proxy 和 Client 同屬一個區域,對 Server 透明。正向代理的控制權在自己手上,策略可以自定義。

    反向代理:Proxy 和 Server 同屬一個區域,對 Client 透明。反向代理的控制權在 Server 端,策略無法自定義。

  • Socket 和埠

    Socket 也稱套接字,程式設計中會繫結到某個埠進行監聽,應用程式通過它來發送或接收資料。Socket 套接字可以形象地理解為一張和檢票口 (監聽埠) 繫結的機票,乘客持此機票在檢票口附近不斷輪詢檢票口狀態,當飛機到達檢票口位置,乘客就可以登機了,飛機的可靠性 (類似 TCP/UDP 的選擇) 則取決於機型和機長經驗等因素。

3. 執行環境

4. 使用案例

目標伺服器:

192.168.88.15 Linux3.10, Tomcat8, 防火牆策略只開啟 http 8080 埠

測試預期效果:

通過 8080 http 埠登陸目標伺服器 SSH

  1. 通過 neoreg.py 指令碼生成伺服器端隧道指令碼,預設生成到當前路徑的 neoreg_server 目錄下:

    python neoreg.py generate -k password

  1. 上傳 Neo-reGeorg 隧道指令碼到目標伺服器的虛擬目錄:

  1. 為了可以監控 Neo-reGeorg 和目標伺服器的互動過程,中間增加一道 BurpSuite 代理抓取資料包:

監聽本地的 8899 埠,並關閉資料中斷功能。

  1. 使用 neoreg.py 指令碼通過 BurpSuite 代理連線到剛才上傳的 tunnel 指令碼。

    此指令碼會在本地建立 Socket 並監聽 1080 埠

    所有資料請求都通過 BurpSuite 進行代理中轉

  python neoreg.py -k password -vv -u http://192.168.88.15:8080/tunnel.jsp --proxy http://127.0.0.1:8899

  1. Xshell 軟體設定代理,通過剛才建立的 Socket 正向代理進行遠端 SSH 登陸。





  1. 觀察 BurpSuite 轉發的 http 資料包,發現傳輸內容經過加密,偽裝成 base64 編碼進行傳輸的。

  1. 分析 Linux 的 /var/log/secure 日誌登陸情況。

通過 Neo-reGeorg 代理方式登陸 SSH,日誌記錄的 IP 源地址是伺服器自身的地址,也就是隧道指令碼所在伺服器的地址,並非 SSH 客戶端 IP 地址。

5. 如何防禦 Neo-reGeorg 入侵

很多類似 Neo-reGeorg 的工具從原理上講,都是對底層位元組流量讀取後進行特殊加密,然後披上 HTTP 協議外殼偷跑進網站內部的。由於 HTTP 協議包中的資料是特殊加密的,常規前置過濾手段是無法檢測出來的 (這也是某些違規上網渠道難以杜絕的主因之一,所謂“道高一尺魔高一丈”)。然而,Neo-reGeorg 類工具的弱點是沒辦法像 rootkit 那樣可以奪舍靈魂隱藏自己 (運氣好甚至可以與伺服器同壽)。WebShell 這類特徵就比較明顯了,往往東窗事發後會立刻被清理掉,攻擊者只得竭盡所能隱藏行蹤,避免被一眼識破。

常見的許可權維持手段一般有:

  1. 檔案偽裝,例如偽裝成 404 等頁面,並自定義返回狀態碼為 404,在日誌審計的時候達到一些干擾作用。

  2. 藉助 Web 服務軟體的檔名/目錄解析漏洞偽裝,當年的 IIS6 算是火了一把,還有 apache 的檔名從右向左的解析大法。

  3. 設定檔案屬性為隱藏,肉眼為不可見狀態,更徹底一些則追加修改登錄檔,讓資料夾選項的"顯示所有檔案"功能失效。

  4. Linux 上可以藉助一些不太常用的命令,如 chattr +i 命令,設定檔案不能被修改、刪除、改名等操作。

  5. 利用 Windows 系統保留檔名達到檔案無法被刪除的目的,如 aux、prn、con、nul、com1、lpt1 等,類似操作:copy 1.asp \\.\D:\wwwroot\aux.asp

  6. 把 Shell 內容寫入資料庫,需要時拿出來用。

  7. 對於檔案包含的惡意利用,特別是跨域呼叫的情況來說,因為後門程式碼不在本地,常規的 Shell 掃描工具是無效的。檔案包含的例子如下:

    程式碼隱藏到圖片 copy /b 1.jpg 2.php 3.jpg,那麼 3.jpg 就是後門和圖片的結合體,再以各種手段載入呼叫,如 <?php include (‘3.jpg’); ?>

    還有高階的 ADS 檔案流的用法,可以參考: 運用 iGuard 防禦 ADS 許可權維持

  8. 利用 Web 軟體本身配置檔案做文章,最常見的是新增了虛擬目錄,或者 txt 也變成了指令碼解析物件等。

這些手段就像跨站漏洞一樣,沒完沒了,不一而足。當一個技術大牛發起狠來,你永遠無法估量,又有多少手段被創造出來;重新編譯一個帶後門的 Web 服務軟體替換上去都是有可能的。

那麼針對這些可能性,該如何防禦?

  • 藉助 Shell 掃描工具定期自檢,熟悉站點架構,去除敏感目錄的指令碼執行許可權。
  • 系統日誌及 Web 應用日誌審計,特別是異常時間段的互動。
  • 藉助 syslog 做好日誌轉發備份工作。
  • 鎖定中介軟體的配置檔案,對於網頁檔案許可權的控制做到最小化,寧可錯殺後調整,也不可錯放。
  • 控制指令碼級別檔案的增刪改,增加指令碼白名單功能,只允許白名單內的指令碼對外互動。

總 結

基於 Web 的網際網路應用越來越廣泛,在只保留 HTTP 埠的普遍環境下,獲取網站 WebShell 許可權後的橫向網路滲透測試,Neo-reGeorg 是一款理想的兵器。在網站安全威脅日漸凸顯的今天,入侵者輕則篡改網頁內容,重則竊取重要內部資料,植入惡意程式碼,侵害網站訪問者。天存資訊的 iLocker 檔案實時監控工具作為一款專業的網頁篡改檢測工具,可以有效檢測系統異常檔案變化,對運維管理團隊來說,十分必要。(易樹國 | 天存資訊)

Ref