Windows 10 UAC 우회하는 TrickBot 악성코드

fodhelper.exe 악용

요즘 맹활약 중인 트로이 목마 트릭봇이 스텔스 기능을 추가했다. 자신이나 추가 악성코드가 설치될 때 UAC 경고가 나오지 않게 하여, 사용자 몰래 침투하는 기법이다.

UAC(User Account Control, 사용자 계정 컨트롤)은 프로그램 설치나 시스템에 중요한 변경을 가할 때 관리자의 확인을 거치는 것이다. 확인된 디지털 사인(code sign)이 있는 프로그램일 경우 파란 창으로, 아닐 경우 노란 창으로 표시된다.

Windows 사용자 계정의 유형에는 '관리자'와 '표준 사용자'가 있다. 관리자는 시스템의 모든 설정을 변경할 수 있는 권한을 갖고, 표준 사용자는 제한된 권한만을 갖는다.

그러나 관리자 계정으로 로그인한 경우라도 평상시에는 표준 권한만으로 작동한다. 프로그램을 설치하거나 설정을 변경하는 등 상승된 권한이 필요할 때만, UAC 확인을 거쳐 관리자 권한을 행사한다.

이때 관리자 계정에서는 확인만 하면 되지만, 표준 사용자 계정에서는 관리자의 암호를 입력해야 한다.

UAC는 이렇게 사용자에게 시스템에 변경이 생기는 것을 알리고, 허용할 지 여부를 묻는 보안 수단이다. 그러나 허점이 많다. 쉽게 우회할 수 있는 방법이 여럿 알려져 있다.

트릿봇은 fodhelper.exe라는 프로그램을 악용한다. 이는 윈도우에 기본 내장된 유틸리티이다. 윈도우에 의해 기본적으로 신뢰되어, UAC 확인 없이 자동으로 관리자 권한으로 실행된다(자동 권한 상승, auto-elevation).

fodhelper는 특정한 레지스트리 값을 읽어, 지정된 명령을 실행할 수 있다. fodhelper에 의해 실행된 코드 역시 관리자 권한을 물려받는다. 트릭봇은 그 레지스트리 값을 수정하여, fodhelper를 통해 UAC 확인 없이 악성코드를 실행한다.

원칙적으로 레지스트리를 수정하는 것 자체가 관리자 권한이 필요해서 UAC 알림을 촉발한다. 그러나 HKCU(HKEY Current User) 항목은 대부분 관리자 권한 없이 수정할 수 있다. 너무 잦은 알림으로 불편을 주지 않기 위한 기본 설정 때문이다. 이 문제는 UAC 수준을 최고 수준인 '항상 알림'으로 설정하면 피할 수 있다.

fodhelper를 이용한 UAC bypass는 2017년에 발표된 것이고, 그 이전에 같은 방법으로 이벤트 뷰어(eventvwr.exe)를 이용하는 exploit도 있었다. 이들 레지스트리를 조작하는 방법은 간단한 스크립트를 사용하는 fileless attack(파일 없는 공격)으로, 디스크에 파일을 저장하지 않고 메모리 상에서만 작동한다.

작업 스케줄러(Task Scheduler)도 UAC 우회에 악용될 수 있다(관1).

권한 상승 취약점

UAC bypass는 권한 상승 취약점의 일종으로 볼 수 있다. 이를 수행하려면 먼저 시스템에서 코드를 실행할 수 있는 교두보를 확보해야먄 한다. 원격 코드 실행 취약점을 악용하거나, 유용한 프로그램인 것처럼 사용자를 속여 가짜 앱을 설치하도록 유도해야 한다.

이런 사례는 우리 나라에도 있었다(관2).

UAC에 이런 취약점이 있지만, 마이크로소프트는 별다른 대응을 않고 있다. UAC를 그리 중요시하지 않는 것처럼 보이기도 한다. MS는 Windows Defender를 Windows 보안이라고 이름을 바꾸고, Windows 10의 모든 보안 기능을 이곳에 집중시키고 있다. 그러나 여기에 UAC는 없다.

이런 MS의 태도가 이해가 가기도 한다. UAC는 악성코드의 최초 설치를 막는 것이 임무다. 즉 시스템에 아예 상륙을 하지 못하게 하는 역할을 한다. 악성코드가 이미 상륙해서 교두보를 확보했다면 UAC는 더 이상 필요가 없다.

관리자 계정 사용하지 않기

UAC 우회 공격을 막기 위한 가장 좋은 방법은 관리자 계정을 사용하지 않는 것이라고 전문가들은 입을 모은다. 표준 사용자 계정으로 로그인해도, 필요할 때는 UAC를 통해 관리자 권한으로 실행할 수 있다. UAC 우회 뿐만 아니라, 다른 무수한 취약점들도 표준 사용자 계정에서는 제대로 작동하지 않는다고 한다.



계정 유형은 설정에서 변경할 수 있다. 자신을 관리자에서 표준 사용자로 강등시키려면, 먼저 관리자 계정을 하나 만들고, 그 계정으로 로그인해서 하면 된다.

그러나 실제 표준 사용자로 사용해 보면 불편한 점이 있다. 프로그램에 따라 제대로 작동하지 않는 것들이 있다. 표준 사용자 계정은 내 PC를 잠시 가족에게 빌려줄 때나 적합한 것 같다. 권한 상승 취약점들이 워낙 많기 때문에, 잠시 빌려주는 것도 믿을 수 있는 사람에 한정해야 한다.

내가 쓰는 증권 프로그램은 표준 계정에서는 로그인도 되지 않는다. 멀쩡히 있는 공인인증서를 찾지 못한다. 프로그램을 대충 훑어보니 Windows XP에 최적화된 고대 유물이다. 전에 쓰던 다른 증권사 프로그램들도 마찬가지다. 증권사들이 모바일 앱에만 신경쓰는 것 같다. 진짜 증권 거래 많이 하는 분들은 스마트폰으론 안하던데.

다음으론 UAC 수준을 높이는 것이 많이 추천된다. 기본값보다 한 단계 높여서 '항상 알림'으로 설정하라는 것이다. 이렇게 하면 모든 UAC bypass exploit 수법이 통하지 않는다. 설정은 작업 표시줄에서 "UAC"를 검색하면 나온다. 그러나 경고가 너무 많이 나오는 것이 단점이다.



Windows Defender의 변조 보호

악성코드들이 UAC를 우회해서 하는 중요한 작업 중 하나는 윈도우 디펜더를 무력화 시키는 것이었다. 레지스트리를 조작해서 윈도우 디펜더를 끄거나, 보안 옵션을 변경하고, 자신을 검사 제외 목록에 올려 탐지를 피하는 것이다.

그러나 지금은 윈도우 디펜더를 이런 식으로 막을 수는 없다. 변조 보호(tamper protection)가 켜지면, 레지스트리나 다른 프로그램으로 윈도우 디펜더의 설정을 변경할 수 없다. 오직 윈도우 디펜더의 인터페이스를 통해서만 가능하다. 이 옵션이 켜져 있는지 반드시 확인하자.



관련 자료
  1. 보안 앱을 못쓰게 만드는 Vonteera 악성코드
  2. 사행성 게임 이용자 터는 악성코드

참고 자료
  1. TrickBot Now Uses a Windows 10 UAC Bypass to Evade Detection
  2. Windows 10 UAC Bypass Uses "Apps & Features" Utility
  3. GootKit Malware Bypasses Windows Defender by Setting Path Exclusions

댓글

이 블로그의 인기 게시물

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

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

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