從運營商拿到你的Cookie究竟有多可怕

鄭海山dump發表於2018-11-13

昨日看到一個新聞,紹興越城警方偵破史上最大規模資料竊取案:上市黑產公司忽悠運營商竊取30億條公民資訊。

為什麼可怕

首先這是很容易很隱蔽的。

這樣子拿你的Cookie你沒有任何辦法阻擋的。除非你只訪問有HTTPS加密的網頁。

拿到你一個人的Cookie其實也不是太可怕,但是從運營商拿到所有人的Cookie就很可怕了。

拿到Cookie,最傻B的做法就是拿來加粉、刷量了。拿到這麼多資料基本上你可以在任何領域呼風喚雨了。

《1984》,如果是被動分析你的流量,那頂多就是老大哥在看著你在面具下的超我,而拿到Cookie就相當於老大哥可以進入你的大腦,主動做資訊收集。隱蔽點你不知道,逼急了他可以以你的身份去做任何事。

從運營商拿到你的Cookie究竟有多可怕

劍橋分析公司已經破產了,祖克伯在聽證會接收了參議員的輪番質詢,而這些資料還是使用者受到紅包利益引誘主動授權的。這個主動授權機制也很奇妙,最後會提到。

新聞摘錄

從2014年開始,黑產公司透過競標的方式,先後與全國多家運營商簽訂正式的服務合同,為其提供精準廣告投放系統的開發、維護。比如流量使用提醒等,主要靠這個系統。

警方發現有超過50家公司與該公司進行推廣、加粉等業務合作,涉及北京、杭州、福州、深圳、臨汾、東莞、廈門、上海、廣州、成都等10個地市區。

Cookie相當於使用者賬號的登入憑證,不需要獲取賬號和密碼,透過Cookie就可以進入使用者賬號,直接操作賬號做任何事情。

什麼是Cookie,為什麼會有Cookie

更詳細百度一下吧。

HTTP是無狀態的,也就是如果沒有Cookie等其他手段,你重複訪問一個頁面,對於伺服器來說他不知道你還是你。所以伺服器會生成一些唯一的標識碼傳給你,儲存在瀏覽器程式或者電腦硬碟內,下次你再訪問一個頁面時給伺服器這個唯一的標識碼,他就知道,哦,你又來了。

最開始伺服器會把一些你的個性化定製的內容一併寫入Cookie,但是後來個人擁有的終端太多了,配置無法漂移,所以現在基本上這些都儲存在雲上了,Cookie內只保留一個唯一的標識碼當索引,配置資訊再根據標識碼來獲取。

如果沒有唯一標識碼的Cookie,你每次訪問一個頁面都需要提交使用者名稱和密碼確認你是你,這個成本很高。一般認證會有多因素認證,密碼提交太多次也不安全,所以唯一標識碼的Cookie就是一個令牌,只要透過初始認證後,今後只需拿著令牌就可以。這個實現在TCP握手、SSL協商中間都會有。

舉個通俗的例子,假設你的姨媽給你找了她同事的女兒相親,第一次見面你們要約在一個咖啡館,你、姨媽、姨媽同事、姨媽同事女兒一起過來,透過了身份證驗證,確認了不是酒託,然後你掃描她的三圍,說錯了,你掃描她的三維後錄入腦海,下次你們兩個就可以直接見面無需再像第一次那麼繁瑣了。你透過三維掃描有失真壓縮生成摘要後存入你腦海的那段程式碼就是Cookie。

Cookie的隱蔽性

使用Cookie操作賬號是沒有任何記錄的。一般系統在登入時會雙因素認證,把登入賬戶的IP地址記錄到系統,展示給使用者登入記錄,分析是否在常用地址登入等等,然而使用Cookie跳過了這個階段。而且Cookie不在GET的URL裡,所以Web伺服器的Log也不會有任何留存。只有吃飽了沒事做的程式設計師才會在業務層面對Cookie轉換成的使用者和IP地址對應記錄到Log內。這個記錄量非常龐大,意義不大。一般我們認為Cookie洩露都是客戶自己的問題,伺服器不需要對這種做處理。

怎麼發現的

公開披露的是有使用者報案稱其發現自己的微博、QQ等社交賬戶在不知情的情況下新增了陌生好友、關注。在阿里安全歸零實驗室提供的技術協助下。我覺得不太可能。使用者一般發現這種情況我們會認為是使用者自己的問題,要不密碼太簡單被人猜測,要不密碼很複雜被人撞庫,要不在不安全的WIFI環境下被人嗅探密碼,要不電腦不安全被人安裝木馬,要不使用低版本的瀏覽器被人一秒控制。除開XSS、CSRF、Clickjacking伺服器漏洞外,沒人會想到從運營商的流量來拿Cookie。單個使用者去找微博QQ沒人理你。

所以我無責任猜測認為比較靠譜的發現可能是,某安全實驗室裡面有個人中招了,然後利用自己系的所有Log資料和多個平臺的威脅情報分析出來了,然後再反過來聯絡受害者去報案。

什麼情況下是安全的

大公司一般都有HTTPS全網加密,在HTTPS加密完美部署配置保護下,你怎麼被搞都是安全的。當然不排除App不驗證證照,大公司海量網站有某個網站沒有SSL加密拿到Cookie再去突破有SSL加密的網站等等等。

敏感操作有記錄的。拿Cookie要比較隱蔽都是去GET一些資料,不會去做敏感操作,因為敏感操作會有其他審計記錄,使用者也會發現,一些涉及到資金操作的大公司一般會有加一次認證。

Cookie有時間限制,分為非持久Cookie和持久Cookie。有些Cookie的機制是Session的一個索引,所以如果伺服器有20分鐘類似的Session失效機制Cookie也會失效。也就是拿到Cookie要乘早用(是的,打弟弟也要乘早)。還有些永續性Cookie是比如你使用者名稱和密碼透過認證後,伺服器使用你的使用者名稱和過期時間加上他的私鑰使用對稱演算法算出來的,這種Cookie不受Session的限制,可以保留到天長地久。這種Cookie比較可怕,所以在“記住我”選擇的時候需要謹慎。

Cookie可以加HttpOnly限制JavaScript不能讀取。

OAuth2認證

最後科普下合法的使用資料分析的認證方法。

rfc6749

這是OAuth2的認證協議流程


從運營商拿到你的Cookie究竟有多可怕


以劍橋分析公司(Client)需要拿你(Resource Owner)存在非死不可網站(Resource Server)的資料來分析做例子。

  • 首先劍橋分析公司(Client)必須先讓你(Resource Owner)在他們網站註冊,確認你是你。然後把你導向非死不可網站(Resource Server)。

  • 在非死不可的網站(Resource Server)裡,你需要在SSO(Authorization Server)做認證確認你是你,然後有一個頁面提示你“劍橋分析公司需要訪問你的資料,你是否授權”。這一切都是在非死不可網站(Resource Server)完成的,劍橋分析公司(Client)無法干預。

  • 如果你(Resource Owner)授權後,非死不可SSO(Authorization Server)會給劍橋分析公司(Client)一個Authorization Code。

  • 劍橋分析公司(Client)再拿著Authorization Code去SSO(Authorization Server)得到一個Access Token。Authorization Code會在使用後或者短時間內銷燬。以後就可以直接使用Access Token拿到你(Resource Owner)的資料了。

  • 這個Access Token就類似Cookie的機制,也就是劍橋分析公司(Client)拿著這個令牌無需知道你(Resource Owner)的使用者名稱和密碼就可以獲取你的資料。

  • 當然Access Token也會洩露,所以有效期時間會很短,還會有一個更長有效期的Refresh Token,可以根據Refresh Token再去獲取新的Access Token。

  • 你(Resource Owner)所有的事情透過瀏覽器(User Agent)完成。

具體Authorization Code流程如下:

從運營商拿到你的Cookie究竟有多可怕

看明白了不,不明白也沒關係,你只要知道網際網路精英們為你做了很多保護,然而這一切在Cookie洩露下一無用處。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31558018/viewspace-2219730/,如需轉載,請註明出處,否則將追究法律責任。

相關文章