본문 바로가기

study/악성코드분석&리버싱

기초 정적 분석, lab01-01.exe, lab01-01.dll 분석하기

728x90

2020/04/16 - [study/Malicious code basic, Reversing] - 기초 정적 분석에 필요한 도구

 

기초 정적 분석에 필요한 도구

악성코드의 기능을 파악하기 위해서 코드나 프로그램의 구조를 분석해보아야 합니다. 하지만 악성코드를 직접 실행하면 피해가 올 수 있으니, 실행하지 않고 분석하는 과정인 정적분석의 기본을 알아보고자 합니다..

hxxyxxn-1238.tistory.com

앞 포스팅을 보고오시면 더 이해하기 쉽습니다.

 

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

이전 포스팅에 한번 진행된 부분이라 생략하겠습니다.

 

2. 이 파일의 컴파일 시점? - PEviewer이용

lab01-01.exe

exe파일의 컴파일 시간은 2010/12/19 16:16:19 UTC입니다.

 

lab01-01.dll

dll파일의 컴파일 시간은 2010/12/19 16:16:38 UTC입니다.

 

몇 초 차이로 비슷한 시간대입니다.

이 2개의 파일은 이름도 똑같고, 컴파일 시간도 비슷합니다. 

거의 동시에 exe파일> dll파일이 만들어졌을 확률이 크기 때문에 이 둘은 쌍이다 ! 라는 것을 알 수 있습니다.

그리고 일반적으로 exe가 먼저 실행이 되고, exe가 필요할때 dll이 사용이 됩니다. 

그래서 세트로 움직인다는 것으로 추측이 되는 것입니다.

 

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

lab01-01.exe를 PEiD를 통해 분석해보겠습니다.

EP section: .text

컴파일 버전도 visual c++ 6.0으로 패킹되지 않음을 확인할 수 있습니다.

 

lab01-01.dll도 분석해보겠습니다.

EP section, subsystem, 컴파일부분도 다 바르게 뜨는 것으로 패킹되지않음을 확인할 수 있습니다.

 

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

- dependency walker 사용, Strings 사용

lab01-01.exe파일을 depends로 열면

여기서 우리가 주로 봐야할 부분은 import부분입니다.

kernel32.dll과 msvcrt.dll을 임포트 하고 있지만, 대부분의 파일에서 임포트 하는 부분입니다.

 

이 아래의 api함수중에 몇가지를 검색하여 어떤 함수인지 알아보겠습니다.

 

CopyFile 함수를 검색해보겠습니다.

msdn, 마이크로소프트 개발자 센터에서 copyfile 함수를 검색하였습니다.

msdn에서의 검색 화면

api함수의 정의를 확인해보겠습니다. 이미 존재하고 있는 파일을 카피해서 새로운 파일로 만든다고 되어있습니다.

 

syntax부분을 보면 더 확실하게 알 수 있습니다.

첫번째 parameter는 lpExistingFileName, 두번째는 lpNewFileName. 

이것까지만 보아도 이 함수는 copyfile(a.dat, b.dat, ~~).. 등으로 정의한다는 것으로 확인가능합니다.

그리고 이 parameter값을 정의하는 것이 좋은 이유는

이후에 우리가 signature나 string중에서 이 parameter를 찾을 수도 있다는 것입니다.

 

또 다른 함수를 보겠습니다. 

파일이 리스트 형태로 붙어있기 때문에, 인근 파일의 이름을 알 수 있습니다.

파일명 기준으로 한다고 치면, lab01-01.exe 파일의 인근 파일은 lab01-01.dll일 확률이 높습니다. 

이름이 같기때문에 붙어있을 확률이 크기 때문이죠.

결국 이걸 보면서 lab01-01.exe가 여러가지 일들을 하지만

아마 자기를 기준으로 해서 어디엔가 있는 파일을 검색하는 일도 한다는 것을 알 수 있습니다.

 

어떤 파일을 생성하거나 오픈하는 함수 입니다. 

파일을 카피하려면 그 파일을 열고나서 파일을 생성합니다. 그래서 이 함수는 복사하기위한 전처리 작업이라고 생각하면 되겠습니다.

 

전체적인 함수 흐름을 본다면, 이 lab01-01.exe파일은 아마 무언가 파일을 복사, 검색, 생성을 한다고 추측할 수 있습니다.

 

이번엔 Strings에서 lab01-01.exe파일을 분석해보겠습니다.

앞부분은 this program cannot be run in DOS mode, text, rdata, data... 를 제외하고는 이해할수 없는 문자들로 이루어져있습니다.

 

스크롤해서 밑으로 내러가면, 

이렇게 dependency walker 에서 보았던 dll 이름들과 각 api함수들의 이름을 볼 수 있습니다.

 

그런데 하단에 잘 보시면, 

kernel32.dll 바로 위에 kerne132.dll이라고 되어있습니다.

자세히 보지않으면 l 이라고 되어있어야하는 부분이 1로 되어있다는 것을 알아차릴 수 없습니다.

 

더 아래부분에는 lab01-01.dll을 통해 이 lab01-01.exe파일은 lab01-01.dll과 짝이라는 것을 알 수 있습니다.

마지막에는 warning_this_will_destroy_your_machine을 통해 악성코드임을 표현하기도 합니다.

 

kernel32.dll 이라는 파일이름도 2개, 해당 파일들에 접근하는 경로도 2개입니다.

이후에 설명이 되겠지만, c:\windows\system32 폴더는 아주 중요한 곳이기 때문에 

이 경로를 이용한다는 것은 악성코드일 확률이 높다고 추측할 수 있겠습니다.

 

 

 

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

 

dependency walker에서  lab01-01.dll파일을 보겠습니다.

kernel32.dll, ws2_32.dll, msvcrt.dll 의 총 3개의 dll을 import하고 있습니다.

 

kernel32.dll

kernel32.dll을 먼저 보면 virustotal사이트에서 보았던 것 처럼 sleep함수가 있는 것을 확인할 수 있습니다.

그 위에 createprocess 함수를 검색해보겠습니다.

새로운 프로세서를 만들거나, 스레드를 생성할 때 쓰이는 함수입니다

일반적으로 스레드 생성시 많이 사용하는 함수입니다.

변수이름들을 보면, 프로세서 이름들을 보면 우리가 나중에 도움이 될 수 있으니 한번 보고 넘어갑니다.

 

sleep 함수

sleep함수도 한번 보겠습니다.

특정 스레드를 실행하면서 은닉하는 형태입니다. 백그라운드에서 돌아가는 것을 보통 sleep한다고 합니다. 계속 대기!

 

다음 ws2_32.dll 부분에서는눈에 띄는 부분은 안나옵니다. 

그런데 이 전에 virustotal 사이트에서는 

이렇게 connect, shutdown 등의 네트워크 용어들이 보였습니다.

아마 버전업이 되면서 함수 이름들이 많이 바뀌었을 수도 있는데, 32버전으로 보여져서 그런 것 같습니다.  

virustotal사이트를 기반으로 함수 검색을 해서 보도록 하겠습니다.

 

socket함수는 소켓을 생성하고 특정서비스를 제공하기 위해 준비합니다. 

특정 포트에 접속하거나, 어떤 네트워크에 전송하기 전에 밑작업을 하는 함수입니다.

 

msvcrt.dll

msvcrt.dll에서도 malloc, free함수 등이 있음을 확인할 수 있습니다.

 

이 악성코드는 무언가 프로세스를 생성해서, 백그라운드에 띄우거나

ws2_32.dll은 특히 네트워크에 관련된 dll이기 때문에 네트워크에 관련된 무언가를 하는 것으로 유추가 가능합니다.

 

Strings에서 lab01-01.dll을 열어보겠습니다.

dependency walker와 virustotal에서 본 함수 이름들을 지나서,

 

hello

127.26.152.13

 

이라고 되어있는 부분이 보입니다.

ip주소가 나온 것으로 보아 저 곳이 어디인지 확인할 필요성이 있어보입니다.

whois서버에 들어가서 검색해보니 러시아 주소가 뜹니다.

 

저 주소에 접속해서 어떤 것을 다운받을 수도 있으니 악성코드인 것으로 추측이 가능해집니다.

 

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

이 파일의 목적은 lab01-01.exe와 lab01-01.dll이 같이 동작할 확률이 높고, 

exe파일에서 파라미터로 dll을 쓰는것으로 보아 이 dll을 카피해서 악성인 일을 할 것이라고 생각됩니다.

아마 그 타겟은 kernel32.dll일 것입니다.

 

728x90
반응형