LoJax Rootkit, UEFI로 침투하는 악성코드

탐지 및 제거가 어려운 루트킷

예전에 쓰이던 구형 바이오스를 Legacy BIOS라고 하고, 확장성과 보안성을 개선한 새로운 바이오스를 UEFI(Unified Extensible Firmware Interface)라고 한다. 메인보드의 플래시 메모리에 존재하는 펌웨어이다. 그런데 UEFI를 감염시켜 탐지와 삭제를 어렵게 하는 악성코드가 발견됐다.

바이오스 혹은 펌웨어는 하드웨어와 운영체제의 중간에 위치하여 이를 연결시켜 주는 역할을 하므로, 운영체제보다 한 단계 더 시스템의 심층부에 해당한다. 따라서 UEFI에 있는 악성코드는 운영체제 위에서 구동되는 일반적인 보안 소프트웨어에서 탐지와 제거가 어렵다. 또한 부팅 시 운영체제보다 먼저 실행되기 때문에, 하드디스크를 포맷하거나 운영체제를 재설치해도 심지어 아예 새 디스크로 교체를 해도 다시 감염되게 된다.

고도의 루트킷

ESET에서 발견하여 로잭스(LoJax)라고 이름 붙였는데, 실전에서 활용된 최초의 UEFI 루트킷이다. 물론 이전에도 유사한 기술을 CIA나 Hacking Team(정부 기관을 상대로 고도의 스파이웨어를 판매하는 회사)에서 일부 기능에 활용한 적은 있다.

루트킷은 시스템의 깊은 곳에 숨어 탐지와 제거가 어려운 악성코드를 통칭하여 부르는 말이다. 이에 대응하여 보안회사들은 특수한 툴을 사용한다. 예를 들어 Symantec은 Norton Power Eraser라는 별도의 툴을 제공하고, Windows Defender는 Windows Defender Offline이라는 모듈을 통합하여 제공한다. 매달 정기 업데이트 때 실행되는 악성 소프트웨어 제거도구도 이런 역할을 한다. 로잭스는 일반적인 루트킷보다 한 수 위의 것이라고 보면 되겠다.

로잭스 공격은 고도의 공격 기법이고 흔히 접할 수 있는 것이 아니다. ESET 연구팀은 러시아의 국가 차원 지원을 받는 해커단 Sednit의 소행으로 봤다. 이들은 APT28, Fancy Bear, Strontium, Sofacy 등 무수한 이름으로 불린다.

로잭스는 LoJack라는 합법적인 소프트웨어를 악의적으로 개조한 것이다. LoJack는 도난방지 솔류션인데, 펌웨어에 설치되어, 기기가 도난당하여 초기화되거나 디스크가 교체되어도 살아남아서 기기의 위치를 알려주는 역할을 한다.

펌웨어가 있는 SPI Flash memory에 쓰기 작업은 아무 프로그램이나 할 수 있는 게 아니다. 로잭스는 RWEverything이라는 프로그램을 사용했다. 또한 UEFI는 쓰기 방지 기능으로 보호되는데, 이것은 잘못된 설정이나 CVE-2014-8273 취약점을 이용해 돌파했다.

보안 부팅(Secure Boot)으로 방어

로잭스를 비롯한 루트킷의 침투를 피하는 데는 보안부팅(Secure Boot) 기능이 도움이 된다. 이는 UEFI의 기능으로 기본적으로 활성화돼 있다. 부팅 시 펌웨어에 의해 로드되는 모든 요소들이 유효한 디지털 인증서로 서명돼 있는지 확인하는 것이다.

앞에서 UEFI의 쓰기 방지를 돌파하는 데에 취약점이 이용됐다고 했다. 여기서 알 수 있듯이 펌웨어를 최신 상태로 유지하는 것이 보안에 큰 도움이 된다.

이미 UEFI가 악성코드에 감염된 경우라면 펌웨어를 정상 버전으로 덮어쓰기하는 수 밖에 없다. 시스템이나 메인보드 제조사가 제공하는 펌웨어 업데이트 유틸리티를 사용하면 된다. 자신 없으면 AS 센터를 이용하는 게 좋다.


참고 자료
  1. Cybersecurity Researchers Spotted First-Ever UEFI Rootkit in the Wild
  2. APT28 Uses LoJax, First UEFI Rootkit Seen in the Wild 

댓글

이 블로그의 인기 게시물

마이크로소프트 4K 무선 디스플레이 어댑터(MS WDA 3) 리뷰

와이파이(Wi-Fi) 보안 설정

엑셀 필터 상태에서 복사와 잘라내기