2021年4月7日
株式会社Doctor Web Pacific
イントロダクション
2020年9月末、Doctor Webのウイルスラボはロシアの主要な研究所の一つから、ローカルネットワークのサーバーの一台にマルウェアが存在することを示唆する技術的問題が見つかったという連絡を受け、支援を依頼されました。調査の結果、Doctor Webのウイルスアナリストはこの研究所が特殊なバックドアを用いた標的型攻撃を受けていたということを突き止めました。さらなる詳細な調査により、研究所がDoctor Webに連絡をする遥か以前からローカルネットワークが侵害されていたということ、そして入手可能なデータによると攻撃を行っていたのは複数のAPTグループであると考えられるということが明らかになりました。
調査の過程で得られたデータからは、2017年秋に最初のAPTグループによって研究所のローカルネットワークが侵害されていることが示されています。最初の感染は Gh0st RAT として知られるマルウェアの亜種である BackDoor.Farfli.130 を使用して行われています。その後2019年秋にネットワークは再び Trojan.Mirage.12 に感染し、続けて2020年6月に BackDoor.Siggen2.3268 に感染しています。
2番目のハッカーグループは遅くとも2019年4月にはネットワークに侵入しています。感染は BackDoor.Skeye.1 のインストールから始まりました。調査の過程で、このSkeyeは、ほぼ同時期である2019年5月にロシアの別の研究所のローカルネットワークにもインストールされていることが明らかになりました。
時を同じくして、2019年6月には中央アジアの複数の政府部門に対する標的型攻撃にこのバックドアが使用されているというレポートがFireEyeから公表されています。その後、Doctor Webのウイルスアナリストは2020年8月から9月の間に同じAPTグループによって、これまでに知られているDNSバックドア BackDoor.DNSep.1 や良く知られた BackDoor.PlugX を含むさまざまなトロイの木馬がこの研究所のネットワークにインストールされていることを発見しました。
Doctor Webが調査の依頼を受けた研究所のサーバーには2017年12月に BackDoor.RemShell.24 もインストールされています。このマルウェアファミリーのサンプルについては、Positive Technologies社による調査「Operation Taskmasters」内でこれまでに言及されています。2つのAPTグループの内どちらがこのバックドアを使用していたのかについては、現時点で断定するに足る十分なデータがありません。
攻撃者の特定
最初のAPTグループについて明らかになっている情報は十分ではなく、攻撃者がこれまでに言及されているハッカーグループの一つであると断定することはできません。一方で、使用されたマルウェアとインフラストラクチャに関する分析の結果、このグループは少なくとも2015年から活動しているということが明らかになっています。
研究所を攻撃した2番目のAPTグループはProofpoint社による調査「Operation Lag Time IT」内でこれまでに言及されている TA428 であると考えられます。以下の事実がそれを裏付けています。
- BackDoor.DNSep と BackDoor.Cotx バックドアのコードに明らかな共通点がある。
- BackDoor.Skeye.1 と Trojan.Loader.661 の両方が同じ攻撃に使用されており、後者はTA428のツールとして知られている。
- 本調査の過程で分析したバックドアのC&Cサーバーアドレスとネットワークインフラストラクチャに、TA428の使用するバックドアとの共通点がある。
ここで、明らかになった共通点を見ていきます。以下の図は攻撃に使用されたインフラストラクチャの一部で、 Skeyeバックドアと別の良く知られたAPTバックドアである PoisonIvy との共通点を示したものです。
以下の図はSkeyeとCotxバックドアのインフラストラクチャにおける共通点を示したものです。
DNSepバックドアに関する詳細な分析と、そのコードとCotxバックドアのコードとの比較を行った結果、両者の間にはC&Cサーバーから受け取るコマンドを処理するための全般的なロジックと個々のコマンドの特定の実行に類似点があるということが明らかになりました。
もう一つの興味深い発見は、キルギスのインシデントに関する調査を行った際にそのサンプルの一つについて既に言及しているLogtuバックドアです。このバックドアのC&Cサーバーのアドレス atob[.]kommesantor[.]comがSkeye バックドアのサーバーのものと一致していました。この点について、 BackDoor.Skeye.1 と BackDoor.Logtu.1 および BackDoor.Mikroceen.11 のサンプルとの比較分析も行いました。
使用されたマルウェアとその動作の詳細については、調査レポートのPDFバージョンまたはDr.Webウイルスライブラリを参照してください。
BackDoor.DNSep.1 と BackDoor.Cotx.1 のコードに関する比較分析
CotxとDNSepではC&Cサーバーとの通信チャネルが根本的に異なるものの、両バックドアのコードには興味深い一致が確認されました。
C&Cサーバーから受け取るコマンドの処理を担う関数は以下の構造体を引数としてとります。
struct st_arg
{
_BYTE cmd;
st_string arg;
};
また、その関数が複数の引数を受け入れる場合、それらはすべて区切り文字 | を付けて arg フィールドに書き込まれます。
BackDoor.Cotx.1 には BackDoor.DNSep.1 よりも多くのコマンドがあり、それには後者のすべてのコマンドが含まれています。
以下の表は、バックドアの一部の関数についてコードがほぼ完全に一致していることを示しています。 Cotx は Unicode エンコーディングを使用し、 DNSep は ANSI エンコーディングを使用しているという点に注意してください。
BackDoor.DNSep.1 | BackDoor.Cotx.1 |
---|---|
ディレクトリリストまたはディスク情報を送信するコマンドのハンドラ | |
ディスクに関する情報を取得する関数 | |
フォルダ内のファイルを一覧表示する関数 | |
フォルダ内のファイルに関する情報を収集する関数 | |
分析の過程で得られたデータからは、 DNSep バックドアの作成者がCotxソースコードにアクセスしていたことが示唆されています。これらのリソースは一般公開されていないことから、 DNSep の作成者ないし作成者グループはTA428と関連があるものと考えられます。侵害された同じネットワーク内で、既に知られている別の TA428 バックドアと一緒に DNSep のサンプルが発見されたという事実がこの説を裏付けています。
Skeye、Mikroceen、Logtuバックドアのコードに関する比較分析
Skeyeバックドアに関する調査の過程で、このバックドアのC&Cサーバーアドレスは Logtu バックドアのものと同じであるということが明らかになりました。比較分析では、これまでに言及した BackDoor.Logtu.1 と BackDoor.Mikroceen.11 を使用します。
ロギング関数
すべてのバックドアでロギングが難読化されています。
- BackDoor.Mikroceen.11 — %d - %d-%d %d:%d:%d <msg>\r\n 形式のメッセージが %TEMP%\WZ9Jan10.TMP ファイルに書き込まれます。 <msg> はランダムな文字列です。サンプル 2f80f51188dc9aea697868864d88925d64c26abc では、メッセージは 7B296FB0.CAB ファイルに書き込まれます。
- BackDoor.Logtu.1 — %TEMP%\rar<rnd>.tmp ファイルに書き込まれる前の [%d-%02d-%02d %02d:%02d:%02d] <rec_id> <error_code>\n<opt_message>\n\n 形式でのメッセージは 0x31 キーを使用して XOR 演算により暗号化されます。
- BackDoor.Skeye.1 — %4d/%02d/%02d %02d:%02d:%02d\t<rec_id>\t<error_code>\n 形式のメッセージが %TEMP%\wcrypt32.dll ファイルに書き込まれます。
ログへのメッセージ書き込みシーケンスの全般的なロジックも3つのサンプルすべてで類似しています。
- 実行の開始が固定されている
- Logtu および Mikroceen で C&C サーバーへの直接接続がログに記録されている
- いずれの場合も、サーバーへの接続に使用するプロキシが指定されている
- 特定のソースからプロキシを取得する際にエラーが発生した場合に備えて、個別のエントリがログに記録される。
注目すべき点は、このような詳細かつ難読化されたロギングは極めてまれであるということです。難読化には、一部のメッセージコードと、また、場合によっては追加のデータのロギングが含まれます。また、この場合、イベント記録シーケンスは原則として次のように追跡されます。
- 実行の開始
- 直接接続の試行
- プロキシアドレスの取得
- 特定のサーバー経由での接続の記録
プロキシサーバーの検索
C&Cサーバーへの接続シーケンスもまた、3つのサンプルすべてで類似しています。まず初めに各バックドアはサーバーへの直接接続を試みますが、失敗した場合はプロキシサーバーを使用します。プロキシサーバーのアドレスは組み込まれているものに加えて3つのソースから取得することができます。
BackDoor.Mikroceen.11 は次のようにプロキシサーバーのアドレスを取得することができます。
- %WINDIR%\debug\netlogon.cfg ファイルから
- 自身のログファイルから
- TCPテーブルのポート80、8080、3128、9080経由でリモートホストへの接続を検索することで
自身のログファイル内でプロキシを検索:
アクティブな接続内で検索:
BackDoor.Logtu.1 は次のようにプロキシサーバーのアドレスを取得することができます。
- レジストリ HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer から
- アクティブユーザーのSIDによりレジストリのHKUセクションから
- WinHttpGetProxyForUrl WinHTTP APIを使用してgoogle.comへのリクエスト
BackDoor.Skeye.1 は次のようにプロキシサーバーのアドレスを取得することができます。
- レジストリの Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer HCKUセクションから
- アクティブユーザーのSIDによりレジストリのHKUセクションから
- TCPテーブルのポート80、8080、3128、9080経由でリモートホストへの接続を検索することで
ネットワークインフラストラクチャにおける共通点
一部のサンプルは同じネットワークインフラストラクチャを共有しています。以下の図では、ファミリー間の関連性が明確に示されています。
ID
Logtu と Mikroceen のサンプルにはビルドIDやバージョンIDとして使用される文字列が含まれており、それら文字列の一部には同じ形式が使用されています。
BackDoor.Mikroceen.11 | BackDoor.Logtu | ||
---|---|---|---|
id | Id | id | id |
ce21f798119dbcb7a63f8cdf070545abb09f25ba | intl0113 | 029735cb604ddcb9ce85de92a6096d366bd38a24 | intpz0220 |
0eb2136c5ff7a92706bc9207da32dd85691eeed5 | hisa5.si4 | 7b652e352a6d2a511f226e4d0cc22f093e052ad8 | retail2007 |
2f80f51188dc9aea697868864d88925d64c26abc | josa5w5n | 1c5e5fd53fc2ee778342a5cae3ac2eb0ac345ed7 | retail |
2e50c075343ab20228a8c0c094722bbff71c4a2a | enc0225 | 00ddcc200d1031b8639026532c0087bfcc4520c9 | 716demo |
3bd16f11b5b3965a124a6fc3286297e5cfe77715 | 520299 | b599797746ae8ccf7907cf88de232faa30ec95e6 | gas-zhi |
5eecdf63e85833e712a1ff88df1341bbf32f4ab8 | Strive | 2d672d7818a56029b337e8792935195d53576a9d | jjlk |
bd308f4d1a32096a3b90cfdae45bbc5c13e5e801 | R0916 | ||
b1be4b2f874c8309f553acce90287c8c6bb2b6b1 | frsl.1ply | ||
21ffd24b8074d7cffdf4cc339d1fa8fe892eba27 | Wdv | ||
8fbec09e646311a285aee06b3dd45ccf58928703 | intz726 | ||
19921cc47b3de003186e65fd12b82235030f060d | 122764 | ||
0f70251abc8c64cbc7b24995c3d32927514d0a4b | V20180224 | ||
149947544ca4f7baa5bc3d00b080d0e943d8036b | SOE | ||
e7f5a33b33e023a82ac9eee6ed40e4a38ce95277 | int815 | ||
b4790eec7daa9f931bed43a53f66168b477599a7 | UOE | ||
ab660a3ac46d563c756463bd1b64cc45f347a1f7 | B.Z11NOV20D | ||
d0181759a175fbcc60975983b351f88970f484f9 | 299520 | ||
7a63fc9db2bc1e9b1ef793723d5877e6b4c566b8 | WinVideo | ||
13779006d0dafbe4b27bd282230df299eef2b8dc | SSLSSL | ||
f53c77695a162c78c68f693f57f65752d17f6030 | int007server | ||
924341cab6106ef993b506193e6786e459936069 | intl1211 | ||
8ebf78c84cd7f66ca8708467a28d83658bcf6710 | intl821 | ||
f2856d7d138430e164f83662e251ee311950d83c | intl821 |
さらに、多くのサンプルでこのIDが TEST または test の値と同じであることが確認されました。
BackDoor.Logtu.1 の例(9ea2488f07bf3edda23d9b7759c2d0c3c8501f92):
BackDoor.Mirkoceen.11 の例(81bb895a833594013bc74b429fb1f24f9ec9df26):
コード比較分析の結果、分析対象となったファミリーには次の点において類似性があることが明らかになりました。
- イベントロギングとその難読化のロジック
- C&Cサーバーとの接続ロジックとプロキシアドレスの検索アルゴリズム
- ネットワークインフラストラクチャ
まとめ
ロシアの研究所に対する攻撃に関する本調査では、Doctor Webのウイルスアナリストによって、これまでに知られていなかったサンプルを含む複数の特殊化されたバックドアのファミリーが発見され詳細がまとめられました。最初のAPTグループによってネットワーク内に侵入した不正なプログラムが2017年より気付かれることなく存在し続けていたという点は注目に値します。
特筆すべき発見の一つは、分析対象となったサンプルのコードとネットワークインフラストラクチャにおける共通点です。特定されたこれらの関連性は、今回の調査対象であるバックドアが同じAPTグループのものであるということを示すものであると考えられます。
Doctor Webでは、重要なネットワークインフラストラクチャを定期的に監視し、ネットワーク内にマルウェアが潜んでいることを示唆する障害に対して直ちに注意を向けるよう推奨しています。APT攻撃は、データが侵害されるだけでなく侵入者が企業ネットワーク内に長期間存在し続けるという点において重大な脅威となっています。これにより、侵入者が何年にもわたって企業の動向を監視し、自由に機密情報にアクセスすることが可能になります。社内ネットワーク内で悪意のあるアクティビティが疑われる場合は、Doctor Webのウイルスラボまでご連絡ください。的確な調査と最適な支援をご提供いたします。迅速な対抗措置を講じることで、標的型攻撃による被害を最小限に食い止め、深刻な結果につながることを阻止することができます。
Tell us what you think
To ask Doctor Web’s site administration about a news item, enter @admin at the beginning of your comment. If your question is for the author of one of the comments, put @ before their names.
Other comments