2019-11-21 01:15 (목)
[김진국의 디지털포렌식-4] 타임라인 분석
상태바
[김진국의 디지털포렌식-4] 타임라인 분석
  • 길민권
  • 승인 2012.06.17 19:49
이 기사를 공유합니다

사건발생 시점 중심으로 생성-수정-삭제-접근 파일 살펴보는 것
저장매체가 대용량화됨에 따라 저장매체에 저장되는 파일의 수는 보통 수십만 개에 이른다. 이 파일을 모두 분석하는 것은 현실적으로 어렵다. 파일 이외에도 삭제된 공간, 슬랙 공간, 비할당 공간 등 분석해야 할 영역이 다양하다. 게다가 특정 대상으로 발생한 사건이 아니라면 보통 다수의 시스템을 분석해야 한다. 그렇다면 효과적인 분석을 위해 어떤 방법을 사용해야 할까?

 
가장 많이 사용하는 방법이 타임라인 분석이다. 분석하는 대상과 관련된 사건이 일어난 시점을 중심으로 생성/수정/삭제/접근한 파일을 살펴보는 것이다. 사건이 발생한 시점을 정확히 알고 있는 경우, 손쉽게 관련 증거를 찾을 수 있는 사건이 있는 반면, 정확한 시점을 알고 있어도 관련 증거를 찾기 어려운 사건도 있다. 후자의 경우 추가적인 분석 기법이 더 필요하다. 하지만 모두 분석의 실마리는 사건이 발생한 시점이다.
 
사건 발생 시점을 가늠할 수 없는 경우에는 문제가 발생한다. 수십만 개의 파일을 모두 분석해야 할까? 당연히 그렇지 않다. 이런 상황에서는 무엇보다도 분석가의 경험과 판단이 중요하다. 사건의 성격에 따라 분석해야 할 대상의 우선 순위를 정해야 하기 때문이다.
 
회사 기밀이 외부로 유출됐다고 가정해보자. 회사의 80~100명 규모의 회사로 업무망과 외부망을 분리해서 사용하고 있다. 주요 회사 기밀은 각 팀의 팀장만 접근할 수 있도록 접근 제어가 되어 있다. 공격자는 외부자일 수도 있지만, 내부자일 수도 있다. 네트워크를 이용한 유출도 가능하지만 물리적인 매체를 통한 유출도 가능하다. 이런 상황이라면 당신은 어떤 순서로 분석을 해 나갈 것인가? 정답은 없으니 한번 고민해보자. 시작을 어떻게 하냐에 따라 결과가 나오기까지 걸리는 시간은 매우 큰 차이가 난다. 주어진 정보가 적다고 느낄 수 있다. 하지만 증상 혹은 의심만 가지고 분석에 임하는 경우에 비하면 많은 정보가 주어진 것이다.
 
위와 같이 사건이 발생한 시점을 알 수 없는 사건이라고 하더라도 분석 과정에서 이상 징후가 발생한다면 해당 시점을 기준으로 다시 타임라인 분석을 수행하는 것이 일반적이다. 이렇듯 디지털 포렌식 분석에서 타임라인 분석은 필수 불가결한 존재이다.
 
타임라인 분석이 분석에 유용한 것은 사실이지만 항상 의미 있는 결과가 나오는 것은 아니다. 악성 코드를 가상환경에서 동적 분석하는 경우, 실행한 흔적을 바로 살펴볼 수 있기 때문에 타임라인만으로도 많은 정보를 얻어낼 수 있다. 하지만, APT(Advanced Persistent Threat) 공격과 같은 공격 기법은 피해자가 공격이 발생한지 상당한 시간이 지난 후에 공격을 인지하기 때문에 어려움이 많다.
 
타임라인 분석은 앞서 언급했듯이 시간 정보가 필요하다. 운영체제와 애플리케이션은 다양한 곳에 시간 정보를 남긴다. 다음은 윈도우 환경에서 시간 정보가 남는 데이터 목록이다.
 
-파일시스템 시간 정보 (FAT은 3개, NTFS는 8개)
-프리패치 파일의 생성 시간과 파일 내부의 최종 실행 시각
-레지스트리 하이브 구조에서 하이브 키의 마지막 접근 시간
-EVT 이벤트 로그의 이벤트 생성 시간, 이벤트 작성 시간
-EVTX 이벤트 로그의 이벤트 생성 시간
-링크(LNK) 파일의 파일시스템 시간과 내부에 저장된 대상의 생성/수정/접근 시간
-휴지통의 삭제 시간
-IIS 로그의 이벤트 발생 시간
-인터넷 익스플로러 사용 흔적의 수정, 접근, 만료 시간
-크롬 사용 흔적의 방문 시간, 다운로드 시작 시간
-파이어폭스 사용 흔적의 방문 시간, 수정, 접근, 만료, 다운로드 시작/종료 시간
-XP 방화벽 로그의 이벤트 발생 시간
-시스템 복원 지점에 백업된 파일의 파일시스템 시간 정보
 
위에서 살펴본 기본적인 윈도우의 시간 흔적 이외에도 응용프로그램마다 남기는 시간 정보도 다양하다. 이런 시간 정보를 생성 시간을 기준으로 정렬하거나 혹은 수정/접근 시간을 기준으로 정렬해서 타임라인 분석을 수행할 수 있다.
 
단순히 생성/수정/접근 시간을 기준으로 정렬하는 것 이외에도 각 시간 정보의 의미에 따라 생성 시간과 수정 시간을 비교해보거나 파일시스템 시간과 파일 내부 시간의 연관 관계를 살펴봐야 한다. 이런 연관 관계를 살펴보기 위해서는 각 시간 정보의 의미에 대해서 잘 알고 있어야 하며 많은 경험이 필요하다.
 
특히, NTFS의 시간 정보의 경우, 내부 구조의 속성($STDINFO, $FNA)에 따라 각각 4개씩(생성/수정/접근/엔트리 수정) 총 8개의 시간 정보가 저장된다. 이 시간 정보는 파일의 생성, 이동, 복사, 수정, 이름 변경에 따라 서로 다른 특징을 가진다. 이런 특징을 기반으로 공격자의 의도적으로 시간 정보를 조작했는지 여부도 살펴볼 수 있으며 사용자의 행위를 추적할 수 있다. 그리고 사건이 발생한 이후 빠른 대응이 이루어졌다면 NTFS의 메타데이터 파일인 $LogFile을 이용해 세밀하게 흔적을 분석할 수 있다.
 
그렇다면 이런 분석 작업을 모두 수동으로 해야 할까? 불과 얼마 전까지만 해도 수동적인 작업을 많이 들여야 했지만 최근에는 log2timeline 이라는 도구로 많은 부분을 자동화할 수 있다. 하지만, 추출된 타임라인에서 특정 행위를 판단하는 역할은 여전히 분석가의 몫이다.
 
log2timeline의 활용이나 추가적으로 타임라인 분석을 살펴보고 싶다면 SANS 포렌식 블로그의 “Timeline Analysis” 카테고리를 참고해보기 바란다.
-computer-forensics.sans.org/blog/category/timeline-analysis-computer-forensics
 
여러 흔적에 대해 통합 타임라인 분석을 수행하면 단일 흔적을 분석하는 것에 비해 좀 더 효과적인 분석을 할 수 있다. 하지만, 최근의 공격 기법은 매우 고급화가 되어 있어 이런 타임라인 분석 기법을 무력화하기 위한 안티포렌식 기법이 많이 사용된다. 그로 인해, 침해의 흔적은 밝혀내지만 각 흔적이 서로 연결되지 않는 경우가 많다. 결국, 전체적인 공격의 흐름을 밝혀내지 못하는 경우도 많다.
 
이런 문제점을 극복해보고자 최근에는 포렌식 준비도(Forensic Readiness)에 대한 연구가 활발하다. 포렌식 준비도란, 사건 발생 시 분석을 신속하고 정확하게 하기 위해 사전에 준비가 되어있는지는 검증하는 제도이다. 준비는 장비와 같은 하드웨어적인 시스템을 도입하는 것도 필요하겠지만, 그보다 더 중요한 것은 내부의 보안 정책 강화이다.
 
예를 들어, 각 시스템의 로그 설정만 제대로 되어 있어도 쉽게 분석할 수 있는 사건이 많다. 하지만 로그 설정이 되어 있는 시스템의 경우에도 공격자가 로그 서비스를 중지시켰음에도 불구하고 몇 달이 지나도록 모르고 방치되는 경우가 비일비재하다. 따라서 포렌식 분석이 용이하도록 시스템 설정을 변경하고 지속적으로 변경된 설정을 모니터링 하는 것이 필요하다.
 
공격을 제대로 방어하기 위해서는 “공격은 막을 수 없다”라는 전제를 바로 인식할 수 있어야 한다. 원천적으로 막을 수 없다면 사고가 발생했을 때, 신속하고 정확하게 대응하는 것이 중요할 것이다. 이를 위해, 보안컨설팅 이후, 시스템 운용 중에 포렌식 준비도에 대해 검증해보는 것이 필요하다.
 
<필자소개>
김진국(@pr0neer): 現 AhnLab A-FIRST 연구원
강원대학교와 고려대학교 정보보호대학원을 졸업하고 현재는 안철수연구소 A-FIRST 팀에서 침해사고 포렌식 분석 업무를 담당하고 있다. 국내의 디지털포렌식과 관련된 정보 공유를 위해 개인 블로그인 FORENSIC-PROOF와 디지털포렌식 커뮤니티인 FORENSIC INSIGHT를 운영하고 있다.