정적분석 실전

Sirius·2023년 10월 18일

1. Lab01-01

Lab01-01.exe, Lab01-01.dll파일을 사용한다.

Question

  1. 바이러스 토탈에 파일을 업로드한 후 보고서를 보자. 기존 안티바이러스 시그니처에 일치하는 파일이 존재하는가?

직접 바이러스토탈사이트에 가서 올리면 된다.

  1. 이 파일은 언제 컴파일 되었는가?

Creation Time을 보면 됨

  1. 이 파일이 패킹되거나 난독화 징후가 있는가? 그렇다면 무엇으로 판단했는가?

    컴파일러의 이름들이 나오면 정상적인 파일이다(패킹되지 않음)
  1. 임포트를 보고 악성코드 행위를 알아낼 수 있는가? 그렇다면 어떤 임포트인가?

1) 오픈뮤텍스: 동시적으로 실행할 수 없도록 제어함, 노트패드는 2개가 같이 실행 될 수 있다. 그러나 카카오톡은 창이 2개가 뜨지 않음(단일 프로세스)
악성코드도 이거 사용함, 뒤에서 다운로드 수행하려면 뮤택스관련함수 필요함
이거만 가지고 너 악성코드야 라고 판단하기에는 부족하다.

2) Sleep은 잠깐 쉬는거
Connect로 연결되면 shutdown하거나 이런 명령어가 있을 수 있음
Connect될때 까지 기다리기 위해서 Sleep이 쓰임(후속동작 기다리기 위한 목적)


3) 이것은 윈도우즈 소켓관련 dll파일이다.
네트워크 연결과 관련됨
소켓이라는 것을 통해서 연결 동작을 함
dll파일이기에 exe파일 동작하고 dll파일이 동작한다.
lab-01-01의 exe파일도 확인해야한다.
따라서 exe파일의 IAT 정보 본다.


4) IAT 정보 보면
다 파일을 접근한다거나 파일을 읽거나 생성하는 함수를 사용함
분명 파일 생성함
MapViewOdFile : 공간들을 확인하는 과정
CreateFileMappingA : 더한다
파일만드는거 확인하려면 동적분석하거나 문자열 검사하자!

정확하게 파악하기위해서는 MSDN을 봐야함!

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

-> 문자열 정보를 봐야함

1) exe파일, dll 파일전부 PEStudio에 올린다.

2) strings로 들어간다.
strings랑 IAT랑은 명백하게 다르다.
문자열 정보들을 보면 IAT정보들이 포함될 수 밖에 없는 구조임
컴파일이 아무리 되어도 IAT정보들이 문자로 남아있을 수 밖에 없음
문자열정보는 IAT + 문자로써 exe파일안에 악성코드행위하는게 남아있음

3) 수상한 문자열 확인(악성코드 확인)


파일을 실행한 후에 시스템을 망가뜨림


Kernel32.dll은 정상임 그런데 자세히 보면 kerne132.dll임

Lab01-01.exe -> IAT 함수(프로그램실행, 생성) -> kerne132.dll을 생성함(Lab01-01.dll)

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

    의심되는 IP 주소 발견
    아까 WS2 32.dll파일에서 이용해서 커넥팅한거 확인함(IAT 정보)


connect하고 inet addr 이 2개가 IP주소를 커넥팅하는 역할을 한다.
그렇지만 도메인 주소는 찾을 수 없었다.
IP 주소를 Copy할 필요성이 있음 -> 이거를 바이러스토탈에 넣어도 확인 가능함

  1. 이 파일의 목적은 무엇이라고 판단했는가?
    Lab01-01.exe -> IAT 함수(프로그램실행, 생성) -> kerne132.dll을 생성함(Lab01-01.dll) -> 127.26.152.13에 연결한다(백도어 역할해서 명령어 전달로 예상됨)

2. Lab01-02

Question

  1. 바이러스 토탈에 파일을 업로드한 후 보고서를 보자. 기존 안티바이러스 시그니처에 일치하는 파일이 존재하는가?
  1. 이 파일이 패킹되거나 난독화 징후가 있는가? 그렇다면 무엇으로 판단했는가? 파일이 패키되어 있다면 언패킹해보자


UPX로 패킹되어있음
UPX를 가지고 분석해야할때는 문자열정보들이 제한되어있음
IAT, 문자열 정보들도 잘 나와 있지않음


지금 확인할 수 있는 것은 서비스들 등록하기 위한 목적인 (CreateServiceA)가 있다.


upx를 복호화를 하면 exe파일이 나온다. 이거를 분석할 것임(앞에서 함)

  1. 임포트를 보고 악성코드 행위를 알아낼 수 있는가? 그렇다면 어떤 임포트인가?

    CreateService가 이 프로그램특징
    서비스를 이름으로 보는데 이거를 문자열에서 확인 가능할것이다.

그리고 인터넷도 연다.(InternetOpenUrlA)
URL 정보에 접속한다.(광고목적일수도 있음)

운영체제 서비스에 등록 -> 실행 -> URL 오픈 -> 광고프로그램


오픈 브라우저 후에 동작을 빠져나온다.

  1. 감염된 시스템에서 악성코드를 인식하는 데 어떤 호스트 기반이나 네트워크 기반의 증거를 사용했는가?
    사실 패킹되어있는거 봐도 조금은 보이긴함

그러나 우리가 복원한 exe에서 strings 보면 다 나온다.

Openurl이 malware주소로 접속한다. -> 계속적으로 동작시키기 위해 서비스에 등록한다.
services.msc라는 등록페이지 보면 악성코드 실행시키면 분명 등록한다.


아마 이 MalService가 서비스 등록하는 애들일 확률이 높음
추측을 할 수 있다.

운영체제 서비스 등록(MalService) -> 실행 -> URL 오픈 -> 광고프로그램(malwarebook.com)

그러면 관리자 권한으로 실행했을때 MalService가 Services에 올라가 있는가?

올라가 있는 것을 볼 수 있다.

3. Lab01-04

Lab01-01.exe, Lab01-01.dll파일을 사용한다.

Question

  1. 이 파일은 언제 컴파일 되었는가? 난독화나 패킹은 되어있는가?

    컴파일 시간이 조작되었을 가능성 있음
    난독화나 패킹 안되어있음

PEStudio에서도 열어보자!

똑같이 2019년도로 나오는 것으로 보아 stamp가 조작되었다.

  1. 임포트를 보고 악성코드 행위를 알아낼 수 있는가? 그렇다면 어떤 임포트인가?

    여러가지 그룹 파일이 있음(Security, Resource)
    1) security
    파일 생성할때 특정 권한이 있어야함, 그 권한 확인하고 조정하기 위한(접근할 수 있는 권한을 확인해야함)

2) resource
악성코드에서는 Resource에다가 숨겼다가 가져오는 원리임
윈도우 GUI는 모두가 Resource를 가지고 있다.
이러면 Resource파일 확인해야함

3) file
GetTempPathA : 이거는 사용자들이 사용하고 있는 temp파일 폴더(사용자마다 임시적) 모든 권한들이 부여된 디렉터리에 가서 파일을 생성해야함

4) execution
WinExec: 리소스파일에서 가져온것을 또 실행해야함

5) dynamic-library
프로세스들을 실행한다는것은 API정보를 또 가지고 와야함

정리: 리소스파일 -> exe파일 다운로드 및 생성(Temp) -> WinExec -> exe(dll) : dll의 동적라이브러리 파일도 가지고 와야함

  1. resources(executable)에서 악성행위를 찾아낼 수 있는가?

    MZ 시그니처를 볼 수 있음
    exe나 dll 둘중 하나인데 exe일 가능성이 높다.

이 파일을 01_04_resource.exe라는 이름으로 dump한다.

  1. strings에서 악성행위를 찾아낼 수 있는가?

미스터리: IAT정보를 보면 Address URL주소에 접속하는애가 없다.
updater.exe를 다운로드 받는 역할하는 API정보가 없다.
아무래도 Resource파일안에 있을 것이다.
즉 Resource파일 통해서 updater.exe를 다운받고 이것을 temp파일에 저장할 것이다.

URLDownloadToFile : 누군가가 다른애를 통해서 실행할것이다.

  1. dump뜬 resource.exe에서 악성행위를 찾아낼 수 있는가?

1) imports

GetWindowsDirectoryA로 디렉터리정보 확인함
URLDownloadToFileA로 파일 다운로드 받는다. (URL은 01_04.exe파일에서 PATH 정보를 가지고 옴)
GetTempPathA로 저장한다.
그리고 WinExec로 실행한다.

2) strings

이제 확실히 보이기 시작한다.
updater.exe를 / 앞에서 다운받는다.

GetTempPath :

GetTemp있으면 여기 저장되는구나...
인터넷에서 다운로드 파일은 보통 여기 저장된다.


숨김파일 보기 해야함

정리: 01-04.exe -> 리소스파일 exe 실행 -> URL접속 및 다운로드(practicalmalwareanalysis.com/updater.exe)-> exe파일 다운로드 및 생성(Temp) -> WinExec -> exe(dll) : dll의 동적라이브러리 파일도 가지고 와야함

따라서 이 악성코드는 1) 드로퍼형식악성코드(리소스 파일에 들어가 있음) 그리고 2) 다운로드형 악성코드가 섞여있다.

0개의 댓글