Basic Malware Analysis - (1)

Gunter·2024년 5월 24일
0

Basic Malware Analysis

목록 보기
1/3

Introduction to Malware Analysis

  • Malware Analysis는 악성코드의 행동과 패턴, 주요 특성을 파악하기 위해 악성코드를 연구하는 것.
  • 악성코드 분석은 매우 역동적인 분야이므로 도구, 기술로서 지속적인 경계가 필요. 위협 행위자가 사용하는 절차는 끊임없이 변화한다.
  • 분석 목표에 대해 잘 설정해야 한다. (eg. 어떤 데이터를 수집하고 싶은지)
  • 악성코드 분석은 크게 정적 분석(Static Analysis)과 동적 분석(Dynamic Analysis) 으로 나뉨
  • 정적 분석은 샘플을 실행하지 않고 악성 아티팩트를 분석하고, 동적 분석에는 샘플 실행이 포함된다.
  • 악성코드 분석을 시작할 땐 정적 분석이 기본이고, 분석 중인 아티팩트에 대해 문자열, 파일 형식, 해시 등을 알아야 한다.
  • 정적 분석에는 상당한 양이 필요하다. IDA 같은 디스어셈블러, 바이너리 코드를 리버싱 하는 Ghidra 같은 tool이 필요하다.

 



Hash and HashMyFiles Tool

Hashes

  • 해시는 파일을 고유하게 식별하는 방법.
  • 단방향 암호화 알고리즘 (one-way cryptographic algorithms) 을 이용하여 생성된다.
  • e.g) MD5, SHA1, SHA2, SHA3
  • 입력된 크기에 상관없이 각 알고리즘은 고정된 크기의 출력을 생성하므로, 서명으로 사용하기에 이상적임.
  • 해시를 사용하여 Malware에 대한 정보를 공유할 수 있다. ( 파일을 배포할 때, 해당 파일 해시도 게시하는데 이렇게 하면 해당 파일을 다운로드 할 때 해시를 생성하고 비교할 수 있다. 해시가 일치하지 않는 경우 이는 수정이 있었음을 나타낼 수 있다.)
  • 단점 : 입력 소스의 단일 비트 변경. 해싱 알고리즘이 새 해시를 생성하게 되므로 해싱 알고리즘을 남용할 수 있음.


HashMyFiles Tool


HashMyFiles는 NirSoft에서 제공하는 무료 유틸리티
파일 해시를 생성하고, 전체 디렉토리나 개별 파일을 검사할 수 있음.


MD5, SHA1, CRC32, SHA-256 값을 보여준다.

 



Analyzing Strings

  • String : 단순히 사람이 읽을 수 있는 데이터의 시퀀스
  • 문자열을 식별하는 데 사용하는 도구에선 문자열을 검색하지 않고 바이너리 데이터를 검사한다.
  • 즉, 문자열을 생성할때 무의미한 글자도 많이 보게 될 수 있음.
  • Typically, two formats to store strings
    - ASCII
    - Unicode (wide-string)

 

  • ASCII

    ASCII 문자열은 문자 당 1바이트를 사용한다.
    16진수를 사용. 0~9, A~F
    각 16진수는 4비트이고 2개의 16진수는 1바이트와 같으므로 각 문자에는 두 개의 16진수가 필요함.
    문자열은 0 값인 null 바이트로 끝냄!

  • Unicode

    유니코드는 문자 당 2바이트를 사용
    문자열의 끝은 2개의 null byte 사용

 

String Obfuscation

  • base64와 같은 인코딩을 통해 문자열이 난독화되는것을 쉽게 볼 수 있음.
  • Base64 : A-Z, a-z, 0-9, +, /, and = for padding
  • Base64는 블록 인코딩을 사용하고 패딩 할 수 있음.


    악성코드의 문자열 탐색을 시작하려면, strings64 유틸리티 활용.
    -n 10 을 통해 검색하는 문자열의 크기를 맞춰줌
    | findstr "http" 와 같은 명령어도 사용하여 HTTP가 포함된 문자열 찾기

 




💡 Quiz : Static Analysis - Searching for Strings

 

참고 - https://learn.microsoft.com/en-us/sysinternals/downloads/strings

1. What can be found using Basic Static Analysis?

a. Dynamic Link Libraries (DLL)
b. Indicators of Compromise (IOC)
c. Imported functions
d. All of the above

2. The file malware.exe uploads files to an FTP server.
What is the IP address of the FTP server?

C:\Users\cyberuser\Desktop\strings64.exe C:\Users\cyberuser\Desktop\malware.exe| findstr ftp

-> 213.0.0.86

 

3. Which DLL ran the function ‘RegCloseKey’?

a. User32.dll
b. Kernel32.dll
c. Advapi32.dll
d. None of the above

4.
The file contains functions that approach the Registry.
What registry key appears in the file?

일반적으로 Win32 API에 정의된 상수 핸들에 따라 이름이 지정된 사전 정의된 루트 키 5개가 있음.

HKEY_LOCAL_MACHINE(HKLM)
HKEY_CURRENT_CONFIG(HKCC)
HKEY_CLASSES_ROOT(HKCR)
HKEY_CURRENT_USER(HKCU)
HKEY_USERS(HKU)

C:\Users\cyberuser\Desktop\strings64.exe C:\Users\cyberuser\Desktop\malware.exe | findstr HKLM

-> HKLM\Software\Microsoft\Windows\CurrentVersion\Run

 

5. What is an obfuscation of character strings?

a. An option in Windows used by developers to conceal character strings
b. A method of investigating encoded strings in malware
c. A type of function that decodes all of the DLLs names in malware
d. A technique used by malware creators to conceal character strings

6. The file contains an obfuscated string. Use the Base64Convert tool to decode the string.
What does that string contain?

a. CMD command
b. SQL query
c. Python script
d. PowerShell command

난독화된 문자열의 친숙한 특징 중 하나는 문자열이 매우 길다는 것이다.
다음 쿼리를 실행하여 50보다 긴 문자열만 찾기
C:\Users\cyberuser\Desktop\strings64.exe -n 50 C:\Users\cyberuser\Desktop\malware.exe

이 다음에 나온 거 base64 ㄱㄱ
-> PowerShell command

 


0개의 댓글