一覧OP-09-2 · 脅威インテリジェンスの利用

ATT&CKによる攻撃行動の分類

PowerShell実行、サービス登録、内容不明の通信を調べます。STIXが扱う指標や関係の考え方と合わせ、指標一致と観測された行動を混同せずに整理する方法を学びます。

説明

ATT&CKの技術IDは攻撃に使われる行動を整理する分類です。分類を付けたこと自体が侵害の証明になるわけではありません。観測した処理と元の証拠を併記して、分類の根拠を確認します。

PowerShell実行、サービス登録、内容不明の通信を調べます。STIXが扱う指標や関係の考え方と合わせ、指標一致と観測された行動を混同せずに整理する方法を学びます。

1行動と証拠の対応を読む

actionは調査で確認した行動、evidenceはその根拠です。

from oplab import * db=connect(9) show(db, 'SELECT行動と証拠の対応を読む * FROM behavior ORDER BY id')

PowerShellとサービス登録には分類があり、通信の内容は未確認です。不明な箇所を無理に技術IDで埋めないようにします。

2スクリプト実行の根拠を絞る

T1059.001はPowerShellの利用を扱う分類です。

show(db, 'SELECTスクリプト実行の根拠を絞る id,action,evidence FROM behavior WHERE technique="T1059.001"')

p7とs7を根拠にPowerShell実行を分類しています。単にpowershellという文字が資料にあっただけの場合とは区別します。

3登録の証拠と実行の証拠を分ける

T1543.003はWindowsサービスに関する分類です。

show(db, 'SELECT登録の証拠と実行の証拠を分ける id,action,evidence FROM behavior WHERE technique="T1543.003"')

s8はサービス登録の証拠です。サービスが起動したことまでこの行で確認した扱いにはしません。

4分類できない内容を残す

NULLはこの資料だけでは具体的な行動分類を決めていない項目です。

show(db, 'SELECT分類できない内容を残す id,action,evidence FROM behavior WHERE technique IS NULL')

f7だけでは送信内容や目的を判断できません。「通信がある」だけで情報持出しの技術へ対応させると、主張が証拠を越えます。

5指標と行動の情報を分ける

IOCの信頼度は情報源に付随する値で、行動分類の証明力へ自動的に引き継がれません。

show(db, 'SELECT指標と行動の情報を分ける i.id,i.type,i.source,i.confidence FROM ioc i ORDER BY id')

STIXでは指標、観測、関係などを別のオブジェクトとして表現できます。種類の違う情報を一つの確定事実へ潰さず管理します。

6STIXの指標と観測を別のオブジェクトとして開く

indicatorは照合条件、observed-dataは観測情報です。この試料はドメインを一度観測した資料で、攻撃者への帰属を表す関係は含めていません。

from oplab import ROOT import json bundle=json.loads((ROOT/"OP-09/indicator.json").read_text()) for obj in bundle["objectsSTIXの指標と観測を別のオブジェクトとして開く"]: print(json.dumps(obj,sort_keys=True))

指標にはpatternと有効期間、観測にはfirst_observed、last_observed、number_observedがあります。object_refsは観測したドメインのオブジェクトIDを参照し、指標との一致判定そのものとは別です。

7根拠付きの分類一覧を出す

分類IDと証拠を必ず同じ行に残します。

show(db, 'SELECT根拠付きの分類一覧を出す technique,evidence,action FROM behavior WHERE technique IS NOT NULL ORDER BY technique')

分類済みは2件です。技術IDの数は攻撃の全体像をどれだけ網羅したかの証明にはならず、未観測の経路は別に残ります。

まとめ

分類済みは2件です。技術IDの数は攻撃の全体像をどれだけ網羅したかの証明にはならず、未観測の経路は別に残ります。

表示された証拠IDと検索条件を残すと、調査結果を元の記録までたどれます。

操作履歴と解説を振り返れます。

Python 3.15 / SQLite・固定の調査記録

1
from oplab import * db=connect(9) show(db, 'SELECT * FROM behavior ORDER BY id')
id | action | evidence | technique
b1 | PowerShell script execution | process p7 + script s7 | T1059.001
b2 | Windows service installed | service s8 | T1543.003
b3 | unknown outbound content | flow f7 | NULL
2
show(db, 'SELECT id,action,evidence FROM behavior WHERE technique="T1059.001"')
id | action | evidence
b1 | PowerShell script execution | process p7 + script s7
3
show(db, 'SELECT id,action,evidence FROM behavior WHERE technique="T1543.003"')
id | action | evidence
b2 | Windows service installed | service s8
4
show(db, 'SELECT id,action,evidence FROM behavior WHERE technique IS NULL')
id | action | evidence
b3 | unknown outbound content | flow f7
5
show(db, 'SELECT i.id,i.type,i.source,i.confidence FROM ioc i ORDER BY id')
id | type | source | confidence
i1 | ip | feed-a | 60
i2 | domain | feed-a | 70
i3 | sha256 | sample-analysis | 90
i4 | ip | feed-b | 40
6
from oplab import ROOT import json bundle=json.loads((ROOT/"OP-09/indicator.json").read_text()) for obj in bundle["objects"]: print(json.dumps(obj,sort_keys=True))
{"created": "2026-01-07T00:00:00Z", "id": "indicator--4f733b63-4066-4f60-88ef-4e63cc88df53", "modified": "2026-01-07T00:00:00Z", "pattern": "[domain-name:value = 'files.example.test']", "pattern_type": "stix", "spec_version": "2.1", "type": "indicator", "valid_from": "2026-01-07T00:00:00Z", "valid_until": "2026-01-08T00:00:00Z"}
{"id": "domain-name--652a6734-981c-4d97-9b35-e41d50bb47d0", "spec_version": "2.1", "type": "domain-name", "value": "files.example.test"}
{"created": "2026-01-07T01:00:00Z", "first_observed": "2026-01-07T01:00:00Z", "id": "observed-data--91a59e3c-5e51-445e-9fe1-082ca57ad8f3", "last_observed": "2026-01-07T01:00:00Z", "modified": "2026-01-07T01:00:00Z", "number_observed": 1, "object_refs": ["domain-name--652a6734-981c-4d97-9b35-e41d50bb47d0"], "spec_version": "2.1", "type": "observed-data"}
7
show(db, 'SELECT technique,evidence,action FROM behavior WHERE technique IS NOT NULL ORDER BY technique')
technique | evidence | action
T1059.001 | process p7 + script s7 | PowerShell script execution
T1543.003 | service s8 | Windows service installed

演習完了