BitLocker Windows內建現代裝置級資料加密保護功能,BitLocker與Windows核心深度整合。有大量的企業和個人使用BitLocker加密自己關鍵資料,以防止資料洩密。BitLocker作為一種安全手段其本身也常常是安全測試和滲透的目標之一,也暴露過一些問題.
最近安全研究者Jonas Lykkegård發現了BitLocker的鎖屏繞過高危漏洞CVE-2020-1398,可以繞過BitLocker的密碼安全認證過程,影響的系統包括Windows 10,windows server等多個windows作業系統。
概述透過6個簡單的步驟繞過BitLocker。對給定未知密碼和受BitLocker保護的硬碟驅動器Windows 10系統,可以透過執行以下操作來新增管理員帳戶:
登入螢幕上,選擇"我忘記了密碼"。
繞過鎖定並啟用可移動驅動器的自動播放。
插入帶有特別製作的.exe和連線資料夾的USB記憶棒。
執行可執行檔案。
解除安裝驅動器,然後再放回去,進入主螢幕。
啟動講述人,將執行之前植入的DLL有效負載。
就會,自動添加了一個名為hax的使用者帳戶,其密碼為"hax",該使用者具有Administrators成員身份。要使用要登入的帳戶更新列表,請單擊我忘記密碼,然後返回主螢幕。
鎖定螢幕繞過首先,選擇"我忘記了密碼/PIN"。此選項將啟動一個附加會話,可根據需要建立/刪除一個帳戶。使用者個人資料服務將其稱為預設帳戶。它的第一個可用名稱為defaultuser1,defaultuser100000,defaultuser100001等。
要繞過鎖定,必須使用講述人(Narrato),因為該上下文中設法啟動某些內容,也無法看到它,如果使用講述人,將能夠對其進行導航。
如果我們連續快速地按了5次,則會出現一個開啟設定應用程式的連結,該連結實際上可用。但是無法看到啟動的設定應用程式。對重點關注已啟動的應用程式,單擊連結,然後單擊可以在正確的時間顯示啟動的應用程式的位置。
當主頁具有焦點時,按住Caps Lock並按Enter。使用CapsLock +向右箭頭導航到裝置,然後在焦點對準CapsLock + Enter時輸入。
導航至自動播放,單擊CapsLock + Enter,然後選擇"開啟資料夾以檢視檔案(檔案資源管理器)"。
然後,插入準備好的USB驅動器,等待幾秒鐘,講述人將宣佈驅動器已開啟,並且視窗已聚焦。
選擇檔案Exploit.exe並使用CapsLock + Enter執行。這樣無需使用任何密碼,可以實現任意程式碼執,。但是,受限制為預設配置檔案。
特權提升安裝USB記憶棒後,BitLocker將在"系統卷資訊"中建立一個名為ClientRecoveryPasswordRotation的目錄,並將許可權設定為:
NT AUTHORITY\Authenticated Users:(F)NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
要重定向建立操作,需要在NT名稱空間中使用符號連結,利用它可以控制檔名,並且連結的存在並不會導致報錯退出。
使用USB驅動器並以\System Volume Information為\RPC Control掛載點。然後做出一個\RPC Control\ClientRecoveryPasswordRotation符號連結指向\??\C:\windows\system32\Narrator.exe.local。
如果重新插入USB記憶棒,C:\windows\system32\Narrator.exe.local則會建立具有允許建立子目錄的許可權的資料夾:
amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.657_none_e6c5b579130e3898
在該子目錄中,刪除了一個名為comctl32.dll的有效負載DLL。下次觸發講述人時,它將載入DLL。順便說一句,選擇了講述人,因為它可以實現從登入螢幕作為系統服務觸發,並且不會自動載入,因此,如果出現任何問題,仍然還可以啟動。
結合起來ClientRecoveryPasswordRotation利用需要的符號連結到\RPC Control。USB驅動器上的可執行檔案用兩次呼叫來建立連結DefineDosDevice,從而讓該連結成為永久連結,以便它們可以在需要時登出/登入。
然後啟動一個迴圈,其中可執行檔案將執行以下操作:
嘗試建立子目錄。
將有效負載comctl32.dll植入其中。
很容易看到迴圈何時執行,因為講述人將移動其焦點框並每秒說一次"訪問被拒絕"。現在,可以使用在中建立的連結RPC Control。拔下USB記憶棒,然後重新插入。可寫目錄將在中建立System32;在下一個迴圈迭代中,將會植入有效負載,並退出exploit.exe。若要測試漏洞利用程式是否成功,請關閉講述人,然後嘗試重新啟動它。
如果講述人不起作用,那是因為DLL已植入,並且講述人執行了該DLL,但是由於它以defaultuser1啟動,因此無法新增帳戶。植入有效負載後,將需要單擊返回登入螢幕並啟動講述人。會發出3聲嗶嗶聲,並顯示一個訊息框,說明已載入DLL。帳戶已建立,但是並沒有顯示在列表中。
按"我忘記了密碼",然後單擊返回以更新列表。
應該會出現一個名為hax的新帳戶,密碼為hax。
製作利用的USB按照以下步驟設定USB記憶棒:
C:\Users\jonas>format D: /fs:ntfs /qInsert new disk for drive D:Press ENTER when ready...-----File System: NTFS.Quick Formatting 30.0 GBVolume label (32 characters, ENTER for none)?Creating file system structures.Format complete.30.0 GB total disk space.30.0 GB are available.
接著,需要將admin提升為delete System Volume Information。
C:\Users\jonas>d:D:\>takeown /F "System Volume Information"
結果:
SUCCESS: The file (or folder): "D:\System Volume Information"
然後
D:\>icacls "System Volume Information" /grant Everyone:(F)Processed file: System Volume InformationSuccessfully processed 1 files; Failed processing 0 filesD:\>rmdir /s /q "System Volume Information"
使用James Forshaw的工具(附帶)建立安裝點。
D:\>createmountpoint "System Volume Information" "\RPC Control"
然後將附件的exploit.exe複製
D:\>copy c:\Users\jonas\source\repos\exploitKit\x64\Release\exploit.exe .1 file(s) copied.
總結:
爆鎖屏繞過和許可權提升漏洞CVE-2020-1398,被評定為一個嚴重漏洞,微軟已經提供了了,對應的升級補丁,請使用BitLocker功能的使用者及時修補。