Technical Attribution Evidence Framework

TAEC を使ったアトリビューションの進め方

TAEF(Technical Attribution Evidence Framework)は、TAEC のエビデンスを使って、攻撃を、どの攻撃者の攻撃と関連するか(関連)と、関連とは別にどんな主体か(特定)の二軸で、定量的にアトリビューションするための手順です。二軸のそれぞれを、エビデンスの段階と、それを支える独立した収集元の数で測り、測った結果をそのまま答えにします。偽装や共有の起こりやすさは記録ごとの重みで割り引き、ツールの共有と同じ運用主体は、関連の型で読み分けます。

版
0.3-draft(試行段階)
更新

TAEF で何ができるか

APT の帰属では、「同じバックドアが使われた」「同じインフラが使われた」という一致から、同じ攻撃グループだと結論することが少なくありません。ところが、請負業者や共通の開発元が作ったツールは、複数のグループが使います。流出したビルダー、貸し出されるインフラ、意図的な偽旗も、同じような一致を生みます。TAEF はこの問題に、次のように対処します。

  • 似ている箇所を役割ごとに示す。ツールを作る側、インフラを用意する側、侵入して操作する側、標的を決める側に分けて比べるので、「ツールは同じだが運用者は別」という関係を区別できます。
  • 誰がやったかを、関連と特定の二軸で測る。関連は既知の攻撃者のモデルごと、帰属対象ごとに、特定は所在、言語、関心といった素性や実在の身元の値ごとに、エビデンスの段階と、それを支える独立した収集元の数で測ります。二軸や帰属対象を足して一つの点数にはしないので、「ツールは同じ系譜だが、運用者は分からない」「運用者はロシア語を使うようだが、身元は分からない」のように、言えたことと言えなかったことが分かれて残ります。作業の時間帯や言語は、どこの主体かを測る主な材料ですが、二つの活動が同じかを示す力は弱いので、使い分けます。
  • 偽装と共有を割り引く。偽装しやすい特徴や、ほかの主体と共有されやすい特徴の一致は、記録ごとの重みで弱く数えます。偽装しやすい一致だけに支えられた関連には、印を付けて答えに残します。
  • 測った根拠を残す。どの観測をどの収集元から得て、どの記録が段階と数を支えたかを書き留めます。後から検証でき、新しい証拠が出たときに測り直せます。

想定する利用者は、CTI アナリスト、インシデント対応者、マルウェア解析者、公開レポートを書く研究者です。TAEF が扱うのは技術的、運用的な帰属に限られ、国家の公式見解や国際法上の責任は、TAEF だけでは決めません。

ダイヤモンドモデルとの違い

侵入の分析では、ダイヤモンドモデルが広く使われています。TAEF はこれを置き換えるものではありません。

いちばんの違いは、出力として何が残るかです。ダイヤモンドモデルの出力は、一つのイベントを四つの要素で描いた記述で、中身は分析者が必要な細かさで書きます。確信度の中身や特徴の重みは、実装や今後の研究に委ねられています。TAEF の出力は、攻撃を表す活動モデルと、その帰属を関連と特定の二軸で測った結果です。観測をすべて TAEC のエビデンス型に結び付け、段階の決め方と数え方を定めているので、分析者や組織が変わっても、同じ物差しで測った結果が残ります。

ダイヤモンドモデルと TAEF の出力の違いダイヤモンドモデルは、一つのイベントを四つの要素で記述し、書き方の細かさや確信度の中身は分析者や実装に委ねる。TAEF は、攻撃を活動モデルとして記録し、関連を比べる相手のモデルごと、帰属対象ごとに、特定を素性と身元の値ごとに、段階と独立した収集元の数で測る。指示主体は、公式見解をそのまま書く。二つは足し合わせず、測った段階と数をそのまま答えにする。値は説明のための例。ダイヤモンドモデル:イベントごとの記述イベント 1能力:独自のバックドアインフラ:update.example.netイベント 2能力:URI /api/v2/…/syncインフラ:レジストラ R確信度の中身と特徴の重みは、実装に委ねる書き方の細かさは、分析者が決める活動のグループTAEF:攻撃を関連と特定の二軸で測る攻撃(活動モデル)観測を TAEC の型に結び付けた記録関連比べる相手のモデルと、帰属対象ごと特定素性と身元の値ごとtool-lineage一致 medium・2infrastructure一致 weak・1tradecraft食い違い weak・1operator材料なしlanguageロシア語weak・1interest防衛の情報medium・2identity材料なしsponsor公式見解なし二つを足し合わせて、一つの点数にはしない答え段階と独立した収集元の数のまま
ダイヤモンドモデルは一つのイベントを四つの要素で記述し、帰属をどれだけ言えるかの測り方は実装に委ねる。TAEF は攻撃を活動モデルとして記録し、関連と特定の二軸を段階と独立した収集元の数で測って、そのまま答えにする。図の値は説明のための例。

問いの決め方も違います。ダイヤモンドモデルでは、活動のグループを作るときに分析者が分析の問いを決めますが、TAEF は問いを決めておき、分析者は分析の範囲だけを決めます(分析の範囲を決める)。このほか TAEF は、ダイヤモンドモデルが実装や今後の研究に委ねている確信度の中身や特徴の重みにあたる部分を、段階の決め方と収集元の数え方として定めます。要素と役割の対応や、論点ごとの違いは、仕様 1.1 にあります。

仕様 1.1 ダイヤモンドモデルとの関係

仕様 1.1 ダイヤモンドモデルとの関係

この節は参考であり、規則ではない。

ダイヤモンドモデル1は、侵入の一つひとつのイベントを、攻撃者(adversary)、能力(capability)、インフラ(infrastructure)、被害者(victim)の四つの要素とその関係で表すモデルである。イベントを攻撃の段階に沿って並べた活動のスレッド(activity thread)と、特徴の似たイベントやスレッドをまとめた活動のグループ(activity group)を使い、侵入の分析から防御の計画までを扱う。

TAEF はダイヤモンドモデルを置き換えるものではない。ダイヤモンドモデルは、イベントを記録し、関連する要素を探すための枠組みである。TAEF は、攻撃の帰属を関連と特定の二軸で測り、測った結果を答えとして残すための手順である。併せて使うときは、ダイヤモンドモデルで記録したイベントの特徴を TAEF のエビデンス記録にし、活動のグループを TAEF の活動モデルとして扱う。

二つの違いが最も大きいのは、出力として何が残るかである。ダイヤモンドモデルの出力は、一つのイベントを四つの要素で表した記述(ダイヤモンドの図)である。要素の中身は、分析者が必要な細かさで書き(4.2、4.3)、確信度の中身や特徴の重みは、実装や今後の研究に委ねている(4 章、9.2)。そのため、攻撃者についてどこまで言えるかを、分析者や組織のあいだで同じ物差しで示しにくい。TAEF の出力は、攻撃を表す活動モデルと、その帰属を関連と特定の二軸で測った結果である。関連は相手のモデルごと、帰属対象ごとに、特定は素性と身元の値ごとに、エビデンスの段階と、それを支える独立した収集元の数で測る。すべての観測を TAEC のエビデンス型に結び付けて記録し、段階の決め方と数え方を定めているので、分析者や組織が変わっても、同じ物差しで測った結果が残る。測った結果はモデルに残り、記録が加わるたびに測り直せる。

観点ダイヤモンドモデルTAEF
出力の単位一つのイベント(四つの要素と追加の特徴)。イベントを並べた活動のスレッドと、まとめた活動のグループ攻撃を表す活動モデル(L2)と主体モデル(L3)、主体のまとまり。活動モデルと主体モデルは、関連と特定を測った結果を持つ(6.1、6.8、6.10、7 章)
中身の書き方要素ごとに、分析者が必要な細かさで書く(4.2、4.3)観測一件ごとに、TAEC のエビデンス型に結び付けたエビデンス記録として書く(4.1)
問い活動のグループを作る最初の段階で、分析者が分析の問いを決める(9.1)TAEF が決める。どの分析でも、攻撃を誰がやったかを関連と特定の二軸で問い、分析者は分析の範囲を決める(2.1)
帰属の測り方分析の問いごとに、比べる特徴と重みを選び、似たものをまとめる(9.1、9.2、9.3)関連は、相手のモデルの同じエビデンス型の記録と、記録に付けた重みで帰属対象ごとに比べ、段階と独立した収集元の数を出す。特定は、推した素性と示した身元を、値ごとに段階と数でまとめる(5 章、6.4、7 章)
測るのに要る来歴データの出所は、加えてよい特徴の一つ(4.5)記述の種類、収集元、依存グループを必ず持ち、収集元の数え方と比較の規則で使う(4.1、6.4、6.5)
まとまりの更新新しいイベントをグループに分類し、誤りが見つかれば作り直す(9.4、9.6)比較を関連の型で読み、同じキャンペーンなら統合し、同じ運用主体なら主体モデルに束ねて、モデルの関連と特定を測り直す(6.3、6.6、6.8、7 章)

ダイヤモンドモデルの要素と、TAEF の役割、関連と特定は、次のように対応する。

ダイヤモンドモデルの要素TAEF の役割関連(帰属対象)特定(素性、身元、指示主体)
能力開発、運用same-tool-lineage、same-developer、same-tradecraft開発者の素性と身元
インフラインフラsame-infrastructureインフラを用意した者の素性と身元
攻撃者のうち、実際に侵入する者(adversary operator)運用same-operator運用者の素性と身元
攻撃者のうち、活動から利益を得る者(adversary customer)目的なし指示主体
被害者目的same-objective関心(interest)

ダイヤモンドモデルの能力は、ツールと手口の両方を含む。TAEF はこれを、ツールを作る側(開発)とツールを使う側(運用)に分けて比べる。請負業者が作ったツールを複数の運用主体が使う場合を、ツールの一致と運用の一致に分けて読むためである。ダイヤモンドモデルの活動のグループ(activity group)は TAEF の活動モデルと主体モデルに、活動のグループをさらに束ねる上位のまとまり(activity group family、9.7)は主体のまとまり(6.10)にあたる。

攻撃者の要素について、TAEF は、二つの活動で何が同じか(関連)とは別に、主体の所在、言語、関心(素性)、実在の身元、指示主体を、特定として扱う(3 章)。

ダイヤモンドモデルは、帰属の判断に関わる次の点を、実装や今後の研究に委ねている。TAEF は、それぞれを次のように定める。

論点ダイヤモンドモデルTAEF
確信度各特徴に確信度を付けるが、その中身は実装ごとに違ってよいとして、意図して定めていない(4 章)確信度は付けない。関連と特定を、エビデンスの段階(strong、medium、weak)と、それを支える独立した収集元の数で測り、段階の決め方と収集元の数え方を定める(5 章、6.4、7 章)
情報の出所データの出所は、組織の必要に応じて加えてよい追加の特徴の一つである(4.5)記述の種類、収集元、依存グループを必ず書き留め、独立性の判断に使う(4.1、4.2)。第三者の帰属や類似の評価は、エビデンス記録にしない(4.4)
特徴の重み分析の問いごとに、特徴ごとに一つの重みを付けてよい。特徴の選び方と重みの決め方は、今後の研究に残している(9.2)エビデンス記録に、届く帰属対象ごとに、一致したときと食い違ったときの重みを付け、推した素性と示した身元には特定の段階を付ける。分析する人が記録ごとに、型の性質を出発点に記録の中身から決めて、理由を書き留める。重みと段階は記録を作るときに付くので、比べる前に決まる(5 章)
共有と偽装による誤ったまとめ公開されたツールや共有のホスティングによる重なり、攻撃者の偽装が、誤ったまとめの原因になると注意する。防ぐ方法の比較は今後の課題としている(9 章の注 21、9.6)記録の重みと特定の段階で、偽装の手間と共有されやすさを割り引く(5 章)。比較の規則で、同じ出所の重複、共有の収集元、入れ替えの早い特徴、偽装しやすい一致を扱い(6.5)、関連の型で、ツールの共有と同じ運用主体を読み分ける(6.6)
何が同じかの区別活動のグループは特徴の似たイベントのまとまりで、何を同じとみなすかは分析の問いで決まる。攻撃者は、侵入する者と利益を得る者に分ける(4.1、9 章)答えを関連と特定に分ける。関連は帰属レベル(L0 から L3)と帰属対象で、ツールの系譜、活動、運用主体を分けて測る。特定は、そのモデルの記録で答え、関連の相手の素性と身元は引き継がない(3 章、7 章)
まとめ方の記録分類の誤りを示す証拠が見つかったら、グループを作り直す(9.6)統合、分割、束ねを、根拠にした比較の結果と関連の型、理由とともに、モデルの履歴に残す(6.3、6.8、6.10)

一方、次の点はダイヤモンドモデルが扱い、TAEF は扱わない。

  • イベントの記録と、攻撃の段階に沿った並べ方(活動のスレッド、活動と攻撃のグラフ)
  • 一つの要素から関連する要素を探すこと(ピボット)
  • 仮説を立てて確かめること(ダイヤモンドモデルは、ACH などの方法を使えるとする)
  • 被害者の側からの分析と、防御の計画

1 Sergio Caltagirone、Andrew Pendergast、Christopher Betz、The Diamond Model of Intrusion Analysis、2013 年。表の括弧内の章番号は、ダイヤモンドモデルの列ではこの文書の、TAEF の列ではこの仕様の番号である。 ↩

全体の流れ

分析では、エビデンスを記録して活動モデルを作り、関連と特定を、段階と独立した収集元の数で測ります。特定は、記録が推した素性や示した身元を、値ごとに段階と数でまとめて測ります。関連は、重みを使って相手のモデルと似ている箇所を帰属対象ごとに比べて測り、比べた結果を関連の型として読みます。同じキャンペーンと読めたモデルは統合し、同じ運用主体と読めたモデルは主体モデルに束ねて、測り直します。比べる相手がなければ、特定だけを測ります。測った段階と数が、そのまま答えになります。

TAEF の分析の流れ 分析の範囲を決めてから、エビデンス記録と活動モデルを作り、特定を段階と数で測るとともに、比較と関連の候補で関連を段階と数で測る。比べる相手がなければ、比較と関連の候補は飛ばす。関連の候補で同じキャンペーンや同じ運用主体と読めたら、統合や束ねをして活動モデルに戻り、測り直す。関連と特定を持つモデルが出力になる。 関連と特定を測る 観測と TAEC の型 分析の範囲 攻撃と資料 エビデンス記録 つなぐ、特定する 活動モデル 種から育てる 特定を測る 特定 素性と身元を段階と数でまとめる 関連を測る 比較 段階と数で測る 関連の候補 関連の型で読む 出力 関連と特定を持つモデル 統合と束ねの結果を活動モデルに戻す
分析の範囲を決めてから、特定と関連を並べて測る。比べる相手がなければ、比較と関連の候補は飛ばす。関連の候補で統合や束ねをすると、その結果が活動モデルに戻る。

仕様 2 分析の流れ

関連は、相手のモデルとどこでどれだけ似ているかを、重みを使って帰属対象ごとに比べ、段階と独立した収集元の数で測る。比べた結果は関連の型として読み(関連の候補)、同じキャンペーンと読めたモデルは統合し、同じ運用主体と読めたモデルは主体モデルに束ねて、測り直す。特定は、比較を経ずに、記録が推した素性と示した身元を、値ごとに段階と数でまとめる。重みと段階は、偽装や共有の起こりやすさを割り引くが、目の前の事例で偽装や共有が実際に起きたかは判定しない。そのため、答えには、測った段階と数をそのまま書く(1 章、7 章)。比べる相手(2.1)がなければ、比較と関連の候補を飛ばして特定だけを測り、関連は答えられなかったこと(7 章)に書く。

手順ごとに作るものは次のとおりです。前の手順で作ったものを、次の手順で使います。

  1. 分析の範囲を決める作るもの:分析の範囲(分析ごとに一件)
  2. エビデンスを記録する作るもの:エビデンス記録(観測一件につき一件)
  3. 活動モデルを作り、特定を測る作るもの:活動モデル(種一つにつき一件)と、その特定
  4. 比較して、関連を測る作るもの:比較結果(モデルの組ごとに一件)
  5. 関連の候補を読む作るもの:関連の候補(比較結果一件につき一件)と、統合や束ねの履歴

手順 04 を終えると、帰属する攻撃への答え(関連と特定)を持つ活動モデルと、束ねた主体モデル、主体モデルをまとめた主体のまとまりが残ります。これが TAEF の出力です(TAEF の出力)。

各手順の「やること」の後ろにある (4.1) のような番号は、その作業が従う仕様の節や規則です。枠で囲んだ「仕様」は、仕様の文をそのまま載せたものです。仕様では、規則と推奨を次のように分けています。

仕様 1 仕様の範囲

この仕様で「規則」として挙げた項目は、TAEF に従う分析と実装がすべて満たす。「推奨」と書いた項目は、理由を記録すれば省略できる。

TAEF は、分析者が手作業で使うことを前提にする。この仕様は、各段階で何を書き留めるかを定めるが、書き留める形式(項目名やデータ形式)は定めない。手順が固まった後に、それを機械で処理できるよう、比較を助ける仕様(CMP)を設計する。

関連と特定

関連と特定と、それぞれを定める仕様の節は、次のとおりです。

仕様 3 関連と特定

TAEF は、「この攻撃を誰がやったか」への答えを、関連と特定の二つで示す。関連は、既知の活動や主体と何が同じかを、帰属対象(3.2)の語で表す。特定は、どんな主体かを、素性(3.4)、身元(3.5)、指示主体(3.6)で表す。TAEC の観測事例が持つ帰属対象(attribution_scopes)と特定(identifies)の欄も、同じ語を使う。

答え答えること内訳と使う語定める節
関連既知の活動や主体と同じ者か。同じなら、何が、どの細かさで同じか帰属対象の 7 語(same-artifact から same-objective)。細かさは帰属レベル(L0 から L3)3.1、3.2
特定どんな主体か。どこで働き、どの言語を使い、何を求めるか。どの実在の個人や組織か。誰の指示や資金で活動しているか素性(location、language、interest)、身元(identity)、指示主体(sponsor)3.4、3.5、3.6

関連と特定のあいだに上下はなく、どちらも、それを示す記録で答える(4.1)。特定はそのモデルの記録から測り、関連の相手の素性と身元は引き継がない(7 章)。どちらも、段階と、それを支える独立した収集元の数で測り、二つを足し合わせて一つの点数にはしない(5 章、6.4、7 章)。片方が分からなくても、もう片方は答えられる。特定の素性、身元、指示主体は、根拠の求め方がそれぞれ違うので、別々に答える(3.4〜3.6)。このうち一つが分からなくても、ほかは答えられる。

役割(3.3)は、関連と特定の答えが、攻撃に関わるどの立場の者についての答えかを表す。

関連

関連は、TAEC の各エビデンス型に付いている帰属対象(attribution_scopes)を軸にします。帰属対象と帰属レベル、役割の対応は、次のとおりです。

仕様 3.2 帰属対象

TAEC の各エビデンス型には、帰属対象(attribution_scopes)が付いている。帰属対象は関連の語彙であり、その型の観測が二つの活動で一致したときに、何が同じだと示唆するかを表す。TAEC の観測事例にも、その事例で観測が根拠として届いた帰属対象が付いている。TAEF は帰属対象を、重みの軸、役割の判定、関連の型の読み取り、関連の答えの書き方(7 章)の四つに使う。

帰属対象と、帰属レベル、役割の対応
帰属レベル開発インフラ運用目的
L0same-artifact同じファイル、データ。役割:なし(種を作るときに使う)
L1same-tool-lineage同じツール、コードの系譜
L2same-infrastructure同じ者がインフラを管理しているsame-tradecraft同じやり方で運用している(手順、ツールを使う側が決める設定値、運用上の選択)same-objective同じ標的選定、情報要求
L3same-developer同じ者がツールやマルウェアを作っているsame-operator同じ者が侵入して操作している

same-developer と same-operator は、どちらも同じ者かを問う L3 の帰属対象で、ツールを作る者(開発)と侵入して操作する者(運用)のどちらが同じかで分ける。請負業者や販売元が作ったツールを複数の運用主体が使うことがあるので、開発者が同じでも、運用者が同じとは限らない。same-infrastructure を L3 に置かないのは、インフラを管理する者が攻撃者自身ではなく、ホスティングやインフラ貸し出しの業者であることがあるためである。

契約者の名義、支払い元、コード署名証明書の発行先、登録者の情報などの名義は、実在の個人や組織のものと確かめられれば、特定の身元(3.5)の答えにもなる。関連では、名義もほかの値と同じく、確かめたかどうかにかかわらず、その記録の帰属対象と重みで比べる(6.5 の規則 7)。たとえば、同じ発行先のコード署名証明書の再利用(FIL-003)は、発行先を確かめていてもいなくても、その記録の帰属対象でつなぐ。偽名や盗まれた名義は別の主体でも使い回されるので、そのことは重みの理由(共有されやすさ)で扱う。

役割ごとに比べる請負業者が開発した同じバックドアを、グループ X と Y が使っている。開発の役割では same-tool-lineage が一致するが、インフラ、運用、目的の役割では食い違う。グループ Xグループ Y役割ごとに比べた結果開発インフラ運用目的請負業者が開発したバックドア(同じもの)X と Y の両方に提供C2 サーバー群 PC2 サーバー群 Q侵入チーム X の手順侵入チーム Y の手順外交の情報を集める先端技術の情報を集めるsame-tool-lineage一致same-infrastructure食い違いsame-tradecraft食い違いsame-operator食い違いsame-objective食い違い
請負業者が開発した同じバックドアを、二つのグループが使う場合。開発の役割では一致するが、ほかの役割では食い違う。一つの点数にまとめると、この違いは見えなくなる。

各エビデンスのページの上部に表示される型の帰属対象は、すべての型で、観測事例が届いた帰属対象から付け直しました。観測事例ごとの帰属対象と特定は、9 カテゴリすべての事例に付けました。

役割と帰属レベル(仕様 3.3、3.1)

仕様 3.3 役割

役割は、エビデンスが攻撃に関わるどの立場の者の痕跡かを表す。攻撃の背後では、ツールを作る者、インフラを用意する者、侵入して操作する者、標的を決める者が別々のことがある。ランサムウェアの開発者と、それを使って侵入するアフィリエイトが別の主体である場合がその例である。役割ごとに比べれば、「ツールは共通だが運用者は別」という関連を読み取れる。役割ごとに答えれば、「ツールを作ったのは請負業者 X だが、運用者は分からない」のように、分かったことだけを答えられる。すべてを一つの点数にまとめると、この違いは見えなくなる。

  • 開発:ツールやマルウェアを作る
  • インフラ:サーバーやドメインを調達し、構成する
  • 運用:侵入して操作し、ツールの設定値を決める
  • 目的:標的を選び、指示を出す

関連では、役割は帰属対象から決まり、別に割り当てない。same-artifact は役割を持たない。素性(3.4)と身元(3.5)は帰属対象ではないので、誰の素性か、誰の身元かを、記録と答えに書く。指示主体(3.6)は、いつも目的の役割の答えである。

仕様 3.1 帰属レベル

帰属レベルは、関連として、何が同じかの細かさを表す。確実さや重大さの順位ではない。

レベル対象関連の例
L0ファイル、鍵、アカウント、ホストなどのアーティファクトA と B は同じアーティファクトである
L1コード、ビルダー、ツールファミリーの系譜A と B は同じツールの系譜に属する
L2時間、標的、手順、資源でまとまる活動イベント A から D は同じ活動である
L3同じ運用チーム、侵入チーム、アフィリエイト活動 A と B は同じ運用主体が実行した

実在の個人や組織は特定の身元(3.5)として、指示や資金を出す主体は特定の指示主体(3.6)として答える。帰属レベルの段は、これらに続かない。関連がどれだけ強くても、それだけでは身元も指示主体も答えられないためである(3.5、3.6)。

特定

特定は、素性、身元、指示主体に分けて答えます。それぞれを定める仕様の節は、次のとおりです。

仕様 3.4 素性

素性は、活動の背後にいる主体が、どこで働き、どの言語を使い、何を求めているかを表す。帰属対象が、二つの活動のあいだで何が同じかを表すのに対して、素性は、一つの活動モデルや主体モデルが持つ性質である。公開報告でよく見る「中国系」「パキスタンで活動している」といった判断は、素性についての判断である。

素性意味推す材料の例
location所在。主体が働く地域(生活圏)作業の時間帯、休日、接続元の国、運用の拠点のネットワーク
language言語背景。主体が使う言語書いた文章、マルウェアやツールの文字列、言語の設定
interest関心・目的。主体が求める情報や標的標的の選び方、収集の対象、実行を許す標的の条件

素性の項目は、TAEC と同じ三つである。TAEC の観測事例には、その事例で特定したもの(identifies)が付いており、素性はその location、language、interest にあたる。

素性は帰属レベルを持たない。何が同じかではなく、主体の性質を言うためである。

素性には、誰の素性かを添える。location と language は、開発、インフラ、運用の役割(3.3)のいずれかとし、観測から決められないときは「不明」とする。同じ活動でも、ツールを作った請負業者と、それを使う運用者とでは、所在や言語が違うことがあるためである。interest は、いつも目的の役割の素性である。

素性の観測は、特定と関連のどちらに使うかで強さが違う。素性(どこで働き、どの言語を使う主体か)を答えるときは、主な根拠になる。数か月分の作業時刻の分布や、運用者が書いた文章は、それだけで働く時間帯や使う言語を絞り込む。一方、関連(二つの活動が同じ主体か)を答えるときは弱い。同じ時間帯や言語の主体は多いためである。そのため、location と language の一致は、関連では weak までにとどめ(5.5 の規則 5)、食い違いは関連を疑う材料にする。

関連を調べるために二つのモデルの素性を比べるときは、誰の素性かに応じて、次の帰属対象の結果として扱う(6.4)。

素性と役割比べたときの帰属対象
location、language(運用)same-operator
location、language(開発)same-developer
location、language(インフラ)same-infrastructure
interest(目的)same-objective

仕様 3.5 身元

身元は、活動の背後にいる実在の個人や組織である。企業、軍や情報機関の部隊、犯罪組織、起訴された個人などがこれにあたる。身元は、二つの活動が同じかどうかではなく、主体が誰かそのものを答える。

身元には、誰の身元かを添える。開発、インフラ、運用の役割(3.3)のいずれかとし、観測から決められないときは「不明」とする。同じ活動でも、ツールを作った請負業者、インフラを提供した企業、侵入した運用者は、別の実在の主体であることがあるためである。

身元を示すのは、名義が実在の個人や組織のものと確かめられた記録だけである(4.2 の規則 9)。確かめる方法には、事業者の本人確認や登記の記録、司法文書、通信事業者の記録などがある。偽名や盗まれた名義、登録者がプライバシー保護で隠れた記録は、身元を示さない。偽名や盗まれた名義も、関連では、ほかの値と同じく記録の帰属対象と重みで比べる(3.2、6.5 の規則 7)。

二つのモデルが同じ実在の主体に届いたことは、それぞれの身元の答えが一致したときに、両方のモデルの身元の答えに書き添える(7 章)。身元の答えが同じ実在の主体を示したことは、比較の重みでは数えず、関連にもしない。名義の値そのものの一致は、これとは別に、記録の帰属対象と重みで比べる(6.5 の規則 7)。

仕様 3.6 指示主体

指示主体は、活動を指示し、資金を出し、統制する主体である。国家や、その機関がこれにあたる。

TAEF は、指示主体を測らない。権限のある機関の公式見解を、第三者の判断(4.4)として記録し、そのまま答えに書く。答えには、発行元、日付、公式見解が対象にした活動の範囲、公式見解が示した確信度の表現、根拠の公開の度合いを書く。公式見解が対象にした活動は比べる相手に入れ(2.1)、モデルとの関連を測る(6.4)。指示主体の答えには、公式見解とともに、モデルが対象にした活動を含むならそのことを、含まないなら対象にした活動との関連を測った結果を書く(7 章)。TAEF は、指示主体の答えに段階を付けず、独立した収集元も数えない。

技術的な観測や、関連、素性、身元の答えからは、指示主体を導かない。運用者の所在や身元が分かっても、その国家が指示したとは言えないためである。

例に使う事案

手順の説明では、三件の架空の諜報活動を最後まで例に使います。事案 A は自組織で対応した侵入、事案 B はベンダー X が報じた侵入で、レポートが示した検体の一部を入手できました。事案 C は、事案 A と同じバックドアを使いますが、ほかの点は違います。各手順の終わりに例の要点を載せ、記録や表を含む全体は例のページにまとめています。

00分析の範囲を決める

TAEF の問いはどの分析でも同じで、帰属する攻撃を誰がやったかを、関連と特定の二軸で問います。分析者は問いを選ばず、分析を始める前に、どの攻撃を帰属するかと、どの材料を使うかを決めます。どの資料を使うかは結論を左右するので、使わなかった資料も理由とともに残します。

やること

  1. 帰属する攻撃を書きます。問いは選びません。関連は比べる相手ごとに同じ運用主体か(L3)まで、特定は素性、身元、指示主体のすべてを問い、答えの出なかったものは答えられなかったこととして書きます。(2.1、3.1、7)
  2. 情報源を探した範囲を、比べる相手と、特定の材料(指示主体の公式見解、名義を確かめる記録など)のそれぞれについて、探した場所、期間、探し方で書きます。特定の材料を探したかが残らないと、指示主体や身元の「材料なし」が、探して見つからなかったのか、探していないのかが分かりません。(2.1、3.5、3.6)
  3. 探した範囲で見つかった活動とモデルを、すべて比べる相手にします。指示主体の公式見解を記録したときは、公式見解が対象にした活動も比べる相手に入れます。見つからなければ「なし」と書きます。転載などで比べないものは、使わなかった資料として理由を書きます。(2.1-2、3.6)
  4. 攻撃グループの名前から探すときは、その名前で各社が指している個々の活動を比べる相手にします。名前は答えの正解として扱いません。(2.1-3)
  5. 使った資料と、使わなかった資料とその理由を書き留めます。使わなかった資料に、使った資料と食い違う観測があれば、それも書き留めます。(2.1、2.1-5)
  6. 入手できない材料や使えない手段、調べないと決めたことを、前提と制約として書き留めます。問いの一部を外す代わりに、ここに書きます。答えられなかったことには、調べられないことは「材料なし」、調べないと決めたことは「調べていない」と書きます。(2.1-1、7)
  7. 範囲を変えるときは、理由を書いて版を改めます。結論を見てから範囲を狭めません。(2.1-4)

作るもの分析の範囲

分析ごとに一件作り、次の内容を書き留めます。

  • 帰属する攻撃。答えを求める活動
  • 比べる相手。探した範囲(ワーキングとコーパスの活動モデルと主体モデルを含む)で見つかった活動とモデルと、指示主体の公式見解が対象にした活動
  • 情報源を探した範囲。比べる相手と、特定の材料(指示主体の公式見解、名義を確かめる記録など)のそれぞれについて、探した場所、期間、探し方。コーパスを探したときは、コーパスの版(6.11)
  • 使った資料と、使わなかった資料。使わなかった理由(転載、範囲外、入手できないなど)
  • 前提と制約。入手できない検体やログ、使えない手段、調べないと決めたことなど

仕様 2.1 分析の範囲

例:事案 A、B、C

事案 A の対応の後、事案 A を帰属する攻撃にして、同じバックドアを使う活動を探しました。見つかった事案 B と事案 C を比べる相手にし、使った資料と、使わなかった資料とその理由も書き留めました。

例の続きを見る

この手順の規則(仕様 2.1)

仕様 2.1 分析の範囲

TAEF の問いは、どの分析でも同じであり、分析者は選ばない。帰属する攻撃を誰がやったかを、関連と特定の二軸で問う(1 章、3 章)。関連は、比べる相手ごとに、同じ運用主体か(L3)までの細かさで、何が同じかを問う(3.1、3.2)。特定は、素性(location、language、interest)、身元、指示主体のすべてを問う(3.4〜3.6)。答えの出なかったものも、答えられなかったこととして理由とともに書く(7 章)。問いを分析ごとに選ばないのは、問いから外したものは答えられなかったことにも残らず、答えにくいものを初めから外しても、後から気づけないためである。答えの形が分析ごとに変わると、同じ物差しで測った結果として比べることもできなくなる(1.1)。答えをどこに使うか(検知、通知、公表)は、TAEF では決めない(1 章)。

分析者は、分析を始める前に、分析の範囲を決める。どの資料を使うかは結論を左右するので、使わなかった資料も含めて残し、後から検証できるようにする。

  1. 問いの一部を、分析ごとに外さない。調べられないことや、調べないと決めたことは、前提と制約に書く。答えられなかったこと(7 章)には、調べられないことは材料なし、調べないと決めたことは調べていない、として書く。
  2. 比べる相手は、探した範囲で見つかった活動とモデルのすべてとする。指示主体の公式見解(3.6)を記録したときは、公式見解が対象にした活動も比べる相手に入れる。見つからなければ「なし」とする。転載などで比べないものは、使わなかった資料として理由を書く。
  3. 既知の攻撃グループの名前を、答えの正解として扱わない。名前から探すときは、その名前で各社が指している個々の活動を比べる相手にし、名前は外部の呼び名(6.9)として扱う。
  4. 範囲を変えるときは、理由を書き、版を改める(8 章)。結論を見てから、都合のよい資料だけに範囲を狭めない。
  5. 使わなかった資料に、使った資料と食い違う観測があるときは、使わなかった理由にかかわらず書き留める。

01エビデンスを記録する

観測した事実を、TAEC のエビデンス型と結び付けて残します。あとで独立性を判断し、独立した収集元を数えられるように、どこから得た観測かも一緒に書き留めます。関連を測るときに使う重みと、特定の段階も、このときに付けます。

やること

  1. 観測ごとに、当てはまる TAEC のエビデンス型を選びます。型の定義と注意点は、各エビデンスのページで確かめます。当てはまる型がなければ、最も近い型で記録し、型の候補として書き留めます。(4.1、4.2-7)
  2. 自分で確かめた観測か、第三者の報告をそのまま使うのかを、記述の種類で区別します。分析上の仮定(assumed)は、比較と、特定の段階と数には使わず、分析の範囲の前提と制約に書きます。(4.1、4.2-1、4.2-12)
  3. 観測された値か、調査元の分類(ファミリーの名前など)かを、中身で区別します。(4.1、4.2-8)
  4. レポートにある帰属や類似の評価は、観測と分けて、第三者の判断として書き留めます。(4.2-6、4.4)
  5. 転載や再解析をさかのぼって、最上流の収集元を、調査元と調査の組で書き留めます。(4.1、4.2-3)
  6. 同じ検体、同じレポート、同じセッションから得た観測は、同じ依存グループにまとめます。同じ検体を別々の調査元が解析した観測も、同じ依存グループに入れます。独立した収集元を数えるときは、同じ依存グループの記録を、調査元が違っても一つと数えます。(4.1、4.2-3)
  7. つなぐ効き方として、記録が届く帰属対象ごとに、一致したときと食い違ったときの重みを、その記録の中身から決め、理由を書き留めます(下の「重みの付け方」)。(5.2、5.4、5.5-1)
  8. 重みは、比べる相手や比較の結果を見てから変えません。(5.5-2)
  9. 特定する効き方として、観測から主体の素性(所在、言語、関心)を推せるときは、推した素性として、項目、読んだ値、仮定、誰の素性かを書きます。読んだ値は観測と分け、観測が支える細かさにとどめます。誰の素性かを決められなければ「不明」とします。(4.1、4.2-10、4.2-11)
  10. 観測が名義(氏名、組織名、支払い元など)を示すときは、示した身元として、名義、誰の身元か、実在の個人や組織のものと確かめたか、確かめた方法を書きます。確かめていない名義は、身元にはなりません。(4.1、4.2-9、3.5)
  11. 推した素性と示した身元には、その値をどれだけ強く推すかの特定の段階を、関連の重みと同じ三つの材料から決め、理由を書き留めます(下の「特定の段階の付け方」)。示した身元に段階を付けるのは、名義を実在と確かめた記録だけです。(5.6、5.6-1、5.6-4)

重みの付け方

重みは、記録を作るときに、記録ごとに付けます。同じ型、同じ観測項目でも、記録された中身によって、偽装のしやすさや共有されやすさが変わるためです。記録ごとに、次の順で決めます。

重みの付け方TAEC の型の変更コスト、説明、注意点を出発点に、記録の中身の偽装の手間、共有されやすさ、変えやすさを見て、記録ごとに帰属対象ごとの段階と理由を書く。比較では、二つの記録の重みの低いほうを使う。記録ごと比べる組ごとTAEC の型出発点変更コスト、説明、注意点記録の中身偽装の手間、共有されやすさ変えやすさエビデンス記録帰属対象ごとの段階と理由比較二つの記録の低いほうを使う
重みは記録ごとに、TAEC の型の性質を出発点にして、記録の中身を見て決める。比較では、二つの記録の低いほうを使う。
  1. TAEC の型に付いた帰属対象のうち、記録の中身から届かないものは外します。届くかは、観測事例に付いた帰属対象も参考にして判断します。型に付いていない帰属対象は足しません。ただし、推した素性を持つ記録には、誰の素性かに応じて、比べたときに入る帰属対象にも重みを付けます。誰の素性かが「不明」なら付けません。(5.2、3.4)
  2. 届く帰属対象ごとに、TAEC のエビデンスのページで、型の説明、アンチアトリビューション、変更コスト(cost_to_change)を読み、その型の典型的な観測の段階を出発点に置きます。食い違ったときは、変更コストから初期値を入れます。(5.4)
  3. 記録の中身を見て、偽装の手間、共有されやすさ、変えやすさが、その型の典型と違えば上げ下げします。(5.1、5.4)
  4. 一致したときは「この一致だけで、その帰属対象を同じと読んでよいか」で medium 以上か weak かを決め、偽装も共有もしにくいものを strong にします。食い違ったときは「この食い違いを、別である材料として数えるか」で確かめます。(5.2、5.4)
  5. 帰属対象ごとに段階と理由を書きます。理由には記録の中身をどう見たかを書き、ほかのモデルの記録と同じかどうかは書きません。(5.2、5.5-1)

仕様 5.2 記録の重み

重みの段階は、次の意味で使う。

段階一致したとき食い違ったとき
strong偽装も共有もしにくく、一致すれば、その帰属対象が同じことを強く示す本人にも変えにくく、違えば、その帰属対象が別であることを強く示す
medium一致すれば同じことを示すが、偽装や共有でも起こりうる違えば別であることを示すが、時期や環境で変わることがある
weak偽装や共有で起こりやすく、これだけでは同じと言えない時期や環境で変わりやすく、これだけでは別と言えない
not_used使わない本人が簡単に変えられるので、違っても数えない

段階は、関連の候補を読むとき(6.6)に次のように効く。一致は、medium 以上があればその帰属対象を一致と読み、weak だけなら弱い一致にとどまる。食い違いは、weak 以上なら数え、not_used なら数えない。一致と食い違いが並ぶときは、重いほうで読む。

特定の段階の付け方

推した素性と示した身元には、その値をどれだけ強く推すかの段階を一つ付けます。材料は関連の重みと同じ三つで、特定に当てはめて読みます。比べる相手がないので、一致したときと食い違ったときには分けません。

仕様 5.6 特定の段階

  • 偽装の手間:他者がその値を植え付けたり、なりすましたりする手間。低いほど、意図して偽った値でありうる。
  • 共有されやすさ:その値が、別の者のものでありうるか。ツールを作った請負業者、インフラの貸し手、VPN の出口、名義の貸し手などのものでありうるほど高い。
  • 変えやすさ:本人がその値を簡単に変えられるか。変えやすい値は、本人の性質ではなく、そのときの選択や設定にすぎないことがある。TAEC の cost_to_change が、型としての目安になる。
段階意味
strong偽装しにくく、別の者のものである見込みも低く、本人にも変えにくい。これだけで、その値を強く推す
mediumその値を推すが、偽装、別の者の痕跡、本人のその場の選択でも起こりうる
weak偽装、別の者の痕跡、本人のその場の選択で起こりやすく、これだけでは推せない

作るものエビデンス記録

観測一件につき一件作り、次の内容を書き留めます。

  • ID:記録を参照するための ID
  • エビデンス型:TAEC のエビデンス ID(例:COD-005)
  • 観測:そのケースで観測した内容
  • 記述の種類:observed(直接確認した)、derived(記録した処理で導出した)、reported(第三者の技術的な観測で、自分では確かめていない)、assumed(分析上の仮定)のいずれか。reported にできるのは、値、手順、検体の識別子など、他者が確かめられる形で書かれた観測に限る
  • 有効期間:観測された事象が起きた期間と、その精度
  • 中身:value(値、手順、ファイル名、文字列、検体の識別子など、観測された値)か、classification(ファミリーの名前、コードの類似など、調査元の分類や解析の判断)のいずれか
  • 収集元:転載や再解析をさかのぼった、最上流の収集元。調査元(観測を解析して報告した組織、つまりセンサーと分析者の系統)と、その調査(一回の侵害調査や検体の解析)の組で書き留める
  • 依存グループ:同じ検体、レポート、セッションなど、同じ出所から得た観測のまとまり。同じ検体やログを別々の調査元が解析した観測も、同じ依存グループに入れる
  • 重み(つなぐ効き方):記録が届く帰属対象ごとの、一致したときと食い違ったときの重み(5.2)
  • 推した素性(特定する効き方):観測から推した主体の素性(3.4)。素性の項目、読んだ値(UTC+8、ロシア語など)、読みの前提にした仮定(勤務を 8 時から 17 時とみる、など)、誰の素性か(開発、インフラ、運用、不明。interest は目的)、特定の段階とその理由(5.6)を書く。素性を推さない記録には書かない
  • 示した身元(特定する効き方):観測が示した名義(氏名、組織名、支払い元、証明書の発行先など)、誰の身元か(開発、インフラ、運用、不明)、実在の個人や組織のものと確かめたか、確かめた方法(3.5)、特定の段階とその理由(5.6)。名義を示さない記録には書かない
  • 不在の種類:該当なし、not_observed(観測されなかった)、observed_absent(十分な観測機会のもとで、存在しないと確認した)のいずれか

仕様 4.1 書き留める内容

例:事案 A、B、C

三つの事案から 25 件の記録を作り、出所ごとに依存グループにまとめました。事案 B は、ベンダー X のレポートと、入手した検体の解析から記録を作っています。どの記録にも、届く帰属対象ごとの重みと理由を付けました。5 件には、特定する効き方として推した素性(言語と関心)と、その特定の段階も書いています。名義を示す記録はありませんでした。ベンダー X が書いた帰属の評価は、記録にせず第三者の判断として残しています。

例の続きを見る

この手順の規則(仕様 4.2、4.3、4.4、5)

仕様 4.2 規則

  1. reported の記録を observed に書き換えない。自分で確かめたら、新しい記録を作る。
  2. 一つの観測を複数のエビデンス型に登録するときは、すべてを同じ依存グループに入れる。
  3. 独立性は、収集元、被害環境、センサー、因果の系列で判断する。URL、発行元、記録の件数では判断しない。独立性を数える単位は、value の記録では調査、classification の記録では調査元とする。分類の誤りは、同じ調査元の調査をまたいで同じように起きるためである。ただし、同じ依存グループの記録は、調査や調査元が違っても一つと数える。同じ検体を別々に解析しても、検体の取り違えや植え付けられた痕跡は、どの解析にも同じように及ぶためである。
  4. 重みと特定の段階は、記録を作るときに、その記録の中身から付ける(5 章)。比べる相手を見てから変えない。
  5. observed_absent とするのは、観測の機会と検出の能力がどちらも十分だった場合に限る。
  6. 帰属や類似についての第三者の評価は、エビデンス記録にしない。4.4 の第三者の判断として記録する。
  7. 当てはまる TAEC のエビデンス型がないときは、最も近い型で記録し、型の候補として書き留める。記録が、型に付いていない帰属対象に届くと考えたときも、帰属対象の候補として書き留める。候補はカタログに戻し、型や帰属対象を追加するかを決める。
  8. classification を reported の記録にするのは、分類した検体の識別子(ハッシュなど)が示され、他者が分類を確かめられる場合に限る。識別子が示されていなければ、4.4 の第三者の判断として記録する。
  9. 名義(氏名、組織名、支払い元、証明書の発行先など)を示した身元として記録するときは、実在の個人や組織のものと確かめたかと、確かめた方法(事業者の本人確認、司法文書、通信事業者の記録など)を書き留める。確かめていない名義は、身元の答えには使わない(3.5)。身元の情報は、分析に要る範囲だけを記録する。
  10. 推した素性の読んだ値は、観測ではなく、分析者の読みである。観測には読む前の値(時刻、文字列、接続元の事業者など)を書き、読んだ値と仮定は推した素性に書く。誰の素性かを観測から決められないときは「不明」とし、推測で役割を当てない。
  11. 読んだ値は、観測が支える細かさにとどめる。たとえば、時刻の分布から読めるのは時間帯までで、国までは読めない。同じ時間帯に複数の国や地域があるためである。
  12. assumed の記録は観測ではないので、比較の結果と、特定の段階と独立した収集元の数には使わない。分析の前提として、分析の範囲の前提と制約(2.1)に書く。

仕様 4.3 カタログの記述と観測の区別

TAEC の記述は、エビデンス型の一般的な説明であり、ケースの観測ではない。そのため、次の値はケースの記録へ移さない。

TAEC の値移さない先理由
reference_ids収集元型の定義を支える文献であり、そのケースの観測の出所ではない
観測事例、anti_attributionエビデンス記録、比較別の事件で起きたことであり、このケースで起きたことではない
帰属対象関連の答え重みと関連の型を組み立てる軸であり、このケースで何が同じかは、比較で測る
観測事例の帰属対象と特定(attribution_scopes、identifies)記録の重み、推した素性、示した身元別の事件で届いた先である。このケースの記録が届く先は、記録の中身から決める(5.2)
事例に出てくる攻撃者名活動モデルの名前、正解ラベル他者の判断であり、このケースでは検証していない

仕様 4.4 第三者の判断

公開レポートや政府機関の発表には、観測と並んで、帰属や類似についての評価が書かれている。「この活動は APT10 によるものとみられる」「二つのマルウェアの作法は似ている」のような記述である。第三者の判断は、こうした評価を、観測とは分けて記録するものである。

第三者の判断には、誰が、いつ、関連と特定のどれについて何を判断したか、確信度をどう表現したか、示した根拠と参照先、その根拠を確かめたかを書き留める。何を判断したかは、関連と特定のどれについてかと、その中身(関連なら帰属対象や同じとした活動、特定なら値)で書く。「同じグループによる」は関連、「中国系」は素性、起訴状が名指す個人や企業は身元、政府の公式な帰属は指示主体についての判断である。

  1. 第三者の判断は、エビデンス記録にせず、比較の結果にも、特定の段階と独立した収集元の数にも使わない。
  2. 第三者の判断は、根拠になった観測を探す手がかりに使う。根拠の観測が他者の確かめられる形で書かれていれば、それを reported のエビデンス記録にする。
  3. 複数の第三者の判断が一致しても、独立した収集元の数には入れない。数えるのは、根拠の観測をエビデンス記録にしたものだけで、その収集元が互いに独立している場合に限る。
  4. 政府機関などの公式見解は、第三者の判断として記録する。指示主体は、この記録だけで答える(3.6)。

仕様 5 重みと特定の段階

重みは、比較で使う、エビデンス記録のつなぐ効き方の強さである。重みは記録ごとに、その記録が届く帰属対象ごとに、一致したときと食い違ったときの二つを付ける。記録を作るときに付けるので、重みは比べる前に決まり、記録とともに活動モデルに残る。示した身元には重みを付けず、推した素性には、関連を調べるために比べるときの帰属対象(3.4)についてだけ重みを付ける。特定する効き方の強さは、重みとは別に、特定の段階として推した素性と示した身元に付ける(5.6)。

重みは記録ごとに、記録された中身を見て決める。同じエビデンス型、同じ観測項目でも、中身によって偽装のしやすさや共有されやすさが変わるためである。たとえば PDB パスでも、固有のユーザー名やプロジェクト名が残るものと、汎用的なフォルダー名だけのものとでは、一致したときの意味が違う。TAEF は重みの値を定めず、決め方と記録の仕方を定める。TAEC も重みを持たない。

記録の中身から読み取れること(固有の名前が残るか、公開されているツールの既定のままか、など)は重みに使う。一方、その値がほかでどれだけ見つかるかを調べた珍しさは、重みに使わない。値が珍しいと言うには、調べた範囲を示さなければならず、記録のたびにその調査を求めるのは負担が大きいためである。ありふれた値の一致を重く数えると、測った結果は実際より強く出る。そのため、記録の中身からありふれていると分かる値(公開されている攻撃フレームワークの既定のままの書式、多くのマルウェアに共通の接続確認の宛先など)は、一致したときの重みを下げる(5.4)。

仕様 5.1 判断の材料

記録の重みは、記録された中身について、次の三つを見て決める。

  • 偽装の手間:他者がその特徴を真似したり、植え付けたりする手間。低いほど偽装しやすい。
  • 共有されやすさ:その特徴が他の主体と共有されやすいか。市販のツール、流出したビルダー、共有ホスティング、公開されている手順書などで高くなる。
  • 変えやすさ:本人がその特徴を変える手間。TAEC の cost_to_change が、型としての目安になる。

偽装の手間と共有されやすさは、一致したときの重みに効き、変えやすさは、食い違ったときの重みに効く2。TAEC の spoofability は真偽値で、今はすべての型が true である。これでは型や記録の違いを表せないので、TAEF は記録の中身から偽装の手間を見る。

仕様 5.2 記録の重み

エビデンス記録には、その記録が届く帰属対象ごとに、次を書き留める。

  • 一致したときの重み:strong、medium、weak のいずれか
  • 食い違ったときの重み:strong、medium、weak、not_used のいずれか
  • 理由:記録の中身について、偽装の手間、共有されやすさ、変えやすさをどう見たか

届く帰属対象は、TAEC がその型に付けた帰属対象(5.3 の読み替えの後)のうち、その観測が届くものである。TAEC の観測事例に付いた帰属対象と特定(3.2、3.4)は、届くかを判断するときの参考にする。観測の中身から届かないと分かる帰属対象は、外す。たとえば、公開されている攻撃フレームワークの既定のままの C2 通信の書式は、same-developer には届かない。推した素性(4.1)を持つ記録は、誰の素性かに応じて、比べたときに入る帰属対象(3.4)にも重みを付ける。誰の素性かが「不明」の素性には付けない。それ以外に、TAEC がその型に付けていない帰属対象は足さない。足すべきだと考えたときは、4.2 の規則 7 のとおり、帰属対象の候補として書き留める。same-artifact だけに届く記録には、重みを付けない(6.4)。たとえば、公開されている正規のツールと同じハッシュのファイルは、同じファイルであることしか示さず、same-tool-lineage には届かない。same-artifact の一致は、比較の結果に記録するが、関連の型の読み取りには使わない。示した身元には、重みを付けない(3.5)。

同じ記録でも、帰属対象によって重みは変わる。たとえば PDB パスは、ツールの系譜には強く効く一方で、開発者が同じかどうかには、それより弱く効くことがある。

仕様 5.3 帰属対象の読み替え

TAEC の型単位の帰属対象は、2026-11-01 までに、すべての型で、観測事例が届いた帰属対象をもとに 3.2 の語彙へ付け直した。観測事例の帰属対象も 3.2 の語彙で付けているので、今の TAEC を読むときは、読み替えは要らない。付け直しの前の TAEC を読むときは、型の旧い値を次のように読み替えて、記録が届く帰属対象を決める。

TAEC の旧い値読み方
same-operation運用側が決める手順、設定値、ツールの選び方を表す型(OPS の型、埋め込みの C2 設定など)では same-tradecraft と読む。標的を表す型(VIC)では same-objective と読む。どちらにも当たらない型(版の進み方、関数の一致、作業者の端末の環境など)では、届く帰属対象にしない
same-campaign届く帰属対象にしない。キャンペーンは活動モデルの呼び名であり、帰属対象ではないため
そのほかの値そのまま使う

same-artifact しか残らない型には、重みを付けない。その一致は、比較の結果に記録するが、関連の型の読み取りには使わない(6.4)。型単位の帰属対象が空の型(素性だけを推す型など)は、型ごとの特徴では比べず、推した素性があればそれだけで比べる(6.4)。

仕様 5.4 重みの決め方

重みは人が決め、理由を記録する。計算式では決めない。同じ型でも、記録の中身によって偽装の手間や共有されやすさが変わり、型ごとの値からは決められないためである。

出発点には、TAEC の型の性質を使う。一致したときの重みは、型の説明とアンチアトリビューションから、その型の典型的な観測が偽装や共有でどれだけ起こりうるかを見て置く。食い違ったときの重みには、TAEC の cost_to_change から初期値を入れる。

cost_to_change食い違ったときの重みの初期値
lownot_used
mediumweak
highmedium

そのうえで、記録の中身がその型の典型と違えば、上げ下げする。たとえば、PDB パスに固有のユーザー名やプロジェクト名が残っていれば、一致したときの重みを上げる。C2 通信の書式が、公開されている攻撃フレームワークの既定のままなら、一致したときの重みを下げる。IP アドレスが匿名化 VPN の出口だと分かっていれば、same-infrastructure の一致したときの重みを下げる。

段階に迷ったときは、5.2 の効き方から決める。一致したときの重みは、「この一致だけで、その帰属対象を同じと読んでよいか」で、medium 以上か weak かを決める。そのうえで、偽装も共有もしにくいものを strong にする。食い違ったときの重みは、「この食い違いを、その帰属対象が別である材料として数えるか」で、weak 以上か not_used かを決める。

2 cost_to_change は、攻撃者が自分の特徴を変える手間を表し、Pyramid of Pain と同じ考え方に立つ。偽装の手間は、他者がその特徴を真似る手間を表す。二つは連動することが多いが、ずれる場合がある。自分のファイルのハッシュは 1 バイト変えるだけで変わる一方、他者のファイルと同じハッシュは作れない。そのため TAEF は二つを別々に扱い、変えやすさを食い違いの重みに、偽装の手間を一致の重みに使う。 ↩

仕様 5.5 記録への付け方

  1. 重みは記録を作るときに付け、理由を書き留める。理由には、その記録の中身をどう見たかを書く。ほかのモデルの記録と同じかどうかは、理由にしない。
  2. 記録の重みは、比べる相手や比較の結果を見てから変えない。見直すときは記録の版を改め(8 章)、その記録を使った比較をやり直す。
  3. classification の記録は、分類の基準(コードの比較、YARA ルールなど)が示されていなければ、一致したときの重みを一段下げる。名前が同じでも、同じ基準で分類したとは限らず、後から報告する調査元は先に報告した調査元の名前を採ることが多いためである。
  4. 同じ分析の中で、同じ型の似た中身の記録には、同じ段階を付けることを推奨する。段階を変えるときは、中身の違いを理由に書く。
  5. 推した素性のうち location と language は、一致したときの重みを weak までにする。同じ時間帯や言語の主体は多く、素性が合っても、同じ主体だとは言えないためである。食い違ったときの重みは、ほかの記録と同じく記録の中身から決める。interest の一致には上限を置かない。標的や求める情報は、主体ごとに違いが出やすいためである。これは関連を調べるときの重みであり、素性を推す強さ(特定の段階、5.6)を下げるものではない。

重みを一段下げるとは、strong を medium、medium を weak にし、weak は数えないことをいう。

仕様 5.6 特定の段階

特定の段階は、推した素性と示した身元(4.1)が、その値をどれだけ強く推すかの段階である。重みが一致したときと食い違ったときの二つを持つのに対して、特定の段階は一つである。特定には、比べる相手がないためである。重みと同じく、記録を作るときに、記録の中身から付ける。

段階は、5.1 の三つの材料を、特定に当てはめて決める。

  • 偽装の手間:他者がその値を植え付けたり、なりすましたりする手間。低いほど、意図して偽った値でありうる。
  • 共有されやすさ:その値が、別の者のものでありうるか。ツールを作った請負業者、インフラの貸し手、VPN の出口、名義の貸し手などのものでありうるほど高い。
  • 変えやすさ:本人がその値を簡単に変えられるか。変えやすい値は、本人の性質ではなく、そのときの選択や設定にすぎないことがある。TAEC の cost_to_change が、型としての目安になる。
段階意味
strong偽装しにくく、別の者のものである見込みも低く、本人にも変えにくい。これだけで、その値を強く推す
mediumその値を推すが、偽装、別の者の痕跡、本人のその場の選択でも起こりうる
weak偽装、別の者の痕跡、本人のその場の選択で起こりやすく、これだけでは推せない
  1. 特定の段階は、推した素性と示した身元ごとに付け、理由を書き留める。理由には、三つの材料について記録の中身をどう見たかを書く。
  2. 出発点には、5.4 と同じく、TAEC の型の説明とアンチアトリビューションを使う。そのうえで、記録の中身がその型の典型と違えば上げ下げする。たとえば、数か月分の作業時刻の分布は、一日分の時刻より偽装の手間が高い。
  3. 段階は、ほかのモデルの答えや第三者の判断を見てから変えない。見直すときは記録の版を改める(8 章)。
  4. 示した身元に段階を付けるのは、名義を実在と確かめた記録だけである(3.5、4.2 の規則 9)。事業者の契約や支払いの記録のように、名義と活動を直接結び付ける方法で確かめたものほど、偽装の手間は高く、共有されやすさは低い。
  5. 特定の段階は、関連の重みとは別に付ける。同じ記録でも、所在を推すときには strong になりうる一方、関連を調べるときの location の一致の重みは weak までである(5.5 の規則 5)。
  6. 指示主体には段階を付けない。権限のある機関の公式見解を、その表現のまま記録する(3.6)。

02活動モデルを作り、特定を測る

確実に一つの活動と言える最小のまとまり(種)から、活動モデルを作ります。そのうえで、記録が推した素性と示した身元を、モデルの特定に、値ごとに段階と独立した収集元の数でまとめて、特定を測ります。特定を測るのに比較は要りません。範囲を最初に決める必要はなく、手順 04 で統合と分割を重ねて、モデルを育てます。

やること

  1. 種を決めます。一つの被害環境での一回の侵入か、同じファイルでつながる観測のまとまりです。公開レポートを使うときは、レポートの範囲で扱いを変えます。(6.2)
  2. モデルに中立な ID(例:UTA-2026-0042)を付けます。既知の攻撃グループの名前は付けません。(6.1)
  3. 活動の期間を書き留めます。長く続く活動は、期間で区切って別のモデルにします。(6.3-3)
  4. 範囲を誰が判断したか(自分たちか、レポートの発行元か)を書き留めます。(6.1、6.2)
  5. 何を材料にしたかと、調べていないことが分かっている範囲を、調べた範囲として書き留めます。(6.1)
  6. 関連と特定の欄を設け、特定を測ります。記録に書いた推した素性を、特定の素性に、素性の項目と誰の素性かごとに、読んだ値ごとにまとめます。細かさの違う値(UTC+8 と中国など)は、一つにまとめず、値ごとに書きます。値ごとに、支える記録(読んだ値がその値と同じか、その値に含まれる記録)と、食い違う記録(両立しない記録)のそれぞれについて、段階ごとの独立した収集元の数を添えます。示した身元のうち実在と確かめたものは、特定の身元に、誰の身元かごとにまとめ、同じように数を添えます。関連は、手順 03 と 04 で測ります。(6.1、7、7-8)

作るもの活動モデル

種一つにつき一件作り、次の内容を書き留めます。

  • 中立な ID
  • 種の種類(一回の侵入、同じファイルでつながる観測、公開レポートのいずれか)
  • 何の活動かの概要
  • 期間
  • 含まれるエビデンス記録
  • 範囲を誰が判断したか(分析者自身か、レポートの発行元か)
  • merge と split の履歴
  • 属する主体モデル(6.8)。束ねられていなければ、なし
  • 外部の呼び名(6.9)
  • 調べた範囲。何を材料にしたか(検体、ログ、通信の記録、レポートなど)と、調べていないことが分かっている範囲(検体を入手していない、作業者の端末は調べていない、など)
  • 関連(7 章)。ほかのモデルと何が同じかを、相手のモデルごとに、関連の型と、帰属対象ごとの測った結果(段階ごとの独立した収集元の数)で書く。統合も束ねもしなかったモデルとの関連も、ここに書く
  • 特定(7 章)。素性、身元、指示主体の答えを書く。素性と身元は、記録が推した素性と示した身元を、値ごとに段階と独立した収集元の数でまとめる
  • 答えられなかったこと(7 章)。関連と特定のうち、答えられなかったものと、その理由

仕様 6.1 活動モデル

例:事案 A、B、C

事案 A は一回の侵入を、事案 B と事案 C は公開レポートを種にして、三つの活動モデルを作りました。ベンダーが付けた攻撃グループの名前は使わず、中立な ID にしています。記録が推した言語と関心は、モデルの特定に、段階と数でまとめました。名義を示す記録はないので、身元にまとめるものはありません。

例の続きを見る

この手順の規則(仕様 6.1、6.2)

仕様 6.1 活動モデル

活動モデルは、L2 の活動のまとまりを、期間を区切って表したものである。モデルは、そこに含まれるエビデンス記録の集まりとして表す。名前には中立な ID(例:UTA-2026-0042)を使う。既知の攻撃者名や作戦名は、ID にはせず、外部の呼び名(6.9)として書き留める。

活動モデルを人に示すときは、含まれるエビデンス記録を、役割(3.3)ごとにまとめて示すことを推奨する。どの役割の痕跡がどれだけあり、どの役割の痕跡がないかが、一目で分かるためである。複数の役割にかかる記録は、それぞれの役割に載せる。役割を持たない記録(same-artifact だけに届く記録)は、別にまとめる。

統合を重ねて育った活動モデルを、TAEF ではキャンペーンと呼ぶ。キャンペーンは個々のエビデンスの帰属対象ではなく、活動モデルの呼び名である。

L3 の運用主体は、活動モデルを束ねた主体モデル(6.8)として表す。どのモデルを束ねるかは、比較を読んだ関連の型で決める(6.6、6.8)。

仕様 6.2 種の作り方

活動モデルは、L2 の範囲を最初に決めて作るのではない。確実に一つの活動と言える最小のまとまり(種)から始め、統合と分割で育てる。L2 の範囲は分析の前提ではなく、この繰り返しの結果として決まる。こうすると、L2 のモデルを比べる前に L2 を決めておかなければならない、という順序の問題が生じない。

種にするのは次のまとまりである。

  • 一つの被害環境での一回の侵入で、侵入から横展開までが因果でつながっている観測
  • 同じファイルやデータ(same-artifact)でつながる観測

公開レポートは、扱う範囲の大きさによって扱いを分ける。

レポートの範囲例扱い
一件のインシデント特定の組織での侵害調査そのまま種にする
キャンペーン特定の業種を狙った一連の攻撃原則としてレポート一本を一つの種にし、そのまとめ方を第三者の判断(4.4)として記録する。被害組織ごとの観測が分けて書かれていれば、組織ごとに種にする
アクター全体ある攻撃グループの数年分の活動種にしない。束ね方を第三者の判断(4.4)として記録し、キャンペーンごとの記述を取り出してそれぞれ種にする

キャンペーン規模のレポートを分けずに一つの種にするのは、被害組織ごとの詳細が書かれていないことが多く、分けたくても分けられないためである。まとめ方を第三者の判断として記録しておけば、後で矛盾が見つかったときに分割できる。

同じ活動を報じた複数のレポートは、元の観測が同じことが多い(転載、共有された検体など)。収集元と依存グループをたどり、レポートの数だけ独立した種として数えない。

03比較して、関連を測る

二つの活動モデルを帰属対象ごとに比べ、関連を、一致と食い違いの段階と独立した収集元の数で測ります。重みは、手順 01 で記録に付けたものを使います。比べる相手(手順 00)がなければ、この手順と手順 04 は飛ばします。

やること

  1. 同じエビデンス型の記録どうしを、帰属対象ごとに比べます。型の違う記録は比べません(推した素性は次の項目)。主体モデルと比べるときは、束ねた活動モデルの一つひとつと比べて結果を並べ、記録を寄せ集めて比べません。(6.4)
  2. 推した素性は、型をまたいで、素性の項目と誰の素性かが同じものどうしで比べます。読んだ値が両立すれば match、両立しなければ mismatch とし、誰の素性かに応じた帰属対象の結果に入れます。誰の素性かが不明の値は比べません。location と language の一致は weak までです。期間が近いときだけ数える規則(6.5 の規則 3)は、素性の比較には当てません。推した素性を持つ記録も型ごとの特徴で比べ、一つの記録から両方の結果が出たときは、重いほうを一つだけ数えます。(6.4、3.4、5.5-5、6.5-1)
  3. 両方にあれば、特徴が同じなら match、違えば mismatch とします。片方か両方に観測がなければ no_data で、mismatch としては扱いません。no_data には、片方で調べていない(not_examined)か、調べたが観測がない(not_observed)かを添えます。(6.4)
  4. 一致したときと食い違ったときで、記録の重みは別々です。二つの記録で重みが違えば、低いほうを使います。(6.4、6.5-4)
  5. match と mismatch には、重みの段階ごとに、独立した収集元の数を添えます。その段階の結果を支える記録の収集元を、二つのモデルの側ごとに数え、少ないほうを数にします。同じ依存グループの記録は、調査元が違っても一つと数えます。段階の違う結果は、一つの段階と数にまとめません。両側を別々の調査が報告していても、それだけでは 2 になりません。(6.4、4.2-3)
  6. 比較の規則に当たる観測を除くか、重みを下げ、当てはめた規則を書き留めます。名義の一致も、確かめたかどうかにかかわらず、ほかの値と同じく記録の帰属対象と重みで数えます。比較で数えないのは、二つのモデルの身元の答えが同じ実在の主体を示したことだけです。(6.5、6.5-7、3.5)

作るもの比較結果

比べる二つのモデルの組ごとに一件作り、次の内容を書き留めます。

  • 比べた二つのモデル
  • 帰属対象ごとの結果と、重みの段階ごとの独立した収集元の数
  • no_data の理由(not_examined か not_observed)
  • それぞれの結果で比べたエビデンス記録の組
  • 6.5 の規則で除いた観測や重みを下げた観測と、当てはめた規則

仕様 6.4 比較の結果

例:事案 A、B、C

A と B は、C2 通信の書式、PDB パス、手順、ドメインの登録、関心が一致し、運用者は材料なしでした。A と C は、C2 通信の書式は一致しましたが、手順と標的は食い違いました。運用者の端末のキーボードレイアウトも違いましたが、本人が簡単に変えられる設定なので、言語の食い違いとしては数えていません。事案 A の側は一回の侵害調査なので、独立した収集元の数はどれも 1 です。

例の続きを見る

この手順の規則(仕様 6.4、6.5、6.7)

仕様 6.4 比較の結果

比較は、二つの活動モデルについて、同じエビデンス型の記録どうしで行う。型が違えば、観測の中身も重みの付け方も違い、一致したかどうかを決められないためである。主体モデルと比べるときは、束ねた活動モデルの一つひとつと比べ、結果を活動モデルごとに並べる。束ねた活動モデルの記録を寄せ集めて、一つのモデルとして比べない。寄せ集めると、期間の違う特徴を同じ重さで比べることになり(6.3 の規則 3)、6.5 の規則 3 と規則 6 も当てられないためである。

推した素性(4.1)は、これに加えて、エビデンス型をまたいで、素性の項目と誰の素性かが同じものどうしでも比べる。記録が、観測を同じ尺度の値(時間帯、言語、関心)に読み替えているので、型が違っても比べられるためである。読んだ値が両立すれば match、両立しなければ mismatch とし、誰の素性かに応じた帰属対象(3.4)の結果に入れる。たとえば、一方のモデルの作業時刻から読んだ UTC+8 と、もう一方のモデルの接続元の事業者から読んだ中国は、両立するので match とする。誰の素性かが「不明」の値は比べない。推した素性を持つ記録も、型ごとの特徴では、ほかの記録と同じく比べる。一つの記録から、型ごとの特徴と素性の両方で同じ帰属対象の結果が出たときは、同じ依存グループの結果なので、6.5 の規則 1 のとおり、重いほうを一つだけ数える。6.5 の規則 3 は、素性の比較には当てない。比べるのは観測から読んだ主体の性質で、再割り当てされる IP やドメインのような値そのものではないためである。location と language の一致の重みは、weak までに抑えてある(5.5 の規則 5)。比較は、帰属対象ごとに次のいずれかの結果を出す。

  • match:両方のモデルに観測があり、特徴が同じである。一致したときの重みを添える。二つの記録で重みが違えば、低いほうを使う(6.5 の規則 4)。
  • mismatch:両方のモデルに観測があり、特徴が違う。食い違ったときの重みを添える。二つの記録で重みが違えば、低いほうを使う(6.5 の規則 4)。重みが not_used のものは数えない。
  • no_data:片方または両方のモデルに観測がない。

match と mismatch には、重みの段階ごとに、独立した収集元の数を添える。数は、その段階の結果を支える記録の収集元を、二つのモデルの側ごとに 4.2 の規則 3 の単位で数え、少ないほうとする。たとえば、strong の一致を一つの収集元の記録が、weak の一致を三つの収集元の記録が支えていれば、「一致 strong・1、weak・3」と書く。段階の違う結果を、一つの段階と数にまとめない。最も強い段階と、弱い段階を支える収集元の数を組にすると、強い一致を多くの収集元が支えているように読めてしまうためである。片側が一つの収集元の記録だけなら、数は 1 である。二つのモデルの側をそれぞれ別の調査元が報告していても、それだけでは 2 にしない。比較では両側に記録があるので、両側を足すと、どの比較の数も 2 以上になってしまうためである。

no_data を mismatch として扱わない。観測できなかったことは、違うことを意味しないためである。

no_data には理由を添える。片方のモデルでその型を調べていない場合は not_examined、両方で調べたが、片方か両方で観測がなかった場合は not_observed とし、活動モデルの調べた範囲(6.1)から判断する。どちらの理由でも、mismatch としては扱わない。not_examined は、どの観測を足せば比べられるかの手がかりになる。

身元と指示主体は比べない。身元は記録が示した実在の主体で答え(3.5)、指示主体は権限のある機関の公式見解で答える(3.6)。

same-artifact の一致があった場合は、結果に記録する。二つのモデルが本来一つの種だった可能性を検討する根拠になる。ただし、公開されているツールは異なる主体のあいだでも同じファイルが使われるので、それだけで統合はしない。

仕様 6.5 比較の規則

  1. 同じ出所は一度だけ数える。 一つのモデルの中では、同じ依存グループの観測は、帰属対象ごとに、最も重い一致を一つと、最も重い食い違いを一つだけ数える。一つの検体から取ったハッシュ、PDB パス、ミューテックスを何件分にも数えないためである。一致と食い違いを別々に数えるのは、同じ検体でも、ある特徴は一致し、別の特徴は食い違うことがあり、それぞれ別の情報だからである。
  2. 共有している収集元は比較に使わない。 二つのモデルが同じ収集元を共有している場合、その収集元から来た観測は比較に使わない。両方の活動を一本のレポートが扱っているとき、同じ材料どうしの一致を似ていると読んでしまうためである。
  3. 入れ替えの早い特徴は、時期が近いときだけ数える。 cost_to_change が low の特徴の一致は、二つのモデルの期間が重なっているか近い場合だけ数える。何年も後に再割り当てされた IP やドメインを、同じ攻撃者のものと誤るのを防ぐためである。既定では、期間が重なるか、あいだが 90 日以内を「近い」とする。特徴の入れ替わりの速さに合わせて変えるときは、理由を書き留める。
  4. 重みは両側の低いほうを使う。 二つの記録で重みが違うとき(中身の違いで段階が違う記録、classification の記録など)は、一致も食い違いも、低いほうの重みで数える。片方の観測が弱ければ、比べた結果もそれより強くはならないためである。
  5. 偽装しやすい一致に頼る候補には印を付ける。 関連の候補が主に偽装の手間の低い特徴の一致に支えられている場合は、偽装の印を付け、関連の答え(7 章)に書く。偽装しやすい一致だけに支えられた関連だと、答えを読む人に分かるようにするためである。
  6. 時期が大きく離れていれば、手口の食い違いを一段下げる。 二つのモデルの期間が大きく離れているときは、same-tradecraft の食い違いの重みを一段下げる。手口や配布の方法は、時期とともに変わるためである。既定では、あいだが 2 年以上を「大きく離れている」とする。変えるときは、理由を書き留める。
  7. 名義の一致は、ほかの値と同じく数える。 名義(氏名、組織名、支払い元、証明書の発行先など)の値の一致は、実在と確かめたかどうかにかかわらず、その記録の帰属対象と重みで数える。偽名や盗まれた名義が別の主体でも使い回されることは、重みの理由(共有されやすさ、偽装の手間)で扱う。比較で数えないのは、二つのモデルの身元の答えが同じ実在の主体を示したこと(3.5)だけである。

出所の信頼性は、比較の規則に含めない。公開レポートから作るモデルでは観測の大半が reported になり、外すとほとんど比べられなくなるためである。記述の種類は記録に残し、答えを読む人が、自分で確かめた観測か第三者の報告かをたどれるようにする。

仕様 6.7 分析者の判断と CMP

帰属対象ごとの結果は、6.6 の四つの状態で読み、関連の型と理由を書き留める。6.5 の規則 3 と規則 6 の既定の幅や、6.6 の読み方で決まらないところは、分析者が判断し、理由を書き留める。手順が固まった後に、これらを機械で処理できるよう CMP を設計する。

04関連の候補を読む

帰属対象ごとの結果の組み合わせから、二つのモデルの関係を関連の型として読みます。関連の型は測った結果の読み方で、結果を強めも弱めもしません。同じキャンペーン(same-campaign)と読めたモデルは統合し、同じ運用主体(same-actor)と読めたモデルは主体モデルに束ねて、測り直します。比べる相手がなく、手順 03 を飛ばしたときは、この手順も飛ばします。

やること

  1. 帰属対象ごとに、数える結果を、一致(medium 以上)、食い違い、弱い一致、材料なしのいずれかとして読みます。(6.6)
  2. 素性で比べた結果も、その帰属対象の結果として同じように読みます。location と language の一致は weak までなので、それだけでは一致と読めず、弱い一致にとどまります。(6.4、6.6、5.5-5)
  3. 読んだ状態を、下の表の組み合わせと照らします。当てはまる型が複数あれば、すべて書き留めます。(6.6)
  4. 当てはまる関連の型を選び、理由を書きます。当てはまらなければ other とします。(6.6)
  5. same-operator が一致(medium 以上)でなければ、same-actor を選びません。ツールや手口の一致だけでは、ツールの共有と同じ運用主体を区別できないためです。(6.6)
  6. 偽装の手間の低い一致に頼る候補には、偽装の印を付けます。印は関連の答えにも書きます。(6.5-5)
  7. same-campaign と読めたら、二つの活動モデルを統合(merge)し、統合したモデルで、ほかのモデルとの比較と特定を測り直します。記録が変わって same-campaign と読めなくなったら、分割(split)します。(6.3-1、6.3-2)
  8. same-actor と読めたら、活動モデルを主体モデルに束ねます(promote)。すでにある主体モデルに加えるときは、束ねた活動モデルのどれかとの比較で same-actor と読め、どれとの比較でも different-actor と読めないことを確かめます。開発元が同じだけ(same-developer)では束ねません。(6.8-1)
  9. 統合、分割、束ねは、操作、対象のモデル、根拠にした比較の結果と関連の型、理由を、モデルの履歴に書き留めます。(6.3-4、6.8-4)

仕様 6.6 関連の型

関連の型を読む前に、帰属対象ごとの結果を、6.5 の規則を当てはめた後の数える結果から、次の四つの状態のいずれかとして読む。

状態読む条件
一致数える一致があり、最も重いものが medium 以上である
食い違い数える食い違いがある(weak 以上)
弱い一致数える一致が weak だけで、数える食い違いがない
材料なしno_data であるか、数える結果がない(not_used の食い違いや、規則で数えなくなったものだけ)

表の列の見出しは、帰属対象の識別子から先頭の same- を省いたものである。「一致」「食い違い」は上の状態を、「no_data」は材料なしを表し、空欄はその帰属対象の結果を問わない。

関連の型と、帰属対象ごとの結果の組み合わせ
関連の型開発インフラ運用目的
tool-lineagedeveloperinfrastructuretradecraftoperatorobjective
same-campaign一致一致矛盾しない
same-actor一致
shared-tooling一致食い違い食い違いno_data でもよい
shared-developer一致食い違いno_data でもよい
shared-tradecraft食い違い一致食い違いno_data でもよい
shared-infrastructure一致
overlapping-interest一致
tool-continuity一致一致材料なし
evolving-campaign一致strong食い違い隣り合う時期のあいだ矛盾しない
different-actor強い食い違いがあり、一致は弱い

一致  食い違い  材料なし(no_data)

作るもの関連の候補

比較結果一件につき一件作り、次の内容を書き留めます。統合や束ねをしたときは、その操作もモデルの履歴に書き留めます。

  • 関連の型
  • その型と読んだ理由(どの帰属対象の結果から読んだか)
  • 偽装の印の有無

仕様 6.6 関連の型

例:事案 A、B、C

A と B は same-campaign、tool-continuity、shared-developer に、A と C は shared-tooling と tool-continuity に当たりました。A と C は、偽装の手間の低い一致に頼るので、偽装の印も付けています。A と B は same-campaign と読めたので統合し(DS-2026-0012)、統合したモデルで事案 C と比べ直しました。same-actor と読める組はなく、主体モデルは作っていません。

例の続きを見る

この手順の規則(仕様 6.6、6.3)

仕様 6.6 関連の型

帰属対象ごとの結果の組み合わせを、次の関連の型として読む。当てはまる型がないときは other とし、理由を記録する。当てはまる型が複数あるときは、すべて書き留める。

一致と食い違いの両方があるときは、重いほうで読む。同じ重さのときは、どちらとも読まずに理由を書き留める。一致の下限を medium にするのは、weak の一致は多くの主体に共通しやすく、関連の型を決めるには弱すぎるためである。食い違いの下限を weak にするのは、食い違いの重みは cost_to_change によってすでに低めに抑えられており、下限を上げると食い違いがほとんど読めなくなるためである。

shared-infrastructure と overlapping-interest は、一致と書いた帰属対象だけが一致する場合である。tool-continuity は、tool-lineage と developer のどちらかが一致すれば当たる。shared-tooling、shared-developer、shared-tradecraft の operator を no_data でもよいとするのは、公開情報からは運用者の食い違いがほとんど得られず、食い違いを求めるとこれらの型を選べなくなるためである。

same-operator が一致(medium 以上)でないときは、same-actor を選ばない。公開情報では運用者を直接示す観測が得られないことが多く、ツールや手口の一致だけでは、ツールの共有と同じ運用主体を区別できないためである。

関連の型は、帰属対象ごとの結果の読み方であり、測った結果を強めも弱めもしない。関連の答え(7 章)には、関連の型とともに、帰属対象ごとの段階と数を書く。same-campaign は統合(6.3)の、same-actor は主体モデルへの束ね(6.8)の条件になる。

仕様 6.3 統合、分割、期間

  1. 二つの活動モデルを統合(merge)するのは、比較を読んだ関連の型が same-campaign の場合に限る(6.6)。統合したら、統合したモデルで、ほかのモデルとの比較と特定を測り直す。
  2. 記録が加わったり、版を改めたり、撤回されたりして(8 章)、統合の根拠にした比較を比べ直すと same-campaign と読めなくなったら、分割(split)する。
  3. 長く続く活動は、期間で区切って別のモデルにする。期間を区切らずにまとめると、何年も前の特徴と今の特徴を同じ重さで比べてしまうためである。
  4. 統合と分割は、操作、対象のモデル、根拠にした比較の結果と関連の型、理由を、活動モデルの履歴に書き留める。

TAEF の出力

手順 00 から 04 を終えると、帰属する攻撃を誰がやったかへの答えが、それを含む活動モデルの関連と特定として残ります。統合したときは統合したモデルが答えを持ち、主体モデルに束ねたときは、主体モデルの運用の素性と身元を、主体モデルの答えとして添えます。関連と特定は、測った段階と独立した収集元の数のまま書きます。統合、分割、束ねは答えを持つモデルを整える作業で、比較とともに、モデルの履歴と関連として残ります。

仕様 2 分析の流れ

分析の答えは、帰属する攻撃(2.1)を含む活動モデルが持つ関連と特定(7 章)である。統合したときは、統合したモデルが答えを持つ。主体モデルに束ねたときは、主体モデルの運用の素性と身元を、主体モデルの答えとして添える(7 章の規則 2)。関連と特定は段階と独立した収集元の数で書き、答えられなかったことも理由とともに書く。TAEF の出力は、答えを持つ活動モデル(6.1)と主体モデル(6.8)、主体モデルをまとめた主体のまとまり(6.10)である。統合、分割、束ねは、答えを持つモデルを整える作業であり、その結果は、モデルの形と、モデルの履歴や関連として残る。モデルは、分析の中ではワーキングに置き、作った人以外の確認を経てコーパスに登録すると、ほかの分析が比べる相手として繰り返し使える(6.11)。

答えの書き方

  1. 関連は、相手のモデルごとに、関連の型と偽装の印、帰属対象ごとの段階と独立した収集元の数で書きます。関連の型だけを答えにはしません。相手が主体モデルなら、束ねた活動モデルごとの比較を並べます。(7-1、6.4)
  2. 特定は、そのモデルの記録から測った値ごとに書き、関連の相手の素性と身元は引き継ぎません。主体モデルに束ねたときは、主体モデルの運用の素性と身元を、主体モデルの答えとして添えます。(7-2、6.8)
  3. 指示主体は、公式見解をそのまま書き、段階を付けません。モデルが公式見解の対象にした活動を含むならそのことを、含まないなら対象にした活動との関連を測った結果を添えます。(7-3、3.6)
  4. TAEF の問いのうち答えられなかったものを、すべて理由とともに書きます。探しても見つからなかったものは「材料なし」、調べないと決めたものは「調べていない」です。比べる相手がなければ、関連を材料なしとし、探した範囲を添えます。見つからなかったことを、既知のどの主体とも別だという答えにはしません。(7-4、7-5、2.1-1)
  5. 段階と数は足し合わせず、一つの点数にしません。記録や比較が変わったら、比べ直して答えを書き直し、版を改めます。(7-6、7-7、8)

作るもの答え(関連と特定)

活動モデルと主体モデルごとに書き、次の内容を書き留めます。

  • 関連:相手のモデル(統合も束ねもしなかったモデル、主体モデルなど)ごとに、関連の型と偽装の印(6.6)と、帰属対象ごとの測った結果(一致と食い違いのそれぞれについて、段階ごとの独立した収集元の数。材料がなければ no_data とその理由)。相手が主体モデルのときは、束ねた活動モデルごとの比較を並べる(6.4)。相手のモデルに外部の呼び名(6.9)があれば添える
  • 特定:素性、身元、指示主体に分けて書く。素性は、素性の項目と誰の素性かごとに、読んだ値と、支える記録と食い違う記録のそれぞれについて、段階ごとの独立した収集元の数を書く。細かさの違う値(UTC+8 と中国など)は、一つにまとめず、値ごとに書く。読んだ値がその値と同じか、その値に含まれる記録が支え(中国と読んだ記録は UTC+8 も支える)、読んだ値がその値と両立しない記録が食い違う(6.4)。身元は、誰の身元かごとに、実在の個人や組織と、支える記録と、同じ役割について両立しない身元を示す記録のそれぞれについて、段階ごとの独立した収集元の数を書き、同じ実在の主体に届いたほかのモデルがあれば添える(3.5)。指示主体は、公式見解(発行元、日付、対象にした活動の範囲、確信度の表現、根拠の公開の度合い)と、対象にした活動との関連を書く(3.6)。主体モデルに束ねた活動モデルでは、主体モデルの運用の素性と身元を、主体モデルの答えとして添える
  • 答えられなかったこと:問い(2.1)のうち、答えられなかったものと、その理由(材料なし、調べていない)。材料なしは、探しても見つからなかったものや入手できなかったもの、調べていないは、分析の範囲で調べないと決めたもの(2.1 の規則 1)である。関連では、比べた相手ごとに、材料なしの帰属対象を書く。比べる相手がなければ、関連を材料なしとし、探した範囲(2.1)を添える。特定では、値の出なかった素性の項目、身元、指示主体を書く

仕様 7 関連と特定の書き方

ベンダーが Kimsuky のような名前で呼ぶ主体の作戦を追うときは、主体モデルに外部の呼び名を発行元とともに付け、その下に作戦ごとの活動モデルを並べます。ベンダーが一つの名前の下に、別々に活動する複数の攻撃グループを並べている場合(下位グループと呼ばれるもの)は、主体モデルどうしを主体のまとまりとして表します。「同じ運用主体ではないが、同じ組織の下位グループである」という関係は、same-actor と読めない主体モデルどうしを、身元の答えが同じ組織を示すときに、主体のまとまりの same-organization でまとめて表します(group)。

ワーキングとコーパス

分析の中で作ったモデルは、ワーキングに置きます。作った人以外が、記録の来歴(記述の種類、収集元、依存グループ、期間、調べた範囲)と、統合や束ねの根拠を確かめたら、コーパスに登録します。コーパスのモデルは、ほかの分析が比べる相手として繰り返し使います。ワーキングとコーパスはモデルの種類ではなく置き場なので、どちらにも活動モデルと主体モデルを置きます。(6.11)

コーパスに登録しても、モデルの関連と特定は強くなりません。登録が示すのは、作った人以外が確かめたことだけです。分析の中で、活動モデルがコーパスの主体モデルと same-actor と読めても、すぐには束ねず、関連を書くところまでにします。束ねは、作った人以外が確かめてから登録として行い、それまでは主体モデルの運用の素性と身元を答えに添えません。(6.11-3)コーパスと比べたときは、比べたコーパスの版を書き留めます。版が変わったときに、どの比較をやり直せばよいかが分かります。(6.11-5)

例:事案 A、B、C

事案 A への答えは、事案 A と B を統合した UTA-2025-0031 の関連と特定です。関連では、事案 C とは shared-tooling と tool-continuity(偽装の印あり)で、tool-lineage が一致 medium・1 です。特定では、運用者の言語がロシア語(weak・1)、関心が安全保障と防衛の情報(medium・2)です。運用者が同じか、所在、身元、指示主体は、答えられなかったこととして理由とともに残しました。same-actor と読める比較がないので、主体モデルはまだ作っていません。UTA-2025-0031 と UTA-2026-0003 はワーキングにあります。作った人以外が、記録の来歴と、事案 A と B を統合した根拠の比較を確かめたら、コーパスに登録します。

例の続きを見る

出力の規則(仕様 7、6.8、6.9、6.10、6.11、8)

仕様 7 関連と特定の書き方

  1. 関連と特定は、段階と独立した収集元の数のまま書く。関連の型は、帰属対象ごとの結果の読み方(6.6)なので、関連の型だけを答えにせず、帰属対象ごとの段階と数とともに書く。
  2. 関連の相手の素性と身元は、引き継がない。特定は、そのモデルの記録から測る。相手の素性と身元は相手のモデルの答えであり、このモデルの答えに混ぜると、どの記録に支えられた値かが分からなくなるためである。主体モデルに束ねた活動モデルでは、主体モデルの運用の素性と身元を、主体モデルの答えとして添える(6.8)。
  3. 指示主体は、公式見解をそのまま書き、段階を付けない。モデルが、公式見解の対象にした活動を含むならそのことを、含まないなら対象にした活動との関連を測った結果を添える(3.6)。
  4. 問い(2.1)のうち答えられなかったものは、すべて答えられなかったことに書く。答えられないことは、正常な結果である。
  5. 比べる相手が見つからなかったことを、既知のどの主体とも別だという答えにしない。相手が、探した範囲の外にいることや、まだ報告されていないことがあるためである。
  6. 記録が変わったときは、比べ直して答えを書き直し、版を改める(8 章)。
  7. 測った結果は、帰属対象どうし、特定の値どうし、関連と特定のあいだで足し合わせず、一つの点数にしない。足し合わせると、共有されやすい弱い一致が多いだけで大きな値になり、食い違いや答えられなかったことが見えなくなるためである。
  8. 特定の独立した収集元の数は、その値を支える記録と食い違う記録の収集元を、段階ごとに、4.2 の規則 3 の単位で数える。主体モデルでは、同じ収集元を一度だけ数える。

仕様 6.8 主体モデル

主体モデルは、L3 の運用主体を、束ねた活動モデルの集まりとして表したものである。主体モデルは、promote で作って活動モデルを加え、demote で活動モデルを外す。一つの主体モデルの下に、オペレーションやキャンペーンにあたる活動モデルが複数並ぶ。

主体モデルには、次を書き留める。

  • 中立な ID(例:ACT-2026-0003)。活動モデルの ID とは別の形にする
  • 束ねた活動モデルと、それぞれを束ねたときの根拠にした比較の結果(関連の型 same-actor)
  • 期間(束ねた活動モデルの期間を合わせたもの)
  • 外部の呼び名(6.9)
  • 関連(7 章)。ほかのモデルと何が同じかを、束ねた活動モデルごとの比較を並べて書く(6.4)
  • 特定(7 章)。束ねた活動モデルの特定を、どの活動モデルの答えかを添えて並べる。このうち運用の素性と身元は、束ねた活動モデルの運用者が同じと読めたので、主体モデルの答えとしてまとめ、段階と独立した収集元の数を数え直す(7 章の規則 8)。活動モデルのあいだで食い違うときは、そのまま残す。ほかの役割の素性と身元、interest、指示主体は、束ねただけでは主体モデルの答えにしない。same-actor が示すのは運用者が同じことだけで、ツールの開発者、インフラの提供者、指示を出す者は、活動ごとに違いうるためである
  • 答えられなかったこと(7 章)
  • 束ねた履歴と、外した履歴(promote、demote)
  1. 主体モデルに束ねるのは、比較を読んだ関連の型が same-actor(same-operator が一致)の活動モデルだけである。すでにある主体モデルに加えるときは、束ねた活動モデルのどれかとの比較で same-actor と読め、どれとの比較でも different-actor と読めないことを求める。same-developer など、ほかの L3 の帰属対象の一致では束ねない。開発元が同じでも、運用主体は別でありうるためである(6.10)。コーパスの主体モデルに加えるときは、登録として行う(6.11 の規則 3)。
  2. 一つの活動モデルを、同時に複数の主体モデルに束ねない。どちらに属するかを決められないときは、どちらにも束ねず、それぞれとの関連(6.1)を書き留める。
  3. 主体モデルの特定も、活動モデルと同じく、段階と独立した収集元の数で書く(7 章)。外部の呼び名(6.9)や第三者の判断(4.4)から、身元や指示主体を書き込まない。指示主体は、束ねた活動モデルの答えを、どの活動モデルの答えかを添えて並べる(3.6)。
  4. 束ねたときと外したときは、操作、対象のモデル、根拠にした比較の結果と関連の型、理由を、主体モデルの履歴に書き留める。束ねる根拠にした比較を比べ直して same-actor と読めなくなったら、外す(demote)。

別々の主体モデルを、共通の開発元、組織、指示主体でまとめるときは、主体のまとまり(6.10)を使う。

仕様 6.9 外部の呼び名

ベンダーや政府機関は、攻撃グループや作戦に独自の名前を付ける。TAEF では、こうした名前を外部の呼び名として、主体モデルや活動モデルに対応づけて書き留めることを推奨する。外部のレポートや、ほかの組織が持つ情報と照らし合わせやすくなるためである。

外部の呼び名には、次を書き留める。

  • 呼び名
  • その名前で呼んでいる発行元と、時期
  • 発行元がその名前で指している範囲(どの活動を含めているか)。分かる場合
  • 対応づけの根拠。第三者の判断(4.4)か、自分たちの比較の結果か
  1. 外部の呼び名を、モデルの ID の代わりにしない。
  2. 一つのモデルに、複数の呼び名を付けてよい。発行元ごとに指している範囲が違うときは、その違いを書き留める。
  3. 呼び名を付けたことは、そのモデルが、その発行元の言う攻撃グループや作戦と同じだという答えにはならない。同じかは、発行元がその呼び名で指す活動を比べる相手にして(2.1 の規則 3)、関連を測る。
  4. 表示や管理には呼び名を使ってよい。そのときも、どの発行元の呼び名かが分かるようにする。

仕様 6.10 主体のまとまり

ベンダーは、別々に活動するいくつかの攻撃グループを、一つの名前の下にまとめることがある。下位グループ、傘下のグループ、上位組織などと呼ばれる関係である。TAEF では、こうした関係を、主体モデルどうしの主体のまとまりとして表す。まとまりの中の主体モデルは、互いに別の運用主体である。同じ運用主体なら、まとまりにはせず、一つの主体モデルに束ねる。

主体のまとまりには、次を書き留める。

  • 中立な ID(例:GRP-2026-0001)。活動モデルや主体モデルの ID とは別の形にする
  • まとめた主体モデル
  • まとめる関係(下の表のいずれか)と、その根拠
  • 外部の呼び名(6.9)
  • 加えた履歴と、外した履歴(group、ungroup)
関係意味答え加える条件
same-developer同じ者が作ったツールを使う関連(L3)束ねた活動モデルどうしの比較で、same-developer が一致と読める(3.2、6.6)
same-organization同じ実在の組織(機関、企業、部隊など)に属する特定の身元両方の主体モデルの身元の答えが、同じ組織を示す(3.5)
same-sponsor同じ主体から指示や資金を受ける特定の指示主体同じ指示主体を名指す公式見解を答えに持つ活動モデルが、両方の主体モデルに束ねられている(3.6)
  1. 主体のまとまりに加えるのは、表の加える条件を満たした主体モデルだけである。加えたときと外したときは、操作、対象のモデル、根拠、理由を、まとまりの履歴に書き留める。条件を満たさなくなったら、外す(ungroup)。
  2. 一つの主体モデルを、関係の違う複数のまとまりに加えてよい(例:開発元を共有するまとまりと、同じ組織のまとまり)。
  3. まとまりの中の主体モデルどうしの比較が same-actor と読めたら、まとまりではなく一つの主体モデルに束ね直す。
  4. 外部の呼び名が、まとまりを指すのか、その中の一つの主体を指すのかは、発行元ごとに違う。6.9 の規則 2 のとおり、発行元が指している範囲を書き留める。

仕様 6.11 ワーキングとコーパス

活動モデルと主体モデルは、置き場によって、ワーキングとコーパスに分けて管理する。ワーキングは、分析の中で作り、育てているモデルの置き場である。コーパスは、作った人以外の確認を経て登録したモデルの置き場であり、ほかの分析が比べる相手として繰り返し使う。ワーキングとコーパスは、モデルの種類ではない。どちらの置き場にも、活動モデルと主体モデルを置く。主体モデルとは束ねた活動モデルごとに比べる(6.4)ので、主体モデルをコーパスに登録するときは、束ねた活動モデルも登録する。主体のまとまり(6.10)をコーパスに登録する条件は、この版では決めていない(9 章)。

モデルをコーパスに登録するのは、次をすべて満たしたときである。

  • 来歴。含まれるエビデンス記録のすべてに、記述の種類、収集元、依存グループがあり(4.1)、活動モデルに期間と調べた範囲がある(6.1)
  • まとめ方。統合と束ねが、6.3 と 6.8 の条件を満たしている
  • 確認。モデルを作った人以外が、来歴とまとめ方を確かめた

来歴を求めるのは、来歴が欠けていると、コーパスのモデルと比べるたびに、6.5 の規則 2、規則 3、規則 6 と、no_data の理由(6.4)を当てられないためである。コーパスに登録したことは、モデルの関連と特定を強めない。登録が示すのは、作った人以外が来歴とまとめ方を確かめたことだけである。コーパスのモデルと比べるときも、ワーキングのモデルと比べるときと同じく、帰属対象ごとの段階と独立した収集元の数で測る。

  1. 登録するときは、コーパスの版を改め、登録したモデル、確かめた人、日付を書き留める。登録しても、モデルの ID は変えない。比較の結果や関連が、ID で相手のモデルを指しているためである。
  2. コーパスのモデルを変えるのは、登録だけとする。コーパスのモデルの統合、分割、束ね、外すこと(merge、split、promote、demote)も、登録として行い、規則 1 のとおり版を改める。
  3. 分析の中で、活動モデルがコーパスの主体モデルと same-actor と読めたときは、関連(7 章)を書くところまでにし、主体モデルへの束ねは登録として行う。登録が済むまでは、主体モデルの運用の素性と身元を、答えに添えない(7 章の規則 2)。確かめていない束ねがコーパスに入ると、コーパスにあることが、作った人以外が確かめたことを示さなくなるためである。
  4. 分析の中で、コーパスのモデルの統合や束ねの根拠にした比較が、same-campaign や same-actor と読めなくなったときは(6.3 の規則 2、6.8 の規則 4)、そのことを書き留め、分割や外すことを、登録として申し出る。
  5. コーパスのモデルと比べたときは、比べたコーパスの版を、比較の結果(6.4)に書き留める。コーパスの版が変わったら、変わったモデルと比べた比較をやり直し、答えを見直す(8 章の規則 3)。
  6. コーパスに、既知の主体がすべてそろっているとは扱わない。コーパスのどのモデルとも関連が見つからないことを、既知のどの主体とも別だという答えにしない(7 章の規則 5)。

仕様 8 記録の版と撤回

  1. エビデンス記録、活動モデル、主体モデル、比較の結果、答え、コーパス(6.11)は、上書きせずに版を重ねる。
  2. 撤回するときは、理由を記録する。
  3. 撤回された収集元やエビデンス記録に依存する記録は、影響を見直して新しい版を作る。その記録を使った比較はやり直す。見直さずに使い続けない。

よくある誤り

帰属の誤りの多くは、次のいずれかに当てはまります。TAEF の規則は、どれもこれらを防ぐためのものです。誤りが起きやすい手順ごとにまとめました。

01エビデンスを記録する

  • 一つの検体から取った指標を、別々の根拠として数える

    同じ検体のハッシュ、PDB パス、ミューテックス、C2 設定は、四つの独立した一致ではありません。同じ依存グループにまとめ、帰属対象ごとに、最も重い一致と最も重い食い違いを一つずつだけ数えます。

  • 同じ元レポートの転載を、独立した裏付けとして数える

    複数のベンダーや記事が同じ活動を報じていても、元の観測は一つのことがあります。URL や発行元の数ではなく、収集元をたどって独立性を判断します。同じ検体を別々のベンダーが解析した報告も、検体の出所は一つなので、一つの収集元と数えます。

  • 各社の帰属が一致していることを、裏付けとして数える

    複数のベンダーが同じ帰属を示していても、根拠の観測が同じなら裏付けにはなりません。第三者の判断はエビデンス記録にせず、根拠の観測を探す手がかりに使います。

  • 比べる相手を見てから重みを決める

    一致した特徴の重みを後から上げれば、どんな結論にも寄せられます。重みは記録を作るときに、その記録の中身から付け、理由を書きます。比べる相手を見てから変えません。

  • 時刻の分布から、国まで読む

    作業の時刻から読めるのは、時間帯までです。同じ時間帯には、複数の国や地域があります。推した素性の読んだ値は、観測が支える細かさにとどめ、読みの前提にした仮定(勤務の時間帯など)も書き留めます。

  • ツールの作成者の言語や時刻を、運用者のものとして読む

    マルウェアの文字列やビルドの時刻は、ツールを作った者の痕跡です。請負業者が作ったツールなら、使う運用者とは所在や言語が違うことがあります。誰の素性かは観測から決め、決められなければ「不明」とします。

02活動モデルを作り、特定を測る

  • ベンダーが付けた攻撃グループの名前を正解として扱う

    名前は他者の判断であり、範囲も時期もベンダーごとに違います。モデルには中立な ID を付け、名前は外部の呼び名として発行元とともに書き留めます。名前と同じ主体かどうかは、その名前で各社が指している活動を比べる相手にして、関連を測ります。

03比較して、関連を測る

  • 観測できなかったことを「違う」と読む

    観測がないことと、観測した特徴が違うことは別です。比較では no_data として分け、反証には使いません。

  • 見えていないことを、起きていないことと読む

    報告のない期間を活動の休止と読んだり、あるベンダーの報告に偏った標的を主体の標的と読んだりすると、観測の欠落や偏りを主体の特徴と取り違えます。調べていない型は no_data(not_examined)として分け、活動モデルの調べた範囲に、何を材料にし、何を調べていないかを書き留めます。

  • 確かめていない名義の一致を、同じ人物や組織と読む

    契約者や登録者の名義は、偽名や盗まれた個人情報でも登録できます。実在の個人や組織のものと確かめた名義だけが身元の答えになります。確かめていない名義の一致は、ほかの値と同じく、記録の帰属対象と重みで関連に数えるだけです。

  • 何年も離れた IP やドメインの一致を根拠にする

    入れ替えの早いインフラは、後から別の者に割り当てられます。変更コストが low の特徴は、期間が重なるか近いときだけ数えます。

  • 測った段階と数を足して、一つの点数にする

    関連は帰属対象ごと、特定は値ごとに、段階と独立した収集元の数で示します。足し合わせると、共有されやすい弱い一致が多いだけで大きな値になり、食い違いや答えられなかったことが見えなくなります。

  • 素性が合うことを、同じ主体や実在の組織の根拠にする

    作業の時間帯や言語は、どこの主体かを答える主な根拠ですが、二つの活動が同じ主体かを示す力は弱く、一致は weak までにとどめます。素性が合う個人や組織はほかにもいるので、素性は身元の根拠にもなりません。身元を示すのは、名義を実在と確かめた記録だけです。

04関連の候補を読む

  • ツールが同じなので、同じ攻撃グループだとする

    請負業者や共通の開発元が作ったツール、流出したビルダー、商用の攻撃ツールは、複数のグループが使います。same-tool-lineage の一致と、same-tradecraft や same-operator の一致を分けて読みます。

  • 関連の型だけを答えにする

    same-campaign や shared-tooling は、帰属対象ごとの結果の読み方です。関連の型だけを書くと、どの帰属対象が、どの段階の一致に、いくつの収集元から支えられているかが見えなくなります。関連の答えには、帰属対象ごとの段階と数も書きます。

  • 関連だけから、実在の組織や国家まで結論する

    コードやインフラの一致は、関連の答えです。実在の組織は、名義を確かめた記録から特定の身元として答え、国家の指示は、権限のある機関の公式見解でしか答えられません。

  • 関連の相手の素性や身元を、このモデルの答えとして書く

    関連の相手の素性と身元は、相手のモデルの答えです。同じツールの系譜でも、ツールは流出や販売で別の者の手に渡ります。特定は、そのモデルの記録から測り、相手の素性と身元は引き継ぎません。主体モデルに束ねたときだけ、主体モデルの運用の素性と身元を、主体モデルの答えとして添えます。

  • 開発元が同じ活動を、同じ運用主体として束ねる

    同じ者が作ったツールは、別々の運用主体も使います。主体モデルに束ねるのは、比較が same-actor(same-operator が一致)と読めたときだけです。開発元を共有する主体モデルどうしは、主体のまとまり(same-developer)として表します。

この版の状態

この版は試行段階で、手作業で使うことを前提にしています。手順が固まったら、それを機械で処理できるように、比較を助ける仕様(CMP)を設計する予定です。まだ決まっていない点は、次のとおりです。

仕様 9 この版で決めていないこと

  • 書き留める形式(項目名、データ形式、スキーマ、検証器)と、ワーキングとコーパスの置き場の形(データベースなど)。手順が固まった後、機械で処理できるよう CMP を設計するときに決める
  • 主体のまとまり(6.10)をコーパスに登録する条件。6.10 の加える条件をもとに決める
  • 6.5 の規則 3 と規則 6 の既定の幅が妥当か。例を増やして確かめ、CMP の設計で機械的に扱える形にする
  • 攻撃手順を構造化して書き留めるかどうか。same-tradecraft の比較に要るかを、CMP の設計とあわせて決める
  • 5.3 の読み替えの表を残すか。TAEC の帰属対象は、2026-11-01 に VIC を付け直して、すべての型の観測事例に帰属対象(attribution_scopes)と特定(identifies)を付け、型単位の帰属対象も 3.2 の語彙へ付け直した。旧い値は、付け直しの前の TAEC を読むときにだけ要る
  • 段階と独立した収集元の数(とくに特定の段階)の付け方が、分析者のあいだで揃うか。例を増やして確かめる。段階と数を機械で求める方法は、実証評価の後に、CMP の設計で決める
  • 統合と主体モデルへの束ねを、関連の型(same-campaign、same-actor)だけで決めてよいか。ツールや手順書の共有、偽装で誤って統合した例がないかを、例を増やして確かめる
  • 名義を確かめる方法ごとに、示した身元の特定の段階をどう付けるか(5.6 の規則 4)。例を増やして確かめる

正式な規則は TAEF 仕様 0.3-draft のページにあります。分かりにくい点や誤りは、GitHub の Issueで知らせてください。エビデンスの追加や修正の方法は、コントリビュートのページにあります。