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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Invoke-DOSfuscation — Cmd.exe コマンド難読化ジェネレーター & 検出テストハーネス | Kitploit
ツール/GitHubGitHub/danielbohannon/invoke-dosfuscation
防御ツールファジングペネトレーションテストコマンド&コントロールレッドチーミングインシデントレスポンス
GitHubdanielbohannon/invoke-dosfuscation

Invoke-DOSfuscation

Cmd.exe コマンド難読化ジェネレーター & 検出テストハーネス

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Invoke-DOSfuscation v1.0

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

はじめに

Invoke-DOSfuscation は、PowerShell v2.0 以降と互換性のある cmd.exe コマンド難読化フレームワークです。(ホワイトペーパー: https://www.fireeye.com/blog/threat-research/2018/03/dosfuscation-exploring-obfuscation-and-detection-techniques.html)

背景

過去数年にわたりインシデントレスポンスのコンサルタントとして、私は複数の脅威アクターが使用する数多くの難読化および回避手法を目の当たりにしてきました。これらの手法の中には非常に複雑なものもあれば、巧妙にシンプルなものもあり、どちらのカテゴリーも検出を回避するために使用されています。私の経験では、APT32 と FIN7 が最も魅力的な難読化手法を引き出しており、その創造性は特筆に値します。

2017年6月、一連のインクリメンタルなコマンドライン難読化手法の後、FIN7 は cmd.exe にネイティブな環境変数文字列置換機能を使用しました。当時、私はその存在すら知りませんでした。この発見に触発され、私は Nick Carr(@ItsReallyNick)と共著でブログ記事「Obfuscation in the Wild: Targeted Attackers Lead the Way in Evasion Techniques」を発表し、実際に確認された多数のグループの難読化手法を紹介しました。

その翌週、私はこのネイティブな cmd.exe 置換機能を調査し、Out-FINcodedCommand というシンプルな Proof-of-Concept ツールを構築してリリースしました。この POC をリリースした直後、私は立ち止まって考えました。「cmd.exe 内には、実際に使用される前に調査して検出を構築すべき、さらに多くの難読化機能が存在するのではないだろうか?」

それが私の研究の始まりであり、最終的にこの Invoke-DOSfuscation フレームワークの開発につながりました。

目的

攻撃者は、コマンドライン引数の値に基づく検出を回避するために、難読化手法をますます使用しています。これに対抗するため、私は5か月間かけて cmd.exe にネイティブな難読化およびエンコード手法を研究・開発し、まだ実際の攻撃で確認されていないこれらのコア技術に対する堅牢な検出を作成できるようにしました。

このフレームワークの唯一の目的は、防御側がこれらの手法に対する検出能力をテスト・調整するために、ランダムに生成された何千ものユニークに難読化されたサンプルコマンドを生成できるようにすることです。私はこのリリースに完全なテストハーネスを含めており、この検出テストプロセスを自動化しています。

多くの点で、このフレームワークは防御側が cmd.exe の難読化手法をファジングすることを可能にし、このツールを構築する過程で、初期の研究では発見できなかった多くの追加の難読化の機会を発見しました。

また、この情報を2017年11月に Microsoft と共有し、cmd.exe の内部動作に対する可視性をさらに高める機会について問い合わせました。これらは、このフレームワークに組み込まれているすべての難読化関数の構成要素となるコア技術です。

防御側として、この研究と開発の最終的な目標は、認識を高め、エンドユーザーが攻撃者の絶えず変化する TTP(ツール、技術、手順)からよりよく身を守るための変化を促進することです。

使用方法

すべての難読化コンポーネントは独立した正式な関数として構築されていますが、ほとんどのユーザーは Invoke-DOSfuscation 関数が、このフレームワークがサポートする難読化手法を探索・視覚化する最も簡単な方法であると感じるでしょう。ただし、各難読化カテゴリの多数の調整オプションをファジングしたり深く探索したりする場合は、Invoke-DOSfuscation 関数ラッパーを使用せずに、個々の関数を直接使用することをお勧めします。

防御側が容易にファジングを開始し、検出アイデアをテストできるように、このフレームワークには追加のモジュール Invoke-DOSfuscationTestHarness.psm1 も含まれており、プロジェクトの残りの部分とともに自動的にインポートされます。このモジュールの防御側向けの2つの主要な関数は次のとおりです。

  1. Invoke-DosTestHarness - テストコマンドのリストから(デフォルトの引数設定で)1000以上のランダムに難読化されたコマンドを生成します。ペイロードの整合性と検出の両方を目的としています。テストハーネスの各反復は、利用可能なすべての関数引数をランダム化し、Invoke-DOSfuscation メニュー駆動関数がデフォルトで使用するより標準化された -ObfuscationLevel 値(1-3)の代わりに、4つの難読化関数を直接呼び出します。これにより、より広範囲の難読化出力が生成され、より徹底的な検出を構築できます。各難読化コマンドは、2番目の関数に対してチェックされます。
  2. Get-DosDetectionMatch - 入力コマンド(文字列)を、関数内の $regexDetectionTerms 配列に入力されたすべての正規表現検出値と照合します。これは Invoke-DosTestHarness によって自動的に呼び出されますが、単独でも呼び出すことができます。

各テストハーネスの呼び出しの最後に、適切なコマンド実行と検出の統計が表示され、防御側はどのコマンドの検出一致数が0または1〜2しかないか、どのコマンドがより良いカバレッジを必要とするかを迅速に特定できます。

最後に、防御側がテストハーネスを実行しなくても開始できるように、Samples ディレクトリに4つの難読化関数ごとに分類された1000のサンプルコマンドを提供しています。形式には .txt ファイル、および Security と Sysmon の .evtx ファイルが含まれています。Invoke-DOSfuscationTestHarness.psm1 の $regexDetectionTerms 配列にはいくつかのサンプル検出ルールを含めましたが、サンプルの難読化コマンドをテストする際には、さらに多くのルールを追加してテストする必要があります)。生のコマンドを含む .txt ファイルに加えて、1000のサンプルコマンドそれぞれのプロセス実行ログ(Sysmon EID 1 イベント)を含む .evtx ファイルもあります。これらのイベントログは、Invoke-DOSfuscation の基盤となるいくつかの構成要素技術の副産物である、微妙な子プロセス実行に基づくインジケーターを構築するのに非常に役立ちます。

開始するには、現在の検出ルールに 一致しない サンプル難読化コマンドを表示するには、次のコマンドを実行します。

(Get-Content .\Samples\STATIC_1-of-4_Out-DosConcatenatedCommand.txt) | where-object { -not (Get-DosDetectionMatch -Command $_).Detected }

難読化コマンドと、Security EID 4688 に記録された実行イベントログからの子プロセスの両方をテストするには、次のコマンドを実行します。

(Get-WinEvent -Path .\Samples\DYNAMIC_SECURITY_EID4688_1-of-4_Out-DosConcatenatedCommand.evtx) | where-object { $_.Message } | foreach-object { ($_.Message.Split("`n") | select-string '^\tProcess Command Line:\t') -replace '^\tProcess Command Line:\t','' } | where-object { -not (Get-DosDetectionMatch -Command $_).Detected }

インストール

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

インストールするには:

root@kitploit:~
Import-Module .\Invoke-DOSfuscation.psd1
Invoke-DOSfuscation

ライセンス

Invoke-DOSfuscation は Apache 2.0 ライセンスの下でリリースされています。

リリースノート

v1.0 - 2018-03-23 Black Hat Asia(シンガポール): Invoke-DOSfuscation の公開リリース。

ツールをダウンロード