混跡 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. 執行環境
- Neo-reGeorg 主程式 (下載地址)
- 需 Python 支援 ,相容 Python2.x / Python3.x (下載地址)
- 依賴 Python 第三方擴充套件 requests 模組 (下載地址)
4. 使用案例
目標伺服器:
192.168.88.15 Linux3.10, Tomcat8, 防火牆策略只開啟 http 8080 埠
測試預期效果:
通過 8080 http 埠登陸目標伺服器 SSH
- 通過 neoreg.py 指令碼生成伺服器端隧道指令碼,預設生成到當前路徑的
neoreg_server
目錄下:
python neoreg.py generate -k password
- 上傳 Neo-reGeorg 隧道指令碼到目標伺服器的虛擬目錄:
- 為了可以監控 Neo-reGeorg 和目標伺服器的互動過程,中間增加一道 BurpSuite 代理抓取資料包:
監聽本地的 8899 埠,並關閉資料中斷功能。
- 使用 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
- Xshell 軟體設定代理,通過剛才建立的 Socket 正向代理進行遠端 SSH 登陸。
- 觀察 BurpSuite 轉發的 http 資料包,發現傳輸內容經過加密,偽裝成 base64 編碼進行傳輸的。
- 分析 Linux 的
/var/log/secure
日誌登陸情況。
通過 Neo-reGeorg 代理方式登陸 SSH,日誌記錄的 IP 源地址是伺服器自身的地址,也就是隧道指令碼所在伺服器的地址,並非 SSH 客戶端 IP 地址。
5. 如何防禦 Neo-reGeorg 入侵
很多類似 Neo-reGeorg 的工具從原理上講,都是對底層位元組流量讀取後進行特殊加密,然後披上 HTTP 協議外殼偷跑進網站內部的。由於 HTTP 協議包中的資料是特殊加密的,常規前置過濾手段是無法檢測出來的 (這也是某些違規上網渠道難以杜絕的主因之一,所謂“道高一尺魔高一丈”)。然而,Neo-reGeorg 類工具的弱點是沒辦法像 rootkit 那樣可以奪舍靈魂隱藏自己 (運氣好甚至可以與伺服器同壽)。WebShell 這類特徵就比較明顯了,往往東窗事發後會立刻被清理掉,攻擊者只得竭盡所能隱藏行蹤,避免被一眼識破。
常見的許可權維持手段一般有:
檔案偽裝,例如偽裝成 404 等頁面,並自定義返回狀態碼為 404,在日誌審計的時候達到一些干擾作用。
藉助 Web 服務軟體的檔名/目錄解析漏洞偽裝,當年的 IIS6 算是火了一把,還有 apache 的檔名從右向左的解析大法。
設定檔案屬性為隱藏,肉眼為不可見狀態,更徹底一些則追加修改登錄檔,讓資料夾選項的"顯示所有檔案"功能失效。
Linux 上可以藉助一些不太常用的命令,如
chattr +i
命令,設定檔案不能被修改、刪除、改名等操作。利用 Windows 系統保留檔名達到檔案無法被刪除的目的,如 aux、prn、con、nul、com1、lpt1 等,類似操作:copy 1.asp \\.\D:\wwwroot\aux.asp
把 Shell 內容寫入資料庫,需要時拿出來用。
對於檔案包含的惡意利用,特別是跨域呼叫的情況來說,因為後門程式碼不在本地,常規的 Shell 掃描工具是無效的。檔案包含的例子如下:
程式碼隱藏到圖片
copy /b 1.jpg 2.php 3.jpg
,那麼3.jpg
就是後門和圖片的結合體,再以各種手段載入呼叫,如<?php include (‘3.jpg’); ?>
還有高階的 ADS 檔案流的用法,可以參考: 運用 iGuard 防禦 ADS 許可權維持利用 Web 軟體本身配置檔案做文章,最常見的是新增了虛擬目錄,或者 txt 也變成了指令碼解析物件等。
…
這些手段就像跨站漏洞一樣,沒完沒了,不一而足。當一個技術大牛發起狠來,你永遠無法估量,又有多少手段被創造出來;重新編譯一個帶後門的 Web 服務軟體替換上去都是有可能的。
那麼針對這些可能性,該如何防禦?
- 藉助 Shell 掃描工具定期自檢,熟悉站點架構,去除敏感目錄的指令碼執行許可權。
- 系統日誌及 Web 應用日誌審計,特別是異常時間段的互動。
- 藉助 syslog 做好日誌轉發備份工作。
- 鎖定中介軟體的配置檔案,對於網頁檔案許可權的控制做到最小化,寧可錯殺後調整,也不可錯放。
- 控制指令碼級別檔案的增刪改,增加指令碼白名單功能,只允許白名單內的指令碼對外互動。
總 結
基於 Web 的網際網路應用越來越廣泛,在只保留 HTTP 埠的普遍環境下,獲取網站 WebShell 許可權後的橫向網路滲透測試,Neo-reGeorg 是一款理想的兵器。在網站安全威脅日漸凸顯的今天,入侵者輕則篡改網頁內容,重則竊取重要內部資料,植入惡意程式碼,侵害網站訪問者。天存資訊的 iLocker 檔案實時監控工具作為一款專業的網頁篡改檢測工具,可以有效檢測系統異常檔案變化,對運維管理團隊來說,十分必要。(易樹國 | 天存資訊)
Ref
- http://www.tcxa.com.cn
- https://github.com/L-codes/Neo-reGeorg
- https://www.python.org/downloads
- https://github.com/kennethreitz/requests