Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cobaltstrike4.5_cdf-1 — CobaltStrike 4.5 バージョンのクラック、checksum8特徴の除去、BeaconEyeのバイパス、エラーパスによるstage漏洩の修正、TOTP二要素認証の追加、CVE-2022-39197などの修正 | Kitploit
ツール/GitHubGitHub/zeoday/cobaltstrike4.5_cdf-1
ペネトレーションテストフレームワークエクスプロイトフレームワーク脆弱性分析IDS/IPS回避リバースエンジニアリング暗号化コマンド&コントロールバイナリ解析認証レッドチーミングペイロード開発
143年前未レビュー
GitHub
zeoday/cobaltstrike4.5_cdf-1

cobaltstrike4.5_cdf-1

CobaltStrike 4.5 バージョンのクラック、checksum8特徴の除去、BeaconEyeのバイパス、エラーパスによるstage漏洩の修正、TOTP二要素認証の追加、CVE-2022-39197などの修正

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

cobaltstrike4.5_cdf

cobaltstrike4.5 版のクラック、checksum8 特徴の除去、BeaconEye のバイパス、エラーパスによる stage 漏洩の修正、TOTP 二段階認証の追加、ユーザー名の暗号化表示の追加、4.5 版の foreign 派生エラーのバグ修正、クライアント設定ファイル名の変更など

cobalt strike4.5 クラック

cobaltstrike4.5 クラック

[TOC]

免責事項 / 免責契約

このツールおよび記事の内容は、セキュリティ研究に限定されています。ユーザーは、このツールおよび記事の内容を使用したことに起因するすべての法的および関連する責任を負うものとします。作者は一切の法的責任を負いません。本ツールおよび記事の内容の使用中に違法行為があった場合、ユーザー自身がその結果を負担するものとし、当方は一切の法的責任および関連責任を負いません。そうでない場合は、本ツールをインストールおよび使用しないでください。本ツールを使用する行為、または明示的もしくは黙示的な方法で本契約を受け入れた場合、本契約を読み、同意したものとみなされます。本ツールを使用してセキュリティ研究を行う場合は、その行為が法令に適合し、十分な許可を得ていることを確認してください。許可のない対象に対して使用しないでください。

はい、戻ってきました。以前の cobaltstrike4.4_cdf を継続します: https://github.com/lovechoudoufu/about_cobaltstrike4.4_cdf 今回は4.5版です。以前の4.4は github によって削除されましたが、このプロジェクトも間もなく削除されるでしょう~。

Telegram グループへの参加をお勧めします。今後の他のアップデートやプロジェクトが削除された場合、グループ内からダウンロードできます:

image-20220802163532221

使用前に、対応するバージョンの jar パッケージのハッシュをよく確認してください。

cs クラック

4.5 以前のバージョン

証明書認証フロー(4.3を例とする): 4.5 バージョンでは最後に少し変更あり。

各バージョンの公式復号キー:

root@kitploit:~
4.0 1be5be52c6255c33558e8a1cb667cb06
4.1 80e32a742060b884419ba0c171c9aa76
4.2 b20d487addd4713418f2d5a3ae02a7a0
4.3 3a4425490f389aeec312bdd758ad2b99
4.4 5e98194a01c6b48fa582a6a9fcbb92d6

cobaltstrike.auth 認証キーファイル、rsa 暗号化、復号化内容:

4.3

root@kitploit:~
-54, -2, -64, -45,	// ファイルヘッダー
0, 77,	// 後続の長さ 
1, -55, -61, 127, 	// 証明書の有効期限 29999999(無期限)
0, 0, 0, 1, 	// watermark(透かし)
43, 	// バージョン
16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 
16, 58, 68, 37, 73, 15, 56, -102, -18, -61, 18, -67, -41, 88, -83, 43, -103

バージョンが更新されるたびに、対応する長さ +17 され、キーが 17 バイト増えます。

aggressor/Aggressor.class 内の License.checkLicenseGUI(new Authorization()); からライセンス認証が始まります:

image-20211101142121856

License.checkLicenseGUI の中の isValid、isPerpetual、isExpired、isAlmostExpired で、ライセンスが有効か、期限切れかを判断します:

image-20211101142738431

Authorization クラスは cobaltstrike.auth ファイルを処理し、ファイル内容を読み取り、AuthCrypto().decrypt を呼び出して処理します:

image-20211101143829398

AuthCrypto() のコンストラクタ内で load() を呼び出し、load() 関数内で resources/authkey.pub の md5 を確認した後、RSA の公開鍵を取得します:

image-20211101144809625

decrypt() 内で _decrypt を呼び出し、cobaltstrike.auth ファイルの内容を公開鍵で RSA 復号し、配列 var2 に代入、その後 DataParser で変換して var3 に代入、readInt() メソッドで var3 の先頭 4 バイトを取得しファイルヘッダーを判断します(-889274181 は 3.x 版、-889274157 は 4.x 版)。次に var3 から readShort() で 2 バイトを取得し長さとして var5 に代入、var6 = var3.readBytes(var5) でその長さ分の内容を取得し var6 に代入して返します:

image-20211101145153818

Authorization クラスで得られた arrayOfByte2 配列は、先頭の 6 バイトを除いた内容です。さらに arrayOfByte2 配列を処理し、最初に 4 つの数値を取得して i に代入、さらに 4 つの数値を取得して watermark に代入、さらに 1 つの数値を取得して b1 に代入し、b1 が 43 より小さいことを確認、i が 29999999 と等しいことを確認しま。common/ListenerConfig では watermark が 0 の場合にアンチウイルス検出の透かしが追加されます:

image-20211101152338045

image-20211101152000407

先頭 6 バイトを除いた後、さらに i、watermark、b1 の 9 バイトを除いた残りが、4.0 から 4.3 までのキーであり、以下の構造です:16, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20

root@kitploit:~
            byte b2 = dataParser.readByte();	// 1 バイト取得、すなわち 16
            byte[] arrayOfByte3 = dataParser.readBytes(b2);		// 16 バイト取得、4.0 のキー
            byte b3 = dataParser.readByte();	// 1 バイト取得、すなわち 16
            byte[] arrayOfByte4 = dataParser.readBytes(b3);		// 16 バイト取得、4.1 のキー
            byte b4 = dataParser.readByte();	// 1 バイト取得、すなわち 16
            byte[] arrayOfByte5 = dataParser.readBytes(b4);		// 16 バイト取得、4.2 のキー
            byte b5 = dataParser.readByte();	// 1 バイト取得、すなわち 16
            byte[] arrayOfByte6 = dataParser.readBytes(b5);		// 16 バイト取得、4.3 のキーを arrayOfByte6 に代入

Authorization クラス内で SleevedResource.Setup メソッドを呼び出して arrayOfByte6 を処理します。SleevedResource ではキーを AES、HmacSHA256 復号の秘密鍵として設定し、_readResource 内の this.data.decrypt(arrayOfByte1); で復号を呼び出し、復号される内容は /sleeve/ 内の dll ファイルです:

image-20211101153935202

SleeveSecurity では AES、HmacSHA256 復号の秘密鍵を設定し、渡された値を使用して長さ 256 のダイジェストを計算し、0-16 を AES の鍵、16-32 を HmacSHA256 の鍵として使用します

image-20211101154127243

対応するキーを取得できない場合、sleeve フォルダ内の dll を復号できず、サーバーに接続する際に [Sleeve] Bad HMAC のエラーメッセージが表示されます:

image-20211101160942103

hmac の復号部分については、Cobaltstrike 4 クラック ~自分でライセンスを発行する~ を参照してください。

したがって、クラックを成功させる鍵は、対応する cs バージョンのキーです。

4.5 版の新たなチェック

公式の説明によると、4.5 版ではライセンスのセキュリティが強化されています。確かにその通りです。

image-20220802145353409

そこで、漏洩した auth ファイルを復号して、何が追加されたか確認する必要があります:

image-20220802154920364

4.5 のキーの位置の後ろにさらに文字列が追加されています。これが、このバージョンで追加された watermarkHash です:

image-20220802155137639

watermarkHash は beacon の生成に関係し、sleeve フォルダ内の dll にも関係しています。これがない、または誤っている場合はオンラインになりません。おそらく公式はこの watermarkHash を通じて漏洩元を特定できるのでしょう。

image-20220802155317878

クラック方法

方法1:ハードコードされたキー

他のコードをコメントアウトし、AuthCrypto().decrypt で RSA 復号した後のパラメータをハードコードします:

image-20220802155654981

root@kitploit:~
         byte[] var4 = {1, -55, -61, 127, 0, 1, -122, -96, 45, 16, 27, -27, -66, 82, -58, 37, 92, 51, 85, -114, -118, 28, -74, 103, -53, 6, 16, -128, -29, 42, 116, 32, 96, -72, -124, 65, -101, -96, -63, 113, -55, -86, 118, 16, -78, 13, 72, 122, -35, -44, 113, 52, 24, -14, -43, -93, -82, 2, -89, -96, 16, 58, 68, 37, 73, 15, 56, -102, -18, -61, 18, -67, -41, 88, -83, 43, -103, 16, 94, -104, 25, 74, 1, -58, -76, -113, -91, -126, -90, -87, -4, -69, -110, -42, 16, -13, -114, -77, -47, -93, 53, -78, 82, -75, -117, -62, -84, -34, -127, -75, 66, 0, 0, 0, 24, 66, 101, 117, 100, 116, 75, 103, 113, 110, 108, 109, 48, 82, 117, 118, 102, 43, 86, 89, 120, 117, 119, 61, 61};

方法2:Javaagent 方式

Javaagent の原理:https://www.cnblogs.com/rickiyang/p/11368932.html

クラックツールは以下を参照:https://github.com/Twi1ight/CSAgent

クラックの核はやはり cs 対応バージョンのキーが必要です。

ダークエリア(裏機能)の除去

beacon/BeaconData 内の shouldPad メソッドの戻り値を false に固定します:

image-20211101180447451

4.4 の新しいダークエリア

(以前は 4.3 を例にライセンス認証を分析しましたが、4.4 に切り替えたところ、実行後に終了する新しいダークエリアが存在しました)

先の this.shouldPad の exit に加えて、common/Helper に .class 判定が追加されています。コメントアウトしてください:

image-20211119153406737

common/Starter に .class 判定が追加されています。コメントアウトしてください:

image-20211119153558224

common/Starter2 に .class 判定が追加されています。コメントアウトしてください:

image-20211119153636952

beacon/CommandBuilder に .class 判定が追加されています:(このダークエリアは本当に卑劣で、client と teamserver を 4 時間連続接続するとコマンドが実行できなくなります。今までそんなに長く接続したことがなかったので気づきませんでした。ggg)

image-20220505104735903

4.5 の新しいダークエリア

4.5 版では javaagent に対して多数のダークエリアが追加されています。jar を逆コンパイルしてクラックする場合は無視して構いません。具体的には javaagent を検索して一つずつ修正してください:

image-20220802160404976

これらの箇所を削除すれば、また団体行動ができるようになります。

cs checksum8 特徴の除去

checksum8 特徴については詳しく説明しませんが、nmap やスペース検索エンジンにスキャンされないために変更する必要があります。

コードの変更

BeaconPayload 内の XOR 値を新しい値に変更します:

任意の 10 進数で構いません。後で dll 内で対応する 16 進数に変更します。

image-20211108114054512

dll の変更

CrackSleeve を使用して dll を復号します: https://github.com/ca3tie1/CrackSleeve/

  1. cobaltstrike.jar と CrackSleeve.java を同じディレクトリに配置
  2. コンパイル (javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java)
  3. ファイルの復号 (java -classpath cobaltstrike.jar;./ CrackSleeve decode) # Windows コマンドラインで実行

Alt+T でキーワード検索: 2Eh

image-20211107222017434

image-20211107222039265

xor の値を直接変更します。まず Change byte で 2E を見つけて変更し、次に Apply pathes to input file で保存します。(保存を忘れずに)

image-20211107222223636

変更が必要な dll:beacon.dll、beacon.x64.dll、dnsb.dll、dnsb.x64.dll、pivot.dll、pivot.x64.dll、extc2.dll、extc2.x64.dll(4.5 で追加された rl100k.dll も変更が必要です)

その後、CrackSleeve で dll を暗号化し、最後に encode ディレクトリ内の dll を IDEA プロジェクトディレクトリに配置して再コンパイル、パッケージ化します。

テストの結果、URI アドレスには引き続きアクセスできますが、nmap スクリプトで内容を復号できなくなり、同様にスペース検索エンジンによる識別も回避できます:

image-20211107233719344

XOR 値の変更以外にも、https://mp.weixin.qq.com/s?__biz=MzA3MDY2NjMxMA==&mid=2247484641&idx=1&sn=014f6c4ad5343e3f5034c33dffa66f26&chksm=9f3815c8a84f9cde1c7493ff29cfc89c0474fec48ede52be618727e7b9a5ab321c4743e1a44c&mpshare=1&scene=23&srcid=1202NA46yt71CvD3BMGKS10c&sharer_sharetime=1606892728447&sharer_shareid=ff83fe2fe7db7fcd8a1fcbc183d841c4#rd の方法で checksum8 アルゴリズムを変更することもできますが、URI が固定され、プロファイルと組み合わせて使用する必要があり、URI を変更するたびに再パッケージが必要になるため、一長一短です。

cs BeaconEye 特徴の除去

BeaconEye 特徴の除去に関する改造アイデアは リンク から引用しています。4.3 と 4.4 を例に、変更が必要なバイトは以下の通りです。

CrackSleeve を使用して dll を復号します: https://github.com/ca3tie1/CrackSleeve/

  1. cobaltstrike.jar と CrackSleeve.java を同じディレクトリに配置
  2. コンパイル (javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java)
  3. ファイルの復号 (java -classpath cobaltstrike.jar;./ CrackSleeve decode) # Windows コマンドラインで実行

4.3 のキー 58, 68, 37, 73, 15, 56, -102, -18, -61, 18, -67, -41, 88, -83, 43, -103 4.4 のキー 94, -104, 25, 74, 1, -58, -76, -113, -91, -126, -90, -87, -4, -69, -110, -42

4.3 の変更

32 ビット dll

アドレス: 10009FBB

6A 00 を 6A 09 に変更(00 を任意の値に変更)

image-20211111165257545

64 ビット dll

アドレス: 000000001800186C3

beacon.x64.dll 内の命令は xor edx, edx なので、mov edx, esi に変更

image-20211111165321033

4.4 の変更

32 ビット dll

アドレス: 1000A0B9

6A 00 を 6A 09 に変更(00 を任意の値に変更)

image-20211112104322791

64 ビット dll

アドレス: 000000018001879B

beacon.x64.dll 内の命令は xor edx, edx なので、mov edx, esi に変更

image-20211112105408975

再暗号化を使用:java -classpath cobaltstrike.jar;./ CrackSleeve encode

image-20211111173148579

image-20211112124415835

4.5 の変更

32 ビット dll

アドレス: 1000A65D

image-20220609144218351

64 ビット dll

アドレス: 000000018000CA3F

image-20220609160825342

(4.5 で追加された rl100k.dll も変更が必要です)

cs エラーパスによる stage 漏洩の修正

ソース:https://mp.weixin.qq.com/s?__biz=Mzg2NjQ2NzU3Ng==&mid=2247489846&idx=1&sn=181c223cab4bce4e06def94604166348&chksm=ce4b32a1f93cbbb70e63e589d0da6323a8d2d4539c8aa0ef57d4005976dda6d73caeddebcac3&mpshare=1&scene=1&srcid=0308x6zXAxyDR8lv27V2O9yn&sharer_sharetime=1647358883801&sharer_shareid=15e69d4f532774f3e596a31efa4ef72b#rd

image-20220330111308258

方法は、URI に / が含まれているかどうかをチェックし、含まれていなければ 404 を返すだけです:

4.4 の変更

image-20220330111413985

4.3 の変更

image-20220330125957143

ユーザー名の暗号化表示の追加

Event Log で TOTP パスワードや cs ログイン名が漏洩するのを防ぐため、name フィールドを MD5 ソルト付きで表示します。変更後は以下の通り:

image-20220330112745362

TOTP 認証の追加

TOTP 二要素認証を追加し、ログインを強化し、パスワードのブルートフォースを防ぎます。

teamserver 側では、teamserver の出力に TOTP QR コードリンクが追加されました:

image-20220407112543322

(nohup.out を削除する前に QR コードをコピーしておいてください。teamserver を起動するたびに新しい QR コードが生成されるため、起動のたびに再スキャンが必要です)

ブラウザ(プロキシが必要)で開き、Google Authenticator または TOTP 認証アプリで QR コードをスキャンするか、secret%3D 以降のキーをコピーして認証アプリに設定することもできます:

image-20220407112054716

connect 側では、host、port、password は従来通り、user の末尾 6 桁に TOTP の動的数値を入力すれば接続できます:

image-20220407111813265

TOTP 動的数値がない、または誤っている場合は、以下のメッセージが表示されます:

image-20220407113709140

注:携帯電話がない場合は、ブラウザの TOTP 機能を持つプラグインや、Python で簡単な TOTP コードを使用することもできます。

cs4.5 の foreign 派生バグの修正

windows/foreign/reverse_http(s) で spawn を実行すると、以下のエラーが発生します:

image-20220827183854784

このバージョンでは ScListener に Custom の getScalar 操作が追加されましたが、foreign のケースが考慮されていなかったため、var1.customDLL と customFileName が空でエラーが発生しました:

image-20220827184042529

暫定的な修正方法は、ペイロードが foreign の場合に直接 shellcode を返すことです。この方法で他のバグがある場合は、issue で報告してください:

image-20220827190844595

修正後、正常に使用できます:

image-20220827190954960

cs クライアント設定ファイル名の変更

MySQL ハニーポットによる設定の読み取りを防ぐため、cs クライアントの設定ファイル名をデフォルトではなく、11 文字のランダムなファイル名(MAC アドレスの MD5 のうち 11 文字)に変更します。

image-20220827191056012

ツールをダウンロード