サイバーリーズンのGlobal Security Operations Center(GSOC)では、影響力のある脅威に関する情報を提供するために、サイバーリーズン脅威レポートを発行しています。同レポートは、そのような脅威を調査した上で、同脅威から守るための実践的な推奨事項を提供するものです。
この脅威分析レポートにおいて、GSOCは豊富な機能を備えた情報搾取型のマルウェアであるSnakeを調査しています。本レポートでは、Snakeが持つ主要な情報窃取機能の概要を説明するほか、Snakeサンプルのステージングメカニズムと、2つの一般的な情報搾取型のマルウェアプログラムであるFormBookとAgent Teslaのステージングメカニズムとの間に発見された類似点について考察します。

Snakeマルウェアの主なポイント

  • プライバシーとセキュリティに対する深刻な脅威:Snakeは、豊富な機能を備えた情報搾取型のマルウェアです。Snakeには、キーストロークロギングだけでなく、クリップボードデータ、スクリーンショット、さらにはクレデンシャルを窃取する機能があります。Snakeは、FTP(File Transfer Protocol)クライアント、電子メールクライアント、コミュニケーションプラットフォーム、Webブラウザなど、50種類以上のアプリケーションからクレデンシャルを窃取できます。また、Snakeは、FTP、SMTP(Simple Mail Transfer Protocol)、Telegramなどのさまざまなプロトコルを通じて、窃取したデータを流出させることができます。
  • 標的とする業種や地理的場所を選ばない:Snakeは、2020年11月に初めて存在を確認されましたが、それ以降ずっと、ユーザーのプライバシーとセキュリティを常に脅かしています。Cybereason GSOCでは、2021年8月下旬にSnakeマルウェアを使用した攻撃の急増を観測しましたが、標的となった被害者の業種や地理的な場所に特定の傾向はありませんでした。
  • 検知と防御: Cybereason Defense Platformは、Snakeマルウェアを効果的に検知して防御します。
  • Cybereason Managed Detection and Response(MDR):Cybereason GSOCでは、Snakeのような情報搾取型マルウェアを使った攻撃に対して断固とした措置を取っており、そのような攻撃を「クリティカルな高重大度インシデント」として分類しています。このようなインシデントが発生した場合、 Cybereason GSOCのMDRチームは顧客向けに包括的なレポートを発行します。このレポートは、当該インシデントに関する詳細情報を提供するものであり、侵害の範囲や、顧客の環境への影響を把握するのに役立ちます。さらに、同レポートは、可能な限り帰属情報を提供するほか、脅威を軽減し隔離するための推奨事項も提供します。

Snakeマルウェアの背景

Snakeマルウェアは、プログラミング言語「.NET」で実装された情報搾取型のマルウェアです。Snakeが侵入したシステムから流出させるデータ内に、このマルウェアの名前が含まれていることから、マルウェアの作者自身がこのマルウェアを「Snake」と名付けたのではないかと考えられています。悪意あるアクターは、さまざまなテーマ(支払い要求など)を持つフィッシングメールの添付ファイルとしてSnakeを配布します。この添付ファイルは、通常、img、zip、tar、rarなどのファイル拡張子を持つアーカイブファイルであり、Snakeマルウェアを実装した.NET実行ファイルを含んでいます。同マルウェアをシステムに感染させるには、ユーザーはまず.NET実行ファイルを解凍し、続いてその解凍済みのファイルを起動する必要があります。この実行ファイルは、感染先のシステム上でSnakeマルウェアの情報窃取機能を段階的に実行した後、パーシステンスを確立します。


▲Snakeマルウェアが流出させるデータには、同マルウェアの名前が含まれている

Snakeは、2020年11月下旬に初めて発見されました。このマルウェアは現在、アンダーグラウンドシーンにおいて、25米ドルから500米ドルの価格帯で購入できます。悪意あるアクターは、2020年11月以降、フィッシング攻撃を通じてSnakeを継続的に配布しています。Cybereason GSOCでは、2021年8月下旬にSnakeマルウェアを使用した攻撃の急増を観測しましたが、標的となった業界や被害者の地理的な場所に特定の傾向はありませんでした。

Snakeは豊富な機能を備えたマルウェアであり、ユーザーのプライバシーやセキュリティに大きな脅威を与えます。Snakeには、キーストロークロギングだけでなく、クリップボードデータ、スクリーンショット、さらにはクレデンシャルを窃取する機能があります。当社では、SnakeがFTPクライアント、メールクライアント、コミュニケーションプラットフォーム、Webブラウザなど、50以上のアプリケーションからクレデンシャルを窃取できることを確認しています。また、Snakeは、FTP、SMTP、Telegramなど、さまざまなプロトコルを介したデータの流出をサポートしています。

研究者たちは、Snakeの情報窃取機能のコードと、Matiexマルウェアのコードとの間に、多くの類似点があることを確認しました。Matiexのソースコードは、2021年2月以降、アンダーグラウンドシーンで購入できるようになっていますが、2021年2月以前のSnakeの情報窃取機能のサンプルには、Matiexのコードと非常によく似たコードが含まれています。本レポートでは、Snakeの情報窃取機能に加えて、Snakeサンプルの持つステージングメカニズムが、2つの一般的な情報搾取型マルウェアプログラムであるFormBookとAgent Teslaの持つステージングメカニズムとほぼ同じであることを示します。

Snakeマルウェアの分析

Snakeのステージングメカニズム

悪意あるアクターは、Snakeマルウェアをフィッシングメールの添付ファイルとして配布します。これらの添付ファイルは、通常、.NET Windows実行ファイルを格納したアーカイブファイルであり、このファイルは、Snakeの情報窃取機能を侵入先のシステム上で段階的に実行した後、パーシステンスを確立します。このレポートでは、セキュアハッシュアルゴリズム(SHA)-1ハッシュ「392597dabf489b682dd10c20d2d84abc3b49abaa」を持ち、ファイル名がSeptemberOrderlist.pdf.exeであるSnakeのサンプルを取り上げます。


▲Snakeマルウェアを配布するフィッシングメール

ユーザーが圧縮された.NET Snakeの実行ファイルであるSeptemberOrderlist.pdf.exeを実行すると、同実行ファイルはBase-64でエンコードされ暗号化された.NETアセンブリをアンパック(デコードおよび暗号化解除)します。Snakeの実行ファイルは、このアセンブリがエンコードされ暗号化されたコードを、1つの文字列変数に格納します。SeptemberOrderlist.pdf.exeは、トリプルDES(Data Encryption Standard)暗号化アルゴリズムの対称暗号鍵を使用して、.NETアセンブリのコードを復号化します。復号された.NETアセンブリの名前は「representative 」になります。続いてSeptemberOrderlist.pdf.exe は、representativeアセンブリが実装しているPanamera.Porsche オブジェクトをインスタンス化することで、representativeアセンブリをロードして実行します。


▲SnakeはトリプルDES暗号化アルゴリズムを使用して、.NETアセンブリrepresentativeを復号化する

representativeアセンブリが持つ機能の1つに、SeptemberOrderlist.pdf.exeのイメージリソースをデコードしてロードする機能があり、これはTaskWrapperAsyncResuと呼ばれます。サンドボックス解析エンジンによる検知を避けるため、representativeアセンブリは、38~47秒のランダムなスリープ時間の後にTaskWrapperAsyncResu をデコードします。デコードされたTaskWrapperAsyncResu のイメージリソースは、CF_Secretariaという名前を持つ別の.NETアセンブリになります。


▲representativeアセンブリはCF_Secretariaアセンブリをデコードしてロードする


▲CF_Secretariaアセンブリは、イメージリソースとしてエンコードされている

CF_Secretariaアセンブリは、その他のアクティビティを実施する中で、下記の手順に従って、侵入先のシステム上でSnakeマルウェアのパーシステンスを確立します。

  • CF_Secretariaは、Snakeの実行ファイルであるSeptemberOrderlist.pdf.exeを、ユーザーのAppDataフォルダ内にランダムな名前(例:C:\Users\User\AppData\Roaming\vxhnIvyvbHAK.exe)でコピーします。ここで、vxhnIvyvbHAKという名前は、Snakeマルウェアのサンプルによって異なる場合があります。
  • CF_Secretariaは、ユーザーの一時フォルダに、拡張子が.tmpのXML形式のスケジュールタスク設定ファイルを作成します(例:C:\Users\User\AppData\Local\Temp\tmp55AB.tmp)。
  • CF_Secretaria は、たとえばUpdates\vxhnIvyvbHAKという名前のスケジュールタスクを作成します。CF_Secretariaは、このスケジュールタスクを作成するために、次のコマンドを発行します。

C:\Windows\System32\schtasks.exe /Create /TN Updates\vxhnIvyvbHAK /XML C:\Users\User\AppData\Local\Temp\tmp55AB.tmp

このスケジュールタスクは、ユーザーのログオン時に、C:\Users\User\AppData\Roaming\vxhnIvyvbHAK.exeという名の実行ファイル(これはSnakeマルウェアに他なりません)を実行します。


▲CF_Secretariaは、XML形式のスケジュールタスク構成ファイルを作成する

このステージングプロセスでは、SeptemberOrderlist.pdf.exeのもう1つのインスタンスが実行されます。SeptemberOrderlist.pdf.exeのこのインスタンスは、そのコンテキスト内でマッピングを行い、最終的なペイロードである難読化された.NETアセンブリを実行します。このアセンブリは、Snakeの情報窃取機能を実装しています(「Snakeの機能」の節を参照)。

Snakeマルウェアが持つFormBookおよびAgent Teslaとの類似点

マルウェアFormBookとAgent Teslaの最近のサンプルが持つステージングメカニズムは、Snakeのサンプルが持つステージングメカニズムとほぼ同じです。FormBookは、キーストロークロギング、クレデンシャルの窃取、スクリーンショットの窃取などのような広範な情報窃取機能を備えています。FormBookマルウェアは、2016年初頭からアンダーグラウンドシーンで販売されており、1回限りの購入として、またはサブスクリプションモデルに基づく「Malware-as-a-Service」として販売されています。Agent Teslaは、一般的なリモートアクセスツール(RAT)および情報搾取型マルウェアで、2014年後半に初めて発見されました。Agent Teslaも、アンダーグラウンドシーンで販売されています。
次の表に、類似したステージングの仕組みを持つSnake、FormBook、Agent Teslaのサンプル例を示します。続いて、SnakeサンプルとFormBookサンプルのそれぞれが持つステージングメカニズムの類似性について詳しく説明します。

Snake
SHA-1ハッシュ 392597dabf489b682dd10c20d2d84abc3b49abaa
VirusTotalへの初投稿日 2021-09-09
FormBook
SHA-1ハッシュ 43d8881c9bda6344a352d2744913dda5c64ea843
VirusTotalへの初投稿日 2021-08-26
Agent Tesla
SHA-1ハッシュ ae2e277a848421b4be46f1c6ccff727b5a07d90c
VirusTotalへの初投稿日 2021-08-26

SnakeのサンプルとFormBookのサンプルでは、同じ.NETアセンブリであるrepresentativeを、文字列変数からアンパックします。SnakeサンプルとFormBookサンプルの背後にいるアクターがrepresentativeアセンブリを変数にパックする方法は、サンプルによって異なる場合があります。また、どちらのサンプルでも、representativeアセンブリが実装しているPanamera.Porscheオブジェクトをインスタンス化することで、representativeアセンブリをロードして実行します。


▲Snake(a)とFormBook(b)によりロードされるrepresentativeアセンブリ


(a)


(b)

▲Snake (a)とFormBook (b) は、 Panamera.Porscheオブジェクトをインスタンス化する

SnakeサンプルおよびFormBookサンプルによりアンパックされたrepresentativeアセンブリは、それぞれのサンプルのイメージリソースをデコードします。デコードされたイメージリソースは、CF_Secretariaと呼ばれる同様の.NETアセンブリであり、これはrepresentativeアセンブリによってデコードされロードされます。


▲Snake(a)とFormBook(b)によりロードされるCF_Secretariaアセンブリ

SnakeサンプルとFormBookサンプルのそれぞれが持つステージングメカニズムは、最終的なペイロード(つまりSnakeとFormBookの情報窃取機能)を展開する時点で大きく異なります。Snakeサンプルの最終ペイロードは、同サンプルの独立したインスタンスのコンテキストで実行される.NETアセンブリであるのに対して、FormBookサンプルの最終ペイロードはWindowsのネイティブ実行ファイルです。FormBookサンプルは、explorer.exeやwlanext.exeなどの正規のWindowsプロセスに、その最終ペイロードをインジェクトします。以前の調査では、FormBookサンプルの最終ペイロードの展開に関してより詳細に文書化されています。


▲プロセスツリー:Snakeサンプル(a)とFormBookサンプル(b)による最終ペイロードの展開

Snakeの持つステージングメカニズムと、FormBookやAgent Teslaのような一般的な情報搾取型マルウェアのステージングメカニズムがほぼ同じであるという事実を考慮するならば、本レポートで分析したSnakeサンプルの背後にいるアクターは、マルウェア市場で他のアクターからステージングメカニズムを購入するなどして入手した可能性があります。また、同じアクターが、ステージングメカニズムを共有するSnake、FormBook、Agent Teslaのサンプルを配布している可能性もあります。

Snakeマルウェアが持つステージング型の情報窃取機能自体がMatiexマルウェアをベースにしているというはっきりとした徴候を加味するならば、前者のシナリオは、マルウェア開発者にとってコードを再利用して新たなマルウェアを作成することがいかに容易であるかを示しています。本レポートでは、Snake、FormBook、Agent Teslaの各マルウェアのサンプルを中心に取り上げていますが、他のマルウェアでも、今回分析したサンプルと同じステージングメカニズムを使用している可能性があります。

Snakeマルウェアの機能

このセクションでは、当社が分析したSnakeサンプル(SeptemberOrderlist.pdf.exe)の主要な情報窃取機能の概要を示します。異なるSnakeサンプルでは、実装されているすべての機能を使用していない場合があることにご注意ください。過去の調査によれば、悪意あるアクターはビルダーツールを使用してSnakeサンプルをビルドしており、ビルドされたサンプルにはすべてのSnake機能が含まれていますが、当該アクターにより選択された機能のみが有効となることが示されています。

パーシステンスを実現するために、Snakeは、ステージングメカニズムを利用してスケジュールタスクを作成することに加えて、レジストリキー「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 」を編集することで、ユーザーのログオン時に自分自身を実行できるようにします。

検知を回避するために、Snakeは、Avastアンチウイルスに関連するavastui プロセスや、Wiresharkネットワークトラフィックアナライザに関連するwiresharkプロセスなど、関連するプロセスを停止することで、マルウェアの動作を検知する可能性のあるソリューションを無効化できます。下記の表に、Snakeが停止するプロセス名の一覧を示します。また、PowerShellコマンド「powershell.exe Add-MpPreference -ExclusionPath」を実行し、Snake実行ファイルのパスを指定することで、Snakeは、Windows Defenderのセキュリティメカニズムの除外リストに自分自身を追加できます。

zlclient

egui

bdagent

npfmsg

olydbg

anubis

wireshark

avastui

_Avp32

vsmon

mbam

keyscrambler

_Avpcc

_Avpm

Ackwin32

Outpost

Anti-Trojan

ANTIVIR

Apvxdwin

ATRACK

Autodown

Avconsol

Ave32

Avgctrl

Avkserv

Avnt

Avp

Avp32

Avpcc

Avpdos32

Avpm

Avptc32

Avpupd

Avsched32

AVSYNMGR

Avwin95

Avwupd32

Blackd

Blackice

Cfiadmin

Cfiaudit

Cfinet

Cfinet32

Claw95

Claw95cf

Cleaner

Cleaner3

Defwatch

Dvp95

Dvp95_0

Ecengine

Esafe

Espwatch

F-Agnt95

Findviru

Fprot

F-Prot

F-Prot95

Fp-Win

Frw

F-Stopw

Iamapp

Iamserv

Ibmasn

Ibmavsp

Icload95

Icloadnt

Icmon

Icsupp95

Icsuppnt

Iface

Iomon98

Jedi

Lockdown2000

Lookout

Luall

MCAFEE

Moolive

Mpftray

N32scanw

NAVAPSVC

NAVAPW32

NAVLU32

Navnt

NAVRUNR

Navw32

Navwnt

NeoWatch

NISSERV

Nisum

Nmain

Normist

NORTON

Nupgrade

Nvc95

Outpost

Padmin

Pavcl

Pavsched

Pavw

PCCIOMON

PCCMAIN

Pccwin98

Pcfwallicon

Persfw

POP3TRAP

PVIEW95

Rav7

Rav7win

Rescue

Safeweb

Scan32

Scan95

Scanpm

Scrscan

Serv95

Smc

SMCSERVICE

Snort

Sphinx

Sweep95

SYMPROXYSVC

Tbscan

Tca

Tds2-98

Tds2-Nt

TermiNET

Vet95

Vettray

Vscan40

Vsecomr

Vshwin32

Vsstat

Webscanx

WEBTRAP

Wfindv32

Zonealarm

LOCKDOWN2000

RESCUE32

LUCOMSERVER

avgcc

avgcc

avgamsvr

avgupsvc

avgw

avgcc32

avgserv

avgserv9

avgserv9schedapp

avgemc

ashwebsv

ashdisp

ashmaisv

ashserv

aswUpdSv

symwsc

norton

Norton Auto-Protect

norton_av

nortonav

ccsetmgr

ccevtmgr

avadmin

avcenter

avgnt

avguard

avnotify

avscan

guardgui

nod32krn

nod32kui

clamscan

clamTray

clamWin

freshclam

oladdin

sigtool

w9xpopen

Wclose

cmgrdian

alogserv

mcshield

vshwin32

avconsol

vsstat

avsynmgr

avcmd

avconfig

licmgr

sched

preupd

MsMpEng

MSASCui

Avira.Systray

▲Snakeマルウェアが停止するプロセスの名前


▲Snakeマルウェアによるプロセスの停止

Snakeは自己削除機能を備えており、Snakeが自己削除処理を開始すると、同マルウェアは3秒のタイムアウト後にdelコマンドを使って自分自身を削除します。


▲Snakeマルウェアは自分自身を削除する

Snakeは、同マルウェアが実行されている侵入先の環境に関して、次のような情報を収集できます。

  • オペレーティングシステムとハードウェアに関する情報:Snakは、オペレーティングシステムの名前とバージョン、ハードディスクと物理メモリの容量、およびマシン名を取得します。
  • 地理的位置や日時に関する情報:Webサービスcheckip.dyndns.org およびfreegeoip.appにリクエストを発行することで、Snakeが動作しているOSのIPアドレスを明らかにした上で、そのIPアドレスに基づいて同システムが置かれている地理的位置を明らかにします。

過去の調査によれば、Snakeマルウェアは上記の情報を使用して、侵入先のシステム上で完全な攻撃を実行するかどうかを決定すると言われています。ただし、当社が分析したSnakeのサンプルは、そのようなことは行わず、窃取したデータのうち地理的位置と日時の情報のみを流出させるものでした。


▲Snakeマルウェアは、オペレーティングシステム、ハードウェア、地理的位置、および日時に関する情報を収集する

Snakeには多くの情報窃取機能があり、それらはユーザーのプライバシーやセキュリティにとって大きな脅威となっています。下記の図は、Snakeマルウェアの持つ情報窃取機能を体系化したものです。


▲Snakeが持つ情報窃取機能の体系化

キーストロークロギング

Snakeマルウェアは、SetWindowsHookExA関数とCallNextHookEx関数を使用して、キーの押下イベントをキャプチャします。また、Snakeは、ユーザーがシステムキーを押した際にもキーロギングを実施します。これは、ユーザーがF10キーの後やALTキーと一緒に押したキーも記録することを意味します。また、 Snakeは、ユーザーが非システムキーを押した際のキー(ユーザーがALTキーを同時に押すことなく押したキー)も記録します。Snakeは、記録したキーストロークを1つの変数に格納します。


▲Snakeマルウェアはキーストロークロギングを実行する

クリップボードデータの窃取

SnakeはIsClipboardFormatAvailable関数を起動して、Unicodeテキスト形式(Microsoftの標準クリップボード形式であるCF_UNICODETEXT)のクリップボードデータが利用可能であるどうかを判定します。
その後、SnakeはOpenClipboard関数を起動してクリップボードデータをオープンしてロックした後、続いてGetClipboardData関数を起動してUnicodeテキスト形式のデータを取得します。さらに、SnakeマルウェアはClipboardProxy.GetText関数を使用して、標準的な米国規格協会(ANSI)形式またはUnicodeテキスト形式でクリップボードデータを取得します。Snakeは、クリップボードデータを1つの変数に格納します。


▲Snakeマルウェアはクリップボードのデータを取り出す

スクリーンショットの窃取

SnakeマルウェアはGraphics.CopyFromScreen関数を使用して、画面全体のスクリーンショットを撮影します。Snakeはそのスクリーンショットを%MyDocuments%\SnakeKeylogger\Screenshot.pngファイルに保存します。当該ディレクトリが存在しない場合、Snakeは%MyDocuments%\SnakeKeyloggerディレクトリを作成します。スクリーンショットを撮影した後、Snakeはまず「データの流出」セクションで説明した手順に従ってScreenshot.pngファイルを流出させ、その後、同ファイルを削除します。


▲Snakeマルウェアはスクリーンショットを撮影し保存する

クレデンシャルの窃取

Snakeは、通信プラットフォーム、FTPクライアント、電子メールクライアント、Webブラウザが利用するクレデンシャルデータベースから、保存されたクレデンシャルを窃取できます。下記の表は、Snakeが保存されたクレデンシャルを盗むことができるアプリケーション(「アプリケーション」欄)と、Snakeがクレデンシャルを取り出すためにアクセスするアプリケーションのクレデンシャルデータベースの場所(「クレデンシャルデータベース」欄)を示しています。当社が分析したSnakeマルウェアのサンプルは、59種類のアプリケーションからクレデンシャルを窃取することが可能であり、そのうち52件はWebブラウザでした。なお、下記の表では次の環境変数を使用しています。

  • %AppData%および%LocalAppData%は、ファイルシステムのパス(例:C:\Users\user\AppData やC:\Users\user\AppData\Localなど)へと解決されるWindows環境変数です。
  • %FoxmailInstallation%は、Foxmailメールクライアントのインストールディレクトリ(例:C:\Program Files\Foxmail 7.2など)を指し、$email は設定されたメールアドレス(例:test@domain.com.など)を指します。
アプリケーション クレデンシャルデータベース(ファイルまたはWindowsレジストリの値)
通信プラットフォーム
Discord %AppData%\discord\Local Storage\leveldb\[*].ldb
Pidgin %AppData%\.purple\accounts.xml
FTPクライアント
FileZilla %AppData%\FileZilla\FileZilla\recentservers.xml
メールクライアント
Foxmail $FoxmailInstallation\Storage\$email\Accounts\Account.rec0
Outlook HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Profiles\O utlook\9375CFF0413111d3B88A00104B2A6676\[Email\IMAP
Password\POP3 Password\HTTP Password\SMTP Password]

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\[Email
\IMAP Password\POP3 Password\HTTP Password\SMTP Password]

HKEY_CURRENT_USER\Software\Microsoft\Windows Messaging Subsystem\Profiles\9375CFF0413111d3B88A00104B2A6676\[Email\IMAP Password\POP3 Password\HTTP Password\SMTP Password]

HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Profiles\O utlook\9375CFF0413111d3B88A00104B2A6676\[Email\IMAP
Password\POP3 Password\HTTP Password\SMTP Password]

PostBox %AppData%\PostboxApp\Profiles\logins.json
Thunderbird %AppData%\Thunderbird\Profiles\logins.json
Webブラウザ
360 Browser %LocalAppData%\360Browser\Browser\User Data\Default\Login Data
360Chrome %LocalAppData%\360Chrome\Chrome\User Data\Default\Login Data
7 Star %LocalAppData%\7Star\7Star\User Data\Default\Login Data
Amigo %LocalAppData%\Amigo\User Data\Default\Login Data
Avast Secure Browser %LocalAppData%\AVAST Software\Browser\User Data\Default\Login Data
BlackHawk %LocalAppData%\BlackHawk\User Data\Default\Login Data
Blisk %LocalAppData%\Blisk\User Data\Default\Login Data
Brave %LocalAppData%\BraveSoftware\Brave-Browser\User Data\Default\Login Data
CentBrowser %LocalAppData%\CentBrowser\User Data\Default\Login Data
Chedot %LocalAppData%\Chedot\User Data\Default\Login Data
Chrome %LocalAppData%\Google\Chrome\User Data\Default\Login Data
Chrome Canary %LocalAppData%\Google\Chrome SxS\User Data\Default\Login Data
ChromePlus %LocalAppData%\MapleStudio\ChromePlus\User Data\Default\Login Data
Chromium %LocalAppData%\Chromium\User Data\Default\Login Data
Citrio %LocalAppData%\CatalinaGroup\Citrio\User Data\Default\Login Data
Coc Coc %LocalAppData%\CocCoc\Browser\User Data\Default\Login Data
Comodo Dragon %LocalAppData%\Comodo\Dragon\User Data\Default\Login Data
Coowon %LocalAppData%\Coowon\Coowon\User Data\Default\Login Data
Cyberfox %AppData%\8pecxstudios\Cyberfox\Profiles\logins.json
Edge %LocalAppData%\Microsoft\Edge\User Data\Default\Login Data
Elements %LocalAppData%\Elements Browser\User Data\Default\Login Data
Epic %LocalAppData%\Epic Privacy Browser\User Data\Default\Login Data
Firefox %AppData%\Mozilla\Firefox\Profiles\logins.json
Ghost Browser %LocalAppData%\GhostBrowser\User Data\Default\Login Data
IceCat %AppData%\Mozilla\icecat\Profiles\logins.json
IceDragon %AppData%\Comodo\IceDragon\Profiles\logins.json
Iridium %LocalAppData%\Iridium\User Data\Default\Login Data
Kinza %LocalAppData%\Kinza\User Data\Default\Login Data
Kometa %LocalAppData%\Kometa\User Data\Default\Login Data
Liebao %LocalAppData%\Liebao7\User Data\Default\EncryptedStorage
Nichrome %LocalAppData%\Nichrome\User Data\Default\Login Data
Opera %AppData%\Opera Software\Operate Stable\Login Data
Opera %AppData%\Opera\Opera\profile\wand.dat
Orbitum %LocalAppData%\Orbitum\User Data\Default\Login Data
Pale Moon %AppData%\Moonchild Productions\Pale Moon\Profiles\logins.json
QIP Surf %LocalAppData%\QIP Surf\User Data\Default\Login Data
QQBrowser %LocalAppData%\Tencent\QQBrowser\User Data\Default\Login Data
SalamWeb %LocalAppData%\SalamWeb\User Data\Default\Login Data
SeaMonkey %AppData%\Mozilla\SeyMonkey\Profiles\logins.json
Sleipnir %AppData%\Fenrir Inc\Sleipnir5\setting\modules\ChromiumViewer\Default\Login Data
SlimBrowser

%AppData%\FlashPeak\SlimBrowser\Profiles\logins.json
Slimjet

%LocalAppData%\Slimjet\User Data\Default\Login Data
Sputnik

%LocalAppData%\Sputnik\Sputnik\User Data\Default\Login Data
SuperBird

%LocalAppData%\SuperBird\User Data\Default\Login Data
Torch

%LocalAppData%\Torch\User Data\Default\Login Data
UC Browser

%LocalAppData%\UCBrowser\User Data_i18n\Default\UC Login Data.18
Uran

%LocalAppData%\uCozMedia\Uran\User Data\Default\Login Data
Vivaldi

%LocalAppData%\Vivaldi\User Data\Default\Login Data
Waterfox

%AppData%\Waterfox\Profiles\logins.json
Xpom

%LocalAppData%\Xpom\User Data\Default\Login Data
Xvast

%LocalAppData%\Xvast\User Data\Default\Login Data
Yandex

%LocalAppData%\Yandex\YandexBrowser\User Data\Default\Ya Login Data

▲Snakeがクレデンシャルを窃取できるアプリケーションとそのクレデンシャルデータベース

通信プラットフォーム、FTPクライアント、電子メールクライアント、Webブラウザに加えて、Snakeは無線ネットワークからも保存されたクレデンシャルを窃取できます。これを行うために、Snakeはまず「netsh wlan show profile」コマンドを呼び出して既存の無線ネットワークプロファイルをリストし、当該コマンド出力からそれらの情報を取り出します。無線ネットワークプロファイルとは、保存されたクレデンシャルを含む各種のネットワーク設定を集めたものです。続いてSnakeは、各プロファイルに対して「netsh wlan show profile name=”%name%” key=clear」コマンドを実行することで、プロファイルの一部として保存されている暗号化されていない保存パスワードを当該コマンド出力から取り出します。
Snakeマルウェアは、マルウェアが実行されているWindowsインスタンスのプロダクトキーを窃取できます。これを行うために、Snakeは、レジストリ値「HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows NT\CurrentVersion\DigitalProductID」を取り出してデコードします。

Snakeが標的とする通信プラットフォーム、FTPクライアント、電子メールクライアント、Webブラウザのクレデンシャルデータベースは、通常、クレデンシャルを暗号化された形で保存しています。Snakeはクレデンシャルを復号化した上で、その復号化されたクレデンシャルを1つの変数に格納した後、「データの流出」セクションで紹介した手順に従ってクレデンシャルを流出させます。Snakeがクレデンシャルを窃取するWebブラウザのほとんどは、Login Dataファイル(主にChromiumベースのブラウザで使用される)またはlogins.jsonファイル(主にGeckoベースのブラウザで使用される)のいずれかにクレデンシャルを保存します。

Login Dataファイルは、SQLiteデータベースです。このデータベースにはloginsテーブルがあり、同テーブルのorigin_url フィールドにはクレデンシャルで保護されたユニフォームリソースロケーター(URL)が、username_valueフィールドとpassword_valueフィールドにはURL用に保存されたユーザー名とパスワードがそれぞれ格納されます。パスワードは暗号化されています。Chromiumベースのブラウザの最近のバージョンでは、保存されたパスワードをAES(Advanced Encryption Standard)-256対称暗号鍵を使って暗号化しています。同ブラウザは、AES キーを暗号化された形式で、ファイルシステム上ある%LocalAppData%ディレクトリ内のLocal Stateファイルとして保存します(例:%LocalAppData%\Google\Chrome\User Data\Local State)。

ブラウザは、MicrosoftのDPAPI(Data Protection Application Programming Interface)暗号化メカニズムを使用してAESキーを暗号化します。DPAPIは、2つのデータ保護(暗号化)スコープをサポートしています。それらのスコープのうちの1つが「ユーザー(ユーザー固有の暗号化キーを使用してデータを暗号化し、特定のログインしたユーザーのみがデータを復号化できる)」であり、もう1つが「マシン(マシン固有の暗号化キーを使用してデータを暗号化し、特定のマシンにログインしたすべてのユーザーがデータを復号化できる」です。Chromiumベースのブラウザの古いバージョンでは、保存したパスワードを暗号化する際にAESを使用せず、ユーザー保護スコープにおけるDPAPIメカニズムを使用することで、保存したパスワードをダイレクトに暗号化しています。

Snakeマルウェアは、ChromiumベースのブラウザがDPAPIまたはAESキーを最初に使ってダイレクトに暗号化したパスワードを復号化できます。

  • Snakeは、DPAPIをユーザー保護スコープで使用して、CryptUnprotectData関数を呼び出すことで、パスワードを復号化します。
  • Snakeはまず、DPAPIをユーザー保護モードで使用してProtectedData.Unprotect関数を呼び出すことで、Local Stateファイルに保存されているAES暗号化キーを復号化します。続いて、そのAES暗号化キーを使用してBCryptDecrypt関数を呼び出すことで、保存されているパスワードを復号化します。


▲Snakマルウェアは、Login Dataファイルに保存されているパスワードを復号化する

logins.jsonファイルは、JSON(JavaScript Object Notation)形式のファイルであり、同ファイルのencryptedUsername フィールドには暗号化されたユーザー名が、encryptedPasswordフィールドには暗号化されたパスワードが格納されています。Gecko ベースのブラウザは、保存されたユーザー名とパスワードを、トリプルDESアルゴリズムを使って暗号化します。MozillaのNetwork Security Services(NSS)ライブラリは、Geckoベースのブラウザによって暗号化されたクレデンシャルを復号するPKCS11_Decrypt関数を実装しています。


▲Snakeマルウェアは、logins.jsonファイルに保存されているクレデンシャルを復号化する

Snakeマルウェアは、次の手順に従って、logins.jsonファイルに保存されているクレデンシャルを復号化します。

  1. Snakeは、NSSライブラリを実装したダイナミックリンクライブラリ(DLL)ファイルであるnss3.dllを見つけてこれをロードした後、NSS_Init関数を呼び出してNSSを初期化します。
  2. Snakeは、%ProgramFilesX86%および%ProgramFiles%ディレクトリ内の複数の場所でnss3.dllを検索します。
  3. Snakeは、PK11SDR_Decrypt関数を呼び出して、暗号化されたユーザー名とパスワードを復号化します。
  4. Snakeは、NSS_Shutdown関数を呼び出して、NSSライブラリをシャットダウンします。

データの流出

Snakeは、下記のプロトコルを使用して、キーストロークロギング、窃取したクレデンシャル、クリップボードデータ、スクリーンショットなどを流出させることができます。

  • Snakeは、攻撃者が管理するFTPサーバーにログインし、STORコマンドを発行することで、窃取したデータをサーバーにアップロードします。Snakeは、アップロードしたデータを次のようなファイル形式でFTPサーバー上に保存します。
    ○ データがクレデンシャル、キーストロークロギング、クリップボードデータである場合、ファイル拡張子は.txtであり、ファイル名には、データのタイプに応じてそれぞれPasswords ID、 keystroke Logs ID、Clipboard Logs IDのいずれかが含められます。
    ○ データがスクリーンショットである場合、ファイル拡張子は.pngであり、ファイル名にはScreenshot Logs ID が含められます。
  • SMTP:Snakeは、攻撃者が管理するSMTPサーバーにログインした後、悪意ある添付ファイル付きのメールを作成した上で、標的とするメールアドレスに同メールを送信します。添付ファイルには、窃取したデータが保存されています。この添付ファイルは次の形式を持ちます。
    ○ 窃取したデータがクリップボードデータまたはキーストロークロギングである場合、データのタイプに応じて、ファイル名はそれぞれClipboard.txt またはKeystrokes.txtになります。
    ○ 窃取したデータがクレデンシャル(パスワードまたはユーザー名)である場合、データのタイプに応じて、ファイル名はそれぞれPasswords.txt aおよびUser.txtになります。
    ○ 窃取したデータがスクリーンショットである場合、ファイル名はScreenshot.pngになります。
  • Telegram/HTTPS(HyperText Transfer Protocol Secure):SnakeはTelegramのエンドポイントapi.telegram.org にPOSTリクエストを発行することで、攻撃者がコントロールするTelegramのチャットにドキュメントを送信します。このドキュメントには、窃取したデータが含まれています。同ドキュメントのファイル名は、データがクリップボードデータ、スクリーンショット、キーストロークロギング、クレデンシャルのうちどれであるかに応じて、それぞれClipboard.txt、Screenshot.png、SnakeKeylogger.txt、SnakePW.txtになります。

Snakeは、定期的な時間間隔で、キーストロークロギング、スクリーンショット、クリップボードデータ、およびクレデンシャルを流出させることができます。


▲The Snakeマルウェアは、窃取したクレデンシャルをSMTP経由で流出させる

IOC(Indicators of Compromise:痕跡情報)

  • 実行ファイル:SHA-256 hash: 132482335f028ceb6094d9c29442faf900d838fb054eebbbf39208bb39c cf5ae
    ファイルサイズ:691200バイト
  • スケジュールタスク: Updates\vxhnIvyvbHAK
    注:vxhnIvyvbHAKという名前は、Snakeマルウェアのサンプルによって異なる場合があります。
  • ドメイン:checkip.dyndns.org freegeoip.app

MITRE ATT&CKとの対応

戦術 手法またはサブ手法
TA0001: 初期アクセス T1566.001: フィッシング:スピアフィッシング用の添付ファイル

TA0002: 実行 T1204.002: ユーザー実行:悪意あるファイル

TA0003: パーシステンス T1053.005: スケジュールタスク/ジョブ:スケジュールタスク

TA0003: パーシステンス T1547.001: ブートまたはログオン時の自動起動実行:レジストリ Runキー/ Startupフォルダ

TA0005: 防御回避 T1070.004: ホスト上でのインジケータの削除/ファイルの削除
TA0005: 防御回避 T1112: レジストリの改変
TA0005: 防御回避 T1562.001: 防御力の低下:ツールの無効化や改変
TA0005: 防御回避 T1562.004: 防御力の低下:システムファイアウォールの無効化や改変
TA006: クレデンシャルアクセス T1552.001: 保護されていないクレデンシャル:ファイル内のクレデンシャル
TA006: クレデンシャルアクセス T1552.002: 保護されていないクレデンシャル:レジストリ内のクレデンシャル
TA0007: 検出 T1083: ファイルとディレクトリの検出
TA0007: 検出 T1082: システム情報の検出
TA0007: 検出 T1614: システムロケーションの検出
TA0007: 検出 T1016: システムのネットワーク構成の検出
TA0007: 検出 T1124: システム時間の検出
TA0009: 収集 T1115: クリップボードデータ
TA0009: 収集 T1005: ローカルシステム内のデータ
TA0009: 収集 T1056.001: 入力のキャプチャ:キーロギング
TA0009: 収集 T1113: スクリーンキャプチャ
TA0010: 収集 T1020: 自動化された流出
TA0010: 収集 T1048: 別のプロトコル経由で流出
TA0010: 収集 T1029: スケジュールされた転送

Snakeマルウェア検知と防御

Cybereason Platform

Cybereason Defense Platform は、脅威インテリジェンス、機械学習、次世代アンチウイルス(NGAV)などの機能を通じてマルウェアを検知しブロックするような多層型の防御を利用することにより、Snakeマルウェアを検知した上で、その実行を阻止できます。


▲Cybereason Platformは脅威インテリジェンスに基づいてSnakeマルウェアを検知する

Cybereason GSOC MDR

Cybereason GSOCでは、次のことを推奨しています。

  • Cybereason NGAVのAnti-Malware機能を有効にし、同機能のDetectおよびPreventモードを有効にすること。
  • 外部ソースから送られてきた電子メールをセキュアに処理すること。これには、ハイパーリンクを無効化することや、電子メールメッセージの内容を調査してフィッシングの試みを特定することなどが含まれます。
  • セキュアなパスワードを使用した上で、定期的にパスワードを変更すること。また、可能な限り多要素認証を使用すること。
  • 発信されるネットワークトラフィックを定期的に監視することで、データ流出アクティビティを検知すること。
  • Snakeのプロアクティブなハンティングを行うために、CybereasonプラットフォームのInvestigation(調査)画面と、Hunting Queryセクションにおけるクエリを使用して、Snakeに感染している可能性のあるマシンを検索すること。その後、この検索結果に基づいて、さらなる対応策を講じること。例としては、感染したマシンのユーザーを無効にすることなどが挙げられます。

【ホワイトペーパー】有事を見据えたセキュリティ運用とは?〜攻撃事例から学ぶサイバー脅威対策〜

サイバー攻撃は進化を止めず、その被害は組織の存続さえ揺るがす時代。

昨今、特に注意しなければならないのが、サプライチェーン攻撃の新たな手法です。標的となる組織のセキュリティが堅固となってきたため、セキュリティが手薄な別の組織を踏み台にして標的組織を攻撃するというように、サプライチェーン攻撃はますます巧妙化しています。

このガイドは、重大なセキュリティインシデントに直面した時、慌てず騒がず対応するために。
セキュリティ担当者はもちろん、経営課題として平時から取り組むべきサイバー脅威対策について、最新の攻撃事情とともに紹介します。
https://www.cybereason.co.jp/product-documents/brochure/6938/