
Python2!
//このプロジェクトを利用して脆弱性を発見しましたか?ご連絡ください!
SSLContext) < Python 3--key=server.pem結果:```python
[Vulnerable!] <class striptls.StripWithInvalidResponseCode at 0xffd3138c>
[Vulnerable!] <class striptls.StripWithTemporaryError at 0xffd4611c>
[ ] <class striptls.StripFromCapabilities at 0xffd316bc>
[Vulnerable!] <class striptls.StripWithError at 0xffd4614c>
[Vulnerable!] <class striptls.StripInboundTLS at 0x7f08319a6808>
[Vulnerable!] <class striptls.StripFromCapabilities at 0x7f08319a67a0>
[Vulnerable!] <class striptls.UntrustedIntercept at 0x7f08319a6870>
## 使い方```
#> python2 -m pip install striptls
#> python2 -m striptls --help
Please provide the Markdown content to translate.``` #> python -m striptls --help # from pip/setup.py #> python striptls --help # from source / root folder Usage: striptls.py [options]
example: striptls.py --listen 0.0.0.0:25 --remote mail.server.tld:25
Options: -h, --help show this help message and exit -q, --quiet be quiet [default: True] -l LISTEN, --listen=LISTEN listen ip:port [default: 0.0.0.0:<remote_port>] -r REMOTE, --remote=REMOTE remote target ip:port to forward sessions to -k KEY, --key=KEY SSL Certificate and Private key file to use, PEM format assumed [default: server.pem] -s, --generic-ssl-intercept dynamically intercept SSL/TLS -b BUFFER_SIZE, --bufsiz=BUFFER_SIZE -x VECTORS, --vectors=VECTORS Comma separated list of vectors. Use 'ALL' (default) to select all vectors, 'NONE' for tcp/ssl proxy mode. Available vectors: ACAP.StripFromCapabilities, ACAP.StripWithError, ACAP.UntrustedIntercept, FTP.StripFromCapabilities, FTP.StripWithError, FTP.UntrustedIntercept, GENERIC.Intercept, IMAP.ProtocolDowngradeToV2, IMAP.StripFromCapabilities, IMAP.StripWithError, IMAP.UntrustedIntercept, IRC.StripCAPWithNotRegistered, IRC.StripFromCapabilities, IRC.StripWithError, IRC.StripWithNotRegistered, IRC.StripWithSilentDrop, IRC.UntrustedIntercept, NNTP.StripFromCapabilities, NNTP.StripWithError, NNTP.UntrustedIntercept, POP3.StripFromCapabilities, POP3.StripWithError, POP3.UntrustedIntercept, SMTP.InboundStarttlsProxy, SMTP.InjectCommand, SMTP.ProtocolDowngradeStripExtendedMode, SMTP.StripFromCapabilities, SMTP.StripWithError, SMTP.StripWithInvalidResponseCode, SMTP.StripWithTemporaryError, SMTP.UntrustedIntercept, XMPP.StripFromCapabilities, XMPP.StripInboundTLS, XMPP.UntrustedIntercept [default: ALL]
## Install (optional)
pip から
#> pip install striptls
ソースから
#> setup.py install
## 例
inbound outbound
[inbound_peer]<------------->[listen:proxy]<------------->[outbound_peer/target]
smtp-client striptls remote/target
local `smtp-client` -> `localhost:8825` (proxy) -> `mail.gmx.net:25`
### 汎用 SSL/TLS インターセプト
`--generic-ssl-intercept` は汎用的な ssl/tls ハンドシェイク検出とセッション変換を有効にするグローバルスイッチです。任意の mangle/vector と組み合わせることができます。
`GENERIC.Intercept` は ssl/tls ハンドシェイク検出および変換機能の mangle/vector 実装です。
# python striptls.py -l 0.0.0.0:9999 -r mail.gmx.com:465 -x GENERIC.Intercept
- INFO - <Proxy 0x1fdcf50 listen=('0.0.0.0', 9999) target=('mail.gmx.com', 465)> 準備完了。
- DEBUG - * ベクターを追加しました (port:None , proto: GENERIC): <class __main__.Intercept at 0x0218AAB0>
- INFO - <RewriteDispatcher ssl/tls_intercept=False vectors={None: set([<class __main__.Intercept at 0x0218AAB0>])}>
- INFO - <Session 0x1ff00b0> クライアント ('127.0.0.1', 8228) が接続しました
- INFO - <Session 0x1ff00b0> ターゲット ('mail.gmx.com', 465) に接続中
- DEBUG - <RewriteDispatcher - mangle を変更しました: __main__.Intercept new: True>
- INFO - ProtocolDetect: SSL/TLS バージョン: TLS_1_0
- INFO - SSL ハンドシェイクを検出 - ssl/tls 変換を実行中
- DEBUG - <Session 0x1ff00b0> [client] <> [ ] SSL ハンドシェイク完了: ('ECDHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256)
- DEBUG - <Session 0x1ff00b0> [ ] <> [server] SSL ハンドシェイク完了: ('DHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256)
- DEBUG - <Session 0x1ff00b0> [client] <= [server] '220 gmx.com (mrgmx101) Nemesis ESMTP Service ready\r\n'
- DEBUG - <Session 0x1ff00b0> [client] => [server] 'hi\r\n'
- DEBUG - <Session 0x1ff00b0> [client] <= [server] '500 Syntax error, command unrecognized\r\n'
# python striptls.py -l 0.0.0.0:9999 -r mail.gmx.com:25 -x NONE --generic-ssl-intercept
- INFO - <Proxy 0x1efbf70 listen=('0.0.0.0', 9999) target=('mail.gmx.com', 25)> 準備完了。
- INFO - <RewriteDispatcher ssl/tls_intercept=True vectors={}>
- DEBUG - <ProtocolDetect 0x1f21b70 protocol_id=PROTO_SMTP len_history=0> - プロトコルを検出(ターゲットポート)
- INFO - <Session 0x1f10110> クライアント ('127.0.0.1', 8290) が接続しました
- INFO - <Session 0x1f10110> ターゲット ('mail.gmx.com', 25) に接続中
- DEBUG - <Session 0x1f10110> [client] <= [server] '220 gmx.com (mrgmx101) Nemesis ESMTP Service ready\r\n'
- DEBUG - <Session 0x1f10110> [client] => [server] 'EHLO openssl.client.net\r\n'
- DEBUG - <Session 0x1f10110> [client] <= [server] '250-gmx.com Hello openssl.client.net [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250-AUTH LOGIN PLAIN\r\n250 STARTTLS\r\n'
- DEBUG - <Session 0x1f10110> [client] => [server] 'STARTTLS\r\n'
- DEBUG - <Session 0x1f10110> [client] <= [server] '220 OK\r\n'
- INFO - ProtocolDetect: SSL/TLS バージョン: TLS_1_0
- INFO - SSL ハンドシェイクを検出 - ssl/tls 変換を実行中
- DEBUG - <Session 0x1f10110> [client] <> [ ] SSL ハンドシェイク完了: ('ECDHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256)
- DEBUG - <Session 0x1f10110> [ ] <> [server] SSL ハンドシェイク完了: ('DHE-RSA-AES256-GCM-SHA384', 'TLSv1/SSLv3', 256)
- DEBUG - <Session 0x1f10110> [client] => [server] 'EHLO A\r\n'
- DEBUG - <Session 0x1f10110> [client] <= [server] '250-gmx.com Hello A [xxx.xxx.xxx.xxx]\r\n250-SIZE 69920427\r\n250AUTH LOGIN PLAIN\r\n'
### 監査モード
クライアントごとにすべてのプロトコル固有のケースを反復し、starttls プロトコルに違反するクライアントを追跡します。Ctrl+C で監査を中止し、結果を表示します。
#> python striptls --listen localhost:8825 --remote=mail.gmx.net:25
- INFO - <Proxy 0xffcf6d0cL listen=('localhost', 8825) target=('mail.gmx.net', 25)> 準備完了。
- DEBUG - * テストを追加しました (port:21 , proto: FTP): <class striptls.StripFromCapabilities at 0xffd4632c>
- DEBUG - * テストを追加しました (port:21 , proto: FTP): <class striptls.StripWithError at 0xffd4635c>
- DEBUG - * テストを追加しました (port:21 , proto: FTP): <class striptls.UntrustedIntercept at 0xffd4638c>
- DEBUG - * テストを追加しました (port:143 , proto: IMAP): <class striptls.StripFromCapabilities at 0xffd4626c>
- DEBUG - * テストを追加しました (port:143 , proto: IMAP): <class striptls.StripWithError at 0xffd4629c>
- DEBUG - * テストを追加しました (port:143 , proto: IMAP): <class striptls.UntrustedIntercept at 0xffd462cc>
- DEBUG - * テストを追加しました (port:119 , proto: NNTP): <class striptls.StripFromCapabilities at 0xffd463ec>
- DEBUG - * テストを追加しました (port:119 , proto: NNTP): <class striptls.StripWithError at 0xffd4641c>
- DEBUG - * テストを追加しました (port:119 , proto: NNTP): <class striptls.UntrustedIntercept at 0xffd4644c>
- DEBUG - * テストを追加しました (port:110 , proto: POP3): <class striptls.StripWithError at 0xffd461dc>
- DEBUG - * テストを追加しました (port:110 , proto: POP3): <class striptls.UntrustedIntercept at 0xffd4620c>
- DEBUG - * テストを追加しました (port:25 , proto: SMTP): <class striptls.StripFromCapabilities at 0xffd316bc>
- DEBUG - * テストを追加しました (port:25 , proto: SMTP): <class striptls.StripWithError at 0xffd4614c>
- DEBUG - * テストを追加しました (port:25 , proto: SMTP): <class striptls.StripWithInvalidResponseCode at 0xffd3138c>
- DEBUG - * テストを追加しました (port:25 , proto: SMTP): <class striptls.StripWithTemporaryError at 0xffd4611c>
- DEBUG - * テストを追加しました (port:25 , proto: SMTP): <class striptls.UntrustedIntercept at 0xffd4617c>
- DEBUG - * テストを追加しました (port:5222 , proto: XMPP): <class striptls.StripFromCapabilities at 0xffd464ac>
- INFO - <RewriteDispatcher vectors={5222: set([<class striptls.StripFromCapabilities at 0xffd464ac>]), 110: set([<class striptls.UntrustedIntercept at 0xffd4620c>, <class striptls.StripWithError at 0xffd461dc>]), 143: set([<class striptls.StripWithError at 0xffd4629c>, <class striptls.UntrustedIntercept at 0xffd462cc>, <class striptls.StripFromCapabilities at 0xffd4626c>]), 21: set([<class striptls.UntrustedIntercept at 0xffd4638c>, <class striptls.StripFromCapabilities at 0xffd4632c>, <class striptls.StripWithError at 0xffd4635c>]), 119: set([<class striptls.StripWithError at 0xffd4641c>, <class striptls.UntrustedIntercept at 0xffd4644c>, <class striptls.StripFromCapabilities at 0xffd463ec>]), 25: set([<class striptls.StripWithInvalidResponseCode at 0xffd3138c>, <class striptls.StripWithTemporaryError at 0xffd4611c>, <class striptls.StripFromCapabilities at 0xffd316bc>, <class striptls.StripWithError at 0xffd4614c>, <class striptls.UntrustedIntercept at 0xffd4617c>])}>
- DEBUG - <ProtocolDetect 0xffcf6eccL protocol_id=PROTO_SMTP len_history=0> - プロトコルを検出(ターゲットポート)
- INFO - <Session 0xffcf6e4cL> クライアント ('127.0.0.1', 28902) が接続しました
- INFO - <Session 0xffcf6e4cL> ターゲット ('mail.gmx.net', 25) に接続中
- DEBUG - <Session 0xffcf6e4cL> [client] <= [server] '220 gmx.com (mrgmx001) Nemesis ESMTP Service ready\r\n'
- DEBUG - <RewriteDispatcher - mangle を変更しました: striptls.StripWithInvalidResponseCode new: True>
- DEBUG - <Session 0xffcf6e4cL> [client] => [server] 'ehlo [192.168.139.1]\r\n'
- DEBUG - <Session 0xffcf6e4cL> [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250-AUTH LOGIN PLAIN\r\n250 STARTTLS\r\n'
- DEBUG - <Session 0xffcf6e4cL> [client] <= [server][mangled] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250-AUTH LOGIN PLAIN\r\n250-STARTTLS\r\n250 STARTTLS\r\n'
- DEBUG - <Session 0xffcf6e4cL> [client] => [server] 'STARTTLS\r\n'
- DEBUG - <Session 0xffcf6e4cL> [client] <= [server][mangled] '200 STRIPTLS\r\n'
- DEBUG - <Session 0xffcf6e4cL> [client] => [server][mangled] None
- DEBUG - <Session 0xffcf6e4cL> [client] => [server] 'mail FROM:<[email protected]> size=10\r\n'
- DEBUG - <Session 0xffcf6e4cL> [client] <= [server] '530 Authentication required\r\n'
- DEBUG - <Session 0xffcf6e4cL> [client] => [server] 'rset\r\n'
- DEBUG - <Session 0xffcf6e4cL> [client] <= [server] '250 OK\r\n'
- WARNING - <Session 0xffcf6e4cL> 終了しました。
- DEBUG - <ProtocolDetect 0xffd0920cL protocol_id=PROTO_SMTP len_history=0> - プロトコルを検出(ターゲットポート)
- INFO - <Session 0xffd0918cL> クライアント ('127.0.0.1', 28905) が接続しました
- INFO - <Session 0xffd0918cL> ターゲット ('mail.gmx.net', 25) に接続中
- DEBUG - <Session 0xffd0918cL> [client] <= [server] '220 gmx.com (mrgmx003) Nemesis ESMTP Service ready\r\n'
- DEBUG - <RewriteDispatcher - mangle を変更しました: striptls.StripWithTemporaryError new: True>
- DEBUG - <Session 0xffd0918cL> [client] => [server] 'ehlo [192.168.139.1]\r\n'
- DEBUG - <Session 0xffd0918cL> [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250-AUTH LOGIN PLAIN\r\n250 STARTTLS\r\n'
- DEBUG - <Session 0xffd0918cL> [client] => [server] 'STARTTLS\r\n'
- DEBUG - <Session 0xffd0918cL> [client] <= [server][mangled] '454 TLS not available due to temporary reason\r\n'
- DEBUG - <Session 0xffd0918cL> [client] => [server][mangled] None
- DEBUG - <Session 0xffd0918cL> [client] => [server] 'mail FROM:<[email protected]> size=10\r\n'
- DEBUG - <Session 0xffd0918cL> [client] <= [server] '530 Authentication required\r\n'
- DEBUG - <Session 0xffd0918cL> [client] => [server] 'rset\r\n'
- DEBUG - <Session 0xffd0918cL> [client] <= [server] '250 OK\r\n'
- WARNING - <Session 0xffd0918cL> 終了しました。
- DEBUG - <ProtocolDetect 0xffd092ecL protocol_id=PROTO_SMTP len_history=0> - プロトコルを検出(ターゲットポート)
- INFO - <Session 0xffd0926cL> クライアント ('127.0.0.1', 28908) が接続しました
- INFO - <Session 0xffd0926cL> ターゲット ('mail.gmx.net', 25) に接続中
- DEBUG - <Session 0xffd0926cL> [client] <= [server] '220 gmx.com (mrgmx003) Nemesis ESMTP Service ready\r\n'
- DEBUG - <RewriteDispatcher - mangle を変更しました: striptls.StripFromCapabilities new: True>
- DEBUG - <Session 0xffd0926cL> [client] => [server] 'ehlo [192.168.139.1]\r\n'
- DEBUG - <Session 0xffd0926cL> [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250-AUTH LOGIN PLAIN\r\n250 STARTTLS\r\n'
- DEBUG - <Session 0xffd0926cL> [client] <= [server][mangled] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250 AUTH LOGIN PLAIN\r\n'
- WARNING - <Session 0xffd0926cL> 終了しました。
- DEBUG - <ProtocolDetect 0xffd093ccL protocol_id=PROTO_SMTP len_history=0> - プロトコルを検出(ターゲットポート)
- INFO - <Session 0xffd0934cL> クライアント ('127.0.0.1', 28911) が接続しました
- INFO - <Session 0xffd0934cL> ターゲット ('mail.gmx.net', 25) に接続中
- DEBUG - <Session 0xffd0934cL> [client] <= [server] '220 gmx.com (mrgmx002) Nemesis ESMTP Service ready\r\n'
- DEBUG - <RewriteDispatcher - mangle を変更しました: striptls.StripWithError new: True>
- DEBUG - <Session 0xffd0934cL> [client] => [server] 'ehlo [192.168.139.1]\r\n'
- DEBUG - <Session 0xffd0934cL> [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250-AUTH LOGIN PLAIN\r\n250 STARTTLS\r\n'
- DEBUG - <Session 0xffd0934cL> [client] => [server] 'STARTTLS\r\n'
- DEBUG - <Session 0xffd0934cL> [client] <= [server][mangled] '501 Syntax error\r\n'
- DEBUG - <Session 0xffd0934cL> [client] => [server][mangled] None
- DEBUG - <Session 0xffd0934cL> [client] => [server] 'mail FROM:<[email protected]> size=10\r\n'
- DEBUG - <Session 0xffd0934cL> [client] <= [server] '530 Authentication required\r\n'
- DEBUG - <Session 0xffd0934cL> [client] => [server] 'rset\r\n'
- DEBUG - <Session 0xffd0934cL> [client] <= [server] '250 OK\r\n'
- WARNING - <Session 0xffd0934cL> 終了しました。
- WARNING - Ctrl C - サーバーを停止中
- INFO - -- 監査結果 --
- INFO - [*] クライアント: 127.0.0.1
- INFO - [Vulnerable!] <class striptls.StripWithInvalidResponseCode at 0xffd3138c>
- INFO - [Vulnerable!] <class striptls.StripWithTemporaryError at 0xffd4611c>
- INFO - [ ] <class striptls.StripFromCapabilities at 0xffd316bc>
- INFO - [Vulnerable!] <class striptls.StripWithError at 0xffd4614c>
### サーバー機能から STARTTLS を除去
#> python striptls --listen=localhost:8825 --remote=mail.gmx.net:25 --test=SMTP.StripFromCapabilities
- INFO - <Proxy 0x1fe6e70 listen=('localhost', 8825) target=('mail.gmx.net', 25)> 準備完了。
- INFO - <RewriteDispatcher attacks={25: set([<class __main__.StripFromCapabilities at 0x01FE77D8>])}>
- DEBUG - <ProtocolDetect 0x1fe6f90 is_protocol=PROTO_SMTP len_history=0> - プロトコルを検出(ターゲットポート)
- INFO - <Session 0x1fe6f10> クライアント ('127.0.0.1', 20070) が接続しました
- INFO - <Session 0x1fe6f10> ターゲット ('mail.gmx.net', 25) に接続中
- DEBUG - <Session 0x1fe6f10> [client] <= [server] '220 gmx.com (mrgmx003) Nemesis ESMTP Service ready\r\n'
- DEBUG - <Session 0x1fe6f10> [client] => [server] 'ehlo [192.168.139.1]\r\n'
- DEBUG - <Session 0x1fe6f10> [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250-AUTH LOGIN PLAIN\r\n250 STARTTLS\r\n'
- DEBUG - <Session 0x1fe6f10> [client] <= [server][mangled] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250 AUTH LOGIN PLAIN\r\n'
- DEBUG - <Session 0x1fe6f10> [client] => [server] 'mail FROM:<[email protected]> size=10\r\n'
- DEBUG - <Session 0x1fe6f10> [client] <= [server] '530 Authentication required\r\n'
- DEBUG - <Session 0x1fe6f10> [client] => [server] 'rset\r\n'
- DEBUG - <Session 0x1fe6f10> [client] <= [server] '250 OK\r\n'
- WARNING - <Session 0x1fe6f10> 終了しました。
### 無効な STARTTLS 応答コード
#> python striptls --listen=localhost:8825 --remote=mail.gmx.net:25 --test=SMTP.StripWithInvalidResponseCode
- INFO - <Proxy 0x1fefe70 listen=('localhost', 8825) target=('mail.gmx.net', 25)> 準備完了。
- INFO - <RewriteDispatcher attacks={25: set([<class __main__.StripWithInvalidResponseCode at 0x02010730>])}>
- DEBUG - <ProtocolDetect 0x1feff90 is_protocol=PROTO_SMTP len_history=0> - プロトコルを検出(ターゲットポート)
- INFO - <Session 0x1feff10> クライアント ('127.0.0.1', 20061) が接続しました
- INFO - <Session 0x1feff10> ターゲット ('mail.gmx.net', 25) に接続中
- DEBUG - <Session 0x1feff10> [client] <= [server] '220 gmx.com (mrgmx003) Nemesis ESMTP Service ready\r\n'
- DEBUG - <Session 0x1feff10> [client] => [server] 'ehlo [192.168.139.1]\r\n'
- DEBUG - <Session 0x1feff10> [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250-AUTH LOGIN PLAIN\r\n250 STARTTLS\r\n'
- DEBUG - <Session 0x1feff10> [client] <= [server][mangled] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250-AUTH LOGIN PLAIN\r\n250-STARTTLS\r\n250 STARTTLS\r\n'
- DEBUG - <Session 0x1feff10> [client] => [server] 'STARTTLS\r\n'
- DEBUG - <Session 0x1feff10> [client] <= [server][mangled] '200 STRIPTLS\r\n'
- DEBUG - <Session 0x1feff10> [client] => [server][mangled] None
- DEBUG - <Session 0x1feff10> [client] => [server] 'mail FROM:<[email protected]> size=10\r\n'
- DEBUG - <Session 0x1feff10> [client] <= [server] '530 Authentication required\r\n'
- DEBUG - <Session 0x1feff10> [client] => [server] 'rset\r\n'
- DEBUG - <Session 0x1feff10> [client] <= [server] '250 OK\r\n'
- WARNING - <Session 0x1feff10> 終了しました。
### 信頼されていない SSL インターセプト(サーバー証明書の信頼を確認しないクライアント向け)
#> python striptls --listen=localhost:8825 --remote=mail.gmx.net:25 --test=SMTP.UntrustedIntercept
- INFO - <Proxy 0x1f468f0 listen=('localhost', 8825) target=('mail.gmx.net', 25)> 準備完了。
- INFO - <RewriteDispatcher attacks={25: set([<class __main__.UntrustedIntercept at 0x01F45298>])}>
- DEBUG - <ProtocolDetect 0x1f46a10 protocol_id=PROTO_SMTP len_history=0> - プロトコルを検出(ターゲットポート)
- INFO - <Session 0x1f46990> クライアント ('127.0.0.1', 20238) が接続しました
- INFO - <Session 0x1f46990> ターゲット ('mail.gmx.net', 25) に接続中
- DEBUG - <Session 0x1f46990> [client] <= [server] '220 gmx.com (mrgmx002) Nemesis ESMTP Service ready\r\n'
- DEBUG - <Session 0x1f46990> [client] => [server] 'ehlo [192.168.139.1]\r\n'
- DEBUG - <Session 0x1f46990> [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 31457280\r\n250-AUTH LOGIN PLAIN\r\n250 STARTTLS\r\n'
- DEBUG - <Session 0x1f46990> [client] => [server] 'STARTTLS\r\n'
- DEBUG - <Session 0x1f46990> [client] <= [server][mangled] '220 Go ahead\r\n'
- DEBUG - <Session 0x1f46990> [client] <= [server][mangled] インバウンド SSL ハンドシェイクを待機中
- DEBUG - <Session 0x1f46990> [client] => [server] 'STARTTLS\r\n'
- DEBUG - <Session 0x1f46990> [client] => [server][mangled] アウトバウンド SSL ハンドシェイクを実行中
- DEBUG - <Session 0x1f46990> [client] => [server][mangled] None
- DEBUG - <Session 0x1f46990> [client] => [server] 'ehlo [192.168.139.1]\r\n'
- DEBUG - <Session 0x1f46990> [client] <= [server] '250-gmx.com Hello [192.168.139.1] [xxx.xxx.xxx.xxx]\r\n250-SIZE 69920427\r\n250 AUTH LOGIN PLAIN\r\n'
- DEBUG - <Session 0x1f46990> [client] => [server] 'mail FROM:<[email protected]> size=10\r\n'
- DEBUG - <Session 0x1f46990> [client] <= [server] '530 Authentication required\r\n'
- DEBUG - <Session 0x1f46990> [client] => [server] 'rset\r\n'
- DEBUG - <Session 0x1f46990> [client] <= [server] '250 OK\r\n'
- WARNING - <Session 0x1f46990> 終了しました。
### XMPP 監査トレイル
例: オプションのトランスポートセキュリティを備えた Pidgin。
#### XMPP.StripInboundTLS - インバウンドプレーン - アウトバウンド TLS - サーバーが starttls を必要とする場合python striptls --listen 0.0.0.0:5222 --remote jabber.ccc.de:5222 -k ../server.pem
- INFO - <Proxy 0x7f08322ba310 listen=('0.0.0.0', 5222) target=('jabber.ccc.de', 5222)> 準備完了。
...
- DEBUG - <ProtocolDetect 0x7f083196a810 protocol_id=PROTO_XMPP len_history=0> - プロトコル検出 (ターゲットポート)
...
- INFO - <Session 0x7f083196a7d0> クライアント ('192.168.139.1', 56888) が接続しました
- INFO - <Session 0x7f083196a7d0> ターゲット ('jabber.ccc.de', 5222) に接続中
- DEBUG - <Session 0x7f083196a7d0> [client] => [server] "<?xml version='1.0' ?><stream:stream to='jabber.ccc.de' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>"
- DEBUG - <RewriteDispatcher - マングル変更: striptls.StripInboundTLS new: True>
- DEBUG - <Session 0x7f083196a7d0> [client] <= [server] "<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='13821701589972978594' from='jabber.ccc.de' version='1.0' xml:lang='en'>"
- DEBUG - <Session 0x7f083196a7d0> [client] <= [server] "<stream:features><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='bvEOjW9q8CEw8mw8ecNTLXvY5WQ='/><starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'><required/></starttls></stream:features>"
- DEBUG - <Session 0x7f083196a7d0> [client] => [server][mangled] "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>"
- DEBUG - <Session 0x7f083196a7d0> [client] => [server][mangled] アウトバウンドSSLハンドシェイクを実行中
- DEBUG - <Session 0x7f083196a7d0> [client] <= [server][mangled] "<stream:features><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='bvEOjW9q8CEw8mw8ecNTLXvY5WQ='/></stream:features>"
- DEBUG - <Session 0x7f083196a7d0> [client] => [server] "<iq type='get' id='purple9f914f80'><query xmlns='jabber:iq:auth'><username>tin</username></query></iq>"
- DEBUG - <Session 0x7f083196a7d0> [client] <= [server] "<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='13515446948282835507' from='jabber.ccc.de' xml:lang='en'>"
- DEBUG - <Session 0x7f083196a7d0> [client] <= [server] "<stream:error><invalid-namespace xmlns='urn:ietf:params:xml:ns:xmpp-streams'></invalid-namespace></stream:error>"
- DEBUG - <Session 0x7f083196a7d0> [client] <= [server] '</stream:stream>'
- WARNING - <Session 0x7f083196a7d0> 終了しました。
#### XMPP.StripFromCapabilities - starttlsサーバー通知を除去
- DEBUG - <ProtocolDetect 0x7f083196a990 protocol_id=PROTO_XMPP len_history=0> - プロトコル検出 (ターゲットポート)
- INFO - <Session 0x7f083196a910> クライアント ('192.168.139.1', 56890) が接続しました
- INFO - <Session 0x7f083196a910> ターゲット ('jabber.ccc.de', 5222) に接続中
- DEBUG - <Session 0x7f083196a910> [client] => [server] "<?xml version='1.0' ?><stream:stream to='jabber.ccc.de' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>"
- DEBUG - <RewriteDispatcher - マングル変更: striptls.StripFromCapabilities new: True>
- DEBUG - <Session 0x7f083196a910> [client] <= [server] "<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='12381525525258986322' from='jabber.ccc.de' version='1.0' xml:lang='en'>"
- DEBUG - <Session 0x7f083196a910> [client] <= [server] "<stream:features><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='bvEOjW9q8CEw8mw8ecNTLXvY5WQ='/><starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'><required/></starttls></stream:features>"
- DEBUG - <Session 0x7f083196a910> [client] <= [server][mangled] "<stream:features><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='bvEOjW9q8CEw8mw8ecNTLXvY5WQ='/></stream:features>"
- DEBUG - <Session 0x7f083196a910> [client] => [server] "<iq type='get' id='purplecfe2ee07'><query xmlns='jabber:iq:auth'><username>tin</username></query></iq>"
- DEBUG - <Session 0x7f083196a910> [client] <= [server] "<stream:error><policy-violation xmlns='urn:ietf:params:xml:ns:xmpp-streams'></policy-violation><text xml:lang='' xmlns='urn:ietf:params:xml:ns:xmpp-streams'>Use of STARTTLS required</text></stream:error></stream:stream>"
- WARNING - <Session 0x7f083196a910> 終了しました。
#### XMPP.StripUntrustedIntercept - 独自の証明書/鍵を使用したインバウンドおよびアウトバウンドのTLS傍受
- DEBUG - <ProtocolDetect 0x7f083196aa90 protocol_id=PROTO_XMPP len_history=0> - プロトコル検出 (ターゲットポート)
- INFO - <Session 0x7f083196a8d0> クライアント ('192.168.139.1', 56892) が接続しました
- INFO - <Session 0x7f083196a8d0> ターゲット ('jabber.ccc.de', 5222) に接続中
- DEBUG - <Session 0x7f083196a8d0> [client] => [server] "<?xml version='1.0' ?><stream:stream to='jabber.ccc.de' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>"
- DEBUG - <RewriteDispatcher - マングル変更: striptls.UntrustedIntercept new: True>
- DEBUG - <Session 0x7f083196a8d0> [client] <= [server] "<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='10051743579572304948' from='jabber.ccc.de' version='1.0' xml:lang='en'><stream:features><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='bvEOjW9q8CEw8mw8ecNTLXvY5WQ='/><starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'><required/></starttls></stream:features>"
- DEBUG - <Session 0x7f083196a8d0> [client] => [server] "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>"
- DEBUG - <Session 0x7f083196a8d0> [client] <= [server][mangled] "<proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>"
- DEBUG - <Session 0x7f083196a8d0> [client] <= [server][mangled] インバウンドSSLハンドシェイクを待機中
- DEBUG - <Session 0x7f083196a8d0> [client] => [server] "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>"
- DEBUG - <Session 0x7f083196a8d0> [client] => [server][mangled] アウトバウンドSSLハンドシェイクを実行中
- DEBUG - <Session 0x7f083196a8d0> [client] => [server][mangled] None
- DEBUG - <Session 0x7f083196a8d0> [client] => [server] '<'
- DEBUG - <Session 0x7f083196a8d0> [client] => [server] "stream:stream to='jabber.ccc.de' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>"
- DEBUG - <Session 0x7f083196a8d0> [client] <= [server] "<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='6938642107398534259' from='jabber.ccc.de' version='1.0' xml:lang='en'>"
- DEBUG - <Session 0x7f083196a8d0> [client] <= [server] "<stream:features><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.process-one.net/en/ejabberd/' ver='bvEOjW9q8CEw8mw8ecNTLXvY5WQ='/><register xmlns='http://jabber.org/features/iq-register'/><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>PLAIN</mechanism><mechanism>X-OAUTH2</mechanism><mechanism>SCRAM-SHA-1</mechanism></mechanisms></stream:features>"
- DEBUG - <Session 0x7f083196a8d0> [client] => [server] '<'
- DEBUG - <Session 0x7f083196a8d0> [client] => [server] "auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN' xmlns:ga='http://www.google.com/talk/protocol/auth' ga:client-uses-full-bind-result='true'>AHRpbgB4eA==</auth>"
- DEBUG - <Session 0x7f083196a8d0> [client] <= [server] "<failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><not-authorized/></failure>"
- DEBUG - <Session 0x7f083196a8d0> [client] => [server] '<'
- DEBUG - <Session 0x7f083196a8d0> [client] => [server] '/stream:stream>'
- WARNING - <Session 0x7f083196a8d0> 終了しました。
#### XMPP 監査結果
- WARNING - Ctrl C - サーバーを停止中
- INFO - -- 監査結果 --
- INFO - [*] クライアント: 192.168.139.1
- INFO - [脆弱!] <class striptls.StripInboundTLS at 0x7f08319a6808>
- INFO - [脆弱!] <class striptls.StripFromCapabilities at 0x7f08319a67a0>
- INFO - [脆弱!] <class striptls.UntrustedIntercept at 0x7f08319a6870>