본문 바로가기
IT/해킹보안

악성코드와 멀웨어 포렌식

by 모르면 모른다고 해 2013. 9. 24.
반응형
 

지난 몇년 동안 악의적이고 불법적인 용도로 개발된 프로그램이 급격히 늘어났다.

과거에는 악성코드를 기능과 공격 매개체에 따라 명확하게 분류해 왔다(바이러스, 웜, 트로이목마). 오늘날의 멀웨어는 모듈화돼 있으며 다방면에 걸친 기능을 탑재하고 있다. 다시 말해 특정 범주에 딱 맞기보다는 다양한 기능과 여러 전달 수단으로 무장하고 '혼합형 위협'을 가하는 멀웨어 표본이 늘어나고 있다. 이런 멀웨어 중 상당수는 계속 늘어나고 있는 조직적이며 전문적인 컴퓨터 범죄자들을 지원하기 위해 만들어 졌다.

범죄를 저지르고 감추기 위해 멀웨어를 사용하는 사례가 늘어남에 따라 예전에는 백신 업체와 보안 연구원만의 전유물이었던 멀웨어 분석 기법과 도구를 점점 더 많은 디지털 조사관들이 적극 활용한다.

 

이 책의 집필 목표는 디지털 조사관들이 컴퓨터 시스템에서 멀웨어를 파악하고 멀웨어를 분해해 기능과 목적을 파헤치고, 표적 시스템에 침투한 악성 멀웨어를 찾아내는 작업을 돕는 데 있다. 관련된 도구와 각종 기법을 보여주기 위해 책 전반에 걸쳐 실제 사례를 다루는 시나오를 사용했다. 

 

책(원서) 공식 사이트 : http://malwareforensics.com/

 

1. 조사 방법론과 포렌식 방법론

 

시스템에서 멀웨어를 찾았을 때, 엄청난 시간적인 압박하에서 여러 가지 판단을 내리고 행동으로 옮겨야 한다. 멀웨어와 관련된 조사는 다음과 같은 5단계로 나눠준다.

  • 1단계 범죄 증거 보존과 휘발성 자료 검사
  • 2단계 메모리 검사
  • 3단계 범죄 증거 분석 : 하드 드라이브 검사
  • 4단계 멀웨어 정적 분석
  • 5단계 멀웨어 동적 분석

하지만 위에서 개괄하는 방법론은 맹목적으로 따르기 위한 점검 목록표가 아니다. 디지털 조사관들은 관찰한 결과를 신중하게 검토해야 하며, 때로는 시스템 소유자 및 관리자 혹은 사용자와 면담하는 편이 보안 사고와 관련해 좀 더 완전한 그림을 그리는 데 도움을 준다.

 

증거역학

증거 역학은 증거를 바뿌고, 옮기고, 숨기며, 제거하려는 영향력을 총칭한다. 여기서 증거를 제출한 시각과 소송 사건에서 판결이 내려진 시각 사이의 변화는 무시한다. 증거역학이 멀웨어 사고에서 특히 중요한 이유는, 빠르고 정확하게 증거를 보존하지 않을 경우 메모리에 있는 중요한 증거가 사라지기 때문이다. 원래 상태로 디지털 범죄 현장을 검사할 기회가 드물기에 예외적인 상황도 어느 정도 감수해야 한다는 냉정한 현실을 받아들여야만 한다.

도작 중인 시스템에서 휘발성 자료를 수집할 때 증거 역학을 최소하는 방법론을 배워야 한다.

 

 

2. 포렌식 분석

 

휘발성 자료를 보존하고 검사하는 방법

 

멀웨어 사고에 대응하기 위해 동작 중인 시스템에서 수집한 몇가지 자료는 휘발성이 없다. 다음에 소개하는 하위 범주는 동작 중인 시스템에서 자료를 수집하는 과정에서 상대적인 우선순위를 명확하게 밝혀준다.

  • (1등급)휘발성 자료  시스템의 보안에 문제가 생긴 원인과 문제가 생긴 유형을 파악하게 조서관에게 통찰력을 제공하는 중요한 시스템 세부 내역으로, 사용자 로그인 정보, 활성 네트워크 연결 정보, 시스템에서 동작 중인 프로세스 정보를 포함한다.
  • (2등급) 휘발성 자료  조사관에게 힌트를 주며, 감염의 특성과 목적에 통찰력을 제공하는 휘발성 정보이지만, 시스템 상태와 세부 내역을 파악하는 과정에서 핵심은 아니다. 스케쥴된 작업과 클립보드 내용을 포함한다.
  • (1등급) 비휘발성 자료   표적 시스템의 상태, 설정, 구성을 보여주며,잠재적으로 시스템이나 네트워크에 문제를 일으키거나 감영 방법에 대한 단서를 제공한다. 레지스트리 설정과 감사 정책을 포함한다.
  • (2등급) 비휘발성 자료   감염의 특징과 목적을 이해하기 위한 이력 정보와 맥락을 제공한다. 하지만 시스템 상태, 설정, 구성에 핵심은 아니다. 시스템 이벤트 로그, 웹 브라우저 방문 기록을 포함한다.

삭제된 파일 복구

 

파일 시스템에서 여전히 참조 중인 삭제된 파일을 복구하기 위해 특별한 포렌식 도구가 있다. 또한, 파일 시스템에서 더 이상 참조되지 않는 비할당 영역에서 삭제되지 않은 실행 파일을 복구할 때도 이런 도구를 사용할 수 있다.

비할당 영역에서 실행 파일을 복구하기 위한 가장 효과적인 도구는 'foremost' 이다

 

시간 분석, 기능 분석, 관계 분석

 

포렌식 분석의 주요 목표 중 하나는 범죄를 둘러싼 사건의 재구성이다. 범죄 재구성 과정에서 사용하는 가장 일반적인 분석 기법은 시간 분석, 기능 분석, 관계분석 등이다.

가장 널리 알려진 시간 분석 형태는 타임라인(timeline) 이다.

기능 분석에는 범죄 환경에서 어떤 행동이 가능하며, 멀웨어가 실제로 이런 환경에서 어떻게 동작했는지 이해한다는 목표가 있다. 감염된 시스템에서 특정 멀웨어 구성 요소의 동작 방식을 이해하기 위한 기능 분석을 수행한다는 관점에서 LiveView 같은 도구를 사용해 가상 환경으로 범죄 현장을 그대로 옮겨 놓는 방법이 유효하다. http://liveview.soucrceforge.net

 

 

3. 멀웨어 분석

 

 

실행 파일의 컴파일 방법 

 

악성 실행 프로그램을 상세히 분석하기 위해 사용하는 도구와 기법을 탐구하기 전에 원시 코드를 컴파일하고 링크해서 실행 파일로 만들어내는 과정을 이해해야 한다. 악성코드를 컴파일하는 과정에서 공격자가 취한 단계는 종종 코드를 검사하는 도중에 발견되는 증거를 구성하는 요소 항목을 결정하기도 한다.

 

원시코드 -> 컴파일러 -> 목적파일 -> DLL ->

                                                     DLL ->  링커 -> 실행파일

 

프로그램을 컴파일할 때, 프로그램의 원시 코드컴파일러를 거친다. 컴파일러는 고수준 언어로 작성한 프로그래밍 구문을 번역해 다른 형태로 바꾸는 프로그램이다. 컴파일러를 거쳐 처리되면 원시 코드는 사람이 읽을 목적이 아니라 컴퓨터 프로세서가 수행하기 위한 목적으로 만들어진 명령어들을 포함하는 목적 파일이나 기계어로 바뀐다.

원시 코드를 목적 파일로 컴파일한 다음에 링커가 필요한 라이브러리(동적,정적)와 목적 코드를 하나로 결합해 호스트 운영체제에서 수행 가능한 실행파일을 만들어낸다.

 

 

정적 링크와 동적 링크

 

컴파일 과정에서 실행 파일에 추가되는 정보 이외에 의심스런 프로그램이 정적 실행 파일인지 동적 실행 파일인지를 검사해야 한다. 링크 방식에 따라 파일 내용과 크기가 달라지므로 발견 가능한 단서에도 영향을 미친다. 

정적 실행 파일은 수향에 필요한 라이브러리 전부와 코드를 담고 있으며, '독저적으로 수행 가능한' 프로그램이다.

반대로 동적으로 링크된 실행 파일은 제대로 수행하기 위해 공유 라이브러리에 의존한다. 

 

정적 링크와 동적 링크

 

멀웨어 개발자들은 끊임없이 포렌식 분석을 방해하기 위해 새로운 방법을 찾아 낸다는 사실에 주목하자. 예를 들어 다음과 같은 안티포렌식 기법을 설명할 수 있다.

  • 다중 구성 요소
  • 패킹과 암호화
  • 디버거와 가상 환경 감지
  • 추적 기법을 감추기 위해 운영 스레드 중 하나에 '트랩 플래그' 설정하는 멀웨어

현재 컴퓨터 침입자가 점차 디지털 포렌식 기법을 인식함에 따라 점점 더 의미 있는 분석이 힘들게 악성코드를 설계한다. 리버스 엔지니어링을 방해하고, 네트워크 트래픽을 암호화 하고 감추며, 파일 시스템에 남겨진 흔적을 최소화하는 기법을 도입함으로써 악성코드 개발자는 발견과 포렌식 분석을 둘 다 어렵게 만들고 있다.

오늘날 다양한 멀웨어 변종이 번식하고, 자동으로 퍼지며(웜 방식), 원격 제어 접근 기능을 제공하며(토로이목마/백도어 방식), 종종 문제가 생긴 호스트에서 벌이는 활동 상황까지 감추는 경우도 흔하디(루트킷 방식)

또한 멀웨어는 보안 기법을 방해하게 발전해 백신 도구를 무력화하며, 네트워크 내부에서 외부에 위치한 명령과 제어 서버로 연결하는 방법으로 방화벽까지 우회한다.

반응형

'IT > 해킹보안' 카테고리의 다른 글

보안장비 ESM, TMS, RMS  (0) 2013.12.10
DDoS 공격대응 가이드  (1) 2013.12.10
보안관제 3단계 분석  (2) 2013.09.22
웹의 취약점 보안  (0) 2013.09.08
HTTP Response 결과 코드(값)  (0) 2013.09.08

댓글