2013년 8월 14일 수요일

메모리 포렌식(Memory Forensic)을 위한 메모리 분석 툴 Mandiant Redline

컴퓨터 포렌식 중에서도 멀웨어 포렌식(Malware Forensic) 분야를 기법적인 면을 기준으로 본다면 크게 4가지 정도로 나눌 수 있다고 보여집니다.

첫 번째가 메모리 포렌식(Memory Forensic)으로서 램(RAM)에 존재하는 악성코드 감염과 관련된 다양한 흔적(네트워크 접속 정보 및 프로세스 정보 등)들을 분석하는 것입니다. 

두번째로는 레지스트리 포렌식(Registry Forensic) 입니다. 일반적으로 거의 대부분의 악성코드들(일부 그렇지 않은 악성코드들도 존재 합니다.)은 감염된 시스템이 재부팅을 하거나 시스템 사용자가 특정 행위를 수행 하였을 때 악성코드 자신이 실행되기 위하여 윈도우 시스템의 레지스트리에 새로운 키(Key)를 생성 및 변경 하게 됩니다. 

특정 악성코드의 경우에는 윈도우 XP에 존재하는 안전모드 부팅(Safe Mode Booting) 관련 레지스트리를 삭제하여 안전모드 부팅을 방해하기도 합니다.

세번째로 인터넷 포렌식(Internet Forensic) 입니다. 이메일(E-Mail), 메신저(Instant Messenger)  그리고 웹 브라우저(Web Browser)와 같이 인터넷 활동과 관련된 어플리케이션(Applications)으로 인해 악성코드에 감염되는 사례들이 다수를 차지하고 있습니다. 이러한 경우에는 인터넷 관련 어플리케이션들의 행위를 분석하는 것만으로도 의외로 쉽게 악성코드의 감염 경로를 파악 할 수 있습니다.

최근 수행한 멀웨어 포렌식의 대상은 방송 관련 업무를 하시는 분들의 노트북들이었습니다. 분석을 하는 과정에서 1대의 노트북에서 악성코드 감염으로 인해 안랩(AhnLab)의 전용백신으로 진단, 치료 하였던 흔적을 발견 할 수가 있었습니다. 

결론적으로 그 악성코드의 감염 경로는 웹 브라우저 취약점을 악용한 중국산 웹 익스플로잇 킷(Web Exploit Kit)인 공다(GongDa)에 의해서 였으며, 이러한 감염 경로를 파악하는데 결정적인 역할을 한 것이 바로 인터넷 포렌식과 레지스트리 포렌식 기법의 복합적인 사용이었습니다.

그리고 마지막으로 디스크 포렌식(Disk Forensic) 입니다. 이는 전통적인 컴퓨터 포렌식에서 이야기하는 디스크 이미징(Disk Imaging) 이 후 엔케이스(EnCase)나 FTK와 같은 분석 툴을 이용해 디스크 전체를 분석하는 과정 입니다.

그 중 오늘 이야기 할 주제는 첫번째인 메모리 포렌식을 할 경우에 무료로 사용할 수 있도록 맨디언트(Mandiant)에서 개발한 레드라인(Redline)이라는 메모리 분석 툴입니다.

메모리 분석 관련 툴들 중에서 많이 사용되는 것으로 오픈소스(Open Source) 인 볼라틸리티(Volatility)와 커맨드라인(Command-Line) 형태로 동작하는 맨디언트의 메모라이즈(Memoryze)가 존재 합니다. 그래서 컴퓨터 포렌식이나 멀웨어 포렌식 관련 서적들에서는 위 2가지 툴에 대해 빼놓지 않고 언급 하고 있습니다.

위에서 언급한 2개의 메모리 분석 툴은 여러가지 장점들로 인해 일반적으로 많이 사용되는 툴들이며, 분석 과정에서 오류가 없다는 것을 인정을 받았습니다. 하지만 악성코드 감염으로 인해 침해사고가 발생하여 신속하게 실시간 대응(Live Response)를 진행해야 되는 상황에서 앞서 언급한 2개의 메모리 분석툴들은 모두 커맨드 라인 형태를 가지고 있어 조금 불편함이 존재합니다.

이러한 관점에서 본다면 레드라인은 맨드언트에서 언급한 문구인 "Accelerated Live Response"와 같이 신속하게 메모리 분석을 진행 할 수 있도록 도와주는 GUI 기반의 툴입니다.

레드라인을 설치하고 실행을 하기 위해서는 설치 대상이 되는 시스템에 닷넷 프레임워크(.Net Framework) 4.0 을 필요로 합니다. 그래서 이를 설치하고 맨드언트에서 무료로 제공하는 레드라인 설치 파일인 Redline-1.9.2.msi (56,139,776 바이트)을 설치합니다.

설치가 완료되고 레드라인을 실행하면 맨디언트사 특유의 붉은 색이 주를 이루는 GUI를 볼 수가 있습니다.


레드라인은 메모리 분석을 위한 툴이기도 하지만, 이와 함께 침해 사고가 의심되는 컴퓨터 시스템에서 메모리 덤프(Memory Dump)를 제작 할 수 있는 기능도 포함되어 있습니다. 하지만 닷넷 프레임워크를 필요로 한다는 점에서 이 기능이 그렇게 활용 가능성이 높다고 보기 어려울 것 같습니다.

레드라인을 테스트 해보기 위해 기존에 제작해둔 악성코드 감염 시스템에서 생성한 메모리 덤프 파일들을 레드라인으로 분석을 진행 해봤습니다.

약 130 MB의 메모리 덤프 파일을 레드라인에서 읽어들이는 과정에서 시간 소요가 조금은 필요 했습니다. 이는 기존에 사용되던 메모라이즈에 포함되어 있던 모든 기능들을 레드라인에 포함시켜 이를 활용하는 과정에서 시간 소요가 발생하는 것으로 보여집니다.

130 MB의 메모리 덤프에서 사용자가 체감할 정도의 시간 소요가 발생 했다는 점에서 최근에 사용되는 윈도우 시스템의 메모리가 대부분이 2, 3 GB가 넘는 것을 감안 할 경우, 실제 침해 사고 발생 시스템의 메모리 분석시에는 더 긴 시간 소요가 필요 할 것으로 보여집니다.

기본적으로 레드라인에서 제공하는 메모리 분석 기능은 기존 맨디언트에서 제공하는 커맨드 라인 메모리 분석 툴인 메모라이즈에서 제공하는 기능들을 모두 포함하고 있습니다. 

그리고 여기에다 MRI(Mandiant for Intelligent Response)라는 기능이 추가 되어 있습니다. 이 MRI 기능은 메모리 분석 과정에서 프로세스(Process)나 핸들(Handle) 등에서 악성코드와 관련 있는 의심스러운 아티팩트(Artifact)를 발견하게 될 경우 붉은 색으로 표기를 해줍니다.

아래 이미지는 Oficla(a.k.a Sasfis)에 감염된 윈도우 XP 시스템에서 생성한 메모리 덤프 파일들을 분석한 내용입니다. 

붉은 색으로 표기된 MRI가 존재하는 svchost.exe는 정상 윈도우 시스템 프로세스입니다만, Oficla가 자신의 코드를 임의로 svchost의 메모리 영역에 코드 인젝션(Code Injection)을 수행한 상태입니다. 


결론적으로 코드 인젝션이 발생한 svchost.exe에 MRI가 표기 되었다는 점에서 레드라인이 Oficla 악성코드 감염 흔적을 메모리에서 발견했다라고 생각 해볼 수 있습니다.

그리고 다른 메모리 분석 툴에서 제공하지 않는 타임라인(TimeLine) 분석 기능을 제공 합니다.이 타임라인 분석 기능은 아래 이미지에서와 같이 메모리에 존재하는 정보들을 조합하여 시간 순서로 정렬하여 보여줍니다.

그래서 아래 이미지와 같이 악성코드의 코드 인젝션이 발생한 svchost.exe가 실행 된 시간을 기준으로 대략 이 시점 이전에 해당 시스템으로 악성코드가 유입되어 감염이 발생하였다는 것을 판단 할 수 있습니다.


이렇게 간편하고 빠르게 메모리 분석을 수행 할 수 있도록 도와주는 장점을 가진 레드라인은 MRI라는 기능으로 인해 더 신속하게 악성코드로 의심되는 메모리 영역과 파일을 판단 할 수가 있습니다.

이 MRI라는 기능의 알고리즘이 어떻게 제작되었는지 멘디언트에서 공개하지 않아 알 수가 없어 쉽게 판단을 할 수가 없습니다만, 다른 악성코드 감염 시스템에서 제작한 메모리 덤프들로 테스트를 하는 과정에서 일부 악성코드와 관련된 메모리 정보들을 MRI가 붉은 색으로 표기 해주지는 못하는 것을 확인 하였습니다.

그러므로, MRI의 붉은 색 표기만을 전적으로 신뢰하기 보다는 이 정보는 참고용으로 사용하고, 분석가의 경험과 역량이 더 중요하게 적용된다는 점을 생각해야 됩니다.

그리고, 오픈소스와 파이선(Python)의 장점들을 모두 가진 볼라틸리티와 비교를 한다면 향후 확장성과 성능 개선이라는 면에서는 발전이 빠르지는 않을 것으로 보여집니다. 하지만 경험이 풍부한 침해 사고 대응 전문 업체에서 제작한 메모리 분석 툴임으로 오픈소스와는 또 다른 분석 기능을 보여줄 것으로 기대 됩니다.

이러한 장, 단점을 고려해두고 신속하게 메모리 분석을 수행하여야 되는 경우에 레드라인을 사용한다면 조금 더 편하고 빠르게 메모리 분석을 진행 할 수 있을 것으로 생각 됩니다.

댓글 없음:

댓글 쓰기