악성코드 분석

악성코드 분석 6

윤라경 2024. 9. 20. 23:13

[2024.09.20]

 

[정적 분석]

 

01. 디바이스 관련 API

 

> DeviceloControl

> GetLogicDriveStrings

> GetDriveType

 

 

 

 

02. 레지스트리 관련 API

 

> RegDeleteKey

> RegCloseKey

> RegCreateKey

> RegOpenKey

> RegqueryValue

> RegSetValue

> RegDeleteValue

> RegGetValue

 

 

 

 

 

03. 서비스 관련 API

 

> CreateService

> OpenService

> QueryServiceConfig

> CloseServiceHandle

> ChangeServiceConfig

> ControlService

> StartService

> OpenSCManager

 

 

 

 

04. 네트워크 및 인터넷 관련 API

 

> InternetGetConnectedState

> InternetOpen

> InternetOpenURL

> InternetReadFile

> Socket

> Send

> Recv

> Connect

> WSAStart

> WSACleanUp

 

 

 

*socket의 경우 구문을 알고 있으면 좋다

 

 

 

05. 뮤텍스 관련 API

 

> CreateMutex

> OpenMutex

> ReleaseMutex

 

 

 

 

06. 메모리 관련 API

 

> VirtualAlloc

> VirtualFree

> VirtualProtect

> HeapAlloc

> HeapFree

 

 

 

 

07. 프로세스 관련 API

 

> CreateProcess

> CreateThread

> ExitProcess

> TerminateProcess

 

 

 

Exit와 다른 점은 Terminate의 경우 정상 종료,

Exit의 경우 강제 종료 정도라고 생각하고 보면 된다

 

 

08. Thread 관련 API

 

> LoadLibrary

> ResumeThread

> CreateRemoteThread

 

 

 

 

[악성 코드 분석]

> 정적 분석

> 분석 파일: Lab01-01.exe

 

01. 자동화 분석

 

> 분석 도구: http://www.virustotal.com

> 분석 결과: 56/73(국내 백신: V3, Alyac 탐지)

 

 

 

오늘은 악성 코드 분석에 대해서도 정적 분석, 분석 파일이자 악성 코드인 Lab01-01.exe 파일을 분석하려고 한다

 

 

먼저 악성 코드 분석을 위해 virustotal.com 페이지로 들어가서

Lab01-01.exe 파일의 분석을 시작하게 되면 73개 중 56개의 악성 코드가 발견된다

제일 먼저 확인할 수 있는 것은 V3와 Alyac 정도가 있는 걸 확인할 수 있다

 

 

02. 해시 값 확인

 

> 분석 도구: WinMD5, HashCalc

> 분석 결과

MD5: bb74258d2141c107fd0e5106676bb1

SHA-256: 58989bd42c5bd3fbf39b1989eee5b39cd59108e8370be9ea986e

SHA-512: c40735ccc2df59136ea52da541ca101c63025d46abdf4535

 

*무결성을 검증할 수 있다

 

 

 

이번에는 해시 값 확인 비교를 위해 kalilinux 다운로드 이미지의 sum 값을 복사한다

 

 

Lab01-01.exe 파일의 해시 값을 찾기 위해 제일 먼저 HashCalc를 실행했다

실행 후 SHA-256에서 해시 값을 확인할 수 있고,

kali linux의 sum 값과 비교하여 둘의 해시 값이 다른 걸 알 수 있다

 

 

WinMD5를 이용할 수도 있지만, HashCalc에 비해 MD5의 해시만을 계산하기 때문에 HashCalc가 더 유용하다

 

 

화면에서 보이는 바와 같이 HashCalc의 경우 여러 가지의 해시 값을 확인할 수 있다

 

 

03. 패킹 여부 확인

 

> 분석 도구: PEiD, exeinfope, pestudio 등

> 분석 결과: 패킹 안 됨

 

 

 

해시 값 확인을 다음으로 패킹 여부를 확인해야 된다

먼저 PEiD를 통해 확인했을 때 EP Section이 .text로 나오며,

이 결과는 현재 패킹이 되어 있다는 뜻이다

 

 

PEiD와 같이 사용할 수 있는 것은 Exeinfope가 있다

PEiD와 비슷한 형태로 패킹 여부를 확인할 수 있다

 

 

pestudio도 있지만 둘에 비해서는 사용률이 적다

 

 

04. PE 구조 확인

 

> 분석 도구: PEView

> 분석 결과

컴파일 날짜: 2010/12/19 16:16:19 UTC

 

 

 

PE 구조 확인에 대해서는 PEView를 사용한다

Signature, FILE_HEADER, OPTIONAL_HEADEL가 제일 중요하다

 

 

패킹이 되어 있다면 .text, .rdata, .data 이 구조가 잘 확인되지 않는 점 참고하면 된다

 

 

현재 화면에서의 Table의 경우에는 API들이 모여 있는 곳이고,

API들이 Table을 거쳐서 가는 것을 알고 있으면 된다

 

 

현재 OPTIONAL_HEADER에서 코드의 사이즈가 1000번대로 시작하는 걸 PEView로 확인할 수 있다

 

 

확인 후 ollydbg로 실행하여 첫 번째 코드를 확인했을 때

1000번대로 시작하는 걸 볼 수 있다

 

 

05. DLL/API 정보 확인

 

> 분석 도구: Dependency Walker

> 분석 결과

 

 

 

PEView와 비슷한 형식으로 나타나지만, PEView에 비해 Dependency Walker는 자세하게 나온다

 

 

06. 파일 상세 분석

 

> 분석 도구: pestudio

> 분석 결과

 

 

 

전체적인 함수를 확인할 수도 있다

 

 

리버싱에서 배우던 ollydbg에서의 strings도 이렇게 확인할 수 있다

 

 

07. 문자열 검색

 

> 분석 도구: strings, ollydbg

> 분석 결과

 

 

 

strings를 실행하기 위해 cmd 창을 열어 해당 디렉터리로 이동 후

strings.exe 파일을 열어 실행하게 되면 문자열이 나오게 된다

이것을 조금 더 보기 편하게 저장하려면 텍스트 문서로 저장할 수도 있다

 

 

텍스트 문서로 확인했을 때 사용하지 않는 문자열을 제외하면

이런 식으로 사용 가능하며, 알아볼 수 있는 문자열이 나오게 된다

 

 

마지막으로 strings의 경우에는 ollydbg로도 확인할 수 있다

리버싱 시간에서도 자주 사용했던 방법으로 strings를 따로 확인할 수 있는 창을 볼 수 있다

 

 

 

강의 소감

오늘도 지난 시간에 이어서 사용 API에 대해서 알아봤다

또한, 이번 시간에는 악성 코드를 분석하는 실습도 같이 진행했다

순서대로 진행을 했지만 강의 시간이 다 되어 문자열 검색까지는 하지 못했다

그래도 이전까지의 분석은 끝났으므로 한 차례 분석은 미리 연습을 했다고 보면 될 것 같다