2020-12-06 08:00 (일)
[김진국의 디지털포렌식-5] 악성코드 포렌식
상태바
[김진국의 디지털포렌식-5] 악성코드 포렌식
  • 길민권
  • 승인 2012.07.22 04:03
이 기사를 공유합니다

사고의 원인 찾으려면 체계적인 분석 방법이 필요
침해 사고의 대부분은 악성코드와 관련이 있다. 과거에는 하나의 시스템을 점령하는 것이 목적이었다면 최근의 공격은 봇넷 구성과 같이 점령한 이후에 지속적으로 사용이 가능케 하거나 APT 공격처럼 목적을 위해 장기간 동안 다수의 시스템을 감염시킨다. 이런 공격을 위해서 악성코드의 사용은 필수적이다. 그런 이유로 침해 사고의 초점은 대부분 악성코드를 찾는 것이다. 시스템에서 악성코드를 찾는 방법은 분석가의 경험이나 방법론에 따라 서로 다를 수 있다. 윈도우 시스템을 대상으로 악성코드를 찾는 방법을 한번 살펴보자.
 
먼저, 시스템의 사용 흔적을 토대로 악성코드를 찾을 수 있다. 파일시스템, 레지스트리, 이벤트 로그, 프리패치 등 운영체제의 다양한 사용 흔적을 분석하면 악의적이거나 비정상적인 행위를 발견할 수 있다. 이렇게 발견된 흔적을 기준으로 다시 타임라인 분석과 같은 정밀 분석을 수행하면 행위의 주체인 의심 파일을 발견해 낼 수 있다.
 
시스템 사용 흔적을 토대로 의심 파일을 발견하는 방법은 비교적 짧은 시간 내에 마칠 수 있다. 하지만 이 방법은 많은 경험을 가진 포렌식 분석가에게는 가능한 방법이지만, 능숙하지 않은 포렌식 분석가에게는 적합하지 않은 방법이다. 게다가 경험이 많은 분석가들도 의심 파일을 발견하는 순간, 의심 파일의 범주에 갇히게 되어 다른 흔적을 객관적으로 분석하지 못하게 되고, 결국 정작 중요한 파일을 놓치게 되는 경우도 종종 발생한다.
 
이런 문제점을 해결하기 위해서는 체계적인 분석 방법이 필요하다. 정형화된 방법론은 자칫 귀찮은 일이기 때문에 등한시 하는 경우가 많지만 최근의 안티포렌식 기법으로 무장한 공격을 경험치로만 상대하기에는 무리가 있다.

다음은 필자가 악성 파일을 찾는 방법을 간단히 그림으로 표현한 것이다. 이 방법은 의심 PE 파일을 분류하는 방법으로 문서 파일은 대상으로 하지 않는다.

 
분류에서 가장 중요한 것은 정상 파일을 추려내는 것보다 악성 파일을 놓치지 않고 다음 단계로 이동시키는 것이다. 일반적으로 개인용 PC에서 PE 시그니처로 파일을 필터링하면 30만개 정도의 파일이 발견된다. 30만개 파일을 일일이 분석하는 것은 어렵기 때문에 체계적인 방법으로 분류하면 결국에는 상세 분석을 해야 할 파일을 10개 이하로 줄일 수 있다.
 
악성 파일 분류 방법은 크게 자동 분석, 반자동 분석, 수동 분석으로 나눌 수 있다. 자동 분석은 도구로 자동화할 수 있는 방법으로 분석 시스템의 성능이 분석 시간에 영향을 미친다. 이에 반해 반자동 분석과 수동 분석은 분석가의 역량이 분석 시간에 영향을 미친다. 각 분석 방법에 대해 좀 더 자세히 살펴보자.
 
1. 시그니처 기반 PE 분류
가장 먼저 하는 일은 수집해온 저장매체 이미징을 대상으로 PE(Portable Executable) 파일을 분류해내는 일이다. 단, 확장자가 변경된 파일이 있기 때문에 분류는 PE 시그니처를 기반으로 수행한다. 보통 사용자 PC에 30만개 이상의 파일이 존재하는데 이 방식으로 PE 파일을 분류하면 4만개 이하로 분석 대상을 줄일 수 있다.
 
2. 화이트 리스트 해쉬 룩업
다음 작업은 시그니처 기반으로 분류한 PE 파일의 해쉬 값을 비교하는 일이다. 정상 파일의 해쉬 값을 목록화한 화이트 리스트 해쉬 값과 비교하여 알려진 정상 파일을 분류해낸다. 이 단계에서 주의할 점은 시그니처로 분류한 PE 파일을 저장매체 이미지에서 추출한 후 해쉬 값을 비교하면 시간이 많이 걸리기 때문에 이미지 분석 도구 상에서 수행하는 것이 바람직하다.
 
3. 정적 분석, 백신 검사, 자동화 동적 분석, 침해 흔적(IOC) 분석
화이트 리스트에 포함되지 않는다고 하여 악성이라고 보기는 어렵기 때문에 정상으로 분류되지 않은 파일을 대상으로 추가적인 분석을 수행한다. 정적 분석, 백신 검사, 자동화 동적 분석, 침해 흔적(IOC, Indicators of Compromise) 분석은 각각 독립적으로 수행된다.
정적 분석은 PE 파일 데이터를 분석하는 방법으로 다음 방식을 사용한다.
 
-PE 포맷에 악성 파일이 주로 사용하는 값이 설정된 경우(가중치 방식)
-PE 섹션 별로 엔트로피를 측정하여 패킹 및 암호화 탐지
-서명되지 않았거나 제품명/제조사와 서명이 다른 파일 탐지
-마이크로소프트 카탈로그 해쉬 값과 비교하여 패치 여부 탐지
 
백신 검사는 2개 이상의 백신을 사용하는 것이 좋으며, 국내 1개, 국외 1개를 사용하는 것이 적절하다. 다른 방법으로는 바이러스 토탈(Virus Total)과 같은 시그니처 DB에 해쉬 값을 질의하여 악성 파일을 탐지할 수 있다.
 
자동화 동적 분석은 가상화 환경에서 의심 파일을 실행한 후 프로세스가 생성하는 파일, 레지스트리 값, 네트워크 접속 행위 등을 확인하여 악성 여부를 탐지하는 방법이다.
침해 흔적(IOC) 분석은 알려진 악성코드들이 남기는 흔적을 모아두고 분석 대상 시스템에서 이러한 패턴이 나타나는지 확인해보는 작업이다.
 
4. 파일시스템 분석, 타임라인 분석
전 단계의 각 분석 방법에서 악의적이라고 의심된 파일을 모아 다시 파일시스템과 타임라인 분석을 수행한다. 이 단계는 부분적인 자동화와 분석가의 역량이 필요한 단계이다.
 
파일시스템 분석은 앞서 분류한 파일이 파일시스템에 남긴 흔적을 살펴보는 방법이다. 파일의 시간 정보를 임의로 조작했는지, 은닉 기법을 사용했는지 등의 정보를 확인할 수 있다. 또한, 최근의 공격 패턴은 악성파일을 은닉하기 위해 탐색기로 확인할 수 없는 위치에 파일을 생성하고 삭제하는데 파일시스템을 분석하면 은닉된 위치에 존재하는 추가 파일을 발견해낼 수도 있다. 그리고 삭제 되었다고 판단되면 추가적으로 파일 카빙 기법을 이용해 복구해낼 수도 있다.
 
타임라인 분석은 앞서 분류한 파일을 기준으로 타임라인을 살펴보는 것이다. 해당 파일의 생성, 수정, 접근, MFT 레코드 수정 시간의 전 후로 어떠한 일이 일어났는지와 추가적으로 생성된 파일이 없는지를 살펴본다. 자동화 분석 단계는 알려진 패턴이나 행위에 기반하기 때문에 알려지지 않는 악성 파일을 탐지하는데 어려움이 있을 수 있는데, 타임라인 분석은 이 점을 보완해준다.
 
5. 수동 정적/동적 분석
수동 분석은 맨 마지막 단계로 최종적으로 악성 여부를 판단하는 단계이다. 수동 분석은 비교적 시간이 많이 걸리지만, 앞선 단계를 모두 수행했다면 대상을 10개 이하로 줄일 수 있다. 수동 분석 방법으로는 정적/동적 디버거를 사용하거나 가상화 환경에서 실행한 후 메모리를 직접 분석하는 방법이 있다.
 
개인이나 단체마다 악성코드 분류 방법에 차이는 있겠지만 위 방법과 크게 다르지 않을 것이다. 하지만, 국내에서 위 방법을 적용하기에는 몇 가지 한계가 있다.
 
1. 화이트 리스트 해쉬의 부족
대표적인 화이트 리스트 해쉬 값은 미국국립기술표준원(NIST)에서 추진하는 NSRL 프로젝트가 있지만, 국내 환경에 적용하기에는 아쉬운 점이 많다. 한글 운영체제나 국내에서 많이 사용하는 국내용 소프트웨어는 지원이 미흡하기 때문이다. 현재 국내에서는 각 기업이나 단체별로 개별적인 화이트 리스트를 보유하고 있지만 대상이 제한적이고 공유되고 있지도 않다.
 
화이트 리스트 해쉬 값은 침해 흔적을 발견하는 작업 이외에도 활용도가 매우 높다. 하지만, 지속적으로 유지/보완하기에는 많은 노력이 든다. 따라서, 국가적으로 화이트 리스트에 대해 지속적으로 관리할 수 있는 프로젝트가 진행될 필요가 있다.
 
2. 침해흔적(IOC) 데이터의 부족
해외에서는 맨디언트(Mandiant)를 중심으로 OpenIOC가 활발히 진행 중이지만, 국내에서는 아직 침해흔적을 발견할 수 있는 IOC 데이터를 유지하고 있지 않다. 최근의 공격은 대부분 표적형 공격이기 때문에 국내만을 타깃으로 공격하는 악성코드가 늘어나고 있다. 이런 시점에서 국내에서도 IOC 데이터를 유지 관리하는 방안이 필요하다. 보안업체에서도 악성코드를 분석하여 나온 IOC 데이터가 일부는 시그니처로 반영되기는 하지만 대부분은 효과적으로 사용되지 못하고 있다. 최근의 보안 사고는 범국가적인 문제이기 때문에 각 기관에서 나온 IOC 데이터를 효과적으로 관리하여 사고 분석에 활용할 필요가 있다.
 
화이트 리스트 해쉬나 침해 흔적 데이터인 IOC 모두 단일 기관이 유지 관리하기에는 어려움이 많다. 유지 관리를 위해 투자하는 노력에 비해 활용도가 적을 수 있기 때문이다. 따라서, 이것을 성공시키려면 공개적으로 진행하거나 국가적인 투자가 필요하다. 국가적인 투자에 의해 진행할 경우 유관 기관의 협조가 필요할 것이다. 이 경우 지속가능한 성공을 위해서는 애국심에 호소하기 보다는 정당한 비즈니스 마인드로 접근하는 것이 중요하다.
 
마지막으로 이번 기고를 위해 커핀그루나루 강남점에서 아낌없는 조언을 해준 포렌식 인사이트 회원들에게 감사의 말을 전합니다.
 
<필자소개>
강원대학교와 고려대학교 정보보호대학원을 졸업하고 현재 안랩 A-FIRST 팀에서 침해사고 포렌식 분석 업무를 담당하고 있다. 국내에 디지털 포렌식과 관련한 올바른 정보 공유를 위해 개인 블로그(FORENSIC-PROOF)와 포렌식 인사이트 커뮤니티를 운영하고 있다.