Information Security ˗ˋˏ ♡ ˎˊ˗

Security/Reversing

[악성코드정적분석] PracticalMalwareAnalysis-Lab01-01 분석

토오쓰 2020. 4. 17. 16:00

 

"실전 악성코드와 멀웨어 분석(Practical Malware Analysis) 책의

실습 부분을 공부하고 작성한 분석 보고서"

 

 

 

 

 

1. Virustotal에 업로드하고 보고서를 확인하자. 기존 안티바이러스 정의된 것과 일치하는가?

[Lab01-01.exe]

<SUMMARY>

69개 엔진 중에서 41개가 악성코드로 탐지 -> 악성코드임을 예측할 수 있다.

 

 

<DETECTION>

AhnLab-V3, Microsoft, F-Secure 등이 악성코드로 인식

악성코드 이름이 대부분 Trojan, Win32, Heuristic 등으로 설정

예측: Trojan형태는 네트워크 기반의 통신 행위를 한다. 별도로 소프트웨어를 설치하거나 동작할 확률이 높다.

 

 

<DETAILS>

해시 정보가 나와 있다. 이 해시 값을 가지고 변조되었는지 확인할 수 있다.

PE32 MS 윈도우 기반으로 돌아가는 것이다.

 

History: 실제 이 파일의 생성 일자, Submission된 날짜 기록

 

Header 정보: EP주소

섹션 3가지로 구성

 

KERNEL32.dll에서는 API 함수 리스트를 import 하고 있는 것을 볼 수 있다.

KERNEL32.dll: 시스템 함수에서 많이 쓰는 windows 함수의 라이브러리

-      MapViewOfFile/UnmapViewOfFile: 네트워크 관련

-      FindFirstFileA/FindNextFileA/FindClose: 파일 검색

-      CreateFileA: 파일 생성

예측: API함수 목록을 보니 네트워크와 파일 관련된 활동을 할 것을 예측할 수 있다.

 

 

<RELATIONS>

4개의 Resource_parents를 가지고 있고, 5개의 Execution parents를 가지고 있는 것을 알 수 있다.

 

 

[Lab01-01.dll]

 

70개의 엔진 중에서 33개가 악성코드라고 인지하고 있다.

Trojan, Win32 정보가 나오는 것을 확인할 수 있다.

 

 

<DETAILS>

exe파일과 달리 섹션이 4가지

Sleep은 백드라운드에서 실행시키는 것이다.

예측: 프로세스를 생성해서 백그라운드에서 실행하라는 의미로 예측할 수 있다.

 

 

<RELATIONS>

예측: 1 execution parents가 Lab01-01.exe일 확률이 높다.

 

 

 

2. 이 파일은 컴파일 시점은?

[Lab01-01.exe]

컴파일 시간: 2010-12-19 16:16:19 UTC

[Lab01-01.dll]

컴파일 시간: 2010-12-19 16:16:38 UTC

예측: 두 파일의 컴파일을 시간을 볼 때, 몇 초 차이 나지 않는다. 아마 동시에 exe를 만들고나서 dll 파일을 만들었을 확률이 높다. 이 악성코드는 exe가 실행되고 dll을 호출하는 구조로 예측할 수 있다.

 

 

 

3. 패킹이나 난독화의 흔적이 있는가? 이유는?

[Lab01-01.exe]
[Lab01-01.dll]

 

 

예측: 두 파일 모두 Visual C++에서 정상적으로 컴파일 되었다. 패킹은 안된 것으로 볼 수 있다.

 

 

 

4. 감염된 시스템에서 검색할 수 있는 다른 파일이나 호스트 기반의 증거가 존재하는가?

-> 시스템 보안적 접근

[Lab01-01.exe]

<KERNER32.DLL>

- CopyFile function: 존재하고 있는 파일을 새로운 파일로 만든다.

-> 파라미터3개(lpExistingFileName, lpNewFileName, bFailIfExists)

-> 시그니처나 string 중에서 파라미터 값을 찾을 수 있다

 

CopyFile function

- FindNextFileA function: 파일이 리스트형태로 붙어있는데 이 함수를 이용하면 인접해있는 파일의 이름을 알 수 있다.

-> 파일명 기준으로 정렬한다고 하면 lab01_01.exe의 인접파일은 lab01_01.dll파일일 확률이 높다.

- CreateFileA function: 파일을 오픈하거나 생성할 때 쓴다. 복사하기 위한 전처리 작업이다.

예측: exe파일은 파일 복사, 검색, 생성한다는 것을 예측할 수 있다.

 

 

[Lab01-01.dll]

<KERNER32.DLL>

- CreateProcessA function: 새로운 프로세스와 기본 스레드를 만든다.

- Sleep function: 시간 초과 간격이 경과할 때까지 현재 스레드 실행을 일시 중단

예측: 프로세스를 생성해서 백그라운드에 돌리는 작업을 한다고 예측할 수 있다.

 

<WS2_32.dll>

- socket function: 소켓 함수는 특정 전송 서비스 제공에 바인딩 된 소켓 생성, 특정 포트 접속, 네트워크 전송 서비스 전에 준비하는 밑 작업

- shutdown function: 비활성화

예측: 네트워크를 가지고 공격할 확률이 높다.

 

 

 

5. 감염된 장비에서 이 악성코드를 발견하기 위해 사용한 네트워크 기반의 증거는 무엇인가?

[Lab01-01.exe]

import한 API 함수가 문자열로 모두 출력되는 것을 볼 수 있다.

kernel32.dll/kerne132.dll

-> copyfile 함수를 통해서 다른 파일로 생성

Lab01-01.dll

WARNING_THIS_WILL_DESTROY_YOUR_MACHINE

예측: 이 정보가 나오는 것을 봐서 exe파일과 dll파일이 밀접한 관련이 있다는 것을 예측할 수 있다.

 

 

[Lab01-01.dll]

127.26.152.13(IP 주소)

예측: IP주소가 나오는 것을 봐서 이 주소지에 접속하거나 시스템에 정보 일부를 이 IP주소로 전송할 수 있다고 예측할 수 있다. 네트워크 기반의 일을 한다고 추측할 수 있다.

 

 

 

6. 이 파일의 목적은 무엇이라고 판단하였는가?

두 개의 컴파일 시간을 보았을 때, 비슷한 시간대에 만들어졌고 EXE파일에서 파라미터로 DLL을 쓰는 것을 봐서는 DLL을 copy하여 악성 일을 할 확률이 높다. 그 target은 KERNEL32.DLL일 것이다.