관리 메뉴

Information Security

Volatility BlackEnergy 분석 본문

포렌식/리눅스 포렌식

Volatility BlackEnergy 분석

HackingPractice 2020. 12. 28. 19:35

 

그림 1-1 분석과정

 

BlackEnergy

  • DDoS 트로이 악성코드
  • 2008년 러시아와 조지아의 갈등 관계에서 조지아로의 사어비 공격에 사용
  • 현대적 루트킷과 프로세스 인젝션 기술, 강한 암호화, 현대적 구조를 가짐.

 

그림 1-2 BlackEnergy2

 

 

imageinfo를 해보면 2010-08-15 Local time은 15:22 세계시간으로는 19:22이라는 것을 알 수 있다.

그림 1-3 imageinfo

 

WinXPSP2x86 서비스 팩 설정 후 pstree 내용을 확인했다.

그림 1-4 pstree

 

파일 이름이 이상한 프로세스를 확인할 수 있다.

그림 1-5 악성코드

 

psscan 내용을 확인했다.

그림 1-6 psscan

 

악성코드의 시작과 종료 시간을 알 수 있다.

그림 1-7 시간

 

psxview를 통해서 숨겨진 프로세스를 확인했다. pslist와 pscan 값이 다르면 의심해야 한다.

(logonui.exe는 값이 다르지만 제외)

그림 1-8 psxview

 

Pid 1260번은 검출되지 않아서 explorer일 것 같다. 131.107.115.254 IP주소가 의심스럽다.

그림 1-9 connscan

 

131.107.115.254를 조회하면 Microsoft Corporation 주소로 보아 정상적인 IP 주소인 것 같다.

그림 1-10 Microsoft Corporation

 

해당 악성코드의 메모리 덤프를 뜨려고 했지만 메모리 코드가 내려가 Error가 뜨는 것을 알 수 있다.

그림 1-11 Dump

 

malfind 명령어는 VAD 태그와 페이지 권한들 같은 문자들을 기반으로 사용자 모드 메모리에 숨겨져 있거나 삽입되어 있는 코드나 DLLs를 찾아내는데 도움을 준다.

그림 1-12 malfind

 

DLL를 보면 서비스를 제공하는 프로세스 svchost.exe를 확인할 수 있다. pid: 856, vad: VadS, Protection: ERW, 헤더: MZ를 보아 의심스러운 프로세스인 것을 알 수 있다. 

그림 1-13 svchost.exe

 

ldrmodules은 LDR_DATA를 통해 연결되지 않은 DLL 확인할 수 있는 명령어다. msxml3r.dll 파일을 보면 False를 보여주는 것으로 보아 숨긴 파일인 것 같다.

그림 1-14 ldrmodules

 

PID 856, Address 0xc30000 덤프 파일이 만들어진 것을 알 수 있다.

그림 1-15 0xc30000

 

 

PID 856, Address 0x00eb0000 덤프 파일이 만들어진 것을 알 수 있다.

그림 1-16 0x00eb0000

 

apihooks를 통해 중간에 IAT 수정한 것을 찾을 수 있다. ntoskrnl.exe IofCompleteRequest 함수에 후킹이 걸린 것을 알 수 있다. 00004A2A 주소로 넘어가는 것을 알 수 있다.

그림 1-17 apihooks

 

volshell를 통해 dd(0x8054b404) 주소를 확인했는 데 ff0d1c2d라는 것을 알 수 있다.

그림 1-18 volshell

 

다시 apihook를 보면 0x8054b404에서 0xff0d1c2d로 JMP 하는 것을 알 수 있다.  Hook address 주소랑도 일치하는 것을 알 수 있다.

그림 1-19 JUMP

 

thread를 통해 다른 곳에서 지원하는 플러그 HookedSSDT를 사용했는 데 비슷한 결과 값을 볼 수 있다.

그림 1-20 HookedSSDT

 

callbacks 명령어는 사용자가 임의로 호출하는 게 아니라 시스템에 의해 자동으로 호출된다.

그림 1-21 callbacks

 

driverirp 명령어는 드라이버의 IRP Inline Hooking을 감지한다.

그림 1-22 driverirp

 

악의적인 모듈 00004A2A 주소를 보면 icqogwp driverirp가 참조하고 있다.

그림 1-23 icqogwp 

 

modules 명령어를 통해 모듈들을 확인했다.

그림 1-24 modules

 

00004A2A 모듈만 다른 모듈과 다르다는 것을 알 수 있다.

그림 1-25 00004A2A

 

00004A2A 주소에 대한 0xff0d1000 메모리 덤프를 떴다.

그림 1-26 moddump

 

icqogwp 0xfc753000 주소에 대한 메모리 덤프를 떴다. 

그림 1-27 icqogwp

 

악의적인 모듈들을 메모리 덤프한 것을 알 수 있다.

그림 1-28 메모리 덤프

 

userassist 최근 실행한 명령어를 가지고 있는 레지스트리를 알 수 있다.

그림 1-29 userassist

 

해당 파일의 이름과 위치를 확인할 수 있었다.

그림 1-30 파일 이름

 

mftparser 명령어를 통해 mft 파일 시스템 시간 정보를 확인할 수 있다.

그림 1-31 mftparser

 

Image data and time : 2010-08-15 19:22:11 UTC+0000

1. Prcoess

explorer.exe .1e0f1b9b697ab49 2010-08-15 19:21:25 UTC+0000 2010-08-15 19:21:27 UTC+0000 ..cmd.exe 2010-08-15 19:22:11 UTC+0000 2010-08-15 19:22:11 UTC+0000

 

2. DLL

svchost.exe

address: 0xc30000

pid: 856
vad: VadS
Protection: ERW 

헤더: MZ ---> exe//dll 파일

 

856 svchost.exe 0x00eb0000 False False False \WINDOWS\system32\msxml3.dll

 

3. hooking
00004A2A

4. 커널드라이브
DriverName: icqogwp
DriverStart: 0xfc753000
DriverSize: 0x7880
DriverStartIo: 0x0

'포렌식 > 리눅스 포렌식' 카테고리의 다른 글

Stuxnet 분석  (0) 2020.12.30
백도어 시나리오  (0) 2020.12.25
DC3 Challange  (0) 2020.12.24
Volatility  (0) 2020.12.23