異常検知と振る舞い検知
不審なトラフィックを見つけます。
「異常検知と振る舞い検知」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
シグネチャを超えて
シグネチャは既知の脅威を検知します。一方で、未知のマルウェアやゼロデイ、まだ誰にも特徴を把握されていないカスタムツールには対応できません。このギャップをアノマリ検知と行動検知が埋め、通常とは異なるトラフィックを検出します。
前提となる考え方は、未知の攻撃でも行動の痕跡を残すということです。攻撃者はすべてのシグネチャを回避できても、通常とは異なる間隔でビーコン通信を行ったり、普段と違う時間帯にデータを移動させたり、内部ホストをスキャンしたりする可能性があります。
ベースラインの確立
アノマリ検知には、正常な状態のモデルが必要です。時間をかけてベースラインを作成し、次のような項目をプロファイリングします。
- どのホストがどのホストと、どのポートで通信するか
- 通常のフローあたりのバイト数と接続時間
- 時間帯や曜日ごとの通常の通信量
- セグメントごとに想定されるプロトコル
ベースラインは、代表的な期間のクリーンなトラフィックから学習する必要があります。侵害が進行中に作成したベースラインでは、攻撃が正常な状態として組み込まれてしまいます。
統計的アノマリ
最も単純な行動検知は統計的なものです。指標を計算して正常な分布を学習し、値が大きく外れたとき、たとえば標準偏差が3を超えたときや高いパーセンタイルに達したときにアラートを生成します。
例として、通常は1日に50MBを送信するワークステーションが突然5GBをアップロードした場合や、ホストが数分のうちに数千の異なる内部IPアドレスへ接続した場合が挙げられます。
フローレコードとNetFlow
多くの行動分析は、完全なパケットではなくフローレコードを対象に行われます。フローは通信の概要であり、送信元、宛先、ポート、プロトコル、バイト数とパケット数、通信時間を記録します。
フロー(NetFlow、IPFIX、またはSuricata/Zeekのconnログ)はコンパクトで、暗号化されたトラフィックでも機能し、エンタープライズ規模の通信量にも対応できます。トラフィック量や接続パターンの検知を支える基盤です。
# Zeek conn.log fields (excerpt)
# ts uid id.orig_h id.resp_h id.resp_p proto duration orig_bytes resp_bytesビーコン通信の検知
コマンドアンドコントロールチャネルは、しばしばビーコン通信を行います。インプラントが一定間隔で外部のサーバーに接続するのです。ペイロードが隠されるTLS通信でも、タイミングのパターンは確認できます。
宛先への接続間隔の分布を分析して検知します。分散が小さく(任意のジッターを含む)、リクエストサイズも小さく似通っている場合、C2の強い指標になります。RITAなどのツールは、この検知に特化しています。
DNSベースの検知
DNSは、攻撃者がトンネリングやC2に悪用するため、行動を示す豊富なシグナルになります。
- エントロピーが高い/長いドメインは、DGA(ドメイン生成アルゴリズム)を示唆します
- 1つのドメインへの大量のクエリは、DNSトンネリングを示唆します
- 大量に発生する異常なレコードタイプ(TXT、NULL)は疑わしいものです
- 新たに登録されたドメインは、リスクが高い傾向にあります
ドメインごとのクエリ頻度、名前の長さ、エントロピーをプロファイリングすれば、ペイロードのシグネチャでは検知できないデータ流出を発見できます。
暗号化トラフィックのフィンガープリント
暗号化されたペイロードを読むことはできませんが、暗号化がどのようにネゴシエートされたかをフィンガープリントとして取得できます。JA3/JA3SはTLSのClientHello/ServerHelloパラメーターをハッシュ化し、クライアントとサーバーのスタックを識別するフィンガープリントを生成します。
マルウェアファミリーは、同じTLSライブラリと設定を使用するため、JA3を共有することがよくあります。JA3の出現頻度をプロファイリングすれば、まれなフィンガープリントを検出したり、既知の悪意あるフィンガープリントと照合したりできます。復号は必要ありません。
行動指標
行動検知では、使用されたツールに関係なく、攻撃者が実行せざるを得ない行動を探します。価値の高い行動には次のようなものがあります。
- ラテラルムーブメント — 1台のホストが突然、多数のピアに対して認証を行う
- 内部スキャン — 1つの送信元が多数のポートやホストに接続を試みる
- データステージング/データ流出 — 新しい宛先へ大量のデータを送信する
- ポートにそぐわないプロトコル — 443番ポートでSSH、53番ポートでHTTPを使用する
これらはATT&CKの戦術に明確に対応し、ペイロードシグネチャよりも回避に強い特徴があります。
機械学習とUEBA
ユーザーおよびエンティティの行動分析(UEBA)は、機械学習を適用してエンティティごとの正常な状態をモデル化し、そこからの逸脱をスコア化します。クラスタリングモデルや時系列モデルによって、固定しきい値では見逃す微妙な変化を見つけられます。
MLは検知能力を高めますが、リスクも伴います。モデルの不透明性、ネットワークの変化に伴う概念ドリフト、敵対的な回避などです。MLのスコアは唯一の判断基準ではなく、多数あるシグナルの1つとして扱ってください。影響の大きい判断では、人間が確認する仕組みを維持することも重要です。
プロトコルログの記録に使うZeek
Zeek(旧称Bro)は、トラフィックをアラートではなく、豊富で構造化されたプロトコルログに変換するネットワーク分析フレームワークです。多くの行動検知を支える中核ツールです。
Zeekはプロトコルごとのログ(conn、dns、http、ssl、files、x509)を生成し、カスタムアナライザーをスクリプトで作成できます。これらのログをSIEMに取り込むことで、アナリストは正常な状態のベースラインを作成し、暗号化されたトラフィックを含めて逸脱を発見するために必要な接続、DNS、TLSのメタデータを利用できます。
# Generate logs from a capture
zeek -r traffic.pcap
# Produces conn.log, dns.log, ssl.log, files.log, ...誤検知という現実
未知の脅威を検知できることは、アノマリ検知の強みであると同時に弱みでもあります。すべてのアノマリが悪意あるものとは限りません。新しい業務アプリ、パッチ適用日、バックアップ、季節によるトラフィックの変化は、すべて異常に見える可能性があります。
次の方法で対処します。
- アラートを生成する前に、複数の弱いシグナルをリスクスコアリングして相関付ける
- 資産とIDのコンテキストを付加する
- アノマリを自動ブロックに使うのではなく、脅威ハンターに提供する
- 環境の変化に合わせて、ベースラインを継続的に再学習する
確認問題
暗号化されたC2に行動分析の考え方を適用してください。
まとめ
行動検知とアノマリ検知は、シグネチャでは検知できないものを見つけます。
- 正常な状態を学習したベースラインからの逸脱を検知します
- 通信量、接続先の広がり、タイミングに統計的なしきい値を使用します
- フローレコード(NetFlow/Zeek)を分析します。暗号化されたトラフィックにも有効です
- 接続間隔の規則性からビーコン通信を発見します
- DNSのエントロピーと通信量をプロファイリングして、DGAやトンネリングを検知します
- 復号せずにJA3/JA3SでTLSをフィンガープリントします
- ラテラルムーブメント、スキャン、データ流出などの行動を追跡します
- ML/UEBAは検知能力を高めますが、人による監視と調整が必要です
次は、実際のネットワークでこれらのセンサーを調整して配置します。
よくある質問
「異常検知と振る舞い検知」レッスンは無料ですか?
はい。「異常検知と振る舞い検知」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「異常検知と振る舞い検知」で何を学びますか?
不審なトラフィックを見つけます。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「異常検知と振る舞い検知」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。