C2 複刻 14 | 3 個複刻 Command and Control Server 程式的開發原則建議

by iok
1.4k 人次瀏覽
C2 複刻 14 | 3 個複刻 Command and Control Server 程式的開發原則建議

當你面對惡意程式諸多繁複功能,好不容易從組合語言萃取出 C2 伺服器程式連線協定。接下來,開始寫程式了。我根據過往經驗,歸納彙整出 3 個複刻 C2 的開發原則建議,分別是「選擇 Scripting 類型的程式語言」、「最小可運行原則」、「由簡入繁」,提供給讀者參考。

選擇 Scripting 類型的程式語言

Scripting 類型的程式語言特色與優勢如下 3 點:

  1. 程式執行不需編譯,透過直譯器解析程式碼後,輸出執行結果。
  2. 程式碼短。
  3. 擴充模組多。

像 PHP、Perl 、Python或 Ruby 都是 Scripting 語言。在複刻 C2 伺服器程式上,能方便我們引用既有的程式模組,擴充程式功能。縮短程式碼行數,而且因為不用編譯,撰寫速度較快,容易快速修改。

你可以選擇你最熟悉的語言來撰寫程式碼,若你心無定見,我誠心建議使用 Python 3。支援模組多,不用重新發明輪子。

雖然程式執行效率劣於編譯類型的程式語言,但程式碼撰寫量與大量支援模組的優點,而且程式執行效率不是複刻 C2 優先要考量的項目。複刻 C2 建議選擇 Scripting 類型的程式語言。

最小可運行原則

駭客原版的 C2 伺服器程式,一定是功能完善的程式。但是,在一開始複刻 C2 伺服器程式時,野心不要太大。把握「最小可運行原則」。因為複刻 版本的 C2 程式,只有讀者一個人使用,不用考慮多人連線的問題。能用 I/O multiplexing 撰寫的程式碼邏輯,就不要寫多執行緒。

C2 程式需要運用到多 CPU 的資源時候,也建議先使用 Thread,再用 fork()。如此一來,不用考慮行程間溝通(IPC) 的問題。直接用 Queue 模組就能進行多執行緒之間的資料交換作業。

不用考慮效能,也不用考慮全部的功能。先只要會動就好。

由簡入繁

惡意程式可能有數十個可供駭客遠端操控功能,這些功能相當複雜,會花大量的時間撰寫程式碼與測試,比方說桌面錄影、開麥克風錄音、遠端桌面、桌面截圖與鍵盤側錄等功能。

我的建議是不要一開始就先實做這些複雜功能。給自己 quick win,先從簡單的C2 功能開始複刻,比方說回傳系統資訊,檔案上傳,檔案下載等。

總結

3 個複刻 C2 的開發建議,分別是「選擇 Scripting 類型的程式語言」、「最小可運行原則」、「由簡入繁」。實做 C2 伺服器的目的,不是要重構 C2 程式,複刻版本的 C2 程式的執行效率不是首要考量的選項。Scripting 類型的程式語言程式碼短、擴充模組多,雖然執行效率較差,但其優點足以彌補其缺點。

而「最小可運行原則」與「由簡入繁」的開發原則是要告訴讀者,從最簡單的 C2 功能開始,完成後再實做較複雜的功能。

希望這篇開發原則建議可以幫助到你,有任何問題,歡迎在下方留言告訴我。

複刻 C2 系列文章

相關文章

留言