2024. 5. 13. 23:22ㆍ보안/포렌식
메모리 포렌식
주 기억장치(메모리)에 존재하는 휘발성 데이터를 덤프 분석하는 과정
악성코드가 실행되기 위해서는 메모리로 로드되어야 해서 메모리는 악성코드를 가지고 있을 가능성이 높다.
피해시스템의 RAM은 악의적인 코드가 할당한 자원과 악성코드 관련 증거들을 포함하고 있어 분석 시 유용한 흔적을 찾을 수 있다.
분석 시 얻을 수 있는 정보
- 프로세스 정보
- 네트워크 연결 정보
- 윈도우 레지스터리 정보
- 패스워드, 캐시정보, 클립보드 정보 등
- 악성코드 파일 정보
- 하드웨어 설정 정보
메모리 정보이니만큼 휘발성 데이터로 전원 차단 시 데이터가 사라져 온전한 데이터수집이 어렵다.
메모리 덤프
RAM에 존재하는 모든 데이터를 덤프해 분석가능한 파일 형태로 변환하는 작업
- 하드웨어를 이용한 덤프 : FireWire Attack(IEEE 1394)를 이용한 메모리 덤프, Tribble를 PCI 장치를 이용해 덤프
- 장점
- 악성 프로그램에 영향을 받지 않는다.
- 빠른 메모리 덤프 가능
- 무결성 최소화 - 단점
- 안전성에 대한 검증이 필요하다
- 간혹 시스템 크래시 발생
- 장점
- 소프트웨어를 이용한 덤프 방식
DD, MDD, Winen, WIN32/64dd & Dumplt, Memorize ProDiscovery, HBGary, FastDumpPro, 크래시 덤프, 절전 덤프
장점
- 추가 장치가 필요없다.
- 오픈소스 및 프리웨어 도구가 다양함
단점
- 커널 루트킷에 취약하다.
- OS 제약을 받는다.
- 수집하는 메모리쪽에 흔적이 남는다. - Virtual Machine Imaging
- VMware 세션이 정지되면 물리 메모리 내용은 .vmem 확장자를 가지는 파일에 포함된다.
- vmem은 raw 포맷과 유사하고 다른 메모리 분석 도구를 통해 분석 가능하다.
- 악성코드를 가상머신에 올리고 폴더에 보면 .vmem이 생기는데 이것을 이용해서 덤프를 뜰 수 있다.
- 절전모드 덤프(Hibernation)
- 전력 관리를 보다 효율적으로 하기 위해 절전 상태에 돌입되면 하드 드라이브에 메모리 데이터를 기록한 다음 전력을 차단해 버리는 기능이다.
- 윈도우는 절전모드로 들어갈 경우 물리메모리 내용을 압축해 C:hiberfil.sys파일로 저장한다.
- 부팅 과정에서 hiberfil.sys가 설정되어 있으면 NTLDR에 의해서 메모리로 로드 된 후에 이전 상태로 돌아간다.
Volatility
메모리 분석을 위한 대표적인 프레임워크 도구
위키 페이지 : https://github.com/volatilityfoundation
*운영체제 식별
- imageinfo : 메모리덤프 의 운영체제 식별
volatility -f <이미지 파일> imageinfo
*프로세스 검색
- pslist : 프로세스 리스트를 시간 순서대로 보여줌
- psscan : 프로세스 구조체 스캔 후 출력, 숨겨진 프로세스 출력 가능
- pstree : pid, ppid 기준으로 구조화하여 보여줌,
최초로 생성되는 프로세스를 제외하고, 모든 프로세스는 부모 프로세스를 복제해 생성되고 계 층관계 트리가 생긴다. 각각의 프로세스는 자식 프로세스와 부모 프로세스에 대한 정보를 가진다. PID(Process ID)는 운영체제에서 프로세스를 구분하기 위해 부여한 번호이다. PPID(Parent Process ID)는 해당 프로세스를 만든 부모 프로세스의 PID를 의미한다.
- psxview : pslist, psscan을 포함한 도구들의 결과를 한 눈에 볼 수 있음,
pslist는 true인데 psscan 은 false인 경우 숨겨진 프로세스라고 의심 가능하다.
Volatility -f <이미지파일> --profile
=Suggested Profile pslist / psscan / pstree / psxview > pslist / psscan / pstree / psxview.log
*네트워크 분석
- connections : 현재 연결된 tcp 통신에 대한 정보
- netscan : 메모리의 네트워크 정보, 프로세스 정보 출력
- sockets : tcp, udp를 포함한 모든 프로토콜 출력, 현재 listening 상태에 있는 소켓 출력
volatility -f <이미지 파일> --profile=<프로파일 명> connections > connections.log
volatility -f <이미지 파일> --profile=<프로파일 명> connscan
*cmd분석
- cmdscan, consoles : 콘솔에 입력한 값들을 볼 수 있음. cmdscan은 cmd.exe가 실행한 명령을 나열하고 consoles는 명령이 성공했는지 안 했는지 알 수 있음
- cmdline : 프로세스가 실행될 때의 인자 값을 확인할 수 있음
volatility -f <이미지 파일> --profile=<프로파일 명> cmdscan > cmdscan.log
volatility -f <이미지 파일> --profile=<프로파일 명> consoles > consoles.log
volatility -f <이미지 파일> --profile=<프로파일 명> cmdline > cmdlines.log
*파일 분석 및 덤프
- filescan : 메모리 내에 존재하는 모든 파일들의 리스트 출력
- dumpfiles : 파일을 덤프, 옵션으로 메모리 주소, 프로세스 줄 수 있음
++virtustotal 사이트는 바이러스 검사를 할 수 있는 사이트이다.
volatility -f <이미지 파일> --profile=<프로파일 명> filescan > filescan.log
volatility -f <이미지 파일> --profile=<프로파일 명> dumpfiles -Q <메모리주소> -D <저장 할 디렉토리>
*프로세스 세부 분석
- memdump : 특정 프로세스의 메모리 영역을 덤프
- procdump : 프로세스의 실행 파일을 추출
volatility -f <이미지 파일> --profile=<프로파일 명> memdump -p pid -D <저장할 디렉토리>
volatility -f <이미지 파일> --profile=<프로파일 명> procdump -p pid -D <저장할 디렉토리>
<명령어 참고 링크>
'보안 > 포렌식' 카테고리의 다른 글
리눅스 메모리 포렌식 (0) | 2024.05.14 |
---|---|
안티포렌식이란 ? (0) | 2024.05.13 |
[Dreamhack] video_in_video Write-up (0) | 2024.05.07 |
동영상 확장자(컨테이너, 코덱) (0) | 2024.05.06 |
[Dreamhack] palm write-up (0) | 2024.05.03 |