iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0
Modern Web

AI 驅動的 Web 資安新時代系列 第 26

Day26 - 情資融合:AI Agent 即時分析威脅情資與網路流量

  • 分享至 

  • xImage
  •  

在現代網路防禦中,威脅情資 (Threat Intelligence)網路流量分析 (Network Flow Analysis)

是企業安全監控中最重要的兩大來源。

  • 威脅情資:揭露外部惡意 IP、Domain、Hash、攻擊手法。
  • 網路流量分析:監控內部封包異常、可疑連線與資料外洩行為。

傳統上,SOC 分析師需人工比對:

  • 可疑 IP / Domain 是否出現在黑名單中
  • 流量中是否包含惡意活動跡象

這樣的流程不但耗時,還容易遺漏短暫或混淆流量中的攻擊行為。

為解決這個問題,我們導入 AI Agent 自動化情資融合分析

讓 AI 能自動完成:

外部威脅情資擷取 → 內部流量比對 → 威脅關聯分析 → 封鎖建議生成


工作流程

  1. Collector
    • 概念上可透過 API 抓取多來源威脅情資(AbuseIPDB、OTX、VirusTotal...)。
    • 實作上本篇以 模擬 API 取代,回傳 Suricata / Wazuh 類型的事件資料(模擬 NetFlow、IDS Logs)。
  2. AI Fusion
    • AI 模型自動比對「流量中的 IP / Domain」與「情資清單」。
    • 標註關聯性(例如:命中黑名單、異常流量特徵)。
    • 輸出高風險連線清單與封鎖建議。
  3. Report
    • 生成兩種報告:
      • 技術報告:詳細列出可疑連線與威脅來源。
      • 管理摘要:以表格方式呈現風險分布與行動建議。

Server - 模擬情資與流量 API

1、初始化伺服器

使用 express 建立一個簡單的 HTTP 伺服器。

import express from "express";
const app = express();

2、建立假威脅情資 API

此 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" },
      ],
   });
});

3、建立假流量紀錄 API

此 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" },
      ],
   });
});

4、啟動伺服器

啟動在 3000 port,啟動後可在瀏覽器驗證 API。

app.listen(3000, () => console.log("伺服器啟動: http://localhost:3000"));

Agent - AI 威脅情資融合分析

1、初始化 AI 模型

  • 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" });

2、呼叫 API 並比對資料

同時取得威脅情資與流量紀錄,傳入 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();

3、建立 AI 分析提示(Prompt)

這段是給 AI 的分析指令,請它自動找出命中情資的流量,並輸出威脅摘要與封鎖建議。

   const prompt = `
   你是一位資安分析專家,請整合以下兩組資料:
   1️威脅情資 (Threat Feeds):${JSON.stringify(feeds, null, 2)}
   2️網路流量紀錄 (Network Flows):${JSON.stringify(flows, null, 2)}

   請判斷:
   - 哪些流量與高風險情資 (High Risk) 有關?
   - 可疑的 IP 或 Domain 是否出現在情資清單中?
   - 請生成一份威脅分析摘要報告(含建議封鎖清單)。
   `;

4、產生 AI 回覆並輸出報告

呼叫 Gemini 生成威脅分析報告,並輸出於終端機。

   const result = await model.generateContent(prompt);
   console.log(result.response.text());
}

	threatFusion();

上一篇
Day25 - AI Agent 在資安合規(OWASP、ISO、GDPR)中的角色
下一篇
Day27 - 人機協作:AI Agent 自動處理,工程師專注決策
系列文
AI 驅動的 Web 資安新時代29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言