सवाल मैं एक विशेष वेबसाइट ऑफ़र एसएसएल / टीएलएस सिफर सुइट्स कैसे सूचीबद्ध करूं?


मैं एक विशेष वेबसाइट ऑफ़र एसएसएल / टीएलएस सिफर सूट की एक सूची कैसे प्राप्त कर सकता हूं?

मैंने openssl की कोशिश की है, लेकिन यदि आप आउटपुट की जांच करते हैं:

$ echo -n | openssl s_client -connect www.google.com:443 
CONNECTED(00000003)
depth=1 /C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
   i:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
 1 s:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
   i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x
MTEyMTgyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw
FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEA6PmGD5D6htffvXImttdEAoN4c9kCKO+IRTn7EOh8rqk41XXGOOsKFQebg+jN
gtXj9xVoRaELGYW84u+E593y17iYwqG7tcFR39SDAqc9BkJb4SLD3muFXxzW2k6L
05vuuWciKh0R73mkszeK9P4Y/bz5RiNQl/Os/CRGK1w7t0UCAwEAAaOB5zCB5DAM
BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF
BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw
Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0
ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF
AAOBgQCfQ89bxFApsb/isJr/aiEdLRLDLE5a+RLizrmCUi3nHX4adpaQedEkUjh5
u2ONgJd8IyAPkU0Wueru9G2Jysa9zCRo1kNbzipYvzwY4OA8Ys+WAi0oR1A04Se6
z5nRUP8pJcA2NhUzUnC+MY+f6H/nEQyNv4SgQhqAibAxWEEHXw==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
---
No client certificate CA names sent
---
SSL handshake has read 1777 bytes and written 316 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: 748E2B5FEFF9EA065DA2F04A06FBF456502F3E64DF1B4FF054F54817C473270C
    Session-ID-ctx: 
    Master-Key: C4284AE7D76421F782A822B3780FA9677A726A25E1258160CA30D346D65C5F4049DA3D10A41F3FA4816DD9606197FAE5
    Key-Arg   : None
    Start Time: 1266259321
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

यह सिर्फ दिखाता है कि सिफर सुइट एईएस 256-एसएचए के साथ कुछ है। मुझे पता है कि मैं बातचीत के हेक्स डंप के माध्यम से grep सकता है, लेकिन मैं कुछ और अधिक सुरुचिपूर्ण कुछ उम्मीद कर रहा था।

मैं इसे लिनक्स पर करना पसंद करूंगा, लेकिन विंडोज़ (या अन्य) ठीक होगा। यह प्रश्न पीसीआई और सामान्य प्रवेश परीक्षण के लिए किए गए सुरक्षा परीक्षण से प्रेरित है।

अद्यतन करें: 

ग्रेग्स नीचे बताते हैं कि एसएसएल सर्वर क्लाइंट के सिफर सुइट्स से निकलता है। तो ऐसा लगता है कि मुझे एक समय में सभी सिफर सुइट्स का परीक्षण करने की आवश्यकता होगी। मुझे लगता है कि मैं एक साथ कुछ हैक कर सकता हूं, लेकिन क्या ऐसा करने के लिए एक आसान, भविष्य का सबूत (उदा। नया सिफर) तरीका है?


235
2018-02-15 18:47


मूल


शायद gnutls-cli? - grawity
शीर्षक बदलने के बाद, यह सवाल वास्तव में एक सॉफ्टवेयर-आरईसी नहीं मांग रहा है। फिर से खोलने के लिए मतदान। - Bob
@ fixer1234 अगर यह आपको खुश बनाता है, तो मैंने "टूल" शब्द की किसी भी घटना को हटा दिया है। मूल प्रश्न यह पूछ रहा है कि किसी विशिष्ट कार्य को कैसे पूरा किया जाए; यह एक मामूली रीफ्रेज है और अधिक खुले अंत में "सॉफ़्टवेयर की सूची" प्रकार के प्रश्नों से बहुत दूर है। - Bob
@ बॉब: मैं उत्साही हूँ। :-) फिर से खोलने के लिए वोटिंग। - fixer1234


जवाब:


मैंने सिफर सुइट्स का परीक्षण करने के लिए एक बैश स्क्रिप्ट लिखी। यह OpenSSL से समर्थित सिफर सुइट्स की एक सूची प्राप्त करता है और प्रत्येक का उपयोग करके कनेक्ट करने का प्रयास करता है। यदि हैंडशेक सफल है, तो यह प्रिंट करता है YES। यदि हैंडशेक सफल नहीं है, तो यह प्रिंट करता है NO, ओपनएसएसएल त्रुटि पाठ के बाद।

#!/usr/bin/env bash

# OpenSSL requires the port number.
SERVER=$1
DELAY=1
ciphers=$(openssl ciphers 'ALL:eNULL' | sed -e 's/:/ /g')

echo Obtaining cipher list from $(openssl version).

for cipher in ${ciphers[@]}
do
echo -n Testing $cipher...
result=$(echo -n | openssl s_client -cipher "$cipher" -connect $SERVER 2>&1)
if [[ "$result" =~ ":error:" ]] ; then
  error=$(echo -n $result | cut -d':' -f6)
  echo NO \($error\)
else
  if [[ "$result" =~ "Cipher is ${cipher}" || "$result" =~ "Cipher    :" ]] ; then
    echo YES
  else
    echo UNKNOWN RESPONSE
    echo $result
  fi
fi
sleep $DELAY
done

यहां नमूना आउटपुट 3 असमर्थित सिफर दिखा रहा है, और 1 समर्थित सिफर:

[@linux ~]$ ./test_ciphers 192.168.1.11:443
Obtaining cipher list from OpenSSL 0.9.8k 25 Mar 2009.
Testing ADH-AES256-SHA...NO (sslv3 alert handshake failure)
Testing DHE-RSA-AES256-SHA...NO (sslv3 alert handshake failure)
Testing DHE-DSS-AES256-SHA...NO (sslv3 alert handshake failure)
Testing AES256-SHA...YES

संपादित करें: लचीलापन जोड़ें क्योंकि होस्ट और पोर्ट को स्क्रिप्ट के पैरामीटर के रूप में प्रदान किया जाता है


205
2017-12-20 23:41



openssl 1.0 को एक बदलाव की आवश्यकता है: if [[ "$result" =~ "Cipher :" ]] ; then के बजाय if [[ "$result" =~ "Cipher is " ]] ; then मैं एसएसएल 2 और सुरक्षित पुनर्विचार के लिए भी परीक्षण करता हूं: echo -n Testing ssl2... result=$(echo -n | openssl s_client -ssl2 -connect $SERVER 2>&1) if [[ "$result" =~ "Cipher :" ]] ; then echo supported. INSECURE! else echo no support, OK fi echo -n Testing SSL secure renegotiation... echo -n "" | openssl s_client -connect $SERVER 2>&1 | grep 'Secure Renegotiation' - Hubert Kario
एक और, बहुत परिष्कृत शैल स्क्रिप्ट उपलब्ध है जो एसएसएलएसकेएन और ओपनएसएल का उपयोग करती है: TLSSLed - Robert
मैंने एक और स्क्रिप्ट नीचे सूचीबद्ध किया है जिसे केवल ओपनएसएसएल कहा जाता है CipherScan - Olivier - interfaSys
ध्यान दें कि यह स्क्रिप्ट शायद नहीं होगा आपको बताएं कि क्या कोई सर्वर सिफर सुइट्स का समर्थन करता है जो OpenSSL का समर्थन नहीं करता है। - sampablokuper
@Robert के लिए सुझाव TLSSLed शानदार था। इसे 1.3 में अपडेट किया गया है और इसमें बहुत अधिक कार्यक्षमता है। मैं सुरक्षा परीक्षण के लिए उपयोग कर रहा हूं और कहना चाहिए कि मैं प्रभावित हूं। - John Yeary


Nmap साथ में एसएसएल-enum-सिफर

नेटवर्क सेवा से उपलब्ध सिफर की सूची प्राप्त करने के लिए कोई बेहतर या तेज़ तरीका नहीं है। साथ ही, nmap प्रत्येक उपलब्ध साइफर के लिए मजबूत, कमजोर, या अज्ञात की ताकत रेटिंग प्रदान करेगा।

सबसे पहले, डाउनलोड करें एसएसएल-enum-ciphers.nse एनएमएपी स्क्रिप्ट (यहां स्पष्टीकरण)। फिर स्क्रिप्ट के समान निर्देशिका से, निम्नानुसार nmap चलाएं:

HTTP सर्वर द्वारा समर्थित सिफर सूचीबद्ध करें

$ nmap --script ssl-enum-ciphers -p 443 www.example.com

एक IMAP सर्वर द्वारा समर्थित सिफर सूचीबद्ध करें

$ nmap --script ssl-enum-ciphers -p 993 mail.example.com

डोवकोट IMAP सर्वर से आउटपुट का एक स्निपेट यहां दिया गया है:

993/tcp open  imaps
| ssl-enum-ciphers:
|   SSLv3:
|     ciphers:
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_IDEA_CBC_SHA - weak
...
|   TLSv1.0:
|     ciphers:
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_IDEA_CBC_SHA - weak
...
|_  least strength: weak

Nmap done: 1 IP address (1 host up) scanned in 1.03 seconds

138
2018-06-05 09:29



क्या STARTTLS के साथ IMAP पर इस स्क्रिप्ट का उपयोग करने का कोई तरीका है? एसएमटीपी पर STARTTLS काम करता प्रतीत होता है, लेकिन आईएमएपी पर स्क्रिप्ट भी दिखाई नहीं दे रही है। - Giel
चीजों का जोड़ा: आप डाउनलोड किए गए बजाए, अपने एनएमएपी डिस्ट्रो में स्क्रिप्ट चला रहे हैं। अपना नाम बदलकर जांचें। फिर "पोर्ट्रल" की जांच करें जो कुछ संस्करणों में आमतौर पर उपयोग किए जाने वाले पोर्ट नंबरों की जांच करता है। से बदलो portrule = function() \n return true \n end - slim
... और इसे IMAP STARTTLS, FTPS के साथ काम करने के लिए कुछ हैकिंग की आवश्यकता होगी AUTH TLS आदि, लेकिन यह संभव है। - slim
एक चेतावनी यह है कि पुरानी स्क्रिप्ट, जिसे आपके डिस्ट्रो / पैकेज में शामिल किया जा सकता है, वर्णमाला क्रम में सिफर सूचीबद्ध करें, नहीं सर्वर (या ग्राहक) पसंदीदा आदेश। @Slim से उपरोक्त टिप्पणी देखें - Clint Pachl
इस उत्तर के बाद से 2 वर्षों में, एनएमएपी ने एफ़टीपी, एनएनटीपी, आईएमएपी, एलडीएपी, पीओपी 3, पोस्टग्रेएसक्यूएल, एसएमटीपी, एक्सएमपीपी, वीएनसी, और एमएस एसक्यूएल पर STARTTLS के लिए समर्थन जोड़ा है, साथ ही समर्थित सिफर को सूचीबद्ध करने से परे कई अन्य सुधार । - bonsaiviking


क्या कोई ऐसा उपकरण है जो परीक्षण कर सकता है   एसएसएल / टीएलएस सिफर एक विशेष सूट   वेबसाइट ऑफर करता है?

हां, आप ऑनलाइन उपकरण का उपयोग कर सकते हैं एसएसएल लैब्स'सार्वजनिक एसएसएल सर्वर डेटाबेस से पूछताछ करने के लिए वेबसाइट।

यहां जानकारी का एक स्निपेट है जो यह प्रदान करता है:

alt text

(google.com के परिणामों से स्क्रीनशॉट)


96
2018-02-20 18:02



अच्छा, यह खोजने के लिए धन्यवाद। - James K Polk
ये है ठीक ठीक मैं क्या देख रहा था! आपका बहुत बहुत धन्यवाद! - Jeremy Powell
दुर्भाग्य से यह मानक बंदरगाह पर केवल HTTPS का समर्थन करता है, टीएलएस के साथ पीओपी 3 एस, आईएमएपीएस या आईएमएपी की जांच के लिए इसका उपयोग नहीं कर सकता - Hubert Kario
और जब यह केवल HTTPS का समर्थन करता है, इसमें एसएनआई के लिए भी समर्थन नहीं है। - Gurken Papst
और जब यह सार्वजनिक-सामना करने वाली साइटों के लिए बहुत अच्छा है, तो आप इंटरनेट से अलग नेटवर्क पर साइटों के लिए इसका उपयोग नहीं कर सकते हैं। - Iszi


sslscan एक अच्छी छोटी उपयोगिता है।

यह टीएलएस और एसएसएल से जुड़ने का परीक्षण करता है (और बिल्ड स्क्रिप्ट ओपनएसएसएल की अपनी प्रतिलिपि से लिंक कर सकती है ताकि अप्रचलित एसएसएल संस्करण भी चेक किए जा सकें) और सर्वर के सिफर सुइट्स और सर्टिफिकेट के बारे में रिपोर्ट।

के लिए उदाहरण आउटपुट google.com (पठनीयता के लिए छंटनी):

$ sslscan google.com
Testing SSL server google.com on port 443

 TLS renegotiation:
Secure session renegotiation supported

  TLS Compression:
Compression disabled

  Heartbleed:
TLS 1.2 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.0 not vulnerable to heartbleed

  Supported Server Cipher(s):
Preferred TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-RC4-SHA             Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  AES128-GCM-SHA256
Accepted  TLSv1.2  128 bits  AES128-SHA
<snip>
Preferred TLSv1.1  128 bits  ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.1  128 bits  ECDHE-RSA-RC4-SHA             Curve P-256 DHE 256
Accepted  TLSv1.1  128 bits  AES128-SHA
<snip>
Preferred TLSv1.0  128 bits  ECDHE-RSA-AES128-SHA          Curve P-256 DHE 256
Accepted  TLSv1.0  128 bits  ECDHE-RSA-RC4-SHA             Curve P-256 DHE 256
Accepted  TLSv1.0  128 bits  AES128-SHA
<snip>
Preferred SSLv3    128 bits  RC4-SHA
Accepted  SSLv3    128 bits  RC4-MD5
<snip>

  SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    2048

Subject:  *.google.com
Altnames: DNS:*.google.com, DNS:*.android.com, <snip>
Issuer:   Google Internet Authority G2

Not valid before: Apr  7 08:24:31 2016 GMT
Not valid after:  Jun 30 08:20:00 2016 GMT

49
2018-03-18 22:21



yum install sslscan CentOS 6 पर काम करता है। - a coder
sudo dnf install sslscan फेडोरा 22 पर भी। - Zayne S Halsall
brew install sslscan ओएसएक्स पर - Xiao
sudo apt-get install sslscan उबंटू पर (12.04 - तो सभी बाद के संस्करण ठीक होना चाहिए)। - balu
अद्यतन: यह ध्यान दिया जाना चाहिए कि एसएसएलस्कैन का आधिकारिक संस्करण डेबियन और उबंटू रिपॉजिटरीज़ में पाया गया है (वर्तमान में 200 9 से 1.8.2) नहीं करता टीएलएस v1.1 और 1.2 का समर्थन करें, देखें bugs.launchpad.net/ubuntu/+source/sslscan/+bug/1372741। इसलिए किसी को गिटहब पर संस्करण का उपयोग करना चाहिए जिसे ओपी से जुड़ा हुआ है। - balu


चूंकि यह एसएसएल स्कैनिंग टूल्स के लिए एक महान संदर्भ धागा है, इसलिए मैं एक साल पहले बनाया गया था जिसे सिफर स्कैन सूची में सूचीबद्ध किया जाएगा और कुंजी एक्सचेंज सिफर के साथ समस्याओं की पहचान भी कर सकता है। https://github.com/jvehent/cipherscan

यदि आप मेरा फोर्क चाहते हैं जो एसएनआई और फ्रीबीएसडी का समर्थन करता है, तो यूआरएल है https://github.com/oparoz/cipherscan

यह एक स्क्रिप्ट है जो कॉल करता है openssl s_clientऔर अपनी ओपनएसएसएल बाइनरी का उपयोग करने का समर्थन करता है ताकि आप आगामी सुविधाओं या नए सिफर (चाचा 20 + पॉली 1305 प्रति उदाहरण) का परीक्षण कर सकें।

यह आपको इच्छित किसी भी पोर्ट से कनेक्ट करने और स्टार्टल का उपयोग करने देता है।

यहां एक सामान्य आउटपुट है

# ./cipherscan -o ./openssl api.mycompany.com:443
...................
prio  ciphersuite                  protocols              pfs_keysize
1     DHE-RSA-AES256-GCM-SHA384    TLSv1.2                DH,4096bits
2     DHE-RSA-AES256-SHA256        TLSv1.2                DH,4096bits
3     ECDHE-RSA-AES256-GCM-SHA384  TLSv1.2                ECDH,P-384,384bits
4     ECDHE-RSA-AES256-SHA384      TLSv1.2                ECDH,P-384,384bits
5     DHE-RSA-AES128-GCM-SHA256    TLSv1.2                DH,4096bits
6     DHE-RSA-AES128-SHA256        TLSv1.2                DH,4096bits
7     ECDHE-RSA-AES128-GCM-SHA256  TLSv1.2                ECDH,P-384,384bits
8     ECDHE-RSA-AES128-SHA256      TLSv1.2                ECDH,P-384,384bits
9     DHE-RSA-CAMELLIA256-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,4096bits
10    DHE-RSA-AES256-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,4096bits
11    ECDHE-RSA-AES256-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-384,384bits
12    DHE-RSA-CAMELLIA128-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,4096bits
13    DHE-RSA-AES128-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,4096bits
14    ECDHE-RSA-AES128-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-384,384bits
15    CAMELLIA256-SHA              TLSv1,TLSv1.1,TLSv1.2
16    AES256-SHA                   TLSv1,TLSv1.1,TLSv1.2
17    CAMELLIA128-SHA              TLSv1,TLSv1.1,TLSv1.2
18    AES128-SHA                   TLSv1,TLSv1.1,TLSv1.2

Certificate: trusted, 4096 bit, sha256WithRSAEncryption signature
TLS ticket lifetime hint: 300
OCSP stapling: supported

और यहां विकल्पों की एक सूची है

-a | --allciphers   Test all known ciphers individually at the end.
-b | --benchmark    Activate benchmark mode.
-d | --delay        Pause for n seconds between connections
-D | --debug        Output ALL the information.
-h | --help         Shows this help text.
-j | --json         Output results in JSON format.
-o | --openssl      path/to/your/openssl binary you want to use.
-v | --verbose      Increase verbosity.

यदि आप इसे अन्य स्क्रिप्ट से कॉल कर रहे हैं तो जेसन आउटपुट उपयोगी है।


14
2017-09-16 11:25



"बड़ी-SSLv3 कॉन्फ़िगर समर्थित नहीं है, कनेक्शन विफल" - a coder


https://github.com/iSECPartners/sslyze

यह एक पायथन आधारित है, कमांड लाइन से लिनक्स / मैक / विंडोज में काम करता है।


12
2018-01-25 14:01





थोड़ा गुगल करने के बाद मुझे यह मिला एसएसएल-टीएलएस (ओडब्ल्यूएएसपी-सीएम -001) के लिए परीक्षण:

nmap स्कैनर, "-एसवी" स्कैन विकल्प के माध्यम से, एसएसएल सेवाओं की पहचान करने में सक्षम है। भेद्यता स्कैनर, सेवा खोज करने के अलावा, कमजोर सिफर के खिलाफ जांच शामिल हो सकती है (उदाहरण के लिए, नेसस स्कैनर मनमानी बंदरगाहों पर एसएसएल सेवाओं की जांच करने की क्षमता है, और कमजोर सिफर की रिपोर्ट करेगा)।

और भी: फाउंडस्टोन एसएसएल डिगर समर्थित सिफर परीक्षण करके एसएसएल सर्वर की ताकत का आकलन करने के लिए एक उपकरण है। इनमें से कुछ सिफर असुरक्षित होने के लिए जाने जाते हैं।


8
2018-02-20 16:30





मैं अधिकांश एसएसएल परीक्षण testsl.sh के लिए उपयोग कर रहा हूँ (देखें https://testssl.sh / डेवेल संस्करण @ https://github.com/drwetter/testssl.sh। यह भेद्यता, सिफर, प्रोटोकॉल इत्यादि के लिए परीक्षण करता है।


4
2018-01-10 17:36