收藏 [登錄/注冊] 歡迎
榕基門戶網及子站
聯系我們
  • 福建榕基軟件股份有限公司
  • 電話:0591-87860988
  • 傳真:0591-87869595
  • 地址:福建省福州市鼓樓區
  •    軟件大道89號
  •    A區15座
  • 郵編:350003
您的當前位置:首頁 > 技術支持 > 安全公告

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

圖片傳輸協議(PTP)

現代單反相機不再使用膠片來捕捉和再現圖像,而是使用圖片傳輸協議(PTP)。圖片傳輸協議最初主要涉及圖像傳輸,現在這個協議包含了幾十個不同的命令,支持從拍照到升級相機固件的任何操作。

以前大多數用戶使用USB數據線將相機連接到個人電腦,但新款相機現在支持WiFi連接。這意味著,曾經只有USB連接設備才能訪問的PTP/USB協議,現在也變成了每個近距離支持wifi的設備都可以訪問的PTP/IP協議。

在一次演講中,Daniel Mende (ERNW)展示了佳能EOS相機當時支持的每一種網絡協議可能遭受的所有不同的網絡攻擊。在演講的最后,Daniel討論了PTP/IP網絡協議,展示了攻擊者可以通過從網絡嗅探特定的GUID與相機通信,該GUID是在目標計算機與相機配對時生成的。由于PTP協議提供了多種命令,并且沒有以任何方式進行身份驗證或加密,因此他演示了如何使用協議中存在的功能監視受害者。

在研究中,研究人員的目標是超越訪問和使用協議的功能。他們模擬攻擊者,希望在協議中找到實現漏洞,希望利用它們來接管相機。這樣的遠程執行代碼(RCE)場景將允許攻擊者用相機做任何他們想做的事情,用勒索軟件感染相機只是眾多選項之一。

從攻擊者的角度來看,PTP層看起來是一個很好的攻擊目標,因為:

1. PTP是一種未經身份驗證的協議,支持許多不同的復雜命令;

2. PTP中的漏洞可以通過USB和WiFi進行同等程度的利用;

3. WiFi支持使研究人員的相機更容易被附近的攻擊者訪問。

在本文中,研究人員會將PTP作為攻擊載體,介紹兩種潛在的攻擊方法:

1. USB:如果一個攻擊者接管了你的電腦,就可以通過USB將惡意軟件傳播到你的相機中;

2. WiFi:攻擊者可以在旅游景點設置一個流氓WiFi接入點,感染你的相機。

攻擊目標的設定

研究人員選擇佳能EOS 80D單反相機的原因有很多:

1. 佳能是最大的單反相機制造商,控制著超過50%的市場份額;

2. EOS 80D支持USB和WiFi;

3. 佳能配有Magic Lantern,Magic Lantern是佳能單反相機推出的一款擴展包,主要包括Dual ISO捕捉兩種不同閃光范圍的圖像、擴大動態范圍、延時攝影、定時曝光控制計等功能,支持擴展API。從而提高相機的擴展功能。

獲取固件

這通常是每個嵌入式研究中最棘手的部分,第一步是檢查供應商的網站上是否有公開可用的固件更新文件。不出所料,研究人員在短時間的谷歌搜索之后找到了它。下載文件并提取歸檔文件之后,研究人員遇到了一個令人不快的意外。該文件似乎是加密或壓縮的,如圖1所示。

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

在瀏覽該文件時,研究人員沒有找到任何有用的模式,這可能暗示了引導加載程序的匯編代碼的存在。在許多情況下,引導加載程序是未壓縮的,它包含解密或解壓縮文件所需的指令。

嘗試使用Binwalk或7Zip等多種解壓縮工具都無用,這意味著這是一種專有的壓縮方案,甚至是一種專用的加密方案。

在谷歌,研究人員檢查了互聯網對這個. fir文件的看法,發現固件確實是AES加密的。

由于是開源的,研究人員希望ML(Magic Lantern)能夠以某種方式發布這個加密密鑰,從而允許解密固件。不幸的是,事實并非如此。ML不僅故意將加密密鑰保密,研究人員甚至在互聯網上的任何地方都找不到密鑰。通過努力,研究人員發現ML開發了一種叫做便攜式ROM轉儲的工具。這是一個自定義固件更新文件,一旦加載,就會將相機的內存轉儲到SD卡。

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

使用ML論壇中提供的說明,研究人員成功地卸載了相機的固件,并將其加載到研究人員的反匯編程序(IDA Pro)中。現在研究人員終于可以開始尋找相機的漏洞了。

反轉PTP層

此時,查找PTP層就非常容易:

1. PTP層是基于命令的,并且每個命令都具有唯一的數字操作碼;

2. 固件包含許多指示字符串,這簡化了逆向工程的任務。

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

通過遍歷PTP OpenSession處理程序,研究人員找到了根據操作碼注冊所有PTP處理程序的主函數。快速檢查確保固件中的字符串與研究人員在網上找到的文檔匹配。

在查看注冊函數時,研究人員發現PTP層的攻擊面很多。該函數注冊了148個不同的處理程序,表明供應商支持許多專有命令。通過實施近150種不同的命令,在其中一種命令中找到關鍵漏洞的可能性非常高。

PTP處理程序的API

每個PTP命令處理程序都可以實現相同的代碼API。API使用了ptp_context對象,圖4顯示了ptp_context的一個用例。

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

可以看到,上下文包含函數指針,用于:

1. 查詢輸入消息的大小;

2. 接收輸入的消息;

3. 處理消息后返回響應。

事實證明,大多數命令都相對簡單。它們只接收幾個數字參數,因為協議支持每個命令最多有5個這樣的參數。在掃描了所有支持的命令之后,148個命令的列表很快縮小到38個接收輸入緩沖區的命令。從攻擊者的角度來看,研究人員完全控制了這個輸入緩沖區,因此,我們可以開始在這么小的命令集中查找漏洞。

幸運的是,每個命令的解析代碼都使用普通的C代碼,并且非常容易分析。很快,研究人員發現了自己的第一個漏洞。

CVE-2019-5994:SendObjectInfo中的緩沖區溢出(0x100C)

PTP命令名稱:SendObjectInfo

PTP命令操作碼:0x100c

在內部,協議將支持的文件和圖像稱為“對象”,在這個命令中,用戶更新給定對象的元數據。處理程序在解析應該是對象的Unicode文件名時包含緩沖區溢出漏洞。圖5顯示了易受攻擊的代碼片段的簡化代碼版本:

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

這是主要全局上下文中的緩沖區溢出,在此上下文中,無需反轉不同的字段,研究人員擁有的唯一的直接暗示就是復制之后的Free-Where原語。副本可以將pKeywordsStringUnicode字段修改為任意值,然后觸發調用以釋放它。

這看起來是一個好方法,但是研究人員要繼續尋找一個更容易被利用的漏洞。

CVE-2019-5998:NotifyBtStatus中的緩沖區溢出(0x91F9)

PTP命令名稱:NotifyBtStatus

PTP命令操作碼:0x91F9

盡管研究人員的相機型號不支持藍牙,但一些與藍牙相關的命令顯然還存在的,攻擊者仍然可以訪問它們。在本例中,研究人員發現了一個典型的基于堆棧的緩沖區溢出,如圖6所示。

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

CVE-2019-5999:BLERequest中的緩沖區溢出(0x914C)

PTP命令名稱:BLERequest

PTP命令操作碼:0x914C

看起來藍牙命令比其他命令更容易受到攻擊,這可能意味著開發團隊缺乏經驗。這一次研究人員發現了一個基于堆的緩沖區溢出,如圖7所示。

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

現在總共有3個漏洞:

· 全局結構上的緩沖區溢出;

· 緩沖區溢出堆棧;

· 堆上的緩沖區溢出。

如前所述,研究人員將嘗試利用基于堆棧的漏洞,這可能是最容易的。

代碼執行

研究人員首先使用USB線把相機和電腦連接起來,研究人員之前使用的USB接口與佳能的“EOS實用程序”軟件,似乎很自然地試圖利用USB傳輸層。在搜索PTP Python庫時,研究人員發現了ptpy。

在編寫代碼執行漏洞之前,研究人員先從一個小的概念驗證(PoC)開始,它將觸發研究人員發現的每個漏洞。圖8顯示了相機如何崩潰,供應商將其描述為“Err 70”。

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

現在,是時候開始真正的漏洞利用了。

漏洞利用

研究人員的計劃是使用Sleep()函數作為斷點,并測試在給定的秒數之后是否可以看到設備崩潰。這將確認他們接管了執行流程并觸發了對Sleep()的調用。大多數情況下,易受攻擊的任務只是在沒有觸發崩潰的情況下停止的,從而導致相機停止工作。目前研究人員無法區分停止工作、睡眠和運行掛起的情況,這使得研究人員的斷點策略毫無意義。

研究人員決定改變策略,通過尋找一個總是觸發Err 70的代碼地址。從現在開始,研究人員的斷點將是對該地址的調用,崩潰意味著研究人員擊中了斷點。

研究人員逐漸構建研究人員的漏洞,直到最終研究人員能夠執行研究人員自己的程序集片段——現在研究人員有了代碼執行。

惡意加載

研究人員通常使用基本的TCP加載器進行Scout,這需要網絡連接。雖然研究人員可以使用一個文件加載器來從SD卡加載Scout,但是稍后需要為Scout提供相同的網絡連接,所以研究人員最好現在就解決這個問題。

查看了不同設置后,研究人員意識到WiFi不能在USB連接的時候使用,很可能是因為它們都是PTP層的,不支持同時使用,所以研究人員決定只使用WiFi。

在研究人員再次查看了PTP命令處理程序的列表,這次更徹底地查看了每個命令處理程序。令研究人員大為欣慰的是,研究人員發現了更多的漏洞。

CVE-2019-6000:SendHostInfo中的緩沖區溢出(0x91E4)

PTP命令名稱:SendHostInfo

PTP命令操作碼:0x91E4

查看易受攻擊的代碼,如圖9所示,研究人員第一眼就很明顯地忽略了這個漏洞。

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

這一次,開發人員雖然記得要檢查消息的預期固定大小為100字節。然而,他們卻忘記了一些至關重要的事情。非法數據包只會被記錄,但不會被刪除。在快速檢查了研究人員的WiFi測試環境后他們確實看到了崩潰。

雖然這個漏洞正是研究人員一直在尋找的,但是他們決定繼續尋找更多的漏洞,特別是這種漏洞很可能會在多個命令中找到。

CVE-2019-6001:SetAdapterBatteryReport中的緩沖區溢出(0x91FD) 

PTP命令名稱:SendAdapterBatteryReport

PTP命令操作碼:0x91FD

研究人員不僅發現了另一個具有相同代碼模式的漏洞,而且這是列表中的最后一個命令,為研究人員提供了很好的結果。圖10顯示了易受攻擊的PTP處理程序的簡化版本。

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

在本例中,由于堆棧緩沖區相當小,因此研究人員將繼續使用以前的漏洞。

注意:在WiFi設置中測試這個漏洞時,研究人員發現它在函數返回之前也崩潰了。所以,研究人員只能通過USB連接來利用它。

第二次嘗試尋找惡意載荷

既然發現了漏洞,研究人員就可以執行攻擊,并成功地在相機上加載了Scout。現在,研究人員有了一個網絡調試器,可以開始轉儲內存地址,以便在逆向工程過程中幫助執行攻擊。

但是,研究人員的目標是展示使用圖片傳輸協議從USB和WiFi中劫持相機。雖然這兩個傳輸層之間有一些細微的差異,但最終研究人員使用的漏洞在兩種情況下都有效,從而證明了他們的觀點。然而,接管相機只是研究人員發起攻擊的第一步。現在是時候創建一些勒索軟件了。

加密

任何勒索軟件都需要加密功能來加密存儲在設備上的文件,如上所述,固件更新過程提到了AES加密,這看起來是個一次性完成所有任務的好機會。

這個逆向工程任務比研究人員想象的要簡單得多,因為研究人員不僅找到了AES函數,還找到了固件更新過程的驗證和解密密鑰。因為AES是對稱密碼,所以同樣的密鑰也可以用于加密惡意固件更新,然后對其簽名,使其通過驗證檢查。

研究人員使用了Scout實現了所有復雜的密碼算法,并實現了一條模擬固件更新過程的新指令,然后最終返回算法計算的密碼簽名。使用此指令,研究人員可以知道固件更新文件中每個部分的正確簽名是什么,從而有效地獲取相機本身的簽名原語。

在圖11中,你可以看到研究人員的自定義ROM轉儲程序,它是通過修補Magic Lantern的ROM轉儲程序創建的。

數碼單反相機竟然也可以被黑客實施勒索攻擊!不信嗎!請拿出你的佳能相機過過目!

CVE-2019-5995:惡意固件在后臺悄悄進行更新

這是有一個用于遠程固件更新的PTP命令,它不需要任何用戶交互。這意味著即使所有的漏洞都已修復,攻擊者仍然可以使用惡意固件更新文件來感染相機。

勒索目標的實現

在完成固件更新過程之后,就可以實現勒索目標了。勒索軟件使用與固件更新過程相同的加密函數,并在固件中調用相同的AES函數。加密SD卡上的所有文件后,勒索軟件會向用戶顯示勒索消息。

先設置一個流氓WiFi接入點可以很容易地實現,首先是嗅探網絡,然后偽造一個AP,使它的名稱與相機自動嘗試連接的名稱相同。一旦攻擊者與相機位于同一局域網內,就可以發起攻擊。

以下是佳能發布的官方安全建議鏈接:

日語版本的鏈接:https://global.canon/ja/support/security/d-camera.html

英語版本的鏈接:https://global.canon/en/support/security/d-camera.html

福彩3d跨度走势图300期带连线