目 次
はじめに
こんにちは、サイバーセキュリティ本部xSIRTサービス課の刀川 郁也です。
私はCSIRT(Computer Security Incident Response Team)と呼ばれる、組織内で発生したセキュリティ事故に対処するチームに所属しています。セキュリティ事故が起きた際は緊急で事故対応を行い、平常時にも脆弱性情報の収集や、組織の従業員向けにセキュリティの啓蒙活動などをしています。
今回は、脆弱性情報収集の中で見つけた、とあるファイルの調査についてお話します。
調査のきっかけ
Windowsの高危険度の脆弱性が公表
8月にWindowsの月例パッチアップデートが発表されました。解消された脆弱性の中には、PC利用者が操作をすることなく、攻撃者が遠隔に任意のコードを実行できる、という悪用されるリスクが高い脆弱性が含まれていました。
セキュリティ業界でも話題となっており、攻撃を受けるリスクが高まることから、私の所属するCSIRTでも調査を開始しました。
調査をする観点はいくつかありますが、その中でPoC(Proof of Concept)と呼ばれる、脆弱性を検証するためのプログラムが公開されているか、という観点があります。このPoCが世に出回ると、自社環境で脆弱性が成立するか検証できるようになると共に、誰でも脆弱性を悪用できるという状況になるため、PoCが公開されていると、より早急な対処が求められるようになります。
今回の脆弱性においてもPoCがないかと調査していたところ、PoCらしきファイルをGitHubで見つけました。PoCは一般的に検証用プログラムコードとして、Pythonなどのファイル形式で公開されていることが多いのですが、このファイルはexe(実行形式)ファイルとなっていました。
違和感を覚えた私は、このファイルが本当にPoCなのか確認するために実際に動かしてみることにしました。
PoC?ファイルの挙動解析
今回は、対象ファイルを動かす検証用のWindows環境と、マルウェアだった場合に備えて、偽のDNSサーバを用意しています。もしホンモノのマルウェアだった場合に、通信が成立しないようにするためです。
解析方法には、表層解析・動的解析・静的解析があります。表層解析→動的解析→静的解析の順で、解析可能な範囲が大きくなる一方で、調査の難易度も高くなります。
特に静的解析は、プログラムを読み解く高度な知識が必要となり、解析に多くの時間を要します。そのため今回はファイルの簡単な情報を読み取る表層解析と、ファイルを動作させプロセスの挙動を調査する動的解析を実施しました。
STEP1 表層解析
では早速検証に取り掛かります。
まずは、対象ファイルのハッシュ値を取得します。ハッシュ値は任意のデータを特定のアルゴリズムに通すことで、生成される固定長の文字列です。ハッシュ値を取得することで、対象のデータを一意に識別することができます。
今回は HashSum というツールを使ってハッシュ値を取得しました。
SHA256:
0dfa551e2b12af0991714a3e5be26c9a4c00f7663f065dbf4d8b84c9abc7b97a
このファイルハッシュを、VirusTotalというオープンソースのツールで検索をかけてみます※1。
※1:本稿内のVirusTotalの結果は2024年9月17日時点の情報を記載しています。
すると、セキュリティベンダー72社のうち、47社が悪性であると判定しており、すでに怪しいファイルであることが分かります。
【参考】 CVE-2024-38143 poc.exe のVirusTotal結果
STEP2 動的解析
それでは、この怪しいファイルを実行してみます。
このファイルがアップロードされているGitHubには、実行時のイメージが添付されていました。CVE-2024-38143の脆弱性を検証するようなポップアップが表示されているのに対して、実際にはErrorのポップアップが出力されました。
目に見える動作は以上となりましたが、次は目に見えない動作を追っていきます。
今回は、プロセスの挙動をモニタリングするProcess Explorer というツールを利用します。
Process Explorerを確認すると、「CVE-2024-38143 poc.exe」を実行後に、その子プロセスとして「WerFault.exe」が実行されていることが分かります(赤枠①)。また、「svchost.exe」からも同様に「WerFault.exe」が実行されていました(赤枠②)。
さらに「Explorer.exe」からも身に覚えのない怪しげなファイル「BNZY1O1PB.exe」が実行されていることが分かります(赤枠③)。
ここまでで、自身が実行していない、見知らぬプロセスが実行されていることが分かります。
さらに挙動を明確にするために、 高機能なプロセスモニターであるProcess Monitor とそのログを整形する Noriben というツールを使います。これらのツールを使うことで実行されたコマンドやプロセス遷移を、より詳細に調査が可能です。
このツールで調査したところ、以下のようなプロセス遷移となっており対象ファイルの全体像が見えてきました。
ひとつずつ見ていきます。
最初にエクスプローラーから対象ファイルを実行した挙動です。その後、ユーザプロファイル「3389」配下で「explorer.exe」が実行されています。実際に確認してみると隠しフォルダ「3389」が作成されており、ファイルがいくつか配置されています。隠しフォルダであることから、ユーザから見えないように巧妙に細工されていると言えます。
また「3389」フォルダに配置されたこれらのファイルが、この後の動作に必要な部品であると考えられます。
また、以下のコマンドでは、「WerFault.exe」というWindowsエラー報告のプロセスを使い、プロセスID5792(CVE-2024-38143 poc.exe)を実行しようとしています。
“%WinDir%\SysWOW64\WerFault.exe -u -p 5792 -s 868”
※-pはプロセスのIDを示す
このようなWindows正規のプロセスを利用し、生成したファイルを実行する挙動は、セキュリティ製品を回避することを目的に、マルウェアでもよく見られます。
続いて以下のプロセス遷移を見ていきます。
ここでは「WMIADAP.EXE」というWindowsのシステム管理ツールを利用しています。さらに以下のコマンドラインを調査したところ、マルウェアにより悪用されている情報も多く確認されます。
以下のコマンドは、PCのパフォーマンス情報の保管場所を
最新状態にし、再同期を行う挙動です。Windowsの正規の挙動でも
ありますが、プロセスやサービス稼働状態などの、パフォーマンス情報が収集できるようになることから、マルウェアのPC内における偵察活動として利用されることもあります。
“wmiadap.exe /F /T /R”
続いて、explorer.exeから実行された 「BNZY1O1PB.exe」について調査します。
「BNZY1O1PB.exe」についても、ファイルハッシュ値を採取することができました。
SHA256:13675a7bc3274837f9e53c192646180b98b57ac9cdc675fc67c2cf2bf14df053
こちらもVirusTotalで検索すると、71社中4社が不審ファイルであると判定しています。
【参考】 BNZY1O1PB.exe のVirusTotal結果
さらに VirusTotalに投稿された情報を見ると#TROJAN #AGENT
という情報を確認しています。
この情報はトロイの木馬と呼ばれる、一見無害なプログラムを装った悪意のあるプログラムである可能性を示します。つまりマルウェアである可能性があるということです。
さらに、「BNZY1O1PB.exe」に読み込まれた「at.dll」についてもファイルハッシュ値を採取できました。
SHA256:5daf973eb400fc29ae151aef633ded1097c9f30575db222879d903a9be5c1d61
dllというアプリケーションの補助として利用される形式のファイルであるからか、このファイル自体に不審なファイル判定はありませんでした(2024/9/17時点)。
ただし、このdllファイルを呼び込むアプリケーションファイルは軒並み不審なファイルであるという判定が見られます。
つまり、不審なアプリケーションを補助する機能を持つ可能性が高いと言えます。
続いて以下のプロセス遷移を見ていきます。
ここでは「DllHost.exe」を使って、以下のコマンドが実行されています。
“%WinDir%\SysWOW64\DllHost.exe /Processid:{3E5FC7F9-9A51-4367-9063-A120244FBEC7}”
このコマンドについて調査すると、ランサムウェアLockbit3.0などでも悪用されている、ユーザーアカウント制御を回避し、権限昇格する手法であることが分かりました。つまり管理者権限などの高い権限で、コードを実行できるようになるということです。
【参考】CISA(サイバーセキュリティー・インフラセキュリティー庁)の Cybersecurity Advisory
さらに、「3dsystem.exe」と「DirectX.exe」を見ていきます。ハッシュ値を採取したところ、両ファイルのハッシュ値が一致し、同一ファイルであることが分かりました。
SHA256:13675a7bc3274837f9e53c192646180b98b57ac9cdc675fc67c2cf2bf14df053
さらに、このファイルハッシュ値は上述した 「BNZY1O1PB.exe」とも一致しており、「BNZY1O1PB.exe」がファイル名を変更して動作しているということが分かりました。
最後のプロセス遷移を見ていきます。
以下の一連のコマンドで、Windows エラー報告サービスに関連するサービスを実行しています。
「svchost.exe」でも、「WerFault.exe」を使い、プロセスID5792(CVE-2024-38143 poc.exe)を実行しようとしています。
“%WinDir%\System32\svchost.exe -k WerSvcGroup”
“%WinDir%\SysWOW64\WerFault.exe -pss -s 420 -p 5792 -ip 5792”
様々なWindows正規プロセスを用い、正常な動作に見せかけることで、アンチウイルス製品を回避する動作ではないかと推察されます。
さらに 「DirectX.exe」というファイル名に変更された 「BNZY1O1PB.exe」から、「iexplorer.exe」 と 「winver.exe」 が呼び出されていました。
このプロセスを確認すると、外部へ通信しようと試みていることが分かりました。
※実行タイミングの都合によりプロセス遷移図とPIDが異なります
また、通信パケットをキャプチャできるwiresharkでも外部へ通信しようとする挙動が確認できました。
通信を試みた外部のIPアドレスについて調べたところ、セキュリティベンダーから悪性判定はされていませんでした。しかし、「CVE-2024-38143 poc.exe」以外でも利用されるIPアドレスであることが判明し、中にはマルウェアやバックドアだと判定されているファイルもありました。
つまり、マルウェアでよく利用されるIPアドレスである可能性が高いと言えます。
【参考】通信を試みた外部のIPアドレスのVirusTotalによる判定結果
このことから、最終的には、さらに被害を拡大させるために、追加でマルウェアをダウンロードする、あるいは、前段のトロイの木馬で収集した情報を、外部へ送信しようとする動作ではないかと考えます。
本ファイルの解析結果は…
私はPoCではなく不審ファイルである可能性が高いと結論づけました。
脆弱性を検証する本来の目的を達成する動作をしておらず、悪性判定されているファイルを、ユーザから見えないように次々と展開しています。さらにバックグラウンドでは、ランサムウェアでも利用される特権昇格のコマンドが用いられるなど、危険性の高い挙動を示しているからです。
よって、Githubにアップロードされたファイルは、最新の脆弱性を調査するセキュリティ担当者や、セキュリティ研究者を狙った巧妙な攻撃である可能性が考えられます。
このようなマルウェアに有効な対策とは
上述の通り、今回の事例は、流行の脆弱性に便乗した最新のマルウェアによる攻撃である可能性が考えられます。
もし、正体を確認せずに、ダウンロード・実行していたら、マルウェアに感染していたかもしれません。
今回、ファイルをダウンロードしたGithubは、ソースコードのダウンロードなどが可能であり、開発における利便性を高める一方で、不正なプログラムやマルウェアの配信などにも利用されます。
Githubからファイルをダウンロードする前には、以下のようなポイントを確認すると良いでしょう。
・危険なファイルであるという情報がないか、ファイル名をWebで検索する
・可能な限り、公式な提供元からファイルをダウンロードする
・公式な提供元ではない場合は、信頼できるファイルの提供元であるか確認する
・ファイルをダウンロードする前に、ソースコードやファイル形式(特に実行形式ファイルには注意)を確認する
また、今回のようなPoCファイルについては、他のNW環境とは接続しない独立した環境で検証することで、社内環境などへの被害拡大を防ぐことができます。
さらに、万が一マルウェアをダウンロードや実行してしまった場合に備えて対策を取ると、より安心です。
セキュリティ担当者が安心して業務を行える環境とは
もし、今回の事例のようなファイルをダウンロードし、実行した場合でも、不審ファイルを防御してくれる環境があれば、セキュリティ担当者も安心して調査を行うことができます。
そのひとつとして、マルウェア対策ソフトが考えられますが、今回の事例では、既知のマルウェアに対応するような、マルウェア対策ソフトだけでは防御することが難しかったと思われます。
逆に、未知の脅威対策ができていれば、今回のマルウェア感染は防げる可能性が高いということです。
また、解析したプロセス遷移の序盤で、マルウェアの挙動を検知・防御することができれば、情報漏えいや攻撃者の目的遂行に至る前に、被害を食い止めることができます。このようにマルウェアが実行されても、迅速に検知・対処するためには、プロセス遷移やファイルの振る舞いから、悪性な挙動を検出する EDR( Endpoint Detection and Response )が有効な対策のひとつとなります。
エムオーテックス(MOTEX)では、このような未知の脅威に対応する、AI型のアンチウイルスソフトやEDRを取り扱うサービスをご提供しています。
それがAIアンチウイルス「LANSCOPEサイバープロテクション」です。
AIの自己学習や分析機能を駆使することで、従来の”パターンマッチング式“では検知できなかった最新の脅威も検知できる点が強みです。
また、CylancePROTECTには、マルウェアが侵入した後の検知・対応が可能となるCylance OPTICSもセットで提供しています。
アンチウイルスをEDRと併用することで、より強固なエンドポイントセキュリティの体制を確立することが可能です。
CylancePROTECTでは、今回解析した「CVE-2024-38143 poc.exe」 を検疫できていることを確認しています。
一方で、運用面で見ると検知後の対応のハードルの高さや、リソース不足からアンチウイルスとEDRの併用が上手くいっていないケースも少なくありません。
そういった方におすすめしたいのが、監視サービスも含めた「CylanceMDR」というサービスです。
- 最新のアンチウイルス「CylancePROTECT」
- EDR「CylanceOPTICS」
- EDRを用いた運用監視サービス「CylanceMDR」
上記3つをお客様の予算やご希望条件に応じて提供します。高精度なアンチウイルス・EDRを併用できる上、セキュリティのプロが24時間365日監視を行うため、より確実にマルウェアの侵入からお客様のエンドポイントを保護します。
またアンチウイルスのみ、アンチウイルス+EDRのみ導入するなど、柔軟なご提案も可能です。
最後に
セキュリティ活動を行う企業のCSIRT担当として、より一層注意を払い調査を行う必要があると再認識させられた結果になりました。
さらに、EPPやEDRは、マルウェア感染などのサイバー攻撃に対する事前防御や、早期対処が可能となるといった効果だけでなく、日々サイバー攻撃と奮闘するセキュリティ担当者が、安心して調査できる環境を構築する上でも、重要な役割を担う機能だと考えます。
従業員をサイバー攻撃から守ることはもちろん、セキュリティを担当する自身の身を守るためにも、一度MOTEXの LANSCOPE CyberProtectionをご検討してはいかがでしょうか。
▼LANSCIOEサイバープロテクション(Cylance PROTECT)
https://www.lanscope.jp/cyber-protection/cylance/cylanceprotect/
▼LANSCOPEサイバープロテクション(Cylance OPTICS)
https://www.lanscope.jp/cyber-protection/cylance/cylanceoptics/
▼LANSCOPEサイバープロテクション(Cylance MDR)
https://www.lanscope.jp/cyber-protection/cylance/cylancemdr/
最後までご覧いただきありがとうございました。
皆様に平穏な日常が訪れることを心から願っています。