混迹 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
1、通過 neoreg.py 腳本生成伺服器端隧道腳本,預設生成到目前路徑的
neoreg_server
目錄下:
python neoreg.py generate -k password
圖1
2、上傳 Neo-reGeorg 隧道腳本到目标伺服器的虛拟目錄:
圖2
3、為了可以監控 Neo-reGeorg 和目标伺服器的互動過程,中間增加一道 BurpSuite 代理抓取資料包:
圖3
監聽本地的 8899 端口,并關閉資料中斷功能。
圖4
4、使用 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
複制
圖5
5、Xshell 軟體設定代理,通過剛才建立的 Socket 正向代理進行遠端 SSH 登陸。
圖6
圖7
圖8
6、觀察 BurpSuite 轉發的 http 資料包,發現傳輸内容經過加密,僞裝成 base64 編碼進行傳輸的。
圖9
7、分析 Linux 的
/var/log/secure
日志登陸情況。
圖10
通過 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
還有進階的 ADS 檔案流的用法,可以參考: 運用 iGuard 防禦 ADS 權限維持
<?php include (‘3.jpg’); ?>
8) 利用 Web 軟體本身配置檔案做文章,最常見的是新增了虛拟目錄,或者 txt 也變成了腳本解析對象等。
9) …
這些手段就像跨站漏洞一樣,沒完沒了,不一而足。當一個技術大牛發起狠來,你永遠無法估量,又有多少手段被創造出來;重新編譯一個帶後門的 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