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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
asminject — Heavily-modified fork of David Buchanan's dlinject project. Injects arbitrary assembly (or precompiled binary) payloads directly into x86-64, x86, and ARM32 Linux processes without the use of ptrace by accessing /proc/<pid>/mem. Useful for certain post-exploitation scenarios, recovering content from process memory, etc.. | Kitploit
ツール/GitHubGitHub/bishopfox/asminject
ShellcodePost-ExploitationPenetration TestingPayload DevelopmentContainer Escape
GitHubbishopfox/asminject

asminject

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

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →

概要

Heavily-modified fork of David Buchanan's dlinject project. Injects arbitrary assembly (or precompiled binary) payloads directly into x86-64, x86, and ARM32 Linux processes without the use of ptrace by accessing /proc/<pid>/mem. Useful for certain post-exploitation scenarios, recovering content from process memory, etc..

共有

asminject.py

asminject.py は、David Buchanan の dlinject プロジェクト を大幅に改変したフォークです。ptrace でアタッチする代わりに /proc/<pid>/mem にアクセスすることで、任意のアセンブリ(またはプリコンパイル済みバイナリ)ペイロードを x86-64、x86、ARM32 の Linux プロセスに直接注入します。信頼できるプロセスの改ざん、特定のポストエクスプロイテーションシナリオ、プロセスメモリからのコンテンツ復元、一部のセキュリティコントロールの回避に役立ちます。ホスト上で root アクセスがあれば、コンテナの外からコンテナ化されたプロセスに注入することもできます。

asminject.py とその成り立ちについては、Bishop Fox のツールページでも読むことができます。このツールの着想となった研究成果の詳細な解説も含まれています。

この文書の内容:

  • 要約または TLDR
  • 成り立ち
  • 例
  • Yama の ptrace_scope 制限はどうなのか?
  • 今後の目標

より詳細な個別ドキュメント:

  • asminject.py の仕組み - 特にメモリ注入ツールを扱ったことがない読者向けに、いくつかの技術的詳細を掘り下げた高水準のアーキテクチャ解説
  • はじめに
  • dlinject.py との違い
  • 特殊なオプション
  • トラブルシューティング
  • バージョン履歴

要約または TLDR

  • "asminject.py は dlinject のようなものだが、ライブラリをロードするだけではなく任意のペイロードを注入でき、複数のアーキテクチャで動作する。"
  • "asminject.py は Frida にぼんやり似ているが、ptrace インターフェース経由でアタッチしないため、プロセスが自分自身を ptrace してブロックすることはできない。"

成り立ち

asminject.py は、Linux 環境におけるペネトレーションテストの 2 つの主要なシナリオのために書かれました:

  • ホストへの root アクセスを持つ攻撃者の視点から、プロセスおよびコンテナレベルのセキュリティコントロールを攻撃する
  • 別の脆弱性の悪用に成功した後に検知を回避する

たとえば、テスターが多数のコンテナをホストするサーバーへの root アクセスを取得したペネトレーションテストを考えてみましょう。そのうちの 1 つのコンテナが銀行振込を処理しており、非常に堅牢なエンドポイントセキュリティ製品が内部にインストールされています。ペンテスターがコンテナ内から銀行振込データを変更しようとすると、エンドポイントセキュリティソフトウェアがその試みを検出してブロックします。asminject.py を使用すると、ペンテスターはコンテナの外から、銀行ソフトウェアのプロセスメモリやエンドポイントセキュリティ製品そのものに任意のコードを直接注入できます。デカルトの「悪魔」の犠牲者のように、コンテナ内のセキュリティソフトウェアは無力です。なぜなら、それは攻撃者が完全に制御する環境の中に存在するからです。

元の dlinject.py は、既存のプロセスに Linux 共有ライブラリをロードすることだけを目的として設計されました。asminject.py は元のツールができるすべてのことを実行し、それ以上のことができます。任意のアセンブリコードを実行し、さまざまな攻撃用のテンプレートを含みます。また、ライブラリロードイベントなどの不審な可能性のある活動に反応するセキュリティメカニズムによる検知を回避するようにも再設計されています。

例

このリポジトリの practice ディレクトリには、タイムスタンプとループ反復回数をコンソールに出力する基本的なループコードが含まれているため、管理された環境でさまざまなタイプのコードを注入する練習ができます。これらの練習用ループは、以降の例で参照されます。

asminject.py を呼び出すための基本構文は次のとおりです:

root@kitploit:~
# python3 ./asminject.py <target_process_id> <payload> \
  --arch [x86-64|x86|arm32] --relative-offsets-from-binaries --stop-method "slow" \
  --var <payload_variable_1_name> <payload_variable_1_value> \
  # ... \
  --var <payload_variable_n_name> <payload_variable_n_value>

ほとんどの場合、例で使用されているペイロードはサポートされているすべてのアーキテクチャで動作します。

  • 基本的な例 - 既存のプロセスにファイルをコピーさせるなどの単純なペイロード
  • Python コードインジェクション
  • PHP コードインジェクション
  • Ruby コードインジェクション
  • シェルコード/ステージャーインジェクション
  • 共有ライブラリインジェクション

Yama の ptrace_scope 制限はどうなのか?

ほとんどの Linux ディストリビューションには、他のプロセスに対する ptrace 機能の使用を制御する Yama というカーネルセキュリティモジュールが含まれています。asminject.py はデバッガーインターフェースにアタッチしませんが、それでも ptrace 機能を使用する権限が必要です。この機能に関するエラーが発生している場合は、/proc/sys/kernel/yama/ptrace_scope の内容を確認してください。2 に設定されている場合は、root として次のコマンドを実行します:

root@kitploit:~
echo 1 > /proc/sys/kernel/yama/ptrace_scope

3 以上の値は、再起動しないと解除できません。ただし、あなたが Linux システムの正規の管理者であり、誰かが誤って /proc/sys/kernel/yama/ptrace_scope を 3 に設定してしまった場合、またはその値が設定された環境で正規のペネトレーションテストを実施している場合は、ptrace_scope_kernel_module ディレクトリ を参照してください。再起動を必要としない回避策が含まれている可能性があります。

今後の目標

  • ARM64 (Aarch64) のサポートを追加する。
  • ファイルから読み取る現在の方法に加えて、シェルコードを stdin で渡せるようにする。
  • OS レベルの gcc コマンドを呼び出す代わりに、Keystone を使用したシェルコードアセンブルを検討する。
  • Python および、eval スタイルの人間可読スクリプトコード実行ではなく、コンパイル済みバイトコードを実行用に渡す API を持つ他のスクリプトインタープリター向けに、この能力を利用してさらにステルス性を高めるペイロードを提供する。
  • 可能であれば、JNI を介して Java プロセスに Java コードを注入する。
  • dlinject.py から引き継いだ現在の「次の syscall をフックする」手法に代わるものとして、特定のメソッド(またはアドレスなど)をフックするオプションを追加する。
  • 準デバッグ目的でツールを使用する方法を提供する。例: 関数をフックし、呼び出されるたびに渡された引数を出力する。
    • asminject.py を使って Frida を注入する方法を見つける方が理にかなっているかもしれない - さらなる調査が必要である。
  • 対話型ペイロードを開発する。例: Python プロセスに特定の Python スクリプトコードの行を注入する代わりに、asminject.py がオペレーターに注入するコードの行をプロンプト表示し、それを注入し、結果の出力を返し、そしてオペレーターに別のコードの行をプロンプト表示する。
    • これも、Frida を asminject.py を使ってプロセスに注入でき、Frida が一時的にデバッガーインターフェースを呼び出す必要を回避できるのであれば、Frida を使って処理する方が理にかなっているかもしれない。
  • asminject.py が実行されているプロセッサアーキテクチャと一致しないアーキテクチャで動作しているターゲットプロセスと対話する方法を提供する。例: PCI leech のようなハードウェアを使用してリモートデバイスと対話する、NFS 共有経由で root としてアクセス可能な /proc/mem を持つデバイスのような極端なエッジケースを悪用するなど。
  • より精巧な難読化フラグメントを追加する。
ツールをダウンロード