售前咨询
技术支持
渠道合作

详解SSL安全错误

SSL的安全漏洞

加密和数字证书,SSL的主要组成,从来都无法保护服务器--它们仅仅可以保护该服务器所收发的数据。

SSL常见安全问题下面三种:

1、攻击证书

黑客通过暴力攻击(brute-force attack)对SSL证书进行正面攻击。黑客编辑一个可能的用户名字列表,然后为每一个名字向CA机构申请证书。每一个证书都用于尝试获取访问权限。用户名的选择越好,其中一个证书被认可的可能性就越高。暴力攻击证书的方便之处在于它仅需要猜测一个有效的用户名,而不是猜测用户名和口令。

2、窃取证书

黑客可能窃取有效的证书及相应的私有密钥。最简单的方法是利用特洛伊木马。这种攻击几乎可使客户端证书形同虚设。它攻击的是证书的一个根本性弱点:私有密钥--整个安全系统的核心--经常保存在不安全的地方。对付这些攻击的唯一有效方法或许是将证书保存到智能卡或令牌之类的设备中,但这里我不打算讨论这个范围,在以后,我将会向大家详细介绍。

3、安全盲点

网络入侵侦测系统是通过监测网络传输来找寻没有经过认证的活动。任何符合已知的攻击模式或者并未经过政策上授权的网络活动都被标起来以供系统管理者检视。而要让 IDS 能够发生作用,IDS 必须能够检视所有的网络流量信息,但是 SSL 的加密技术却使得通过 http 传输的信息无法让 IDS 辨认。再者,虽然我们可以用最新的安全扫描软件审查一般的网页服务器来寻找已知的安全盲点,这种扫描软件并不会检查经过 SSL 保护的服务器。受到 SSL 保护的网页服务器的确拥有与一般服务器同样的安全盲点,可是也许是因为建立 SSL 连结所需要的时间以及困难度,安全漏洞扫描软件并不会审查受到 SSL 保护的网页服务器。

解决方法

至于如何保护证书的安全,你可以采用IDS(Intrusion Detection System),它是一种用于监测攻击服务器企图的技术和方法。典型的IDS监视网络通讯,并将其与保存在数据库中的已知攻击”特征”或方法比较。如果发现攻击,IDS可以提醒系统管理员、截断连接或甚至实施反攻击等。问题在于如果网络通讯是加密的,IDS将无法监视。这反而可能会使攻击更为轻松。假设在一个典型的被防火墙和IDS防护的DMZ环境中,黑客能轻松地探测被SSL保护的网站,因为SSL对数据的加密使得IDS无法正常监测攻击。通常一台单一的网站服务器会同时使用SSL和普通的TCP协议。由于黑客攻击的服务器而不是网络连接,他们可以选择任意一种途径。通过SSL途径,黑客知道SSL加密为他们带来的好处,这样更容易避开IDS系统的监测。对于IDS方面的详细内容,我以前向大家介绍过了,大家可以到天极网看《浅析网络入侵监测系统-IDS的应用》一文。在这里我主要介绍的是如何解决系统管理员没办法使用现有的安全漏洞扫描或网络入侵侦测系统而存在的网页服务器安全盲点的情况,目前解决这个困扰的常用方法大致有以下三种:

1、通过 Proxy 代理服务器的 SSL

我们可以在一个 SSL Proxy 代理程序上使用这项资料审查技术。SSL Proxy 是一个在连接埠 80 上接收纯文字的 HTTP 通讯请求的软件, 它会将这些请求通过经由 SSL 加密过的连结,转寄到目标网站。我们在连接埠 80 开一个听取的 socket,通过上述的 OpenSSL 指令,将所有进入这个 proxy 的数据传送出去。这在 Unix 上,只是个小技巧:你只须将以下的指令加到你们的/etc/inetd.conf 档案里面,这个 inetd.conf 包含所有 inetd 所提供的网络服务的设定:

www stream tcp nowait root /usr/sbin/tcpd /usr/local/bin/ssl_proxy.sh

而 /usr/local/bin/ssl_proxy.sh 的内容则如下所述:

#!/bin/sh

/usr/local/ssl/bin/openssl s_client -no_tls1 -quiet -connect 168.172.100.10:443 2>/dev/null

168.172.100.10 是 SSL 防护下的网站的地址所在。其中 -no_tls1 以及 -quiet 选项将 SSL 交谈 (handshake)的标题显示关掉,并且也删除了 SSL 对于尚未经过授权的网站认证所发出的警告。

如果你要想测试你的 proxy 连结,那么你只要以纯文字的方式,在执行 SSL proxy 的系统的连接端口 80 建立联机。这个 proxy 会使用 SSL 来转寄接收的请求到目标网站。

$ telnet 182.197.110.180 GET / HTTP/1.0

在这里,服务器正在 182.197.110.1的地址执行 SSL proxy 机制,而真正受到 SSL 保护的地址则是在 168.172.100.10。通过这个 SSL proxy 机制,我们只要将安全扫描软件指向 proxy 的 IP 地址,就可以使用它来审查一个SSL 服务器。

在这里,你可以使用whisker程序(网址:http://www.wiretrip.net/rfp/p/doc.asp?id=21&iface=2 )来审查 SSL 防护的网站服务器。Whisker是一个由 Rain Forest Puppy 写出来的 script,可以用来检查已知的比较容易受到入侵的网站应用程序以及 CGI script。

./whisker.pl -h 168.172.100.2

— whisker / v1.3.0a / rain forest puppy / ADM / wiretrip —

– Loaded script database of 1691 lines

= – = – = – = – = – =

= Host: 168.172.100.2

= Server: Microsoft-IIS/4.0

+ 404 Object Not Found: GET /cfdocs/

+ 404 Object Not Found: GET /cfide/Administrator/startstop.html

+ 404 Object Not Found: GET /cfappman/index.cfm

+ 404 Object Not Found: GET /cgi-bin/

+ 403 Access Forbidden: HEAD /scripts/

+ 403 Access Forbidden: HEAD /scripts/cpshost.dll

+ 404 Object Not Found: HEAD /samples/search/queryhit.htm

+ 404 Object Not Found: HEAD /adsamples/config/site.csc

+ 403 Access Forbidden: HEAD /scripts/counter.exe

+ 403 Access Forbidden: HEAD /scripts/samples/

?

以上情况是,在 182.197.110.1上执行 whisker,然后 whisker 使用 SSL 将所有的 HTTP 请求转寄到 168.172.100.10。

SSL proxy 的观念已经存在一阵子了。目前有一个名为sslproxy.c(网址:http://www.obdev.at/Products/sslproxy.html ) 的程序,可以执行以上的功能。另外一个最近才出来,执行 SSL proxy 还有它额外功能的工具程序,叫做stunnel(http://www.stunnel.org/ ), 是由 Brian Hatch 开发的。然而,因为使用命令列模式操作 OpenSSL 软件相对来说比较简单的,所以我将在下面介绍这种方式。

2、OpenSSL(相关资料网址:http://www.openssl.org/)

OpenSSL 包含了一套程序以及函式库,提供前端使用者 SSL 功能,并且允许软件工程师将 SSL 模块与他们的程序结合。在众多由 SSL 提供的产品里面,最能够用来让我们在这里讨论的是命令列模式的(command-line) SSL 客户端以及伺服端工具软件。OpenSSL 程序是一个指令列接口的程序,它是用来以手动的方式起始 SSL 连结。OpenSSL 让你重新导引与其它程序之间的资料输入以及输出。

使用普遍可得的安全扫描软件来审查 SSL 服务器在研究技术文件时,我们在 Apache 提供给 OpenSSL 的接口模块 mod_ssl(相关资料网址:http://www.modssl.org/)读到了一些有趣的信息。其中有 一段常见问题(FAQ)讨论到有关测试在 SSL 保护下的网站服务器。你可以利用 Telnet 连到网页服务器第 80 号连接埠,然后下达如下的 http get 指令,从网页服务器取得网页:

telnet www.ramsec.com 80

Trying 216.182.36.154…

Connected to www.ramsec.com.

Escape character is ‘^]’.

GET / HTTP/1.0

HTTP/1.1 200 OK

Server: Microsoft-IIS/4.0

Content-Location: http://216.182.36.154/index.html

Date: Mon, 10 Jul 2000 11:43:59 GMT

Content-Type: text/html

Accept-Ranges: bytes

Last-Modified: Thu, 23 Mar 2000 01:41:15 GMT

ETag: “305fc7e06894bf1:38441”

Content-Length: 886

<!doctype html public “-//w3c//dtd html 4.0 transitional//en”>

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html;

charset=iso-8859-1″>

因为 SSL 通联必须要经过一个安全的连接埠,而在这里我们使用的是没有安全防护的连接埠 80,因此,这个技巧在 HTTPS 通讯协议上是行不通的。然而,如果我们用的是 OpenSSL程序,我们就可以在 SSL 连接上做同样的一件事情。下面是OpenSSL 连结的细节openssl :

s_client -connect www.ramsec.com:443

CONNECTED(00000003)

depth=0 /C=US/ST=Washington/L=New Castle/O=Rampart Security Group

LLC/OU=Web/OU=Terms of use at www.verisign.com/RPA

(c)99/CN=secure.ramsec.com

verify error:num=20:unable to get local issuer certificate

verify return:1

depth=0 /C=US/ST=Washington/L=New Castle/O=Rampart Security Group

LLC/OU=Web/OU=Terms of use at www.verisign.com/RPA

(c)99/CN=secure.ramsec.com

verify error:num=27:certificate not trusted

verify return:1

depth=0 /C=US/ST=Washington/L=New Castle/O=Rampart Security Group

LLC/OU=Web/OU=Terms of use at www.verisign.com/RPA

(c)99/CN=secure.ramsec.com

verify error:num=27:certificate not trusted

verify return:1

depth=0 /C=US/ST=Washington/L=New Castle/O=Rampart Security Group

LLC/OU=Web/OU=Terms of use at www.verisign.com/RPA

(c)99/CN=secure.ramsec.com

verify error:num=21:unable to verify the first certificate

verify return:1

Certificate chain

0 s:/C=US/ST=Washington/L=New Castle/O=Rampart Security Group

LLC/OU=Web/OU=Terms of use at www.verisign.com/RPA

(c)99/CN=secure.ramsec.com

i:/C=US/O=RSA Data Security, Inc./OU=Secure Server Certification

Authority

Server certificate

—–BEGIN CERTIFICATE—–

MIIClTCCAgICEGJTOhcnU+VNQDZ7fqS1K8UwDQYJKoZIhvcNAQEEBQAwXzELMAkG

A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD

VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTAw

MDEyNDAwMDAwMFoXDTAxMDEyMzIzNTk1OVowgbsxCzAJBgNVBAYTAlVTMRMwEQYD

VQQIEwpXYXNoaW5ndG9uMRMwEQYDVQQHFApOZXcgQ2FzdGxlMSMwIQYDVQQKFBpS

YW1wYXJ0IFNlY3VyaXR5IEdyb3VwIExMQzEMMAoGA1UECxQDV2ViMTMwMQYDVQQL

FCpUZXJtcyBvZiB1c2UgYXQgd3d3LnZlcmlzaWduLmNvbS9SUEEgKGMpOTkxGjAY

BgNVBAMUEXNlY3VyZS5yYW1zZWMuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB

iQKBgQD+0K9xpPTh79iWWXc5JmTeJrg5YNdmwP5EwfKSPqOk2E8QSRNk8+Huv7h7

h636cDbmIh+J+VuRO5x5YP8apUCcqRfIMmQevTFzaIyCf3Mwm/OKNTs+4tqA5kjT

SedbBUGaaY2A1VcK0uby1djc+oX8XoCMoRWy+VGBkBrLK51t2QIDAQABMA0GCSqG

SIb3DQEBBAUAA34AhT7v59KwTvldIHJV7U4Doca+/wQ6ivbyd35K9hC/wxwE/jnO

oBXFKaJvV6mHk9hVz37CtLauUGYIZb3x7Cw6GajhhPicLi0l6ndH4VF9C4tbUb4t

2yw/6Jy9i+TfsO/Ldcu4KV0688vfORWm663+6miLYHKGNqFMaR3QaXc=

—–END CERTIFICATE—–

subject=/C=US/ST=Washington/L=New Castle/O=Rampart Security Group

LLC/OU=Web/OU=Terms of use at www.verisign.com/RPA

(c)99/CN=secure.ramsec.com

issuer=/C=US/O=RSA Data Security, Inc./OU=Secure Server

Certification

Authority

No client certificate CA names sent

SSL handshake has read 801 bytes and written 312 bytes

New, TLSv1/SSLv3, Cipher is RC4-MD5

Server public key is 1024 bit

SSL-Session:

Protocol : TLSv1

Cipher : RC4-MD5

Session-ID:

020000001E9F693D9F9D5FF87E6DF24A0BAFC85391992415991DF3AB74522BCB

Session-ID-ctx:

Master-Key:

08FD7A5E6D058A45D0855AD359C0428F3BB5A685E6D74DFB9CDAB6D6A2ED7D53

E97147155DC7B9C61B946BE6

Key-Arg : None

Start Time: 963184785

Timeout : 300 (sec)

Verify return code: 0 (ok)

GET / HTTP/1.0

HTTP/1.1 200 OK

Server: Microsoft-IIS/4.0

Content-Location: http://216.182.36.154/index.html

Date: Mon, 10 Jul 2000 11:41:25 GMT

Content-Type: text/html

Accept-Ranges: bytes

Last-Modified: Thu, 23 Mar 2000 01:41:15 GMT

ETag: “305fc7e06894bf1:38441”

Content-Length: 886

<!doctype html public “-//w3c//dtd html 4.0 transitional//en”>

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html;

charset=iso-8859-1″>

 

通过上面OpenSSL这项技术,我们就可以直接传送资料到有 SSL 保护的网站,然后用我们一般审查任何 HTTP 服务器安全性的方式来审查这个 SSL 网页服务器。

 

3、监测 SSL 服务器

现在的网络 IDS 只能够监视纯文字资料内容,所以我们只能够有两项选择:监视服务器上的 SSL 连结或者将整个连结资料转为纯文字格式。大部分的网页服务器都有一些基本的日志纪录功能。例如:Microsoft 的 IIS Web server有内建的日志制作功能,使用的是 W3svc1 格式,它可以侦测到很多一般的网络攻击状况。我通过前述的 SSL proxy 针对 Windows NT 4.0 上具备有 SSL 防护的 IIS 服务器,来作示范性的攻击。我们用的是由 Rain Forest Puppy 发现的一般性常见的 msadc 安全穿透技术。我们的 IIS 服务器在 C:\WINNT\system32\LogFiles 的目录下,记载了以下的日志:

12:25:45 10.0.0.1 GET /msadc/msadcs.dll 200

12:25:48 10.0.0.1 POST / msadc/msadcs.dll 200

然而,因为这些日志文件通常是存在网页服务器上面,因此,一个成功的攻击事件表示黑客很可能已经对日志文件下了手脚了。此外,安全管理员必须每天检查服务器上的日志文件(另外还有 IDS,防火墙等等),这实在不是个最佳的解决方案。

除了使用主机日志文件的以外,另一个方式是将 SSL 连结转换成纯文字格式。如此一来网络的 IDS 就能够监视资料往来。有几种产品提供这项功能,不过他们主要是为了要提升数据处理效能,而不是为了网络安全的理由。建立以及维护 SSL 连结,必须耗用相当的 CPU 时间,如此一来会减损网页服务器的效能。市面上有几家厂商提供「电子商务加速器」,用来将与 SSL 交涉的工作移到不同的装置或处理器。你可以将 IDS 置放于加速器跟网页服务器之间,以监控纯文字格式的网络交通。用这种方式监控的话,有一个问题。那就是你必须有至少一个网络区隔(network segment)。这个网络区隔必须是安全的,而且与其它的网络装置分开来。

相关搜索

  • sql sever ssl安全错误
  • app发生了ssl错误
  • sql2000 ssl安全
  • 知乎ssl错误
  • ssl错误苹果手机
  • 手机银行ssl连接异常
  • 苹果手机发生ssl错误
  • 手机ssl证书校验失败
  • 支付宝ssl证书校验失败

上一篇:

下一篇:

相关文章