近年の水飲み場攻撃事例 Part1
現在、多くの方が攻撃者の侵入経路はVPNやファイアウォールなどの外部公開資産の脆弱性の悪用であると認識されているのではないでしょうか。実際にJPCERT/CCに報告されるセキュリティインシデントの多くも、そのような機器からの侵入です。その理由は、APT攻撃グループだけでなくランサムウェアアクターやサイバークライムアクターなど多くの攻撃グループにVPN機器の脆弱性が悪用され、インシデント数もそれに準じて多くなっているためです。このような特定の侵入経路から発生するセキュリティインシデントの増加にともなって、他の侵入経路への対策が忘れられがちになることがあります。攻撃者は、メール経由やWebサイト経由、SNS経由などさまざまな方法で攻撃を行っています。図1は、JPCERT/CCが確認した標的型攻撃に関連するセキュリティインシデントのタイムラインです。
この図からもわかるとおり、ネットワークへの侵入には多くの手法が利用されています。そこで、今回は近年あまり注目されることがない水飲み場攻撃の事例を国内で発生した事例をもとに2回に分けて紹介します。このようなセキュリティインシデントもセキュリティ対策を考える上での参考にしていただければと思います。1回目は、2023年にある大学の研究室のWebサイトが悪用された事例を取り上げます。
攻撃の流れ
図2に水飲み場攻撃の流れを示します。ユーザーが、改ざんされたWebサイトにアクセスすると偽のAdobe Flash Playerのアップデート画面が表示され、指示に従ってファイルをダウンロードおよび実行すると、マルウェアに感染します。
改ざんされたWebサイトには、図3のようなJavaScriptが埋め込まれており、アクセスしたユーザーに日本語のポップアップメッセージが表示される仕組みになっていました。
この水飲み場攻撃の特徴としては、マルウェア感染のために脆弱性を悪用せず、アクセスしたユーザー自身がマルウェアをダウンロードして実行しないといけないというソーシャルエンジニアリングの手法が使われていたことです。
感染するマルウェア
この攻撃によってダウンロードされるマルウェアFlashUpdateInstall.exeは、図4のとおりおとり文書を表示する機能と本体となるマルウェア(system32.dll)を作成し、実行する機能を持っています。おとり文書はテキストで、Adobe Flash Playerのアップデートが成功したことを示す文字列が書かれていました。
作成されたsystem32.dllは、エクスプローラーのプロセスにインジェクション(Early Bird Injection)されます。このDLLファイルは、Cobalt Strike Beacon(バージョン4.5)でWatermarkが666666に改ざんされている特徴的なものでした。Cobalt Strikeの詳細な設定情報については、Appendix Dをご覧ください。
同一攻撃グループによる攻撃事例
今回紹介した、水飲み場攻撃に関係する攻撃グループは不明です。マルウェアの通信先には、CloudflareのエッジサーバーレスサービスであるCloudflare Workersを使用して構築されていました。また、調査の中で同じ攻撃者が本攻撃とは別の攻撃を行っていることを確認しています。図5は、C2サーバーの調査などから確認された別のマルウェアの挙動です。
図5の上の例では、攻撃者は経済産業省のファイルであるようにファイル名を偽装し、表示されるおとり文書は、経済産業省から公開されている文書が利用されていました。また、下の例で使用されているマルウェア(Tips.exe)は、実行時にオプションの指定が可能という特徴を持っていました。以下は、実行時に指定できるオプションです。
- --is_ready:セットアップモード
- --sk:耐解析機能の無効化
- --doc_path:おとり文書の保存フォルダー
- --parent_id:マルウェア自身のプロセスID
- --parent_path:マルウェアの実行パス
- --auto:マルウェア実行モード
"C:\Users\Public\Downloads\Tips.exe" --is_ready=1 --sk=0 --doc_path='[current_path]' --parent_id=[pid] --parent_path='[malware_file]'
この検体はDLLファイルの実行時にEnumWindowsやEnumUILanguagesの関数を使うというあまり見られないテクニックを使用していました。
さらに、ウイルス対策ソフト(プロセス名avp.exe)を停止する機能や耐解析機能として以下を検知する機能を持っていました。
- プロセスが40以上あるか
- メモリサイズが0x200000000(約8G)以上あるか
- 物理ドライブ名に以下が含まれていないか
- VBOX
- Microsoft Virtual Disk
- VMWare
おわりに
今回の内容がセキュリティ対策を考える上での参考になれば幸いです。引き続き、次回も水飲み場攻撃の事例を紹介します。
インシデントレスポンスグループ 喜野 孝太、朝長 秀誠
Appendix A:通信先
- www.mcasprod.com
- patient-flower-ccef.nifttymailcom.workers.dev
- patient-flower-cdf.nifttymailcom.workers.dev
Appendix B:マルウェアハッシュ値
Jack Viewer
- 791c28f482358c952ff860805eaefc11fd57d0bf21ec7df1b9781c7e7d995ba3
- a0224574ed356282a7f0f2cac316a7a888d432117e37390339b73ba518ba5d88
Cobalt Strike 4.5
- 7b334fce8e3119c2807c63fcc7c7dc862534f38bb063b44fef557c02a10fdda1
Decoy File
- 284431674a187a4f5696c228ce8575cbd40a3dc21ac905083e813d7ba0eb2f08
- df0ba6420142fc09579002e461b60224dd7d6d159b0f759c66ea432b1430186d
Infected Website
- 3bf1e683e0b6050292d13be44812aafa2aa42fdb9840fb8c1a0e4424d4a11e21
- f8ba95995d772f8c4c0ffcffc710499c4d354204da5fa553fd33cf1c5f0f6edb
Appendix C:PDB
- C:\Users\jack\viewer\bin\viewer.pdb
Appendix D:Cobalt Strike Config
dns False ssl True port 443 .sleeptime 45000 .http-get.server.output 0000000400000001000005f200000002000000540000000200000f5b0000000d0000000f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 .jitter 37 publickey 30819f300d06092a864886f70d010101050003818d0030818902818100daca3d111909f81f4a40d3b0648bb079f2d89b3d579016fe4da97055d2975bf4d633de34346e82948450a222eb92102fe866fd6b5ec2f633c032c124aa5824bee30825fa6ac2d9abef369280076174ee12caa72bbacab906b80c29e89f82380f5e8c45a287c6874b58cc0d1d28332c92de35e21ad4817667bd10b997b345f985020301000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 .http-get.uri patient-flower-ccef.nifttymailcom.workers.dev,/jquery-3.3.1.min.js 67 0 68 4294967295 69 4294967295 70 4294967295 .spawto .post-ex.spawnto_x86 %windir%\syswow64\dllhost.exe .post-ex.spawnto_x64 %windir%\sysnative\dllhost.exe .cryptoscheme 0 .http-get.verb GET .http-post.verb POST shouldChunkPosts 0 .watermark 666666 36 MYhXSMGVvcr7PtOTMdABvA== .stage.cleanup 1 CFGCaution 0 71 0 72 0 73 0 .user-agent Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko .http-post.uri /jquery-3.3.2.min.js .http-get.client GAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 #Referer: http://cdn.nifttymail.com/ __cfduid= Cookieate .http-post.client GAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 #Referer: http://cdn.nifttymail.com/ __cfduid deflate host_header Host: patient-flower-ccef.nifttymailcom.workers.dev cookieBeacon 1 .proxy_type 2 58 0005800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 57 0005800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 funk 0 killdate 0 text_section 1