1. 程式人生 > >https和http伺服器

https和http伺服器

1, https:客戶端輸入網址:伺服器傳送證書(公鑰)給客戶端,客戶端解析證書是否安全(安全則生成隨機值並用該證書進行加密),並將加密後的隨機值告訴伺服器(傳送加密資訊),以後通訊都用這個值進行加密解密(私鑰);伺服器得到這個加密資訊後用證書解密得到隨機值,然後傳送資訊的時侯進行對稱加密(資訊和私鑰以某種演算法結合);然後客戶端接收到服務端的加密資訊後,用共同的金鑰解密;即使黑客監聽到資料,他沒有金鑰也沒用;

握手---協商加密演算法----傳送安全證書---檢查安全證書---傳送金鑰---傳送加密資訊;

ssl弱點:

1.ssl是不同的對稱、非對稱、單向加密演算法的組合加密實現(cipher suite)

如金鑰交換、身份驗證使用RAS/Diffie-Hellman,加密資料,使用AES加密,有RAS/DH完成金鑰交換,摘要資訊由HMAC-SHA2,組成了一個cipher suite,當然,也可以是其他組合。

2.伺服器端為提供更好的相容性,選擇支援大量過時的cipher suite。

3.協商過程中強迫降級加密強度。

4.現代處理器計算能力可以在接收的時間內破解過時加密演算法。

5.黑客購買雲端計算資源破解。

黑客攻擊方法:

1,降級攻擊,強制性將加密演算法從高強度降為低強度;

2,解密攻擊,偽造明文或者證書;

3,協議漏洞,配置不嚴格;

攻擊步驟:

1,檢視證書:

openssl是一個(安全套接字層密碼庫),包含ssl協議,加密演算法,常見金鑰,證書封裝管理功能;

下載openssl並開啟:輸入命令列:s_client -connect  www.baidu.com:443執行;

檢視目標伺服器支援的SSL/TLS cipher suite:

利用SSLscan:探測目標伺服器支援的加密演算法;

sslcan能自動識別ssl配置錯誤,過期協議,過時cipher suite和hash演算法

預設會檢查CRIME、heartbled漏洞,綠色表示安全、紅色黃色需要引起注意

輸入命令:sslscan -tlsall www.baidu.com:443

分析證書詳細資料:

sslscan -show-certificate  --no-ciphersuites www.baidu.com:443

3,使用nmap指令碼:

nmap --script=ssl-enm-ciphers.nse www.baidu.com

2,生成證書:

openssl req -new -x509 -days 1096 -key ca.key -out ca.crt,進行一個新的請求,格式為-x509,現在的證書基本是x509的國際標準的證書格式,有效期為1096天,並使用ca.key私鑰,生成ca.crt標準的證書檔案。sslsplit自動呼叫根證書,根據你要訪問哪些網站,根據網站的名稱,由根證書籤發一個專門針對網站的證書。

在openssl中需要有ca.key檔案(是含有64個字元的字串);

3,開啟路由功能:

中間人也是個終端裝置,不具有路由功能,轉發過程不是由軟體實現的,是由作業系統的路由功能實現的。

sysctl -w net.ipv4.ip_forward=1,將net.ipv4.ip_forward=1的值設為1,

wKioL1g5rjnRgjGrAAE88akQZG4132.png

4.寫轉發規則

iptables埠轉發規則

當客戶端把請求發給中間人終端裝置的時候,發到終端的443埠之後,需要用iptables做NAT地址轉換,其實是埠轉換,把本地443埠收到的包轉發到另外一個埠,而另外一個埠由sslsplit所偵聽的埠,這樣的話,凡是發給443埠的請求流量就會發給slsplit所偵聽的埠,而sslsplit就會呼叫證書偽造一個看起來是目標網站的偽造網站,sslsplit會利用偽造的證書對發過來的流量進行解密

iptables -t nat -L 檢視net的配置,為避免干擾,可以使用iptables -F清空配置,並使用netstat -pantu | grep :80 ,netstat -pantu | grep :443檢查80和443是否被使用,使用則停止程序

wKiom1g5rlqBmcK_AACv3jYkVpc625.png

將80、443埠進行轉發給8080和8443埠。

  1. iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 
  2. iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443 

當然還可以對其他的協議的加密流量進行中間人攻擊。

  1. iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8443 //MSA 
  2. iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443 //SMTPS 
  3. iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443 //IMAPS 
  4. iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT --to-ports 8443 //POP3S 

4. 進行arp欺騙

使用arpspoof進行arp欺騙,不管是進行DNS欺騙還是HTTP或HTTPS的中間人攻擊,arp欺騙都是前提,所以,在進行防禦的時候,將ip和MAC繫結,就可以防止中間人攻擊了。