第十一節 安全分析工具
AVL Code 內置一組只讀分析工具,適合在隔離樣本目錄上做基礎研判。所有分析工具都按工具權限政策管控。
重要安全限制:在工作區下名為
samples/的子目錄中,任何形式的執行類工具都被強制停用且不可解除。這是為了防止誤把樣本當成可執行指令碼跑起來。
11.0 把樣本送進工作區
輸入框左下角的「+」按鈕提供最快捷的樣本投放入口:
- 點擊 + → 系統彈出多文件選擇對話框。
- 選中一個或多個文件 → 自動落到當前工作區的
samples/子目錄。 - 輸入區上方實時顯示檔名 + 進度列 + 塊計數;完成 1.5 秒後自動收起,失敗保留 6 秒。
- 完成後浮現 toast:「已新增 N 個樣本到 samples/」。
注意事項:
- 可配置上限:預設 300 MiB,可在 設置 → 資料 → 附件 / 樣本 中調整(1–4096 MiB),有「恢復預設」一鍵復位。
- 大文件分塊上傳:超過 4 MiB 的文件自動按 4 MiB 切片走追加寫入,首塊寫入即占名解決同名衝突,規避單次 RPC 30 秒超時。
- 後端透明支持本機與遠端工作區,無需關心目標盤符。
- 同名文件會按時間戳記追加後綴,不會靜默覆蓋。
- 使用者在系統對話框中點取消會被靜默忽略,不報錯。
- 沒有活動工作區時按鈕置灰,會以 toast 提示「沒有活動工作區」。
隨後即可在對話裡直接讓助手對剛新增的樣本發起分析,例如「對剛才那個 PE 跑 hash + entropy + ioc_extract,給我一份初判」。
11.1 雜湊、熵、十六進制
- 雜湊:MD5 / SHA-1 / SHA-256 / 國密 SM3 等多算法。
- 熵:Shannon 熵(總體 + 分塊),用於初判加殼 / 加密。
- 十六進制視圖:以 hexdump 形式輸出指定位元組範圍。
大文件完整覆蓋:雜湊 / 熵這類「單遍串流」算子完整覆蓋整個文件(分塊逐塊計算、不限長度、記憶體佔用恆定),傳回的大小是真實大小。早期版本會把 >128 MiB 的樣本靜默截斷到前 128 MiB 計算,導致雜湊錯誤、VirusTotal 也查不到 — 本版根治。只讀取部分內容的算子(
sec.strings/sec.ioc_extract/sec.yara_scan等)仍按原有上限工作。
11.2 字串與 IOC 抽取
- 字串:ASCII + UTF-16LE,可設最小長度。
- IOC 抽取:自動識別 IPv4 / IPv6 / 域名 / URL / 信箱、雜湊(MD5 / SHA-1 / SHA-256 / SHA-512)、路徑(Windows / Unix),以及本版新增的 CVE 編號、Windows 註冊表路徑、MAC 地址、以太坊 / 門羅幣 / 比特幣等加密貨幣地址。
- 先還原 defang 再提取:識別並還原
hxxp://、1[.]2[.]3[.]4、user[at]example[.]com、foo(dot)bar等「去毒化」寫法,分析師筆記 / 報告裡的 IOC 不再漏抓。 - 更精準、少誤報:IP 走有效性校驗並打標(private / loopback / link_local / multicast / cgnat 等),可選排除私網地址;域名按公共後綴校驗(
kernel32.dll這類檔名不再誤當域名);MAC 不再被誤判成 IPv6。 - 結果更實用:按值去重並統計出現頻次、附類型標籤(含
defanged);結果分頁傳回(與sec.strings一致);可選輸出 defang 形式(便於安全展示)與命中上下文片段。 - 提取只是「候選指標」,不等於判黑 —— 用前請二次核實。
- 先還原 defang 再提取:識別並還原
11.3 可執行格式解析
- PE 解析:節、匯入表、匯出表、資源、簽章等。
- ELF 解析:節、段、符號、動態相依等。
- Mach-O 解析:Load Command、節、簽章等。
- Mandiant-style PE 匯入雜湊:用於聚類識別。
11.4 反匯編
線性反匯編,支持 x86 / x86_64 / arm / arm64 / ppc64;架構通常可由文件頭自動嗅探。
11.5 反編譯
通過自有的反編譯能力把反匯編片段轉成 C / Java 偽程式碼,結合 AI 解讀後可直接給出更直觀的邏輯摘要。
隱私提示:反編譯會呼叫 AVL Code 的反編譯模型;只在樣本可外送的前提下使用。
11.6 流量元資料
- PCAP 元訊息:總包數、起止時間、協議占比、Top-N 流。
- 流枚舉(
sec.pcap_stream_list):列出 PCAP 中所有 TCP / UDP / ICMP 流並賦穩定 id。預設每頁 200 條、最多 2000 條,可按packets/bytes/first_ts(預設時間序)排序、按offset翻頁 — id 始終是全域時間序編號,跨頁跨排序都不變,可直接傳給sec.pcap_stream_extract。修了之前列十幾萬條流時一次性吐出幾十 MB 把整輪卡住 / 假死的問題。 - 流載荷匯出:把指定流的 L7 載荷 dump 到工作區路徑,便於二次分析。
- 協議欄位抽取:DNS 查詢 / 應答、HTTP 請求 / 回應、TLS ClientHello SNI,以及協議級 IOC(IP 等)。
當前版本僅做單包檢視,不做 TCP 重組。
11.7 規則匹配
- 支持業界主流 YARA 規則語法(含完整模組系統)。
- 預設安裝為 stub 實現;如需完整規則集與模組支持,請聯絡內部分發渠道獲取增強版本。
11.8 安全領域知識庫 sec.ontology — 事實層 SSOT
給 AI 配的一個結構化事實函式庫,把「誰相依誰、什麼暴露在外、誰有哪個 CVE」這類供應鏈 / 攻擊面事實記錄下來、長期持有;即使原始報告之後被對話折疊遺忘,這些結構化事實依然留存可查,並能做可達性推理(A 相依 B、B 相依 C → A 可達 C)。當前為 v1 本機工作區版本。
| 工具 | 用途 |
|---|---|
sec.ontology.record |
記錄一批 SPO 三元組(Subject / Predicate / Object,可帶 source 溯源標籤)。單值謂詞(version / license / severity / auth)取代寫入;多值謂詞(depends_on / has_cve / exposes / listens / affects)累加寫入 |
sec.ontology.query |
按 S / P / O 模式查詢(空欄位 = 通配)。例:{p:'has_cve'} 列所有 CVE 事實;{s:'pkg:lodash'} 列關於 lodash 的所有訊息 |
sec.ontology.reachable |
沿某謂詞從 start 實體做可達性推理。可傳遞謂詞(如 depends_on)會多跳遍歷 — 適用於傳遞相依 / 攻擊面爆炸半徑分析(如帶 CVE 的傳遞相依能影響到哪些包) |
實體命名建議:pkg:lodash / svc:api / cve:CVE-2021-23337 等帶類型前綴,便於跨類查詢不衝突。
11.9 軟體物料清單(SBOM)與供應鏈漏洞排查
sec.ontology 解決「把已知事實記下來」,而 sbom.* 這組工具解決「先把事實查出來」:它會掃描工作區裡的相依清單,理清「這個專案到底用了哪些第三方元件」,再對照漏洞庫排查這些元件有沒有已知漏洞、其中哪些真正會被你的程式碼觸達。一共五個工具,都在對話裡直接讓助手呼叫即可,結果文件預設落到工作區的 .avlcode/ 目錄。
sbom.generate — 生成物料清單
為專案生成 SBOM。自動識別主流生態與相依清單:npm(package-lock.json / yarn.lock(含 yarn Berry)/ pnpm-lock.yaml(含 v5))、Go(go.mod)、Python(uv.lock / pdm.lock / poetry.lock / Pipfile.lock / requirements.txt)、Maven(pom.xml / gradle.lockfile / Bazel 的 maven_install.json)、Rust、Ruby、PHP、.NET(NuGet)、Swift、Dart、C/C++(conan)、conda、Elixir、CocoaPods、R、Haskell,以及本版新增的 Deno、Julia。預設輸出 CycloneDX 1.5 JSON;可用 format 切換 spdx / dsdx / swid,加 -xml 後綴出 XML(如 cyclonedx-xml)、dsdx-tag 出 DSDX 原生 tag-value。輸出可復現(不寫時間戳記 / 隨機序列號、元件按固定順序排)。缺某種清單就跳過該生態,全缺則得到 0 元件的空清單、不報錯。
覆蓋與精度增強(本版):清單掃描遞歸子目錄,缺鎖文件時復原到清單文件解析;剔除把本專案自身誤當第三方相依的情況,正確處理 Go 的
replace/exclude,並加強版本比對保真(減少誤報 / 漏報)。稽核支持按生態逐一復原、補齊 Maven / Gradle / pip / Conda / Conan / npm 等精度提示、對未能稽核的生態給出明確說明並附可利用性描述,便於判斷風險優先級。
sbom.convert — 多格式樞紐,任意互轉
支持 CycloneDX(JSON+XML)、SPDX(2.3)、DSDX、SWID 四大主流格式的讀寫,並能在它們之間任意轉換(經一個規範化中間模型,N 讀 + N 寫而非兩兩組合)。input(待轉文件)與 to(目標格式)必填,from 可自動嗅探。轉換保留元件、purl、許可、雜湊與相依關係;目標格式不支持的欄位會按規則丟棄(如 DSDX 無雜湊)。對接不同上下游工具時不愁格式不一致。
sbom.audit — 排查已知漏洞
先生成清單,再逐個元件對照 OSV 漏洞庫匹配,給出每條漏洞的嚴重度、CVE 編號、修正版本,並標註是否在 CISA KEV(已知被利用漏洞) 名單裡。嚴重度按 CVSS v2 / v3 / v4 向量準確計算(critical ≥9 / high ≥7 / medium ≥4 / low)。mode 控制資料來源:auto(預設,本機有離線庫就用離線、否則線上)/ online(api.osv.dev)/ offline(本機快照)。結果按最嚴重優先排序,KEV 漏洞永遠置頂。
sbom.vex — 可利用性收斂,砍掉噪聲
在 audit 基礎上,用確定性的符號級可達性分析判斷每個漏洞在你的程式碼裡到底走不走得到,把「裝了但根本沒呼叫」的噪聲收斂掉,輸出標準 OpenVEX 文件。每條結論是 affected(確實受影響、要修)/ not_affected(用了但漏洞程式碼夠不到)/ under_investigation(待查)/ fixed 之一,並附 not_affected 的機讀理由。純離線匯入掃描即可用(air-gap 友好);Go 憑 OSV 提供的受影響符號可直接收斂為 not_affected,其它生態可選 lsp_confirm(用語言伺服器確認至少一處真實引用,預設關)或由 App 端的符號比對進一步收斂。結論按「還需處置的排前面」排序。
sbom.dbsync — 維護本機離線漏洞庫(air-gap)
為 audit / vex 的離線模式同步本機 OSV 漏洞庫。action:status(預設,純本機、檢視各生態記錄數與新鮮度)/ sync(連網按生態拉取 OSV dump)/ import(用 zip_path + osv_eco 匯入離線傳入的 OSV zip,供完全隔離的環境使用)/ kev(重新整理 CISA KEV 名錄)。其中 13 種生態有 OSV 離線 dump 覆蓋(conan / conda / CocoaPods 暫無離線庫,可線上稽核)。
隔離網(air-gap)用法:把資料源指向內部鏡像(必要時配代理),再用
sync或import填好本機庫,此後audit/vex即可全程離線執行。相關源地址、代理、預設模式可在 設置 → 安全 → 供應鏈 / SBOM 配置;留空即用內置預設(直連公網)。該面板還展示每個生態的離線庫記錄數 / 新鮮度、KEV 條目數,並提供按生態多選同步與「同步 KEV」按鈕。儲存按鈕為「測試並儲存」:先校驗地址 / 路徑合法性、再按「預設稽核資料源」探測可用性,不可用則拒絕儲存;本機漏洞庫路徑等離線欄位歸入「離線漏洞庫」區,儲存時會把路徑規範為絕對路徑。另有「重設為預設」按鈕一鍵把各欄位清回內置預設(僅改表單,需再點「測試並儲存」才生效,避免一鍵誤清掉自定義鏡像配置)。
11.10 雲端威脅情報與哨兵掃描(VirusTotal / Google Threat Intelligence)
AVL Code 接入 VirusTotal / Google Threat Intelligence(GTI) 做雲端威脅情報。整體分兩條正交的軸,在 設置 → 安全 裡配置:
- 威脅檢測(能力):配好一種檢測方式後,Agent 就能呼叫掃描 / 情報工具做分析。
- 雲端檢測服務(三選一):VirusTotal AI · 免費託管(零配置即用,文件雜湊與可疑文件會上傳做公開分析、別名上公開排行榜)/ Google Threat Intelligence · 自帶 API Key(用你自己的 key、結果不公開)/ 不使用雲端。
- 本機 YARA 規則(獨立開關):純離線規則檢測,可與雲端同開,也可單獨作離線用。
- 自動掃描攔截 · 哨兵(Sentinel):啟用後,Agent 讀 / 寫 / 執行文件時自動掃描並阻斷惡意命中。
關鍵改進:檢測能力與哨兵攔截解耦。只要配好雲端後端或本機 YARA,相關掃描 / 情報工具就能直接被 Agent 呼叫——無需啟用哨兵攔截。兩軸互不牽連。
哨兵側的雜湊掃描工具(sec.vtai_*):
| 工具 | 用途 |
|---|---|
sec.vtai_check_hash |
用文件雜湊查威脅情報,不上傳內容(傳回 verdict / 命中數 / 標籤 / 鏈接) |
sec.vtai_scan |
上傳高危文件做完整掃描;僅在啟用「上傳到雲端掃描」或本機 YARA 時可用,否則退化為雜湊查詢 |
sec.vtai_register |
觸發 VirusTotal AI 註冊 / 重註冊(實際在設置面板的同意流程裡完成) |
sec.vtai_status |
檢視哨兵狀態(是否啟用 / 監控 / 自動掃描 / 後端 / 快取等) |
全量情報工具(vt.*,獨立門控,見 §11.10.1):直查 VirusTotal / GTI 的 v3 API 做情報富化,與哨兵並存、獨立開關。
11.10.1 vt.* 全量情報工具
在 設置 → 安全 → 「Google Threat Intelligence 全量情報工具」 啟用後(需先配好可用的 API Key),Agent 可呼叫:
| 工具 | 用途 | 說明 |
|---|---|---|
vt.lookup |
只讀富化:自動識別 IOC 類型(雜湊 / IP / 域名 / URL),批量查詢、緊湊摘要 | 免費、只讀;只發 IOC 字串、不上傳樣本 |
vt.api |
全量直通:存取 VT / GTI 各類 v3 端點 | 讀預設可用;寫 / 提交受「僅查詢」攔、Premium/GTI 端點受「收費功能」攔 |
vt.submit |
提交 URL、上傳文件、重掃(非同步輪詢) | 寫操作;上傳樣本位元組屬外發,預設需行內確認,單文件 ≤ 32 MB |
vt.download |
下載樣本到工作區 | Premium;二進制不進上下文 |
vt.feeds |
拉取訂閱源批次到工作區 | Premium;有 T-60 分鐘延遲 |
vt.hunt |
Retrohunt / Livehunt 狩獵 | Premium;非同步,建立後輪詢狀態 / 命中 |
門控分級(設置 → 安全):主開關啟用(憑可用 key)→ 僅查詢模式(預設開,只讀、攔寫 / 提交 / 上傳)→ 啟用收費功能(預設關,放開 Premium/GTI 端點,實際仍受 key 檔位限制)→ 上傳樣本前確認(預設開,僅在關掉「僅查詢」時出現)。回應經緊湊摘要(verdict / 檢出比 / 名稱 / 標籤 / 鏈接等)避免占滿上下文,raw=true 可取原始 JSON。金鑰不可用會在啟用環節即提示(不再等到呼叫才報錯)。「恢復預設」按鈕非破壞性——取消選用雲端並關上傳,但保留 API Key / VirusTotal AI 註冊與全量情報工具配置。
11.11 資料可見性
所有分析結果都直接落到對話流,可獨立檢視 / 複製 / 匯出。AVL Code 不會把樣本本體上傳到任何第三方;只有反編譯會按需呼叫反編譯模型(僅發相關反匯編片段),以及 vt.submit / sec.vtai_scan 上傳(需你顯式確認 / 啟用)會把文件送往 VirusTotal 雲端。
