CARBANAK 第 2 週: CARBANAK ソースコード分析の続き

carbanak-week-banner news

carbanak-week-banner

更新 (4 月 30 日): 4 部構成の CARBANAK Week ブログ シリーズのリリースに続いて、多くの読者が、これらの投稿で共有されたデータを実用的なものにする場所を見つけました。この記事を更新して、この情報の一部を含めました。

前回の記事では、CARBANAK で文字列ハッシュを使用して、コードベース全体で Windows API の解決を管理する方法について説明しました。しかし、著者はこの同じ文字列ハッシュ アルゴリズムを別のタスクにも使用しました。今回の記事では、中断したところから取り上げて、CARBANAK のウイルス対策 (AV) 検出、AV 回避、作成者のアーティファクト、エクスプロイト、シークレット、およびネットワーク ベースのインジケーターについて説明します。

ウイルス対策の回避

ソース コードは、文字列ハッシュの分析を間違いなく高速化します。たとえば、図 1 に示すように、AV.cpp 内の関数 AVDetect はプロセスを繰り返し、プロセス名のハッシュによって AV を検出します。

プロセス名ハッシュによるウイルス対策検出
図 1: プロセス名ハッシュによるウイルス対策検出

CARBANAK はこの情報で何をしますか?搭載されているものに応じてAVを回避。図 2 は、作成者がコメントアウトして無効にした AVG 回避のコードを示しています。これに基づくと、AVG 回避は廃止されたように見えますが、FLARE チーム メンバーのRyan Warnsは 2017 年 11 月に、1 つのマイナーな調整でまだ機能していることを確認しました。 FLARE は確認後、直ちに AVG にこれを開示しました。アバストは、私たちの開示後、影響を受ける DLL を更新して DLL_PROCESS_DETACH を無視し、そのフックをそのままにしたことを示しています。

ソース コードをコメント アウトして、AVG ユーザー空間フックをアンロード
図 2: AVG ユーザー空間フックをアンロードするためにコメント アウトされたソース コード

2017 年 11 月、FLARE はトレンド マイクロのプロセス インジェクションの検出を回避する方法も明らかにしました。この回避は、リモート ヒープの割り当てと CreateRemoteThread の呼び出しを、メモリ マッピングと QueueUserAPC を介した非同期プロシージャ コールのキューイングに置き換える、 Carberpで使用される手法を反映しています。開示に続いて、トレンドマイクロは、動作監視ルールを更新し、この動作をカバーする新しい「攻撃的イベント」検出機能を備えたウイルスバスター Corp. XG SP1 を 2017 年 12 月にリリースしたことを示しました。

著者の特徴付け

ソース コードがあれば、キーボードの背後にいる個人について学ぶユニークな機会が得られる可能性があります。そのために、個人を指し示す可能性のあるソース コード ダンプ内のアーティファクトを検索しました。ほとんどの情報は、Visual Studio ソリューション ファイルで見つかりました。これらのほとんどはドライブ O: をソース ルートとして参照していましたが、次のホスト パスが見つかりました。

  • C:Users博麗霊夢AppDataLocalTemp
  • C:UsersIgorAppDataLocalTemp
  • E:ProjectsprogsPetrosjanWndRec…
  • E:ProjectsprogssbuWndRec…

残念ながら、これらのデータ ポイントから多くの答えが得られるわけではありません。それらが後のアーティファクトで観察された場合、関連性が推測される可能性がありますが、この記事の執筆時点では、作者についてはあまり知られていません.

ソースコード調査

CARBANAK のソース コードには、多数のエクスプロイト、以前の C2 ホスト、パスワード、およびキー マテリアルが含まれていました。私はこれらを包括的に調査し、それらが新しい結論につながるかどうか、または以前の観察を裏付けているかどうかを判断することにしました.

エクスプロイト

CARBANAK の作成者が、公開されていないエクスプロイトを使用したかどうかを知りたいと思いました。それどころか、すべてのエクスプロイトが十分に文書化されていることがわかりました.表 1 は、CARBANAK のソース コード ダンプから確認したエスカレーション コードを示しています。

名前

CVE

ノート

PathRec

2013-3660

2013 年 5 月からの概念実証 (poc) のエクスプロイト

スドロップ

2013-3660

2013 年 6 月のエクスプロイト poc

NDProxy

2013-5065

NDProxy.sys エクスプロイトは、もともと secniuによって作成されました

UACバイパス

Carberpで見つかった DLL ハイジャックによる UAC バイパス

COM

IFileOperation COM インターフェイスを介して昇格プロンプトとダイアログを無効にすることによる UAC バイパス

CVE-2014-4113

2014-4113

オンラインで見つかるコードから派生した Win32k.sys エクスプロイト

ブラックエナジー2

AppCompat shim ベースの UAC バイパス

EUDC

2010-4398

EUDC エクスプロイトによる UAC バイパス

表 1: CARBANAK のソース コードで見つかった昇格のエクスプロイト

CARBANAK のソース コードには、lsass.exe からパスワードをダンプするための sekurlsa モジュールや、複数のリモート デスクトップ プロトコル接続を可能にするターミナル サービスのパッチ コードなど、 Mimikatzから大量にコピーされたコードも含まれています。

シークレット

私の分析には、ソース コードと付随するバイナリで見つかったパスワードとキー マテリアルの監査が含まれていました。これらの多くはデバッグ バージョンに使用されていましたが、ソース コードで使用されているパスワードに基づいて将来のパスワードを推測する必要が生じた場合に備えて、参照用に厳選しました。表 2 は、RC2 暗号化通信およびその他の目的で使用される回復されたパスワードを、ソース コード内の対応する名前と、それらが検出されたときの状態 (ソース コードでアクティブ、コメント アウト、またはバイナリにコンパイル) とともに示しています。

ソースコードごとの資格識別子

パスワード

状態

管理者のパスワード

1He9Psa7LzB1wiRn

アクティブ

管理者のパスワード

1234567812345678

コメントアウト

管理者のパスワード

cbvhX3tJ0k8HwnMy

アクティブ

管理者のパスワード

1234567812345678

コメントアウト

なし

1234567812345678

編集済み

表 2: CARBANAK のソース コードとバイナリで見つかったパスワード

デバッグ ディレクトリに暗号化されたサーバー証明書が見つかりました。これは、操作を明確に結び付けたり、新しいアクティビティをキャッチしたりするための新しいネットワークベースのインジケーターを提供できるように思われました. C# で公開されている X509 処理のコード サンプルを適応させて、一般的なパスワード リストのパスワードを循環させることで、このコンテナーをブルート フォースするのは簡単なことでした。 1文字のパスワード「1」だったので、1秒もかからずにパスワードが見つかりました。証明書はテスト用であることが判明したため、パスワードは脆弱です。証明書を図 3 に、詳細を表 3 に示します。

テスト会社の証明書
図 3: テスト会社の証明書

パラメータ

価値

主題

CN=試験会社

発行者

CN=試験会社

シリアルナンバー

834C6C3985506D8740FB56D26E385E8A

以前ではありません

2004/12/31 午後 5:00:00

後ではない

2017/12/31 17:00:00

拇印

0BCBD1C184809164A9E83F308AD6FF4DBAFDA22C

署名アルゴリズム

sha1RSA(1.3.14.3.2.29)

公開鍵

アルゴリズム: RSA

長さ: 2048

キーブロブ:

30 82 01 0a 02 82 01 01 00 e4 66 7f d2 e1 01 53

f9 6d 26 a6 62 45 8b a8 71 ea 81 9a e6 12 d4 1c

6f 78 67 6d 7e 95 bb 3a c5 c0 2c ダ ce 48 ca db

29 ab 10 c3 83 4e 51 01 76 29 56 53 65 32 64 f2

c7 84 96 0f b0 31 0b 09 a3 b9 12 63 09 be a8 4b

3b 21 f6 2e bf 0c c1 f3 e4 ed e2 19 6e ca 78 68

69 be 56 3c 1c 0e a7 78 c7 b8 34 75 29 a1 8d cc

5d e9 0d b3 95 39 02 13 8e 64 ed 2b 90 2c 3f d5

e3 e2 7e f2 d2 d1 96 15 6e c9 97 eb 97 b9 0e b3

be bc c3 1b 1e e1 0e 1c 35 73 f4 0f d9 c3 69 89

87 43 61 c9 9e 50 77 a2 83 e4 85 ce 5a d6 af 72

a9 7b 27 c5 f3 62 8d e7 79 92 c3 9b f7 96 ed 5c

37 48 0a 97 ee f7 76 69 a2 b9 25 38 06 25 7d 8a

e4 94 b2 bb 28 4a 4b 5d c5 32 0d be 8e 7c 51 82

a7 9e d9 2c 8e 6b d8 c7 19 4c 2e 93 8d 2d 50 b4

e0 a4 ed c1 65 a4 a1 ba bf c7 bf 2c ec 28 83 f4

86 f2 88 5c c4 24 8b ce 1d 02 03 01 00 01

パラメーター: 05 00

秘密鍵

キー ストア: ユーザー

プロバイダー名: Microsoft Strong Cryptographic Provider

プロバイダーの種類: 1

主な仕様: 交換

キー コンテナー名: c9d7c4a9-2745-4e7f-b816-8c20831d6dae

一意のキー コンテナー名: 5158a0636a32ccdadf155686da582ccc_2bb69b91-e898-4d33-bbcf-fbae2b6309f1

ハードウェア デバイス: False

取り外し可能: 偽

保護中: 偽

表 3: テスト会社の証明書の詳細

これは@mrdavi51によって共有されたピボットで、この自己署名証明書がまだ複数の IP でホストされていることを示しています。

FireEye は、証明書が最近次の IP で提供されていることを確認しました (表 4)。

知財

ホスト名

最後に見たのは

104.193.252.151:443

vds2.system-host[.]net

2019-04-26T14:49:12

185.180.196.35:443

customer.clientshostname[.]com

2019-04-24T07:44:30

213.227.155.8:443

2019-04-24T04:33:52

94.156.133.69:443

2018-11-15T10:27:07

185.174.172.241:443

vds9992.ハイパーホスト[.]名前

2019-04-27T13:24:36

109.230.199.227:443

2019-04-27T13:24:36

表 4: 最近のテスト会社の証明書の使用

これらの IP は CARBANAK のアクティビティで確認されていませんが、これは、さまざまなマルウェアのテストに共通の開発者または共有ツールキットが使用されていることを示している可能性があります。これらの IP のいくつかは、Cobalt Strike BEACON ペイロードと METERPRETER リスナーをホストしていることが確認されています。 Virtual Private Server (VPS) の IP は頻繁に所有者が変わる可能性があり、これらの IP でホストされている追加の悪意のあるアクティビティは、たとえ近接していても、同じユーザーに関連付けられていない可能性があります。

また、ソース コード ダンプから保護されていない秘密鍵を解析しました。図 4 と表 5 は、それぞれ秘密鍵パラメーターの概要と詳細を示しています。

解析された 512 ビットの秘密鍵
図 4: 解析された 512 ビットの秘密鍵

分野

価値

bタイプ

7

bバージョン

2

aiKeyAlg

0xA400 (CALG_RSA_KEYX) – RSA 公開鍵交換アルゴリズム

魔法

RSA2

シラミ

512

PubExp

65537

係数

0B CA 8A 13 FD 91 E4 72 80 F9 5F EE 38 BC 2E ED

20 5D 54 03 02 AE D6 90 4B 6A 6F AE 7E 06 3E 8C

EA A8 15 46 9F 3E 14 20 86 43 6F 87 BF AE 47 C8

57 F5 1F D0 B7 27 42 0E D1 51 37 65 16 E4 93 CB

P

8B 01 8F 7D 1D A2 34 AE CA B6 22 EE 41 4A B9 2C

E0 05 FA D0 35 B2 BF 9C E6 7C 6E 65 AC AE 17 EA

Q

81 69 AB 3D D7 01 55 7A F8 EE 3C A2 78 A5 1E B1

9A 3B 83 EC 2F F1 F7 13 D8 1A B3 DE DF 24 A1 DE

DP

B5 C7 AE 0F 46 E9 02 FB 4E A2 A5 36 7F 2E ED A4

9E 2B 0E 57 F3 DB 11 66 13 5E 01 94 13 34 10 CB

Dq

81 AC 0D 20 14 E9 5C BF 4B 08 54 D3 74 C4 57 EA

C3 9D 66 C9 2E 0A 19 EA C1 A3 78 30 44 52 B2 9F

Iq

C2 D2 55 32 5E 7D 66 4C 8B 7F 02 82 0B 35 45 18

24 76 09 2B 56 71 C6 63 C4 C5 87 AD ED 51 DA 2ª

D

01 6A F3 FA 6A F7 34 83 75 C6 94 EB 77 F1 C7 BB

7C 68 28 70 4D FB 6A 67 03 AE E2 D8 8B E9 E8 E0

2A 0F FB 39 13 BD 1B 46 6A D9 98 EA A6 3E 63 A8

2F A3 BD B3 E5 D6 85 98 4D 1C 06 2A AD 76 07 49

表 5: 秘密鍵のパラメーター

構成ヘッダーで定義された PUBLIC_KEY という名前の値を見つけました。デバッグ目的であることを示すコメントが付いています。解析された値を表 6 に示します。

分野

価値

bタイプ

6

bバージョン

2

aiKeyAlg

0xA400 (CALG_RSA_KEYX) – RSA 公開鍵交換アルゴリズム

魔法

RSA1

ビトレン

512

PubExp

65537

係数

0B CA 8A 13 FD 91 E4 72 80 F9 5F EE 38 BC 2E ED

20 5D 54 03 02 AE D6 90 4B 6A 6F AE 7E 06 3E 8C

EA A8 15 46 9F 3E 14 20 86 43 6F 87 BF AE 47 C8

57 F5 1F D0 B7 27 42 0E D1 51 37 65 16 E4 93 CB

表 6: 構成ヘッダーで定義された PUBLIC_KEY の主要パラメーター

ネットワークベースの指標

ソース コードとバイナリには複数の Network-Based Indicator (NBI) が含まれており、FireEye によって以前に観察および文書化された CARBANAK バックドア アクティビティおよび FIN7 オペレーションと大きく重複しています。表 7 は、関連する FireEye の公開ドキュメントとともに、これらのインジケーターを示しています。これには、発生した各 NBI のステータス (ソース コードでアクティブ、コメント アウト、またはバイナリにコンパイル) が含まれます。ドメイン名は、ブラウザーやチャット クライアントなどによる偶発的な解決や相互作用を防ぐために、ファンクが除去されています。

NBI

状態

脅威グループの関連付け

comixed[.]org

コメントアウト

以前のCARBANAK活動

194.146.180[.]40

コメントアウト

以前のCARBANAK活動

aaaabbbbcccccc[.]org

アクティブ

stats10-google[.]com

コメントアウト

FIN7

192.168.0[.]100:700

アクティブ

80.84.49[.]50:443

コメントアウト

52.11.125[.]44:443

コメントアウト

85.25.84[.]223

コメントアウト

qwqreererwere[.]com

アクティブ

アカマイ テクノロジーズ[.]org

コメントアウト

以前のCARBANAK活動

192.168.0[.]100:700

アクティブ

37.1.212[.]100:700

コメントアウト

188.138.98[.]105:710

コメントアウト

以前のCARBANAK活動

hhklhlkhkjhjkjk[.]org

編集済み

192.168.0[.]100:700

編集済み

aaa.stage.4463714.news.meteonovosti[.]info

編集済み

DNS インフラストラクチャは、後の FIN7 関連の POWERSOURCE アクティビティと重複しています

193.203.48[.]23:800

アクティブ

以前のCARBANAK活動

表 7: NBI と以前に観察された活動

これらの TCP エンドポイントのうち 4 つ (80.84.49[.]50:443、52.11.125[.]44:443、85.25.84[.]223、および 37.1.212[.]100:700) は私にとって初めてのことでした。一部は他の場所で文書化されていますが。

結論

このソース コード ダンプを分析した結果、CARBANAK であることが確認され、いくつかの新しい興味深いデータ ポイントが見つかりました。特にベンダーのセキュリティ スイートを対象とした開示について、ベンダーに通知することができました。以前に文書化された NBI、Windows API 関数の解決、バックドア コマンド ハッシュ値、Windows キャビネット ファイル API の使用、および CARBANAK に関連するその他のアーティファクトはすべて一致し、彼らが言うように、靴が合う場合はそれを着用します。興味深いことに、このプロジェクト自体は、CARBANAK や Anunak とは呼ばれていません。マルウェア内で見つかった文字列アーティファクトに基づいて、情報セキュリティ コミュニティがこのプロジェクトを呼ぶようになったからです。作成者は主に、Visual Studio プロジェクト、ファイル名、ソース コード コメント、出力バイナリ、ユーザー インターフェイス、およびマニュアルでマルウェアを「ボット」と呼んでいます。

この分析の広さと深さは、FLARE チームに寄せられる通常の要求とは一線を画しています。この旅には、ロシア語の学習、10 万行のコードから新しい情報を検索すること、数十のバイナリを分析することが含まれていました。最後に、この依頼を受ける機会があったことに感謝しています。

次の投稿では、Tom Bennett が手綱を取り、彼と Barry Vengerik の以前の分析をソース コードに照らして回顧します。 CARBANAK ウィークのパート 4も利用できます。

参照: https://www.mandiant.com/resources/blog/carbanak-week-part-two-continuing-carbanak-source-code-analysis

Comments

Copied title and URL