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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
mail-security-tester — メールセキュリティおよびフィルタリングソリューションのためのテストフレームワーク。 | Kitploit
ツール/GitHubGitHub/tkcert/mail-security-tester
フィッシングツール脆弱性スキャナーIDS/IPS回避ペネトレーションテストメールセキュリティ
GitHubtkcert/mail-security-tester

mail-security-tester

メールセキュリティおよびフィルタリングソリューションのためのテストフレームワーク。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Build Status

メールセキュリティテストフレームワーク

メールセキュリティおよびフィルタリングソリューションのためのテストフレームワーク。

重要: これを悪用しないでください!クラウドまたはその他のホスト型ソリューションのテストは、常にテスト対象のプロバイダーから承認を得る必要があります。自分のテストアカウントのみを使用し、大量のテストメールで誰にも迷惑をかけないでください。

インストール

メールセキュリティテストフレームワークはPython 3.5以上で動作します。このリポジトリをクローンしてそのまま使用できます。追加の依存関係は必要ありません。

使用方法

スクリプト mail-tester.py がテストを実行します。./mail-tester.py --help でヘルプメッセージを読み、./mail-tester.py -l でテストおよび回避モジュールのリストを確認して、スクリプトの機能と使い方の概要を把握してください。いくつかのヒント:

  • 最小限のテスト実行には、少なくともパラメータ --smtp-server と --to を指定する必要があります。
  • すべてのパラメータは、先頭の -- を省略して設定ファイルに保存することもできます。この設定ファイルは ./mail-tester.py @tester.conf のように呼び出すことで使用できます(設定は tester.conf に含まれます)。
  • 複数の受信者は --to で設定でき、異なるフィルタ設定のテストが可能です。
  • 一部のメールフィルタリングソリューションは、しばらくするとメッセージを拒否することがあります。--auto-delay を使用してメールの自動スロットリングを行います。これは --delay-step、--delay-max、--delay で微調整できます。
  • 一部のテスト(スパムとマルウェア)にはサンプルが必要です。サンプルをディレクトリに配置し、--spam-folder および --malware-folder パラメータでそれらのディレクトリを設定します。サンプルはこのリポジトリには含まれておらず、今後も含まれません。マルウェアを入手するのに適した場所は、theZoo、Das Malwerk などのコレクションです。スパムはスパムフォルダから直接エクスポートできますが、EML形式である必要があります。
  • ブラックリストは --blacklist パラメータで指定でき、送信者アドレスとして使用されます。
  • Shellshock および subject XSS テストケースには、バックコネクトを確認できる(特にDNSリクエスト)有効なバックコネクトドメインが必要です。無料の Canary Tokens サービス をこの目的で使用できます。Thinkst によるこの素晴らしいサービスに感謝します!
  • --evasion content-disposition を使用すると、添付ファイル認識を回避するための巧妙なトリックを有効にできます。これらは過去にAV/サンドボックスソリューションを混乱させ、悪意のあるメールを通すために使用されていました。
  • テスト結果は --log でログに記録することを忘れないでください。メールフィルタリングプロバイダーはしばしばSMTPダイアログでメールを拒否し、それが生成されたログに反映されます。
  • テストケースは --output でディレクトリ内のプレーンファイルとして、または MBox (--mbox) や MailDir (--maildir) 形式でダンプできます。これは、メールを送信せずにメールユーザーエージェントをテストしたり、生成されたテストケースを文書化またはレビューするのに便利です。

開発と拡張

テスト

独自のテストは、tests/ ディレクトリ内の既存または新規作成されたPythonファイルのクラスとして実装できます。クラスは、このプロジェクトのモジュール tests.base にある MailTestBase のサブクラスである必要があります。新しく実装されたテストは、クラス変数 active が True に設定されると自動的に検出されます。さらに、メインリポジトリにテストをコントリビュートする予定がある場合は、クラス変数 identifier、name、description を適切に設定する必要があります。

以下の基底クラスが存在し、オーバーライドを意図したメソッドまたはクラス変数があります:

  • MailTestBase: 汎用テストのテストクラス。
    • generateTestCases(): テストメッセージを生成します。これらは、有効なメールメッセージを保証するために、Pythonの email.mime.* パッケージの MIME* クラス、または email.message の Message クラスを使用して生成する必要があります。
    • active: テストをアクティブにするかどうかのブール値。
    • identifier: テストの短い識別子。これはパラメータでテストを有効/無効にするために使用されます。
    • name: 短いテストタイトル。
    • description: より長いテストの説明。約100文字以内に収める必要があります。
    • delivery_sender と delivery_recipient: ブール値で、デフォルトは False。通常、送信者と受信者はメッセージ内で設定され、PythonのSMTPモジュールがそこから取得します。場合によっては、SMTPライブラリで明示的に設定することが望ましいことがあり、これらの値を True に設定することで構成できます。
    • finalizeMessage(msg): デフォルトでは、基底テストクラスは および ヘッダーを適切に設定します。この動作は、テストケースの必要に応じてオーバーライドできます。

生成されたメッセージの件名を設定することは、受信トレイでテストを認識できるようにするために強く推奨されます。

回避

回避クラスは、メールセキュリティソリューションによる特定のメールプロパティの認識を回避する技術を実装します。現在、意図的に破損した Content-Disposition ヘッダーを使用して添付ファイルを隠そうとする回避技術が実装されています。

新しい回避の実装

回避はファクトリクラスパターンで実装されます。DeliveryBase クラスは BaseEvasionFactory から派生したファクトリクラスをインスタンス化します。ファクトリコンストラクタは回避が有効かどうかを示すフラグを受け取ります。回避ファクトリインスタンスはテストクラスに渡され、回避識別子をキーとする辞書を含む evasions 属性に格納されます。テスト内では、getEvasionGenerator() を使用して(EvasionBase に基づく)回避クラスがインスタンス化されます。コンストラクタパラメータは回避手法ごとに個別に定義されます。

回避を実装するために使用される基底クラスは次のとおりです:

  • BaseEvasionFactory: 回避ファクトリはこのクラスに基づく必要があります。通常、以下のクラス変数のみを設定します。
    • active: 回避を有効にする場合は True に設定します。
    • identifier: テスト構成で回避を有効にするために使用される回避モジュールの短い識別子。
    • name: 回避手法の短いタイトル。
    • description: 回避手法のより長い説明。約100文字以内に収める必要があります。
    • generator_evasion: 回避が有効な場合にインスタンス化される回避クラス。
    • generator_default: 回避が無効な場合にインスタンス化される回避クラス。
  • BaseEvasion: 回避の実装はこの基底クラスのサブクラスである必要があります。以下のメソッドをオーバーライドする必要があります:
    • __init__(): 回避手法で操作されるベースメッセージまたは添付ファイルを使用してクラスをインスタンス化する必要があります。
    • generate(): コンストラクタに渡されたオブジェクトに回避手法を適用し、(description, applied_object) タプルとして呼び出し元に生成します。

一般的に、回避クラスはすべての回避バリアントを生成し、デフォルトを専用のテストケースとして渡す必要があります。一方、デフォルトの回避クラスは指定されたオブジェクトを渡すか、ヘッダーなどの必要なデータ構造を作成するだけです。

テストケースでの回避手法の使用

回避手法は、適用可能なテストケースで使用されます。例えば、回避手法がメールまたは添付ファイルのヘッダーを操作する場合、以下の手順を実装する必要があります:

  1. 回避を考慮せずにベースオブジェクト(メールまたは添付ファイル)を生成します。
  2. self.evasions から回避ファクトリインスタンスを利用して適切な回避クラスをインスタンス化します。例: evasion_items = self.evasions["evasion_identifier"].getEvasionGenerator(message)
  3. ジェネレータを反復処理し、テストケースを生成します:
root@kitploit:~
for evasion_item in evasion_items:
    yield evasion_item

コンテンツ配置回避手法の使用方法

コンテンツ配置回避手法はフレームワークに既に実装されており、悪意のある添付ファイルの認識を対象とするすべてのテストケースで使用する必要があります。コンストラクタは添付ファイルと意図されたファイル名を受け取ります。回避クラスは、(evasion name, applied attachment) タプルを生成し、テストの generateAttachments() メソッドで直接生成できます。

ツールをダウンロード
From
To
  • MailAttachmentTestBase: 添付ファイルテストケースのテストクラス。これにより、件名とテキスト部分を持つ完全な有効なメールが生成され、テストケースが添付されます。MailTestBase から派生しているため、そのメソッド/変数もここでオーバーライドできます。
    • generateAttachments(): テストケースを (description, attachment) タプルとして生成します。
    • subject: 件名を設定します。プレースホルダ {} は、generateAttachments() によって生成された説明に置き換えられます。
    • generateTestCases(): 上記のメッセージ生成の実装で既にオーバーライドされていますが、必要に応じてさらに適応できます。