Incident Response

Amcache 수집 및 분석

침해사고대응 수업 진행을 하면서 amcache에 대한 정보를 정리해 두었다.

amcacheparser로 export 되는 csv에 대한 내용이 궁금해서 찾아본 내용이 대부분이다.

 

Amcache

amcache란?

amcache는 Windows 7에서 RecentFileCache.bcf파일이 윈도우 8부터는 레지스트리 하이브 파일인 amcache.hve로 대체되었다.

amcache는 최근 실행한 프로그램에 대한 정보를 가지고 있으며, 연결된 usb나 블루투스 장치와 관련된 정보들도 가지고 있다.

 

amcache 수집

amcache는 다음과 같은 경로(C:\Windows\appcompat\Programs)에 위치한다.

 

amcache 추출

amcache의 분석은 rega, amcacheparser등 여러 툴이 있지만 여기서는 amcacheparser를 이용하여 csv를 export 할 것이다.

다음은 amcacheparser로 export한 모습이다

command : AmcacheParser.exe -f "amcache.hve path" --csv "export path"

 

이후 다음과 같이 csv파일로 추출이 된다.

 

amcache 분석

AmcacheParser를 이용하여 추출한 csv를 분석해보자 추출한 csv는 다음과 같이 총 6가지로 나뉘어 저장된다.

  • DeviceContainers
  • DevicePnps
    • devicepnp는 일반적으로 PC에 연결될 수있는 USB 장치 PNP(Plug N Play)를 의미한다.
  • DeiveBinaries
  • DriverPackages
  • ShortCuts
  • UnassociatedFileEntrie
    • 프로그램이 수집은 하였지만 깨진파일을 모아 둔 곳 실제로 amcache.hve에는 해당 항목이 없다.

 

DeviceContainers

  • KeyName
    • device마다 구분하기 위한 id
  • KeyLastWrite TimeStamp
    • 마지막으로 사용된 시간
  • Categories
    • 장치 종류에 대한 정보
  • DiscoveryMethod
    • 해당 device를 얻게된 방법
    • 주로 bluetooth, upnp, wsd 등이 set 되어있다
  • FriendlyName
    • 추가 식별 이름
  • Icon
    • Icon Path
  • IsActive
    • 활성화 유/무
  • IsConnected
    • 연결 유/무
  • IsNetworked
    • 네트워크 연결이 필요한지에 대한 유/무
  • IsPaired
    • 서로 통신이 필요한지에 대한 유/무 인듯하다
    • 예) : bluetooth
  • Manufacturer
    • 장치의 제조업체
  • ModelId
    • 장치의 고유 id

 

DevicePnps

  • KeyName
    • device를 구분하기위한 ID
  • KeyLastWrite Timestamp
    • 마지막으로 사용된 시간
  • BusReportedDescription
    • 버스가 보고하는 장치의 설명
    • USB의 경우는 device descriptor하나만 가질 수 있다.
  • Class
    • 장치용으로 로드된 드라이버의 장치 설정 클래스
  • ClassGuid
    • 장치에 로드된 드라이버 패키지의 장치 클래스 고유 식별자
  • Compid
    • 이 장치에 대한 호환 가능 ID 목록
  • Containerld
    • 부모(기본) 장치에 설치된 장치가 속할 그룹을 지정하는 식별자로 시스템에서 제공하는 고유 식별자
  • Description
    • 장치 설명
  • DriverId
    • 설치된 드라이버에 대한 고유 식별자
  • DriverPackgeStrongName
    • InventoryDriverPackage 디렉터리 필드의 직계 부모 디렉터리 명칭
  • DriverName
    • 설치된 드라이버 이미지의 파일 이름
  • DriverVerDate
    • 장치에 설치된 드라이버와 관련된 날짜
  • DriverVerVersion
    • 장치에 설치된 드라이버의 버전
  • Enumerator
    • 장치를 열거하는 버스를 식별한다
  • HWID
    • 장치에 대한 하드웨어 ID 목록
  • Inf
    • INF 파일의 이름
  • InstallState
  • Manufacturer
    • 장치의 제조업체
  • Matchingld
    • Windows가 장치 인스턴스를 설치하는 데 사용하는 하드웨어 ID 또는 호환 가능 ID
  • Model
    • 장치의 모델을 식별한다
  • ParentId
    • 장치 부모의 장치 인스턴스 ID
  • ProblemCode
    • 해당하는 경우, 장치가 현재 반환하는 오류 코드
  • Provider
    • 장치 공급자를 식별한다
  • Service
    • 장치 서비스의 이름
  • Stackid
    • 스택에 대한 하드웨어 ID 목록

 

DriveBinaries

  • KeyName

  • KeyLastWrite Timestamp

  • DriverTimeStamp

    • Driver의 TimeStamp
  • DriverLastWrite Time

    • Driver가 마지막으로 사용된 시간
  • DriverName

    • 드라이버의 파일 이름
  • DriverInBox

    • 운영 체제에 드라이버가 포함되어있는지
  • DriverIsKernelMode

    • 커널 모드 드라이버인지
  • DriverSigned

    • 드라이버 패키지의 강력한 이름

      원문 : The strong name of the driver package

  • DriverCheckSum

    • 드라이버 파일의 checksum
  • DriverCompany

    • 드라이버를 개발한 회사 이름
  • DriverId

    • 드라이버의 고유 식별자
  • DriverPackageStrongName

    • 드라이버 패키지의 강력한 이름
  • DriverType

    • 드라이버 특성의 필드
      • DRIVER_MAP_DRIVER_TYPE_PRINTER 0x0001을 정의합니다.
        DRIVER_MAP_DRIVER_TYPE_KERNEL 0x0002를 정의합니다.
        DRIVER_MAP_DRIVER_TYPE_USER 0x0004를 정의합니다.
        DRIVER_MAP_DRIVER_IS_SIGNED 0x0008을 정의합니다.
        DRIVER_MAP_DRIVER_IS_INBOX 0x0010을 정의합니다.
        DRIVER_MAP_DRIVER_IS_WINQUAL 0x0040을 정의합니다.
        DRIVER_MAP_DRIVER_IS_SELF_SIGNED 0x0020을 정의합니다.
        DRIVER_MAP_DRIVER_IS_CI_SIGNED 0x0080을 정의합니다.
        DRIVER_MAP_DRIVER_HAS_BOOT_SERVICE 0x0100을 정의합니다.
        DRIVER_MAP_DRIVER_TYPE_I386 0x10000을 정의합니다.
        DRIVER_MAP_DRIVER_TYPE_IA64 0x20000을 정의합니다.
        DRIVER_MAP_DRIVER_TYPE_AMD64 0x40000을 정의합니다.
        DRIVER_MAP_DRIVER_TYPE_ARM 0x100000을 정의합니다.
        DRIVER_MAP_DRIVER_TYPE_THUMB 0x200000을 정의합니다.
        DRIVER_MAP_DRIVER_TYPE_ARMNT 0x400000을 정의합니다.
        DRIVER_MAP_DRIVER_IS_TIME_STAMPED 0x800000을 정의합니다.
  • DriverVersion

    • 드라이버 파일의 버전
  • ImageSize

    • 드라이버 파일의 크기
  • Inf

    • INF 파일의 이름
  • Product

    • 드리이버 파일에 포함된 제품 이름
  • ProductVersion

    • 드라이버 파일에 포함된 제품 버전
  • Service

    • 장치에 설치된 서비스 이름
  • WdfVersion

    • Windows 드라이버 프레임워크 버전

 

ShortCuts

  • KeyName
    • 파일이름 | 매칭 되는 특정 문자열
  • LnkName
    • Ink파일 경로
  • KeyLastWriteTimestamp
    • 마지막으로 사용된 날짜

 

UnassociatedFileEntries

  • ApplicationName
    • Unassociated로 저장되어 있다.
  • ProgramId
    • 프로그램 고유 식별자
  • FileKeyLastWriteTimestamp
  • SHA1
    • sha1 hash값
  • IsOsComponent
    • Os의 구성요소 인지
  • FullPath
    • 파일 경로
  • Name
    • 파일 이름
  • FileExtension
    • 파일 확장자
  • LinkDate
    • 이 파일이 연결된 날짜 및 시간
  • ProductName
    • 속성 -> 자세히 -> 제품이름 필드에 저장된 값
  • Size
    • 파일 크기
  • Version
    • 파일 버전
  • ProductVersion
    • 속성 -> 자세히 -> 제품버전 필드에 저장된 값
  • LongPathHash
    • 파일의 전체 경로 hash값
  • BinaryType
    • 이진 타입
      • UNINITIALIZED
      • ZERO_BYTE
      • DATA_ONLY
      • DOS_MODULE
      • NE16_MODULE
      • PE32_UNKNOWN
      • PE32_I386
      • PE32_ARM
      • PE64_UNKNOWN
      • PE64_AMD64
      • PE64_ARM64
      • PE64_IA64
      • PE32_CLR_32
      • PE32_CLR_IL
      • PE32_CLR_IL_PREFER32
      • PE64_CLR_64
  • IsPeFile
    • PE(Portable Executable) 파일인지
  • BinFileVersion
    • 클라이언트에서 FileVersion을 4 옥텟(octets)으로 치환한 값
  • BinProductVersion
    • 클라이언트에서 ProductVersion을 4옥텟으로 치환한 값
  • Language
    • 프로그램의 언어 코드
  • Description
    • 장치 설명

 

Reference

 

'Incident Response' 카테고리의 다른 글

Fodhelper를 이용한 UAC bypass  (0) 2020.06.08
Incident Response  (0) 2020.05.13
Windows Artifacts  (0) 2020.04.06
ATT&CK Attack Framework  (2) 2020.04.02
Initial Access  (0) 2020.03.31