Get started
SKILLQ — 滲透測試專案助手`

SKILLQ — 滲透測試專案助手`

把原始掃描輸出(nmap/Burp/Nessus)轉換成去重、依 CVSS 排序的發現清單,並產出客戶交付水準的滲透測試報告草稿。
#Analysis#Product
Rating
More ratings needed
Sold
0
How to use
Download

SKILLQ — 滲透測試專案助手(中文版)

把滲透測試中最耗時的行政工作——方法論追蹤、原始掃描資料整理、報告
撰寫——變成可重複使用的結構化流程。SKILLQ 專為已獲授權的安全評估
專案設計:它不包含任何掃描、漏洞利用或攻擊自動化功能,只處理測試人員
自身已合法授權測試所蒐集到的資料。

為什麼需要這個工具

不管測試目標是什麼,每個滲透測試專案都會遇到同樣三個麻煩:讓不同測試
人員之間的方法論檢查清單保持一致、把三種不同掃描工具的輸出格式整理
成同一份發現清單、以及寫出一份客戶真的會看的報告。SKILLQ 把這三件事
標準化,讓顧問或內部資安團隊把時間花在分析上,而不是格式整理上。

套件內容

路徑 功能說明
SKILL.md 技能定義檔——agent runtime 的進入點,說明何時、如何使用各模組
scripts/parse_nmap.py 解析 nmap -oX XML 輸出為正規化 CSV(主機、連接埠、服務、banner)
scripts/parse_burp.py 解析 Burp Suite XML 發現匯出檔為正規化 CSV(主機、路徑、名稱、嚴重度)
scripts/parse_nessus.py 解析 Nessus/OpenVAS .nessus 檔為正規化 CSV,含 CVSS v3 向量/分數
scripts/aggregate_findings.py 合併上述三份 CSV、依主機+標題去重,並依風險排序
scripts/cvss_helper.py 依 FIRST.org 公開公式,由向量字串計算 CVSS v3.1 基礎分數
references/methodology_web_api.md Web/API 評估檢查清單,對應 OWASP WSTG v4.2 與 OWASP API Security Top 10
references/methodology_internal_network.md 內部網路/Active Directory 檢查清單,對應 NIST SP 800-115
references/methodology_cloud.md 雲端基礎設施(AWS/Azure/GCP)檢查清單,對應 CIS Benchmarks
references/report_template.md 完整報告骨架——executive summary、範圍、逐項發現、風險矩陣、附錄
references/agent_card.md 上架文案草稿與定價建議(供上架者參考,非 runtime 技能的一部分)
LEGAL_AND_LICENSE.md 免責聲明、授權條款與商標聲明——上架前請先填入你自己的資訊

註:scripts/ 內的程式碼與英文版完全相同(程式邏輯與 CSV 欄位名稱
維持英文以利跨團隊/跨工具相容),僅文件與範本以繁體中文撰寫。

需求環境

Python 3.8 以上,無需額外套件——全部使用標準函式庫
(xml.etree.ElementTree、csv、argparse)。不用 pip install 任何
東西,不會對外連線回傳資料,執行時也不需要網路。

如何選擇模組

單一專案可以同時使用一個、兩個、或全部三套檢查清單:

  • Web/API(methodology_web_api.md)——目標是網頁應用程式或 API
    的評估,黑箱、灰箱、白箱皆適用。
  • 內部網路/AD(methodology_internal_network.md)——針對內部
    基礎設施的評估,無論是「假設已入侵」或「外部立足點」情境。
  • 雲端基礎設施(methodology_cloud.md)——AWS/Azure/GCP 帳號的
    組態與存取控制檢視。這是組態盤點清單,不是對服務商基礎設施的實際
    攻擊。

把對應的檔案複製成 checklist_<專案名稱>.md,隨專案進度勾選完成
項目——每個專案保留獨立的檢查清單檔案,方便日後稽核追溯。

快速開始

# 1. 把各掃描工具的原始輸出解析為正規化 CSV
python3 scripts/parse_nmap.py scan.xml -o nmap_findings.csv
python3 scripts/parse_burp.py burp_export.xml -o burp_findings.csv
python3 scripts/parse_nessus.py scan.nessus -o nessus_findings.csv

# 2. 合併成一份去重、依風險排序的發現清單
python3 scripts/aggregate_findings.py nmap_findings.csv burp_findings.csv nessus_findings.csv -o master_findings.csv

# 3. 由向量字串計算(或覆核)CVSS v3.1 基礎分數
python3 scripts/cvss_helper.py "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"

實際範例

假設一筆 Nessus 發現是 severity="2"、
cvss3_vector=CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N,執行
parse_nessus.py 後會產出這樣的一列:

host,port,protocol,plugin_id,plugin_name,severity,cvss3_vector,cvss3_score,description,solution
10.0.0.5,443,tcp,12345,TLS Weak Cipher,Medium,CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N,5.3,Weak TLS cipher suites enabled.,Disable weak ciphers.

再搭配一份 nmap 與一份 Burp 的 CSV 一起跑 aggregate_findings.py,
master_findings.csv 會產出每筆發現各一列、依 CVSS 分數(缺分數則依
Critical/High/Medium/Low/Info 順序)由高到低排序——可以直接套進
references/report_template.md 的發現章節。

CLI 參數說明

每支腳本都支援 -h/--help 印出完整參數列表。摘要如下:

腳本 必填參數 選項 輸出欄位
parse_nmap.py input(nmap -oX 檔案) -o/--output(預設 nmap_findings.csv) host, hostname, port, protocol, state, service, product, version, banner
parse_burp.py input(Burp XML 匯出檔) -o/--output(預設 burp_findings.csv) host, path, name, severity, confidence, issue_background, remediation_background
parse_nessus.py input(.nessus 檔案) -o/--output(預設 nessus_findings.csv) host, port, protocol, plugin_id, plugin_name, severity, cvss3_vector, cvss3_score, description, solution
aggregate_findings.py 一或多份上述解析腳本產出的 CSV -o/--output(預設 master_findings.csv) host, port, source, title, severity, cvss_score, description
cvss_helper.py vector(CVSS v3.1 字串,須以 CVSS:3 開頭) — 印出 Base Score: X.X (Rating)

aggregate_findings.py 會自動依 CSV 標頭列辨識來源是哪支解析腳本產出,
輸入順序不拘,也可以只挑你實際擁有的來源(例如只有 nmap + Nessus,
沒有 Burp 資料也沒關係)。

彙整與評分邏輯說明

  • 去重依 (host, port, title) 三欄做比對(不分大小寫)。兩筆撞到
    同一個 key 時,保留描述文字較長的那一筆(假設它資訊較完整)。
  • 排序優先採用數值型 CVSS 分數;若無分數,則退回
    Critical > High > Medium > Low > Info > 未評分 的順序。沒有分數也
    沒有嚴重度的資料列不會被捨棄,會標記為「未評分—待分析師輸入」,
    確保沒有任何一筆發現被默默漏掉。
  • CVSS 計算完全依照 FIRST.org 公開發布的 CVSS v3.1 基礎分數公式
    實作(https://www.first.org/cvss/v3-1/specification-document)。
    僅接受 CVSS:3.x 格式的向量字串,若向量缺少必要欄位會明確報錯並
    指出缺了哪個欄位——不會憑空猜測。

報告撰寫流程

  1. 確認 master_findings.csv(或等效清單)已定稿。
  2. 複製 references/report_template.md,填入每個 {{佔位符}}。
  3. 報告中每一筆發現都必須可追溯到彙整清單中的一列,或測試人員實際
    蒐集到的佐證——沒有真正執行過的重現步驟不該寫進報告。
  4. 交付前先核對:executive summary 引用的嚴重度統計數字,是否與發現
    章節的實際數字一致。
  5. 需要 .docx 或 .pdf 交付格式?先完成 Markdown 草稿,再交給你
    agent runtime 上的文件產出技能/工具處理。

疑難排解

症狀 可能原因 排解方式
[!] Could not parse XML 輸入檔不是有效 XML,或是不同於預期的匯出格式 確認匯出格式正確(例如 nmap 用 -oX 而非 -oN;Burp 用「Export findings as XML」而非 HTML)
[!] No <host>/<issue>/<ReportItem> entries found 檔案能解析但內容為空,或是用錯工具的格式 打開檔案確認根元素是否符合 nmap/Burp/Nessus 的 schema
aggregate_findings.py 顯示來源 unrecognized CSV 標頭列跟三支解析腳本的輸出不完全一致 用套件內附的解析腳本重新產生 CSV,不要手動改標頭
cvss_helper.py 說缺少某個 metric 向量字串不完整,或用了 CVSS v2 語法 CVSS v3.1 向量需要 8 個基礎 metric 全部齊全(AV/AC/PR/UI/S/C/I/A),且須以 CVSS:3 開頭

版本規劃

目前為 SKILLQ v1.0。已規劃的後續更新項目:原生 OpenVAS XML 支援
(與 Nessus 的 .nessus 格式不同)、CSV 之外的 JSON 匯出選項、以及
第四個模組(行動應用程式評估)。訂閱制買家在這些功能上線時會自動
取得更新。

重要提醒

本技能假設所有輸入資料皆來自買家已獲授權執行的測試。它不包含任何
掃描、漏洞利用、或攻擊自動化功能——僅提供資料解析、彙整與文件產出
工具。完整免責聲明、授權條款與商標聲明請見 LEGAL_AND_LICENSE.md,
上架前請先填入你自己的資訊。