DFRWS 2023 Challenge 1위 후기

“The Troubled Elevator - Forensic Investigation of a Bank’s Elevator Malfunctioning”

DFRWS 2023 ChallengeLorem Ipsum 팀으로 참여하여 1위를 수상하였다. 보고서와 함께 제출한 레포지토리가 DFRC github에 공개되어 있다.

image.png


대회 시작이 2023년 11월이었는데, 시상을 2025년 7월에 했다. 대회 기간도 채점 기간도 너무 길어서 다들 지쳐했다. 그렇게나 오래 기다려서 트로피를 받았는데 내 이름에 오타가 나서 서운했지만… 승아가 트로피 사진을 포토샵하며 달래줬다(고마워!). 이래저래 대회 운영에 다소 아쉬움이 남지만 그래도 결과가 좋았으니 괜찮다.

- 2023.11 : 팀 구성 및 대회 시작
- 2024.5 : 대회 마감 기한 2개월 연장 ~~(아무도 원하지 않았다)~~
- 2024.7 : 대회 마감
- 2024.11 : 대회 결과(순위) 공지
- ~~2025.1 : 기분 좋아져서 회식~~
- 2025.7 : DFRWS 2025 USA에서 시상식


DFRWS 2023 Challenge

DFRWS(Digital Forensic Research Workshop)에서 주최하는 포렌식 대회로, 2005년부터 시행되어 왔다. 조사 분석 대상이 주어지고, 이에 대한 조사 분석 보고서와 도구를 제출하는 방식으로 진행되며, 그 내용은 매 대회마다 조금씩 다르다. 올해는 ICS Forensic을 주제로 출제되었다.

image.png


시나리오

Kristi Wayne씨가 고위직 전용 엘레베이터를 탔는데, 엘레베이터가 갑자기 비정상적으로 작동하기 시작해 갇히는 사건이 발생하였고, 구출 이후 남아 있는 증거를 기반으로 사건의 원인을 규명하는 시나리오였다.

Kristi Wayne from Wayne Enterprise has recently bought a controversial bank in the city of Richmond. On June 29, Friday afternoon, during her visit to the bank, she used an executive-only elevator designed to provide a smooth and private commute for the high-ranking officials within the bank. Wayne enters the elevator and presses the button to get to another floor. However, the elevator suddenly starts malfunctioning, trapping Wayne inside. Wayne calls from the elevator for emergency assistance. After an extended episode of patience and misery, she is finally rescued. Due to this high-profile incident, your forensic team has been called for an investigation. Fortunately, the elevator infrastructure is designed to log network traffic and device memory dumps for a specific t ime period. You acquire them along with CCTV footage of the elevator and the memory dump of Wayne’s new computer in her office at the bank.

대략적 네트워크 구성 환경과 함께 크게 네 가지의 증거가 주어졌다.

- 엘레베이터 CCTV 영상
- 네트워크 패킷 캡처
- PLC 메모리 덤프
- `Wayne`의 데스크톱 메모리 덤프

image.png


분석 결과

Wayne의 데스크톱 메모리 덤프에서 다가오는 미팅에 참여하지 말도록 협박하는 메일을 수신하였음을 확인하였다. 그러나 위협에도 불구하고 Wayne은 은행에 방문하여 엘레베이터를 탑승하였고, 이 때 공격이 발생되었다.

CCTV 영상과 네트워크 패킷, PLC 메모리 덤프를 종합 분석하여, ‘직원 1’이 Unified Messaging Application Services (UMAS) 프로토콜을 이용한 Write Function Attack을 하였고, 이로 인해 PLC 메모리의 특정 영역이 변조되어 엘레베이터 오동작을 일으켰다는 점을 알아냈다.

image.png


네트워크 패킷 분석

나는 이 대회에서 주로 네트워크 패킷 분석을 담당하였다. 그래서 이 글에서는 해당 파트만 조금 더 상세하게 설명을 해볼까 한다. 결론만 먼저 정리하면, 공격자가 PLC 메모리를 overwrite하기 위한 패킷을 총 4차례에 걸쳐 송신하였으며, 실제로 엘레베이터 오작동을 일으킨 공격은 2차 및 3차 공격이었다. 1번째 공격은 테스트 데이터 송신으로, 4번째 공격은 정상 데이터로 PLC 메모리를 다시 overwrite하여 증거를 인멸하려는 의도로 추정하였다.

image.png


UMAS Protocol

문제에서 주어진 Schneider Electrics의 M221 PLC는 Modbus 프로토콜을 캡슐화하는 자체 프로토콜 Unified Message Application Services(UMAS)을 사용하고 있다. 헤더에 function code 영역이 존재하는데, 90(0x5a)은 표준 문서에 정의되지 않은 값이며 UMAS 프로토콜을 사용한 경우이다. PLC와 ‘직원 1’ 간의 UMAS 패킷 통신이 1755건 존재하며, 일반 사용자가 PLC에 접근할 이유가 없기 때문에 비정상 통신으로 의심되었다.

image.png


UMAS 프로토콜 통신 내용은 UMAS Function Code 필드를 통해 대략적으로 분류할 수 있다. 필드의 값에 따른 기능을 분석 및 정리한 논문이 몇 개 있어서 이를 근거로 분석하였다. 이 중 가장 주목할 기능은 UMAS Function Code : 0x29(write)으로 메모리에 값을 쓸 수 있게 한다.

image.png


Control Logic & Write Function Attack

Control Logic이란 PLC 내부에서 엘레베이터 동작을 정의하는 프로젝트 정보 전체를 의미한다. M221 PLC의 control logic은 여섯 개의 블록으로 나눌 수 있으며 개략적 역할은 아래 표와 같다.

image.png


각 공격은 3단계로 구성되었다. 특히 메인 공격 단계인 2단계는 control logic conf1, data1, code, ziphash, conf2, data2 영역을 순차적으로 overwrite하는 방식으로 진행되었다.

1. PLC Stop (UMAS Function Code 0x41)
2. Memory Overwrite (UMAS Function Code 0x29)
3. PLC Start (UMAS Function Code 0x40)


보고서에는 이 외에도 각 control logic이 PLC의 On-chip RAM과 External RAM 영역 중 어느 파트의 어느 offset에 쓰여졌는지, 공격 전후의 control logic을 diff하였을 때 어느 부분이 달라져 오동작을 야기하는지 등을 더 상세하게 담았다. 이를 설명하려면 PLC Memory 파트도 함께 설명하여야 하므로 이 글에서는 생략하겠다. 보고서 분량이 50페이지 이상으로 분석 내용이 꽤 방대해서 네트워크 파트만 상세 내용을 요약하는 정도로 글을 마무리 하려고 한다.


후기

UMAS와 같은 전용 프로토콜은 커녕 Modbus 프로토콜 및 PLC 메모리의 구성에 대해서 잘 알지 못했기 때문에 처음에는 매우 생소했지만, 참고할만한 관련 연구가 꽤 많아서 실 장비가 없이도 충분히 분석을 진행할 수 있었다.

재밌었던 점이 이 대회에 참여한 이후 2024년 4월에 NATO CCDCOE Locked Shields 훈련에 참여하였었는데, 교통 신호를 제어하는 PLC에 네트워크 공격이 발생하여 기차 간 충돌 사고가 발생하는 시나리오가 존재하였다. 단순히 Modbus 프로토콜 헤더만 분석하는 정도로 간단히 원인 분석이 가능한 수준이었는데, 이 대회에서 분석하였던 경험이 없었으면 아마 많이 헤맸을 것 같다.

문제 자체는 좋았고 PLC 및 Modbus 프로토콜에 이해를 높일 수 있는 기회가 되었다. 그렇지만 대회 및 채점 기간이 너무 늘어지고 지쳤어서 언젠가 다시 참여할 수 있겠다는 생각은 안든다…