近年の水飲み場攻撃事例 Part1

現在、多くの方が攻撃者の侵入経路はVPNやファイアウォールなどの外部公開資産の脆弱性の悪用であると認識されているのではないでしょうか。実際にJPCERT/CCに報告されるセキュリティインシデントの多くも、そのような機器からの侵入です。その理由は、APT攻撃グループだけでなくランサムウェアアクターやサイバークライムアクターなど多くの攻撃グループにVPN機器の脆弱性が悪用され、インシデント数もそれに準じて多くなっているためです。このような特定の侵入経路から発生するセキュリティインシデントの増加にともなって、他の侵入経路への対策が忘れられがちになることがあります。攻撃者は、メール経由やWebサイト経由、SNS経由などさまざまな方法で攻撃を行っています。図1は、JPCERT/CCが確認した標的型攻撃に関連するセキュリティインシデントのタイムラインです。

2023年から2024年にかけてJPCERT/CCが確認した標的型攻撃
図1:2023年から2024年にかけてJPCERT/CCが確認した標的型攻撃

この図からもわかるとおり、ネットワークへの侵入には多くの手法が利用されています。そこで、今回は近年あまり注目されることがない水飲み場攻撃の事例を国内で発生した事例をもとに2回に分けて紹介します。このようなセキュリティインシデントもセキュリティ対策を考える上での参考にしていただければと思います。1回目は、2023年にある大学の研究室のWebサイトが悪用された事例を取り上げます。

攻撃の流れ

図2に水飲み場攻撃の流れを示します。ユーザーが、改ざんされたWebサイトにアクセスすると偽のAdobe Flash Playerのアップデート画面が表示され、指示に従ってファイルをダウンロードおよび実行すると、マルウェアに感染します。

攻撃の流れ
図2:攻撃の流れ

改ざんされたWebサイトには、図3のようなJavaScriptが埋め込まれており、アクセスしたユーザーに日本語のポップアップメッセージが表示される仕組みになっていました。

改ざんされたWebサイトに設置されていた不正なコード
図3:改ざんされたWebサイトに設置されていた不正なコード

この水飲み場攻撃の特徴としては、マルウェア感染のために脆弱性を悪用せず、アクセスしたユーザー自身がマルウェアをダウンロードして実行しないといけないというソーシャルエンジニアリングの手法が使われていたことです。

感染するマルウェア

この攻撃によってダウンロードされるマルウェアFlashUpdateInstall.exeは、図4のとおりおとり文書を表示する機能と本体となるマルウェア(system32.dll)を作成し、実行する機能を持っています。おとり文書はテキストで、Adobe Flash Playerのアップデートが成功したことを示す文字列が書かれていました。

マルウェアのコード例
図4:マルウェアのコード例

作成されたsystem32.dllは、エクスプローラーのプロセスにインジェクション(Early Bird Injection)されます。このDLLファイルは、Cobalt Strike Beacon(バージョン4.5)でWatermarkが666666に改ざんされている特徴的なものでした。Cobalt Strikeの詳細な設定情報については、Appendix Dをご覧ください。

同一攻撃グループによる攻撃事例

今回紹介した、水飲み場攻撃に関係する攻撃グループは不明です。マルウェアの通信先には、CloudflareのエッジサーバーレスサービスであるCloudflare Workersを使用して構築されていました。また、調査の中で同じ攻撃者が本攻撃とは別の攻撃を行っていることを確認しています。図5は、C2サーバーの調査などから確認された別のマルウェアの挙動です。

同様の攻撃者が利用したと考えられるマルウェア
図5:同様の攻撃者が利用したと考えられるマルウェア

図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ファイルの実行時にEnumWindowsEnumUILanguagesの関数を使うというあまり見られないテクニックを使用していました。

DLLインジェクションテクニック
図6:DLLインジェクションテクニック

さらに、ウイルス対策ソフト(プロセス名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
≪ 前へ
トップに戻る