[보안뉴스 문정후 기자] 보안 업체 세이프브리치(SafeBreach)는 지난 8월 블랙햇 2024(Black Hat USA 2024)와 데프콘32(DEF CON 32)에서 윈도 시스템을 겨냥한 새로운 공격 기법을 발견해 발표했었다. 윈도 버전을 낮춰 취약점을 되살려 공격하는 기법으로, 세이프브리치는 이 공격에 윈도다운데이트(Windows Downdate)라는 이름을 붙였었다. 그리고 오늘, 이 기법의 보다 상세한 내용이 공개됐다.
[이미지 = gettyimagesbank]
‘다운그레이드 공격’이라는 기법이 이번에 새롭게 발견된 건 아니다. 세이프브리치 측은 이것에 대해 “롤백 기능을 통해 최신 보안 패치가 적용된 소프트웨어를 이전 버전으로 되돌려 취약점을 노출시키고 악용할 수 있게 해 주는 공격”이라고 설명한다. “이런 공격을 성공적으로 수행할 경우 공격자는 피해자의 시스템에 무단으로 접근해 피해를 줄 수 있습니다.”
2023년에는 블랙로터스(BlackLotus)라는 해킹 그룹이 다운그레이드 공격을 성공시켜 피해자의 윈도를 취약점이 존재하던 이전 버전으로 되돌리기도 했었다. 당시 공격자들이 노출시키고자 했던 취약점은 CVE-2022-21894였다. “취약점을 노출시켰을 뿐만 아니라 시큐어부트(Secure Boot)라는 안전 장치를 우회시키기도 했습니다. 당시 업계는 큰 충격을 받았습니다. MS는 이 공격 이후 시큐어부트를 다운그레이드 공격으로부터 보호하는 방안을 마련하기도 했습니다.”
1차 연구
하지만 지난 8월 블랙햇에서 언급된 다운그레이드 공격에 대해서도 MS는 조치를 취했을까? 세이프블치는 이 점이 궁금했고, 그래서 윈도의 현재 보안 장치들에 탐지되지 않는 다운그레이드 공격 방법을 고안하려 했다. “그러다 보니 윈도 업데이트 프로세스가 가장 적절한 공격 경로로 보였습니다. 그래서 이 업데이트 프로세스를 세부적으로 분석했고, 그 결과 외부에서 업데이트 프로세스를 완전히 제어할 수 있다는 것을 알게 됐습니다. 그래서 모든 무결성 검사를 우회하여 다운그레이드를 실시하는 것에 성공했습니다.”
세이프브리치는 이렇게 개발한 방법을 통해 동적 링크 라이브러리(DLL), 드라이버, NT 커널 등 주요 OS 구성 요소를 다운그레이드 하는 데 성공했다. “다운그레이드를 했음에도 OS는 스스로를 최신 상태로 파악하고 있었습니다. 이후 업데이트 설치도 불가능하게 되었고, 복구와 스캔 도구로는 다운그레이드 공격을 탐지할 수 없었습니다. 기존 취약점 익스플로잇에 완벽히 노출된 것입니다.” 공격과 연구를 더 진행했을 때 세이프브리치 연구원들은 보안 커널, 하이퍼브이(Hyper-V) 하이퍼바이저 등까지도 성공적으로 다운그레이드 할 수 있었다고 한다.
결국 완전히 패치된 윈도 시스템에서 다시 한 번 과거 취약점을 부활시키는 데 성공한 것이고, 이를 통해 각종 익스플로잇 공격이 가능하도록 기반을 마련한 것이나 다름 없다. 보안의 기본 실천 사항 중 하나인 버전 최신화를 완전히 무력화시키는 공격에 성공한 것이다. 세이프브리치는 이 실험 결과를 MS에 별도로 알렸고, MS는 보안 업데이트를 통해 위험 완화 대책을 발표했다.
하지만 여기에는 함정이 하나 있었다. “이 연구와 관련해서 CVE 번호가 지정된 취약점은 두 개입니다. CVE-2024-21302와 CVE-2024-38202입니다. 전자의 경우 MS가 보안 위험에 해당된다고 판단해서 패치했으나 후자는 보안상의 위험이 아니라고 판단해 패치하지 않았습니다.” 이 “보안 위협이라고 판단되지 않는다”는 MS 측의 반응이 세이프브리치 연구원들의 다음 연구 과제가 되었다.
2차 연구
“패치가 되지 않은 취약점인 CVE-2024-38202는, MS가 보기에 취약점이 아니라고 했습니다. 하지만 저희가 보기에 이는 새로운 유형의 취약점입니다. ‘잘못된 파일 불변성(False File Immutability, FFI)’이라고 할 수 있는데, 파일의 불변성에 대한 잘못된 가정에 기인합니다. 파일 쓰기 접근이 차단되면 파일이 불변한다고 보는 오해에서 비롯된다고 할 수 있습니다. 하지만 특정 조치를 취해 파일을 메모리에서부터 접근할 수 있고, 그러면서 파일을 읽고 수정하는 게 가능해집니다. 즉 파일이 불변한다는 신뢰를 근본에서부터 파괴할 수 있다는 겁니다.”
이렇게 파일 읽기의 조건이 겹치면, 검사 시간과 사용 시간 간 불일치(TOCTOU)가 발생한다. 그러므로 두 조건 사이에 경쟁 상태가 유발되는데, CVE-2024-38202 취약점의 경우 보안 카탈로그 내에서 이 경쟁 상태가 발생한다. “경쟁 상태에서 공격자는 검증된 보안 카탈로그를, 또 다른(악성) 카탈로그로 대체할 수 있게 됩니다. 결과적으로 시스템이 카탈로그를 검사할 때 서명되지 않은 드라이버의 인증 코드가 유효하다고 인식되는 겁니다. 그러면서 엉뚱한 드라이버가 로드됩니다. 악성 드라이버를 로드시킬 때 어떤 일이 일어나는지는 과거 숱한 공격 사례로 입증된 바 있습니다.”
하지만 가상화 기술을 기반으로 한 보안 기능인 VBS가 발동된다면 카탈로그 검사가 안전하게 수행되며, 따라서 위에 언급된 것처럼 악성 카탈로그로 정상 카탈로그를 대체한다는 게 어려워진다. 그러면 공격자들 입장에서 이 VBS는 넘기 어려운 산일까? 이를 비활성화한다면 CVE-2024-38202를 통한 공격도 가능하지 않을까? 이것이 3차 연구의 주제가 됐다.
3차 연구
연구를 진행했을 때 VBS가 세 가지 모드로 활성화 된다는 것을 알아낼 수 있었다.
1) UEFI 잠금이 없는 VBS 모드
2) UEFI 잠금이 있는 VBS 모드
3) UEFI 잠금과 필수(Mandatory) 플래그가 있는 VBS 모드
이 각각의 모드들을 우회할 방법이 존재하는지 확인하는 게 3차 연구의 과제였다.
“먼저 UEFI 잠금이 없는 VBS 모드의 경우, 가장 기본적인 설정이 바로 이것입니다. VBS에 추가적인 보호 기능을 탑재하지 않지요. 따라서 레지스트리 키를 수정함으로서 VBS를 비활성화하는 게 가능합니다. VBS가 수동으로 활성화 되었는지, 기본 상태로 남아있는지, 활성화 된 VBS 기능이 무엇인지 등에 따라 수정해야 할 레지스트리 키가 달라집니다. 하지만 일반적으로 VBS를 비활성화 하는 게 가능하다는 걸 알아냈습니다.”
이 경우 공격은 다음 순서로 진행됐다.
1) 레지스트리를 통해 VBS를 비활성화한다.
2) 중요 OS 요소를 패치되지 않은 버전으로 다운그레이드 한다.
3) 시스템을 재부팅한다.
4) CVE-2024-38202 취약점을 익스플로잇 한다.
“그 다음, UEFI 잠금이 있는 VBS 모드의 경우, 로컬 그룹 정책 편집기나 레지스트리를 통해 활성화 됩니다. UEFI 잠금 장치가 VBS 수정을 방지합니다. 이 모드를 활성화 하면, 레지스트리와 UEFI 변수가 일치할 때에만 레지스트리 변경이 가능하게 됩니다. 따라서 양쪽 모두를 수정해야만 레지스트리를 바꾸고 VBS를 비활성화 할 수 있습니다. 즉 레지스트리 조작으로 공격을 성공시킬 수는 없었지요. 하지만 UEFI 잠금 장치를 먼저 무력화시킨다면 VBS를 비활성화할 수 있다는 걸 알아냈습니다. 또한 VBS 파일을 유효하지 않은 파일로 대체하면 UEFI 잠금이 설정되어 있더라도 VBS가 로드되지 않았습니다.”
일반적으로 공격은 다음 순서로 진행됐다.
1) VBS 파일인 SecureKernel.exe를 무력화 한다.
2) 중요 OS 요소를 패치되지 않은 버전으로 다운그레이드 한다.
3) 시스템을 재부팅한다.
4) CVE-2024-38202 취약점을 익스플로잇 한다.
“UEFI 잠금은 물론 ‘필수’ 플래그까지 있는 VBS 모드의 경우, VBS 파일 중 하나가 손상된 경우 부팅까지 되지 않습니다. 이 ‘필수’ 플래그의 경우 VBS 정책과 관련된 UEFI 변수에 포함되어 있는데, 현재까지는 이 플래그를 우회하는 방법을 발견하지 못했습니다. 문제의 UEFI 변수를 제어할 수 없었고, ‘필수’ 설정을 새롭게 덮어써도 소용이 없었습니다. 따라서 현재로서는 이 플래그를 설정하는 게 가장 안전한 다운그레이드 공격 방어법이라고 생각됩니다. 다만 이는 수동으로 활성화시켜야 하며, 이것까지 활성화된 시스템은 많지 않을 것으로 보입니다.”
그러면서 연구원들은 UEFI 필수 플래그를 활성화시키는 방법을 다음과 같이 설명했다.
1) UEFI 잠금을 활성화 할 때 : reg add “HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard” /v “Locked” /t REG_DWORD /d 1 /f
2) ‘필수’ 플래그를 활성화 할 때 : reg add “HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard” /v “Mandatory” /t REG_DWORD /d 1 /f
3) 그 후 시스템 재부팅
이번 연구를 통해 연구원들은 “단순 취약점 익스플로잇 공격보다 OS 다운그레이드 공격이 훨씬 유연하다는 걸 알게 됐다”고 결론을 내린다. “보안 커널이 많은 면에서 개선됐지만, 커널 구성 요소를 다운그레이드하면 그 모든 노력들이 허사가 됩니다. 따라서 이런 다운그레이드 시도가 있는지, 강력한 엔드포인트 보안 솔루션과 모니터링 도구를 통해 꾸준히 파악하는 게 중요합니다. 사건이 이미 발생한 후에는 탐지가 오히려 더 힘들 수 있습니다.”
3줄 요약
1. 윈도를 다운그레이드 하여 취약점을 되살리는 공격 기법 존재.
2. 관련된 취약점이 두 개 있으나 MS는 하나만 패치.
3. UEFI 잠금 장치와 ┖필수┖ 플래그를 활성화시켜야만 안전해질 수 있음.
[국제부 문가용 기자(globoan@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>