## 개요
SRUM은 System Resource Utilization Monitor의 약어로 시스템 내 리소스 사용량에 대한 정보를 담고 있는 아티팩트이다. 팬더믹 상황이 만연한 요즘 시대에 원격 근무, 원격 사용률이 높아지고 있는 추세이기도 하고, 바이러스/랜섬웨어의 경우 원격 서비스나 외부에서 특정 자원을 다운로드 하는 경우가 빈번하기 때문에 자원 사용량을 통해 특정 행위를 간접적으로 확인하는데 있어 SRUM은 사용 가치가 높은 아티팩트이다.
예를 들어 자원 사용한 시간이 남아있기 때문에 특정 프로그램이 특정 시간대에 사용되었다는 증거가 되기에 충분하기 때문이다. 또 네트워크 사용량을 확인하여 어떤 IP를 통해 분석 시스템에 접근했는지 또한 확인해볼 수 있다. 안티 포렌식 행위를 통해 기타 아티팩트가 삭제되어 있는 경우, SRUM이 남아있을 때가 있는데 (안티포렌식의 대상이 아니라고 판단되어) SRUM을 활용해서 간접적인 행위를 식별할 수 있다.
> [!NOTE]
> 다만 윈도우 8 이후부터 적용된 기능이기 때문에 윈도우 7이나 다른 운영체제 환경에서는 사용할 수 없는 아티팩트이니 사용에 참고하도록 하자.
>
## 경로
윈도우 아티팩트 특성상, 로컬 경로에 남아있는 정보와 레지스트리에 남아있는 정보를 확인할 수 있다. SRUM역시 마찬가지로, 로컬 경로를 통해 좀더 실질적인 정보에 접근할 수 있으며 레지스트리 경로를 통해 부수적인 정보를 확인할 수 있다.
**로컬 경로**
```
C:\Windows\System32\sru\*
```
**레지스트리 경로**
```
1) SOFTWARE\Microsoft\WindowsNT\CurrentVersion\SRUM\Extensions
2) Local Settings\Software\Microsoft\Windows\Shell\MUICache
```
## 데이터
이번 절에서는 구조에서 다뤘던 로그 파일과 데이터 파일에 어떤 정보가 저장되고, 어떤 경우에 활용될 수 있는지 알아보도록 하자. 또 SRUM 데이터가 어떻게 처리되는지 역시 알아가며 SRUM 데이터의 특성에 대해서도 정리할 예정이다.
보면 크게 4가지의 파일로 규정지을 수 있는데, 각 파일의 저장하고 있는 내용은 다음과 같다. 중요한 것은 `SRUDB.dat` 파일이니까 해당 파일을 위주로 어떤 데이터가 저장되는지 분석해 보자.
![[Untitled 25.png]]
- dat : SRUM의 실질적인 데이터가 저장되는 파일
- log : SRUM 서비스에 대한 정보 (Errors, Warnings)
- chk : SRUM 서비스가 실행중일 때 사용되는 임시 파일
- jrs : SRUM 이벤트 로그 파일
**SRUDB.DAT**
SRUM 에 저장되는 모든 데이터는 SRUDB.dat 파일에 저장된다. 주로 4가지 유형의 정보가 저장되는데 아래 정리된 리스트와 같다.
- 실행중인 프로세스 & 실행 커맨드
- 네트워크 연결 정보 & IP 주소
- 전원 및 절전 여부
- 어플리케이션 사용량
분석을 위해서는 도구가 필요한데, 필자는 Eric Zimmerman의 SrumECmd나 srum-dump라는 도구를 사용하는 것을 선호한다. (사용법에 대해서는 따로 다루지 않는다.)
~~아니면 Magnet AXIOM이나 다른 통합 지원 도구를 사용하는 것도 좋지만 가난하니까 생략한다.~~
왼쪽 사진과 같이 파싱을 시도한다면 (SRUM_DUMP 이용) 오른쪽과 같은 결과값을 얻을 수 있다
![[%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-17_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_4.00.26.png]]
![[%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA_2023-01-17_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_4.04.43.png]]
> [!Warning] **SRUM 데이터 처리 방식**
>
> 파일 형태로 저장되어 있기 때문에 비휘발성 데이터라고 착각하는 경우가 꽤나 있다. 물론 파일 형태로 저장된 정보는 비휘발성 정보가 맞다. 하지만 SRUM 데이터가 저장되는 공간은 원래 메모리 영역이기 때문에 휘발성 정보로 인식해야 하는 것이 정론이라는 의견 역시 있다. (필자도 이 의견에 동의한다)
>
> 위의 말에 대해서 생각해 보았을 때 파일로 저장되는데 메모리에 저장되는 것은 무슨 소리인가? 싶을 사람도 있을 것이다.
>
> 의문을 해소해 주기 위해 SRUM 데이터가 어떻게 처리되는지 간략하게 알아보자. SRUM 데이터는 본래 메모리에 저장되는 정보이다. 다만 시스템이 종료되거나 수동으로 export 되는 경우에만 파일의 형태로 영구적으로 저장되기 때문이다. 즉 로컬에 남아있는 파일의 경우 시스템을 종료한 기록이 있기 때문에 저장되는 것이다.
>
> 그럼 모든 전원이 꺼지는 행위에 대해서 저장이 되는가? 그것도 아니다.
>
> 전원 부족으로 인해 기기가 종료되는 경우 저장되지 않으며, 시스템 크래시나 블루스크린 등 하드웨어 오류를 원인으로 하는 종료 시에도 저장될 수는 있으나 온전한 데이터가 저장되었다고 신뢰할 수 없다.
>
> 요지는 SRUM 데이터는 일종의 휘발성 데이터이므로 Live 상태로 습득하는 경우, 수동으로 export 이후 이미징을 수행하는 것이 권장된다는 것이다.
>
## 결론
생각외로 많은 정보를 확인해볼 수 있는 아티팩트가 SRUM이다. SRUM을 자주 사용하는 것은 아닌데, 이는 휘발성으로 인한 데이터 간 공백이 존재할 수 있어 아티팩트를 분석하여 도출하는 결론을 100% 신뢰할 수 없기 때문이다. 이에 다른 아티팩트와 조합해서 사용할 때 신뢰성을 더 실어줄 수 있는 요소로 사용되거나, 안티포렌식으로 인해 파일 실행, 네트워크 연결 이력에 대한 정보를 찾을 수 없을 때 차선책으로 이용하는 것이 바람직 해 보인다.
## Tools
- srum-dump
https://github.com/MarkBaggett/srum-dump
- SrumECmd
> [!info] Eric Zimmerman's tools
> [https://ericzimmerman.github.io/#!index.md](https://ericzimmerman.github.io/#!index.md)
## Reference
- Windows Internals, Part 1: System architecture, processes, threads, memory management, and more (7th Edition) - By Mark E. Russinovich, David A. Solomon, and Alex Ionescu.
- "Windows 10 and Windows Server 2016 Security Baseline" - Microsoft Docs
- "Windows 10 and Windows Server 2016 Security Baseline" - Center for Internet Security (CIS)
- "Windows 10 and Windows Server 2016 Security Baseline" - National Institute of Standards and Technology (NIST)