비실행형 파일의 악성여부 검사시스템 및 비실행 파일 악성 검사 방법

APT 대응 전략과 해법 2부

시장조사기관 가트너(Gartner)에 따르면 APT 대응을 위해서는 기본적인 보안 체계는 물론, 고도화된 기술도 갖추고 있어야 한다. 더 나아가 차세대 보안 대응 방안인 포렌식, 샌드박스 기술 등이 요구된다고 주장한다. 이와 관련해 안랩은 APT 사전 대응 솔루션인 트러스와처(TrusWatcher)에서 샌드박스 기술을 구현하고 있다. 이 제품은 가트너가 강조한 차세대 보안 기술인 샌드박스 기반의 뛰어난 분석 능력뿐만 아니라 자체 개발한 동적 콘텐트 분석 기술인 DICA(Dynamic Intelligence Content Analysis)도 보유하고 있다. 더욱이 안랩은 가장 근본적인 대응 방안이며 실제적인 대응(치료, response)이 가능한 에이전트 기술을 트러스와처에 탑재하고 있다.


이 글에서는 샌드박스 기술을 비롯한 차세대 능동형 보안 기술과 결합해 더욱 강력해진 안랩 트러스와처의 APT 대응 능력을 소개하고자 한다.

샌드박스 개요

샌드박스(Sandboxing) 기술에 대해 설명하기 앞서, 악성코드 분석 방법에 대해서 알아보자.


악성코드 분석 방법은 크게 정적 분석과 동적 분석으로 구분한다. 동적 분석은 분석 대상 샘플을 실행시켜서 어떤 행위들이 나오는지를 분석하고, 의심스런 행위 및 명확한 악성 행위가 보이면 악성코드로 진단하는 방식이다. 이런 동적 분석 과정은 해커가 의도한 어떤 악의적인 행위를 통해서 분석 시스템 및 주변 네트워크에 치명적인 피해를 일으킬 수 있는 위험성이 존재한다. 예를 들어 시스템 파괴, 동일 네트워크 내의 타 시스템 공격, 네트워크 과부하 등이 발생할 수 있다.


반면에 정적 분석은 이와 같은 위험성을 최소화하기 위해 AV(Anti-Virus) 스캔으로 기존 알려진 악성코드(known malware)를 판정하거나 파일 헤더 및 바이너리 내 문자열을 분석하는 등의 방법이 이용된다. 좀 더 전문적으로는 디버거를 통한 API 호출 관계 분석 등의 방법으로 악성코드 여부를 판정한다.


샌드박스 기술은 동적 분석 기반의 악성코드 분석을 샌드박스 환경에서 수행하는 것이다. 여기서 샌드박스 환경은 가상 머신(virtual machine)처럼 가상의 제한된 OS 환경이며, 동적 분석의 결과로 발생할 수 있는 어떤 피해가 분석 시스템 외부로 전파되지 않는 제한된 환경이라는 것이 중요하다. 이런 샌드박스 기술은 공급 업체(Vendor)에 따라 VM(virtual machine), VM 에뮬레이터(emulator), 하이퍼바이저(hypervisor) 또는 샌드박스 등으로 다양하게 표현되고 있다.

왜 샌드박스 기술을 선호하는가?

 
이 질문에 답하기 전 왜 동적 분석기반의 악성코드 분석이 필요한가를 알아보자.


악성코드가 점차 진화하고 있어서 단순히 안티-바이러스 제품의 휴리스틱(heuristic) 기능을 통해서 알려지지 않은(unknown) 악성코드를 탐지하거나, PE 헤더나 샘플 내 문자열을 추출해서 악성을 판정하는 것은 점차 어려워지고 있다. 특히, 정적 분석을 어렵게 하기 위해서 악성코드 제작자들은 다양한 상용 패커(packer) 또는 커스터마이즈드 패커(customized packer)를 적극 활용하고 있다.


이처럼 단순히 정적 분석만으로는 실제 악성코드 판정이 어렵고, 더불어 양적으로도 분석 대상 샘플이 급증하는 추세이다. 따라서 전문 인력이 투입되어 복잡한 과정을 거쳐야 하는 정적 분석보다는 간단히 분석 대상 샘플을 실행해서 결과를 보고 판정을 내리는 동적 분석이 선호받고 있다.


동적 분석은 실제 컴퓨터에서 수행할 수도 있으나 포렌식과 같은 특별한 경우를 제외한 대부분의 경우에는 가상 머신과 같은 샌드박스 환경에서 진행한다. 물론 동적 분석을 실제 컴퓨터에서도 수행할 수 있지만 이는 비효율적이다. 예를 들어, 악성코드 분석가가 다양한 분석 환경(운영 체제별 등)에 대해서 각각의 물리적인 컴퓨터를 보유하고 매 분석이 완료될 때마다 2~3시간의 OS 재설치를 진행하는 것은 현실적으로 불가능하다.

왜 자체적인 전용 샌드박스 솔루션이 필요한가?


그렇다면 고객이 고려할 수 있는 샌드박스 기술은 어떤 것이 있을까?


첫 번째, 온라인 유/무료 샌드박스 서비스이다. 샌드박스 기술을 활용하고자 하는 기업이라면 간단하게 온라인 서비스로 분석 대상 파일을 업로드함으로써 동적 분석을 수행할 수 있다. 하지만, 무료 서비스는 물론 유료 서비스의 경우에도 분석 대상 파일을 외부에 공개해야 한다는 문제점이 존재한다. 해커들은 자신들이 몰래 감염시켜 놓은 악성코드들이 이런 공개된 서비스를 통해서 분석 의뢰 되는지 여부를 지속적으로 파악한다. 만약 분석 의뢰가 되었다는 것을 인지하면 트래킹을 어렵게 하기 위해서 즉시 감염 시스템을 포맷하거나 데이터를 삭제하는 등과 같은 극단적인 행동으로 치명적인 피해를 줄 수도 있다.

온라인 유/무료 샌드박스 서비스에는 GFI 샌드박스, 노먼 샌드박스 애널라이저(Norman Sandbox Analyzer), 조 샌드박스(Joe Sandbox) 등이 있다.

두 번째, 오픈소스 악성코드 동적 분석 툴이 있다. 현재 다양한 오픈소스 기반의 동적 분석 툴이 상용화되어 있다. 하지만 해당 악성코드 분석 툴도 역시 악성코드 제작자들이 쉽게 구축해서 사용하고 소스 코드를 분석함으로써 자신이 만든 악성코드가 탐지되는지 여부와 어떻게 탐지를 우회할 수 있는지를 판단하는 데 악용될 수 있다. 이러한 툴로는 제로와인(ZeroWine), 쿠쿠 샌드박스(Cuckoo Sandbox) 등이 있다.


이와 같이 온라인 샌드박스 서비스나 오픈소스 샌드박스 기반 동적 분석 툴의 경우에는 APT 위협에 노출되어 있는 고객에게는 해답이 될 수 없다. 이에 샌드박스 기술이 적용된 전용 보안 솔루션(in-house sandboxing)을 구축하는 것이 필요하다.

샌드박스 기반 동적 분석 기술

동적 분석은 분석 대상, 즉 샘플 파일을 통제된 분석 환경 내에서 실행하여 이때 발생하는 행위를 모니터링 및 분석하는 프로세스로 현재 가장 활발히 사용되는 분석 방식이다. 동적 분석은 가상 머신 형태의 제한된 분석 환경에서 진행되며 분석 환경 내에서 샘플 파일을 실행하는 즉시 네트워크 행위, 레지스트리 변조, 파일 시스템 변조 등 다양한 운영체제(OS)의 변화를 확인할 수 있다.


운영체제의 변화가 생기는 것을 감지하기 위해서 분석 환경에서는 사용자 모드(user mode)와 커널 모드(kernel mode)에서 API 함수(function)를 후킹(hooking)하는 방식과 특정 이벤트 발생 시, 시스템에서 자동으로 호출하는 이벤트 알림 루틴(notification routine)을 모니터링하는 방식 등이 이용된다.


 
[그림 1] 동적 분석 엔진 예

하이브리드 코드 분석 (Hybrid Code Analysis)

하이브리드 코드 분석은 정적 분석 및 동적 분석을 혼합한 방식으로 일명 동적 콘텐트 기반 분석(Dynamic content-based analysis)이라고 불린다.


악성코드가 하드디스크에 저장되면, 기계어 코드 레벨에서의 바이너리(binary) 형태로 존재하게 된다. 디어셈블 과정에서 악성코드 바이너리는 입력(input) 값으로 사용되고, 어셈블리 언어코드가 출력(output) 값으로 도출된다. 이러한 과정에서 응용 프로그램 동작 시 메모리 영역에서 일어나는 비정상적인 코드의 실행 여부를 판별해내는 것이 동적 콘텐트 기반 분석의 핵심이다.

[그림 2] 안랩 트러스와처의 동적 지능형 콘텐트 분석 기술


안랩 트러스와처의 동적 콘텐트 분석 기술인 DICA(Dynamic Intelligent Content Analysis)는 셸코드(shellcode)로 분기할 수 있는 모든 명령어의 주소마다 EIP(Extended Instruction Pointer, 다음에 실행할 명령어가 위치하는 메모리 주소)가 정상 메모리 영역에 속하는지 분석하는 서스피셔스 모드(suspicious mode) 및 실제 취약점에 이용된 적이 있는 명령어의 주소에서만 EIP를 분석하는 캔디데이트 모드(candidate mode)를 사용했다. 그러나 여전히 샘플당 몇 초(second)의 분석 시간이 소요되어 대량 악성코드 분석 환경에서 이슈가 될 소지가 있었다.


이에 안랩이 최근 개발한 DICA 2.x 버전에서는 점검 대상 애플리케이션 프로세스가 실행될 때, ‘실행’ 속성을 갖는 정상적인 메모리 주소 영역이 아닌 ‘비실행’ 속성을 갖는 메모리 주소 영역으로 이동 시에 디버그 이벤트가 발생하는 시점에만 EIP를 모니터링함으로써 거의 실시간으로 비실행형(non-PE) 악성코드를 분석할 수 있게 되었다.


또한 안랩 트러스와처에서 제공하는 동적 콘텐트 분석 기술은 DEP(Data Execution Prevention) 및 ASLR(Address Space Layout Randomization) 등과 같은 윈도우 자체 메모리 보호기능을 우회하는 ROP(Return-Oriented Programming) 기법을 사용하는 악성코드 탐지도 가능하다.

비실행형 파일의 악성여부 검사시스템 및 비실행 파일 악성 검사 방법

[그림 3] 안랩 트러스와처의 DICA 엔진에 탑재된 Anti-ROP 기술

ROP는 이미 존재하는 명령어를 순서대로 배열해서 해커가 필요로 하는 일련의 명령어 집합을 사용하는데 이것을 ROP 가젯(gadget)이라고 한다. DICA는 다음과 같은 방식을 통해서 악성 셸코드를 판단하게 된다.

① ROP 가젯이 발생 시킬 수 있는 모든 트리거를 모니터링
② ROP 방식을 이용해서 셸코드를 실행한다고 판단되는 메모리 영역 검사
③ 메모리 영역이 악성 셸코드라고 판단되면 악성으로 판단

이와 같은 DICA 내의 ROP 차단 기술을 통해서 최근 증가 추세에 있는 ROP 가젯을 이용한 비실행형 APT 악성코드 탐지는 물론이고 윈도우 운영체제에서 제공하는 자체 메모리 보호 기능을 우회하는 ROP 가젯을 이용한 익스플로이트까지 탐지가 가능하다. 또한 다양한 휴리스틱 진단 방법을 계층 별로 구성하여 ROP 가젯 실행을 근원적 차단하는 대응 기술로도 발전시킬 수 있다.

엔드포인트 보안 기술

앞서 설명한 샌드박스 기술은 전용 보안 장비가 네트워크 레벨의 트래픽에서 추출된 파일을 분석함으로써 지능형 타깃 위협 탐지가 가능한 방법이다. 하지만 ►다수의 정상 파일로 모듈화된 패키지 형태의 악성코드 ► 샌드박스와 같은 제한된 가상 분석 환경에서는 정상적인 동작이 되지 않는 악성코드 ► 흔히 사용되지 않은 애플리케이션 관련 파일 포맷이어서 추출 및 동적 분석이 불가능한 악성코드 ► USB 혹은 사내망을 통해 전파된 악성코드의 경우에는 네트워크 기반 보안 솔루션에서 분석하는데 분명히 한계가 있다.


이러한 네트워크 레벨 솔루션의 한계를 극복하기 위해서 엔드포인트 레벨에서의 다차원 분석이 점차 강조되고 있으며, 정확한 분석이 이뤄진다면 적극적인 차단이 가능하게 된다.


엔드포인트 레벨의 행위 분석은 크게 두 가지로 구분할 수 있다. 설치된 악성코드의 최종 목적이 무엇인지 즉, 악성코드로 판정할 수 있는 의심 행위에 대한 분석과 일차적으로 컴퓨터에 설치된 이후에 탐지되지 않고 지속적으로 활동하기 위한 은닉 활동에 대한 분석이 있다.


전자의 경우에는 앞서 동적 코드 분석 방식과 마찬가지로 파일 및 프로세스의 생성ㆍ수정ㆍ삭제 변화, 레지스트리 키/값의 변화 및 네트워크 연결 상태 변화 등에 대한 분석 외에도 이벤트 로그 내역에 대한 모니터링 등을 통해서 다음과 같은 주요 악성코드로 분류가 가능하다.

Downloader : 실행 시에 인터넷으로부터 다른 악성코드를 다운로드하는 역할을 수행한다.


Launcher(또는 loader): 자신 혹은 다른 악성코드를 즉시 실행하거나 미래에 은밀히 실행되도록 하는 역할을 수행한다. 

가장 보편적인 컨버트(covert) 런칭 기법은 프로세스 인젝션(process injection)이다.
 

Backdoor : 해커로 하여금 원격에서 감염된 컴퓨터로 접속할 수 있게 하는 통로를 제공한다. 

백도어 형태로 리버스 셸(reverse shell), RAT(Remote Administration Tool), 봇넷(botnet) 등이 있다.
 

Credential Stealer : 중요 인증 정보를 훔치는 역할을 수행하며, 키 스트로크(key stroke)를 로깅하는 방식 및 해시된 암호 파일 덤프 방식 등이 있다.


은닉 행위(Persistence)에 대한 주요 분석의 예는 다음과 같다.
 

레지스트리 분석 : 자동 시작과 관련된 레지스트리 키에 대한 분석이 필요하다.


트로이목마화된 시스템 파일 감지: DLL 등 시스템 파일을 감염시켜서 해당 파일이 로드될 경우에 악성코드를 실행할 수 있다. 시스템 파일의 해쉬 값이 변조되는 상태를 분석해야 한다.


이러한 엔드포인트 레벨의 행위 분석 과정에서 점차 강조되는 부분이 메모리 영역의 포렌식 분석이다. 즉, 다양한 커널 레벨 루트킷 기능의 악성코드는 엔드포인트 레벨의 행위 내역 자체를 조작할 수 있는데 실제 동작하는 애플리케이션 자체를 숨기거나, 해당 애플리케이션이 접근하는 파일 내역을 조작할 수 있으며 외부로의 네트워크 접속 내역도 숨길 수 있다. 이러한 메모리 포렌식을 위해서는 메모리 덤프 후에 사후 분석하는 방식과 실시간으로 메모리 영역을 분석하는 방식으로 기술이 발전하고 있다.


안랩 트러스와처의 경쟁 제품군들은 대부분 에이전트 없이 네트워크 레벨의 어플라이언스 분석 장비를 통해서 분석 후 네트워크 레벨 차단이라는 방식의 대응을 제공하고 있다. 하지만 이 과정에서 최초의 분석에 사용되는 악성코드는 이미 내부 네트워크로 다운로드되어 1차, 2차, 3차 피해를 유발할 가능성이 있다. 이처럼 네트워크 레벨 차단으로는 이미 다운로드된 악성코드에는 어떠한 조치도 할 수 없는 명확한 한계가 있다.


트러스와처는 제품 기획 초기부터 단순 네트워크 레벨 탐지를 넘어서 엔드포인트 레벨의 에이전트를 통한 적극적인 대응 기능을 강조해 왔다. 일부 경쟁 제품들은 초기에 에이전트 없는 제품이 유저 편의성 측면에서 우수하다고 강조했으나, 현재는 서드파트 에이전트 보안벤더와의 통합(integration) 형태의 제품 연계를 추진하거나 자체 에이전트 기술 확보를 추진하는 형태로 변화하고 있다.


트러스와처는 네트워크 레벨에서 탐지된 알려지지 않은(unknown) 악성코드에 대한 삭제 명령을 에이전트에 전달해서 단순 대응 기능은 물론이고 악성도가 확인되지 않은 실행 파일을 장비의 분석이 완료될 때까지 보류시키는 실행 보류(execution holding) 기능까지 제공하고 있다.

지금까지 언급한 바와 같이 안랩 트러스와처는 샌드박스 기술 기반의 동적 분석 기술, 비실행형 악성코드 탐지 기술인 DICA, 에이전트를 통한 엔드포인트 보안 기술까지 APT 대응을 위한 차세대 능동적인 보안 기술로 중무장하고 있다.@