0x0102
OlympicDestroyer - Volatility Contest 2018 본문
오늘 다룰 내용은 Olympic Destroyer
먼저 관련 내용을 다운로드 받는다.


https://www.kaspersky.com/blog/olympic-destroyer/21494/
Olympic Destroyer: who hacked the Olympics?
Experts from Kaspersky Lab studied digital evidence related to the hacking attack on the 2018 Olympics in search of the actual attacker.
www.kaspersky.com
- 실제 기사 원문

단서
- 첨부파일 V10 'Olympic_Session_V10'
- 메일을 통해 감염
이제 본격적으로 메모리를 분석해보자

먼저 desktop - olympic으로 이동해준다.
이후 운영체제를 알아보기 위해 해당 파일 이름을 적어주고 imageinfo 명령어를 사용한다.
윈도우 7이라고 적혀는 있으나 같은 윈도우 7 안에서도 다양한 버전이 있으므로 알아보자
suggested profile에서 아무거나 짧은것 하나를 골라와서 진행한다

차례로
pslist
psscan
pstree
psxview
cmdline
cmdscan
consoles
netscan
filescan
/ 까지의 명령어를 작성하여 log 파일로 옮겨준다
dumpfiles
procdump
memdump

pstree를 확인해본 결과 수상한 프로세스들이 한눈에 보인다.
olympic destroy를 기준으로 위쪽 프로세스인 WmiPrvSE.exe 부터 시작되어
olympic destroy 아래의 세개의 프로세스가 악성행위를 하는 것으로 추정된다.

아래쪽에 OSPPSVC.EXE 프로세스도 의심스러운데,
그 이유는 이번 사건이 엑셀을 통한 침입으로 일어진 일이기 때문이다.
+) osppsvc.exe -> 마이크로소프트 관련 프로세스

또한 taskeng.exe도 의심해볼 필요가 있다.
공격자가 작업스케줄러가 지속적으로 실행되는 특성을 이용했을 수도 있다.
이후 pslist, psscan 등을 확인하러 가보자

psscan에서 숨김프로세스를 확인하려 했으나 내용이 뜨지 않으므로 창을 닫아준다
psxview 또한 의미없어졌으므로 창을 닫아준다

netscan에서 powershell 관련 local address를 확인하려 했으나 해당 내용도 의미가 없다

한가지 얻은 것이 있다면 system의 local address(본인의 ip) 이다.
저장을 해두고 진행하자.

조금 내려보면 비슷한 형태를 띄고 있는 원격 ip도 확인할 수 있다.
정리 - 192.168.111.130 (로컬 ip) / 192.168.111.128 (원격 ip)

cmdline을 살펴보면 olympicdestroyer3.exe의 경로를 확인할 수 있다.
C:\Windows\System32\OlympicDestroyer3.exe
나중에 추적해보자

또한 아까 의심스러웠던 olympic destroy 밑에 있던 xut.exe의 경로도 나와있으니 따오도록 하자.
C:\Users\VM\AppData\Local\Temp\_xut.exe
consoles.log를 확인해보자

conhost라는 프로세스가 cmd에서 powershell을 실행한 것을 알 수 있다.
그렇다면 conhost는 누가 실행했을까?
pslist를 살펴보니 csrss.exe가 실행한 것 같다. 구글링해보니 크게 의심스럽지는 않다.

추측해보면 pid가 620인 conhost가 수상한 프로세스들을 트리거한것 같다.

바로 이 친구. 의심스럽다고 체크하고 넘어가자
이후 filescan에서 검색을 해보자

아까 의심스러웠던 olympic destroy 오프셋부터 검색해서 따오자
Powershell로 돌아가
mkdir dumps, mkdir files를 해주고
아까 따온 오프셋을 넣고 추출한다.
이때 -D 옵션으로 dump dir을 지정해줘야한다.

이후 두번째로 의심스러웠던 _xut.exe도 검색하여 오프셋을 따온다.


이렇게 오프셋만 수정하여 진행해주면

+)dat와 image파일의 차이는 그저 오프셋에 대해서
image는 이미지 섹션 오브젝트에서 데이터를 뽑아오고 dat는 데이터 섹션 오브젝트에서 데이터를 뽑아오는 것이다.
내용적으로는 크게 차이가 없다.
바이러스토탈에 던져보자.
두개 모두 악성이 확실해 보인다.


그 다음, 아까 수상했던 다른 프로세스들을 살펴본다.
추측하기로는 OSPPSVC.EXE, taskeng.exe, conhost.exe와 같은 프로세스는 정상 프로세스일것 같지만
그래도 혹시 모르니 살펴보자
먼저 _xut.exe 밑에 있던 teikv.exe부터 차례로 가져와보자


순서대로 PID 1648, PID 3340, PID 1700, PID 2192, PID 620 번을 procdump 해준다.
이때 PID 1648, 3340 즉 teikv.exe와 ocxip.exe는 paging 에러가 뜨며 추출이 되지 않는데
일단 넘어가서 OSPPSVC.EXE, taskeng.exe, conhost.exe까지 다 procdump 해주자.
procdump로는 추출되지 않았던 teikv.exe와 ocxip.exe는 filescan.log에서 검색을 해보자.

오프셋을 가져온다. 0x000000007f7640d0

터미널에 와서 오프셋을 붙여넣고 dumpfiles 명령어를 써준다.
ocxip.exe도 마찬가지로 진행해준다.

0x000000007fdcb548

완료되었으면
지금까지 추출된 파일들을 바이러스 토탈에 던져보자






지금까지 분석한 내용 정리
4개의 악성 프로세스를 발견
아래의 다른 수상했던 프로세스들은 악성이 아닌 것으로 밝혀짐
이후에 해야할 일
어디에서 들어와서(hint : 첨부파일 v10) 어떤 행위를 하고(4개 프로세스 심화분석 해보기) 어떻게 나가는지 (추가공격) 알아보기
먼저 어디에서 들어왔는지 알아보자
첨부파일 v10은 .xls 파일로 열렸다. 그러므로 관련 프로세스인 OSPPVC.EXE를 메모리덤프 해보자

memdump 1700

memdump 1700 -> strings로 OSPPVC.exe.log 파일 만들기
그리고 '어떤 행위를 하고(4개 프로세스 심화분석 해보기)' 에 대해 알아보자
먼저 확실한 4개의 악성프로세스들을 strings 해보자
이 때 procdump를 strings 해주었는데 그 이유는 우리가 파일을 열어봤을 때 검색할 이렇다할 검색어가 없으므로
파일 전체를 봐야하는데 memdump를 strings 해주는 경우 파일이 너무 커서 일일이 보기가 힘들다.
그래서 이번에는 그나마 작은 procdump 를 strings 해준 것이다. (그래도 크다 500만줄 까지 감)
먼저 OlympicDestroyer.log 파일부터 확인해보자
무언가 긴 코드가 나오면 일단 의심! 공격코드일 확률이 높다
Olympic Destroyer.log 발견 목록
- 공격 스크립트
- LDAP : 컴퓨터가 속해있는 내부 네트워크 프로토콜
- Select - SQL 쿼리 / 내부 네트워크에 대한 정보를 불러오는 코드
- 계정과 패스워드
+)지금 하는 작업은 메모리 포렌식이다.
사건이 처음 터졌을때 상황파악을 하고 긴급대처를 하기위함으로
깊이 있는 분석 보다는 감을 잡는 느낌으로 log 파일을 확인한다
_xut.exe.log 발견 목록 (공격 스크립트 발견)
- cmd.exe 실행
- SeShutdownPrivilege : 시스템 종료 권한 지정
- vssadmin : 볼륨 섀도 복사본 백업 및 설치된 모든 섀도 복사 / 컴퓨터 복구 및 백업
delete shadows alll -> 컴퓨터 복구가 불가능 하도록 다 삭제
- wbadmin : 명령 프롬프트에서 운영 체제, 볼륨, 파일, 폴더 및 응용 프로그램을 백업 및 복원할 수 있는 명령어
delete catalog
- bcdedit : 부팅 로더 관련 명령어
실패들을 다 무시하고 recoveryenabled->no 로 만듬 즉 복구 기능 관련을 다 no 처리
- wevtutil.exe
clear system, clear security -> 이벤트 로그 삭제
즉, 복구 관련 기능을 삭제하고 부팅 관련 기능을 막고 이벤트 로그를 삭제 했다.
본인이 나가는 방식을 모르게 하기 위함인것으로 추정
그럼 어디에서 들어왔는지가 남는다
OSPPSVC.exe.log 를 살펴보자 이 파일은 osppsvc.exe를 memdump 한 뒤 strings 해서 가져온 값이다.
이 파일은 500만줄로 파일이 크므로 검색어를 지정하는 것이 좋다.
먼저 Olympic_Session_V10을 먼저 검색어로 지정해보자.
가장 중요한 첨부파일 명이었으므로 무언가 단서가 나오지 않을까 예상해본다.
145줄이 검색되어 나온다.
살펴보면, desktop에 위치했던 것 같다.
그러나 다른 확실한 증거는 발견할 수 없었고,
어디에서 들어와서 -> 'Olympic_Sesson_V10_수정본.xls' -> 'OSPPSVC.exe'
정도로만 추측할 수 있다.
정리해보면
어디에서 들어와서 'Olympic_Sesson_V10_수정본.xls' -> 'OSPPSVC.exe'
어떤 행위를 하고 ' olympicdestroyer.log, _xut.exe.log 결과'
어떻게 나가는지(추가공격) 'LDAP,계정,패스워드-> 같은 네트워크에 있는 컴퓨터 공격 의심' 으로 생각해볼 수 있다.
메모리 포렌식 끝!
+)추가분석 가능한 부분들
memdump -> strings 를 해보면 payload(BASE64)를 발견할 수 있다.
네트워크 -> LDAP
'Study > Digital Forensic' 카테고리의 다른 글
0714 디지털 포렌식 스터디 (0) | 2022.07.17 |
---|---|
0712 디지털 포렌식 스터디 (0) | 2022.07.14 |
CTF-D, GrrCon 2015 정리 & 추가 분석 (0) | 2022.07.14 |
Volatiltity Cridex 정리 & 추가 분석 (0) | 2022.07.14 |
Volatility 정리 (0) | 2022.07.14 |