arp欺騙和中間人攻擊(2)
urlsnarf無法嗅探到https的網址,那https的網址是否真的無法嗅探嗎。
http(超文本傳輸協定)和https(超文本傳輸安全協定)的差異就在"https"有"tls"但"http"沒有,https的s就是secure。
tls是介於http和tcp中間的協定,所以在tls之前都是沒有加密的。
![](https://assets.matters.news/embed/a2a3d549-c2b3-4fd7-b334-d59af45fd01d.jpeg)
在講tls前我必須先講一些東西。
RSA:非對稱式加密,也就是常聽見的公/私鑰。
什麼是公鑰什麼是私鑰,為什麼要用不對稱式加密。
公鑰、私鑰是用來加/解密的。比如說用公鑰加密就可以用私鑰解密,也可以用私鑰加密公鑰解密。一個私鑰對一個公鑰。
![](https://assets.matters.news/embed/a635c2c8-2639-4e80-a387-c0c62e316e81.jpeg)
RSA的算法這裡不多贅述。
為何要用非對稱式加密,用對稱的不好嗎?
![](https://assets.matters.news/embed/13e885d1-9965-4677-873c-9ca33dbdf99e.jpeg)
在傳輸的時候第一步會先互傳鑰匙。使用對稱式加密傳輸,如果一開始就被監聽那你的訊息就跟沒有加密一樣。
所以用對稱式加密好像真的不太好。
這時候非對稱式加密就派上用場了。在傳送訊息的時候只傳公鑰出去,別人要傳訊息給你的時候用你傳給他的公鑰加密,那就只有持有私鑰的你可以解密。
![](https://assets.matters.news/embed/cdf4b3e7-a845-4c85-b520-35f162e52fa3.png)
但是非對稱式加密真的毫無弱點嗎?
A、B互相傳送公鑰但被X攔截,X再發送自己的公鑰給A、B,這樣A、B就會認為X的公鑰是對方的公鑰。在A傳送訊息給B的時候用X的公鑰加密,被X攔截解密看完內容後再用B的公鑰加密傳給B,以此類推B傳給A。
![](https://assets.matters.news/embed/806ea051-7cd1-4a87-b0d2-4599eb845bb5.png)
以此可見非對稱式加密並不安全,所以這時候就要使用數位簽章。讓一個有信用的第三人的公鑰來加密訊息,用另一個有信用的第三人的公鑰來解密。
就像我信任你,那我大概也會信任你的熟人。
在一開始傳送訊息的時候就用有信用的第三人的公鑰加密,送達後再用另一個有信用的第三人的公鑰解密,這樣就算中間被監聽也沒辦法看到裡面的訊息或修改也可以驗證你的身份。
tls中的ssl證書就是用來確認身份的。
當然tls也不是真的無敵。
![](https://assets.matters.news/embed/89f0b0e1-26a2-4277-9a01-b6479795337c.png)
這次針對的目標是在client hello中的SNI(Sever Name Indication),SNI就是用來告訴伺服器你要用哪張SSL證書的,所以SNI中會包含域名(name server)。
接續上次開始監聽後開啟wireshark,選擇使用的介面,我用的是wlan0。
![](https://assets.matters.news/embed/c8a85ddd-efa1-4eca-90df-9635582ba725.png)
在搜索匡中輸入,ip.addr == TargetIp and ssl.handshake.type == 1
![](https://assets.matters.news/embed/f62a1117-adf8-432d-bdb1-1fe872e491ae.png)
ssl.handshake.type == 1就是指client hello。
搜尋後就可以看到各個client hello。
域名就在Transport Layer Security中
![](https://assets.matters.news/embed/e39483eb-406a-4dc1-97d4-57c05edd8ebc.png)
在往更深找一點就可以找到sever name了。
![](https://assets.matters.news/embed/f8a52cf4-c562-40e5-bdaf-15780928be1a.png)
![](https://assets.matters.news/embed/01a37044-c9ae-4e30-8500-1b92af8fc44b.png)
![](https://assets.matters.news/embed/9b5a5a2c-6f56-4a70-a5a5-de91ec5d9361.jpeg)
雖可以看到域名但無法看到更詳細。比如我知道你在看影片但我不知道你在看哪部,聽起來其實也還好但真要說的話其實有點可怕。
所以https其實已經算是很安全了只是域名還是會被看到,但是相對http的什麼都看得到其實好很多了。
“關於ssl證書若有錯誤請指正”