在過去的一年中,SpecterOps 團隊一直致力于解決一個問題: 項目管理。這不是一個特別吸引人的話題; 但是,它對于平穩的業務操作和確保高質量的可交付成果是必不可少的。在沒有必要的信息或資源管理的情況下開始一個項目計劃,就像在沒有設計計劃的情況下倉促進行一個家庭裝修項目。你可能已經建造好了你一直想要的門廊,但在這個過程中你可能遇到過材料缺乏的情況,或者你去五金店跑了很多次,或者你把一些木板削的太短。SpecterOps 團隊很高興能夠公開發布我們的研發成果:

超自然項目管理
Ghostwriter(槍手)是我們團隊開發的工具的一部分。它幫助我們在一個應用程序中管理客戶端、項目、報告和基礎設施。它并不取代一些比較常見或傳統的項目管理工具,如標準項目管理系統(CRM),但它確實合并了所有相關的項目信息,使用戶能夠輕松地管理項目的各個方面。
現在可以在 GitHub 上找到 Ghostwriter:
https://www.github.com/GhostManager/Ghostwriter
通過關注我們工作流程中的每一個部分,我們不斷的發現可以“潤滑車輪”的機會,并對我們的項目管理進行優化調整。我們希望找到一個易于學習、易于使用的解決方案,并且最重要的是——成為一個我們真正想要使用的完整平臺。
槍手的主要特點有:
客戶端管理
· Ghostwriter 跟蹤客戶端和相關的信息,為每個客戶端及其相關項目提供知識中心
項目管理
· 創建項目并將其附加到客戶端以組織項目任務,其中可以創建和查看項目任務的記錄
基礎設施跟蹤與管理
· 跟蹤和管理域名和服務器
· 自動監視這些資產產生的任何問題,例如開放給互聯網的端口和負面域名類別的變化
報告引擎
· 報告引擎能夠輸出包含客戶端、項目、基礎設施的使用情況、資產發現等信息的報告
· 當前的報告格式是 JSON 和 Office docx、 xlsx 和 pptx 文檔
自動化
· Ghostwriter 可以擴展為在后臺、按需或按時間表運行任意任務
· 任務包括: 通過 WebHook 發送 Slack 消息,DNS 和域名分類更新,在項目結束時釋放域名和服務器,在項目結束后歸檔報告,所有這些功能在 tasks.py中都是可定制的
說到自動化,可以使用單個 Docker 命令部署整個平臺,以供本地開發、調試和生產使用。

整個平臺用 docker-compose 就可以在一分鐘內部署完畢
請繼續閱讀,進一步了解這些特性以及它們的設計和創建背后的決策過程。
Ghostwriter 特性精選
Ghostwriter 是一個功能豐富的應用程序,因此很難在這里詳細描述每個功能。相反,我們將集中討論一些重點、優勢和 Ghostwriter 提供的一般工作流程。
用戶儀表板
首先,每個用戶都有自己的賬戶。這對于跟蹤用戶操作和分配的與項目相關的任務是必要的。當用戶登錄時,他們會看到他們項目的當前狀態的概述,比如他們附加到哪些項目,以及與他們的活動基礎設施(例如域名和服務器)相關的通知。
Ghostwriter 使用 django-allauth 進行身份驗證。默認的身份驗證方法是用戶名和密碼,但是你可以通過各種各樣的服務啟用 SSO,包括許多你的團隊可能已經在使用的服務(例如 GitHub,Bitbucket,Box,Slack,Trello)。Django 還可以配置為使用 LDAP、 ADFS 和其他身份驗證方法。
客戶端管理員
當新工作到來時,用戶應該將一個新客戶注冊到 客戶端管理員 應用程序—— Rolodex。
當用戶添加一個新的客戶端時,他們只需要輸入一個名稱和一個“短名稱”(這個縮寫可以在以后的報告中使用)。一旦創建了客戶端,Ghostwriter 將生成并分配一個唯一的代碼名。代碼名對于公開引用項目非常方便,如果你不喜歡 Ghostwriter 生成的代碼,可以重新編寫代碼。

客戶端儀表板頁面的頂部
用戶可以根據需要向新客戶端添加聯系點和說明。客戶端管理員一開始可能覺得自己只是 Ghostwriter 的一小部分; 然而,它會慢慢變成一個有價值的信息中心。
隨著時間的推移,客戶頁面上收集的筆記和項目歷史使得回顧團隊與客戶的歷史變得簡單,回顧舊項目,查看哪些顧問與客戶合作過以及以何種身份合作過。更好的一點是,這些信息和其他信息一樣存在于同一個地方,因此在數據源之間的跳躍就更少了。

客戶端儀表板頁面的一個片段,顯示一些歷史信息
項目管理員
在查看客戶端頁面時,新項目被創建并附加到客戶端。這些項目會自動與客戶端關聯,并按類型分類(例如,滲透測試、網絡評估)。項目還需要開始和結束日期(可以在任何時候進行編輯) ,并提供一個 Slack 通道名稱選項。
一個新項目的頁面一開始會顯得空洞無物。第一步(可選的,但是推薦這樣做)包括向這個新項目添加一個團隊。團隊成員是從 Ghostwriter 的用戶列表中挑選出來的,并被分配到項目角色(例如: 評估主管、項目經理)。當然,你可以根據需要添加或編輯角色。

儀表板的截圖,顯示了分配的操作符和當前的發現結果

出現在 Slack 中的測試通知

生成通知的計劃任務
對于客戶端和項目的設置就是這些基本的內容,現在是時候開始使用基礎設施了。
基礎設施管理員
對于那些密切關注 Shepherd 項目的人來說,基礎設施管理員可能看起來很眼熟。Ghostwriter 包含了一個帶有新功能和改進功能的完全重寫的 Shepherd 新版本。
簡言之, Shepherd 可以協助團隊管理域名和服務器之前,期間和之后的操作。這篇文章介紹了 Shepherd 已經深入到設計和工作流程,所以請參考這篇文章的早期 Ghostwriter 設計(大約2019年1月)和Shepherd 的細節。以下將是一個簡短的總結。
在域名方面,Shepherd跟蹤所有可用域名及其相關數據(例如注冊商、購買日期、到期日期、域名使用期限等) ,并利用從 Bluecoat、 McAfee 和 VirusTotal 等來源收集的分類信息豐富這些數據。分類檢查可以根據請求運行,也可以作為計劃后臺任務運行。可以根據團隊的需要單次更新或一次更新所有域名。更新域名 DNS 記錄也存在類似的過程。

搜索過濾器
如果一個域名出現在 VirusTotal 中(例如惡意軟件下載行為命中)或者被標記為一個壞類別(例如釣魚、可疑、詐騙) ,Ghostwriter 將該域名的“健康狀態”更新為“燒毀” ,對于團隊來說,這是一個明確的指示器,表明域名不應該再被用于隱蔽的基礎設施。你可以請求對各個域名或所有域名進行這些檢查,并配置自動檢查的計劃任務。

域名信息的展示,包括域名使用期限和類別
Shepherd 還充當你的域名的圖書管理員。團隊成員可以“下架”某個項目的域名,該項目從可用域名池中刪除該域名,將該域名附加到項目和客戶端,并向每個人顯示該域名正在使用。Shepherd有一個后臺任務,這個任務將檢查下架的域名,并在域名即將發布之前(默認發布前一天)向 Slack 發送一條消息,然后在域名發布當天發送一條消息。你可以將這些任務安排在對你的團隊最有效的任何時間表上執行。

域名儀表盤的一個片段,顯示域名的當前分類
服務器跟蹤類似于域名跟蹤。在 Ghostwriter 中追蹤的 IP 地址將是用于 Cobalt Strike 和 Covenant 團隊服務器的靜態 IP 地址。這些服務器不應該將端口和服務公開給整個互聯網。相反,用于命令和控制服務的端口應該被來自互聯網的管理范圍和重定向服務器的白名單規則隔離。通過定期掃描基礎設施并在發現開放端口時提醒你,Ghostwriter 可以幫助你確保這一點。

打開端口的掃描器任務通知示例
說到重定向,第二個區別是Shepherd跟蹤兩種類型的服務器: 具有靜態 IP 地址的服務器和所謂的“臨時服務器” ,即各種基于云的服務器,它們將在整個項目過程中進進出出。現在,你可以快速創建這些服務器并將其附加到項目中,以跟蹤它們的 IP 地址、用途、提供程序和說明。
如果你的團隊使用基于云的服務器處理所有事情,那么你仍然可以使用 Ghostwritre 的基礎設施管理器。工作流程的唯一變化是所有的服務器都將作為臨時服務器進行跟蹤,而不是在 Ghostwriter 的服務器庫中進行跟蹤。
在項目結束時,你可能會得到多個域名、多個靜態服務器和一些附加到項目的臨時服務器。這個歷史記錄是永久性的,所以你有一個長期的關于哪個域名和 IP 地址已經與客戶機相關聯以及在什么時候因為什么相關聯的記錄。

客戶端的項目歷史示例
所有這些數據都包含在報告中,以幫助你了解 C2基礎結構的解釋和說明。在對藍隊進行評審時,這是最有用的信息。這些信息能夠快速確認 IP 地址、域名以及它們的使用時間和使用方式,對于檢查在演練中檢測到和未檢測到的內容非常有幫助。當你需要確認紅隊的流量狀況是否與藍隊在演練中看到的情況相符時,這也有助于解決沖突請求。
報告撰寫人
基礎設施管理器很棒,但 Ghostwriter (中文名:槍手,顧名思義)在協助你進行報告工作方面真的很出色。報告引擎管理發現、觀察結果、項目報告、證據文件和報告生成(docx、xlsx、pptx 和 JSON)。

生成報告
到目前為止討論的所有內容最終都使得報告引擎可以訪問大量數據。當 Ghostwriter 創建一個報告時,它可以調用任何東西,從客戶的名字到項目的執行窗口,使用的基礎設施,以及調查結果。
報表生成從向項目添加報表開始。這允許根據需要為項目創建多個單獨的報表。然后用戶可以瀏覽調查結果數據庫,并將調查結果和觀察結果添加到他們當前的報告中。
一旦發現附加到報告中,對該發現進行的任何編輯都只影響該報告。用戶可以隨心所欲地添加證據和定制他們認為合適的調查結果,而不用擔心會影響其他報告。當談到編輯,Ghostwriter 支持各種關鍵字,并可用于模板。

為調查結果和報告生成提供的Ghostwriter 關鍵字選項

Ghostwriter 的證據上傳表格

Ghostwriter 的查找編輯表單

用于生成報表的模板樣式
對于那些希望能夠做一些真正不同的事情的人,有一個直接的 JSON 輸出。我們已經將 Ghostwriter 的 JSON 輸出顯示為報告類型,因此用戶可以使用它并將其與其他報告引擎一起使用,或者編寫自己的腳本以方便地創建自定義報告。JSON 報告包括關于客戶機、項目和評估結果的所有信息。

Ghostwriter 的 JSON 輸出示例
一旦項目結束,Ghostwriter 可以清理項目及其相關報告。如果你配置了計劃任務,Ghostwriter 將等待一段時間(默認是90天) ,然后歸檔項目。這會將生成的所有報告類型、收集所有證據文件以及將所有內容壓縮到 zip 文件中。這個歸檔文件被移動到一個單獨的歸檔目錄中,并在它自己的數據庫模型中與客戶機和項目相關聯。這個過程還會刪除證據文件和報表目錄,這樣舊文件就不會慢慢堆積在服務器上。
然后你可以根據組織的數據保留策略下載和處理歸檔文件。
總結
我們很高興能夠最終公開討論這個項目,我們希望其他團隊能夠發現它是有用的。項目管理和報告撰寫不一定是一項艱巨的任務!Ghostwriter 不能讓你享受寫報告的樂趣,但它可以繞過尖銳的邊緣,消除一些摩擦,使報告撰寫有更愉快的體驗。
定義1.0發行版所需的特性還有很長的路要走; 然而,這還不是結束!在可預見的未來, Ghostwriter 將處于積極的開發階段。我們計劃的一些特性包括:
· 告警和檢測策略文件的管理和生成
· 使用時間戳、輸出和攻擊任務的證據跟蹤完整的活動日志跟蹤
· Ghostwriter增加了其他報告格式,比如 PDF,并且在 Ghostwriter 中進行更直接的編輯以支持這些格式
· 增強報告編輯能力,在 Ghostwriter 中構建更多的報告片段
注:本文參考自posts.specterops.io