近期,Trustwave的安全研究專家在Skype的Mac OS X(現在叫macOS)桌面端API中發現了可被利用的安全問題。這個API可以為本地程序或插件提供相應的功能接口,第三方應用可以通過這個桌面API來與Skype的服務器進行通信。正如安全研究人員在Trustwave公告中所描述的,攻擊者可以利用Skype桌面API中的這個安全問題來繞過其身份驗證機制。惡意軟件可以使用客戶端名稱標識符“SkypeDashbd Wdgt Plugin”來將自己偽造成SkypeDashboard的Widget插件程序,并繞過其身份驗證機制直接與桌面API進行交互。
這是一個后門嗎?
安全研究專家認為,這個漏洞很有可能是開發商故意添加在Skype桌面API中的,而目的就是為了允許特定的應用程序在無需進行用戶交互的情況下訪問Skype桌面API。實際上,這種可能性也是非常大的。
當其他程序嘗試訪問桌面API的時候,系統會向用戶發出通知,并請求用戶同意操作。而此時,通過后門來通知桌面API的用戶其工作機制與正常的通知流程是不一樣的。如果使用這個后門,那么用戶將不會收到系統的任何通知,而這也就意味著用戶根本就沒有機會去拒絕訪問。這將允許任何應用程序在用戶毫不知情的情況下通過這個后門來訪問桌面API。
而且,Skype也不會對訪問桌面API的程序進行驗證,因為這些第三方程序會將自己偽裝成SkypeDashboard插件程序。這也就意味著,任何的第三方應用(包括惡意軟件)都可以利用Skype桌面API來實施非法操作。
一個未使用的后門?
可奇怪的是,SkypeDashboard Widget小工具從未使用過這個后門。所以,這個后門也有可能是開發人員的編碼失誤所造成的。如果這是一次編碼事故,那么這個問題很可能已經存在了至少五年以上了。因為研究人員的通過分析和調查之后發現,“SkypeDashbd Wdgt Plugin”這個字符串早在五年前的Skype Mac OS X版本中就已經存在了。
你可以訪問什么?
在之前的版本中,應用程序可以使用這個桌面API來訪問Skype所提供的全部服務。這些服務包括但不僅限于:消息接收通知(以及消息內容)、修改信息、創建聊天會話、記錄Skype的語音通話信息、以及檢索用戶的通訊錄。在之后的版本中,桌面API訪問消息內容的這個功能已經被去除了,但是其他的功能仍然保留了下來。
這個后門的使用有什么難度嗎?
訪問這個后門其實非常的簡單,攻擊者甚至只需要修改一行代碼就可以使用這個后門來進行惡意操作了。Skype提供了大量的演示實例來指引用戶如何使用桌面API,而攻擊者只需要將NSString方法“clientApplicationName”的值設置為“SkypeDashbd Wdgt Plugin”就可以了。
技術分析
實際上,發現這個后門的過程相對來說也并不困難。首先,我們可以調用GNU工具“strings”,具體如下圖所示:
接下來,使用HopperDisassembler來對Skype應用程序進行反匯編,并獲取到相應的函數代碼,結果如下圖所示:
我們可以從上圖中看到,如果“applicationName”的值等于“SkypeDashbd Wdgt Plugin”的話,那么“SkypeAPIController”對象的成員函數“authLevelForApplication:(NSString*)applicationName”其返回值將會是“1”。
在微軟公司正式收購Skype之前,Skype使用的是另一種代碼混淆/加密技術,當程序開始運行時,代碼會自動進行動態解壓。這種技術可以防止他人對軟件進行逆向工程分析,并提取出有價值的數據。但是,攻擊者可以通過使用調試工具并導出包含有可執行代碼的內存頁來繞過這些代碼保護技術。