피드로 돌아가기
Abandoning Abstractions: Manually Crafting EtherNet/IP Packets Almost Broke Me
Dev.toDev.to
Security

Raw Socket 기반 EtherNet/IP 패킷 설계를 통한 CIP 프로토콜 내부 메커니즘 규명

Abandoning Abstractions: Manually Crafting EtherNet/IP Packets Almost Broke Me

404Saint2026년 6월 29일4advanced

Context

고수준 라이브러리와 추상화 프레임워크가 OT 시스템의 실제 동작을 은닉하여 하부 아키텍처 이해를 방해하는 한계 존재. 기존 IT 네트워크의 선형 메모리 모델과 달리 EtherNet/IP 및 CIP의 다층 캡슐화 구조로 인한 분석 복잡성 증가.

Technical Solution

  • Scapy 등 외부 라이브러리를 배제한 Raw Socket 기반의 EtherNet/IP 및 CIP 샌드박스 직접 구축
  • RegisterSession(0x0065) 및 SendRRData(0x006F)를 통한 세션 제어 및 요청 캡슐화 로직 구현
  • EtherNet/IP 헤더, CPF(Common Packet Format), CIP Application Layer로 이어지는 계층적 패킷 구조 설계
  • Read/Write Fragmented(0x52, 0x53) 서비스 구현 중 발생하는 오프셋 및 버퍼 경계 불일치 문제 해결
  • enip_monitor.py를 통한 실시간 루프백 트래픽 캡처로 클라이언트 내부 상태와 실제 Wire 데이터 간의 불일치 검증
  • General Status Code 0x05(Path Destination Unknown) 분석을 통한 CIP Message Router의 경로 탐색 실패 지점 식별

1. 프로토콜 분석 시 추상화 라이브러리 대신 Raw Socket을 사용하여 Wire 레벨의 실제 데이터 흐름 검증

2. 다층 캡슐화 구조에서는 각 계층의 Byte Alignment 및 오프셋 정확성을 우선적으로 확인

3. 내부 로그보다 패킷 캡처 도구를 통한 실시간 트래픽 모니터링으로 상태 불일치(State Mismatch) 진단

4. OT 보안 설계 시 CIP 서비스 동작 및 캡슐화 패턴을 기반으로 한 패킷 인식 탐지 로직(Suricata/Snort) 적용 검토

원문 읽기