메모리 포렌식 chanllenge 1 - stuxnet 악성코드

악성코드 및 포렌식|2021. 1. 25. 14:48

 

 

 

 

stuxnet이란 오직 핵심 시설의 파괴만을 목표로 하고있다.

 

 

기업망 업무망 등을 감염시키는것을 지금까지배우고 분석해왔지만

 

이번에 할것을

기계를 제어하고, 원전등 일반적으로는 독립된 프로토콜을 쓰는곳을 감염시키는 것을 배운다.

 

동작 조건이 한정되있으므로 사용자들이감염되도 타격이없다.

 

하지만 감염된 pc 가 타겟인곳에 usb를 꽃았을때는 마비가될수가있습니다.

 

 

 

 

xp 32 비트여서 따로 설정값이 필요가없었고

 

 

 

 

 

 

 

 

vol.exe -f 1.vmem pstree

(프로세스 목록을 봅니다)

 

 

vol.exe -f 1.vmem pstree > pstree.txt 이렇게하면 txt파일로 저장이되는거 알아두기

 

 

부모가 다 system으로 되있으면 악성일 가능성도있지만

상대적으로는 힘듭니다.

원격으로 해킹당하면 윈도우를 쓰기도힘들고

분석의 우선순위는 아닙니다. 가능은하다!

 

 

꼭 부모가 없다해서 악성이아니라 메모리 프로세서에 부모가 안남아있을수도 있습니다.

 

 

lsass.exe가 같은 프로세스인데 3개가 부모가 전부다 다릅니다.

winlogon.exe가 부모인 하나인 isass.exe 와

services.exe가 부모인 2개의 isass.exe

 

 

lsass는 무슨프로세스냐면 로컬보안 인증 하위 시스템 서비스이다.

이게 왜 의심이가냐

출입 관련이기때문에

여러개 존재할 의미도없고 의심이가는 것 입니다.

 

xp과 7에서 부모 프로세스가 다름.

 

 

 

 

 

vol.exe -f 1.vmem psxview (은폐된 프로세서 확인)

 

 

 

 

 

 

 

 

 

 

 

 

 

vol.exe -f 1.vmem connections

 

vol.exe -f 1.vmem connscan 

 

접속기록이존재하지 않앗습니다.

 

 

 

 

 

 

 

 

 

 

 

 

의심 프로세스 dump해봤다

-vol.exe -f 1.vmem procdump -p 1928,868,680 --dump-dir=./

(lsass.exe 3개를 해봅니다 1928, 868 680 pid)

 

 

메모리상에 존재를 했습니다.

 

 

 

자 이제 virus total에 분석을 해보게된다면

 

 

 

 

 

 

860.exe

 

 

 

 

 

 

 

 

 

 

 

1928.exe 도 악성코드였습니다.

 

 

하지만 680.exe는 바이러스가 아니였고

 

 

 

 

이러한 식으로 바이러스는 두개가 확실하게 바이러스였습니다.

 

 

 

 

 

 

 

자이제

 

 

 

 

 

 

DLL 분석하면

- vol.exe -f 1.vmem dlllist –p 1928,868,680

 

KERNEL32.DLL.ASLR.0360b7ab가 좀 이상하다는 것을 알았습니다.

확장자가 말이 안되기때문이다.

 

lsass.exe가 변조가 되었는지 안되었는지 한번 판단해봐야 할거 같습니다

 

pid 1928 isass.exe가 의심스럽게 티가나고있습니다.

 

 

 

 

 

 

 

 

 

vol.exe -f 1.vmem malfind –p 1928,868,680

실행파일이 변조됬는지 malfind를 한번 해봅니다

 

 

잘보면  4d 5a   MZ 시그니쳐인 실행파일이 삽입이 됬다는것을 알수가있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

vol.exe -f 1.vmem ldrmodules –p 1928,868,680

 

프로세스 별 참초하는 모듈을 분석합니다.

 

잘보면 빈공간이 여러개 존재하는데 뭔가 의심 쩍다는 것을 알수가 있습니다.

 

 

 

 

 

 

 

 

 

vol.exe -f 1.vmem dlldump –p 1928 -b 0x00080000 --dump-dir=./

 

vol.exe -f 1.vmem dlldump –p 1928 -b 0x00870000 --dump-dir=./

 

vol.exe -f 1.vmem dlldump –p 1928 -b 0x01000000 --dump-dir=./

 

-b는 메모리주소

./는 현재경로 입니다.

1928 pid의 빈공간을 추출을 한번 해보게 된다면

 

 

 

 

 

 

 

 

이렇게 3개가나왔고

 

검사를해보게 된다면

 

 

 

8000000.dll

 

 

 

 

 

 

870000.dll

 

 

 

 

 

 

 

 

10000000.dll

 

전부다 모두 바이러스가 포함이 되어있었습니다.

 

 

 

 

 

 

 

바이러스가 3개가 포함되어있으니까

 

 

 

 

===========================================================

 

 

 

▲ API Hooking 분석

 

vol.exe -f 1.vmem apihooks –p 1928

 

변조된(victim) 모듈 : ntdll.dll

후킹하는 모듈 : ntdll.dll

ntdll.dll이 자신 스스로를 변조하여 후킹한다.(0x7c900000)

 

 

 

 

 

 

 

 

▲ ntdll에서 변조된 부분 추출

vol.exe -f 1.vmem dlldump –p 1928 –b 0x7c900000

--dump-dir=./

peview로 보면 헤더가 깨져있다(run in DOS mode......).

 

 

 

 

 

 

 

 

 

 

 

 

▲ SSDT를 후킹하는 함수 검색

vol.exe -f 1.vmem HookedSSDT

 

 

 

 

 

 

 

 

 

▲ Callback 함수(사용자의 의지가 아닌, 시스템이 필요할 때 자동으로 호출)

vol.exe -f 1.vmem callbacks

stuxnet에서 mrxcls.sys와 mrxnet.sys가 악성 모듈이다.

 

 

 

 

 

 

 

▲ Callback 함수에서 악성 모듈(mrxcls, mrxnet) 추출

- vol.exe -f 1.vmem module

mrxcls, mrxnet의 시작 메모리주소 확인

- vol.exe -f 1.vmem moddump -b 0x81f8cb60 --dump-dir=./

- vol.exe -f 1.vmem moddump -b 0x81c2a530 --dump-dir=./

 

 

 

============================================================

 

 

 

 

 

 

 

▲ 사용자가 실행한 파일 목록(userassist)

- vol.exe -f 1.vmem userassist

74ddc49a7c121a61b8d06c03f92d0c13.exe 파일이 PC를 감염시킨 악성코드 의심

 

 

 

여기서 exe파일을 실행을 시켰다.

 

 

 

 

vol.exe -f 1.vmemfilescan

아까 프로세스는 파일이 메모리에 올라가면 프로세스가 되는데

 

메모리에서 파일정보를 가지고있냐(파일을 검색)

컴퓨터가 켜진이후로 실행된 별도의 파일

근데 파일이 너무많이나오니까

 

밑에껄로 진행을합니다.

(txt파일로 만들게)

 

 

 

 

volatility -f MemoryForensic1.vmem filescan > 1111.txt

 

 

▲ exe 파일 추출

- ps관련된 명령어에 base 주소나 pid가 검색되지 않기 때문에 filescan을 통해 실행파일

검색 후, dumpfiles로 추출한다.

 

 

 

 

 

 

 

 

txt 파일로 만든곳에서 이렇게 실행된 파일들이 많이나오고

찾아볼수있는데 우리가 궁금한 파일을 찾아봅니다. 

 

 0x00000000002452ed8은 하드디스크의 주소입니다

 

우리는

0x0000000002452c30 으로

이번에는 메모리가 아니라 하드디스크의 주소를 가지고 덤프를 떠봅시다.

이게 왜 두개가 있냐면

실제로 컴퓨터에는 굉장이 많이 쪼개져서 저장이되기때문에 2개가 나옵니다.

 

 

 

 

 

 

 

vol.exe -f 1.vmem dumpfiles –Q 0x0000000002340c30 --dump-dir=./

                                    

 

vol.exe -f 1.vmem dumpfiles Q  0x000000002452ed8 --dump-dir=./

                                     

휘발성이 크기 때문에 알수는 없지만

같은 파일로 나올수가 있습니다.

 

 

 

 

 

 

 

 

이렇게 나왔고 악성코드가 검사가 됬습니다.

 

 

 

 

 

 

 

======================================

 

 

 

 

 

저장

 

 

 

 

 

 

 

저장 크기는 9kb인데

할당크기는 12kb입니다.

 

내가 4kb로 할당했기떄문에 절대 연속적인공간에 하드디스크에 저장이 되지않습니다.

떨어져서 저장된다고 생각하면 됩니다.

 

(파편화되어 저장된다 그러기때문에 어떤건 바이러스가 나오고 어떤건 안나올수도 있다.)

댓글()