-
침해사고 대응기법 - Volatility Cridex & CTF-d, GrrCon 2015(+도구 설치, 환경 설정, 문제 다운로드)Digital Forensics/inflearn 2023. 10. 4. 11:46
개념 정리
침해사고 대응기법 → 메모리 포렌식
메모리 : 프로그램이 올라갈 수 있는 공간
Volatility : 메모리 관련 데이터를 수집해주는 도구
시스템 환경 변수를 설정하는 이유
어떤 경로에서도 접근할 수 있도록 하기 위함
실습 과정
도구 설치, 환경 설정, 문제 다운로드
본격적인 실습을 시작하기에 앞서 실습에 필요한 도구 설치, 환경 설정, 문제 다운로드를 진행했다.
Volatility는 2.6 윈도우 버전으로 다운로드 받고 바탕화면에 압축을 푼다.
밑에서 시스템 환경 변수를 설정할 때 사용해야하므로, 경로를 복사해놓는다.
microsoft store에서 windows terminal를 다운로드 받는다.
강의에서 말씀하신 Terminal 명령어 사전 공부는 다음 블로그 링크에서 해오라고 하셨다.
https://velog.io/@hunjison/Windows-Terminal-%EA%B8%B0%EC%B4%88-%EC%82%AC%EC%9A%A9%EB%B2%95
시스템 환경 변수 편집에 들어가서 고급 - 환경변수 - 시스템 변수 쪽에서 스크롤 조금 내려서 Path - 편집 - 새로 만들기 - 경로 붙여넣기 - 계속 확인 누르기
이렇게 설정해두면 어느 경로에 있든 volatility에 접근할 수 있도록 해준다.
Volatility Wiki 깃허브 사이트에 들어가면 밑으로 내리면 우측에서 Memory Samples - Malware Cridex 문제를 바탕화면에 cridex 폴더로 만들어서 다운받는다.
이제 CTF-d GrrCon 2015 를 다운받을 차례인데 ctf-d.com쳤는데 사이트가 안열린다. 알고보니 현재는 운영을 하지 않고 있는 것 같다.
아래와 같은 인프런 Q&A 답변을 보았다.
원래는 사이트에서 회원가입 - Challenges -밑쪽에 Memory쪽에 GrrCon 2015 #1를 바탕화면에 GrrCON2015 이름으로 다운로드 받아야 한다.
끝까지 계속 사이트에 연결을 시도해도 안되었고 결국 그르르콘 문제는 실습은 건너뛰고 강의만 들었다.
Volatility Cridex 풀이
먼저 volatility_2.6_win64_standalone.exe -f .\cridex.vmem imageinfo 를 통해 메모리 덤프의 운영체제를 식별한다.
suggested profile(s)에 있는 WinXPSP2x86과 같이 간단한 걸 사용했다.
그다음 프로세스 검색을 할 차례이다.
volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 pslist 를 실행하면 위와 같이 나온다.
이는 출력값이 길어질 때 보기가 불편해질 수 있으므로, 아래처럼 log파일로 만드는 것이 좋다.
위에서부터 순서대로(volatility에서 프로세스들을 볼 수 있는 4가지 도구)
- pslist : 시간 순서대로 보여줌(흐름 잡기)
- psscan : 숨겨진 프로세스 출력 가능
- pstree : PID, PPID 기준으로 구조화하여 보여줌(가시성 높고 프로세스 처음 접근 시 좋음)
- psxview : plist, psscan을 포함한 도구들의 결과를 한눈에 볼 수 있음, 숨겨진거 보기 가능
notepad++ 들어가서 파일 -열기 - log파일들
각 log파일을 열었을 때 보이는 한줄한줄은 각각 다 프로세스, 즉, 분석하고자 하는 메모리 안에서 실행되고 있던 또는 실행되었던 프로세스들의 목록이다.
무엇보다 의심스러운 프로세스들의 목록을 만드는 것이 중요하다.
여러 프로세스 중 reader_sl.exe 는 adobe acrobat 소프트웨어 구성요소로, PDF 문서를 통한 악성코드가 많기 때문에 notepad++ 해당 라인 옆에 //의심스러워!!! 써놓기
이번에는 프로세스말고 CMD를 분석해보려고 한다.
- cmdscan, consoles : 콘솔에 입력한 값들을 볼 수 있음
- cmdline : 프로세스가 실행될 때의 인자값을 확인할 수 있음
사실상 cmd 분석을 통해 얻은 결과는 없었다.
또한 파일 분석 및 덤프를 해보았다.
- filescan : 메모리 내에 존재하는 모든 파일의 리스트 출력
위 filescan의 결과에서 찾기 기능을 통해 reader_sl.exe를 추출할 수 있었다.(찾은거 첫 번째꺼 offset부분 복사해놓기)
다시 터미널로 돌아가서 mkdir files를 입력한다.
아까 복사한 offset 부분을 뒤쪽에 붙여넣는다.
- dumpfiles : 파일을 덤프, 옵션으로 메모리 주소, 프로세스(-p 옵션) 줄 수 있음
그러면 cridex 폴더에 files 폴더가 생기고 안에 두 개의 파일이 생긴다.
이걸 하나하나 분석할 수도 있지만 virustotal 사이트에서 둘 중 아무거나(똑같음) 검사를 돌려본다.
68개 중에 6개의 백신 프로그램이 악성코드라고 판단했다. 조금 적은 편이라 애매함에 체크하고 일단 넘어가자.
이번엔 네트워크 분석을 하려고 한다.
이것 또한 notepad++로 열어보면 log파일 하나가 나온다.
- connections : 현재 연결된 TCP 통신에 대한 정보
위 log파일을 통해 8080이라는 포트(41.168.5.140:8080)와 pid가 1484(explorer.exe)인 프로세스에서 통신하고 있다는 것을 알 수 있다.
pslist.log 들어가서 pid가 1484인 걸 찾아보니까 explorer.exe이다.
pstree.log 들어가서 explorer.exe에 의심 체크하고 밑에 있는 reader_sl.exe는 아까 virustotal 돌려보고 확률 낮아서 아닌 것 같았지만 이렇게 자동적으로 다시 의심스러워진다.
이제 프로세스를 세부 분석해야 한다.
터미널에서 mkdir dumps를 입력한다.
volatility_2.6_win64_standalone.exe -f .\cridex.vmem --profile=WinXPSP2x86 memdump -p 1640 -D .\dumps\ 도 바로 입력해준다.
위 코드는 memdump를 이용하여 reader_sl.exe 메모리 영역을 덤프한 것이다.
위와 같이 strings 명령어를 이용하여 메모리 덤프 안에서 ip주소를 찾아보려고 한다.
strings_1640.log의 찾기 검색창에 connections.log에 있는 remote address의 ip 주소 41.168.5.140을 복사해서 붙여넣기하고 현재 문서에서 모두 찾기를 누른다.
그러면 두 개가 뜨는데 첫 번째꺼 더블클릭하면, 해커의 웹사이트 주소로 추정되는 것들이 여러개 뜬다.
그리고 'bank' 단어가 자주 등장하는 것으로 보아 악성코드 시나리오를 은행 피싱과 관련지어 생각해볼 수 있다.
추가로 procdump를 이용하여 reader_sl.exe 실행파일을 추출하고 virustotal에 다시 검색해보면 높은 확률로 바이러스라고 뜨는 것을 볼 수 있다. filescan에서 본 거랑 다를 수 있어서 둘 다 virustotal에 넘겨보는 것이 좋다고 한다.
분석 결과
*침입 경로 : 확인 불가
*악성 행위
- 악성 프로세스 "reader_sl.exe"(PID: 1640) 식별
- 외부 통신 IP "41.168.5.140:8080" 발견
- 프로세스 덤프 후 virustotal 검색 결과 → 악성 프로세스 확인
- 프로세스 메모리 덤프 내부에서 수상해보이는 단서 확보(해커의 url, 각종 은행으로 추정되는 사이트들)
*추가 공격 : 확인 불가
CTF-d, GrrCon 2015 풀이
우선 실습을 진행하기 전에 바탕화면에 GrrCON2015 폴더에 문제가 다운받아져있어야 한다.
추가 설명
netscan : 짱짱(밑에 두개 다 보여줌)
(Windows xp 명령어)
*connections : "현재 연결된" TCP 통신에 대한 정보
*sockets : 응답받기를 기다리고 있는 모든 프로토콜에 대한 socket 정보(connections와 반대된다고 보면 됨, TCP 통신 <-> 모든 프로토콜)
notepad++에서 target~..파일 빼고 나머지 다 열기
프로세스 먼저 보는 순서
pslist.log-psscan.log-pstree.log-psxview.log-cmdline.log-cmdscan.log-connections.log-consoles.log-filescan.log-netscan.log
*완전 의심
explorer.exe 밑에 있는 애들 3개
cmd.exe
mstsc.exe
cms.exe
iexplore.exe
하위 cmd.exe
*살짝 의심
TeamViewer.exe
밑에 하위 두개
OUTLOOK.EXE
*중간정리
outlook.exe //메일 -> 메모리덤프 -> 메일 원본
여기를 클릭해보세요~~(URL).exe
프로그램 설치하게 함 (http어쩌구)
tv_w32.exe //애매함, teamviewer랑 ~.exe 여러가지 -> 아무것도 안나옴 -> 깨끗함!
iexplore.exe
180.76.254.120 -> ip찾아볼거임
C:\Windows\Temp\wce.exe , w.tmp결과값파일도 확인 //악성!!!
mstsc.exe
운영체제 식별
Win7SP1X86
프로세스 검색
- TeamViewer 관련 프로세스(tv_w32.exe)
- explorer 하위 프로세스(mstsc.exe, OUTLOOK.exe)
- 인터넷 익스플로러(iexplorer.exe, cmd.exe)
네트워크 분석
- 공격자 IP : 180.76.254.120:22
- PID : 2996(iexplorer.exe)
CMD 분석
- cmdline -> tv_w32.exe 수상해 -> 조사해보니 정상 프로세스
- cmdscan, consoles -> 악성 실행파일 발견(wce.exe)
파일 분석
- wce.exe : 관리자 계정을 포함하여 패스워드를 가져오는 실행파일
- w.tmp : wce.exe의 실행 결과로 출력된 파일
- AnyConnectInstaller.exe : Outlook 메일로부터 출력된 실행파일
프로세스 세부 분석
- Outlook.exe의 메모리 덤프로부터 피싱 메일 발견(Hello Mr. Wellick ...) + AnyConnectInstaller.exe의 URL 확보
- iexplorer.exe 메모리 덤프로부터 공격의 흔적 발견
- Teamviewer 관련 프로세스는 정상 프로세스로 판단
분석 결과
*침입 경로 : Outlook 피싱 메일을 통해 AnyConnectInstaller.exe 다운로드를 유도
*악성 행위
- AnyConnectInstaller.exe 실행파일 발견
- iexplorer.exe 내부에서도 공격의 흔적 발견
- wce.exe를 통해 관리자 패스워드를 가져오고 w.tmp 파일로 저장함
*추가 공격 : mstsc를 이용한 추가 공격 예상
GrrCon 2015 - 추가 분석 가능한 부분들(하는 걸 권장)
- iexplorer.exe 추가 분석 - procdump로 실행파일 살펴보기
- Outlook 메모리 덤프로부터 공격자 이메일, 피해자 이메일 찾아보기
- 공격자가 사용한 도구들과 구체적 행위를 파악하기(hint : consoles.log 살펴보기 구글링)
- 공격자의 추가 공격 행위 파악(hint : mstsc, gideon)
새로 알게 된 것
이번에는 개념을 공부하고 이론적인 것을 학습하는 것보다는 실습이 주를 이루었다. 직접 따라하면서 해보아야 더 익숙해질텐데 ctf-d 사이트 운영을 하지 않아서 아쉬웠다. 그래도 volatility는 처음 실습해봤는데, 처음이라 많이 어려웠지만 시간을 내서 계속 추가적으로 공부하고 실습하면 지금보다 훨씬 더 나아질 것 같다는 생각이 든다. 한번의 실습만으로 이해가 완벽하게 되는 부분은 아닌 것 같고 몇번이고 들여다봐야할 것 같다. 저번 강의보다 어려운 만큼 확실히 더 재미있었다.
본 글은 위의 인프런 강의를 듣고 작성하였습니다.
'Digital Forensics > inflearn' 카테고리의 다른 글
MUICache, AmCache & ShimCache, 브라우저 아티팩트 개념 및 실습 (1) 2023.11.21 Jumplist, Prefetch 개념 및 실습 (1) 2023.11.15 $MFT, $LogFile, $UsnJrnl, 바로가기(.LNK) 개념 및 실습 (1) 2023.11.07 Windows 포렌식 개요 & Registry 개요 (0) 2023.10.11 디지털 포렌식 소개와 기초 (0) 2023.09.27