在現代網路防禦中,威脅情資 (Threat Intelligence) 與 網路流量分析 (Network Flow Analysis)
是企業安全監控中最重要的兩大來源。
傳統上,SOC 分析師需人工比對:
這樣的流程不但耗時,還容易遺漏短暫或混淆流量中的攻擊行為。
為解決這個問題,我們導入 AI Agent 自動化情資融合分析,
讓 AI 能自動完成:
外部威脅情資擷取 → 內部流量比對 → 威脅關聯分析 → 封鎖建議生成
使用 express
建立一個簡單的 HTTP 伺服器。
import express from "express";
const app = express();
此 API 回傳一組模擬的威脅情資來源,包含多個高風險指標(IOC)。
app.get("/api/threat/feeds", (req, res) => {
res.json({
feeds: [
{ type: "ip", value: "45.83.12.77", source: "AbuseIPDB", risk: "high" },
{ type: "domain", value: "malicious-login.net", source: "OTX", risk: "medium" },
{ type: "hash", value: "b83f...a97d", source: "VirusTotal", risk: "high" },
],
});
});
此 API 模擬 Suricata / NetFlow 輸出的流量紀錄,讓 AI 能進行關聯比對。
app.get("/api/network/flow", (req, res) => {
res.json({
flows: [
{ src_ip: "192.168.10.12", dst_ip: "45.83.12.77", bytes: 2048, proto: "TCP" },
{ src_ip: "192.168.10.13", dst_ip: "8.8.8.8", bytes: 512, proto: "UDP" },
{ src_ip: "192.168.10.15", dst_ip: "malicious-login.net", bytes: 4096, proto: "HTTPS" },
],
});
});
啟動在 3000 port,啟動後可在瀏覽器驗證 API。
app.listen(3000, () => console.log("伺服器啟動: http://localhost:3000"));
node-fetch
:用來呼叫本地 API。dotenv
:載入 .env
中的金鑰(GEMINI_API_KEY)。GoogleGenerativeAI
:Google 提供的 Gemini SDK。import fetch from "node-fetch";
import dotenv from "dotenv";
import { GoogleGenerativeAI } from "@google/generative-ai";
dotenv.config();
const API_KEY = process.env.GEMINI_API_KEY;
const genAI = new GoogleGenerativeAI(API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-2.5-flash" });
同時取得威脅情資與流量紀錄,傳入 AI 模型分析。
async function threatFusion() {
const [feedRes, flowRes] = await Promise.all([
fetch("http://localhost:3000/api/threat/feeds"),
fetch("http://localhost:3000/api/network/flow"),
]);
const feeds = await feedRes.json();
const flows = await flowRes.json();
這段是給 AI 的分析指令,請它自動找出命中情資的流量,並輸出威脅摘要與封鎖建議。
const prompt = `
你是一位資安分析專家,請整合以下兩組資料:
1️威脅情資 (Threat Feeds):${JSON.stringify(feeds, null, 2)}
2️網路流量紀錄 (Network Flows):${JSON.stringify(flows, null, 2)}
請判斷:
- 哪些流量與高風險情資 (High Risk) 有關?
- 可疑的 IP 或 Domain 是否出現在情資清單中?
- 請生成一份威脅分析摘要報告(含建議封鎖清單)。
`;
呼叫 Gemini 生成威脅分析報告,並輸出於終端機。
const result = await model.generateContent(prompt);
console.log(result.response.text());
}
threatFusion();