얼마 전 Shmoocon 컨퍼런스에서 물리 메모리를 대상으로 한 안티 포렌식 기술이 발표되었다. 

ADD(Attention-Deficit-Disorder)라고 하는 PoC Tool과 함께 발표되었는데 아이디어는 상당히 간단하다. 이번 글에서는 해당 기술의 원리를 알아보고 탐지 방법을 알아 볼 예정이다.


1. 들어가며

메모리 포렌식은 지금까지 굉장히 빠른 발전을 해 왔다. 그 중에서 Volatility가 단연 사람들에게 많이 알려지고 발전도 가장 많이 되어 있는데, ADD는 Volatility가 메모리를 분석 할 때의 방법을 역으로 이용 해 허위 메모리 정보를 삽입 해 분석가의 분석 시간과 시야를 방해 한다. 예를 들어, 프로세스 목록에서 허위 프로세스를 삽입 해 분석가가 허위 프로세스와 진짜 목적의 프로세스를 구분하는데 시간을 오래 걸리게 한다던가, 네트워크 연결 정보를 허위로 삽입하여 분석가의 분석 시간을 늘린다던가 하는 방법이 있다.


현재 해당 기술은 Process, Network Connection, File Object에 대해서만 구현이 되어 있는 상황인데, 발표자는 발표를 통해 해당 기술을 더 발전 시켜 Mutexes, Symlinks, Drivers, DLL 등을 추가로 연구 해 구현하겠다고 밝혔다. 발표가 나고 얼마 지나지 않아 그 자리에서 발표를 듣던 사람이 해당 기술을 분석 할 수 있는 방안을 블로그를 통해 내놓았는데 글을 살펴본 결과, ADD 도구를 사용 했을 때의 아티팩트를 수집 해 허위 아티팩트를 구별 해 내는 방법이었다. 하지만 이 기술은 도구가 아닌 악성 프로세스(루트킷 등)이 많이 사용 할 수 있는 기술이기 때문에 조금 더 범용적으로 해결 방안을 찾아야 한다.


위 블로그 글에서 제시한 방법은 굉장히 간단하면서 정확하다. 하지만 도구에만 적용이 되기 때문에 활용범위는 그다지 크지 않다. 방법은 다음과 같다.


[블로그 글에서 제시한 방법]

 1. 메모리에서 유니코드 문자열을 모두 추출 한다.


 2. 유니코드 문자열 목록에서 도구에서 사용 된 옵션 또는 프로그램의 이름 등의 특정 문자열을 검색한다.


 3. 명령 행에서 사용 된 인자 값들을 보고 허위 아티팩트들을 가려낸다.


위 방법은 사용자가 직접, 또는 프로그램에서 System() 함수를 사용 했을 때 메모리에 남는 명령 줄로 허위 아티팩트르 가려내는 간단한 방법이지만 앞에서 말했듯이 해당 기술은 악성코드가 사용 했을 때 그 위력이 더 크기 때문에 악성코드에서 사용 했을 때와 사용자가 사용 했을 때를 모두 감안한 측면에서 바라보아야 한다. 


이제부터 기술의 원리, 탐지 방안등에 대해서 이야기 해 보도록 하겠다.


2. ADD 원리

Volatility는 메모리 이미지에서 여러가지 검증 단계를 거쳐 정보들을 분석 해 사용자에게 보여준다. 하지만 이 검증 단계만 모두 만족한다면 허위 정보 또한 진짜 정보로 둔갑 할 수 있다.


 2.1 Fake Process

 ADD는 Fake Process 정보를 다음과 같은 검증 단계를 모두 만족 할 수 있도록 인위적으로 생성 해 메모리에 삽입한다.


그림 1 - Process Check 1


그림 2 - Process Check 2


위와 같은 Volatility의 검증 단계를 ADD는 다음과 같이 만족하였다.


그림 2 - ADD Fake Process


간단하게 살펴보면 사용자에게 Process Name, PID, CimeL, CTimeH, ExitTmeL, ExitTimeH을 받고 EPROCESS에 삽입 할 최소한의 정보와 함께 EPROCESS를 생성하기 위해 만든 허위 EPROCESS 구조체에 넣고 OBJECT_HEADER 구조체와 함께 해당 구조체를 메모리에 임시저장 해 둔다. 허위 EPROCESS 구조체는 다음과 같다.


그림 3 - 허위 EPROCESS 구조체


여기서 중요한 사실은 EPROCESS의 구조체 모두에 대한 정보를 생성하지 않는다는 것이다. 넣을 부분만 알아보기 편하게 기존의 EPROCESS 구조체 멤버와 동일하게 변수를 선언하고 다른 부분들은 DWORD f<숫자>형태로 선언해 크기만 맞추어 주었다. 사실 EPROCESS의 모든 정보를 생성하여 실제 프로세스처럼 넣어주게 될 경우, 새롭게 프로세스를 하나 생성하는 편이 훨씬 제작자나 퍼포먼스 측면에서 좋기 때문에 굳이 생성하여 넣어 줄 필요가 없는 것이다.


임시저장 된 구조체는 디바이스 드라이버로 전송 되어 커널 메모리에 적재되는데 이 부분은 모든 기능을 알아본 후에 살펴보도록 하자.


 2.2 Fake Network Connection

 Network Connection에 대한 Volatility의 검증 단계는 다음과 같다.


그림 4 - Network Connection Check


ADD는 위 검증 단계를 모두 만족하기 위해 다음과 같은 허위 정보를 생성하였다.


그림 5 - Fake Network Connection


들어가는 정보가 Fake Process와 다를 뿐 순서나 원리는 동일하다.


 2.3 Fake File Object

 File Object에 대한 Volatility의 검증은 다음과 같다.


그림 6 - File Object Check


그림 - 7 Fake File Object


위 세가지 방법들로 생성 된 허위 구조체 정보는 다음과 같이 DeviceIOControl() 함수를 통해 디바이스 드라이버 파일(ADDdriver.sys)로 전송 된다.


그림 8 - DeviceIOControl()


방법들을 보면 공통적으로 Tag가 보인다는 것을 알 수 있다. 그래서 ADD는 드라이버 파일에서 커널 메모리를 할당 받아 Tag를 부여하고 바로 뒷 공간에 유저영역에서 생성한 구조체들을 저장 해 Volatility가 EPROCESS를 스캐닝 할 때 허위 정보로 판단하지 못하도록 한다.


드라이버 파일에는 ADDDeviceControl() 함수가 있고 DeviceIOControl() 함수가 실행되면서 드라이버 파일에 있는 DriverEntry() 함수에 IRP_MJ_DEVICE_CONTROL 메시지가 전달 되어 MajorFunction[]에 있는 ADDDeviceControl() 함수가 실행 된다.


ADDDeviceControl() 함수에는 다음과 같이 ExAllocatePoolWithTag() 함수로 태그와 함께 커널 메모리를 할당 받는 부분을 확인 할 수 있다.


그림 9 - ExAllocatePoolWithTag()


커널 메모리를 할당 받을 때 부여하는 태그는 총 3개로 각 태그가 의미하는 바는 다음과 같다.


 - 0xE56C6946 : File Object Artifact


 - 0xE36F7250 : Process Artifact


 - 0x45706354 : Network Artifact


즉, Volatility는 EPROCESS Scanning 방법을 이용 할 때 Tag를 먼저 찾고 그 이후에 있는 EPROCESS를 파싱하기 때문에 해당 방법을 사용하면 허위 정보도 Volatility는 진짜 정보로 인식하게 되는 것이다. 허위 정보가 삽입 된 메모리 이미지를 Volatility로 분석하였을 경우 다음과 같이 나오게 된다.


그림 10 - 허위 프로세스 정보


허위 정보는 pslist로는 나오지 않고 psscan으로 스캔해야 나온다. 이런 결과를 자세히 보지 않는다면 숨겨진 악성 프로세스라고 오해를 할 수 있다. 이제 이에 대한 탐지 방법을 알아보도록 하자.


3. ADD 탐지 방법

먼저 제작자가 밝힌 탐지 방법에 대해서 잠깐 보도록 하자. 발표자는 발표 당시, ADD 탐지 방안으로 "고양이와 쥐 게임", ADD Driver Hunt 등을 언급하였다. "고양이와 쥐 게임"은 서로 계속해서 단점을 보완해 나가는 것을 말하며, ADD Driver Hunt는 커널 메모리를 받기 위해 사용하는 디바이스 드라이버를 찾아내는 것을 말한다. 하지만 필자는 이번 글에서 이와 다른 방법을 소개 해 보고자 한다. 필자가 밝히는 방법은 영구적인 방법이 아닌 한시적인 방법이고 완벽하지 않은 방법이라는 것을 알아두기 바란다. 이 기술에 대한 최종적인 탐지 방안은 제작자가 밝힌 "고양이와 쥐 게임"이 가장 현실적인 방안이다.


 3.1 Fake Process 탐지 방법

위에서 보았듯이 허위 EPROCESS 구조체를 작성하여 허위 정보를 생성하지만 모든 필드를 사용하지는 않는다. 허위 프로세스는 Volatility에서 제공하는 Volshell로 EPROCESS를 보면 쉽게 파악이 가능하다.


그림 11 - Fake Proces EPROCESS DeviceMap 필드


대표적으로 EPROCESS에는 필수적으로 들어가야 할 필드들이 존재한다. 그 중에 DeviceMap이라는 필드가 존재하는데 해당 필드는 사용자 별로 사용자 상태 정보를 저장하는 필드이기 때문에 값이 필수적으로 삽입되어야 한다.


또, 허위 프로세스는 스레드를 가지고 있지 않다. 그렇기 때문에 thrdscan 등의 플러그인을 사용 해 ETHREAD 구조체를 스캔 해 보면 쉽게 허위 프로세스를 파악 할 수 있다.


마지막으로 아직 기술이 초기 상황이어서 그런지 어딘가 모르게 허술하다. 실제 프로세스의 EPROCESS와 비교해 보면 크기부터 조금씩 다르며 필드 또한 모두 쓰이지 않기 때문에 내포하고 있는 정보가 거의 없어 프로세스라고 하기에 조금 무리가 있어 보인다. 그래서 아직까지는 EPROCESS와 여러 프로세스적 요소들을 결합하여 분석하면 쉽게 허위 프로세스를 찾아 낼 수 있다.


해당 기술에 대한 대응방안이 계속해서 공개되고 안티 포렌식 기술에서 이를 대응하면 할수록 점점 CreateProcess()를 통해 프로세스를 생성하는 것이 오히려 더 편하게 느껴지므로 해당 방법은 더 이상 발전은 무의미 할 것으로 생각 된다.


 3.2 Fake Network Connection

해당 기술에 대한 대응방안은 뚜렷하게 없다. 하지만 분석하는데 해당 기술은 크게 영향을 미치지 못한다. 허위 프로세스를 식별하여 진짜 프로세스를 찾아내면 진짜 프로세스를 분석하여 진짜 네트워크 연결을 판별 할 수 있기 때문에 해당 기술에 대한 탐지 방안은 독립적으로 존재하지 않지만 독립적으로 존재할 필요도 없다.


 3.3 Fake File Object

해당 기술에 탐지 방안은 굉장히 쉽다. 해당 메모리를 이미징 한 PC의 디스크와 대조해 보면 된다. Volatility에서 filescan 플러그인을 사용하면 Root 경로부터 파일의 경로를 표시하여 준다. 그러므로 디스크에서 해당 경로에 실제로 파일이 존재하는지만 확인하면 된다.



4. 마치며

정말 재밌는 기술이다. 물리메모리를 대상으로 한 안티 포렌식 기술은 지금까지 별로 없었다. 하지만 해당 기술로 안티 포렌식 기술은 메모리를 대상으로 하여 한단계 발전하였음을 느낄 수 있었다. 아직은 많이 부족한 기술이지만 앞으로 악성 프로그램들이 사용하지 말란 법도 없으며, 또 사용 했을 경우 그 효과는 꽤 클 것으로 예상이 되는 만큼 해당 기술의 탐지 방안도 미래를 내다보며 연구되어야 한다고 생각 된다.

 대부분의 사람들은 GPS라는 단어를 알고 있다. 알고 있는 이유 중 가장 큰 것은 우리가 매일 사용하고 있는 스마트폰에 GPS 기능이 있기 때문일 것이다. 이렇듯 GPS는 우리 생활 깊숙히 들어와 있지만 대부분의 사람들은 GPS의 중요성을 인식하지 못하고 있고, 위험성 또한 인식하지 못하고 있다.


 GPS를 쉽게 설명하자면 "인공위성을 통해 우리들의 위치를 파악해주는 기술 또는 장치" 라고 할 수 있다. 좀 더 학문적인 의미를 들여다 보면 다음과 같다.


GPS(Global Positioning System 글로벌 포지셔닝 시스템) 또는 범지구위치결정시스템은 현재 완전하게 운용되고 있는 유일한 범지구위성항법시스템이다.


GPS는 초기에 미국 국방부에서 군사목적으로 개발하였지만, 기술이 발전하여 지금은 여러 곳에서 활용되고 있다. 초기 개발을 미국 국방부에서 하여 현재까지도 GPS에 전반적인 관리는 미국 공군 제50우주비행단에서 하고 있다. 


 위치를 파악하는 원리는 의외로 간단하다. 인공위성에서 발사한 전파를 GPS 수신기가 수신하고 관측점 까지의 전파 도착 소요시간을 측정하여 위치를 구하는 원리이다.


 그렇다면 디지털 포렌식에서는 왜 GPS가 중요한 것일까? GPS는 특정인의 동선과 위치를 파악 할 수 있는 직관적이면서 정확한 정보이기 때문에 수사관점이나 침해사고 분석 관점에서 굉장히 중요하다고 할 수 있다. 각각의 예를 들어보자면 다음과 같다.


1) 수사 관점(가상)

 - 범죄자 차량에 부착되어 있던 블랙박스 또는 네비게이션의 GPS 정보를 분석하면 범죄자의 동선을 파악할 수 있다.


2) 침해사고 분석 관점(실제)

 - 어떤 침해사고 범죄자가 웹 사이트 관리자를 우롱하기 위해 자신의 여자친구 사진을 해킹한 웹 사이트 메인에 걸어두었다. 하지만 이 사진에는 GPS 정보가 포함되어 있었고 이 정보로 인해 범죄자는 검거 되었다.


 위 예시들에서 보듯이 GPS 정보는 누군가를 찾아가기 위해서는 절대적으로 필요한 정보이다. 이런 이유로 디지털 포렌식에서는 GPS와 관련된 연구가 중요하다. GPS Forensic은 공인된 명칭은 아니다. 때로는 GPS Exploitation, 위성 항법 수사 등으로 불리기도 한다.


 이번 글에서 전반적인 GPS Forensics에 대해서 알아 볼까 한다.


1. GPS 시스템 구성

 GPS의 구성은 총 3가지의 영역으로 구성 된다. 


 1.1 Space Segment(SS, 우주 영역)

 GPS가 지구 주위를 돌고 있을 때의 궤도와 GPS 위성들을 의미한다. 해당 영역에는 현재 총 30개 이상의 위성이 고루 분포 되어 있고 이 위성들 중 24개의 위성이 항법에 사용되어 우리가 지구 어디서든 GPS를 사용 할 수 있게 지원한다. 아래 그림을 보면 대략적으로 우주 영역을 파악 할 수 있다.


그림 1 - 우주 영역 애니메이션(출처 위키)


 1.2 Control Segment(CS, 제어 영역)

 해당 영역은 GPS 위성을 관리하고 추적하는 지상의 제어국을 의미한다. 지상의 제어국은 하와이, 콰절런, 어센션 섬, 디에고 가르시아 섬과 콜로라도 스프링스에 있고 다섯 군데의 제어국에서 미국 지리정보국의 운영 하에 위성을 추적한다. 위성을 추적한 정보는 콜로라도 스프링스의 슈리버 공군기지로 전송된다. 콜라라도 스프링스의 수리버 공군기지를 제외한 네 군대 제어국은 부 제어국으로 분류되고 슈리버 공군기지는 주 제어국으로 분류 된다. 참고로, 주 제어국은 미국 공군 제 2 우주 작전 대대에서 운영한다.


 1.3 User Segment(US, 사용자 영역)

 사용자 영역은 GPS 수신기를 의미한다. 예를 들어 우리가 지금 이 시간에 사용하고 있는 스마트폰이 대표적으로 우리에게 친숙한 사용자 영역이라고 할 수 있다. GPS 수신기는 GPS 위성에서 송신하는 주파수에 동조된 안테나, 수정발진기등을 이용한 정밀한 시계, 수신된 신호를 처리하고 수신기 위치의 좌표와 속도 벡터 등을 계산하는 처리장치, 계산된 결과를 출력하는 출력장치 등으로 이루어져 있다.


2. GPS 원리

 위에서도 간단하게 GPS 원리를 설명하였지만 조금 더 자세히 설명해보도록 하겠다. 위치 계산은 인공위성이 보낸 신호를 수신기가 받을 때 시간 계산으로 구해지게 되는데 이때 인공 위성과 수신기는 시간의 오차를 줄이기 위해서 GPS 위성은 고정밀의 원자 시계를 가지고 있으며, GPS 수신기는 필요한 정밀도에 따라 원자 시계 또는 수정발진기를 이용한 시계를 가지고 있다. 


 인공위성으로부터 반송파에 실려 보내진 C/A 코드를 GPS 수신기가 감지하면 똑같은 코드를 생성해 두 코드의 시간차를 측정한다. 측정 된 두 코드의 시간차에 전파속도(빛의속도)를 곱하면 GPS 위성과 수신기 사이의 거리가 구해진다. 하지만 이는 정확하지 않은 의사거리(pseudorange)이므로 GPS 위성으로부터 수신한 신호에 포함되어 있는 항법 메시지 계수를 이용해 보정한다. 이런 이유로 우리는 쉽게 GPS 반경의 오차가 있다는 메시지를 확인 할 수 있는 것이다.


 계산 된 위치는 세계측지계인 WGS84 좌표법에 따라 계산된다. WGS84는 국제 표준이며 각 장비는 자신이 사용하고자 하는 좌표계로 해당 좌표를 쉽게 변환 할 수 있다.


3. GPS 활용 범위

 GPS는 정말 많은 부분에서 활용되고 있다. 간단하게 그림으로 표현하면 다음과 같다.


그림 2 - GPS 활용 범위


 휴대용 가전제품은 말할 것도 없이 스마트 폰, 디지털 카메라 등에서 사용되고 있는 GPS 기능을 생각하면 되고, 요즘 출시 되는 자동차는 네트워크 기능이 탑재되어 있어 GPS 기능도 지원을 하고 있다. 해양 부분은 선박의 위치를 파악하기 위해 GPS를 사용하고 있는 것을 생각하면 된다. 마지막으로 항공은 우리가 비행기를 탔을 때 휴대폰을 잠시 꺼두라는 승무원의 이야기를 들었다면 쉽게 이해가 갈 것이다. 이는 휴대폰에서 나오는 전파로 인해 비행기가 관제탑과의 교신, GPS 위치 계산에 방해를 받지 않기 위함이다.


4. 디지털 포렌식 관점에서의 GPS 정보

 사실 GPS 자체의 정보라기 보다는 GPS 기능을 사용하는 장비가 가지고 있는 정보라고 봐야 한다. 하지만 대부분 GPS 기능을 이용함으로써 생성되는 정보이기 때문에 GPS 정보라고 통칭하도록 하겠다. 정보들을 나열 해 보면 다음과 같다.


 1) 추적로그 : 간혹 어떤 장비들은 GPS 정보들을 로깅하기도 한다. 이 정보는 분석가가 직접 GPS 정보를 트래킹 할 필요를 없애주는 아주 중요한 정보이다.


 2) 경로 중간점 및 동선 : 경로 중간점은 대략적인 경로의 방향을 알 수 있는 부분이고, 동선은 정확히 어떤 경로를 이용하였는지 알 수 있는 정보이므로 굉장히 중요한 정보이다. 이 정보를 장비 자체에서 제공하는 경우도 있고 아닌 경우도 있으니 참고하기 바란다.


 3) 사용자가 저장한 위치(즐겨찾기) 또는 최근 경로 : 이 정보의 대표적인 예로는 네비게이션을 이용 할 때 사용자가 자주 가는 곳을 사용자가 직접 저장하는 경우와 네비게이션의 최근 목적지 저장 기능이 있다. 간혹 네비게이션이 자체적으로 경로들을 카운팅하여 사용자의 자주 가는 목적지 등을 판별 해주기도 한다.


 4) MAC ID : 이 정보는 기기의 고유성을 입증해주는 정보이다.


 5) 기타 : 이외에도 동영상, 사진 및 오디오 등이 있으며 기기 자체적인 로그가 있다.


5. GPS 데이터 포맷

GPS 데이터 포맷은 정확히 말하자면 업체 장비 별로 다르다. 하지만 전체적인 데이터 포맷은 표준을 따르고 있어 크게 다르지 않다. 대표적으로 NMEA 0183, GGA & GSA, GSV, RMC, VTG, RINEX 등이 있다. 각 데이터 포맷중에서 NMEA 0183이 사실상 산업표준이고, 또 분석가에게도 분석하기 쉬운 포맷이다. 그 이유는 데이터 포맷 자체가 ASCII 폼을 사용하고 있기 때문에 각 필드의 의미만 알면 분석 할 수 있기 때문이다.


각 데이터 포맷은 여기를 참고하기 바란다. 예시와 함께 설명이 잘 되어 있다.


6. GPS Forensics Tool

 이미 해당 분야에 많은 연구가 이루어져 있어 분석 도구가 출시되어 있다.


 - Magellan MapSend Manager

해당 도구는 경로 확인은 물론 편집 기능과 데이터 포맷을 변환할 수 있다.


그림 3 - MapSend Manager


 - EasyGPS

앞서 소개했던 도구와의 데이터 이동이 가능한 특징이 있으며, GPS 경로의 시각화를 지원한다. 또 GPS 데이터와 편집한 중간지점에 대한 백업 기능을 지원한다.


그림 4 - EasyGPS


 - GPS Utility

해당 도구는 GPS 기기와 동기화 된다는 것이 특징이다. 해당 도구도 위 도구와 마찬가지로 시각화를 지원하는데 다른 점이라면 2차원 지도 위에서 시각화를 지원해 좀 더 정확한 경로 파악이 가능하다는 점이다.


그림 5 - GPS Utility


 - Forensic Analyser

직관적인 UI가 특징이다. 네비게이션에 특화되어 있으며 장치를 자동으로 분석하여 경로를 표시하여 준다.


그림 6 - Forensic Analyser


 - TomTology

 위 도구들은 GPS 시각화 도구였다면 이번에 소개할 도구는 전문적인 GPS 장비 포렌식 도구이다. 데이터의 실시간 디코딩은 물론 장비 내에 저장공간에서 삭제된 경로 정보등을 복구 해 주어 분석을 도와준다. 경로나 위치는 구글 어스를 통해 사용자에게 시각화하여 준다.


6. GPS Forensics 고려사항

 디지털 데이터는 수정이 쉽다는 것이 특징이다. GPS 정보 또한 디지털 데이터이므로 변조가 가능하다. 과연 어떻게 우리가 분석할 정보들을 신뢰할 수 있을까? 육로에서는 가장 쉬운 것이 CCTV와의 대조이다. 특히 우리나라는 하루평균 CCTV에 한사람이 노출되는 횟수가 27번 정도에 달한다. 그러므로 자동차의 경로나 사람의 경로를 추적 할 때 CCTV와 대조해본다면 쉽게 데이터 조작 여부를 판단 할 수 있다.


 외국에서는 데이터 조작 뿐만이 아닌 기기 자체의 변조여부도 생각하여 비영리단체에서 네비게이션을 위주로 해시셋을 만드는 활동이 진행 중이다. GPS Forensics.org에서 해당 활동을 하고 있는데 여기에서 생성한 해시셋은 우리나라에는 적용이 되지 않으므로 우리나라 또한 해시셋을 생성하여 비영리목적으로 제공하는 활동이 필요해 보인다.


7. 마치며

 GPS Forensics는 수사나 침해사고 분석에 있어서 필수적인 요소는 아니지만 부가적인 분석을 통해 그 이상의 가치를 찾을 수 있는 과정이기 때문에 필요한 연구가 미리 선행되어야 한다고 본다. 하지만 아직까지 우리나라에서 사용되는 여러 제품들에 대한 깊이 있는 연구와 매뉴얼이 부족하므로 누군가가 발벗고 나서서 이러한 연구를 주도해야 한다고 생각한다. 외국처럼 해시셋은 둘째치고 각 제품들의 특징과 분석 매뉴얼, 분석 자동화에 대한 연구가 하루 빨리 진행되었으면 하는 바람이다.




  1. 이주아빠 2014.04.11 11:08

    좋은 글 잘보았습니다. 감사합니다^^

Get Windows Logon Password using Wdigest in Memory Dump EN Ver


We are in the physical memory window of the room to recover the password was investigated.

As a result of the study was to develop plug-in Cibola utility, which you use to for many people to share the knowledge.


ISSA 2013 Conference에서 출제 되었던 Challenge 문제입니다.


간접적으로 리눅스 침해사고를 경험 해 볼 수 있는 좋은 문제입니다.




[For.MD] ISSA 2013 New DFIR Challenge Write up.pdf


SANS에서는 비정기적으로 네트워크 패킷을 기반으로 한 포렌식 챌린지를 진행하곤 한다. 현재 총 10개의 문제가 출제되었고 작년 크리스마스에는 크리스마스 특별(?) 문제를 출제하였었다. 이번에 풀이해 볼 네트워크 포렌식 문제는 가장 최근에 나온 문제로, 필자도 참여했었던 문제이다. 처녀출전이라 어떻게 해야 입상에 가까워지는지 파악을 하지 못해 입상은 하지 못했지만 나름 시간 내가며 풀어 제출 했다는 것에 의의를 두어야 겠다고 생각한다. 총 6개의 질문과 보너스 질문 한가지 존재하며 보너스 질문은 답변 할 시 추가 점수가 부여 된다. 그럼 이제 질문 하나씩 답변 해보자.(아주 간단히 설명하도록 하겠다. 원래는 분석하고 그 정보를 결합해야 하는 부분들이 많이 존재하지만 글이 길어지므로 핵심만 짚고 넘어가겠다.)


문제로는 위에서 설명하였듯이 두가지의 파일이 주어진다.


quarter-SDHC-snippet.dd – A DD image of a the SDHC card found inside the quarter.

pcap-from-surviving-hard-drive.pcap – A packet capture that you copied off the surviving hard drive.


1. In his conversation with juniorkeyy, how old does Larry initially say he is?

(래리는 juniorkeyy와의 대화에서 처음 자신이 몇살이라고 말하는가?)


먼저 문제 파일로 제공 된 dd image 파일을 FTK 등으로 열어보면 여러가지 삭제 된 그림 파일들과 채팅 로그들이 발견된다.


[그림 1 - 삭제된 여러 파일들]


여기서 채팅 로그를 5개 볼 수 있는데 제일 첫번째 채팅 로그를 보면 다음과 같은 말을 한다.

2:38:17 PM Larry Pesce: I'm 4.

채팅 로그를 조금 더 읽어보면 다음과 같은 말 때문에 혼동이 올 수 있지만 질문에서는 처음 말한 말을 지칭하고 있기 때문에 위 말이 정답이 된다.

2:45:27 PM Larry Pesce: oh right.  yeah, I mean I'm 18. I swear.  4 + 14 = 18 right?

 - Answer : 4


2. What was the filename of the file that had the following SHA256 sum:

(다음 SHA256 값을 가지는 파일 이름은 무엇인가?)

e56931935bc60ac4c994eabd89b003a7ae221d941f1b026b05a7947a48dc9366


사실 이 부분에서는 프로그래밍을 해 간단히 알아내는 방법도 있다. 필자도 그렇게 하였다. 하지만 개학하기전 노트북을 새로 설치하며 자료가 사라져 이번에는 인터넷에 배포 되어 있는 툴을 이용하였다. 간단히 하려면 리눅스등에서 지원하는 sha256sum 명령과 *를 이용해 알아내도 된다. 


[그림 2 - 모든 파일의 SHA256 해시 결과]


하이라이트 된 부분을 보면 질문에서 제시 된 해시 값과 동일한 것을 볼 수 있다.


 - Answer : superstrand.jpg


3. What is the SHA256sum of the photo from the “dd” image that shows Larry taking a bite out of a wireless router?

(dd 이미지에서 래리가 라우터를 먹는 듯한 모습이 있는 사진의 SHA256sum 값은 무엇인가?)

사진들을 보면 래리가 라우터를 먹는 듯한 모습은 2개의 사진으로 존재한다. 혹시 몰라 문제 풀이 당시에는 이 두 사진 모두의 해시 값을 제출하였었다.

[그림 3 - haxorthematrix-has-a-posse.jpg]



[그림 4 - larryeatswrt.jpg]


이 두개의 sha256sum 값을 구해보면 다음과 같다.


 - Answer : e4e2fac9fc41546239d4e534bfe6588e4796f3799befc09b2787f5ad6c75faca(haxorthematrix-has-a-posse.jpg)

                1bdfd9d7445d38fdb7ba5acbb58669cf31c7c568c7aa6e6fcf0c961628f4c32e(larryeatswrt.jpg)



4. What is the SHA256sum of the image that shows zombie Larry taking abite out of a cat?

(래리가 고양이를 먹는 듯한 모습이 담긴 사진의 SHA256sum 값은 무엇인가?)

사진 파일들 중에서는 한가지 파일밖에 존재하지 않는다. 왠지 희망을 북돋아주려는(?) 질문 같다.


[그림 5 - Larry_zombie_cat.jpg]


 - Answer : 9c0a8bc6c3baa2ad7f390ef4e41c3edf3d98a543f492afb50a4bab8700af5766(Larry_zombie_cat.jpg)



5. What is Larry saying as he rocks back and forth? (No spaces or capital letters.)

(래리가 앞뒤로 무엇을 말하는가?)

사실 이 질문은 번역부터 어려웠다. 일단 dd image 파일에는 동영상 파일이 두개 있는데 하나의 파일은 가방을 무식하게 두들겨 가며 여는 동영상이고 하나는 래리로 보이는 사람이 담요를 덮어쓰고 뭐라고 반복해서 말하는 동영상이었다. 아무래도 래리로 보이는 사람이 반복해서 무엇인가를 말하는 동영상이 이 질문과 관련된 동영상 같아서 여러번 반복해서 들어보았다. 조금 느리게 들어보니 "naked hack"이라고 들리는 것을 확인 할 수 있는데, 질문에서 "back and forth" 가 걸렸다. 그래서 "hacknaked" 이라고 문제 풀이 할 때에는 결론을 내렸었다. 하지만 이 결론도 오래가지는 못했다. 아래 질문들을 풀다보면 스테가노그래피에 사용되는 키를 찾을 때 이 질문에서 찾은 답이 키라는 것을 가정하고 여러번(hacknaked, nakedhack, dekankcah 등) 시도를 했었는데 키는 결국 dekankcah 였다.

(답이 확실한지는 아직 모르지만, 답을 제출 할 때에는 제일 신빙성이 있어 보이는 아래 답변으로 제출 하였다.)


 - Answer : dekankcah


6. Where are Paul and John? Report their GPS coordinates:

(Paul과 John은 어디있는가? GPS 좌표를 찾아라)

a) Latitude(위도)

b) Longitude(경도)


dd image에 들어있는 파일들 중 EXIF 포맷의 이미지들이 몇 개 있지만 GPS 정보를 담고 있진 않았다. 이제 네트워크 패킷을 분석 할 차례라고 생각하여 네트워크 패킷을 분석하였다. HTTP 오브젝트 파일들을 보니 다음과 같이 google과 bing을 검색한 흔적이 보였다.


[그림 6 - google 검색 패킷]


참고로 구글의 검색 패킷들은 [그림 6]과 같이 실시간 검색으로 인해 한번의 검색이라도 수많은 패킷들이 생성된다. 실시간으로 계속해서 검색 서버에 쿼리를 날려주기 때문이다.

최종적으로 검색한 결과들을 보면 how do i hide things in pictures 라는 검색을 한 것을 볼 수 있는데 접속한 사이트로 접속을 해보면 7z를 이용한 파일 숨기는 방법이 나열 된 페이지를 볼 수 있다. 분석이 마무리 되어가는 시점에 SMB패킷을 발견했는데 SMB 오브젝트 파일을 검색해 보니 다음과 같이 fragment된 jpg 파일을 볼 수 있었다.


[그림 7 - SMB 오브젝트 리스트]


위 파일들을 저장해 3095byte의 파일을 footer 파일로 정해두고 4096byte 파일 중 헤더 파일을 찾은 뒤 여러 갈래로 조합해 보았다. 조합한 결과는 다음과 같이 참혹하였다.


[그림 8 - 참혹한(?) 조합 결과]


사실 이 이미지는 dd image에서도 찾아 볼 수 있는 이미지이다.(위 3번 질문의 답) 동일한 이미지라고 생각이 되어 다시 한번 조합을 시도해 보았다. 처음에는 SMB 헤더가 들어 있어 안되는 것인줄 알고 SMB 헤더를 제거하고 조합해 보았으나 동일한 결과를 얻었다...(ㅠㅠ) 그 후 다시 이미지를 살펴보았는데 오버랩핑(overlapping) 되는 24byte를 찾을 수 있었다.


[그림 9 - 24byte overlapping]


오버랩핑 된 부분을 한쪽만 지우고 다시 조합하니 아래와 같이 정상적인 이미지를 만들 수 있었다.

[그림 10 - larryeatswrt-with-secretsauce.jpg]


파일 제목과 구글 검색 결과를 연관지어 생각해보면 이미지에 어떠한 것을 숨겼다고 추측 할 수 있다. 일반적으로 이미지에는 스테가노그래피를 이용해 무엇인가를 숨기니 한번 풀어보도록 하자. 먼저 동일한 이미지(3번 질문 이미지)와 해시 값을 비교해 보고 실제로 존재하고 있는지 stegdetect를 이용 해 알아보자.


[그림 11 - md5 해시 값 비교]


[그림 11]을 보면 md5 해시 값이 다르다는 것을 알 수 있다. 조금 더 추측이 정확해져 가고 있다.


[그림 12 - stegdetect]


아무런 옵션 없이 점검하였을 때는 발견되지 않았지만 알고리즘 강도를 높여 점검하니 스테가노그래피가 적용되었다고 나오는 것을 볼 수 있다.


 * 참고 : 알고리즘 강도를 높이면 정상파일도 스테가노그래피가 적용되었다고 오진을 할 수 있다. 절대적인 신뢰성이 있지는 않다.


이제 outguess로 무엇이 숨겨져 있는지 추출해보자.


[그림 13 - outguess를 이용한 숨겨진 데이터 추출]


어떤 데이터인지 확인하고 열어보면 다음과 같다.


[그림 14 - 추출된 데이터]


정상적으로 숨겨진 데이터를 볼 수 있는데 좌표로 보이는 숫자들이 보인다.


 - Answer : a) Latitude(위도) : 6.421402

                 b) Longitude(경도) : 3.441021



BONUS. What is the name of the nearest bar?

(가장 가까운 bar의 이름은 무엇인가?)


이 문제는 6번 질문과 이어지는 질문으로 구글 지도로 위도와 경도를 검색하면 바로 옆에 보인다.


[그림 15 - GPS 검색 결과]

해당 bar 이름을 클릭하면 리뷰가 하나 있는데 읽어보면 확실하다는 감이 온다.


This bar was good, but there were some rowdy guys who would shout "WE'RE THE WORLDS #1 HACKERS" and then laugh loudly. No one understood why it was funny, but they were nice and bought the whole place many rounds of drinks.


 - Answer : Bar Baric


'[+] Hacking > [-] Challenge Report' 카테고리의 다른 글

pCTF 2013 Forensic 150점 풀이  (0) 2013.04.30
CAT Security Forensic 1 Write-Up  (2) 2012.12.07
SANS Forensics Puzzle 10 Write up  (6) 2012.10.14
exploit-exercises Nebula - Level05  (0) 2012.07.27
exploit-exercises Nebula - Level04  (0) 2012.07.27
  1. 익명 2013.04.10 17:58

    비밀댓글입니다

  2. 11 2013.11.17 21:26

    스태가노그래피은 보통 패스워드가 걸려있는데.. 이런문제들은 어떻게 풀어야하나요?

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2013.11.20 09:03 신고

      비밀번호가 있다면 보통 문제 내에 여러 키워드들 중 하나가 스테가노그래피 비밀번호 입니다. 만약 그렇지 않고 브루트포싱 등의 문제라면 그건 문제의 질이 떨어지는 거라 볼 수 있어요 ㅎ

  3. 1234 2013.11.20 13:57

    아..그러쿤요 이번에 디지털범인을 찾아라 포렌식 대회?를 참여를 하고 있는데.

    패스워드로 추정되는 여러 문구가 나오지만 패스워드가 아니더라구요..

    흐미..무슨 퍼즐마추기 대회 같음 ㅠ

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2013.11.20 20:39 신고

      아 대회 참여중이시군요 ㅎ

      건승하길 빌겠습니다 :)

+ Recent posts