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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Empire — Empireは、PowerShellおよびPythonを使用したポストエクスプロイテーションエージェントです。 | Kitploit
ツール/GitHubGitHub/empireproject/empire
特権昇格ペイロード生成永続化メカニズムエクスプロイト横移動ポストエクスプロイトペネトレーションテストコマンド&コントロールレッドチーミングArchived
GitHubempireproject/empire

Empire

Empireは、PowerShellおよびPythonを使用したポストエクスプロイテーションエージェントです。

7.9k2.9k6年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見るウェブサイト

Invoke-Obfuscation v1.8

Invoke-Obfuscation スクリーンショット

はじめに

Invoke-Obfuscation は、PowerShell v2.0 以上に対応した PowerShell コマンドおよびスクリプトの難読化ツールです。

背景

2015 年秋、私は PowerShell 言語の柔軟性の調査を始め、攻撃者が日常的に使用するいくつかの一般的なテクニックを実現するための様々な方法をカタログ化することにしました。

最初はエンコードされたコマンドとリモートダウンロード用のクレードル構文に焦点を当てていましたが、実行中のプロセスと Security EID 4688 および Sysmon EID 1 イベントログの両方において、コマンドの実行を妨げない様々なエスケープ文字がコマンドライン引数に残っていることを発見しました。これにより、任意の PowerShell コマンドやスクリプトに含まれるあらゆる種類の「トークン」を難読化する方法を体系的に探求するようになりました。

次に、よりマイナーな文字列レベルの難読化手法、さまざまなエンコード/暗号化手法(ASCII/hex/octal/binary や SecureString など)、そして最後に、powershell.exe からのコマンドライン引数を抽象化し、親プロセスや祖父母プロセスに戻すための PowerShell 起動手法を探求しました。

目的

攻撃者やコモディティマルウェアは、powershell.exe のコマンドライン引数からコマンドの大部分を隠すために、非常に基本的な難読化手法を使い始めています。私はこのツールを、Blue Team が PowerShell 2.0~5.0 で構文的に可能であると現在私が知っている難読化コマンドをシミュレートし、これらの手法に対する検出能力をテストできるようにするために開発しました。

このツールの唯一の目的は、PowerShell コマンドがコマンドライン上でどのように表示されるかについて、防御側が持つかもしれないあらゆる仮定を打ち破ることです。このツールが、Blue Team が PowerShell ログを更新してモジュール、スクリプトブロック、文字起こしログを含めることに加えて、コマンドライン上の難読化の兆候を探すようにシフトするきっかけとなることを願っています。これらのログは、このツールが生成する難読化手法のほとんどの側面を単純化するためです。

使い方

すべての難読化レイヤーは個別のスクリプトとして実装されていますが、ほとんどのユーザーには、Invoke-Obfuscation 関数が、このフレームワークが現在サポートしている難読化手法を探索し可視化する最も簡単な方法でしょう。

インストール

Invoke-Obfuscation のソースコードは Github でホストされており、このリポジトリ (https://github.com/danielbohannon/Invoke-Obfuscation) からダウンロード、フォーク、レビューすることができます。問題や機能リクエストは、このプロジェクトに関連する Github のバグトラッカーを通じて報告してください。

インストール方法:

root@kitploit:~
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation

ライセンス

Invoke-Obfuscation は Apache 2.0 ライセンスの下で公開されています。

リリースノート

v1.0 - 2016-09-25 DerbyCon 6.0 (ケンタッキー州ルイビル、米国): Invoke-Obfuscation のパブリックリリース。

v1.1 - 2016-10-09 SANS DFIR Summit (プラハ、チェコ共和国): 該当するすべての TOKEN 難読化関数に -f フォーマット演算子の順序変更機能を追加。また、変数値設定のための追加構文オプションも追加。

v1.2 - 2016-10-20 CODE BLUE (東京、日本): Type TOKEN 難読化を追加(型名に対する文字列難読化オプション付きの直接型キャスト)。

v1.3 - 2016-10-22 Hacktivity (ブダペスト、ハンガリー): 2 つの新しい LAUNCHER: CLIP+ と CLIP++ を追加。また、For-EachObject/% を必要としない、すべての ENCODING 関数に対する追加の(よりシンプルな)配列文字変換構文も追加。

v1.4 - 2016-10-28 BruCON (ゲント、ベルギー): 新しい BXOR ENCODING 関数を追加。また、すべての ENCODING 関数のすべてのコンポーネントと、すべての LAUNCHER の PowerShell 実行フラグに対して、大文字小文字のランダム化を強化。最後に、すべての LAUNCHER に -ExecutionPolicy の省略形 -EP オプションを追加し、PowerShell 実行フラグ -WindowStyle のオプション整数表現も追加: Normal (0)、Hidden (1)、Minimized (2)、Maximized (3)。

v1.5 - 2016-11-04 Blue Hat (ワシントン州レドモンド、米国): WMIC LAUNCHER を追加。WMIC コマンドライン引数のランダム化も含む。

v1.6 - 2017-01-24 Blue Hat IL (テルアビブ、イスラエル):

  • CLI 機能を追加: 例: Invoke-Obfuscation -ScriptBlock {Write-Host 'CLI FTW!'} -Command 'Token\All\1, Encoding\1,Launcher\Stdin++\234,Clip' -Quiet -NoExit
  • UNDO 機能を追加し、一度に 1 層の難読化を除去可能に。
  • Token\All\1 から空白難読化を削除し、大規模スクリプトの難読化を高速化。
  • すべてのランチャーにプロセス引数ツリー出力を追加し、防御側を支援。
  • ベースメニューの自動検出機能を追加し、BACK や HOME を使用する必要を排除: 例: TOKEN を実行し、次に ALL、1 を実行した場合、HOME や BACK でホームメニューに戻らなくても、単に LAUNCHER と入力すると LAUNCHER メニューにアクセス可能。
  • CLI およびインタラクティブモードで使用されるマルチコマンド構文を追加: 例: Token\All\1,String\3,Encoding\5,Launcher\Ps\234,Clip
  • すべてのメニューおよび難読化コマンドに正規表現機能を追加: 例: Token**,String[13],Encoding(1|6),Launcher.*[+]{2}\234,Clip
  • OUT FILEPATH の単一コマンド機能を追加。
  • SCRIPTBLOCK 値として powershell -enc 構文が入力された場合のデコード機能を追加。
  • すべての ENCODING 関数において、ForEach-Object/% のランダム化構文オプションとしてエイリアス ForEach を追加。
  • Out-SecureStringCommand.ps1 に -Key -Ke -K KEY サブ文字列構文オプションを追加。
  • すべての \Home\String 難読化関数により徹底した大文字小文字のランダム化を追加。
  • CLIP+ および CLIP++ ランチャー関数に -ST/-STA (Single-Threaded Apartment) フラグを追加。PowerShell 2.0 で実行する場合に必要。
  • 変数値取得に Get-ChildItem を使用しているすべての箇所で、Get-Item/GI/Item 構文を追加。
  • TYPE 難読化関数に Set-Item 変数インスタンス化構文を追加。
  • Out-ObfuscatedStringCommand.ps1 の Out-EncapsulatedInvokeExpression 関数に、PowerShell 自動変数および環境変数値の連結を使用した追加の Invoke-Expression/IEX 構文を追加し、すべてのランチャー、STRING 関数、ENCODING 関数にコピーして、IEX の多数のコマンドライン構文を追加。
  • String\Reverse およびすべての ENCODING 難読化オプションに 2 つの新しい JOIN 構文を追加:
  1. [String]::Join('',$string) JOIN 構文
  2. OFS 変数 JOIN 構文(出力フィールド区切り自動変数)
  • Encoding\5 にさらに 2 つの SecureString 構文を追加:
  1. PtrToStringAnsi / SecureStringToGlobalAllocAnsi
  2. PtrToStringBSTR / SecureStringToBSTR
  • いくつかの SecureString メンバーに対して 6 つの GetMember 代替構文を追加:
  1. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[3].Name).Invoke
  2. PtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[5].Name).Invoke
  3. PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[2].Name).Invoke
  4. PtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[4].Name).Invoke
  5. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[0].Name).Invoke
  6. PtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[1].Name).Invoke
  • Out-ObfuscatedTokenCommand.ps1 を更新し、VARIABLE 難読化で変数が既に ${} でカプセル化されている場合はカプセル化しないように修正(${${var}} のようなエラーが発生するのを防止)。
  • Invoke-Obfuscation.psm1 を Invoke-Obfuscation.psd1 に置き換え(@Carlos_Perez に感謝)。
  • @cobbr_io および @IISResetMe によって報告されたいくつかの TOKEN レベルの難読化バグを修正。

v1.7 - 2017-03-03 nullcon (ゴア、インド):

  • 3 つの新しい LAUNCHER: RUNDLL、RUNDLL++、MSHTA++ を追加
  • 追加の ExecutionContext ワイルドカード変数文字列を追加

v1.8 - 2017-07-27 Black Hat (ネバダ州ラスベガス、米国):

  • 2 つの新しい ENCODING オプション: 特殊文字と空白を追加
ツールをダウンロード