通過電子郵件地址即可以找到你的LinkedIn個人資料

來源: SecTr安全團(tuán)隊
作者:SecTr安全團(tuán)隊
時間:2021-12-07
15982
本文中,研究人員主要介紹了一些LinkedIn外部API的隱私問題,并演示了如何通過電子郵件地址找到與其關(guān)聯(lián)的LinkedIn個人資料。

640.webp.jpg

概述

本文中,研究人員主要介紹了一些LinkedIn外部API的隱私問題,并演示了如何通過電子郵件地址找到與其關(guān)聯(lián)的LinkedIn個人資料。此外,也可以通過LinkedIn個人資料進(jìn)行反向搜索,找到某人的電子郵件地址。在此次去匿名化攻擊中,研究人員利用了LinkedIn與Outlook和YahooMail的集成功能。

功能

研究人員最初注意到在使用Outlook郵件客戶端時,頁面上有多個顯示與該聯(lián)系人相關(guān)的其他信息的標(biāo)簽。其中的一個標(biāo)簽是該聯(lián)系人的LinkedIn個人資料,里面包含了聯(lián)系人的公司名稱、職務(wù)、過去的經(jīng)歷和位置等。看到這些,研究人員開始好奇郵件客戶端是如何找到這些個人資料的?

640.webp (1).jpg

640.webp (2).jpg

研究人員通過查看HTTP請求,注意到Outlook客戶端在顯示個人的詳細(xì)信息時,將通過WebSocket交換數(shù)據(jù)。請求或響應(yīng)的消息采用一種不常見的格式進(jìn)行編碼,如下圖所示:

640.png

該請求是通過WebSocket向https://sfnam.loki.delve.office.com發(fā)出的。通過查看啟動通信的JavaScript代碼,可以找到負(fù)責(zé)上述編碼格式的代碼。Chrome中的“網(wǎng)絡(luò)”標(biāo)簽將顯示用于啟動給定WebSocket通信的JavaScript文件和源代碼,如下圖所示:

640.webp (3).jpg

查看Chrome突出顯示的源代碼,研究人員發(fā)現(xiàn)該代碼可以處理新的請求和響應(yīng)。在以下的代碼片段的onMessage回調(diào)處理程序中,我們可以看到,接收到的消息將轉(zhuǎn)換為UInt8數(shù)組,并使用inflateRaw方法從Pako模塊解壓縮。Pako是一個支持LZip壓縮算法的庫。InflateRaw()函數(shù)使用LZip壓縮,不包含文件名和修改日期的元數(shù)據(jù)標(biāo)頭。

 }, e.prototype.onMessage = function (e) {

            var t = this;

            this.inflateData(e.data, function (n) {

                try {

                    t.setServerPingTimerIfEnabled();

                    var r = JSON.parse(n), o = k()(r.Key, 10);

                    if (-1 === o) return;

                    if (r.Headers = r.Headers && q(r.Headers), o in t.activeRequestsMap) {

                        var i = t.activeRequestsMap[o];

                        i && (clearTimeout(i.timeout), setTimeout(function () {

                            return i.onSuccess(r, e.timeStamp)

                        }, 0)), delete t.activeRequestsMap[o]

                    } else t.logError("WebSocket-onMessage-UnableToFindResponseKey", {Key: o.toString()})

                } catch (e) {

                    t.logError("WebSocket-onMessage-ReceiveFailure", {Exception: e.message})

                }

            })

        }, e.prototype.inflateData = function (e, t) {

            return G(this, void 0, void 0, function () {

                var n, r, o;

                return W(this, function (i) {

                    switch (i.label) {

                        case 0:

                            return this.compressionDisabled ? (t(e), [3, 4]) : [3, 1];

                        case 1:

                            return i.trys.push([1, 3, , 4]), [4, this.getPako()];

                        case 2:

                            return n = i.sent(), r = n.inflateRaw(new Uint8Array(e), {to: "string"}), t(r), [3, 4];

                        case 3:

                            return o = i.sent(), this.logError("WebSocket-inflateData-PakoInflateFailure", {Exception: o}), t(""), [3, 4];

                        case 4:

                            return [2]

                    }

                })

            })

知道編碼格式后,研究人員創(chuàng)建了一個簡單的ZAP插件,如果請求和響應(yīng)的消息與LZip或GZip格式匹配,ZAP將自動對其進(jìn)行解碼,如下圖所示:

640.webp (4).jpg

從以下代碼中,我們可以看出有些請求是為LinkedIn終端制作的,這些請求負(fù)責(zé)在JSON消息中使用/api/v1/linkedin/profiles/full路徑加載LinkedIn個人資料。發(fā)送到sfnam.loki.delve.office.com的請求大多都是以JSON格式包裝的HTTP請求。JSON屬性網(wǎng)址類似于HTTP路徑,且所有標(biāo)頭都在標(biāo)頭屬性下。研究人員在沒有WebSocket連接的情況下,直接在HTTP中測試該請求,也可以訪問相同的功能。


{

  "Key": "15",

  "Url": "https://sfnam.loki.delve.office.com/api/v1/linkedin/profiles/full?PersonaDisplayName=Peter%20Gibbons&ExternalPageInstance=332c2687-71f7-49df-8b7c-b2402ccbf473&UserLocale=en-US&OlsPersonaId=&AadObjectId=&Smtp=kmitnick%40mitnicksecurity.com&UserPrincipalName=&PersonaType=User&RootCorrelationId=2933990e-0cc2-4406-8103-0cba160e7047&CorrelationId=2933990e-0cc2-4406-8103-0cba160e7047&ClientCorrelationId=0d3bf626-18d0-46bf-8ce4-667b7bb485b4",

  "Verb": "GET",

  "Headers": {

    "Accept": "text/plain, application/json, text/json",

    "X-ClientType": "OwaMail",

    "X-ClientFeature": "LivePersonaCard",

    "X-LPCVersion": "1.20201124.2.1",

    "authorization": "Bearer EwAYA9[...]",

    "X-HostAppCapabilities": "{}"

  }

該功能正在使用指定的名稱和電子郵件地址,查找已注冊的LinkedIn個人資料。此處將名稱“Peter Gibbons”和電子郵件“peter.gibbons aol.com”作為參數(shù)傳遞。

研究人員使用另外一個陌生的電子郵件地址替換上訴地址,服務(wù)器將返回以下所示的JSON消息,其中包含與該地址相關(guān)的用戶的完整LinkedIn個人資料。

{

  "Key": "4",

  "StatusCode": 200,

  "ReasonPhrase": "OK",

  "Headers": {

    "X-WebSocketCorrelationId": "9cb14592-5728-******",

    "Cache-Control": "no-store",

    "Server": "Microsoft-HTTPAPI/2.0",

    "X-BEServer": "_Loki_10716",

    "X-DataCenter": "PROD_NORTHCENTRALUS",

    "X-ServerVersion": "0.20201202.4.1",

    "X-Content-Type-Options": "nosniff",

    "X-TokenTtl": "86390",

    "X-InboundDuration": "14",

    "X-CorrelationId": "9cb14592-5728-47c5- ******,

    "Access-Control-Allow-Origin": "https://sfnam.loki.delve.office.com",

    "Access-Control-Allow-Credentials": "true",

    "Access-Control-Expose-Headers": "X-ServerVersion,X-InboundDuration,X-BEServer,X-TokenTtl,X-SocialDistance,X-CorrelationId,X-DataCenter,x-azure-ref,Retry-After",

    "Date": "Mon, 07 Dec 2020 16:26:01 GMT"

  },

  "Body": "<<JSON escaped string>>"

}

響應(yīng)體屬性中包含如下所示的JSON對象,數(shù)據(jù)中包含全名、公司、位置、專業(yè)經(jīng)驗、學(xué)校出勤率和個人資料地址。

{\"resultTemplate\":\"ExactMatch\",\"bound\":true,\"bindUrl\":\"https://login.live.com/accountbind.srf?provider=linkedin.com&redirect_uri=https://loki.delve.office.com/linkedInAuthRedirect.aspx&client_id=000000004C1E916B&dualbind=1&mkt=en-US&external_app=Owa&dualbindmobile=True\",

\"persons\":[{\"id\":\"urn:li:person:DgEN90FFXdpXh-OCiFTGl3l0pTo6d4ub6h19lWlc7mE\",\"displayName\":\"Kevin Mitnick\",\"headline\":\"The World's Most Famous Hacker | CEO | Author | Professional Speaker\",\"companyName\":\"Mitnick Security Consulting\",\"location\":\"Henderson, Nevada, United States\",

\"photoUrl\":\"https://media.licdn.com/dms/image/C4E03AQEKmI4XcvU8nQ/profile-displayphoto-shrink_800_800/0?e=1613001600&v=beta&t=o8EaQb4TeZn9JhUOTJJOS3PA9uzaewnHWO7n7nJNDfw\",\"linkedInUrl\":\"https://www.linkedin.com/in/kevinmitnick\", 


//... JSON messages also include schools, work experience, company details, 

 

}

值得注意的是,該操作無需與LinkedIn用戶進(jìn)行任何交互?,F(xiàn)在,我們已經(jīng)通過任意電子郵件地址獲取LinkedIn個人資料了。

總結(jié)

該功能可以被惡意攻擊者用于進(jìn)行去匿名化攻擊、憑證填充,以及網(wǎng)絡(luò)釣魚攻擊等惡意活動。為了避免遭受到此類攻擊,建議用戶禁止任何人可以通過電子郵件地址查看個人資料,并拒絕與不認(rèn)識的用戶建立連接或向所有人隱藏聯(lián)系信息。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于SecTr安全團(tuán)隊,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多