GetDriveType function

Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.

To determine whether a drive is a USB-type drive, call SetupDiGetDeviceRegistryProperty and specify theSPDRP_REMOVAL_POLICY property.

Syntax

UINT WINAPI GetDriveType(
  _In_opt_ LPCTSTR lpRootPathName
);

Parameters

lpRootPathName [in, optional]

The root directory for the drive.

A trailing backslash is required. If this parameter is NULL, the function uses the root of the current directory.

Return value

The return value specifies the type of drive, which can be one of the following values.

Return code/valueDescription
DRIVE_UNKNOWN
0

The drive type cannot be determined.

DRIVE_NO_ROOT_DIR
1

The root path is invalid; for example, there is no volume mounted at the specified path.

DRIVE_REMOVABLE
2

The drive has removable media; for example, a floppy drive, thumb drive, or flash card reader.

DRIVE_FIXED
3

The drive has fixed media; for example, a hard disk drive or flash drive.

DRIVE_REMOTE
4

The drive is a remote (network) drive.

DRIVE_CDROM
5

The drive is a CD-ROM drive.

DRIVE_RAMDISK
6

The drive is a RAM disk.

 

GetDriveType 

 - Return 값에 따른 드라이브 Type을 결정짓고, 이에 따른 악성 행위를 분기할 수 있음

 - 최근 말레이시아에서 존재했던 Mumblehard ELF 악성 코드도 분석된 결과에 따르면 Removable Device를 찾아 그에 따른 악성 행위를 진행했다고 하는데, 위와 같이 특정 API를 사용했을 것이라 추측해본다.


https://github.com/eliben/pyelftools/issues/12

imphash는 파일 자체가 가지고 있는 IAT 를 기반으로 생성된 것으로 판단된다. IAT에는 파일이 사용되는 API를 포함하고 있는데 이 API들이 무엇이 있고, 어떻게 호출되는지 흐름에 대해서 1차적으로 판단되는 기준 값으로 사용될 수 있는 듯하다. 따라서 imphash의 값에 따라 Packer의 종류도 대략적으로 구별할 수 있지 않을까 생각된다. 그렇다면 이 값을 이용해 악성 코드 분류하는 작업에 사용할 수 있을까? imphah만으로는 부족하지 않을까 생각된다. 그렇다면 어떤 값이 더해져야할까? 



+ Recent posts