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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2020-0796-BOF — Cobalt Strike Beacon对象文件,实现CVE-2020-0796 SMBGhost本地权限提升,具有令牌窃取和会话提升的双重武器化路径。 | Kitploit
ツール/GitHubGitHub/rsmudge/cve-2020-0796-bof
特権昇格エクスプロイトフレームワークエクスプロイトシェルコードポストエクスプロイトペネトレーションテストレッドチーミングペイロード開発バイナリエクスプロイト
GitHubrsmudge/cve-2020-0796-bof

CVE-2020-0796-BOF

Cobalt Strike Beacon对象文件,实现CVE-2020-0796 SMBGhost本地权限提升,具有令牌窃取和会话提升的双重武器化路径。

701955年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

これは、RaphaelがSMBGhost LPE(ローカル特権昇格)を試行錯誤したものです。

まず、Metasploit Frameworkのソースコードから始めました:

cve-2020-0796: SMBv3圧縮バッファオーバーフロー(SMBGhost)(CVE 2020-0796) https://github.com/rapid7/metasploit-framework/tree/master/external/source/exploits/CVE-2020-0796 [BSDライセンス]

そして、私がやったことは次のとおりです:

  1. Reflective DLLをCobalt Strike 4.1のBeacon Object Fileに変換しました。

これには、Dynamic Function ResolutionのMODULE$Function形式でいくつかのWin32 APIを宣言する必要がありました。 良い面としては、DFRがその処理を肩代わりしてくれるため、NTDLL内のものを呼び出すコードの一部を削減できました。:)

get_handle_addrから未使用の1,000要素のptr配列を削除しました。これは、ローカル変数が8KBの制限を超えたためにcl.exeが__chkstk関数を挿入する原因となっていました。BOFにはこの関数はありません。

その後、Beacon固有のAPI(例:BeaconPrintf、BeaconInjectProcessなど)をいくつか取り込み、Beaconネイティブの方法で処理を行うようにしました。

libc相当の機能が手元にないため(BOFのため...)、それを補ういくつかの関数を書く必要がありました。

  1. コードを2つの異なる武器化パスに分割しました:

Beaconの'smbghost'エイリアスを引数なしで使用すると、このエクスプロイトを実行して、Beaconプロセスのトークンにのみ影響を与えます。エクスプロイトが成功すると、現在のプロセスのトークンは、以前にはなかったスーパーパワーを得ることになります。たとえば、他のプロセス(他のデスクトップセッション内のプロセスであっても)にインジェクションしたり、winlogon.exeの配下に子プロセスを生成したりできます。エクスプロイトは最初の実行で常に成功するとは限らないため、smbghostを複数回実行する必要があるかもしれません。

あるいは、Cobalt StrikeのAggressor Scriptで利用できる特権昇格APIを使用して、'elevate smbghost'を実行し、新しいBeaconセッションを取得することもできます。これは簡単なデモには十分で、製品のワークフローにも適合しますが... winlogon.exeにインジェクションを行います。winlogon.exeへのインジェクションは、この特定の昇格に必須の条件ではありません。公開されているPOCがすべてそうしているのは、CreateRemoteThreadがプロセス境界を越えて機能しないからであり、さらに親プロセスの偽装(parent process spoofing)のために余分なボイラープレートを書きたくないからだと思います。winlogon.exeは、権限が昇格したことを示すための簡単で手頃な標的です。

これをVisual Studioでコンパイルするには:

x64 Cross Toolsコマンドプロンプトからmake.batを使用します。

これにより、expoit.x64.oがdist/に出力されます。

私はVisual Studio 2013を使用しました。他のコンパイラやバージョンはテストしていません。x86も試していません。

ツールをダウンロード