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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
PowerShellArmoury — セキュリティに携わる皆さんのためのPowerShell武器庫 | Kitploit
ツール/GitHubGitHub/cfalta/powershellarmoury
暗号化/復号化ツールペイロード生成スクリプトと自動化ペネトレーションテストユーティリティとフレームワークレッドチーミングArchived
GitHubcfalta/powershellarmoury

PowerShellArmoury

セキュリティに携わる皆さんのためのPowerShell武器庫

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

人気

すべて見る →

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

すべてのツールを探索

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

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

[!IMPORTANT]
このリポジトリはアーカイブされました。楽しい旅ではありましたが、PSArmouryはその有用性を超えたと思います。


PowerShellArmoury

PowerShell Armouryは、ペンテスター、さまざまなチームのメンバー、およびエンゲージメント中にさまざまなPowerShellツールを使用するすべての人のために設計されています。これにより、お気に入りのすべてのPowerShellスクリプトを単一の難読化されたファイルにダウンロードして保存できます。

RubeusやPowerViewなどを手動で更新する必要はありません。構成ファイルを一度作成するか、ツールに含まれているデフォルトの構成ファイルを使用するだけです。これからは、次のエンゲージメントに向かう前に"New-PSArmoury"を実行するだけで済みます。

さらに、PSArmouryはコードを難読化し、AMSIバイパスが含まれています。モジュール化された設計により、検出が発生した場合に回避コードや難読化コードを簡単に変更できます。



一般的な構造

現在のバージョンのPSArmouryは、モジュール化された設計を採用しています。

root@kitploit:~
 New-PSArmoury.ps1
 PSArmoury.json
 utilities
    ConvertTo-Powershell.ps1
    Invoke-Shuffle.ps1
 modules
    evasion.ps1
    obfuscation.ps1

コードは、実行するメインの生成スクリプトNew-PSArmoury.ps1に分割されています。回避、難読化、および復号化のコードは、modulesディレクトリ内の別々の.ps1ファイルに保存されています。これらの別々のファイルはメインスクリプトから呼び出され、特定の機能(AMSIバイパスなど)を簡単に変更できるようにしています。

modulesディレクトリに加えて、utilitiesディレクトリもあります。ここには、特定のシナリオで役立つスタンドアロンスクリプトがあります。

modulesディレクトリ

modulesディレクトリのデフォルトのパスは.\modulesで、ドットはシェルの現在の作業ディレクトリを指します。New-PSArmouryの-ModulesDirectory引数を使用して、modulesディレクトリのパスを変更できます。ただし、スクリプトファイル自体の名前はメインスクリプトにハードコードされており、常に次のものが期待されます。

  • evasion.ps1
  • obfuscation.ps1

これら2つを詳しく見てみましょう。

evasion.ps1

このスクリプトには、回避したいものをバイパスするためのコードを含める必要があります。デフォルトでは、よく知られたAMSIバイパスが含まれています(thanks amsi.fail)。 以下の点に注意してください。

  • ここにあるコードは、他のすべてのコード(例:復号化)の前に実行されます。
  • 検証は一切行われません!ここに配置したものはすべて、そのままIEXにパイプされます。

obfuscation.ps1

このスクリプトには、難読化および復号化に使用されるコードを含める必要があります。デフォルトのobfuscation.ps1はRC2暗号化を使用しています。すぐに使用できる例:

  • TEMPLATE_obfuscation_RC2.ps1 --> これがデフォルトです
  • TEMPLATE_obfuscation_byte_convert.ps1
  • TEMPLATE_obfuscation_empty.ps1

TEMPLATE_obfuscation_empty.ps1は実際には何もせず、独自の関数を構築するためのテンプレートとして機能します。

これらのいずれかを使用したい場合は、名前を"obfuscation.ps1"に変更し、デフォルトのファイルを削除してください。

カスタマイズバージョンを作成する場合、難読化に関して次の点に注意してください。

  • 関数名は常に"Get-PSArmouryObfuscation"で、単一の文字列パラメーター"Code"を持つ必要があります。これは、メインスクリプトがアーマリーに含めたいアイテムごとに呼び出すためです。
  • 関数は、難読化されたコードを単一の文字列値として返す必要があります(推奨)。スクリプトのメインコードは、追加のbase64エンコード/デコードループを実行して、他のデータも処理できるようにしますが、文字列として返すほうが簡単です。
  • 対応する復号化関数は、ここで返されたものを理解できる必要があります。メインスクリプトは結果を渡すだけで、魔法は起こりません。

復号化に関して、次の点を忘れないでください。

  • 関数名は常にGet-PSArmouryDeObfuscationで、パラメーターはありません。固定のグローバル変数を反復処理するためです。
  • 関数は、復号化されたコードを単一の文字列値として返し、実行可能な状態にする必要があります。返されたものはすべてIEXにパイプされるため、残りはあなた次第です。

utilitiesディレクトリ

utilitiesディレクトリには、便利なスタンドアロンスクリプトが含まれています。

  • ConvertTo-Powershell.ps1
    • コンソールC#アプリケーションをPowerShellスクリプトに変換します。詳細については、対応するブログ記事を参照してください。
  • Invoke-Shuffle.ps1
    • 単一行のコードを、元の文字列の一部を保持する複数の変数に変換し、実行時に結合して呼び出す単純な難読化スクリプトです。

構成リファレンス

構成ファイルは、1つ以上のオブジェクトを持つ単一の配列で構成される有効なJSONである必要があります。各オブジェクトは単一のスクリプトソースとして解釈されます。各オブジェクトには次の属性があります。

Name(必須)

このオブジェクトに含まれるスクリプトを識別するための任意の名前。自分用の参照として意図されています。

URL(必須)

スクリプトの内容を取得する場所。これはWebリソースへのURL(https://)、ローカルパス(C:\)、ネットワークリソース(\...)のいずれかです。URLは、Net.WebclientまたはPowerShellのGet-Itemにそれぞれ渡されます。基本的に、これら2つのデフォルトで処理できる形式であれば機能します。

Type(必須)

アーマリー作成者にスクリプトの場所に関するヒントを提供します。有効なタイプは3つあります。

  • GitHub
    • GitHub APIに対して認証するための資格情報を要求します。また、ファイルを直接指す「raw」URLと、リポジトリを指すURLを区別しようとします。URLがリポジトリを指す場合、スクリプトはそのリポジトリ内のすべてのPowerShellファイルを自動的に検索して含めます。例: "https://github.com/cfalta/PoshRandom"
  • WebDownloadSimple
    • HTTP GETを使用して認証なしでダウンロードできるファイルを意味します。例: "http://mywebserver.com/file.ps1"
  • LocalFile
    • ディスク上のファイル。例: "C:\temp\test.ps1"。パスがディレクトリを指す場合、拡張子".ps1"を持つすべてのファイル(再帰的)が含まれます。

FileInclusionFilter(オプション)

タイプ"GitHub"のオブジェクトでのみ解釈されます。PowerShellの"like"比較演算子を使用してファイル名全体と照合されるため、ワイルドカードを自分で含める必要があることに注意してください。ファイル名の一部を一致させたい場合は、必ずアスタリスク(*)を含めてください。"*.ps1"は".ps1"で終わるすべてのファイルを意味しますが、".ps1"は単に".ps1"を意味します。

フィルターを含める必要はありませんが、含める場合は使用する必要があります。空のInclusionFilterはファイルなしを意味します。

FileExclusionFilter(オプション)

InclusionFilterと同様ですが、明らかに逆です。除外は優先されます。

引数

詳細については、インラインのPowerShellヘルプ(man -full New-PSArmoury)を参照してください。

-Path

新しいアーマリーファイルへのパス。デフォルトは".\MyArmoury.ps1"です。

-FromFile

PowerShellスクリプトをローカルフォルダーまたはファイルから直接ロードし、構成ファイルを提供する必要はありません。

-Config

JSON構成ファイルへのパス。このスクリプトに付属のサンプルを参照してアイデアを得てください。

-ModulesDirectory

モジュールディレクトリへのパス。デフォルトは".\modules"です。 ModulesDirectoryが使用される場合、EvasionPathおよびObfuscationPathパラメーターは使用できません。

-EvasionPath

回避スクリプトへのパス。EvasionPathとObfuscationPathが使用される場合、ModulesDirectoryパラメーターは使用できません。

-ObfuscationPath

難読化スクリプトへのパス。EvasionPathとObfuscationPathが使用される場合、ModulesDirectoryパラメーターは使用できません。

-ValidateOnly

"-Config"と一緒に使用して、JSON構成ファイルの基本構文を実行せずに検証します。

-GithubCredentials

GitHubユーザー名とアクセストークンを資格情報オブジェクトとして渡すと、スクリプトは入力を求めません。テストのために繰り返しアーマリーを作成する場合に便利です。

次のように使用します。

root@kitploit:~
$c = get-credential
New-PSArmoury -GithubCredentials $c

GitHubアクセストークン

スクリプトがGitHub APIを適切に使用できるように、有効なGitHubユーザー名と個人アクセストークンを提供する必要があります。MFAが有効になっている場合(有効にするべきです)、ユーザー名/パスワードは機能しないため使用しないでください。また、基本認証を使用したAPIアクセスは非推奨です。

このガイドに従って個人アクセストークンを作成してください。

注意:アクセストークンに必要な権限は、repoセクションのpublic_repoのみです。

これは、大規模なリポジトリ(PowerSploitなど)を解析して.ps1ファイルを含める場合にGitHubがブロックしないようにするためにトークンが必要なためです。

使用例

例1 - すべてデフォルト

デフォルト設定でアーマリーを作成する場合(注意:Base64エンコード以外の難読化は行われません)、次のように実行します。

root@kitploit:~
. .\New-PSArmoury.ps1
New-PSArmoury

これにより、現在の作業ディレクトリに"MyArmoury.ps1"という.ps1ファイルが作成され、次のものが使用されます。

  • デフォルトの構成".\PSArmoury.json"
  • ".\modules\evasion.ps1"にあるデフォルトのAMSIバイパス
  • それぞれ".\modules\obfuscation.ps1"と".\modules\deobfuscation.ps1"にあるデフォルトの難読化/復号化(base64)

次のようにアーマリーを現在のセッションにロードできます。

root@kitploit:~
cat -raw .\MyArmoury.ps1 | iex

アーマリーをロードすると、次の手順が実行されます。

  • 回避コードを呼び出す
  • 制御を復号化関数に渡す。復号化関数は次のことを行います。
    • 難読化されたすべてのアイテムを繰り返し処理し、
      • 復号化
      • IEXにパイプ

その後、アーマリーに含めたすべてのPowerShellコードが利用可能になります。次のようにコマンドレットを通常どおり呼び出します。

root@kitploit:~
Invoke-Rubeus -Command "kerberoast /stats"
Get-DomainGroupMember -Identity "Domain Admins" -Recurse

アーマリーに何を入れたか覚えていない場合は、ロードしてインベントリを呼び出します。

root@kitploit:~
Get-PSArmoury

例2 - PSArmouryに付属のバイト変換/JSON形式の難読化手法と異なる構成ファイルを使用する

-EvasionPathおよび-ObfuscationPathパラメーターを指定してNew-PSArmouryを開始します。

root@kitploit:~
New-PSArmoury -Config C:\myarmouryconfig.json -ObfuscationPath .\modules\TEMPLATE_obfuscation_byte_convert.ps1 -EvasionPath .\modules\evasion.ps1

例3 - PowerShellスクリプトを含むローカルフォルダーからアーマリーを作成する

注意:この場合、フォルダーパスを指定するため、フォルダー内のすべての.ps1ファイルが追加されます。単一ファイルのパスを指定すると、そのファイルのみが処理されます。

root@kitploit:~
New-PSArmoury -FromFile C:\myscriptfolder
ツールをダウンロード