Senior Developer 紅隊工具開發工程師
Description
你將與台灣最頂尖的資安專家並肩作戰,負責開發及維護紅隊演練工具。你參與的專案幾乎是外面不會有的需求,適合熱愛技術挑戰的你。你可以直接面對使用者討論,通常使用者也能直接給予技術回饋甚至方案建議。團隊成員對自己的作品充滿認同與自豪,若你也熱衷技術、追求卓越、重視團隊,歡迎加入我們!
工作內容
以下內容是對這個職位日常工作的概略描述。實際負責的項目會依當下的演練需求、團隊分工與個人專長有所不同。
1. 開發與維護資安檢測工具 80%
這個角色將會把紅隊與滲透測試過程中遇到的技術需求,轉化成可以實際使用的工具。
這些需求可能來自既有工具無法滿足的操作流程、特殊的目標環境限制,或需要進一步研究才能解決的技術問題。
工作內容涵蓋從網路通訊、後端服務到作業系統底層與攻防技術,目標環境以 Windows 為主、Linux 次之,偶爾也會遇到其他 UNIX-like 環境。
實際工作的技術重心會因人而異;有些工程師較偏向後端、網路通訊與軟體架構,有些則較專注於作業系統底層與攻防技術。
可能會參與以下工作:
- 獨立設計 TCP tunneling over HTTP 工具,熟悉各層的通訊流程、錯誤處理,以及效能與可靠性等實務考量。
- 開發與維護遠端存取工具,實作指令執行、檔案操作、螢幕截圖、網路轉送等紅隊作業所需功能,並持續改善工具的穩定性、可維護性與操作體驗。
- 根據實際環境限制設計通訊方式,研究 HTTP、DNS、NTP 等網路協定,並使用 Wireshark 等工具分析封包與實際流量行為。
- 閱讀公開的紅隊、後滲透與攻防工具,例如 Sliver C2、impacket,理解其設計與實作方式,並依照實際需求進行修改、整合或重新實作。
- 研究 Windows API、PE 格式、程式載入流程、process 與記憶體等作業系統機制,並將這些知識運用在工具開發中。
- 研究程式混淆、加殼、載入器以及端點防護產品的偵測機制,針對演練情境設計與驗證相應的技術方案。
- 維護既有工具。當作業系統、第三方元件或防護產品更新造成行為改變時,我會定位問題、理解原因並提出修正方式。
- 為需要長期使用的工具設計適當的模組與介面,讓它能隨著新的演練需求持續擴充,而不是只解決單次任務。
我們不要求每位工程師一開始就熟悉上述所有領域。
這個職位可以有不同的技術發展方向:你可能已經擅長網路、後端與軟體架構,也可能更熟悉作業系統底層與攻防技術。我們更重視你是否在自己的專長上有足夠深度,並有能力持續學習、研究及拓展到新的領域。
2. 需求分析與技術研究 20%
工具需求可能不會以完整的規格文件出現。
使用者可能只會回覆:「這個流程太慢」、「這個環境連不出去」、「這個工具在目標環境不能用」,或直接帶著一個演練現場遇到的問題來找你。
這個角色不只是照著需求實作功能,而是理解問題本身,找出適合的技術解法。
- 直接與紅隊成員討論需求,理解實際的操作流程、限制條件與想解決的問題。
- 在需求還不完整時主動進一步研究、實驗或製作 prototype,確認問題的成因以及不同方案的可行性。
- 閱讀技術文件、原始碼、研究文章或其他公開資料;必要時透過 debugger、disassembler、封包分析或動態測試理解系統與軟體的實際行為。
- 評估技術方案的成本、風險與開發時程,與使用者一起決定適合的解法。
- 對於自己負責的項目,能從問題研究、方案設計、實作到實際交付持續跟進,並根據使用者回饋進一步改善。
履歷格式
履歷內容請務必控制在兩頁以內(超過兩頁將直接視為資格不符),並且建議包含以下內容:
- 基本資料
- 學歷
- 工作經歷
- MBTI 職業性格測試結果(測試網頁)
- 若您願意提供 MBTI 測驗結果,可讓我們更瞭解您偏好的溝通模式,若您不願意提供,也不影響本次審核結果。
Requirements
我們不要求全數滿足。越前面的核心能力佔比越高;網路程式設計與作業系統底層能力則可依個人專長有所側重。
- 具備扎實的開發能力
- 熟悉所用的主要開發程式語言標準函式庫,也經常使用社群常見的第三方套件來加速解決問題,並會對引入的第三方程式碼與依賴進行必要的 review。
- 理解特定程式語言的慣例與最佳實務,能寫出可讀性高、維護性佳的程式碼。
- (加分)團隊目前主力使用 Go,熟悉 Go 的常見模式與慣例是加分項目。
- 獨立研究與問題解決能力:
- 遇到陌生問題時,會系統化分解問題,探索可行的方向並找出具體可行的解法。
- 能從官方文件、原始碼、issue tracker、技術文章與社群討論中蒐集資訊,並透過實驗驗證其可靠性與適用範圍。
- 閱讀與追蹤程式碼是日常的一部分,能理解陌生程式的邏輯並定位問題。
- (加分)具備基本的 disassembly 與動態行為分析經驗,能用於理解 closed-source 軟體的行為。
- 程式架構設計能力:
- 能根據需求拆分模組與責任邊界,在可維護性、擴充性與實作複雜度之間做合理取捨。
- 面對既有 codebase,能理解目前的設計限制,並在適當時機提出與執行 refactor,控制技術債與修改成本。
- 使用者需求分析能力:
- 能從使用者描述的問題、操作流程與環境限制中,釐清真正需要解決的問題,而不只是照著表面需求實作功能。
- 面對模糊或不完整的需求,會主動確認假設、提出可行方案,並與使用者一起收斂方向。
- 網路協定與網路程式設計能力:
- 能使用 Wireshark 分析封包與通訊協定,快速了解協定細節與原理。
- 熟悉 HTTP、WebSocket 等常見網路協定,能處理連線管理、timeout、proxy、TLS、header 與協定相容性等實務問題。
- 能獨立設計 tunneling、proxy 或其他網路通訊工具,並處理協定設計、連線生命週期、錯誤處理、效能與可靠性等問題。
- 作業系統與底層程式設計能力:
- 理解 OS syscall 的運作機制,能在不依賴 Win32 API/libc 等常見 user-space API 的情況下,直接呼叫 syscall 進行簡單的底層開發。
- 研究過不同作業系統的 process、virtual memory 與 executable loading 等機制,能根據需求分析系統行為並進行底層功能實作。
- AI 輔助開發能力與使用邊界:
- 能判斷哪些資訊適合交由 AI 工具處理,並遵守公司與客戶的資料處理規範,不將客戶機密、演練資料、內部系統資訊或其他敏感內容提供給未授權的服務。
- 能有效使用 AI coding agent 輔助開發,包含拆解問題、提供必要的上下文與限制條件、委派適合的工作,以及透過迭代改善產出。
- 不會將 AI 產出視為正確答案。會理解並驗證產出的程式碼與技術內容,以與自己撰寫的內容相同的標準進行 review,並對最終交付結果負責。
