成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用第三方應用的各類代碼注入技術竊取鑰匙串

安全 黑客攻防
在macOS上存儲密鑰是一個巨大的挑戰,可以通過多種不安全的方式來完成。

在macOS上存儲密鑰是一個巨大的挑戰,可以通過多種不安全的方式來完成。我在漏洞賞金評估期間測試了許多Mac應用程序,并觀察到開發人員傾向于將密鑰放在偏好甚至隱藏的平面文件中。這種方法的問題在于,以標準權限運行的所有非沙盒應用程序都可以訪問密鑰數據。平面文件(Flat-File),Flat File是一種包含沒有相對關系結構的記錄的文件。這個類型通常用來描述文字處理、其他結構字符或標記被移除了的文本。

在使用上,有一些模糊點,如像換行標記是否可以包含于“Flat File(flat file)”中。在任何事件中,許多用戶把保存成“純文本(text only)”類型的Microsoft Word文檔叫做“Flat File(flat file)”。最終文件包含記錄(一定長度的文本的行數)但沒有信息,例如,用多長的行來定義標題或者一個程序用多大的長度來用一個內容表對該文檔進行格式化。

例如,macOS上的Signal在〜/ Library / Application Support / Signal / config.json中存儲了用于加密所有消息數據庫的密鑰。

macOS鑰匙串

根據蘋果的說法,鑰匙串是存儲例如密碼和加密密鑰這樣的小秘鑰的最好地方,鑰匙串是一種非常強大的機制,允許開發人員定義訪問控制列表(ACL)來限制對條目的訪問。應用程序可以通過密鑰組權限進行簽名,以便訪問其他應用程序之間共享的秘鑰。以下Objective-C代碼將在鑰匙串中保存密鑰值:

并且在執行后,你應該看到條目已成功被添加:

第一種竊取技術

第一種技術是驗證應用程序是否已使用“Hardened Runtime”或“Library Validation”標志進行了簽名,鑰匙串不能檢測到代碼注入。因此,只需使用以下命令:

如果標記為0x0,并且沒有__RESTRICT Mach-O段(這個段非常罕見),則只需將惡意的dylib注入到應用程序的主要可執行文件中。創建具有以下內容的exploit.m文件:

編譯:

并注入:

第二種竊取技術

如果可執行文件已使用Hardened Runtime簽名怎么辦?這個繞過技術類似于我在XPC開發系列中向你展示的內容。抓取已分析的二進制文件的舊版本,該版本在沒有強化運行時的情況下簽名,并將dylib注入其中。鑰匙串不會驗證二進制文件的版本,而是會給你展示秘鑰。

針對開發人員的建議修復程序,創建“鑰匙串訪問組”并將秘鑰移到那里。由于二進制文件的舊版本無法使用該鑰匙串組權限進行簽名,因此無法獲得該秘鑰,詳情請點此

第三種竊取技術

切記如果設置了“Hardened Runtime”,則com.apple.security.cs.disable-library-validation將允許你注入惡意動態庫。

第四種竊取技術

正如Jeff Johnson在他的文章中所證明的那樣,TCC只是從表面上檢查應用程序的代碼簽名。鑰匙串中也存在相同的問題,即使整個捆綁包的簽名無效,鑰匙串也只會驗證主要的可執行文件是否未被篡改。讓我們以設備上安裝的Electron應用程序(Microsoft Teams,Signal,Visual Studio Code,Slack,Discord等)之一為例,事實證明Electron應用程序無法安全地存儲你的秘鑰。Electron是一個創建原生應用程序的框架,基于Node.js和Chromium實現了通過JavaScript, HTML 和 CSS 等 Web 技術構建跨平臺應用程序的能力。

其中,Electron還封裝了一些功能,包括自動更新、原生的菜單和通知、崩潰報告、調試和性能分析等。

即使你使用Hardened Runtime簽署了Electron,惡意應用程序也可能會更改包含實際代碼的JavaScript文件。讓我們看一下Github Desktop.app,它將用戶的會話秘鑰存儲在鑰匙串中:

并已有效簽名:

接下來,更改一個JS文件并驗證簽名:

可以看到簽名被破壞了,但是Github會正常啟動并加載保存在鑰匙串中的密鑰:

為了防止修改,Electron實現了一種稱為asar-integrity的機制。它計算一個SHA512哈希值并將其存儲在Info.plist文件中,問題在于它不會停止注射。如果主要的可執行文件尚未使用Hardened Runtime或Kill標志簽名,并且不包含受限制的權限,則只需修改asar文件,計算新的校驗和并更新Info.plist文件即可。如果設置了這些標志或權限,則始終可以使用ELECTRON_RUN_AS_NODE變量,并再次在主要的可執行上下文中執行代碼。因此,它可以竊取鑰匙串條目。

總結

鑰匙串中的安全密鑰存儲確實很難實現,因為對請求的可執行文件的代碼簽名檢查只是一些表面的功夫,因此有多種方法可以繞過訪問控制機制。

最大的問題是在Electron應用程序中,這些應用程序無法將密鑰安全地存儲在鑰匙串中。切記,任何將實際代碼存儲在主要的可執行文件之外的框架都可能被誘騙加載惡意代碼。

本文翻譯自:https://wojciechregula.blog/post/stealing-macos-apps-keychain-entries/

 

責任編輯:趙寧寧 來源: 嘶吼網
相關推薦

2015-11-05 16:44:37

第三方登陸android源碼

2010-11-01 17:49:30

2013-08-12 16:04:19

第三方移動應用

2011-07-03 18:59:27

流量

2010-08-02 23:20:24

2019-04-17 08:40:11

IPv6網絡采購商

2013-06-25 09:10:36

云數據安全云學習曲線云安全

2012-01-04 14:02:26

JsonCpp

2011-06-07 14:36:24

iOS5WWDC

2009-04-20 09:36:33

2012-08-03 09:44:11

iOS 6蘋果地圖

2017-12-11 15:53:56

2019-07-30 11:35:54

AndroidRetrofit

2014-07-23 08:55:42

iOSFMDB

2022-10-24 07:32:20

Mavenjar包代碼

2023-07-11 08:12:49

OkHttp工具網絡

2011-06-03 17:09:40

Android移動應用智能手機

2012-05-24 21:59:55

iOS

2013-11-12 09:52:38

2017-05-16 13:24:02

LinuxCentOS第三方倉庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产99久久 | 亚洲最大看片网站 | 色综合天天天天做夜夜夜夜做 | 国产一级成人 | 欧美毛片免费观看 | 天天干成人网 | 久久av在线播放 | 视频二区国产 | www.国产一区| 偷拍亚洲色图 | 亚洲精品一区二区三区蜜桃久 | 欧美aaa| 色毛片 | 97色在线视频 | 国产精品久久久久一区二区三区 | 91av视频在线观看 | www.久草.com| 亚洲精品乱码久久久久久久久久 | 国产99久久精品一区二区永久免费 | 美国一级片在线观看 | 精品一区二区三区四区 | 亚洲国产一区在线 | 成人av影院 | www成年人视频 | 日韩欧美精品在线 | 国产yw851.c免费观看网站 | www.激情.com | 亚洲视频中文字幕 | 国产日韩欧美在线 | 亚洲天堂精品一区 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 久久久久久亚洲精品 | 日韩视频高清 | 日韩视频在线观看中文字幕 | 在线观看国产 | 九九成人 | 欧美中文一区 | 一级黄a| 久久国产精品一区 | 91久久精品一区 | 国产91 在线播放 |