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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Pyramid — EDRの盲点で操作を支援するツール | Kitploit
ツール/GitHubGitHub/naksyn/pyramid
ポストエクスプロイトペネトレーションテストレッドチーミング
GitHubnaksyn/pyramid

Pyramid

EDRの盲点で操作を支援するツール

リポジトリを見る
775902年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

Supported Python versions Twitter

Pyramid

immagine

概要

Pyramidは以下で構成されています:

  1. 暗号化されたファイル(chacha、xor)を配信できるPython HTTP/Sサーバー
  2. Bloodhound-py、secretsdump、LaZagne、Pythonnet、DonPAPI、pythonmemorymodule、paramiko、pproxyなどの攻撃ツールの依存関係をメモリ内にロードできるPythonモジュール
  3. メモリ内にインポート可能な固定Python依存関係(zipファイル)
  4. Pyramidモジュールをダウンロード、復号化、メモリ内で実行できるPythonクラッドル

なぜ便利か

Pyramidは、署名済みバイナリ(例:python.exe)から攻撃ツールを実行し、その依存関係をメモリ内にインポートすることで、回避的にポストエクスプロイトタスクを実行するのに役立ちます。これは以下の理由で実現できます:

  1. Python Embeddableパッケージは、良好な評判を持つ署名済みPythonインタープリタを提供します。
  2. Pythonには多くの正規のアプリケーションがあるため、python.exeバイナリからはさまざまなテレメトリが発生します(インタプリタがAPIをネイティブに実行するため)。これは、Python.exeプロセス内で動作し、python.exeバイナリの巨大な「テレメトリフィンガープリント」に溶け込むことで悪用できます。
  3. Pythonコード実行に対する監査の欠如 - PEP-578がこの解決を試みましたが、デフォルトのpython.exeバイナリでは監査機能が有効になっていません。
  4. すべての操作をpython.exe内でネイティブにPython言語を使用して実行できます。例えば、攻撃ツールを実行するためのPythonモジュールの動的インポートや、Beacon Object Files(BOFを多少修正後)をpython.exe内で直接実行することが可能です。

詳細については、DEFCON30 - Adversary village talk "Python vs Modern Defenses" スライドデッキ およびこちらの**ブログ記事**をご覧ください。

免責事項

このツールは、いくつかのブラインドスポットの仮定に基づくEDRに対するバイパス戦略を示すために作成されました。これは、既存の技術とツールを(私の知る限り)新しい方法で組み合わせたもので、防御を回避するのに役立ちます。このツールの唯一の意図は、コミュニティがこの種の使用法に対する認識を高め、解決を促進することです。ゼロデイでもなく、本格的なC2でもありません。PyramidはEDRのブラインドスポットと思われるものを利用しており、それらに光を当てるために公開されています。経験豊富なブルーチームが貢献し、Pyramidが強調しようとする問題に対するより良い解決策を提供できることを期待して、防御に関する段落が含まれています。すべての情報は教育目的のみで提供されています。指示に従う場合は自己責任で行ってください。著者およびその雇用主は、いかなる個人または組織から生じる直接的または間接的な損害または損失に対して責任を負いません。

クレジット

Pyramidのメモリ内ローディングは、当初xorriorのEmpyre - Finder Classからインスピレーションを受け、拡張されました。

コントリビューター

snovvcrash がモジュール mod-DonPAPI.py - mod-LaZagne.py - mod-clr.py を構築しました。

現在の機能

Pyramidモジュールの機能はPythonインタプリタから直接実行でき、現在以下が含まれます:

  1. Python依存関係のダウンロード、復号化、メモリ内ローディング。
  2. BloodHound Python、impacket secretsdump、DonPAPI、LaZagneの動的ロードおよび実行。
  3. PythonMemoryModule を介したリモートからフェッチしたdllまたはexeのメモリ内ローディング。
  4. SSHリバースポートフォワードトンネルを介したSOCKS5プロキシ。
  5. Pythonnetを介した.NETアセンブリのメモリ内ローディング。

Pyramid HTTPサーバーの主な機能:

  1. 配信ファイルのオンザフライ暗号化(chacha、xor)
  2. Pyramidコマンドラインに基づくサーバー設定の自動生成
  3. HTTPパラメータ(URL)のデコードと復号化
  4. 基本HTTP認証

クラッドルの主な機能:

  1. Pyramidモジュールのダウンロード、復号化、メモリ内実行。
  2. Python標準ライブラリのみに依存。

説明

Pyramidは、ターゲットマシンに既存のPythonインタプリタを使用するか、公式のEmbeddable Pythonパッケージを展開してpython.exeを実行し、Pythonダウンロードクラッドルを実行することで使用できます。これにより、珍しいプロセスツリーパターンを作成せず、通常のPythonアプリケーションの使用のように見せることができます。

Pyramidでは、ダウンロードクラッドルを使用して、HTTP/S経由でPyramidサーバーに接続し、モジュールと依存関係をフェッチします。

モジュールは使用する機能に特化しており、以下を含みます:

  1. 必要な依存関係(zipファイル)をメモリ内にインポートするためのカスタムFinderクラス。
  2. 必要な依存関係をダウンロードするコード。
  3. 実行するプログラムのメインロジック(bloodhound、secretsdump、paramikoなど)。

Pythonの依存関係は、競合なしにメモリ内でインポートできるように事前に修正されています。

現在8つのPyramidモジュールが利用可能です:

  1. bh.py:python-BloodHoundをメモリ内にインポートし実行します。
  2. secretsdump.py:Impacket secretsdumpをメモリ内にインポートし実行します。
  3. shellcode.py:シンプルなメモリ内シェルコードインジェクター。
  4. DonPAPI.py:DonPAPIをメモリ内にインポートし実行します。抽出された結果と資格情報はPython Embeddable Packageディレクトリに保存されます。
  5. LaZagne.py:LaZagneをメモリ内にインポートし実行します。
  6. tunnel-socks5:新しいスレッド上でparamikoをインポートし実行し、SSHサーバーへのSSHリモートポートフォワードを作成します。その後、SOCKS5プロキシサーバーがターゲット上でローカルに実行され、SSHトンネルを介してリモートからアクセス可能になります。
  7. clr:Pythonnetをインポートして.NETアセンブリをメモリ内にロードし実行します。
  8. pythonmemorymodule:PythonMemoryModuleをインポートしてdllをメモリからロードします。

使用方法

サーバーの起動

git clone https://github.com/naksyn/Pyramid

HTTPサーバー用のSSL証明書を生成:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

独自の署名済みSSL証明書を使用する場合は、以下の点に注意してください:

  1. pem形式を使用する
  2. ファイル名をkey.pemおよびcert.pemに変更する
  3. 両方のファイルをServerフォルダに配置する。

モジュールの設定

例として、Pyramidでpythonmemorymoduleを使用する場合、ペイロードを Delivery_files フォルダに配置し、pythonmemorymodule.pyを開いてスクリプト上部の必要なパラメータ(ペイロードファイル名やPEロード後に呼び出すプロシージャなど)を設定します。

ターゲット上でEmbeddableパッケージを展開し、ダウンロードクラッドルを実行

Pyramidサーバーが起動し、ベーススクリプトの準備ができたら、Agent/cradle.py ファイル内の変数 pyramid_module を設定し、ターゲット上で実行します。 クラッドルはPython標準ライブラリで動作するように設計されています。

例

SSL証明書を使用し、基本認証を提供し、配信ファイルをChaChaで暗号化し、サーバー設定を自動生成し、pythonmemorymodule用の貼り付け可能なクラッドルを出力するPyramid HTTPサーバーの実行例:

root@kitploit:~
python3 pyramid.py -p 443 -ssl -u testuser -pass Sup3rP4ss! -enc "chacha20" -passenc "TestPass1" -server "192.168.1.2" -generate -setcradle pythonmemorymodule.py

起動時にpyramid.pyは自身のフォルダ構造を解析し、key.pem、cert.pemを探し、Serverフォルダからファイルを配信します。

https://github.com/naksyn/Pyramid/assets/59816245/4fbc997e-af2d-4ead-881b-ee108c91d195

可視性のないプロンプトでPyramidを実行するためのヒント

可視のpython.exeプロンプトを表示せずにPyramidを実行するには、同じWindows Embeddable Packageに含まれているpythonw.exeを利用できます。pythonw.exeは実行時にコンソールウィンドウを開きません。以下の画像は、リモートマシン上でpythonw.exeを使用してbase-tunnel-socks5.pyを実行し、python.exeのコンソールウィンドウを開かない例を示しています。

image

制限事項

Pythonモジュールの動的ロードは、本質的にはdllである*.pydファイルのインポートをネイティブにサポートしていません。私の知る限り、この問題を解決する唯一の公開ソリューションは、CPythonインタプリタを再設計したScythe(in-memory-execution)によって提供されています。デジタル署名を失わないためには、ネイティブのPython Embeddableパッケージを使用可能にするために、必要なpydファイルやホイールをディスクにドロップする方法が解決策の一つです。これはほとんどの場合、重大なOPSEC上の影響を与えるべきではありませんが、以下のpydファイルを含むホイールは動的ロードを完了するためにディスクにドロップされることに注意してください:

  • Cryptodome - Bloodhound-Python、Impacket、DonPAPI、LaZagneに必要
  • bcrypt、cryptography、nacl、cffi - paramikoに必要

この手法からの防御方法

Python.exeは評判の良い署名済みバイナリであり、Pythonの動的コードに関する可視性を提供しません。Pyramidはこれらの回避特性を利用して、同じpython.exeプロセス内から攻撃タスクを実行します。

そのため、最も効果的な解決策の一つは、Python Foundationによって署名されたバイナリとdllをデフォルトでブロックし、実際にPythonバイナリを使用する必要があるユーザーのみに例外を作成することです。

Embeddableパッケージのダウンロードに関するアラートも発報可能です。

PEP-578の導入も可能ですが複雑です。こちらは実装例です。ただし、stockのpythonバイナリの使用をブロックせずにPEP-578を導入すると、この対策が無効になる可能性があります。

ツールをダウンロード