본문 바로가기
악성코드 분석

악성코드 분석 7

by 윤라경 2024. 9. 30.

[2024.09.23]

 

[기초 정적 분석]

> 분석 파일: Lab01-01.exe

 

01. 자동화 분석

 

> 분석 도구: virustotal.com

> 분석 결과: 56/73(V3, AlYac Trojan)

 

 

 

 

=> (실제 파일 분석 시에는 패킹 여부 확인을 먼저 해야 됨)

02. 이 파일은 패킹이나 난독화가 되어 있는가?

만약, 패킹되어 있다면 무엇으로 판단되는가?

 

> 분석 도구: PEiD, Exeinfo

> 분석 결과: 패킹되지 않음

 

 

 

03. 이 파일의 컴파일 날짜/시간은 언제인가?

 

> 분석 도구: PEView

> 분석 결과: 2010/12/19 16:16:00

 

 

 

 

=> 패킹: upx.exe [파일명]

=> 언패킹: upx.exe -d [파일명]

 

 

패킹을 다시 진행하기 위해 upx를 사용했다

일반 압축만 하는 것이 아니라 실행하면 그대로 해제가 되면서 압축이 되는 실행 압축 파일이 된다

 

* upx를 사용하여 패킹 진행 시 파일이 열려 있으면 위와 같이 진행되지 않는다

 

 

upx로 실행 압축을 한 후 다시 PEiD로 확인 시 Section에서 UPX1을 확인할 수 있다

이렇게 확인되면 UPX로 실행 압축이 되어 있다고 보면 된다

 

 

패킹 진행한 파일을 strings으로 확인 시

전에는 나오지 않았던 UPX와 버전까지 나와 있는 걸 볼 수 있다

 

 

=> 패킹 전/후 내용 비교

 

 

패킹 진행 전과 후를 비교해 보면 리소스와 코드 영역이 사라진 것을 확인할 수 있다

 

 

또한 패킹이 진행되면 마지막에 보이던 함수가 보이지 않게 된다

패킹이 된 것으로는 분석이 불가하여 꼭 패킹 여부를 확인해야 된다

 

 

PEView로 확인 시에도 뒤에 UPX가 붙는 것을 확인할 수 있다

패킹 진행된 파일을 다시 분석했을 때 완전히 PE 구조가 달라진다

 

 

ollydbg에서도 패킹 진행된 파일을 분석 시 문자열과 함수는 보이지 않는다

그렇기 때문에 패킹을 진행했을 때는 분석에 어려움이 있어 언패킹을 진행해야 된다

 

 

upx의 -d 옵션을 통해 다시 언패킹을 진행했다

 

 

다시 언패킹 후 PEView로 확인했을 때 원래의 파일과 동일하게 나타나는 것을 확인했다

 

 

04. 임포트를 보고 악성 행위를 알아낼 수 있는가?

있다면, 어떤 임포트인가?

 

> 분석 도구: D/W

> 분석 결과

 

 

 

CloseHandle: 열린 개체 핸들을 닫습니다.

UnmapViewOfFile: 호출 프로세스의 주소 공간에서 파일의 매핑된 보기를 매핑 해제합니다.

IsBadReadPtr: 호출 프로세스에서 지정된 메모리 범위에 대한 읽기 권한이 있는지 확인합니다.

MapViewOfFile: 파일 매핑 보기를 호출 프로세스의 주소 공간에 매핑합니다.

CreateFileMappingA: 지정된 파일에 대한 명명되거나 명명되지 않은 파일 매핑 개체를 만들거나 엽니다.

CreateFileA: 파일 또는 I/O 디바이스를 만들거나 엽니다.

FindClose: 함수에서 연 파일 검색 핸들을 닫습니다.

FindNextFileA: 수 호출에서 파일을 계속 검색합니다.

FindFirstFileA: 디렉터리를 검색하여 특정 이름(와일드카드를 사용하는 경우 부분 이름)과

일치하는 이름을 가진 파일 또는 하위 디렉터리를 찾습니다.

CopyFileA: CopyFileEx 는 복사 작업의 일부가 완료될 때마다 지정된 콜백 함수를 호출할 수 있으며

복사 작업 중에 CopyFileEx 를 취소할 수 있습니다.

 

 

05. 감염된 시스템에서 검색할 수 있는 다른 파일이나

호스트 기반 증거가 존재하는가?

 

> 분석 도구: strings

> 분석 결과

kernel32.dll와 유사한 파일명으로 kernel132 파일을 복제/생성하여 실행

-> Lab01-01.dll 파일 복제했을 가능성

 

 

 

> Kernel32.DLL: 메모리 관리, 입출력 명령, 프로세스/쓰레드 생성

 

 

06. 감염된 시스템에서 악성코드를 발견하기 위한

네트워크 기반 증거는 무엇인가?

 

> 분석 도구: strings, ollydbg

> 분석 결과: WS2_32.dll, 127.26.152.13, SADFHUHF, hello

 

 

 

현재 IDA로 확인했을 때 MutexName을 찾기 위해 메인 함수 시작 부분 확인하는 것까지 진행했다

 

 

다시 ollydbg로 확인했을 때 해당 부분에서 차례대로 6, 1, 2를 push 한다

 

 

socket 함수에서 두 개의 프로토콜은 꼭 알고 있어야 된다

 

 

OpenMutexA: 명명된 기존 뮤텍스 개체를 엽니다.

CreateMutexA: 명명되거나 명명되지 않은 뮤텍스 개체를 만들거나 엽니다.

 

<SOCKET>

 

IPPROTO_TCP: 6

IPPROTO_UCP: 17

 

SOCKET_STREAM: 1

SOCKET_DGRAM: 2

 

AF_INET: 2(IPv4)

AF_INET: 23(IPv6)

 

 

07. 이 파일의 악성코드의 목적은 무엇인가?

 

> Lab01-01.exe(악성코드)

- 파일 복사, 생성, 검색하는 것으로 추측할 수 있음

- 공유 자원의 동시 접근을 제한

 

> Lab01-01.dll(악성코드가 불러 쓰는 dll 파일)

- WS2_32.dll으로 볼 때 Socket 통신을 할 것으로 추측

- TCP, 127.26.152.13

 

------------------------------------------------------------------------

 

> 분석 파일: Lab01-01.dll

 

01. 자동화 분석

 

> 분석 도구: virustotal.com

> 분석 결과: 56/73(AlYac Trojan, V3: 탐지하지 못함)

 

 

 

 

=> (실제 파일 분석 시에는 패킹 여부 확인을 먼저 해야 됨)

 

> 분석 도구: PEiD, Exeinfo

> 분석 결과: 패킹되지 않음

 

 

 

02. 이 파일의 컴파일 날짜/시간은 언제인가?

 

> 분석 도구: PEView

> 분석 결과: 2010/12/19 16:16:38

 

 

 

 

처음에는 이렇게 패킹되지 않은 상태라는 것을 확인할 수 있도록 되어 있다

 

 

사용하지 않는 문자열을 제외하면 이렇게 함수를 확인할 수도 있다

 

> 네트워크 시그니처

WS2_32.dll

hello

127.26.152.13

 

*WS2_32.dll: 네트워크 관련 라이브러리

 

 

현재 ollydbg에서는 네트워크 시그니처가 나온다

SADFHUHF도 나오는데 문자열에 나온 이상 쓸데없는 함수는 아니라는 뜻이다

그렇기 때문에 어디에 쓰이는지 확인해 보려고 한다

 

 

해당 줄로 이동해서 확인 시 MutexName인 걸 볼 수 있다

해당 이름으로 변경한다는 뜻이다

 

SADFHUHF: Mutex Name

 

 

현재 ollydbg에서는 실행 파일이어야만 열 수가 있어 dll 파일을 실행 파일로 변경시켜 줘야 된다

실행 파일을 변경하기 위해서는 PEView로 먼저 확인부터 해야 된다

확인 시 현재 파일이 dll로 되어 있으며, 이것을 exec 실행 파일로 변경시켜야 된다

 

 

현재 파일을 바꾸기 위해서는 화면에 보이는 F6에서 진행해야 된다

F6이 현재 파일의 Address 즉, 위치 값이다

 

 

데이터의 21이 dll 값을 나타낸다

해당 부분을 01로 변경해 주면 실행 파일로 변경된다

 

 

[DLL --> EXE 파일 변환]

 

> 변환 도구: HxD 에디터

 

> 파일 위치 확인

 

> 분석 도구: PEView

 

파일 위치  <-- F(행) 6(열)

데이터 210E --> 010E로 변경

 

 

 

HxD로 실행하여 F 행을 찾고 06번의 열을 찾아서 210E를 찾는다

 

 

그런 다음 21의 부분을 01로 변경하고 바로 저장하면 기존 파일에 덮어쓰기가 되기 때문에

 

 

다른 이름으로 저장 후 .exe 파일로 저장한다

 

 

그런 다음 ollydbg로 확인했을 때에는 별반 다를 건 없지만,

실행할 수 없다는 팝업 창이 뜨지 않기 때문에 정상적으로 실행 파일이 되었다는 뜻이다

 

 

헥사 값을 변경한 파일을 확인했을 때는 파일 위치가 F6이고 데이터는 수정한 대로 010E로 확인된다

반대로 exe 파일을 dll 파일로 변경하고 싶다면 기존의 파일과 같이 01 부분을 21로 변경시키면 된다

 

 

 

 

 

강의 소감

이번 시간에는 기존 강의 방법과는 다르게 진행되었다

순서대로 분석하는 것은 기본 전제로 두면서 중간에 더 세밀한 과정을 포함시켜 실습했다

패킹과 언패킹을 시도해 보기도 하고, 증거 수집을 위해 분석 도구들을

이용하여 확인하는 과정을 반복해서 진행했다

'악성코드 분석' 카테고리의 다른 글

악성코드 분석 9  (1) 2024.09.30
악성코드 분석 8  (0) 2024.09.30
악성코드 분석 6  (1) 2024.09.20
악성코드 분석 5  (0) 2024.09.19
악성코드 분석 4  (0) 2024.09.13