可怕!公司部署了一个东西,悄悄盯着你···
我是一個(gè)網(wǎng)絡(luò)監(jiān)控軟件,我被開(kāi)發(fā)出來(lái)的使命就是監(jiān)控網(wǎng)絡(luò)中進(jìn)進(jìn)出出的所有通信流量。這個(gè)網(wǎng)絡(luò)中所有人的上網(wǎng)內(nèi)容我都看的清清楚楚,是不是很可怕?
我被一家公司老板買來(lái)運(yùn)行在一個(gè)配置極高的Linux服務(wù)器上,這臺(tái)服務(wù)器上的網(wǎng)卡可不得了,公司進(jìn)出的網(wǎng)絡(luò)數(shù)據(jù)包都得流經(jīng)它,它源源不斷的把數(shù)據(jù)包抓上來(lái)交給我來(lái)分析。
你們應(yīng)該也知道,網(wǎng)絡(luò)通信是分層的,最常見(jiàn)的就是那個(gè)TCP/IP協(xié)議體系了。
拿到數(shù)據(jù)包后,我就得按照這個(gè)協(xié)議規(guī)范,一層層的脫去協(xié)議的外殼,拿到它們的負(fù)載數(shù)據(jù)。
TCP會(huì)話重組
我重點(diǎn)要照顧的是TCP協(xié)議,因?yàn)楹枚鄳?yīng)用都要使用TCP來(lái)傳輸,像上網(wǎng)沖浪HTTP、發(fā)郵件SMTP、微信聊天等等。
我想要掌控網(wǎng)絡(luò)中的通信,第一個(gè)就要拿TCP開(kāi)刀,得想辦法把TCP傳輸?shù)囊粋€(gè)個(gè)數(shù)據(jù)包給重組起來(lái),形成一個(gè)完整的會(huì)話,這樣我才好知道應(yīng)用層傳了什么東西,這個(gè)步驟叫做會(huì)話重組。
不過(guò)這個(gè)TCP協(xié)議有點(diǎn)復(fù)雜,拋開(kāi)我們抓到的包本來(lái)就存在亂序的情況不說(shuō),它本身還有三次握手、四次揮手、超時(shí)重傳、延遲回復(fù)等很多機(jī)制,有時(shí)候還會(huì)遇到時(shí)間跨度很久的長(zhǎng)連接,這無(wú)疑都給我想要重組TCP會(huì)話造成了很大的難度。
而我重組TCP會(huì)話的唯一線索就是數(shù)據(jù)包包頭中的序列號(hào)SEQ和確認(rèn)號(hào)ACK。
不過(guò)我還是死磕RFC規(guī)范,把這些問(wèn)題都攻克了,能夠成功重組出一個(gè)個(gè)的TCP會(huì)話數(shù)據(jù),成功率還蠻高的。
應(yīng)用協(xié)議識(shí)別
TCP會(huì)話重組出來(lái)了,我就可以拿到里面?zhèn)鬏數(shù)臄?shù)據(jù)了。接下來(lái)要做的一件事就是識(shí)別應(yīng)用層到底是什么應(yīng)用在傳輸?shù)哪?#xff1f;
用我們的行話說(shuō),那就是做應(yīng)用協(xié)議識(shí)別,這個(gè)時(shí)候我就得看一下端口了。
我根據(jù)三次握手?jǐn)?shù)據(jù)包的方向,就可以確定出誰(shuí)是客戶端,誰(shuí)是服務(wù)端。
再看一下服務(wù)端的端口號(hào)(這個(gè)在TCP包頭里面就可以看到),就能知道這是一個(gè)什么服務(wù)了。
像常見(jiàn)的有下面這些:
22: SSH遠(yuǎn)程登陸
25: 郵件服務(wù)
53: 域名解析服務(wù)
80: HTTP Web服務(wù)
3306: MySQL數(shù)據(jù)庫(kù)服務(wù)
3389: 遠(yuǎn)程桌面連接服務(wù)
······
最常見(jiàn)的就是80端口的Web服務(wù)了,人類每天上網(wǎng)都在用到。有時(shí)候Web服務(wù)不走80端口,換成了別的,不過(guò)這難不倒我,我可以通過(guò)分析TCP的負(fù)載數(shù)據(jù)特征,看看有沒(méi)有HTTP協(xié)議的特征出現(xiàn),因?yàn)镠TTP協(xié)議的特征實(shí)在是太明顯啦!
到了后來(lái),根據(jù)端口的經(jīng)驗(yàn)出錯(cuò)的概率越來(lái)越大了,我就統(tǒng)一根據(jù)內(nèi)容來(lái)進(jìn)行識(shí)別判斷,不再相信端口。每個(gè)應(yīng)用都有它們各自的協(xié)議特征,這個(gè)識(shí)別我可是下了點(diǎn)功夫,輕易不會(huì)透露。
文件還原
現(xiàn)在我知道應(yīng)用層是什么協(xié)議了,我就可以把應(yīng)用層協(xié)議傳輸?shù)臄?shù)據(jù)給整明白了。
還是拿最常見(jiàn)的Web服務(wù)來(lái)說(shuō)吧,HTTP協(xié)議是一個(gè)基于請(qǐng)求-響應(yīng)的協(xié)議,比如下面的這一次通信:
請(qǐng)求是一個(gè)GET包,看請(qǐng)求的資源貌似是一張JPG圖片。
再看響應(yīng)包,狀態(tài)碼是200 OK,看來(lái)沒(méi)啥問(wèn)題。再看看Content-Type,image/jpeg,是個(gè)JPG圖片沒(méi)跑了。
現(xiàn)在我就可以定位到響應(yīng)包的負(fù)載段,就是在HTTP頭,兩個(gè)回車換行(0D0A)后面就是數(shù)據(jù)了。
找到數(shù)據(jù)位置,再根據(jù)Content-Length的大小,把數(shù)據(jù)摳出來(lái)寫成一個(gè)PNG格式的文件就大功告成了!
OMG,這是哪個(gè)血?dú)夥絼偟男』镒佑衷诳疵琅畧D片了!
上面這個(gè)把協(xié)議中傳輸?shù)奈募崛〕鰜?lái)的過(guò)程叫做文件還原,除了HTTP協(xié)議,我還支持文件傳輸協(xié)議FTP、郵件傳輸協(xié)議SMTP、文件共享的SMB協(xié)議呢。你們通過(guò)這些協(xié)議傳輸?shù)奈募?#xff0c;我都能給你還原出來(lái),是不是很可怕?
HTTPS解密
有一天,我發(fā)現(xiàn)80端口的數(shù)據(jù)包越來(lái)越少了,與此同時(shí),443端口的通信數(shù)據(jù)不知不覺(jué)多了起來(lái)。后來(lái)才知道原來(lái)為了防止被我這樣的網(wǎng)絡(luò)中間人窺探隱私,他們都用上了一個(gè)叫HTTPS的技術(shù)。
HTTPS把數(shù)據(jù)進(jìn)行了加密傳輸,這樣我拿到以后都是加密后的,沒(méi)辦法知道傳輸了什么內(nèi)容。
不過(guò)這家公司的老板很聰明,他要求公司的員工電腦上都裝上了一個(gè)“安全軟件”,美其名曰保護(hù)電腦不被入侵,實(shí)際上啊是在他們的電腦上做了一個(gè)中間人劫持,進(jìn)行了HTTPS的證書替換(你不信可以看看這個(gè):誰(shuí)動(dòng)了你的HTTPS流量?)。
這個(gè)“安全軟件”作為中間人把HTTPS證書和密鑰告訴我,我就可以解密HTTPS流量了!你們上網(wǎng)干了啥我還是能知道的一清二楚!
網(wǎng)絡(luò)阻斷
你以為我只能在一旁監(jiān)聽(tīng)嗎?圖樣!
要是你們?cè)L問(wèn)那些敏感的網(wǎng)站,或者嘗試把老板交代給我重點(diǎn)看護(hù)的數(shù)據(jù)偷偷傳出去,那我就不只是看著那么簡(jiǎn)單了,這個(gè)時(shí)候我就要啟動(dòng)阻斷功能。
為了不影響公司網(wǎng)絡(luò)的運(yùn)轉(zhuǎn),我一般都是旁路部署的,這樣要是我哪天抽風(fēng)遇到了bug,還可以立即把我撤下去。這個(gè)所謂旁路部署呢,就是抓取的包都是一份拷貝,而不是通過(guò)我轉(zhuǎn)發(fā)。
不過(guò)這樣一來(lái)也給我阻斷網(wǎng)絡(luò)通信帶來(lái)了一些麻煩,如果我是串聯(lián)到網(wǎng)絡(luò)中,那可就簡(jiǎn)單了,遇到那些可疑的網(wǎng)絡(luò)連接我直接丟掉數(shù)據(jù)包,不轉(zhuǎn)發(fā)出去就得了。
可現(xiàn)在我不是串聯(lián),而是旁路部署,怎么辦呢?
聰明如我,怎么可能被這小小的問(wèn)題難住?我可是深諳TCP協(xié)議的行家,在發(fā)現(xiàn)可疑的連接建立的時(shí)候,就將它掐滅在萌芽狀態(tài)!
具體來(lái)說(shuō),TCP連接的建立是要經(jīng)過(guò)三次握手的:
當(dāng)我發(fā)現(xiàn)可疑的SYN數(shù)據(jù)包時(shí),在服務(wù)端回復(fù)第二次握手包之前,以迅雷不及掩耳盜鈴之勢(shì),用服務(wù)器IP的名義偽造一個(gè)RST的數(shù)據(jù)包給客戶端,這樣連接就被我掐斷了!
這一招雖然不能保證百分之百成功,但我離客戶端更近,我的偽造包一般都能比真正的服務(wù)端響應(yīng)包早一步到達(dá)客戶端,所以成功率還是蠻高的!
唉,說(shuō)曹操,曹操就到!發(fā)現(xiàn)了一個(gè)可疑的連接來(lái)了,先不說(shuō)了,我要去忙了~
小詹個(gè)人微信添加微信,回復(fù)「PPT」,領(lǐng)取數(shù)據(jù)分析資料→專屬交流社群→精選資料共享 福利放送 Tik Tok(抖音國(guó)際版)安卓可用 趣談軟件 長(zhǎng)按掃碼,回復(fù)關(guān)鍵字【抖音】即可獲取總結(jié)
以上是生活随笔為你收集整理的可怕!公司部署了一个东西,悄悄盯着你···的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 统计学最全脑图,你只管打开它,剩下的交给
- 下一篇: 你不就是加了 2 行代码,为什么要用 2