2014년 10월 26일 일요일

파일 시스템 아티팩트(Filesystem Artifact)

Page info



파일 시스템과 NTFS 아티팩트 

파일 시스템은 컴퓨터가 보조저장장치를 사용함에 있어, 파일이나 자료를 쉽게 찾거나 접근하여 활용할 수 있도록 내용을 조직하는 체계를 말한다. 데이터를 저장하기 위한 저장 공간에는 모두 그 형태에 알맞는 파일 시스템이 존재한다고 보아도 무방하며, 운영체제에 따라 사용(지원)하는 파일시스템의 종류가 다르다.

※운영체제별 파일 시스템은 대표적으로 Unix, Linux계열의 UFS, EXT Series와 Apple社의 HFS, HFS+, 윈도우계열이 주로 사용하는 NTFS, FAT 등이 있다. 이 밖에도 분산형 파일 시스템이나 최근 운영체제 트렌드에 맞게 새로이 개발되고 있는 것, 모바일 전용의 파일 시스템 등 수많은 파일 시스템이 존재한다. 파일 시스템에 대해서는 추후 따로 자세히 다뤄야할만큼 내용이 많고 중요하므로, 여기서는 간단한 소개 정도로 넘어가고자 한다. 

이와 같이, 파일 시스템은 저장장치와 운영체제의 구성에 그 특성이 기인하므로, 디스크의 구조에 관한 분석 내용과 함께 조금 더 자세하게 다뤄지는 것이 맞다. 하지만, 윈도우 계열에서 운영체제 파티션에 주로 사용되는 NTFS는 그 특징 때문에, 윈도우 아티팩트를 분석할 때 함께 분석되는 경우가 많다. 

일반적으로 파일 시스템은 메타데이터 영역과 실제 파일 데이터 영역을 분리하여 관리를 하는데, NTFS는 기본적으로 메타데이터 역시도 파일 데이터의 형태로 관리를 하여, 메타 데이터와 실제 데이터 영역의 구분이 다소 모호한 면이 있다. 

이는 단순히 NTFS에서 조금 더 효율적인 관리를 위하여 파일 형태의 메타데이터 관리 방법을 채택한 것으로 기본적인 파일 시스템의 구성 관점과는 크게 다르지 않지만, 메타 데이터를 파일 형태로 관리함으로 인해서, 다른 아티팩트를 수집할 때에 보다 편리하게 파일 시스템의 메타 데이터까지 수집할 수 있다는 특징을 제공해 준다. 

또한, 앞서 계속 언급된 파일 시스템의 메타 데이터는 파일 시스템의 계층 구조나 파일의 시간 정보를 비롯한 여러가지 속성 정보, 파티션의 사용 상태 및 파일의 존재(삭제) 여부 등 파일 시스템의 운용를 위한 모든 정보를 상대적으로 작은 영역에 한꺼번에 관리하고 있기때문에 시스템 분석에 엄청난 정보를 제공해 준다. 

NTFS에서 역시 몇 가지 메타데이터를 수집함으로써 파일시스템에 관한 일련의 사용 과정을 정확하게 그려낼 수 있기에, 분석 대상 시스템이 NTFS를 사용한다면 반드시 메타데이터를 수집하여 분석에 임할 수 있도록 하자.

※물론 나머지 파일 시스템에 관해서도 메타데이터의 분석은 필수이다. 하지만, 대부분은 디스크 이미지를 수집하여 통합 분석 도구를 통해 파일 시스템의 메타데이터를 확인해야하는 반면, NTFS에서는 보다 쉽게 메타데이터를 수집할 수 있다는 차이를 기억하자. 


NTFS의 속성 정보 파일

$MFT(Master File Table)파일은 파일 시스템 내부의 각 파일의 속성 정보를 포함하는 NTFS 파일 시스템의 핵심 메타 파일이다. 여기서 재미있는 것은 $MFT파일의 속성 정보 역시 $MFT 파일에 포함되어 있다는 것이다. 

따라서 운영체제는 로딩 시 필요한 파일에 접근하기 위하여 $MFT의 해석을 최 우선적으로 진행한다. 그렇다는 것은 포렌식 분석가 역시 파일 시스템의 전체 구성 및 파일의 속성 정보를 확인하기 위해서 $MFT파일을 필수적으로 수집해야함을 의미한다. 

$MFT파일에서 분석 시 중요하게 다뤄지는 정보는 아래와 같다.

  • 파일의 시간 정보 : $MFT파일은 각 파일의 정보를 기록하는 단위인 MFT Entry의 나열로 이루어져 있다. MFT Entry에는 연결되는 파일의 MAC(수정,접근,생성)시간을 비롯하여 MFT Entry 자체를 수정한 시간(Entry Modified)도 기록을 하고 있다.
    MFT Entry는 파일의 정보를 기록하기 위해 여러가지 속성을 활용하는데, 이 때 시간 정보를 기록하는 속성은 $STANDARD_INFORMATION 속성과 $FILE_NAME 속성이다. 정확한 분석을 위해서는 두 가지 속성에 기록된 시간을 모두 확인하여야 한다.
    초기 파일이 생성되며, 관련된 MFT Entry가 생성될때는 $STANDARD_INFORMATION 속성과 $FILE_NAME에 기록된 시간이 동일하지만, 운영체제의 정책과 운용 목적에 따라 각각의 시간이 달라질 수 있으므로 염두에 두고 분석에 임할 수 있도록 하자. 
    .
  • ADS(Alternative Data Stream) : MFT Entry는 $DATA라는 속성으로 실제 데이터 영역에 존재하는 파일의 위치 정보를 관리한다. 일반적으로는 하나의 파일에 하나의 MFT Entry가 생성되므로 $DATA 속성도 한개만 존재하지만, 실제로 $DATA속성의 개수에는 제한이 없다.
    이에 따라 $DATA 속성을 2개 이상 가지고 있는 MFT Entry도 존재하며, 이와 같은 추가적인 $DATA 속성을 ADS라 한다.
    ASD는 운영체제가 시스템 관리의 목적으로 직접 생성하는 경우도 있지만, 악의적 의도가 있는 사용자나 프로그램이 데이터 은닉을 위해 사용하기도 한다. 따라서 $DATA 속성이 2개 이상 존재하는 MFT Entry는 특별히 유심히 살펴 보아야 할 것이다. 
    .
  • Extended Attribute : 과거 OS/2 운영체제가 사용되던 시절에 사용된 HPFS파일 시스템과의 호환성을 유지하기 위해 사용되는 속성을 Extended Attribute라고 부른다. $EA, $EA_INFORMATION 두 가지 속성이 이에 해당하며, 실제 분석에서 거의 발견되지 않지만, ZeroAccess류의 악성코드가 이 속성에 스스로를 은닉하면서 많은 분석가들에게 정체가 알려진 속성이다.
    중요한 것은, 평소에 잘 발견되지 않는 속성을 발견했을 때 조사에 임하는 태도일 것이다. 익숙한 것에서 흔적을 빠르게 찾아내는 것도 중요하지만, 숙련된 분석가라면 평소 보지 못했던 것에 더욱 집중할 필요도 있음을 잊지 말자. 
    .
  • ZoneIdentifier : ADS 일종인 ZoneIdentifier는 윈도우 운영체제가 파일의 출처를 관리하기 위해 최소한으로 기록하는 데이터 스트립으로, 디지털포렌식 분석에서는 해당 파일을 인터넷으로부터 다운로드한 것인지 여부를 판단하기 위해 활용되는 경우가 많다. 파일의 MFT Entry가 ZoneIdentifier를 포함하며, ZoneId3으로 저장되어 있을 경우 해당 파일은 인터넷으로 부터 다운로드 받은 파일인 것으로 판단 가능한 것이다.
    또한 인터넷 사용 흔적 분석 과정에서 다운로드 된 것으로 추정되는 실행 파일 발견하였지만 ZoneIdentifier가 존재하지 않는 경우에 대해서도 파일의 진위성을 의심해 볼 필요가 있다. 

NTFS 로그 파일

NTFS는 
안정적인 시스템의 운용을 위하여 $LogFile과 $UsnJrnl이라는 메타파일을 이용해, 파일 시스템의 운용에 관련된 정보를 기록한다. 이렇게 기록된 정보는 디지털포렌식 분석과정에서 매우 유용하게 사용된다. 이는 $MFT에 존재하는 흔적만으로는 알 수 없었던 파일의 운용 상태와 기록까지도 파악할 수 있는 정보를 제공해 주기 때문으로, 타임라인 분석 과정에서 로그파일의 내용은 꼭 확인해 볼 필요가 있다. 

  • $LogFile : NTFS 트랜잭션 로그 파일이라 불리는 $LogFile은 시스템 오류나 갑작스런 전원 차단 발생시, 작업 중이던 파일의 복구를 위해 사용한다. 모든 트랜젝션 작업을 레코드 단위로 기록하며, MFT Entry 번호, 변경된 속성, 수정된 위치, 변경 전, 후의 모든 정보를 상세하기 기록하므로 이를 분석하여 파일 시스템의 사용 이력을 비교적 정확하게 그려낼 수 있다. 
    ※ $LogFile의 각 작업 레코드는 순차적으로 증가하는 식별 값(LSN - LogFile Sequence Number)을 가지며, 이을 해석하기 위해서는 최종적으로 $MFT
    교차하여 파일 단위 이벤트(생성, 삭제, 수정, 이름변경)해석이 필요하다. 이 과정을 잘 해석해 주는 도구로 NTFS Log Tracker가 있으니, 필요 시아래 경로를 통해 활용해보자.
    https://sites.google.com/site/forensicnote/ntfs-log-tracker.
  • $UsnJrnl : $UsnJrnl역시 보다 안정적인 파일 시스템의 사용을 위하여 Windows 7이상에서 사용하는 파일 변경 이벤트 관리 로그 파일이다. 응용 프로그램이 특정 파일의 변경 여부를 파악하기 위해 사용하며, 레코드 단위로 순차적으로 저장하여 관리한다. (식별  사용 - USN(Update Sequence Number))
    레코드에는 아래의 내용 중 파일에 어떠한 변화가 일어났는지에 관한 정보가 담겨 있기에 정확하게 분석한다면 $LogFile을 통해 얻은 정보와 조합하여 강력한 데이터의 흐름 정보를 얻을 수 있게 된다. 
    • 기본 $Data 속성에 데이터가 Overwrite
    • 기본 $Data 속성에 데이터가 추가
    • 기본 $Data 속성에 데이터가 삭제
    • 이름 있는 $Data 속성에 데이터가 Overwrite
    • 이름 있는 $Data 속성에 데이터가 추가
    • 이름 있는 $Data 속성에 데이터가 삭제
    • 파일이나 디렉터리가 생성
    • 파일이나 디렉터리가 삭제
    • 파일의 확장된 속성이 변경
    • 접근 권한이 변경
    • 객체명 변경시, 변경 전 이름
    • 객체명 변경시, 변경 후 이름
    • 인덱스 상태가 변경
    • 파일이나 디렉터리의 속성이 변경
    • 하드 링크가 생성되었거나 삭제
    • 압축 상태가 변경(압축됨 or 압축이 풀림)
    • 암호화 상태가 변경(암호화됨 or 복호화됨)
    • 객체 ID가 변경
    • Reparse 지점값이 변경
    • 이름 있는 $Data 속성의 생성 or 삭제 or 변경
    • 파일 또는 디렉터리가 닫힘
    .
※$LogFile과 $UsnJrnl의 구조 분석에 관한 자세한 정보는 아래 경로에서 확인이 가능하다.(무료로 좋은 도구를 배포해주고 계신 Blueangel님의 노고에 감사를 표한다.)http://forensicinsight.org/wp-content/uploads/2013/06/F-INSIGHT-NTFS-Log-TrackerKorean.pdf



분석 대상(Target)

※ 아래의 내용은 PFP-List와 연동되는 정보로, PFP에서 확인 및 분석에 직접적인 활용이 가능합니다.
   (PFP ManualPFP DownloadPFP home)


NTFS Meta Files
Target Path(Location)
%SystemDrive%\$MFT
%SystemDrive%\$LogFile
%SystemDrive%\$Extend\$UsnJrnl
Check List
FileSystem Structure
FileSystem MetaData
Deleted file
File time check and analysis
TimeLine extraction and analysis
Related Tools
[Public] File System
[Public] System TimeLine Analysis(NTFS Log Tracker, Log2TimeLine)

앞서 설명한 NTFS 메타 파일은 위 표와 같은 경로를 고정적으로 사용한다. $MFT, $LogFile, $UsnJrnl 의 수집은 타임라인의 생성과 분석에 결정적인 역할을 한다. 



2014년 10월 11일 토요일

윈도우 메모리 분석(Windows Memory Analysis)

Page info


메모리 분석(Memory Analysis)
Image from www.nikgupta.net



물리 메모리는 컴퓨터 구성 요소 중 주 기억장치에 상응하는 요소로, 시스템이 동작할 때 실제 사용중인 데이터를 보조기억장치로부터 불러들여 저장해두는 역할을 한다. 중앙처리장치(CPU)는 데이터 연산시, 주기억장치에 있는 데이터만을 연산에 사용할 수 있기 때문에 물리메모리는 컴퓨터 사용에 가장 필수적인 요소 중 하나이다. 

결국, 컴퓨터가 동작 중인 상황에서 물리메모리의 전체 내용을 수집 한다면 당시의 시스템의 동작 상황과 목적을 거의 빠짐없이 파악할 수 있게 된다. 

※ 물리메모리 수집관련 내용 참고 : 물리 메모리 수집(Physical Memory Acquisition)

본 페이지와 함께 이어지는 하위 페이지들에서는 윈도우 시스템에서 물리 메모리를 수집한 경우, 얻을 수 있는 정보와 분석 방법에 관하여 짚어볼 것이다. 

실제로, 물리 메모리는 주기억 장치로서의 역할을 수행하기 위해 운영체제보다는 중앙 처리장치에 그 특징이 기인하기도 한다. 따라서 주기억 장치에 대한 분석을 골자로하여 통합적인 분석 방법론이 정립되는 것이 옳기도 하다.
볼라틸리티 프로젝트는 이와 같은 목적에서 진행되는 분석 프레임워크 제작 프로젝트로, 물리메모리 덤프의 내용을 매우 정밀하게 분석할 수 있는 도구를 무료로 제공하고 있다.

PFP 프로젝트는 사용자들에게 더욱 필요한 기술을 우선적으로 개발하기 위해, 물리메모리 분석에 관한 내용은 볼라틸리티 프레임워크와 연계하여 제공하고자 한다. 


분석 요소(Analysis factors)
.
  • 초기 대응 관련 내역 추출(First response related)

    초기 대응 시점에 가장 중요한 것은 휘발성 데이터가 사라지기전에 빠르게 내용을 수집하는 것이다. 이 때, 물리메모리의 수집이 선행되는 경우가 많은데, 이는 여러가지 활성 상태의 조사가 수행되면서 물리메모리가 오염될 여지가 있기 때문에 이를 보호하고자 하는 목적 때문이다.
    그리고 더욱 중요한 것은, 물리메모리에 관한 연구가 깊이있게 진행되면서 명령어를 통해 수집하던 휘발성 데이터의 내용을 전부 메모리에서 추출해낼 수 있다는 것이다. 이 때문에 물리 메모리 덤프와 디스크 이미지의 수집 만으로도 현장에서 해야할 일은 더 이상 없다고 보아도 과언은 아니다.
    (물론, 더욱 효율적인 조사를 위해 명령어를 통한 휘발성 데이터 수집과 비 휘발성 데이터의 선별 수집도 여전히 현장에서 이루어지고 있는 것이 현실이긴 하다.)
    .
  • 악성 행위 탐지(Malicious act detect)

    물리 메모리를 전체적으로 살피다 보면, 악성프로그램이 악성 행위를 위하여 의도적으로 메모리를 조작한 내역을 파악할 수 있다. 대부분의 은닉, 변조 등의 시스템 기만 행위는 시스템 API의 동작과정을 교묘하게 이용하여 이루어지기 때문에, API를 통해 기만 사실을 파악한다는 것은 현실적으로 어렵다고 보아야 한다.
    하지만, 메모리의 구조를 미리 조사하여 운영체제에서 사용하는 오브젝트의 형상을 잘 알고 있다면 이에 대한 변조, 은닉 등에 관한 내용을 정확하게 분석할 수 있게 된다.
    침해사고 조사과정에서 메모리의 수집 목적은 사실 상 악성행위에 관한 정밀한 조사 때문이라는 것을 기억하자.
    .
  • 추가 정밀 조사(Detailed analysis)

    메모리는 사실상 우리가 컴퓨터 시스템을 통해 사용하는 모든 데이터가 반드시 거쳐야 하는 영역이다. 이에 따라 시스템 분석을 위한 아티팩트 역시 메모리상에 로드되어 사용되다가 수집 시점에 같이 수집되는 경우가 더러 있다. 또한 레지스트리와 같이 운영체제가 지속적으로 사용하는 데이터는 반드시 수집된 메모리 상에 존재하게 된다.
    이와 같은 내용 역시 정확한 분석 결과를 가져오는 경우는 드물지만, 발견된다면 조사에 도움이 될 가능성이 크기 때문에 꼭 살펴 보도록 하자.


    .

2014년 10월 2일 목요일

윈도우즈 시스템 분석(Windows System Analysis)

Page info


윈도우 시스템 분석(Windows System Analysis)

Image from dititaltrends.com
Windows Family는 
마이크로소프트社에서 제작한 운영체제 제품군으로, 데스크탑 운영체제로서 널리 명성을 누려왔지만, 최근에는 서버군의 점유율도 크게 높아지고 있으며, 모바일 버전의 운영체제도 적지 않은 사용자를 확보하고 있다. 특히 데스크탑 운영체제 시장만을 본다면,  세계 90%이상의 시장 점유율을 보유한 세계최대 운영체제라고 해도 과언이 아니다. 


결국, 디지털 포렌식 조사  조사자들이 가장 흔하게 접하게 되는 운영체제도 윈도우 계열일 수밖에 없다. 

그러므로, 디지털 포렌식 조사자에게 윈도우 시스템의 분석 능력은 필수도, 선택도 아닌 기본중의 기본이자 때로는 전부이기도 한 것이다. 

윈도우 계열의 시스템을 조사하기 위해서는 타 운영체제에 비해, 유난히 많은 공부가 필요한데, 원인은 역시 높은 점유율에 있다. 점유율이 높은만큼 전용 어플리케이션이 많고, 이에 따라 다양한 흔적이 시스템에 잔존하게 된다. 또한 시스템의 운용을 담당하는 번들 프로그램 역시도 전용 포맷을 사용하는 경우가 많다는 것도 윈도우 계열 운영체제의 특징이다.

그리고 이러한 흔적들에 대한 정보를 사전에 파악 하여 습득해 두는 것이 디지털 포렌식 조사자의 기본적인 소양이기 때문에, 윈도우 시스템의 분석을 위해서는 다양한 흔적들에 대한 선행 학습이 필요하다.


정리하자면, 결국 디지털 포렌식 분야의 입문자가 윈도우 시스템의 분석 기술을 선행적으로 익혀야 하는 이유는, 첫째도 둘째도 셋째도 점유율이 높기 때문이다.

또한, 조사를 위한 사전 습득 기술이 다양하게 존재하기 때문에, 잘 익혀둘 경우 다른 운영체제의 분석 기술에 대해서는 상대적으로 쉬운 습득이 가능하므로 깊이 있게 학습해둘 필요가 있다.


윈도우 시스템 아티팩트 분석

시스템 아티팩트란, 시스템이 운용되면서 사용자 또는 운영체제에 의해 남게되는 모든 흔적을 의미한다. 따라서, 시스템 아티팩트의 항목은 정의되기가 힘들며, 지금도 꾸준히 포렌식 기술 연구자들에 의해 여러가지 아티팩트가 새로 공개되고 있다.

훌륭한 분석가라면, 아티팩트의 공개 동향에 항상 눈과 귀를 열고 즉각적으로 분석에 활용할 줄 알아야 하겠다.

여담으로, 사용자와 운영체제에 의해 남겨지는 흔적들은 각각 보관 증거와 생성 증거로 그 흔적의 의미가 다소 다른데, 해당 내용은 PFP 소개(2)-디지털 증거에서 확인할 수 있다.

대부분의 흔적을 로그파일에 텍스트로 남기는 *nix계열의 시스템과 달리 윈도우는 시스템 운용을 위한 어플리케이션을 통해 다양한 파일 포멧에 체계적으로 흔적을 보관하는 편이다.

본 포스팅에서는 아티팩트의 의미만 파악하고 넘어가도록 하자. PFP 프로젝트에서 다루고 있는 윈도우 시스템 아티팩트의 내용에 대해서는 윈도우 아티팩트 분석(Windows Artifact Analysis)에서 확인할 수 있다.
(PFP, PFP 메뉴얼 다운로드)

PFP 프로젝트에 포함된 아티팩트는 웹, 학술단체에 공개된 내용을 대부분 포함하고 있으며, 앞으로도 꾸준히 업데이트 될 것이다. (아티팩트 정보에 대한 조언은 프로젝트 발전에 큰 힘이 됩니다.)


윈도우 레지스트리 분석

레지스트리는 윈도우 시스템에서 운영체제 및 어플리케이션에 관한 각종 설정 정보를 담고 있는 데이터베이스이다. 레지스트리도 결국은 시스템 아티팩트의 일종이지만, 윈도우 시스템 분석에 수많은 정보를 제공하고 있고, 레지스트리 자체에 대해서도 정밀한 분석을 요구하는 경우도 많기 때문에 늘 특별한 관심속에 조사되는 아티팩트이다.

PFP 프로젝트에서도 역시 윈도우 레지스트리에 대한 내용은 아티팩트 분석과 따로 분리하여 다루고 있다. 프로젝트에서 다루는 레지스트리 분석에 관한 내용은 윈도우 레지스트리 분석(Windows Registry Analysis)에서 확인할 수 있으며, 역시 꾸준히 업데이트 될 것이다.


윈도우 메모리 분석

메모리는 사실, 주기억 장치로서의 역할을 수행하기 위해 운영체제보다는 중앙 처리장치에 그 특징이 기인하기도 한다. 따라서 주기억 장치에 대한 분석을 골자로하여 통합적인 분석 방법론이 정립되는 것이 올바르다는 생각은 필자에게도 있다. 그리고 현재 그 내용을 전 세계적으로 가장 잘 정립하고 공개하고 있는 것이 볼라틸리티 프로젝트이다.

본 프로젝트의 윈도우 메모리 분석 파트에서는 윈도우 시스템에서 추출된 메모리에 관련하여 얻어낼 수 있는 정보와 그에 대한 활용 방안을 정립하는 것을 목적으로 한다.
참고 - 윈도우 메모리 분석(Windows Memory Analysis)