使用 Timesketch 建立事件時間線 是做什麼的?
概述
Timesketch 是 Google 開發的開源協作式鑑識時間線分析工具,讓安全團隊在事件調查期間,能對來自多個來源的時序資料進行可視化與分析。它匯入端點、伺服器與雲端服務的日誌與數位跡證,將其標準化為統一的可搜尋時間線,並提供強大的分析能力,包括內建分析器、標記、草圖註釋與故事建構。Timesketch 可與 Plaso (log2timeline) 整合進行跡證解析,也支援直接 CSV/JSONL 匯入,以便在活躍事件中快速建立時間線。
使用時機
- 當您需要部署或設定使用 Timesketch 建立事件時間線的功能時
- 當您需建立符合合規要求的安全控制措施時
- 當您要建構或改善此領域的安全架構時
- 當您執行需要此實作的安全評估時
先決條件
- 熟悉事件應變概念與工具
- 具備可安全執行的測試或實驗環境
- Python 3.8+ 與所需相依套件
- 具備執行測試活動的適當授權
架構與元件
核心元件
- Timesketch 伺服器:提供 REST API 的網頁應用程式,用於管理時間線
- OpenSearch/Elasticsearch:時間線事件的後端儲存與搜尋引擎
- PostgreSQL:儲存草圖、故事與使用者資料的中繼資料庫
- Redis:背景工作的任務佇列管理
- Celery Workers:非同步處理時間線上傳與分析器
資料流程
證據來源 --> Plaso/log2timeline --> Plaso 儲存檔 (.plaso)
| |
v v
CSV/JSONL --> Timesketch 匯入程式 --> OpenSearch 索引
|
v
Timesketch 網頁介面
(搜尋、分析、故事)
部署
Docker 部署 (建議)
# 複製 Timesketch 儲存庫
git clone https://github.com/google/timesketch.git
cd timesketch
# 執行部署輔助腳本
cd docker
sudo docker compose up -d
# 預設存取:https://localhost:443
# 首次執行時會產生管理員憑證
系統需求
- 至少 8 GB RAM (大型調查建議 16+ GB)
- 至少 4 個 CPU 核心
- OpenSearch 索引需使用 SSD 儲存
- 已安裝 Docker 與 Docker Compose
資料匯入方法
方法一:Plaso 整合 (全面性)
# 使用 log2timeline 處理磁碟映像檔
log2timeline.py --storage-file evidence.plaso /path/to/disk/image
# 處理 Windows 事件日誌
log2timeline.py --parsers winevtx --storage-file windows_events.plaso /path/to/evtx/
# 處理多個證據來源
log2timeline.py --parsers "winevtx,prefetch,amcache,shimcache,userassist" \
--storage-file full_analysis.plaso /path/to/mounted/image/
# 將 Plaso 檔案匯入 Timesketch
timesketch_importer -s "Case-2025-001" -t "Endpoint-WKS01" evidence.plaso
方法二:CSV 匯入 (快速匯入)
message,datetime,timestamp_desc,source,hostname
"偵測到使用者登入","2025-01-15T08:30:00Z","事件記錄","安全性記錄","DC01"
"PowerShell 執行","2025-01-15T08:31:15Z","事件記錄","PowerShell","WKS042"
# 直接匯入 CSV
timesketch_importer -s "Case-2025-001" -t "Quick-Triage" events.csv
方法三:JSONL 匯入 (結構化資料)
{"message": "來自 10.1.2.3 的可疑登入", "datetime": "2025-01-15T08:30:00Z", "timestamp_desc": "事件記錄", "source_short": "安全性", "hostname": "DC01"}
方法四:Sigma 規則整合
# 上傳 Sigma 規則以進行自動偵測
timesketch_importer --sigma-rules /path/to/sigma/rules/
分析工作流程
步驟 1:建立調查草圖
1. 登入 Timesketch 網頁介面
2. 建立新的草圖 (調查案件)
3. 將相關時間線加入草圖
4. 設定草圖描述與標籤
步驟 2:執行內建分析器
Timesketch 包含可自動識別以下項目的分析器:
- 瀏覽器搜尋分析器:從瀏覽器歷史記錄中擷取搜尋查詢
- 事件鏈分析器:連結相關事件 (如下載 -> 執行)
- 網域分析器:擷取與分類網域名稱
- 特徵提取分析器:識別 IP、URL、雜湊值
- 地理位置分析器:將事件對應到地理位置
- 相似度評分器:尋找跨時間線的相似事件
- Sigma 分析器:比對事件與 Sigma 偵測規則
- 帳號尋找器:識別使用者帳號活動模式
- 標籤工具:根據預先定義規則套用標籤
步驟 3:搜尋與篩選
# 以 Timesketch 查詢語言搜尋的範例
# 尋找與特定使用者相關的所有事件
source_short:Security AND message:"john.admin"
# 尋找 PowerShell 執行事件
data_type:"windows:evtx:record" AND event_identifier:4104
# 尋找橫向移動跡象
source_short:Security AND event_identifier:4624 AND xml_string:"LogonType\">3"
# 尋找特定時間範圍內的事件
datetime:[2025-01-15T00:00:00 TO 2025-01-15T23:59:59]
# 尋找檔案建立事件
data_type:"fs:stat" AND timestamp_desc:"建立時間"
# 使用標籤搜尋
tag:"可疑" OR tag:"橫向移動"
步驟 4:建立調查故事
1. 在草圖中建立新的故事
2. 加入支援每個發現的搜尋檢視
3. 在關鍵事件上加入調查人員註釋
4. 將事件連結到 MITRE ATT&CK 技術
5. 按時間順序記錄攻擊敘述
6. 匯出故事以納入事件報告
進階功能
協作調查
- 多位分析師可以同時處理同一個草圖
- 評論與註釋會持續保留在事件上
- 已儲存的搜尋可在團隊間共用
- 調查故事可在脈絡中記錄發現
API 自動化
from timesketch_api_client import config
from timesketch_api_client import client as ts_client
# 連線到 Timesketch
ts = ts_client.TimesketchApi(
host_uri="https://timesketch.local",
username="analyst",
password="password"
)
# 取得草圖
sketch = ts.get_sketch(1)
# 搜尋事件
search = sketch.explore(
query_string='event_identifier:4624 AND LogonType:3',
return_fields='datetime,message,hostname,source_short'
)
# 為事件加入標籤
for event in search.get('objects', []):
sketch.tag_event(event['_id'], ['lateral_movement'])
與 Dissect 整合
# 使用 Dissect 加速跡證解析 (Plaso 的替代方案)
target-query -f timesketch://timesketch.local/case-001 \
targets/hostname/ -q "windows.evtx" --limit 0
建立時間線的主要資料來源
| 來源 | 解析器 | 證據價值 |
|---|---|---|
| Windows 事件日誌 (.evtx) | winevtx | 驗證、程序執行、服務 |
| Prefetch 檔案 | prefetch | 程式執行記錄 |
| MFT ($MFT) | mft | 檔案系統活動 |
| 登錄檔 | winreg | 系統設定、持續性 |
| 瀏覽器歷史記錄 | chrome/firefox | 網頁活動、下載 |
| Syslog | syslog | Linux/網路設備事件 |
| CloudTrail 日誌 | jsonl | AWS API 活動 |
| Azure 活動日誌 | jsonl | Azure 資源操作 |
| 防火牆日誌 | csv/jsonl | 網路連線 |
| Proxy 日誌 | csv/jsonl | HTTP/HTTPS 流量 |
MITRE ATT&CK 對應
| 技術 | 時間線指標 |
|---|---|
| 初始存取 (TA0001) | 首次惡意事件、收到釣魚郵件 |
| 執行 (T1059) | PowerShell/CMD 事件、程序建立 |
| 持續性 (TA0003) | 登錄檔修改、排程工作、服務 |
| 橫向移動 (TA0008) | 遠端登入、SMB 連線、RDP 工作階段 |
| 資料外洩 (TA0010) | 大量資料傳輸、雲端儲存上傳 |