マルウェアに関する最新の動向、対処方法マルウェアサイバー犯罪2019.7.30【徹底解説】スパイグループ「Turla」はPowerShellをどのように悪用しているのかこの記事をシェア悪質な活動を続けているスパイ集団「Turla(トゥールラ)」がPowerShellを利用してインメモリのみでマルウェアを実行するという新たなTTP(戦術、手法、手順)について、ESETのリサーチャーが分析しました。Japanが提供する「ESETブログ」に掲載された「TurlaによるPowerShellの使用を徹底解説」を再編集したものです。Turla(別名Snake)は、複雑なマルウェアを使用することで知られる悪名高いスパイグループです。Turlaのオペレーターは最近、検出機能を混乱させる目的で、マルウェアの実行ファイルとライブラリを直接インメモリロードして実行するPowerShellスクリプトを使用し始めました。これにより、悪意のある実行ファイルがディスクにドロップされるとトリガーとなる検出を回避できるようになりました。Turlaの活動は、少なくとも米軍のコンピュータに侵入した2008年から続いていると考えられています。最近では、ドイツ外務省とフランス軍に対する大規模な攻撃にも関与していました。セキュリティ製品を回避するチャンスを高めるために、TurlaがPowerShellのインメモリローダーを使用するのは今回が初めてではありません。PowerShellローダーを分析し、レポートを発表しました。当時のスクリプトにはバグが多く、しばしばクラッシュを引き起こしていました。数カ月後、Turlaはこれらのスクリプトを改良し、現在では従来の「武器庫」からさまざまなカスタムマルウェアをロードするために使用しています。Turlaは一般的なターゲットを狙います。ESETでは、これらのスクリプトを使用してハッキングされた東欧の外交機関をいくつか特定しました。西欧および中東の数多くの従来型ターゲットに対して、同じスクリプトが以前よりもグローバルに使用されている可能性があります。そこで、防御側の企業・組織がこれらのPowerShellスクリプトに対抗できるように支援することを目的に、本ブログ記事をお届けします。RPCベースのバックドアやOneDriveをC&Cサーバーとして利用するバックドアなど、さまざまなペイロードについても解説します。埋め込み実行ファイル/ライブラリのメモリへのロード、の3つです。常駐化PowerShellスクリプトは単純なドロッパーではありません。埋め込まれた実行ファイルのみをメモリに定期的にロードして、システム上に常駐します。Turlaオペレーターは次の2つの方法で常駐化することが確認されています。Instrumentation前者の場合、攻撃者は2つのWMIイベントフィルタと2つのWMIイベントコンシューマを作成します。コンシューマは単純なコマンドラインで、Windowsレジストリに格納されている大規模なPowerShellスクリプトをロードするBase64エンコードされたPowerShellコマンドを起動します。図1は、常駐化を確実にするための方法を示しています。WMIを使用した常駐化これらのイベントは、それぞれ15:30:40およびシステムアップタイムが300~400秒の間に実行されます。変数$HL39fjhには、Base64エンコードされたPowerShellコマンドが含まれています(図2参照)。このコマンドは、暗号化されたペイロードが格納されているWindowsレジストリキーを読み取り、ペイロードの復号化に必要なパスワードとソルトを含みます。WMIコンシューマのPowerShellコマンド最後に、このスクリプトは暗号化されたペイロードをWindowsレジストリに保存します。攻撃者は組織ごとに異なるレジストリの場所を使用しているようです。したがって、類似した侵入を検出する指標としては有用ではありません。Profile.ps1前者の場合、攻撃者はPowerShellプロファイルを改ざんします。Microsoftのドキュメントには、次のように書かれています。PowerShellプロファイルは、PowerShellの起動時に実行されるスクリプトです。プロファイルをログオンスクリプトとして使用すれば、環境をカスタマイズできます。ドライブを追加できます。図3は、Turlaによって改ざんされたPowerShellプロファイルを示しています。乗っ取られたprofile.ps1ファイルBase64でエンコードされたPowerShellコマンドは、WMIコンシューマで使用されているものと非常によく似ています。復号化Windowsレジストリに格納されているペイロードは、もう1つのPowerShellスクリプトです。これは、侵入テストフレームワークPowerSploitのオープンソーススクリプトOut-EncryptedScript.ps1を使用して生成されています。変数名はスクリプトを難読化するためにランダム化されます(図4参照)。復号化ルーチンペイロードの復号化には3DESアルゴリズムが使用されます。この例では初期化ベクトルはPINGQXOMQFTZGDZXですが、初期化ベクトルはサンプルごとに異なります。キーおよびソルトもスクリプトごとに異なり、スクリプトには保存されずにWMIフィルタまたはprofile.ps1ファイルにのみ保存されます。前の手順で復号化されたペイロードは、PowerShellリフレクティブローダーです。これは、同じPowerSploitフレームワークのスクリプトInvoke-ReflectivePEInjection.ps1がベースになっています。実行ファイルはスクリプトにハードコードされており、システム上ですでに実行されているランダムに選択されたプロセスのメモリに直接ロードされます。一部のサンプルでは、攻撃者はバイナリを挿入するべきではない実行ファイルのリストを指定しています(図5参照)。Labsの実行ファイルを指している点に注意してください。Turlaのオペレーターは、何が何でも自分のマルウェアをKasperskyソフトウェアには挿入したくないようです。(AMSI)を迂回する目的でPowerShellスクリプトを修正していました。AMSIは、あらゆるWindowsアプリケーションとインストール済みマルウェア対策製品との統合を可能にするインタフェースです。PowerShellとマクロにとって有用です。2018での講演で発表された手法を再利用しました。amsi.dll内の関数AmsiScanBufferの先頭のインメモリパッチで構成されています。PowerShellスクリプトは、AmsiScanBufferのアドレスを取得するための.NET実行ファイルをロードします。その後、VirtualProtectを呼び出して、取得したアドレスへの書き込みを許可します。最後に、PowerShellスクリプトでパッチが直接実行されます(図6参照)。常に1(AMSI_RESULT_NOT_DETECTED)を返すようにAmsiScanBufferの先頭を改ざんします。結果、マルウェア対策製品はバッファを受信しないため、すべてのスキャンが回避されます。AmsiScanBuffer関数のパッチペイロード上記のPowerShellスクリプトは、RPCバックドアやPowerShellバックドアなど、さまざまなペイロードをロードするために使用される汎用コンポーネントです。RPCバックドアTurlaは、RPCプロトコルに依存する一連のバックドアを開発しました。これらのバックドアは、外部のC&Cサーバーに依存することなく、ラテラルムーブメント(侵入後の感染拡大)を実行し、ローカルネットワーク内の他のマシンを制御するために使用されます。ファイルのアップロード、ファイルのダウンロード、cmd.exeまたはPowerShellによるコマンドの実行など、実装される機能は非常に基本的なものです。このマルウェアはプラグインの追加もサポートしています。このRPCバックドアは、サーバーとクライアントという2つのコンポーネントに分割されます。図7で要約しているとおり、オペレーターはクライアントコンポーネントを使用して、サーバーコンポーネントが存在する別のマシンでコマンドを実行します。RPCバックドアの使用法たとえば、次のSHA-1ハッシュEC54EF8D79BF30B63C5249AF7A8A3C652595B923によって識別されるサンプルはクライアントバージョンです。このコンポーネントは、RpcStringBindingComposeW関数を介して、名前付きパイプ\\pipe\\atctlをプロトコルシーケンス「ncacn_np」で開きます。次に、このサンプルはNdrClientCall2関数を呼び出すことでコマンドを送信します。引数の解析を担当するエクスポートされたプロシージャHandlerWを見ると、匿名トークンを装ったり、コマンドの実行のためだけに他のプロセストークンを窃取しようとしたりする可能性があることがわかります。これに対応するサーバーは、手間のかかる処理を実行し、さまざまなコマンドを実装します。レジストリキーの値HKLM\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters\NullSessionPipesに「atctl」が含まれているかどうかを確認します。含まれている場合、サーバーはパイプオブジェクト上のセキュリティ記述子を、SetSecurityInfo関数を介して「S:(ML;;NW;;;S-1-16-0)」に設定します。これにより、誰でもパイプを利用できるようになります(整合性レベル:信頼できない/匿名)。次の画像は、対応するMIDLスタブ記述子、および類似した構文とインタフェースIDを示しています。RPCバックドアクライアントのMIDL(左側)とサーバーのMIDL(右側)前述したように、このバックドアはプラグインのロードもサポートしています。サーバーは、パターン「lPH*.dll」に一致するファイルを検索するスレッドを作成します。該当するファイルが存在する場合、そのファイルがロードされ、エクスポート関数ModuleStartが呼び出されます。ESETがこれまで発見したさまざまなプラグインの中で、あるプラグインは最近のファイルやUSBメモリに保存されているファイルを盗むことができます。このRPCバックドアの多くの変種が実環境で使用されています。その中には、ローカルプロキシ(エンドポイントとしてupnprpcを、プロトコルシーケンスとしてncalrpcを使用)と、powershell.exeを使用せずに直接スクリプトを実行するためのPowerShellRunnerを組み込んだ新しいバージョンがあります。Executableファイルも発見しました。9D1C563E5228B2572F5CA14F0EC33CA0DEDA3D57)このユーティリティの主な目的は、インタフェースを登録したプロセスのRPC構成を取得することです。その種類のプロセスを発見するため、特定のポートを開いたプロセスのPIDを見つけるまで、あるいは特定の名前付きパイプを開いたプロセスのPIDを取得するまで、TCPテーブルを(GetTcpTable2関数を介して)繰り返し処理します。PIDが見つかると、このユーティリティはリモートプロセスのメモリを読み取り、登録されているRPCインタフェースを取得しようとします。当該部分のコード(図9参照)は、こちらのGithubリポジトリから切り取られたもののようです。.dataセクションを検索するコードスニペット(Hex-Raysのスクリーンショット)当初、取得した情報がどのように使用されていたのかが不明でしたが、別のサンプル(SHA-1:B948E25D061039D64115CFDE74D2FF4372E83765)のおかげで判明しました。図10に示すように、このサンプルはRPCインタフェースを取得し、フラグの設定を解除してRPC_IF_ALLOW_SECURE_ONLYにし、WriteProcessMemory関数を使用してメモリ内の「ディスパッチテーブル」にパッチを適用します。これらの操作により、このサンプルは既存のRPCインタフェースにRPC関数を追加できます。カスタムインタフェースを作成するよりも既存のRPCインタフェースを再利用する方がステルス性は高いと判断されます。OneDriveをC&Cサーバーとして使用する軽量なPowerShellバックドアです。認証情報はスクリプトの先頭にハードコードされています(図11参照)。BackdoorやLightNeuronのように、Turlaのオペレーターが再び無料の電子メールプロバイダーGMXを使用したのは興味深い点です。Turlaのオペレーターはまた、電子メールアドレスにターゲット組織の実際の従業員の名前を使用していました。useコマンドを使用してネットワークドライブに接続します。次に、コマンドが使用可能かどうかをループでチェックします(図12参照)。このバックドアが実行できるのは、追加のPowerShellスクリプトのみです。コマンドの結果を別のOneDriveサブフォルダーに書き込んだ後、XORキー0xAAを使用して暗号化します。PowerStallionバックドアのメインループもう1つの興味深いアーチファクトは、このスクリプトが正規のファイル(この例ではdesktop.ini)の時間と一致させるために、ローカルログファイルのMAC(変更、アクセス、作成)時間を改ざんしていることです(図13参照)。ローカルログファイルのMAC時間の改ざんこのバックドアは、CarbonやGazerなどのTurlaの主要なバックドアが駆除され、オペレーターが侵入先のコンピュータにアクセスできなくなった場合に使用される、リカバリアクセスツールであると考えられます。オペレーターがこのバックドアを次の目的で使用していることはすでに確認されています。マルウェア対策製品のログの監視Windowsプロセスリストの監視Turlaの第2段階バックドアの1つであるComRATバージョン4のインストール結論ESETは2018年のブログで、Turlaはますます汎用ツールを使用するようになると予測しました。今回の調査で、ESETの予測が正しかったことが確認されただけでなく、Turlaグループは侵入を成功させるためにはオープンソースの侵入テストフレームワークを躊躇なく使用することが明らかになりました。オープンソースを使用しているからといって、攻撃元がTurlaであると特定できなくなる訳ではありません。攻撃者は、こうしたオープンソースツールを自分のニーズに合わせて構成または変更する傾向にあります。アクティビティをクラスターに分離することは依然可能です。最後に、オープンソースツールを使用してはいても、Turlaが独自のカスタムツールを使用しなくなった訳ではありません。PowerShellスクリプト、RPCバックドア、およびPowerStallionによって提供されるペイロードは、実際のところ高度にカスタマイズされています。LightNeuronの分析結果も、Turlaグループが引き続き複雑なカスタムマルウェアを開発していることを裏付けています。ローダーはPowerShellで記述されています。一部のRPCコンポーネントはPowerShellコマンドを実行できます。PowerShellローダーは常駐化のためにWMIを使用します。RPCバックドアとPowerStallionがログファイルを暗号化します。PowerShellローダーが埋め込まれたペイロードを復号化します。PowerShellローダーがペイロードをリモートプロセスに挿入します。PowerStallionがログファイルのタイムスタンプを改ざんします。RPCプラグインがファイルとディレクトリの情報を収集します。RPCプラグインがUSBドライブを監視します。RPCバックドアのサーバーコンポーネントがNullSessionPipesのレジストリを照会します。PowerStallionが実行中プロセスのリストを送信します。RPCプラグインがローカルファイルシステムから最近のファイルを収集します。RPCプラグインがUSBドライブのファイルを収集します。RPCバックドアがRPCを使用し、PowerStallionがSMB経由でOneDriveを使用します。PowerStallionがC&Cチャンネルを介して情報を持ち出します。[更新]スマホへの買い替えでデータ移行と旧端末の処分はどうすべき?スマートフォンのデータを完全に削除するにはどうしたらいいですかブラウザーが乗っ取られ、変な検索エンジンが表示されます。削除しても表示されます。ある、キヤノンマーケティングジャパン株式会社が提供しています。