SolarWindsの事件は広く報告、報道され、オーストラリア英語で言うところの "Done to Death Mate"、つまり語り尽くされた感じです。しかし、いくつかの情報を見て考えさせられました。特にMicrosoft社員である友人のこの記事では、この攻撃がどのように起こったのか、流れや背景を詳しく解説しています。私はかつてAppSense Application Managerと呼ばれていたIvanti Application Controlを17年間担当しています。お気に入りの製品です。私は何百回もこの製品をお客さまサイトでインストールし、何百人もの人に使い方のトレーニングをしてきました。それでも新しいことは出てきますし、状況が変化したりハッカーが暗躍する中で、いくつかの機能が新旧の攻撃を防ぐのに大いに役に立つこともあります。

どのような攻撃だったか?どんな対策ができるか?

では、Ivanti Application Control (AC)でお客さまのお手伝いをしている者の観点から、この攻撃のスタイルと手順が何を意味するかをお話ししましょう。

  1. 信頼されたアプリケーションが悪さをすることもある。信じ難く、胃が痛くなるような話ですが、信頼されたアプリケーションがハッキングされることもあります。SolarWinds.BusinessLayerHost.exeというプロセスが悪質なdllをダウンロードし、そこからディスク上にいくつかのファイルを生成したことがわかっています。レジストリ内でをうろついたりつついたりしたあと、スクリプトファイルが信頼できるシステムプロセスであるdllhost.exeによって起動されました。Rundll32.exeも信頼されているシステムプロセスですが、これも攻撃とクリーンアップの一部で悪質なファイルを実行するのに使われました。
  2. 追跡と捕獲も重要だが、防御はより効果的。ネットワークを流れ、ハッカーのサイトに接続するトラフィックをキャプチャして可視化することももちろん大切ですが、私の見方はこうです。私はセキュリティ問題が原因からブロックされるようにしたい。セキュリティには2つの考え方があります。問題があったときに素早く直すこと、または問題そのものを止めること。私は後者の考え方です。まず止めましょう。
  3. どのアプリケーションが何をすべきか、すべきでないかを把握する。信頼されたアプリケーションがバッチファイルやVB、PowerShellスクリプトを実行する必要があるでしょうか?どのような状況ならそれが許可されるべきでしょうか?少しテストしたりプランニングをしたりすることで可視性が高まり、そこから情報を把握した上での決定をしたり、防御を加えたりすることができます。

Ivanti Application Controlができる3つの防御

ここまでに述べたことをすべて踏まえて、信頼されるアプリケーションのハッキング防御のために、Ivanti Application Controlのコンフィグでできることが3つあります。ただし、このルールは導入前に必ず、まずお使いの環境で監査モードでテストして下さい。

  1. SYSTEMをTrusted Ownerから削除する。初期設定でSYSTEMはTrusted Ownerに追加されています。論理的に問題ないように見えるし、100%考える必要もないようなことに思えるかもしれません。そう判断するのはまだ早いです。SANSでGCIH certification trainingを受けていた時のことを思い出します。私たちはMetasploitを使ってWindows Spoolerサービスを攻撃し、サーバーにnetcat.exeをコピーしました。私たちが攻撃していたサービスのコンテキストはSYSTEMでした。つまり、ファイルがディスクに入った時、SYSTEMに支配されていました。ACのコンフィグからSYSTEMを削除することで、改竄されたサービスの一部でディスクにコピーされたファイルの実行をブロックすることができます。講師は感銘を受けていました!
  2. Microsoftが推奨するブロックを追加する。ASCS Essential 8 ’Application Control’のレベル2-3ではこれは必須項目です。このリストに載っているアプリケーションはセキュリティの注意が必要なものか、もしくは確実に危険なものです。最新のリストはこちらです。私も最初は知らなかったのですが、昔からよく知られているBGInfo.exe (バージョン4.22より古いもの)についてお客さまから聞かれて、VBスクリプトを実行してWindows VBコンパイラをバイパスできることに気づきました。適切なdllをブロックすることでVBScriptのバックドアを止めることができることもわかりましたが、ブロックリストに載っているわけですから、単純にブロックした方が安全です。 BGInfoバージョン4.22ではこの問題が修正されているので、どうしても必要であればこのバージョンを使うのが良いでしょう。
  3. プロセスルールと仲良くなろう。Ivanti Application Controlで私のお気に入りの機能の中にプロセスルールの実行機能があります。これで、metadataや場合によってはsignatureに.exeをロックダウンし、exeが追加コンポーネントを呼び出しできるように、またはできないようにするルールを作ります。例えばexeは信頼できるので.dllを実行することを許可します。しかし、exeが.bat、vbs、.PS1を実行するような状況は考えられません。そして、Powershell.exeのブロックも追加しましょう。これは複数のプラットフォーム間で共通ルールとして導入し、必要に応じて許可することもできます。

上記のようなルールを設定することで、SolarWindsのような攻撃は防ぐことができます。

SYSTEMプロセスは独自にファイルを生成して実行することはできなくなり、Microsoftの推奨するブロックリストに載っているような危険なシステムツールは許可されず、dllhost.exeやRundll32.exeといった重要なシステムプロセスはバッチファイル、VBやPowerShellのスクリプトを実行できないようにロックダウンすることができるでしょう。

お読みいただきありがとうございます

私は変わり者で、「自分のドッグフードを自分で食べる」というか「自分のシャンパンを飲んでしまう」ようなタイプですので、こういったルールを自分自身のラップトップでも設定しています。私のラップトップには完全にロックダウンされたApplication Controlが入っており、私は一般ユーザーとしてしかログオンしません。権限管理の機能でIvantiで仕事をするために必要な昇格を行い、認証情報の盗難からは守られています。Ivanti Application Controlについてご理解いただく助けになれば幸いです。ご質問がある場合は、お気軽にご連絡ください。なお、念のためにお話すると、SolarWindsはIvantiでは使われておらず、IvantiやIvanti IAC、その他のIvantiのソリューションを推奨するものではありません。

お読みいただき、ありがとうございます。