基本信息
產品版本:Avira Phantom VPN
操作系統:Windows 10 v1709(x64)
漏洞信息:Avira VPN提權漏洞
漏洞概述
AviraPhantom VPN服務平臺在檢查更新時會進行大量的檢測,在更新過程中,VPN服務會將更新文件下載到“C:\Windows\Temp\”目錄,存儲的文件名為AviraVPNInstaller.exe。
接下來,程序會驗證該文件的簽名,如果版本號不符合更新條件(版本號低于當前版本),則會停止更新。如果條件符合,服務會以SYSTEM權限運行更新代碼。
但我們可以使用一個已簽名的有效Avira可執行文件來替換這個“AviraVPNInstaller.exe”,然后在“C:\Windows\Temp”中存放一個惡意DLL文件并最終實現提權(NT AUTHORITY\SYSTEM)。
漏洞分析
當Avira VPN服務(Avira.VPNService.exe, 版本號為2.15.2.28160)開始運行后,它會檢測是否有可用更新:
應用程序服務會從“C:\Windows\Temp”目錄中獲取下載下來的更新文件:
可能大家已經發現了,任何一名通過身份驗證的用戶都可以向“C:\Windows\Temp”目錄寫入文件(但無法讀取文件)。當該目錄中已經存在有更新文件(C:\Windows\Temp\AviraVPNInstaller.exe)時,VPN服務會檢查更新文件的“FileVersion”屬性,以此來判斷這個更新文件是否已經在這臺設備上安裝過了:
如果文件版本表明該更新沒有安裝過,服務將會對文件的有效性以及文件簽名進行驗證:
如果文件確實有效,并且由Avira簽名,那么VPN服務將會開啟更新功能。因為這一切都是低權限用戶可以做到的,所以攻擊者就有可能劫持軟件更新包,并進行數據篡改。
為了劫持“AviraVPNInstaller.exe”,攻擊場景必須滿足下列條件:
1.“AviraVPNInstaller.exe”必須由Avira簽名;
2.“AviraVPNInstaller.exe”的簽名必須有效,對文件進行的任何修改都將導致簽名失效;
3.“AviraVPNInstaller.exe”的版本號驗證結果必須是“該更新未在主機上安裝過”。
這也就意味著,我們需要想辦法利用Avira的已簽名文件,并且版本號要高于當前產品。
研究半天之后,我們發現了“ToastNotifier.exe”,它正好符合我們的要求:
注:ToastNotifier.exe來自于Avira反病毒產品套件中。
接下來,我們要做的就是把“ToastNotifier.exe”拷貝到“C:\Windows\Temp\AviraVPNInstaller.exe”。因為一切條件都滿足,當服務啟動后VPN服務會以SYSTEM權限運行這個可執行文件,這一步可以通過重啟或以管理員權限運行下列命令來完成(PowerShell):
Get-ServiceAviraPhantomVPN | Stop-Service
Get-ServiceAviraPhantomVPN | Start-Service
執行之后,“ToastNotifier.exe”將會嘗試加載“C:\Windows\temp”目錄中的惡意DLL文件:
為了實現SYSTEM提權,我們要做的就是提供上面這些DLL文件。這里,我們使用“cryptnet.dll”(包含了我們的惡意代碼),它可以幫助我們讓VPN服務以SYSTEM權限啟動“AviraVPNInstaller.exe”代碼,然后以SYSTEM權限加載“cryptnet.dll”,最終實現低權限用戶提權為SYSTEM權限。
責任編輯:韓希宇
免責聲明:
中國電子銀行網發布的專欄、投稿以及征文相關文章,其文字、圖片、視頻均來源于作者投稿或轉載自相關作品方;如涉及未經許可使用作品的問題,請您優先聯系我們(聯系郵箱:cebnet@cfca.com.cn,電話:400-880-9888),我們會第一時間核實,謝謝配合。