這里的中間人場景主要是Windows平臺下的C/S架構劫持,技術指的是SSL劫持攻擊,即SSL欺騙,剝離攻擊暫不涉及。整體原理是偽造證書,既充當請求方的server角色,又充當真正server的請求方。以此來獲取和篡改通信的明文報文數據。

原理
1.客戶端請求被劫持(如DNS劫持等),所有的客戶端請求均被轉發至中間人的服務器;
2.中間人服務器返回中間人偽造的“偽證書”(包含偽公鑰);
3.客戶端創建隨機數,通過中間人證書的偽公鑰對隨機數進行加密后傳輸給中間人,然后憑隨機數構造對稱加密算法對要進行傳輸的數據內容進行對稱加密后傳輸;
4.中間人因為擁有客戶端生成的隨機數,從而能夠通過對稱加密算法進行數據內容解密;
5.中間人再以“偽客戶端”的身份向正規的服務端發起請求;
6.因為中間人與服務器之間的通信過程是合法的,正規服務端通過建立的安全通道返回加密后的數據內容;
7.中間人憑借與正規服務器建立的對稱加密算法進行數據內容解密;
8.中間人再通過與客戶端建立的對稱加密算法對正規服務器返回的數據內容進行加密傳輸;
9.客戶端通過中間人建立的對稱加密算法對返回的數據內容進行解密;
由于缺少對證書的真偽性驗證,所有客戶端即使發起了Https請求,但客戶端完全不知道自己發送的請求已經被第三方攔截,導致其中傳輸的數據內容被中間人竊取。
協議解析
基于TCP連接實現每條連接的單獨解析。在服務端開啟TCP代理,結合中間人方式解密SSL報文,即目的服務器與上網行為服務端SSL握手采用服務端證書,上網行為服務端與云桌面SSL握手采用自簽名證書,這樣在服務端就能獲取到所有數據的明文。對解密后的數據基于TCP流的思想進行解析,對于每一條TCP連接,都分為連接創建、數據傳輸、連接斷開。由源ip、源端口、目的ip、目的端口以及連接建立的時間戳,來確定唯一的一條流。每條TCP連接在連接建立時,開始本條流的解析,在每條TCP連接斷開時結束本條流的解析。
對于應用層協議(HTTP/FTP/SMTP/POP3/IMAP等協議)解析進行優化,采用淺報文檢測和特征檢測相結合的解析方式,通過識別端口號識別協議,結合抽取協議頭部分特征正則匹配協議特征串檢測,這樣做的目的是在保證識別準確率的同時,減少頻繁拆包帶來的時間復雜度提升。
- HTTP協議的特征如下所示:
請求頭匹配 re.compile(r'.*(POST|GET|DELETE|PUT|OPTIONS) (/[\S]*) HTTP/[1-2]\.[0-9]')
響應頭匹配 re.compile(r'.*HTTP/[1-2]\.[0-9] ([0-9]{3}) .*')
若要區分HTTP中是否包含文件,則通過如下特征判斷:先檢測請求頭中的Content-Disposition字段,若形如 'form-data; name="file"; filename="test4.txt"',則表示包含文件,文件名稱為"test4.txt";否則繼續判斷content_type字段,若在常見文件格式的content_type列表內,則表示是文件,文件名稱取url中path最后一級。例舉常見文件格式的content_type如下:
'application/x-msdownload',
'application/msword',
'application/octet-stream',
'audio/x-musicnet-download',
'application/pdf',
'application/vnd.ms-powerpoint',
'application/x-ppt',
'application/zip',
'application/x-msdos-program',
'application/vnd.ms-excel',
'application/vnd.visio',
'application/x-vsd',
'application/x-msi',
- SMTP/POP3/IMAP 協議通過端口號確定, 995、110是POP3,143、993是IMAP,25、465是SMTP協議。一條連接里面可能包含多封郵件,可通過如下特征標識:
收件頭:”RETR “
收件尾: “354 End data with <CR><LF>.<CR><LF>”
網頁版郵箱是在HTTP之上再解析一層私有協議,通過url區分是哪種類型郵箱,如qq是 mail.qq.com/cgi-bin/compose_send。其郵件附件和郵件正文內容是兩條獨立的TCP連接,通過附件的md5值進行關聯。
防范思路
防御中間人攻擊的方法有以下幾種:
1、使用加密技術: 對通信內容進行加密,可以有效防止中間人竊取通信內容;
2、使用數字證書: 數字證書是由可信任的第三方頒發的電子文件,可以用來驗證通信方的身份。使用數字證書可以有效防止中間人偽裝身份的行為;
3、使用安全套接字層(SSL)或傳輸層安全(TLS)協議: SSL和TLS是兩種常用的網絡安全協議,可以用來保護;
4、使用虛擬專用網絡(VPN)技術: VPN可以為用戶提供一條安全的通信通道,可以有效防止中間人。