2주차에는 메모리 포렌식 강의를 진행하였다.
먼저 volatility를 설치했다.
volatility는 메모리관련한 데이터를 수집하는 도구이다.
volatility cridex 풀이를 진행하여 보겠다.
제일 먼저 cridex 파일에서 cridex.vmem 파일을 imageinfo 한다.
imageinfo란 메모리의 운영체제를 식별하는 것이다.
즉 메모리 덤프를 보고 volatiility가 "이건 어떤 운영체제의 메모리 덤프다"를 판단하는 것이다.
imageinfo가 필요한 이유는 어떤 운영체제인지에 대한 값이 앞으로의 모든 분석에서 사용될 것이기 때문에 모든 분석에 앞서 imageinfo를 통해 꼭 어떤 운영체제의 메모리인지 찾아야 한다.
그 다음으로 pslist, psscan, pstree, psxview를 보도록 한다.
pslist: 프로세스의 리스트를 시간 순서대로 출력한다.
근데 이걸 쭉 터미널에서 실행시키면 너무 길기 때문에
PS C:\Users\user\Desktop\cridex> volatility_2.6_win64_standalone.exe -f .\cridex.vmemd --profile=WinXPSP2x86 pslist > pslist.log
노란 부분처럼 마지막 부분에 로그를 붙이면 이 내용들이 파일로 만들어져 들어가게 된다.
psscan: 오프셋 순서대로 출력하는 것.
오프셋이란 메모리 덤프 파일에 어느 위치에 존재하는지 그 주소대로 출력한다. 사용하는 이유는 사실 오프셋 순서는 그다지 중요하지 않으나 psscan을 사용하면 숨김 프로세스를 볼 수 있게 되어 유용하다.
pstree: pid, ppid가 구조화되어서 보여진다.
pid란 process id를 의미하며, ppid는 parents process id를 의미한다.
프로세스는 부모와 자식관계가 있다. 어떤 프로세스가 하나의 프로세스를 생성하면 생성되어서 나온 아이가 자식 프로세스이고 생성한 애가 부모 프로세스이다.
psxview: psscan과 pslist를 한눈에 볼 수 있게 하는 도구이다.
pslist는 false인데 psscan은 true인 경우 숨겨진 파일일 수 있다.
이경우 꼭 그런 것은 아니지만 공격자가 의도적으로 숨긴 파일이라고 가정하여 의심해 볼 수 있다.
(계속 나오는 말 중.. 프로세스는 notepad++을 실행시켰을 때 나오는 한 줄 한 줄들을 모두 프로세스라고 한다.)
위의 것들을 이용해서 의심스러운 프로세스의 목록을 만들어야 한다.
난 초보자가 모르므로 그냥 이것저것 다 검색해 보는 수밖에 없다..
그래서 저 뒤에 보이는 winlogon, smss 등을 직접 검색해 봐서 무엇인지 파악해 보는 과정이 필요하다.
(이 문제에서는 아니지만 svshost를 가지고 조작하는 경우가 많다고 하므로 유념해 두자.)
그중 reader_sl 은 어도비 소프트웨어의 구성 요소이다. 어도비는 pdf파일을 주로 다루는데 보통 pdf를 이용한 악성코드가 아주 많다. 그래서 pdf파일 관련은 의심해 봐야 한다.
또한, 실행순서대로 놓고 보았을 때 의심스러운 프로세스 뒤에 실행된 프로세스들도 의심해 봐야 한다.
그 다음으로 volatility로 돌아가서 커맨드를 불러와야 한다.
cmdline, cmdscan, consoles 세 가지를 할 것이다.
cmdline: 프로세스가 실행될 때의 인자값
cmdscan: 콘솔에 입력한 값들을 실제로 볼 수 있음
consoles: 콘솔에서 입력하고 출력한 값들을 실제로 볼 수 있다.
cmdscan과 consoles는 비슷해 보이는데 검색하는 메커니즘이 달라 결과물이 다르게 나오는 경우가 있으므로 둘 다 하는 것이 좋다.
다음으로는 filescan도 해본다.
filescan: 메모리 내에 존재하는 모든 파일에 대한 정보
filescan은 오프셋 전체에 존재하는 파일을 전부 뽑아주므로 용량이 크다. 그러므로 앞의 과정에서 의심스러운 부분에 대해 찾아보고 filescan을 통해 추출하여 virustotal에 넣어 악성코드가 있는지 찾아봐야 한다.
아까 의심해 봤던 reader_sl.exe를 찾아보았다.
일치하는 정보가 2개가 뜬다.
이 중 한 개를 virustotal에 올려보도록 해보자.
68개의 백신으로 검사한 결과 6개에서 악성코드가 발견되었다.(강의해서는 67개 중에 1개 오류였는데 왜 이런지 모르겠다. 일단 넘어가기로..) 어쨌든 악성코드라고 단정 짓기에는 6개는 애매하므로 다른 걸 찾아봐야 한다.
네트워크 정보도 한번 보도록 한다.
connections: "현재 연결된" TCP(일반적인 인터넷 통신을 말한다) 통신에 대한 정보
local address는 분석하고자 하는 컴퓨터의 로컬주소이고 remote address는 원격지의 주소이다. 이 정보를 통해 두 개의 컴퓨터가 8080이라는 비트로 1484라는 프로세스에서 통신 중인 것을 알아낼 수 있다.
sockets: 응답받기를 기다리고 있는 모든 프로토콜에 대한 socket정보
(이 두 개는 윈도우 xp정도에서 사용되는 것이고 윈도우 7 이상으로 넘어오면 netscan으로 두 가지 정보를 한 번에 도출할 수 있다.)
이 정보를 hxd에 넣어보니 별다른 정보는 모르겠다..
strings를 사용해 보았다. 2개의 일치 내역이 나온다. 이게 현재 해커의 주소로 의심된다.
즉 reader_sl.exe에서 악성 pdf 문서를 읽었고 이것의 취약점으로 인해서 방금 찾아낸 주소로 접속했을 것이다.
또한 strings에서 찾은 결과를 보았을 때 은행 관련 접속내역과 비밀번호 등을 친 흔적이 있으므로 은행관련한 피싱으로 보인다. (은행이랑 비슷한 사이트 만들어 놓고 비밀번호 훔쳐가는..)
두 번째로는 ctf-d 사이트에 있는 grrcon2015 문제를 풀어보았다. 앞서 푼 포레식에 비해 규모가 크고 복잡한 문제이고 의심되는 부분도 많은 문제였다.
결과적으로는 이 문제는 메일을 통해 악성코드를 뿌리고 원격으로 컴퓨터를 조작한 것으로 보인다. 문제 푸는 방식은 앞에 부분이라 유사하지만 문제 풀이가 길어 나중에 따로 업로드해야겠다..
마치며..
포렌식에 대해 잘 모르는데 처음으로 메모리 포렌식을 하게 되어서 굉장히 어렵게 느껴졌다. 대부분 처음 사용하는 도구가 많아서 용어나 도구에 대해 익히는 데에 시간이 많이 걸려서 실제들은 강의시간은 얼마 안 되는데 실습하는데만 꼬박 몇 시간이 걸린 것 같다. 특히나 두 번째 푼 그르르콘 문제는 강의를 보며 따라 했는데도 시간도 오래 걸렸고 한 번에 잘 이해가 되지 않기도 했다. 이번 2주차 스터디를 진행하면서 새롭게 등장한 도구들이 많아 한번에 정리가 안되었는데 그나마 글로 정리하니까 나은 것 같기도 하다.. 그나저나 악성코드 찾아내고 해커가 어떤 방식으로 사용자의 컴퓨터를 공격하는지에 대한 시나리오를 찾는 과정이 어렵지만 재미있다.
본 글은 위의 인프런 강의를 듣고 작성하였습니다.
(섹션 2. 도구설치, 환경설정, 문제 다운로드 ~ CTF-d GrrCon 2015 풀이(2))
'학회_공부해요 > 디지털포렌식' 카테고리의 다른 글
[디지털포렌식_기초]5주차 윈도우 포렌식 (0) | 2023.05.08 |
---|---|
[디지털포렌식_기초]4주차 메모리 포렌식 (0) | 2023.05.03 |
[디지털포렌식_기초]3주차 물리메모리 포렌식 (0) | 2023.04.21 |
디지털포렌식 퀴즈 (0) | 2023.03.28 |
[디지털포렌식_기초]1주차 디지털 포렌식 기초 (2) | 2023.03.28 |