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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
MemFiles — Beacon によって生成されたファイルをディスクの代わりにメモリへ書き込む CobaltStrike ツールキット | Kitploit
ツール/GitHubGitHub/octoberfest7/memfiles
データ流出ポストエクスプロイトコマンド&コントロールレッドチーミング
GitHuboctoberfest7/memfiles

MemFiles

Beacon によって生成されたファイルをディスクの代わりにメモリへ書き込む CobaltStrike ツールキット

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

人気

すべて見る →

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

すべてのツールを探索

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

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

MemFiles

免責事項:

このプロジェクトは複雑であり、その仕組みを理解して適切にテストしないと、Beacon をクラッシュさせてアクセスを失う可能性があります!

"Technical Details, Design Considerations, and Commentary" セクションまでのすべてのドキュメントを読むことを強くお勧めします!

はじめに

MemFiles は CobaltStrike 用のツールキットで、オペレーターが Beacon プロセスによって生成されたファイルをターゲットシステムのディスクに書き込むのではなく、メモリに書き込むことを可能にします。Windows 7、10、11 で正常にテストされており、対応するサーバーバージョンも問題なく動作するはずです。MemFiles は x64 Beacon のみに対応しています。

これは、NTDLL.dll 内の複数の異なる NtAPI をフックし、それらの API への呼び出しを Beacon プロセスメモリ空間に注入された関数にリダイレクトすることで実現されます。

MemFiles は、Beacon プロセス内にクリーンでアンフックされた NTDLL のコピーがあることを前提としています。EDR フックが残っている Beacon プロセスでの MemFiles の動作可能性については保証されません。MemFiles を使用する前に NTDLL を修復/更新してください!

MemFiles ツールキット内には「特別な」存在しないディレクトリが定義されています。この特別なディレクトリに書き込まれたファイルは MemFiles によってキャプチャされ、メモリに書き込まれ、その後 Teamserver にダウンロードできます。

MemFiles は、Beacon プロセス内で実行され、出力を特定のディレクトリに書き込むように指示できるほとんどの(すべてではありません)ツールと互換性があります。動作に昇格された特権は必要ありません。

これには以下が含まれます:
-BOF
-inline-executeAssembly などを使用してインラインで実行される .NET アセンブリ
-Inline-Execute-PE などを使用してインラインで実行される PE

これらはすべて、関連する NtAPI がフックされている Beacon プロセス内で実行されるため、互換性があります。

MemFiles は以下のようなものでは動作しません:
-execute-assembly
-shell
-run

これらはすべて、NtAPI がフックされていない別のプロセスを起動するため、互換性がありません。

MemFiles は、Beacon プロセス内で実行された場合、Rubeus、SharpHound、Procdump、Powershell などのツールで正常にテストされています。

セットアップ

リポジトリをクローンし、必要に応じて /PIC/Source/NtCreateFile.c と /PIC/Source/NtOpenFile.c の両方の 56 行目で定義されている hookdir 変数を変更します。この変数は、MemFiles に作成中のファイルをインターセプトする必要があることを知らせる「特別な」ディレクトリです。hookdir 変数はデフォルトで "redteam" に設定されています。この変数がターゲットシステム上の実際のディレクトリではないこと、および両方のファイルで同じであることを確認してください!

image

'make all' を実行して、必要な BOF と PIC 関数の両方をコンパイルします。

MemFiles.cna を CobaltStrike クライアントにロードします。CobaltStrike が実行されているディレクトリがユーザーによって書き込み可能であることを確認してください。MemFiles は、MemFiles が機能するために必要なデータの可用性を確保するために、そこにテキストファイル (memfiles.txt) を作成します。

MemFiles は、Teamserver にコールインする各新しい Beacon にインストールされるように構成できます。これは、MemFiles->Config メニュー項目を使用して実現されます。デフォルトでは、MemFiles は新しい Beacon に自動インストールされません。これはグローバル設定であることに注意してください。2 つのクライアントが Teamserver に接続され、両方に MemFiles.cna がロードされている場合、クライアント A が「Install on beacon initial」設定を切り替えると、その変更はクライアント B にも反映されます!

image

コマンド

MemFiles は、BOF を実行する 4 つのターゲット向けコマンドと、プロジェクトのデータ構造を操作する 1 つの内部コマンドで構成されています。

ターゲット向け:

  1. meminit
  2. memlist
  3. memfetch
  4. memclean

内部データ構造:

  1. memtable

meminit

meminit は、Beacon プロセスに MemFiles をインストールする役割を担います。

MemFiles によってフックされる NtAPI のリストは次のとおりです:

  1. NtCreateFile
  2. NtWriteFile
  3. NtClose
  4. NtQueryVolumeInformationFile
  5. NtQueryInformationFile
  6. NtSetInformationFile
  7. NtOpenFile
  8. NtReadFile
  9. NtFlushBuffersFile

meminit は以下の主要なアクションを実行します:

  1. フックされた各 NtAPI の位置独立置換関数を Beacon に送信します
  2. MemFiles がそのライフサイクル全体を通じて必要とするさまざまな値を保持する構造体を Beacon メモリ内に作成します
  3. この構造体のアドレスを各 PIC 置換関数にパッチします
  4. メモリを割り当て、各 PIC 置換関数を Beacon プロセスメモリに注入します
  5. フックされた各 NtAPI のトランポリンを作成します
  6. リストされた各 NtAPI を、バイトの一部/全部を上書きして実行を PIC 置換関数にリダイレクトすることでフックします。

memlist

memlist は、特定の Beacon について MemFiles によって現在メモリに保存されているすべてのファイルを表示するために使用されます。
image
いくつかのフィールドが表示されます。ユーザーにとって最も関連性が高く関心のあるものは、ファイルの名前と保存されたデータの長さです。

memfetch

memfetch は、特定の Beacon について MemFiles によってメモリに保存されたファイルを実際に取得するために使用されます。

デフォルトでは、memfetch は MemFiles によって保存され、「ハンドル」が閉じられているすべてのファイルを取得します。この設計上の選択は、プログラム/アプリケーションが書き込みを完了していないファイルをダウンロードしようとすることに関連する問題を回避するために行われました。

つまり、プログラム/アプリケーションがファイルに対して開いたハンドルを閉じない場合、そのファイルは memfetch によってダウンロードされません。
これは、memfetch で "force" 引数を使用することで軽減できます。つまり、ハンドルの状態に関係なくすべてのファイルをメモリから取得するには、'memfetch force' を使用します。

memfetch がメモリから取得したファイルはダウンロードとして Teamserver に送り返され、CobaltStrike の Downloads タブを介して Teamserver からクライアントに同期できます。

ファイルが Teamserver によってダウンロードされると、Beacon プロセスのメモリから消去され、そのエントリは memlist で表示されなくなります。

memclean

memclean は、Beacon プロセスから MemFiles をクリーンアップして削除する役割を担います。

MemFiles の標準的な使用例は、MemFiles をインストールし、Beacon の存続期間中インストールしたままにすることです。ただし、MemFiles をツールと組み合わせてファイル出力をキャプチャして取得し、その後 MemFiles をアンインストールしてそのアーティファクトがメモリに残らないようにしたい場合は、memclean を使用して、meminit が実行される前の元の状態に Beacon プロセスを戻すことができます。

これには以下が含まれます:

  1. フックされた各 NtAPI のフックを解除します
  2. 作成された各トランポリンをゼロにして解放します
  3. 注入された各 PIC 置換関数をゼロにして解放します
  4. MemFiles 構造体をゼロにして解放します

memclean がこれらのアクションを実行する前に、MemFiles によってメモリに保存されたファイルを強制的にダウンロードすることに注意してください。MemFiles を単一のツールで使用してから削除する場合は、memfetch の使用をスキップして、memclean だけを使用してファイルの取得と MemFiles の Beacon プロセスからの削除を一度に行うことができます。

memtable

memtable は、MemFiles が現在インストールされている Beacon に関する情報を表示および追跡するために使用されます。また、グローバル構成情報も表示します。

各 CobaltStrike クライアントには独自の memtable があります。MemFiles は、接続されているすべての CobaltStrike クライアント間でのデータの同期を確保するために多大な努力を払っており、すべてのオペレーターがすべての Beacon で MemFiles を使用できるようにしています。詳細については、「Design Considerations and Commentary」を参照してください。

image

使用法

meminit コマンドを使用して、Beacon に MemFiles を初期化します。これは、MemFiles->Config メニューでオプションを切り替えることによって自動的に行われるように構成できます。

image

MemFiles が初期化されると、お気に入りのツールを使用してファイルをメモリに書き込むことができます! その方法は特定のツールによって異なります。複数のファイルを出力するディレクトリを指定できるものもありますが、ツールによって作成される単一のファイルに絶対パスを指定できるものもあります。いくつかの例を以下に示します:

SharpHound:

ここでは、SharpHound が生成したすべてのファイルを c:\redteam\ ディレクトリ(特別な MemFiles ディレクトリ)に出力し、ファイルを zip 圧縮しないように指定しています。MemFiles はメモリからファイルを読み取るプログラムをサポートしておらず、書き込みのみをサポートしているため、SharpHound の zip 機能は機能しません。

image

Rubeus:

Rubeus では "dump" コマンドが使用され、すべてのコンソール出力を(特別なディレクトリにある)ファイルに送信するように指示します。

image

Powershell:

この例では、Inline-Execute-PE を使用して powershell.exe を Beacon プロセスにロードし、'Get-ADUser' を実行してドメインユーザーのリストを取得しています。パイプと 'out-file' を使用して、データをメモリに書き込んでから取得できます。

image

ファイルを取得するには、memfetch を実行します:

image

MemFiles の使用が終了したとき、および/または Beacon プロセスにインストールしたままにしたくないときは、memclean を実行します:

image

上記の例では、まだダウンロードされていないファイルがあったことに注意してください。memclean はこのファイルをダウンロードし、MemFiles をアンインストールする前にメモリから消去します。

memtable を使用して MemFiles のステータスと構成を照会します。長時間の操作中は、memtable から死んだ/古い Beacon のエントリをクリアして、乱雑にならないようにします。

image

機能と制限事項

はじめにで強調したように、MemFiles が機能するには Beacon プロセス内にクリーンな NTDLL のコピーが必要です。これは、NtFunction 内の元のバイトを読み取り、特定のバイトをトランポリンにコピーし、そのトランポリンが後で MemFiles が干渉すべきではない NtFunction への通常の呼び出しを完了するために使用されるためです。このテーマについては、「Technical Details, Design Considerations, and Commentary」セクションで詳しく説明します。

MemFiles は各ファイルに対して最初に 1048576 バイトを割り当てます。データがメモリに書き込まれると、より大きなファイルを保持するために、必要に応じてこの割り当てを拡張できます。

ツールをダウンロード