觀察 Command and Control Server 通訊方式,跟小時候趴在地上,觀察地上爬的螞蟻一樣。
我小時候喜歡觀察螞蟻。偶然會在餐桌、客廳或房間,無意間發現一群螞蟻在地上的餅乾屑或糖果圍成一圈,在旁邊還會有一隻接著一隻的螞蟻,彷彿在接力般,將食物搬回巢穴裡。
我當時最喜歡做的事,就是順著螞蟻回巢路線找牠們的家。追蹤過程有時還會被不同的蟻群誤導,最後才發現牠們是從家門縫間鑽進來,原本的老巢在屋外。
在蟻群追蹤過程中要能找到蟻窩,首先要有好奇心並耐住性子觀察、中間細心分析可能的蟻群路線,再大膽假設路線,最後得證,順利找到蟻窩。
而這其中所需要的人格特質:
- 好奇心
- 耐住性子觀察
- 細心分析
- 大膽假設,小心求證
也同樣是成功找出C2 通訊協定所需。
不僅是粗淺地將惡意程式丟入沙箱,找出中繼站,做為 IOC(Indicator of Comprimise) 後,隨即將惡意程式封存結案。
你必須要保持好奇心,告訴自己:「我非常想知道,惡意程式跟 C2 伺服器在傳什麼資料?惡意程式連上 C2 伺服器時,C2 伺服器到底跟它說了什麼?」
再來,你必須能「耐住性子觀察」。你若是急性子的人,現在可以關掉網頁離開。因為「找出C2 通訊協定」這件事,你需要花數不清的時間,端看惡意程式複雜程度。
至於觀察,你需要在一次又一次除錯停止與啟動間,觀察惡意程式的動靜。例如寫入或讀取什麼檔案、註冊值,或在某個條件判斷失敗後,程式無預警結束。
而「細心分析」部份,在惡意程式分析過程中,需要找出每個滿足惡意程式繼續執行的條件,或者關鍵主程式,分析作業才能繼續往下進行。
一枝草一點露,把惡意程式每條組語走過一遍,了解對應的功能。
最後,科學精神的名言錦句「大膽假設,小心求證」。在惡意程式分析與觀察過程中,一邊分析,你的腦袋會一邊努力地想連結至先前分析經驗中。
試圖要將現在這個惡意程式與先前分析經驗做關聯。這時候,我會相信大腦的第一直覺,先大膽假設,嘗試做關聯與驗證,證明假設正確與否。若初步驗證不正確,即進行 3 步驟:
- 確認輸入資料是否有誤
- 驗證步驟是否有誤
- 解讀輸出資料方法是否有誤,再全部確認一次。
若 3 步驟執行完畢,確認假設錯誤,再搜尋網路資料,是否有其他可能性。重複操作直到發現正確的 C2 通訊協定為止。
複刻 C2 系列文章
- C2 複刻 01 – 為何投入複刻 C2 工作?
- C2 複刻 02 – Command and Control Server 定義
- C2 複刻 03 | Command and Control Server (C&C、C2) 通訊協定類型
- C2 複刻 04 | Command and Control Server (C&C、C2) 觀察
- C2 複刻 05 | 判斷Command and Control Server (C&C、C2)發起連線端
- C2 複刻 06 | Command and Control Server 握手 (Handshake) 與認證 (Authentication)
- C2 複刻 07 | 分析惡意程式呼叫的作業系統網路 API
- C2 複刻 08 | 找出所有 Command and Control Server 指令列表與功能函式
- C2 複刻 09 | Command and Control 資料傳輸格式
- C2 複刻 10 | 惡意程式加解密函式定位
- C2 複刻 11 | 判定惡意程式加解密演算法種類
- C2 複刻 12 | 推薦 20 個複刻 Command and Control Server 的 Python 3 擴充模組
- C2 複刻 13 | 分享 3 個複刻 Command and Control Server 程式測試環境的設定建議
- C2 複刻 14 | 3 個複刻 Command and Control Server 程式的開發原則建議