Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Crassus — Windows権限昇格発見ツール。Process Monitorのブートログを解析して、DLLハイジャック、弱いACL、その他の権限昇格経路を特定し、プロキシDLLのソースコードを自動生成します。 | Kitploit
ツール/GitHubGitHub/vu-ls/crassus
特権昇格エクスプロイトペネトレーションテストバイナリ解析
GitHubvu-ls/crassus

Crassus

Windows権限昇格発見ツール。Process Monitorのブートログを解析して、DLLハイジャック、弱いACL、その他の権限昇格経路を特定し、プロキシDLLのソースコードを自動生成します。

リポジトリを見る
63364607ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

Crassus Windows 権限昇格発見ツール

クイックスタート

  1. Process Monitor で、Enable Boot Logging オプションを選択します。 "Process Monitor ブートログオプション"
  2. 再起動します。
  3. ログインして Windows が落ち着いたら、もう一度 Process Monitor を実行します。
  4. プロンプトが表示されたら、ブートログを保存します(例:raw.PML)。
  5. Ctrl-R を使用して、デフォルトの Process Monitor フィルターをリセットします。
  6. このログファイルを保存します(例:boot.PML)。
  7. Crassus.exe boot.PML を実行します。
  8. 緑色で表示された結果と、results.csv 内の対応するエントリを調査します。

目次

  • なぜ「Crassus」なのか
    • 本当にまた別の権限昇格発見ツールを作ったのですか?
    • 機能
    • フローチャート
  • スクリーンショット
    • Crassus の実行
    • CSV 出力
    • エクスポート
    • DLL 関数のエクスポート
    • DLL 序数のエクスポート
  • Crassus.exe の入手
    • Visual Studio でのビルド
    • プリコンパイルされた Crassus.exe の使用
  • 使い方
    • 実行フロー
    • コマンドライン引数
    • 例
    • プロキシ DLL テンプレート
    • openssl.cnf テンプレート
  • プロキシ DLL のコンパイル
    • Visual Studio
    • MinGW
  • 実世界の例
    • Acronis True Image
    • Atlassian Bitbucket
    • McAfee
    • Microsoft SQL Server 2022
  • トラブルシューティング
    • 欠落ファイルが実行されない
    • 予期しない権限でコードが実行される
    • 発見結果が再起動後に消える
  • 貢献
  • クレジット

なぜ「Crassus」なのか?

Accenture は Spartacus というツールを作成しました。このツールは Windows 上で DLL ハイジャックの機会を見つけます。Spartacus を出発点として、私たちは Crassus を作成し、単に欠落ファイルを探すだけでなく、Windows の権限昇格発見機能を拡張しました。特権プロセスが使用するファイルやディレクトリの ACL は、目的を達成するために欠落ファイルを探すよりも多くのことを見つけられます。

本当にまた別の権限昇格発見ツールを作ったのですか?

…しかし、Crassus は SysInternals Process Monitor を利用し、生の PML ログファイルを解析するという点でひねりがあります。典型的な使用法は、Process Monitor を使用してブートログを生成し、それを Crassus で解析することです。また、脆弱な DLL の関連するすべてのエクスポートを含むプロキシ DLL のソースコードも自動的に生成します。

機能

  • ProcMon PML ファイルをネイティブに解析します。ログ(PML)パーサーは、https://github.com/eronnen/procmon-parser/ から C# に部分的な機能を移植して実装されています。フォーマット仕様はこちらにあります。
  • Crassus は、特定されたすべての欠落 DLL に対してプロキシ DLL のソースコードを作成します。たとえば、アプリケーションが version.dll を介した DLL ハイジャックに対して脆弱な場合、Crassus はすべてのエクスポートを含む version.cpp と version.def ファイルを作成します。デフォルトでは、プロキシ DLL は calc.exe を起動します。Visual Studio または MinGW で DLL をビルドするためのビルドスクリプトが含まれています。
  • プロセスの作成やライブラリの読み込みなど、他の注目すべきイベントについては、非特権ユーザーがファイルまたはファイルへのパスの任意の部分を変更できるかどうかを調査します。
  • 大きな PML ファイルを処理し、関心のあるすべてのイベントを出力 CSV ファイルに保存できます。

フローチャート

Crassus がどのように動作するかのおおまかな流れは、次のフローチャートにまとめられています。 Crassus フローチャート

スクリーンショット

Crassus の実行

Crassus の実行

CSV 出力

CSV 出力

出力エクスポート

エクスポート

DLL 関数のエクスポート

DLL 関数

DLL 序数のエクスポート

DLL 序数

Crassus.exe の入手

Visual Studio でのビルド

Crassus は Visual Studio 2019 プロジェクトとして開発されました。Crassus.exe をビルドするには:

  1. Crassus.sln を開きます。
  2. キーボードで Ctrl+Shift+B を押します。

プリコンパイルされた Crassus.exe の使用

他の人のコードが何をするかわからなくても実行しても構わないのであれば、Crassus.exe はこのリポジトリに用意されています。

使い方

実行フロー

  1. Process Monitor で、Enable Boot Logging オプションを選択します。 "Process Monitor ブートログオプション"
  2. 再起動します。
  3. ログインして Windows が落ち着いたら、必要に応じて権限で実行されるように構成されている可能性のあるスケジュールタスクも実行します。
  4. もう一度 Process Monitor を実行します。
  5. プロンプトが表示されたら、ブートログを保存します。
  6. Ctrl-R を使用して、デフォルトの Process Monitor フィルターをリセットします。
  7. このログファイルを保存します(例:boot.PML)。ログファイルを再保存する理由は 2 つあります。
    1. 古いバージョンの Process Monitor は、ブートログを単一ファイルとして保存しません。
    2. デフォルトではブートログはフィルタリングされていないため、Process Monitor 自体の起動におけるローカルユーザーによる DLL ハイジャックなどの余分なノイズが含まれる可能性があります。

コマンドライン引数

引数説明
<PMLFILE>既存の ProcMon イベントログファイルの場所(ファイル)。
--verbose詳細な出力を有効にします。
--debugデバッグ出力を有効にします。

例

boot.PML に保存された Process Monitor ブートログを解析します。脆弱なパスはすべて results.csv として保存され、すべてのプロキシ DLL ソースファイルは stubs サブディレクトリに保存されます。

C:\tmp> Crassus.exe boot.PML

プロキシ DLL テンプレート

以下は、プロキシ DLL を生成する際に使用されるテンプレートです。Crassus によって発見された DLL の場合、プロキシ DLL には %_EXPORTS_% で指定されたものと同じエクスポート名と、.def ファイルで指定されたものと同じ序数が含まれます。Crassus は、親プロセスのアーキテクチャを調べ、それに応じて %_BUILD_AS_% フィールドにソースコードをタグ付けすることで、DLL を 32 ビットライブラリとしてビルドするか 64 ビットライブラリとしてビルドするかを検出します。

Process Monitor ログから実際の DLL が見つからない場合、またはエクスポート名に問題がある場合、ビルドスクリプトはエクスポートが指定されていない DLL を作成することにフォールバックします。

#pragma once
    
//%_BUILD_AS%

#include <windows.h>;

extern "C" {

  VOID Payload() {
      // ここにペイロードを実行します。
      WinExec("calc.exe", 1);
  }

  BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
  {
      switch (fdwReason)
      {
      case DLL_PROCESS_ATTACH:
          Payload();
          break;
      case DLL_THREAD_ATTACH:
          break;
      case DLL_THREAD_DETACH:
          break;
      case DLL_PROCESS_DETACH:
          break;
      }
      return TRUE;
  }


  #ifdef ADD_EXPORTS
  %_EXPORTS_%
  #endif
}

openssl.cnf テンプレート

OPENSSLDIR 変数の値を安全でない方法で使用するアプリケーションの場合、細工された openssl.cnf ファイルを指定された場所に配置できます。この例では、ソフトウェアは C:\tmp\calc.dll を読み込みます。32 ビットプロセスをターゲットにする場合は 32 ビットライブラリを、64 ビットプロセスをターゲットにする場合は 64 ビットライブラリを使用してください。

[openssl_init]
# これにより、OpenSSL 初期化の一部としてファイル c:\tmp\calc.dll の読み込みが試みられます。
# ビルドスクリプトは、calc.dll ライブラリを 32 ビットまたは 64 ビットのどちらでビルドする必要があるかを検出する必要があります。
/tmp/calc = asdf

プロキシ DLL のコンパイル

Visual Studio

Visual Studio に含まれる cl.exe バイナリを使用してコンパイルできます。具体的には:

cl.exe /DADD_EXPORTS /D_USRDLL /D_WINDLL <target>.cpp /LD /Fe<target>.dll /link /DEF:<target>.def

ライブラリを 64 ビットにするか 32 ビットにするかの指定を含め、ビルドプロセスを自動化するには:

  1. Visual Studio 開発者コマンドプロンプトを開きます。
  2. build.bat スクリプトを使用して DLL をビルドします。
  3. 脆弱なファイル名が .dll 以外で終わる場合は、必要に応じてコンパイルされたファイルの名前を変更します。

注: vcvarsall.bat の残念な動作(間違いなくバグではない)により、同じ Visual Studio 開発者コマンドプロンプトセッションで build.bat を複数回実行しようとすると問題が発生する可能性があります。エラーが発生した場合は、ウィンドウを閉じて再度起動してください。

MinGW

ツールをダウンロード