본문 바로가기
Malware/윈도우즈 보안과 악성코드 기초

[악성코드] 6주차, 정적분석

by Y06 2021. 11. 19.

[실습 1-1] Lab01-01.exe, Lab01-01.dll

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

Virustotal 에 업로드한 Lab01-01.dll 파일
Virustotal 에 업로드한 Lab01-01.exe 파일

Lab01-01.dll : 37개가 넘는 엔진에서 악성코드로 탐지하는 것을 확인할 수 있다.

Lab01-01.exe : 48개가 넘는 엔진에서 악성코드로 탐지하는 것을 확인할 수 있다.

 

둘 다 윈도우 32bits에서 동작한다는 것을 알 수 있다. 반복적으로 Trojan 형태가 보이는데 Trojan 형태로 은닉되어 있다가 활동하게 될 확률이 높은 것을 알 수 있다.

A. 악성코드의 시그니처로 판명된다.

2) 이 파일의 컴파일 시점은?

컴파일 시점은 Time Stamp 정보를 통해서 알 수 있었다. PEFile 헤더를 확인한다.

Lab01-01.exe 파일의 Time Data Stamp를 봤을 때 2010/12/19일에 컴파일 되었다는 것을 알 수 있다.

Lab01-01.dll 파일의 Time Data Stamp를 보면 2010/12/19에 컴파일 된 것을 알 수 있다.

Lab01-01.exeLab01-01.dll이 컴파일 된 날짜가 같고 시간 또한 19초 차이밖에 나지 않는 것을 알 수 있었다.

A. PEViewIMAGE_NT_HEADER/IMAGE_FILE_HEADERTime Data Stamp를 보면 동일한 날짜에 19초 차이로 컴파일 된 것을 알 수 있다. 따라서 이 두 개의 파일은 같은 패키지로 판단된다. exe가 실행되고 dll을 동적으로 호출하는 구조로 판단된다.

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

PEID 로 확인한 Lab01-01.dll 파일, PEID 로 확인한 Lab01-01.exe 파일

A. 두 파일 모두 Visual C++에서 정상적으로 컴파일한 파일로 패킹의 징후는 없다. 또한, EP Section(프로그램 시작 지점) 정보도 제대로 보인다.

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

[ import를 보고 악성코드 행위 판단 ]

Virustotal 에 업로드한 Lab01-01.exe 파일

A.
- Lab01-01.exe 파일은 Kernel32.dll과 Msvcrt.dll을 import 하고 있으나 대부분의 파일에서 import 하는 파일이다.
- 구글링을 통해 함수의 기능을 알아보았더니 CopyFile, CreateFile로 파일을 복사하거나 생성하는 기능을 한다는 것을 알 수 있다.
- FindFirst, FindNextFile로 파일을 탐색하는 행위를 하고 있다.

Virustotal 에 업로드한 Lab01-01.dll 파일

A. 
- xs2_32.dll import 하기 때문에 네트워크 연결 작업을 수행할 것으로 판단된다.
- Lab01-01.dllimport 함수 부분에서 CreateProcessSleep을 사용하고 있다. 백도어 프로그램을 실행하고 백그라운드에서 실행을 대기하고 있도록 한다.

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

Strings 를 통해 확인한 Lab01-01.exe 파일

A. Kernel32.dll이 정상적 import 파일인데, Kernel32.dll import 하는 것은 kerner32.dll인 것처럼 위장하여 import하는 것으로 판단된다. 시스템에 악성코드 kernel32.dll을 배포해서 실행하도록 할 수 있다. Lab01-01.exe 파일이 Lab01-01.dll 파일을 실행시킨다.

네트워크 기반 증거 확인

Strings 를 통해 확인한 Lab01-01.dll 파일

A. 문자열을 보면 ws2_32.dll(네트워크 사용)과 함께 exec, sleep이 수행되는데 프로그램을 네트워크상으로 수행(exec)시키고 백그라운드에서 대기(sleep)하도록 한다. 127.26.152.13이라는 IP 주소가 나오는 것을 봐서는 해당 주소지와 연결되어 수행할 것이라고 판단된다.

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

A. 두 개의 파일이 비슷한 시기에 만들어졌고 exe 파일이 파일을 검색하고 생성하고 dll을 실행시키는 것을 보면 dll에서 네트워크 기반의 작동을 하기 때문에 dll이 일종의 백도어로 판단된다.

[실습 1-2] Lab01-02.exe

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

Virustotal 에 업로드한 Lab01-02.exe 파일

52개가 넘는 엔진에서 악성코드로 탐지하는 것을 확인할 수 있다.

윈도우 32bits에서 동작한다는 것을 알 수 있다. 반복적으로 Trojan 형태가 보이는데 Trojan 형태로 은닉되어 있다가 활동하게 될 확률이 높은 것을 알 수 있다.

A. 악성코드의 시그니처로 판명된다.

2) 패킹이나 난독화의 흔적이 있는가? 이유는?

컴파일러에 관련된 정보가 누락되었다. EP Section을 확인해보니 일반 파일과 같이 .text 파일이 아닌 것을 확인할 수 있다. 또한, upx1이라고 되어있는 것을 보니 upx로 패킹되었다는 것을 알 수 있다.

파일을 언패킹한 후, 다시 PEID로 확인하였다. .textMicrosoft Visual C++로 된 것을 알 수 있다.

A. 처음 PEID에서 확인하였을 때 UPX 패킹이 되어있는 파일이었다. 언패킹을 하였더니 Visual C++에서 컴파일 했다는 것을 알 수 있었고 EP Section(프로그램 시작 지점) 정보도 제대로 보이는 것을 볼 수 있다.

3) 임포트를 보고 악성코드의 기능을 알아낼 수 있는가? 그렇다면 어떤 임포트를 보고 알 수 있었는가?

A.
CreateServiceA 함수: 특정 서비스를 생성하고 등록하는 역할을 한다. 사용하면 서비스의 이름이 반드시 파라미터 값으로 들어오게 된다. Strings를 통해 알 수 있다. InternetOpen 함수는 인터넷 서비스를 생성하고 인터넷으로 작업을 한다는 것을 알 수 있다.

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

A. 인터넷 URL, Service 이름을 확인할 수 있었다. 정황상 이 사이트에 접속할 확률이 높다.
 

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

A. 인터넷 서비스를 이용하여 특성 사이트에 접속할 수 있다.

[실습 1-3] Lab01-03.exe

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

47개가 넘는 엔진에서 악성코드로 탐지하는 것을 확인할 수 있다.

윈도우 32bits에서 동작한다는 것을 알 수 있다. 반복적으로 Trojan 형태가 보이는데 Trojan 형태로 은닉되어 있다가 활동하게 될 확률이 높은 것을 알 수 있다.

A. 악성코드 시그니처로 판단된다.

2) 패킹이나 난독화의 흔적이 있는가? 이유는?

EP Section의 정보가 나오지 않는다. 컴파일 이름에 FSG 1.0이라고 나오는 것을 볼 수 있다. 패킹의 흔적이다.

언패킹 후 Visual C++로 언패킹 된 것을 볼 수 있다.

A. 패킹의 흔적을 찾을 수 있고 언패커를 검색해서 패킹을 해지한다. 패킹을 했다는 것은 난독화를 했다는 것이기 때문에 악성코드로 충분히 의심할 수 있다.

3) 임포트를 보고 악성코드의 기능을 알아낼 수 있는가? 그렇다면 어떤 임포트를 보고 알 수 있었는가?

A. 특별한 import를 사용하지 않는다. 그렇기 때문에 이 import만 보고는 판단하기 어렵다.

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

특정 URL이 있는 것을 볼 수 있다.

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

A. 패킹이 된 것을 보면 공격자가 내용을 숨기려는 의도가 있다는 것을 알 수 있다. 네트워크 주소가 나와있는 것을 봐서 해당 사이트와 연관이 있어 보인다.