PLC·라우터 펌웨어 동적 분석 환경 구축
PLC와 라우터에서 UART/JTAG·디버깅 셸을 확보해 펌웨어를 동적으로 분석할 환경을 만들었습니다.
작업 요약
실제 장비 VxWorks 셸 획득·분석 절차 정리
실제 장비에서 셸과 디버깅 환경을 확보했습니다
PLC와 라우터 펌웨어를 분석하려면 먼저 장비에 연결해 셸을 얻고, 디버거와 정적 분석기로 확인할 수 있는 환경을 만들어야 했습니다.
UART 연결, EF-Fuzz, IoTFirmFuzz, IoTHybridFuzzer, FIRM-COV 연구와 관련된 작업 중 이 페이지에서는 실제 장비의 동적 분석 환경 구축을 다룹니다.
문제
제어기기나 라우터 펌웨어는 일반 서버 애플리케이션처럼 바로 실행하거나 디버깅하기 어렵습니다. 장비마다 인터페이스가 다르고, 셸 접근 여부도 다르며, 같은 UART/JTAG이라도 핀 식별·전압·부트 로그·권한 조건이 달라 장비별로 분석 절차를 확인해야 합니다.
이 연구의 핵심은 취약점 하나를 찾는 것보다, PLC·임베디드 장치 펌웨어를 반복적으로 정적·동적 분석할 수 있는 환경을 만드는 것이었습니다.
접근 (한 일)
- PLC/제어기기 펌웨어를 동적으로 분석하기 위한 환경 구축 방법을 정리했습니다.
- On-Chip Debugging과 디버깅 셸처럼 장비가 제공하거나 노출하는 기능을 분석 경로로 활용했습니다.
- IDA 기반 정적 분석 절차와 환경별 디버깅 절차를 함께 문서화했습니다.
- 상용 라우터에서 UART/JTAG 연결을 통해 VxWorks 셸 접근을 시도하고, 장비 정보와 런타임 상태를 확인했습니다.
- PCB의 VCC/GND/RX/TX 핀 식별, 납땜 후 PC 연결, 셸 획득 과정을 실기기에서 검증했습니다.
결과·성과
PDF 원본에는 TL-WR886N 장치의 셸 획득 화면, VCC/GND/RX/TX 핀 라벨, 납땜 후 PC 연결 사진, 장비 정보와 셸 접근 화면이 남아 있습니다. 또한 여러 공유기의 매직키를 확보해 VxWorks 셸까지 접근한 결과가 기록되어 있습니다.
제어기기 쪽에서는 펌웨어를 정적·동적으로 분석할 수 있는 환경 구축 절차와 환경별 디버깅 방법을 정리하고, 제어시스템 펌웨어 취약점 분석을 위한 방법론 형태로 결과를 남겼습니다.
의의
자동 퍼징을 실행하기 전에 필요한 분석 환경을 구성한 작업입니다. 펌웨어를 얻고, 디버깅 가능한 상태를 만들고, 정적 분석과 동적 분석이 만나는 지점을 정리해야 이후 AFL/QEMU 기반 퍼징이나 심볼릭 실행을 적용할 수 있습니다.
현재 포트폴리오의 UART 연구가 “펌웨어 획득 경로”를 설명하고, EF-Fuzz/IoTFirmFuzz가 “자동 분석·퍼징”을 설명한다면, 이 작업은 그 사이에서 실제 장비에서 셸과 디버깅 환경을 확보하는 과정을 다룹니다.
원본 근거
2021년 포트폴리오 PDF의 `제어기기 펌웨어 동적 분석 환경구축 방법론 연구` 및 `Embedded Analysis` 슬라이드에서 추출했습니다. 비공개 보고서나 기관 내부 세부 내용은 공개 포트폴리오에 옮기지 않았습니다.
🔬 관련 연구 — UART 기반 펌웨어 획득 연구 · EF-Fuzz 석사논문 · IoTFirmFuzz 등록특허 · IoTHybridFuzzer 특허
근거 자료
아래 기록에 근거해 정리했습니다. 내부 원문 경로를 표시하며, 비공개 원문 파일은 이 페이지에서 제공하지 않습니다.
ai/sources/academic/2021-portfolio-extract.mdai/wiki/academic/embedded-dynamic-analysis.md