一、計畫介紹
TH-Nebula
透過解析企業的網路流量 (包括
http
和
https
) 來還原企業內部的各種事件, 從而進行深層次的分析來發現各種風險
,並快速的實施攻防對抗,星雲采用旁路流量的方式進行數據采集,無需在業務邏輯上做數據埋點或侵入,同時支持本地私有化部署和
Docker
映像雲端部署;出於數據私密和敏感性的考慮,我們不做任何數據的上傳;
另外考慮到部份使用者風控經驗不足,星雲會提供基礎的風控策略樣版,使用者可以結合業務實際情況,靈活的進行配置和調整。考慮到攻防對抗的時效性,策略調整之後即時生效,無需重新編譯和上線。
二、計畫特點
1.輕量級部署
星雲采用完全旁路流量解析的方式來采集業務資訊,企業只需要與運維配合即可完成部署。值得一提的是,即使在業務增加、變化的情況下企業都可快速地獲取到網路存取、登陸、註冊、下單、參與活動等業務行為。
2.內建風險辨識規則,簡單易用
在「星雲」上內建了大量業務場景下的攻防規則,並采用視覺化規則編輯的方式,企業可以快速編輯策略並進行實際環境下的測試。
3.無埋點,無敏感數據泄漏風險
星雲不需要企業研發埋點即可實作存取、登陸、註冊、資訊修改等的數據即時采集,無敏感數據外泄風險,更好的保護企業數據私密。
三、技術選型
前端環境
n ode.js: 11.x
npm: 6.x
webpack: 4.x
後端環境
java: 1.8
maven: 3.x
python: 2.7.x
四、架構設計
TH-Nebula
是一個互聯網風控分析和檢測平台, 可以對包括流量攻擊, 帳戶攻擊, 支付攻擊在內的多種業務風險場景進行細致的分析, 找出威脅流量, 幫助使用者減少損失.
與常見的一些簡易安全防護軟體不同,
TH-Nebula
本質上應該是一套完整且獨立的數據分析平台, 邏輯上, 它需要提供以下幾個方面的功能:
數據采集與整合平台. 負責對接客戶現有系統不同形式存在的各種原始數據, 包括流量, 即時日誌, 日誌檔等.
數據規整化與業務日誌提取系統.
TH-Nebula
對原始數據進行清洗和標準轉換, 並根據配置抽象出各種標準的業務日誌, 方便後續進一步的分析.
數據持久化功能.對於進入系統的日誌, 進行持久化, 方便後續的離線計算以及攻擊溯源操作.
海量數據即時計算引擎. 對進入系統的海量數據, 進行大規模即時平行計算, 得到關於使用者的即時統計特征
海量數據離線批次處理計算引擎. 對進入系統的海量數據, 間隔性地進行離線批次處理計算, 得到關於使用者的固定特征
高效能策略引擎. 利用即時計算和離線計算的數據, 對所有使用者存取進行策略判別, 辨識出風險流量, 方便後續進一步處理
風險事件和黑白名單管理功能. 對於系統中辨識出的風險事件, 以及與之相關的黑白名單進行管理和查詢
數據視覺化和風險數據自助式分析系統. 方便對原始數據進行
review
, 對風險情況進行溯源
數據匯出和
API
整合. 用於將黑白名單和風險事件匯出, 整合到客戶系統; 同時可以進一步將系統內部數據匯出.
系統設定和管理功能. 復雜的系統需要配合相應的管理工具.
系統粗略的架構設計如下圖所示:
整個
TH-Nebula
系統, 功能比較完整和復雜, 無法用單個行程或軟體的形態來提供這樣一整套平台.在物理實作上, 將由多個獨立的元件組成, 純業務模組包括:
數據采集和轉化模組. 數據采集和規整化由單個物理模組提供.
數據即時計算模組和規則引擎. 提供了系統中即時處理的功能, 包括即時計算, 準即時計算, 策略引擎等.為了簡化, 目前統一在即時模組.
數據離線計算模組. 離線計算負責離線數據的統計計算, 數據呈現以及數據持久化等.
系統設定和管理模組. 配置和所有的數據管理都由單獨的web套用負責.
TH-Nebula
前端展現模組.
TH-Nebula
的前端采用
JS
+
API
的模式, 大量的數據展現功能由前端模組來提供支撐.
當然, 系統還用到了許多底層的平台支撐:
系統緩存
Redis
.
Redis
提供了緩存數據的支撐, 主要包括訊息中介軟體和監控數據的儲存.
檔案系統. 透過檔資料庫, 可以提供海量數據的儲存和查詢.
數據儲存
MySQL
.
MySQL
提供了所有具備強持久化需求的數據落地和讀取.
使用者畫像輔助
Key-Value
資料庫
AeroSpike
.
AeroSpike
是一個
Key-Value
資料庫, 為使用者畫像數據的高效能存取提供了支撐.
其他. 包括負載均衡
Nginx
, 離線管理指令碼, 行程監控平台, 客製內核模組等多個其他功能.
下圖描述了系統的物理模組組成, 以及邏輯模組在其中的劃分
五、功能
總覽:觀察網站流量和風險事件的情況
風險名單管理:由你設定的某個具體的策略出發而產生,風險名單管理頁面展示了風險名單的列別,透過這個頁面可以進行風險名單的查詢、刪除和人工添加等操作。
風險事件管理:風險事件由一組關聯風險名單的基礎事件組成,風險事件可以對不同的攻擊進行整理成組,以便分析人員快速的針對一組風險事件進行檢視。
風險分析:風險分析頁面提供了IP、USER、PAGE、DEVICE ID四個維度的分析視角、允許分析人員透過不同的維度去檢視某個IP、使用者、裝置或頁面的細節以還原風險事件的整個流程。
日誌查詢:透過自訂的方式去搜尋歷史日誌中的數據
策略管理:提供了視覺化策略編輯功能,允許使用者透過界面方式建立或編輯策略,並且可透過對策略狀態的編輯快速的測試策略的有效程度,以及生產策略的下限。
六、場景介紹
對於公司業務細分到不同的場景, 再到客製策略, 以及
TH-Nebula
指令碼可能會有些模糊, 對於一開始認識
TH-Nebula
系統可能會對此概念模糊不清, 所以接下來對於不同的場景分別制定策略, 來深入了解策略的客製, 以及
TH-Nebula
指令碼的客製.
IP撞庫登陸
假設同一個
IP
, 不斷的用不同的帳號或者密碼一直存取登陸頁面, 那麽設定次數之後就可以捕獲到這個
IP
, 之後對此
IP
進行彈驗證碼, 封
IP
等處理.
策略的制定
首先對公司的登陸介面在新建策略的時候, 以 [事件-動態資源請求] 選定內容 [
page
] , 也就是
URL
中包含了
login
欄位的, 即認定為登陸介面, 此處要根據公司的登陸介面做相應的改變, 每家公司業務的登陸介面不盡相同. 在 ①處填公司的登陸介面
接下來選擇點選圖片中②所全選的+號, 選擇 [
條件判斷
-
條件統計
-
動態資源請求
]
然後編輯參數, 選擇同一個
IP
的存取次數, 這樣才可以達到計算的效果
以上是即時計算5分鐘內統計同一
IP
存取登陸介面則對次
IP
進行判定為稽核或者是黑名單, 透過
TH-Nebula
查詢介面可以查詢到黑名單, 稽核名單, 可以對其做進一步處理.
IP大量請求卻不載入靜態資源
假設一個
IP
大量的請求卻不載入靜態資源, 那麽可以認定此
IP
是透過機器程式登陸的操作的, 只對介面存取, 這種
IP
存在一定的風險.
策略的制定
選擇新建策略, 選擇 [
事件
-
動態資源請求
] 選定內容
c_ip
, 包含 [ . ] , 這樣表達的意思是所有的
IP
都會被捕獲到, 接下來透過條件篩選出同一個
IP
大量請求卻不載入靜態資源的
IP
.
選擇 [
條件判斷
-
條件統計
-
IP請求量5M
] 然後編輯參數設定為 [
c_ip
] 大於50, 表示在5分鐘內某個相同的
IP
存取50次網站 接下來選擇 [
條件判斷
-
條件統計
-
靜態資源請求量
] 編輯參數設定 [
c_ip
] 等於 [0]
IP
在5分鐘內大量請求介面卻不載入靜態資源, 進行判定為稽核或者是黑名單, 透過
TH-Nebula
查詢介面可以查詢到黑名單, 稽核名單, 可以對其做進一步處理.
IP關聯多個使用者
假設一個
IP
以多個使用者登陸, 那麽可以認定此
IP
是透過機器程式操作多個用, 這種
IP
存在一定的風險.
策略的制定
選擇新建策略, 選擇 [
事件
-
動態資源請求
] 選定內容 [
c_ip
] , 包含 [ . ] , 這樣表達的意思是所有的
IP
都會被捕獲到, 接下來透過條件篩選出同一個
IP
關聯多個使用者
隨後增加條件篩選
需要註意編輯參數
之後增加處置措施
以上三個例子從3個不同的業務場景說明了制定場景的方法, 希望可以從這些例子幫助到理解根據業務制定策略.
原始碼下載地址:
https://gitee.com/threathunter/nebula.git
看到最後,如果這個計畫對你有用,一定要給我點個「 在看和贊 」。