ドメイン生成アルゴリズム(DGA)
ドメイン生成アルゴリズム(DGA) とは何ですか?
ドメイン生成アルゴリズム(DGA)感染ホストが C2 サーバーを発見できるよう、マルウェアが大量の候補ドメインを決定論的に生成するアルゴリズム。
DGA はマルウェアに埋め込まれたコードで、共有シードから毎日数百から数千の疑似乱数ドメインを生成します。シードは通常は当日の日付で、事前登録を防ぐためにツイッターのトレンドや為替レートなど予測困難な値を混ぜる場合もあります。ボットと運用者は同じアルゴリズムを実行するため同一の当日リストを算出し、攻撃者はそのうちごく一部だけを登録すればよく、ボットはいずれかが解決するまでリストを順に試します。この「ランデブー」方式は、防御側が将来の C2 を事前に列挙できないため静的ブロックリストを無効化し、テイクダウンも困難にします。今日のドメインを差し押さえても明日のドメインには無力だからです。
実在の家族がその規模を物語ります。Conficker.C は 2008〜2009 年に多数の TLD 上で 1 日 5 万件を生成し、前例のない業界連合(Conficker Working Group)による事前登録や遮断を招きました。Gameover Zeus は P2P 層が妨害されると 1 日約 1000 件の DGA に切り替え、CryptoLocker、Necurs、Murofet/Licat も日付シードの生成器を用いました。Plohmann らによる 2016 年 USENIX Security の研究は数十の DGA 家族を解析し、シードと符号化方式の多様性を示しました。
DGA の名前解決は特徴的な NXDOMAIN 応答のバースト(生成名の大半は未登録)を生むため、防御は DNS テレメトリを軸にします。ドメインの文字 n-gram とエントロピーに対する統計・機械学習分類、パッシブ DNS の相関、新規観測のアルゴリズム名のシンクホール化、失敗解決を大量に発するプロセスを検知する EDR ルールなどです。
flowchart TD
S[共有シード<br/>日付 + ソルト] --> A[マルウェア内の DGA]
S --> O[運用者側の DGA]
A --> L[1 日数千件の<br/>候補ドメイン]
O --> R[運用者は少数の<br/>ドメインを登録]
L --> Q{DNS 問い合わせ}
Q -->|大半は失敗| N[NXDOMAIN バースト]
Q -->|1 つが解決| C[C2 サーバーへ接続]
N --> D[検知: NXDOMAIN 急増,<br/>n-gram/エントロピー ML, パッシブ DNS]
C --> E[指令受信 / 情報流出]
D --> F[シンクホール / 遮断]● 例
- 01
Conficker.C は複数の TLD 上で 1 日 5 万件の候補ドメインを生成。
- 02
Necurs と Murofet は日付シードの DGA を用いて C2 と合流。
● よくある質問
ドメイン生成アルゴリズム(DGA) とは何ですか?
感染ホストが C2 サーバーを発見できるよう、マルウェアが大量の候補ドメインを決定論的に生成するアルゴリズム。 サイバーセキュリティの 攻撃と脅威 カテゴリに属します。
ドメイン生成アルゴリズム(DGA) とはどういう意味ですか?
感染ホストが C2 サーバーを発見できるよう、マルウェアが大量の候補ドメインを決定論的に生成するアルゴリズム。
ドメイン生成アルゴリズム(DGA) からどのように防御しますか?
ドメイン生成アルゴリズム(DGA) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
ドメイン生成アルゴリズム(DGA) の別名は何ですか?
一般的な別名: DGA, アルゴリズム生成 C2 ドメイン。