본문 바로가기

카테고리 없음

Live Forensic - 활성 및 비활성 데이터 수집

최근의 포렌식은 저장 장치의 대용량화, 디스크 압수 및 분석 절차에 대한 제약 등으로 활성 포렌식의 중요성이 증가하고 있다.

다만, 활성 포렌식의 경우 시스템을 훼손하는 행위가 일어나서는 안되며 데이터 수집 시에도 시스템에 최소한의 영향을 주어야 한다. 

이런 이유로 설치형 수집 도구 보다는 CLI(Command Line Interface)를 주로 사용하는 것이 좋으며 또한 검증되지 않은 3rd Party 도구보다는 

운영체제 자체에서 제공하는 명령어나 도구를 이용하는 것이 좋다.


활성 데이터 수집
활성 데이터 수집 순서는 휘발성 정도에 따라 달라진다. 휘발성 순서에 대해 참고할 만한 문서는 다음과 같다.

1. RFC 3227
, Guidelines for Evidence Collection and Archiving
2. NIST Special Publication 800-86, Guide to Integrating Forensic Techniques into Incident Response

위 문서에서 정의하는 순서가 있지만, 기관에 따라 바라보는 관점이 다를 수 있다. 다음은 일반적으로 생각하는 활성 데이터 수집 순서이다. 
ARP 캐시와 같이 휘발성이 매우 높은 네트워크 연결 정보를 먼저 수집하고 휘발성이 낮은 정보는 뒤쪽에 배치하였다.
이 중 가장 많은 시간이 소비되는 작업은 물리메모리 덤프이다. 가장 많은 시간에도 불구하고 물리메모리를 앞쪽에 배치한 이유는 뒤에서 수집하는 모든 정보가 결국은 물리메모리에서 나오기 때문이다. 물리메모리 덤프가 뒤쪽에 위치하면 수집 명령을 실행하면서 물리메모리의 흔적이 손상될 수도 있기 때문이다. 그리고 현재 진행형인 사건의 영향을 정확히 판단하기 위해 마지막에 네트워크 패킷을 수집하는 것이 필요하다.

1. 네트워크 연결 정보
2. 물리메모리 덤프
3. 프로세스 정보
4. 로그온 사용자 정보
5. 시스템 정보
6. 네트워크 인터페이스 정보
7. 자동실행 항목
8. 클립보드, 작업 스케줄러 정보
9. 네트워크 패킷 수집

이론적으로는 모든 정보는 물리메모리 상에 유지되므로 물리메모리 덤프에서 모든 정보를 가져올 수 있어야 한다. 하지만 현재까지 연구된 내용은 물리메모리에서 모든 정보를 가져오지 못한다. 운영체제나 버전에 따라 차이는 있지만 보통 70% 정도는 물리메모리에서 얻어 낼 수 있다. 나머지 30%도 물리메모리에 있지만 아직까지 구조가 정확히 파악되지 않았다. 각 운영체제가 계속 새롭게 출시되고 있기 때문에 아마도 모든 구조가 정확히 파악되기는 쉽지 않아 보인다.
다음으로 활성 데이터 수집 시 고려해야 할 항목들이 몇 가지 있다.

첫 번째로, 활성 데이터는 공개되고 검증된 CLI 도구를 사용해 수집해야 한다는 점이다. 활성 데이터를 수집하는 행위는 시스템의 잠재적인 증거를 훼손시킬 수도 있기 때문에 시스템에 최소한의 영향만 주어야 한다. 그래서 보통 GUI 도구보다 CLI 도구 사용을 권장한다.

두 번째로, 단일 도구만 사용하기 보다는 도구의 장단점이 존재하기 때문에 여러 도구로 중복 수집한다. 예를 들어, 프로세스 정보를 출력하는 CLI 도구는 윈도우 기본 명령을 비롯하여 Sysinternals나 Nirsoft에서 제공하는 다양한 도구가 있다. 각 도구마다 정보를 가져오는 방식과 출력 형식이 다르기 때문에 여러 도구를 사용해 서로의 단점을 보완해야 한다. 그렇다고 무작정 많은 도구를 사용해 수집하는 행위는 수집 시간이나 증거 훼손 입장에서 좋지 않다. 따라서, 미리 테스트하여 꼭 필요하고 안정적인 도구만 선택하도록 한다.

세 번째로, 모든 명령어는 독립적으로 실행되어야 한다. 시스템에 있는 기본 명령이나 라이브러리는 악성코드에 의해 감염되어 있을 수도 있으므로 반드시 미리 정적으로 컴파일한 직접 가져간 명령을 사용한다. 주의할 점은 대상 운영체제의 버전이 다양할 수 있으므로 사전에 각 운영체제 버전에 맞게 테스트하여 잘 동작하는지 확인한 후 적합한 명령어 목록을 준비해 둬야 한다.

네 번째로, 수집한 활성 데이터와 덤프한 물리메모리를 비교해보는 작업이 필요하다. 루트킷이 설치되어 있는 경우 활성 데이터 수집 도구로 수집한 결과가 올바르지 않을 수 있다. 예를 들어, DKOM 기법을 통해 프로세스를 은닉한 경우, 기본 명령으로는 은닉된 프로세스를 알아낼 수 없으므로 덤프한 물리메모리에서 패턴매칭으로 뽑아낸 프로세스 목록과 교차 검증을 해봐야 한다.

마지막으로, 수집 명령은 운영체제에서 기본으로 지원하는 인터프리터를 이용하는 것이 좋다. 그래서 유닉스 기반 운영체제는 쉘 스크립트를 이용하고 윈도우는 배치 스크립트를 이용한다. 파이썬, 펄, 루비 등을 사용하게 되면 실행 환경을 위해 추가 파일을 설치해야 할 수도 있다. 이 경우, 잠재적인 증거를 훼손할 수도 있으므로 바람직하지 않다.

비활성 데이터 수집
최근에는 라이브 포렌식 시 비활성 데이터 수집도 고려되고 있다. 원래 비활성 데이터는 전원을 끈 이후에도 유지되기 때문에 저장매체 이미징이 완료된 후 분석하는 것이 일반적이다. 하지만 최근 대용량의 저장매체가 보편화되면서 저장매체 이미징이 완료될 때까지 기다리는 것은 신속한 사고 대응에 적합하지 않다.
비활성 데이터 중 데이터 크기는 크지 않지만 분석에 매우 중요하게 활용되는 데이터가 있다. 이런 데이터를 라이브 포렌식 시 함께 수집하면 저장매체 이미징 동안 사전 분석 작업을 수행할 수 있다. 시스템이 활성 상태가 아닐 경우에도 이미징 전에 쓰기 방지장치를 장착한 상태에서 주요 비활성 데이터를 먼저 수집한다면 전체 분석 시간을 많이 단축시킬 수가 있다.
윈도우 시스템을 대상으로 사전 수집이 필요한 주요 비활성 데이터는 다음과 같다.

1 MBR, GPT
2. 파일시스템 메타데이터 (NTFS의 MFT, FAT의 디렉터리 엔트리 등)
3. 레지스트리 하이브 파일
4. 프리패치/슈퍼패치 파일
5. 각종 로그 파일 (이벤트 로그, IIS 로그, Setupapi 로그, 작업 스케줄러 로그, 방화벽 로그 등)
6. 휴지통 정보
7. 브라우저 사용 흔적

로그 파일이 매우 크지 않다면 주요 비활성 데이터를 수집하는데 많은 시간이 필요하지 않다. 그리고 수집된 비활성 데이터는 윈도우의 주요 흔적을 모두 포함하고 있기 때문에 타임라인 분석을 비롯한 거의 모든 분석이 가능하다.
사전 분석을 마치면 이미징된 저장매체를 대상으로 악성 분석(AV 엔진, 해시 비교, 슬랙 탐지 등)을 수행하여 악성코드에 의한 침해 여부를 우선 파악한다. 다음으로 사전 분석에서 도출된 정밀 분석 대상을 추출하여 분석을 수행한다. 이와 같은 방법은 이미징이 완료된 이후에 분석을 시작했던 기존 방법에 비해, 전체 분석 시간을 단축시켜줄 뿐만 아니라 사건을 좀 더 객관적으로 바라볼 수 있게 해준다.
최근 빅데이터(Big Data)가 IT 업계의 화두이다. 포렌식 분야에서도 신속한 분석이 이루어져야 하기 때문에 빅데이터를 어떻게 다뤄야 할지에 대해 많은 논의가 되고 있다. 하드웨어/소프트웨어 성능을 높여 빅데이터를 해결하는 것도 하나의 방법이지만, 그보다 더 효과적인 방법은 프로세스를 개선시키는 것일 것이다.