2014년 8월 26일 화요일

휘발성 데이터 수집(Volatile Data Acquisition)

Page info



휘발성 데이터(Volatile Data)

휘발성 데이터란 전원의 공급이 끊기거나 시간이 흐름에 따라 자연히 저장 공간에서 사라지는 데이터로, 말 그대로 휘발성을 가진 디지털 데이터를 의미하는 용어다.  
일반적으로 디지털 포렌식에서는 컴퓨터가 켜져 있을 , 보조기억장치에 해당하는 물리 메모리(RAM) 로딩되어 있는 데이터를 가리켜 휘발성 데이터라 한다

따라서, 디지털 포렌식에서 "휘발성 데이터의 조사는 곧, 물리 메모리 내용의 조사" 보아도 무방하다.


휘발성 데이터 수집 방법의 종류

휘발성 데이터를 수집하는 방법에는 시스템 내장 명령 혹은 시스템 API로 구현된 도구를 통하여 원하는 정보를 수집 하는 방법과 물리 메모리 전체의 내용을 수집하는 방법이 있다. 이때, 물리 메모리를 수집한 경우에는 메모리의 구조를 분석하여 원하는 정보를 채득하는 과정을 더해야 한다. 

 페이지에서 다루고자 하는 주된 내용은 시스템 내장 명령을 이용한 방법이므로 물리 메모리 전체를 수집하는 방법에 대해서는 PFP Document에서 Physical Memory Acquisition의 내용을 참고하도록 하자. 


휘발성 데이터의 포렌식적 의미

휘발성 데이터는 디지털 포렌식 조사에서 조사 당시의 시스템 상태를 정확하게 파악할 있게 하는데 특히 도움을 주는 데이터이다. 

조사 시점에 연결된 네트워크, 조사 시점에 동작 중인 프로세스를 비롯한 각종 사용중인 운영체제의 자원 등은 현장에서 휘발성 데이터를 수집하지 않고는 얻어낼 수 없는 귀한 정보들이다. 

그 밖에도 암호화 데이터도 사용 직전에는 복호화 상태로 존재하게 되는 것처럼 물리 메모리에서는 평문(보호 해제된 혹은 복호화된) 상태의 데이터를 취득할 수 있는 가능성이 매우 높다. 

본 포스트의 내용은 물리 메모리의 수집과 분석에 대한 것과는 별개이지만, 휘발성 데이터라는 큰 시각에서 유사한 내용이기에 짚어 보았다. 

좀 더 넓은 관점에서 휘발성 데이터 수집의 의미는, 상위 포스트(초기 대응활성 시스템 포렌식)에서 확인 가능하다. 


이어지는 내용에서는 시스템 명령을 통해 수집하는 휘발성 데이터의 목록과 관련 명령을 확인할 수 있다.

덧붙여, PFP를 통해서도 시스템 내장명령을 구동시킬 수 있지만, 가급적 관련 명령을 운영체제별로 모아 미리 스크립트, 배치 파일등을 구성하여 현장에서 활용하길 권장한다. 


분석 대상(Target)

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


일괄 수집(Comprehensive collection)
Check List
System time
Network connection
Process List
Logon users
Loaded DLL List
Handles
Remote Open files
Open port and mapped process
Command history
Service List
NIC information
Routing table
Schedule
Clipboard
Network drive and shared folder
Netbios
Process dump
Related Tools
[Public] Live Acquisition(Volatile)

휘발성 데이터를 수집할 때에는 일반적으로 분석에 필요한 데이터를 한번에 일괄 수집할 수 있는 자동화 스크립트나 도구를 이용한다. 보통은 조사관이 상황에 알맞게 배치 파일을 만들어 사용하기도 하지만, 최근에는 잘 개발된 .무료도구들이 많이 있으므로, 이를 활용하는 것도 권장할만 하다. 

스스로 배치파일을 만들어 사용하고자 경우, 위 표의 체크 리스트의 내용은 가급적 반드시 수집하는 것이 조사에 도움이 되므로 고려하도록 하자. 

체크리스트의 정보를 수집하는 명령은 본 페이지의 이어지는 내용에서 확인 가능하다. 


주의할 점은, 배치파일 작성시 시스템 유틸리티는 가급적 대상 시스템의 것을 사용하지 않고,미리 준비해간 유틸리티를 사용하는 것이 바람직하다는 것이다. 

조사 대상 시스템의 명령어(유틸리티) 이미 공격자, 용의자에 의해 변조되었을 있기 때문이다. 

따라서, 미리 버전의 운영체제에서 시스템 명령 유틸리티를 수집하여 보관하는 것이 좋으며, PFP에서 직접 명령을 수행하여 결과를 확인하는 것은 부득이 도구를 준비하지 못하였거나 명령이 출력하는 내용 포맷을 확인하기 위해서 사용하는 것이 좋다. 



    시스템 기본 정보(System information)
    Check List
    Product name(OS name)
    Owner
    Organization
    Product ID
    BuildLab
    Install date
    System Root
    Related Tools
    systeminfo
    wmic os get installdate
    wmic os get currenttimezone
    wmic os get serialnumber

    시스템 기본 정보를 취득하여, 발생 가능한 취약점에 대한 정보 등을 확인하는데 사용한다. 또한, 시스템의 정보는, 케이스 구성의 가장 기본적인 정보이며 분석 대상이 되는 모든 데이터에 대한 분석 기준을 제공하기도 하므로반드시 수집하는 것이 옳다. 



    시스템 설정 시간(System time)

    Check List
    Current System Time
    Related Tools
    date /t
    time /t

    향후 시간 관계 분석을 위하여 수집 당시의 시간을 시스템에서 채취해야 한다. 초기대응을 진행하는 시간도 물론 중요하지만, 당시 시스템에 설정된 시간을 알아야 추후 분석된 결과물의 시간관계를 정확하게 파악할 수 있으므로, 어떠한 사고 유형을 막론하고 가장 중요한 정보라 할 수 있다. 
    (매우 중요한 정보이므로, 수집 과정에서도 시간은 상황별로 틈틈히 기록할 수 있을만큼 기록하는 것이 추후, 조사에 도움이 된다.)



    네트워크 연결 정보(Network connection)

    Check List
    Network connection information in same network
    Related Tools
    netstat -nao

    현재 시스템과 연결된 네트워크 정보 수집하는 부분이며, 특히 침해사고 조사에 유용하다. 



    프로세스 목록(Process List)

    Check List
    Live Process list
    Related Tools
    tlist -vcstm
    tasklist -v  (XP 이후 tlist 대신 tasklist 사용)
    pslist

    시스템에 동작 중인 프로세스 목록을 수집하는 것은 추후, 악의적인 프로세스 동작 여나 현재 실행되고 있는 프로그램 파악하여 증거로 사용하는데 필요하다. 



    로그온 사용자(Logon users)

    Check List
    Current logged on user
    Related Tools
    Net sessions
    Psloggedon
    logonsessions

    시스템에 연결된 로컬 및 원격 사용자 목록 역시 사건에 따라 필요한 경우가 있다. 




    로딩된 DLL 목록(Loaded DLL List)

    Check List
    Loaded DLL List in target system(operation system)
    Related Tools
    listdlls %TEXT_PROCNAME%
    listdlls %NUM_PID%

    프로세스가 사용하는 DLL 목록은 비정상적으로 로드된 DLL이나, 당시 실제로 프로세스가 로딩하여 사용하고 있던 DLL의 정보를 알 수 있도록 하여 조사에 도움을 준다. 



    핸들(Handles)

    Check List
    Any opened handle by specific process
    Related Tools
    handle -a -p %TEXT_PROCNAME%
    handle -a -p %NUM_PID%

    프로세스가 열고 있는 운영체제 핸들을 확인하는 것은 프로세스의 정상 여부와 은닉된 기능을 파악하는데 용이하다. (자주 확인되는 목록은 아니지만, 수집해둘 경우 보조자료로 활용되는 경우가 간혹 있다)



    열린 파일(Open files)

    Check List
    Opened file by live process
    Related Tools
    net file(외부 사용자가 열고 있는 파일 목록)
    openfiles
    psfile [\\RemoteComputer [-u Username [-p Password]]] [[Id | path] [-c]]
    (원격에서 열린 파일 목록)

    프로세스고 열고 있는 파일의 목록은 해당 프로세스에 의해 생성, 수정, 삭제가 가능한 파일의 목록을 확인하기 위해 필요하다. 



    열린 포트와 프로세스(Open port and mapped process)

    Check List
    Listening port by live process
    Related Tools
    netstat -anob
    fport(Windows XP and lower only)

    열린 포트 목록과 해당 포트를 열고 있는 프로세스의 목록은 프로세스가 열고 있는 포트 확인하여, 시스템에서 진행중인 악성 행위 및 관련 프로세스를 확인하는데 도움을 준다. 



    명령어 히스토리(Command history)

    Check List
    Transmitted command from current active terminal
    Related Tools
    doskey /history

    명령 히스토리는 사용자가 쉘을 통해 실행한 명령의 내용을 저장하고 있으므로, 실행중인 터미널이 존재한다면, 반드시 수집하는 것이 옳다. 



    서비스 목록(Service List)

    Check List
    Installed all service in target system
    Related Tools
    psservice
    net start
    sc qc %TEXT_service_name%

    서비스의 경우 설정에 따라 시스템 부팅 자동을 실행할 있고, SYSTEM권한(시스템 관리자 권한보다도 상위 권한)으로 실행되므로 취약점이 존재하는 시스템에서 악성코드가 즐겨 사용한다. 따라서 침해사고 분석 시에 반드시 수집할 필요가 있고, 일반적인 조사에서도 시스템 부팅시 실행되는 프로세스의 정보를 파악하기 위해 필요한 경우가 종종 있다. 




    네트워크 카드 정보(NIC information)

    Check List
    IP address
    Mac address
    And other network interface card information
    Related Tools
    Related tools
    ipconfig /all
    promiscdetect

    네트워크 인터페이스 정보는 시스템 기본정보와 마찬가지로, 네트워크 통신을 위한 조사 대상 시스템의 정보를 알 수 있으므로, 조사의 기준이 되는 경우가 많다. 



    라우팅 테이블(Routing table)

    Check List
    System Routing table list
    Related Tools
    netstat -r

    내부 라우팅 테이블은 동일 네트워크에서의 맥 주소를 기반한 연결 상태를 나타내므로, 물리적인 네트워크 연결정보 네트워크 구성을 파악하기에 용이한 정보이다. 



    작업 스케쥴러(Schedule)

    Check List
    Scheduled command in target system
    Related Tools
    at
    schtasks(in win8 and more over)

    작업 스케쥴러 목록에서는 시스템에서 자동으로 수행하도록 예약되어 있는 작업 목록 확인할 수 있으므로 침해사고 조사시 반드시 확인해 보아야 한다. 

    특히, 작업 스케쥴러를 통해 실행되는 프로세스는 SYSTEM권한으로 실행되므로 악성코드에 의해 악용되는 경우가 많다. 



    클립보드(Clipboard)

    Check List
    Data in clipboard
    Related Tools
    clipbrd(XP 이하 버전)
    pclip

    클립보드에 복사되어 있는 내용은 조사 현장에 신속 대응했을 경우 용의자의 마지막 행위를 파악하는데 도움이 된다. 



    네트워크 공유 목록(Network drive and shared folder)

    Check List
    Shared network folder and drive
    Related Tools
    net use

    분석 대상 시스템이 공유한 네트워크 드라이브와 공유 폴더를 통해 아래과 같은 정보의 확인이 가능하다. 
    • 공유된 네트워크(다른 사용자)의 폴더나 드라이브 확인
    • 네트워크 공유를 통한 취약점 발생 가능성 파악
    • 정보 유출의 통로로 활용되었을 가능성 추측 다양하게 활용



    바이오스(Netbios)

    Check List
    Shared network folder and drive
    Related Tools
    nbtstat -c

    NET BIOS 정보는 동일 네트워크 상의 다른 시스템이 공유한 네트워크 드라이브와 공유 폴더를 알려주기 때문에, 네트워크 공유 목록과 유사하게 파일의 유출이나 악성코드의 유입 가능성에 대해 따져볼 수 있는 근거가 될 수 있다. 



    프로세스 덤프(Process dump)

    Check List
    process op code
    process variable
    process dll list
    Process handle list
    Related Tools
    userdump %NUM_PID% %FILE_DUMP_FILE_NAME%

    특정 프로세스의 메모리 영역은 다양한 부가 정보 포함한다. (해당 프로세스의 프로그램 코드, 사용중인, 복호화된 암호, 변수, DLL 목록 등)



    관련 문서 

    댓글 없음:

    댓글 쓰기

    질문이나 조언은 언제든 환영입니다.
    악의적 댓글이나 무조건적인 비방은 삼가주세요.