FortiGuard Labs 脅威リサーチ
影響を受けるプラットフォーム: Microsoft Windows
影響を受けるユーザー: Windowsユーザー
影響: 標的のコンピュータから機密情報を収集する
深刻度: 高
フォーティネットのFortiGuard Labsは最近、フィッシングメールに不正Excel文書が添付されたフィッシングキャンペーンを確認しました。このキャンペーンの詳細分析を実施したところ、Snake Keyloggerの新しい亜種が配布されていることがわかりました。
Snake Keylogger(別名「404 Keylogger」または「KrakenKeylogger」)は、多くの機能を備えたサブスクリプションベースのキーロガーです。当初はハッカーのフォーラムで販売されていた、.NETベースのソフトウェアです。
被害者のコンピュータ上で実行されると、Webブラウザやその他の一般的なソフトウェアから、保存された認証情報、システムのクリップボード、デバイスの基本情報などの機密データの窃取が可能になります。また、キー入力を記録し、スクリーンショットをキャプチャすることもできます。
以下のセクションでは、このキャンペーンのフィッシングスパムに注目し、受信したユーザーをどのように誘導して不正文書を開かせ、Excel文書がどのようにSnake Keyloggerの新しい亜種をダウンロードして実行するか、さらには、どのような分析対策の手法を使用して攻撃中に検知されてブロックされるのを防ぐかを解説します。
図1のメールの内容は、受信者の口座への振込通知に見せかけることで、添付されたExcelファイル(swift copy.xls)を開かせようとするものです。ユーザーに警告するため、FortiGuardサービスはこのフィッシングメールの件名に「[virus detected]」というマークを付けます。
図2に、添付されたExcelファイルをOffice Excelで開いた場合の内容を示します。この段階で、不正コードがバックグラウンドで実行されて、他のファイルがダウンロードされます。
Excelファイルのバイナリデータを調べると、CVE-2017-0199の脆弱性を悪用して不正ファイルをダウンロードするように作成された埋め込みリンクオブジェクトが含まれていることがわかります。図3に、埋め込みリンクオブジェクト(「\x01Ole」)を示します。このリンクは「hxxp[:]//urlty[.]co/byPCO」で、ファイルを開いた段階で、Excelプログラムによって密かに要求されます。
リンクにアクセスすると、応答ヘッダの「Location」フィールドに「hxxp[:]//192.3.176[.]138/xampp/zoom/107.hta」という別のURLが返されます。HTAファイルは、Windowsアプリケーション、デフォルトではHTMLアプリケーションホスト(mshta.exe)が実行するHTMLアプリケーションファイルです。
107.htaファイルには、難読化された多くのJavaScriptコードが含まれており、mshta.exeによってロードされた段階で自動的に実行されます。図4に、JavaScriptコードの一部を示します。
JavaScriptコードをデコードし、難読化を解除したところ、図5に示すVBScriptコードの一部を取得できました。
VBScriptコードによって「Script.Shell」のオブジェクトが作成され、変数「ps_code」に定義されたbase64文字列からデコードしたPowerShellコードの一部が実行されることがわかります。次に、「shellObj.Run()」関数がコールされたときに、このPowerShellコードが「cmd.exe」(%ComSpec%)によって実行されます。
base64でデコードされたPowerShellコードを以下に示します。WindowsのAPIであるURLDownloadToFile() を呼び出すことで、実行ファイルを被害者のコンピュータにダウンロードし、3秒待ってから実行します。
実行ファイルのURLは、「hxxp[:]//192.3.176[.]138/107/sahost.exe」とハードコーディングされており、ローカルファイルは、「%Appdata%sahost.exe」です。PowerShellコードは最終的に、Start "$Env:AppDatasahost.exe" をコールすることで、実行ファイルをスタートします。
今回の調査で、ダウンロードされるEXEファイル(sahost.exe)にSnake Keyloggerの新しい亜種が含まれていて、EXEファイルによって、亜種が展開、復号、ロード、実行されることがわかりました。これ以降の説明では、このダウンロードしたEXEファイルをLoaderモジュールと呼ぶことにします。
図6に、パッカー検知ツールでの分析のスクリーンショットを示します。これは、Microsoft .Net Frameworkを使用して開発されています。
Snake Keyloggerのコアモジュールがサイバーセキュリティ製品に検知されてブロックされるのを防ぐため、sahost.exeは、複数の名前付きリソース内で、変換や暗号化などの多層型保護の手法を使用します。sahost.exeが開始すると、コアモジュールの問い合わせ、抽出、復号、インストール、展開を実行するメソッドを提供するResourceセクションから、いくつかのモジュール(dll)をメモリに抽出します。
「sahost.exe」の元の名前は「utGw.exe」です。Resourceセクションの「siri」という名前のリソースから、「FGMaker.dll」というモジュールを復号して抽出します。図7に、そのコードの一部を示します。
「FGMaker.dll」モジュールは、追加モジュール(「Q」や「Gammar.dll」など)も抽出し、これも合わせて使用することで、リソース「KKki」から「Tyrone.dll」と呼ばれるモジュールを抽出して復号します。
図8を見て、「KKki」がBitmapリソースとしてロードされることにお気づきかもしれません。モジュール「Tyrone.dll」は、バイト単位で暗号化され、ビットマップリソースに保存されています。図9に、「KKki」のコンテンツをビットマップ図で示します。
復号シーケンスをもう1度繰り返すと、メモリ内の「Tyrone.dll」モジュールの平文が明らかになります。次に、Assembly.Load() メソッドをコールすることで、実行可能モジュールとしてロードされます。
図10に、ここまででLoaderモジュールによって抽出され、ロードされたモジュールを示します。
これ以降の分析では、「Tyrone.dll」を「Deployモジュール」と呼ぶことにします。このモジュールは、以下の機能を実行します。
現在のプロセスの完全パスが「%AppData%WeENKtk.exe」であるかどうかをチェックし、名前を変更し、結果が「いいえ」であれば属性(Hidden、ReadOnly、Systemなど)を設定します。これは、最初の実行で「%AppData%sahost.exe」という名前だったものです。
Deployモジュールは、「schetasks.exe」コマンドを実行して、システムタスクスケジューラーに新しいスケジュールされたタスクを作成します。システム起動時にSnake Keyloggerが起動されるようにする図11に、Snake Keyloggerのスケジュールされたタスクを示します。
Deployモジュールは、リソースデータ「I7O14IyvsdO」を自らのResourceセクションから取得します。次に、文字列キー「YRDdITlYRXI」でデータを、自らのメモリの最終PEファイルに復号します。これは、Snake Keyloggerのコアモジュールです。
Deployモジュールは次に、新しいプロセスを作成し、そこに不正コードを挿入して実行するマルウェアの手法である、プロセスホローイングを実行します。これにより、元のプロセスを隠すことができます。
図12に、難読化されたAPI CreateProcess() のコール直前の状態を示します。このコールでは、プロセスの作成方法を示す「Creation Flag」という重要な引数が使用されます。引数の値は、134217732、すなわち16進数で0x08000004に設定されていて、これは、「CREATE_SUSPENDED」と「CREATE_NO_WINDOW」として定義されています。CreateProcess() に対する最初の引数であるプロセス名は、Loaderモジュールと同じです。
プロセスホローイングを完了するには、ZwUnmapViewOfSection()、VirtualAllocEx()、ReadProcessMemory()、WriteProcessMemory()、GetThreadContext()、SetThreadContext()、ResumeThread() などのWindows APIをコールする必要があります。
コアモジュールの元の名前は、「lfwhUWZlmFnGhDYPudAJ.exe」です。図13に示すように、攻撃者はモジュール全体を完全に難読化しており、エントリポイント("Main()")と難読化されたコード、クラス名、メソッド名はそれぞれ、ここに表示されているとおりです。
Snake Keyloggerは、とてもわかりやすい構造です。被害者のデバイスから、デバイスの基本情報、保存されている認証情報、キー入力、スクリーンショット、システムクリップボードのデータなどの個人情報や機密情報を収集する機能があることがわかります。
これらの機能は、タイマーによって駆動されるさまざまなメソッドに分かれています。Snake Keyloggerには、機能が有効かどうかを示す、いくつかのフラグ変数もあります。
Snake Keyloggerのこの亜種は、認証情報収集の機能のみ有効にします。
Snake Keyloggerは最初に、PCの名前、システム時間、IPアドレス、国名、地域名、都市名、タイムゾーンなどのデバイスの基本情報を取得します。図14に、今回の分析でテストに使用したデバイスから収集された基本情報を示します。
このSnake Keyloggerの亜種には、いくつかのIPアドレスがハードコーディングされており、これらは、攻撃者が回避したい、いくつかのサンプル自動分析システムで使用されると攻撃者が考えるIPアドレスです。
図15に示す「anti_bot()」という名前のメソッドは、ハードコーディングされたIPアドレスをチェックします。被害者のIPアドレスがこれらのIPアドレスのいずれかと一致した場合、「BotDetected」が返されます。この場合、Snake Keyloggerは認証情報を収集するだけで、攻撃者にそれを送信しません。
Snake Keyloggerは、Webブラウザ、メールクライアント、IMクライアント、FTPクライアントなどの50以上の人気ソフトウェアプログラムから、保存されている認証情報を収集します。
いずれのソフトウェアにも、コンフィギュレーションデータを保存する固有のプロファイルフォルダが存在します。Snake Keyloggerは、すべてのプロファイルファイルのトラバーサルにより、保存された認証情報を探します。図16に、Google Chromeの場合に使用するメソッドの例を示します。「Locals」タブを見るとわかるように、「URL」、「Login ID」、「Login Password」を含む、1セットの認証情報のみ取得します。
これらのソフトウェアはいずれも、以下のいずれかに分類されます。
ChromiumベースのWebブラウザ:
「Google Chrome」、「Amigo」、「Xpom」、「Kometa」、「Nichrome」、「CocCoc」、「QQ Browser」、「Orbitum」、「Slimjet」、「Iridium」、「Vivaldi」、「Iron」、「Chromium」、「Ghost Browser」、「Cent Browser」、「xVast」、「Chedot」、「Comodo Dragon」、「SuperBird」、「360 Browser」、「360 Chrome、「Brave」、「Torch」、「UC Browser」、「Blisk」、「Epic PrivacyBrowser」、「Liebao」、「Avast」、「Kinza」、「BlackHawk」、「Citrio」、「Uran」、「Coowon」、「7Star」、「QIP Surf」、「Sleipnir」、「Chrome Canary」、「ChromePlus」、「Sputnik」、「Microsoft Edge」、「Slim」
MozillaベースのWebブラウザ:
「SeaMonkey」、「IceDragon」、「CyberFox」、「WaterFox」、「Postbox」、「PaleMoon」
その他のWebゲートウェイ:
「Opera」、「Firefox」
メールクライアント:
「FoxMail」、「Thunderbird」
FTPクライアント:
「FileZilla」
IMクライアント:
「Pidgin」、「Discord」
上記のソフトウェアから収集したすべての認証情報が、グローバル変数に一時的に保存されます。
Snake Keyloggerの亜種には、FTPサーバーにデータをアップロードする、メールアドレスに送信する、Telegramのボット経由でHTTPポストメソッドで送信するなどのいくつかの方法で、取得した認証情報を攻撃者に送信します。Snake Keyloggerのこの亜種は、SMTP経由でデータを送信します。
図17に、メールの内容を作成する方法のスクリーンショットを示します。上部は、メールの送信者、受信者、件名、本文などのコード、下部は、このコードによってデータが充填された変数「mailMessage」の内容です。
メールの本文には、グローバル変数に保存されているコンピュータの基本情報、さらには別のグローバル変数に保存されている被害者のコンピュータから窃取した認証情報が含まれます。次に、SMTPクライアントを作成し、Send() メソッドをコールして、認証情報を攻撃者に送信します。
図18に、Microsoft Outlookのメールの例を示します。
図19に、Snake Keyloggerキャンペーンの全体的なワークフローを示します。
このブログでは、フィッシングメールでユーザーを誘導するSnake Keyloggerキャンペーンを分析で明らかになった、プロセスのワークフローを解説しました。
このフィッシングメールに不正Excel文書が含まれており、誘導されたユーザーがファイルを開くと、「残高支払い」の詳細が表示されることがわかりました。また、このExcel文書をさまざまなツールで表示したところ、既知の脆弱性をどのように悪用してHTAファイルをダウンロードするかもわかりました。
次に、JavaScript、VBScript、PowerShellなどの複数の言語スクリプトを活用して、Snake KeyloggerのLoaderモジュールをダウンロードします。
その後のLoaderモジュールがファイルのResourceセクションから複数のモジュール(いくつかのミドルモジュールとDeployモジュールを含む)を抽出する方法についても解説しました。マルウェアは多くの場合に、このようなプロセスを使用して、検知や分析を回避しようとします。
次に、Snake KeyloggerのDeployモジュールが被害者のコンピュータでどのように永続化し、プロセスホローイングを使用してコアモジュールを新しく作成したプロセスに挿入して実行する過程について説明しました。
最後に、Snake Keyloggerがどのように被害者のコンピュータから機密情報を窃取し、窃取したデータがSMTPプロトコル経由で攻撃者に送信されることについて解説しました。
フォーティネットのお客様は、FortiGuardのアンチスパム、Webフィルタリング、IPS、アンチウイルスサービスによって、このキャンペーンから以下のように保護されます。
このキャンペーンに関連するURLとサーバーは、FortiGuard Webフィルタリングサービスにより「悪意のあるWebサイト」として識別されます。
FortiMailはこのフィッシングメールを「virus detected」として認識します。さらに、フォーティネットのFortiMail、Webフィルタリング、アンチウイルスソリューションに組み込まれたFortiSandboxのリアルタイムのアンチフィッシングにより、既知および未知のフィッシングの試行からの高度な保護が可能です。
FortiGuard IPSサービスは、CVE-2017-0199に対する脆弱性エクスプロイトを、シグネチャ「MS.Office.OLE.autolink.Code.Execution」により検知します。
FortiGuardアンチウイルスサービスは、このキャンペーンで添付されるExcel文書である107.hta、ダウンロードされる実行可能ファイル、展開されるSnake Keyloggerを、以下のアンチウイルスシグネチャにより検知します。
MSExcel/CVE_2017_0199.DDOC!exploit
VBS/SnakeKeylogger.119B!tr.dldr
MSIL/SnakeKeylogger.FQQD!tr
MSIL/SnakeKeylogger.AES!tr.spy
FortiGate、FortiMail、FortiClient、FortiEDRは、FortiGuardアンチウイルスサービスをサポートしています。FortiGuardアンチウイルスエンジンは、これらのソリューションの一部です。そのため、これらの製品を利用して最新の保護が可能にしているお客様は、このキャンペーンからすでに保護されていることになります。
FortiGuard CDR(コンテンツ無害化)サービスにより、Excel文書に埋め込まれたリンクオブジェクトを無効化することができます。
新たな脅威に関する最新情報を入手するには、こちらから登録して、アラートを受け取ることができます。
Fortinet Cybersecurity Fundamentals(FCF)の受講をお勧めします。このトレーニングにはインターネットの脅威に関するモジュールが含まれ、エンドユーザーがフィッシング攻撃を識別して自らを保護する方法を学習できます。
このようなサイバーセキュリティの脅威の影響を受けていることが疑われる場合は、グローバルFortiGuardインシデントレスポンスチームにお問い合わせください。
hxxp://urlty[.]co/byPCO
hxxp[:]//192.3.176[.]138/xampp/zoom/107.hta
hxxp[:]//192.3.176[.]138/107/sahost.exe
[swift copy.xls]
8406A1D7A33B3549DD44F551E5A68392F85B5EF9CF8F9F3DB68BD7E02D1EABA7
[107.hta]
6F6A660CE89F6EA5BBE532921DDC4AA17BCD3F2524AA2461D4BE265C9E7328B9
[The Loader module/sahost.exe / WeENKtk.exe / utGw.exe]
484E5A871AD69D6B214A31A3B7F8CFCED71BA7A07E62205A90515F350CC0F723
[Snake Keylogger core module / lfwhUWZlmFnGhDYPudAJ.exe]
207DD751868995754F8C1223C08F28633B47629F78FAAF70A3B931459EE60714