[5] 디지털 포렌식

00SNU3K·2021년 10월 13일
0

1. 디지털 포렌식과 증거 수집

01. 디지털포렌식 정의, 절차

  • 포렌식
    • 법의학적인, 범죄 과학 수사의, 법정의, 재판에 관한 의미를 가짐
    • 범죄수사 및 민/형사 소송 등 법정에 사용되는 증거의 수집/분석/분석을 위한 응용과학분야 통칭
  • 디지털 포렌식
    • 전자적 증거물 등을 사법기관에 제출하기 위해 데이터 수집, 분석, 보고서 작성 등 일련의 작업
  • 로카르의 법칙 - 로카르트의 교환 법칙
    • 접촉하는 두 개체는 서로의 흔적을 주고 받는다.
  • 디지털 포렌식의 절차

    1. 사전 준비

      • 디지털 포렌식 도구 준비
        • 포렌식 도구가 올바르게 동작하여 무결성을 보장하는지 검증
          • 물리적인 도구 : 포렌식 디스크 복제 이미징 장비
          • 소프트웨어 도구
      • 저장매체 준비
        • 분석대상 디스크를 파일형태로 변환하여 분석
          • 무결성을 손상할수 있기때문에..
          • 여러사람들과 같이 분석할 수 있는 장점도..
        • 이미징을 한 하드디스크같은 저장매체가 필요함(최소 2TB이상, SATA3이상, 슬롯)
        • 경우에 따라 완전삭제 후 사용
          • 이미징이 아닌 불가피하게 디스크를 1대1로 Clone할때는 완전 삭제 후 사용
      • 포렌식에 대한 학습, 연구, 아티펙트에 대한 연구, SW 학습(엔케이스, 미국 법정에서 정식으로 인정받은 도구)
    2. 증거 수집

      • 초기 대응 : 실제 현장에서의 사진 찍는거
      • 활성 데이터 수집 : 메모리, 활성화되어 있는 프로세스나 네트워크 정보
      • 비활성 데이터 수집 : 디스크에 저장되어있는 파일형태의 데이터, 필요하다면 이미징
      • 증거 획득
      • 무결성 확보 : 획득한 증거들의 해시값 획득, 증거획득 과정의 동영상 촬영
      • 증거물 인정
    3. 증거 포장 및 이송

      • 증거물 포장 : 충격/정전기 방지용 팩, 하드케이스 등 사용
      • 절차연속성의 법칙(CoC : Chain of Custody) : 현장에서 법정에 제출될 때까지 거쳐간 경로, 담당자, 장소, 시간등을 기록하여 증거의 무결성 증명을 위해 담당자 목록 유지
      • 이송 : 이송과정에서 증거물 훼손을 방지
    4. 조사 분석

      • 타임라인 분석 : 시간순으로의 분석
      • 데이터 브라우징 : 0과1로 되어진 데이터를 조금더 보기 쉽게
      • 데이터 복구
      • 저장매체 수리/복원
      • 해시/파일 검색
      • 암호 복호화
      • 아티팩트 분석
      • 그 외 다양한 데이터 분석
    5. 정밀 검토

      • 분석 결과는 법정에 증거로 사용될 수 있으므로 제출 전 정밀검토 필요
      • 분석 내용이 사건과 논리적으로 잘 연결 되는지 확인
    6. 보고서 작성

      • 증거물 획득, 보관, 이송, 분석 등 과정을 6하 원칙에 따라 명백하고 객관성 있게 기술
      • 보고서의 대상이 되는 법관, 배심원, 변호사 등은 대부분 비전문가 이므로 알기 쉬운 형태로 작성
  • 침해사고 분석 vs 디지털 포렌식
    • 법정에 제출이되냐가 제일 다름
    • 무결성을 덜 신경씀, 절차연속성의 법칙 덜 신경씀, 보고서X
    • 악성코드파일 vs 용의자 특정
  • 카빙 vs 아티팩트
    • 카빙 : 잘게 잘라낸다, 디스크에는 데이터가 쌓여있는데 삭제된 데이터 + 삭제되지 않는 데이터가 있으면 메타데이터가 있으면 복구하기가 편하지만 그게 없으면 어려움. 그래서 디스크의 일부를 파일의 특징을 통해 잘라내는 것이 바로 카빙 기법. 카빙을 사용하기 위해서는 파일의 시그니처 또는 특징을 알아야함.
    • 아티팩트 : 유물, pc관점에서는 피해상황, 용의자가 한 행위등의 흔적
  • WinHex 툴로 카빙해보기

    • Tools - Open Disk - 현재 내 시스템에 연결된 디스크가 보임 - C

      • 삭제된영역은 어디고 분석을 해줌
      • 데이터 브라우징 -> directory tree로 좀더 보기쉽게 gui로 보여줌
      • Free space : 삭제된 데이터 or 사용하고 있지 않은 영역
        • 이 Free space을 카빙해서 복구할 수 있음
        • 이때 ssd를 사용한다면 트림이라는 동작을 통해 사용하지않는 영역을 0으로 다 엎어버림
    • Tools - Open Disk - vmdk파일 열기 (vm 이미지파일)

      • 거꾸로 kdmv로 vmdk 시그니쳐를 가지고있음을 확인할 수 있음

      • 분석을하려면 Specialist - Interpret Image File As Disk

      • 카빙을 하려면 Tools - Disk Tools - File Recovery by Type

        • 시그니쳐 기반으로 하겠어? ㅇㅋ

        • jpeg, png만 선택하고 filename prefix에 저장될 폴더 설정, 아래 메뉴에서 어떤방식으로 시그니처를 검색할것이냐를 선택할 수 있는데,

        • window에서 파일은 한 섹터단위가 물리적인 단위고 한 클러스터단위가 논리적인 단위임. 이 두가지로 해도되지만 중간에 덮어씌어졌을수도 있기때문에 가장 상세하게 byte-level 로 시그니처를 검색하기 - 많이 세밀한 작업임

  • 증거 수집 고려사항
    • 압수 대상이 특정 키워드에 한정적이라면?
      • 그 키워드가 포함된 데이터를 뽑는 ncase, e-discovery같은 도구
    • 이미징시 사용자 PC의 개인정보까지 모두 수집된다?
      • pc에서 수집하고자 하는 정보만 수집, but 보통은 개인정보수집동의서를 받고 전체를 얻긴함
    • 서버의 경우 수집하다가 동작불가 상태가 될 수 있지 않을까?
      • 수집할때 담당자에게 얘기를 해서 담당자가 해당 정보를 수집하도록 하게 할 수 있음
      • 사용자들이 많이 사용하지 않는 시간대, 충돌이 별로 없는 곳 선택 등등 많은 방법이 있음
    • 디스크 반출이 불가능한 상태? 레이드로 구성된 디스크?
      • SW로 이미징하는 기법을 사용할 수 있음

02. 활성데이터 수집과 스크립트

  • 라이브 포렌식

    • 시스템 전원이 켜져있는 상태에서 메모리 + 현재 활성 데이터 + 파일형태로 저장되어있는 비활성 데이터를 분석
    • 효과
      • 현재 발생하고 있는 사건/사고에 대한 많은 데이터의 획득과 확인이 가능
    • 고려사항
      • 악성코드/해커가 현재 동작하고 있는 데이터를 변조한 경우 신뢰성이 없을수도 있음
  • 활성 데이터

    • 실행 중인 프로세스
    • 연결 중인 네트워크
    • 현재 로그인 중인 사용자
    • 현재 시스템 리소스 상황
    • 현재 전송 중인 패킷
    • 클립보드에 저장된 데이터
    • 등등.. but 메모리가 가장중요함
      • 메모리는 해커가 변조하고 있는 상황 자체도 판단할 수 있기때문에 중요함
  • 활성데이터 수집 고려사항

    • 수집 행위에 의해 활성데이터를 덮어쓰진 않을까?
      • 민감한 데이터를 구분하자! 휘발성 민감도(빨리 사라지는 순위로 둔것)를 고려하자!
      • 각 기관마다 휘발성 민감도를 상이하게 결정해둠
        • 네트워크 패킷이 휘발성 민감도가 가장 높음. - 프로세스
      • 중요한 데이터는? => 분석 중요도는?
        • 프로세스의 정보를 먼저 수집해야되는거같음!
    • 수집 대상 시스템의 cmd.exe가 악성코드라면?
      • 이를 방지하기 위해 순정파일을 직접 가져가서 해야함
    • 데이터 수집 명령의 결과가 우연히도 오류가 발생한 시점의 결과라면? 수집한 모든행위에 대한 기록은?
      • 이를 방지하기 위해 로깅이 필요함, 무결성과 증거로서의 채택을 위해 로깅이 필요함
    • 데이터를 수집한 시접에 따라 분석에 영향을 미치진않을까?
      • 그래서 포렌식은 신속성을 항상 강조하고 있음
  • 휘발성 민감도/분석 중요도에 따른 수집 순서

    • 보라색 -> 비활성 데이터, 프리패치는 스크립트나 실행파일 기록이 덮어씌어지면서 남기는것
    • 물리메모리 > 네트워크 연결 > 프로세스 실행 > 사용자 로그온
    • 네트워크 패킷을 수집할때는 보통 win packet driver를 쓰는데 os랑 충돌이 나면 모든 데이터를 수집 못함. 그렇기에 잘 보고 수집하자
    • 기관의 표준마다 다름
  • 활성 데이터 수집 - bitlive win 도구 사용

    • https://github.com/Plainbit/BITLive
    • BITLive_win.bat파일을 메모장으로 열어보면,
      • PREFETCH : 실행을할때마다 이파일이 생성됨, WIN7에는 128개까지만 돌아가면서 저장되어있었음
        • win10에는 1024이기때문에 고려를 안해도되긴함
      • hve형태(레지스트리)로 실행흔적을 볼 수 있음
      • VOLATILE : 활성데이터를 추출함
    • script형태의 수집도구의 단점
      • 실행파일을 여러개를 실행시키기 때문에 현재 활성데이터를 손상시킬수 있음, 그걸 방지하고자 PREFETCH와 메모리를 먼저 수집할 수있도록 옵션이 있다.
      • 사용하는 도구나 명령어의 제어가 불가함. 오류가발생해도 제어가안됨

03.비활성 데이터 수집/분석

  • 비활성 데이터
    • 저장되어있는 파일 형식의 데이터
    • 라이브 포렌식/ 디스크 포렌식 모두에서 획득 가능
    • 디스크 이미징할때 500GB크기의 디스크라면 보통 2시간정도 걸림, 그래서 긴급할때는 오히려 비효율적일 수도 있음
    • 시스템 손상률 + 데이터 수집시간 vs 분석 효율성을 고려해야함
    • 어쩔 수 없이 비활성 데이터를 라이브에서 수집 및 분석해야 하는 경우는 없을까?
      • 전원을 끄면 안되는 서버 계열은 라이브로 수집해야함
      • RAID상태일때의 디스크의 수집. 논리적인 RAID를 따로 SW에서 따로 맞춰줘야함 그렇게 하기에는 빡쎄기때문에 라이브로 수집해야함
      • 디스크를 분해할 수 없는 경우의 수집. 물론 라이브상태의 이미징할수도 있지만 라이브상태에서 비활성데이터를 수집하는게 더 좋다
    • 라이브 상태에서 획득한 비활성 데이터는 얼마나 많은 분석을 할 수 있을까? 제한은 없을까?
      • 삭제된 데이터를 획득하는것은 제한이 있고 대부분의 데이터를 얻을 수 있다
    • 고려사항
      • 라이브상태에서 OS가 점유하고 있어 복사하지 못하는 경우의 수집 방안
        • script에 있는 포카피와 같은 도구는 점유하고 있어도 수집이 가능해서 그런 도구 사용하기
        • 해당 파일을 UI에서 복사하지 않고, 조금 더 low 레벨에서 접근하기 => winhex도구 사용하기
          • windows - system32 - config에 레지스트리를 구성하고 있는 hve파일
      • 수집기간이 디스크 이미징 시간과 비교하여 큰차이가 없을경우라면?
        • 디스크이미징이 더효율적. 이미징을 하면 삭제같은 제약도 없고 손상걱정도 안해도 됨
      • 스크립트를 제작할때 고려사항
        • 어떤 데이터를 제공할지 옵션으로 제공해야함
  • 악성코드가 감염된 시스템의 비활성 데이터 수집
    • 비활성 데이터 수집 목록
      • $MFT (파일시스템 메타 데이터)
      • 파일시스템 로그 (LogFile, UsnJrnl:$j -> 0byte이지만 들어가보면 Max와 J가 있음.)
      • 웹아티팩트(WebCacheV01.dat -> 웹 브라우저 캐시)
      • 프리패치(PF)
      • 바로가기 파일(LNK)
      • 레지스트리 하이브파일
      • 이벤트로그
    • 이미지를 바로 해석할 수 있는 경우 => Winhex 도구 사용하면 다 볼 수 있음
    • 이미지를 바로 해석할 수 없는 경우 => FTK Imager 도구를 사용해서 mount하고 해석
  • 비활성 데이터 수집 방법(winhex사용)
    • 수집하고자 하는 파일의 경로를 알고, 파일명도 알때 (MFT, LogFile, UsnJrnl, 레지스트리, 이벤트로그)
      • $NFT파일을 수집하려면 경로로 들어가서 해당 파일명을 찾아서 수집하면됨
      • 보통 아티팩트 별로(File System, FS) 폴더를 지정해서 여러 파일들을 넣음
    • 수집하고자 하는 파일의 파일명만 알때(WebCacheV01.dat)
      • WebCacheV01.dat => internet explorer의 흔적들을 담고 있는 파일을 수집하고자 함
      • 돋보기 옆 아이콘 버튼 누르면(explore recursively) 현재 경로 안에 있는 모든 폴더/파일을 한눈에 볼 수 있음
      • 이렇게 찾을 수 있는데 서로 다른 경로에 파일이름이 동일한게 많으면 같은 이름의 파일들을 볼 수있음. 이걸 구별하려면 options - derectory browser에 들어가면 Full path를 255정도 주고 하면 경로가 추가되어 모든 경로를 볼 수 있음
    • 수집하고자 하는 파일이 여러군데 분산되어 저장될때 or 확장자만 알때 (LNK / PF)
      • Ext순으로 하면 확장자만 가지고 정렬할 수 있음. 여기서 옵션을 없애려면 shift+클릭
        • 프리패치 파일은 확장자명 pf로 찾아서 추출 -> 129개가 나오는데 128응용프로그램 + 1부팅프로그램
      • LNK파일 추출. 대문자 LNK도 있지만 소문자 lnk도 있음.

04.SW로 디스크이미징

  • pc전원을 끄지 못하는 경우에 사용

  • 디스크 이미지 파일 포맷 종류

    • E01

      • 포렌식에서 가장 범용적으로 쓰이는 포맷

      • 증거 파일의 무결성을 보장하기 위해 MD5, SHA1 해시를 사용할 수 있고, 증거 파일 암호화를 위해 AES256사용

      • DataBlock마다 CRC를 넣어주면서 무결성을 제공해주고 마지막 데이터부분에는 MD5를 사용하여 암호화를 할 수 있음

    • RAW(DD)

      • 데이터를 추가 및 가공하지않고, 디스크 그대로 RAW 데이터를 비트 단위로 복사
      • 단점
        • 이미징할 데이터의 크기가 같게 저장매체를 가져가야되는 단점
      • 장점
        • E01형태로 변환해주는 SW를 쓸수 없는 상황에 쓸 수 있음
        • 분석하는도구가 E01를 지원하지 않을때 쓸 수 있음
  • FTK Imager

    • 분석을위한 기능은 winhex가 더 많고 이 툴은 이미징 도구임
    • Physical Drive -> select drive -> add -> E01(image format 설정) -> Header Case Information 설정(분석가이름, 어떤침해사고, 몇일 등등) -> 다음 -> Destination Folder를 보통 외장하드에 저장하는게 보통임.
    • E01파일 포맷을 따르게 수집하면 제일 처음에 EVF 시그니처를 가지고 있는걸 볼 수 있음
      • winhex에서 분석하려면 E01파일을 마운트하고 분석할 수 있음

2. 디지털 데이터 분석

01. 메모리 수집/분석

  • 주 기억장치
    • 사용자 작업을 처리하기 위한 데이터, 처리결과 등을 기억
    • 전원 종료 시 모두 사라짐
    • 메모리에 가용 공간이 부족하면, 보조기억장치(HardDisk, SSD, ...)의 힘을 빌림
      • 메모리 용량이 적으면 PC가 느림
    • 메모리에 어떤 데이터가 있는가?
      • 프로그램 실행 -> 실행한 프로그램, 인자, 화면, 실행결과, 연결한 네트워크 데이터, 암호화된 데이터, 복호화에 사용된 키, 복호화된 데이터 등등. . .
  • 침해사고/디지털포렌식 관점에서 메모리 포렌식이 활성화된 이유는?
    • 악성코드 실행 전/후에 분석을 방해하기 위한 많은 추가 행위 시도
      • 경로변경등의 공격이 있을 수 있는데 그 전의 시점만 잘 맞춘다면 무결성이 잘 보존되어있는 포렌식을 진행할 수 있음
    • 악성코드 감염/실행 시 시점 상 가장 설득력 있는 데이터
    • 암호화 전송/암호화 된 데이터
      • 최근 암호화된 전송을 많이하는데 사용자에게는 복호화된 데이터가 메모리에 남기때문에 메모리포렌식을 이용해 복호화된 데이터를 습득할 수 있음
    • 안티 포렌식 기술의 발전으로 인해 보조기억장치 흔적 외 추가 분석 요소 필요성 증가
  • 메모리 수집
    • 메모리 + 메모리부족시 사용하는 추가 공간
      • 일반적으로 메모리 + 페이지 파일이 분석 대상임
      • C드라이브 하위에 pagefile.sys파일이 있음. 메모리가 부족할때 잠시 빌리는 공간
      • C드라이브 하위에 hibernation.sys파일이 있음. 잠자기/최대절전모드 활성화 시 그대로 mapping시켜주는거기 때문에 추가 분석 대상
  • 메모리 수집 방법
    • HW를 이용한 dump
      • 현재 거의 사용되고 있지 않음
        • 분석대상 slot에 장치를 다 설치해야함
        • 또는 direct로 케이블을 다 연결해야함 -> 안정성 떨어짐
    • SW를 이용한 dump
      • crash dump를 같이 사용하는 것이 최근에 많이 사용됨
    • 크래시 dump
      • 블루스크린일때 메모리를 보호하기 위해서 당시의 메모리를 저장시켜주는 기능이 있음. 이를 크래시 dump라고 함. 그래서 당시의 메모리 사용량이라던지 어떤 상태였는지 알 수 있게 해줌
    • 절전모드 dump
      • 정확한 시점의 분석데이터를 얻기 어려움
    • 가상화 시스템 dump
      • 분석대상이 가상시스템일 경우에는 서스팬드 상태로 변환한 다음, vmem이라는 메모리파일을 복사하는 작업
      • 분석대상이 가상화시스템일 경우만 획득 가능함
    • 콜드 부트
      • 이론적으로 나오고 거의 현실적으로 불가능
      • 메모리를 pc전원이 종료된다음에 급격하게 얼리고, 그 상태를 분석함
  • DumpIt (Memory dump tool)
    • window7에는 잘 동작하나, window10에는 맞지 않다.
    • hint : 메모리 압축
  • MRCv1.2
    • Magnet ram capture을 검색하면 Magnet회사에서 만든 메모리 덤프 툴을 받을 수 있음
  • 물리주소와 가상주소

    • 가상주소 : 프로세스 독자적 영역안에 위치하는 주소

profile
네트워크 전문가를 꿈꾸며

0개의 댓글