企業級Web安全滲透測試之SSL篇

本文將向讀者詳細介紹如何針對Web服務中的SSL和TLS協議進行安全滲透測試。我們首先對這兩種協議進行了概述,然後詳細介紹了針對加密信道安全性的黑盒測試和白盒測試。最後列出了一些常用的安全測試工具。

  如果Web服務中的SSL和TLS協議出現安全問題,後果會如何?很明顯,這樣的話攻擊者就可以擁有你所有的安全信息,包括我們的用戶名、密碼、信用卡、銀行信息……所有的一切。本文將向讀者詳細介紹如何針對Web服務中的SSL和TLS協議進行安全滲透測試。我們首先對這兩種協議進行了概述,然後詳細介紹了針對加密信道安全性的黑盒測試和白盒測試。最後列出了一些常用的安全測試工具。

  一、簡介

  目前,許多重要的Web服務都使用了SSL和TLS協議對通信進行保護。我們知道,http協議是使用明文進行傳輸的,但是像網絡銀行之類的web應用如果使用http協議的話,那麼所有的機密信息都會暴露在網絡連接中,這就像銀行用一個透明的信封給我們郵寄信用卡帳號和密碼一樣,在從銀行到達用戶之間任何接觸過這封信的人,都能看到我們的帳號和密碼。爲了提高其安全性,經常需要通過SSL或者TLS隧道傳輸這些明文,這樣就產生了https通信流量。例如網絡銀行之類的應用,在服務器和客戶端之間傳輸密碼,信用卡號碼等重要信息時,都是通過https協議進行加密傳送的。

  SSL和TLS是兩種安全協議,它們通過加密技術爲傳輸的信息提供安全信道、機密性和身份驗證等安全功能。我們知道由於對高級密碼技術的出口限制,會造成遺留系統使用的是弱加密技術。如果系統採用了弱密碼,或者說密碼強度過低的話,攻擊者可以在有效的時間內破解密鑰,而攻擊者一旦得到了密鑰,就像小偷得到了我們家的鑰匙一樣,所有的鎖都會形同虛設。但是,新Web服務器就不會使用弱加密系統了嗎?答案是否定的,因爲許多新Web服務器也經常被配置成處理虛密碼選項。爲了實現這些安全特性,協議必須確保使用的密碼算法有足夠的強度,並且密碼算法得到了正確的實現。即使服務器安裝使用了高級的加密模塊,但是如果配置不當的話,也有可能爲安全特性要求較高的通信信道的設置了較弱的加密技術。下面,我們將詳細介紹如何對這兩種協議的配置進行安全審計。

  二、測試SSL/TLS的密碼規範

  我們知道,http協議是使用明文進行傳輸的,爲了提高其安全性,經常需要通過SSL或者TLS隧道傳輸這些明文,這樣就產生了https通信流量。除對傳輸的數據進行加密處理之外,https(安全超文本傳輸協議,HTTPS)還能利用數字證書爲服務器或客戶端提供身份標識。

  過去,美國政府對加密系統的出口有許多限制,如密鑰長度最大爲40位,因爲密鑰長度越短,它就越容易破解。後來,密碼出口條例已經放寬了許多,但是,檢查服務器的SSL配置仍然十分重要,因爲它有可能配置使用了弱加密技術。基於SSL的服務不應該提供選擇弱密碼的機會。

  注意,我們這裏所說的弱密碼,指的是加密強度不夠、容易破解的加密系統。不同的加密算法具有不同的密碼強度,但是在算法一定的情況下,密鑰的長度越長,加密強度越高。

  技術上,選擇加密技術的過程如下所示:在建立SSL連接的初期,客戶端向服務器發送一個Client Hello消息,以告知服務器它支持哪些加密技術等。一般情況下,客戶端通常是一個Web瀏覽器,所以瀏覽器是目前最常見的SSL客戶端;然而,任何支持SSL的應用程序都可以作爲SSL客戶端使用。比如,有時候SSL客戶端是些SSL代理(如stunnel),它們使得那些不支持SSL的工具也能與SSL服務通信。同理,SSL服務器端通常爲Web服務器,但是其他應用程序也可以充當SSL服務器端。 加密套件規定了具體的密碼協議(DES、RC4、AES)、密鑰長度(諸如40、56或者128位)和用於完整性檢驗的散列算法(SHA、MD5)。收到Client Hello消息後,服務器以此確定該會話所使用的加密套件。當然,通過配置可以規定服務器能夠接受哪些密碼套件,這樣的話,我們就能夠控制是否跟僅支持40位加密的客戶端通話。

 

三、黑盒測試

  爲了檢測可能支持的弱密碼,必須找出與SSL/TLS服務相關的端口。通常情況下,要檢查端口443,因爲它是標準的https端口;不過運行在443端口上的卻未必是https服務,因爲通過配置,https服務可以運行在非標準的端口上,同時,Web應用程序也許使用了其它利用SSL/TLS封裝的服務。一般而言,爲了找出這些端口,必須找出使用了哪些服務。

  利用掃描程序nmap時,加上掃描選項–sV,就能用來識別SSL服務。實際上,安全漏洞掃描器除了可以顯示使用的服務之外,還能用來檢查弱密碼,比如,Nessus就能檢查任意端口上的SSL服務,並報告弱密碼。

  如果攻擊者在您修復弱密碼之前發現了它們的話,那麼您的處境可就不妙了——利用當前強大的桌面計算力,例如藉助GPU的並行運算,他們能夠在有效的時間內破解出密鑰,然後就能解密出https信道中加密過的機密信息,如口令,用戶名,如果您在使用網絡銀行,還能獲得他們的帳號和口令,等等。所以,我們一定要在攻擊者下手之前發現並修復存在的弱密碼配置。

  例1. 通過nmap識別SSL服務

[root@test]# nmap -F -sV localhost
Starting nmap 3.75 ( http://www.insecure.
org/nmap/ ) at 2009-07-28 13:31 CEST
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1205 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE VERSION
443/tcp open ssl OpenSSL
901/tcp open http Samba SWAT administration 
server
8080/tcp open http Apache httpd 2.0.54 ((Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g PHP/4.3.11)
8081/tcp open http Apache Tomcat/Coyote JSP engine 1.0
Nmap run completed -- 1 IP 
address (1 host up) scanned in 27.881 seconds
[root@test]#
  例2. 利用Nessus識別弱密碼。

  下面內容摘自Nessus掃描程序生成的報告,它發現了一個允許弱密碼的服務器證書(黑體字部分)。

https (443/tcp)
Description
Here is the SSLv2 server certificate:
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature 
Algorithm: md5WithRSAEncryption
Issuer: C=**, ST=******, L=******, O=******, OU=******, CN=******
Validity
Not Before: Oct 17 07:12:16 2007 GMT Not After :
Oct 16 07:12:16 2008 GMT
Subject: C=**, ST=******, L=******, O=******, CN=******
Subject Public 
Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:98:4f:24:16:cb:0f:74:e8:9c:55:ce:62:14:4e:
6b:84:c5:81:43:59:c1:2e:ac:ba:af:92:51:f3:0b:
ad:e1:4b:22:ba:5a:9a:1e:0f:0b:fb:
3d:5d:e6:fc:
ef:b8:8c:dc:78:28:97:8b:f0:1f:17:9f:69:3f:0e:
72:51:24:1b:9c:3d:85:52:1d:df:da:5a:b8:2e:d2:
09:00:76:24:43:bc:08:67:6b:dd:6b:e9:d2:f5:67:
e1:90:2a:b4:3b:b4:3c:b3:71:4e:88:08:74:b9:a8:
2d:c4:8c:65:93:08:e6:2f:fd:e0:fa:dc:6d:d7:a2:
3d:0a:75:26:cf:dc:47:74:29
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape 
Comment:
OpenSSL Generated Certificate
Page 10
Network Vulnerability Assessment Report 25.07.2009
X509v3 Subject Key Identifier:
10:00:38:4C:45:F0:7C:E4:C6:A7:A4:E2:C9:F0:E4:2B:A8:F9:63:A8
X509v3 Authority Key Identifier:
keyid:CE:E5:F9:41:7B:D9:0E:5E:5D:DF:5E:B9:F3:E6:4A:12:19:02:76:CE
DirName:/C=**/ST=******/L=******/O=******/OU=******/CN=******
serial:00
Signature Algorithm: md5WithRSAEncryption
7b:14:bd:c7:3c:0c:01:8d:69:91:95:46:5c:e6:1e:25:9b:aa:
8b:f5:0d:de:e3:2e:82:1e:68:be:97:3b:39:4a:83:ae:fd:15:2e:50:c8:a7:16:6e:c9:4e:76:cc:fd:69:ae:4f:12:b8:e7:01:
b6:58:7e:39:d1:fa:8d:49:bd:ff:6b:a8:dd:ae:83:ed:bc:b2:
40:e3:a5:e0:fd:ae:3f:57:4d:ec:f3:21:34:b1:84:97:06:6f:
f4:7d:f4:1c:84:cc:bb:1c:1c:e7:7a:7d:2d:e9:49:60:93:12:
0d:9f:05:8c:8e:f9:cf:e8:9f:fc:15:c0:6e:e2:fe:e5:07:81:
82:fc
Here is the list of available SSLv2 ciphers:
RC4-MD5
EXP-RC4-MD5
RC2-CBC-MD5
EXP-RC2-CBC-MD5 DES-CBC-MD5
DES-CBC3-MD5
RC4-64-MD5
The SSLv2 server offers 5 strong ciphers, but also 0 medium strength
and 2 weak "export 
class" ciphers.
The weak/medium ciphers may be chosen by an export-grade
or badly configured 
client software.
They only offer a limited protection against a brute 
force attack
Solution: disable those ciphers and upgrade your client software if necessary.
See http://
support.microsoft.com/default.aspx?scid=kben-us216482
or http://httpd.apache.org/docs-2.0/mod/mod_ssl.html#sslciphersuite
This SSLv2 server also accepts SSLv3 connections.
This SSLv2 server also accepts TLSv1 connections. Vulnerable hosts
(以下從略)
TABLE>  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章