(허가 되지 않은 점검도구 활용 스캔은 법적 문제 소지가 있으니 주의!)
개인적으로 IoT 기기 진단 또는 IoT 보안 점검을 분류하면 크게 아래처럼 나눌 것 같습니다.
1. Device : IoT 기기의 물리적 보안 조치 (디버깅 포트 제거, 장비 접근 보호 등)
2. Firmware : IoT 기기 펌웨어 암호화, 내부 정보 유출, 바이너리 분석 등
3. Network : NW단의 트래픽 성능이나 DDoS에 대한 대응 점검 (트래픽 발생기 활용)
4. Service : IoT와 연동되는 웹 또는 모바일 페이지 점검 (OWASP Top10 등 웹, 모바일 취약점)
그 중에 Device 부분은 개발을 위한 디버깅 포트를 통해 공격을 시도해볼 수 있습니다.
이런 취약점 포인트인 디버깅 포트로는 대표적으로 UART와 JTAG가 있습니다.
이 포스트에서 UART 포트를 통한 점검 방법에 대해 전부는 아니지만 실무 경험을 바탕으로 포스팅해볼꼐요.
[UART 란]
Universal asynchronous receiver/transmitter의 약자로 범용 비동기 송수신기 입니다.
병렬 데이터 형태를 직렬 데이터 형태로 전환하여 데이터를 전송하는 시리얼 통신 규격 입니다.
- UART 핀 종류
아래와 같이 4가지 PIN으로 구성되며 해당 전압이 각각 조금씩 다흡니다.
전원을 공급하는 VCC가 존재하며, 전압을 맞추는 GND가 존재합니다.
보통은 전원 공급은 기기나 PC에서 지원되기 때문에 VCC 포트는 연결하지 않아도 무방합니다.
따라서 아래와 같이 점검도구 쪽의 UART 포트 RX와 점검대상 기기 쪽의 UART 포트 TX를 연결하고
반대로 점검도구 쪽의 TX와 점검대상 기기 쪽의 RX를 연결합니다. 그리고 GND 끼리 연결해 전압을 맞춥니다.
[점검 목적]
UART 디버깅 포트를 통해 중요정보 또는 시스템 정보 획득이 가능하며, 부트로더 접근이 가능할 경우 더 큰 위험에 노출되기 때문에 사전에 점검해야 합니다.
위험에 노출될 경우 디버깅 Root Shell을 통해 관리자 권한이 탈취될 수 있으며, 추가로 덤프를 통한 기기의 펌웨어 획득이나 시스템 변조, 중요 정보 탈취 통해 2차 공격으로 이어질 수 있습니다.
[개선 방법]
UART 포트는 일반적으로 상용에 배포될 때는 제거하고 출시하는 것이 안전하며,
부득이하게 존재할 경우에 1차적으로 물리적인 실링 처리를 하는 조치가 있으며, 2차적으로는 접근하는 디버깅 쉘에 히든키(Magic Key)와 인증키를 적합하게 사용하여 불법적인 접근을 방지하는 것이 안전합니다.
[점검 장비]
먼저, UART 연결을 위한 통신 도구인 AD-USBISP가 필요합니다. (USB 형식이 아닌 도구들도 있는 걸로 알고 있어요.)
그리고 연결을 해줄 점퍼 케이블이 필요합니다.
- AD-USBISP V03.6
- 점퍼 케이블
위 두가지를 모두 연결 해놓은 세트로 구비하는 것이 좋은 것도 같습니다.
그리고, 기기에서 UART 포트를 탐색하기 위해 멀티 테스터(멀티 미터)가 필요합니다. 육안으로 구별할 수 있다면 필수는 아니지만 보조 도구로 필요합니다.
추가로 IoT 기기를 분해할 수 있는 드라이버나 UART 포트 핀, 점퍼를 고정해야 한다면 인두가 필요할 수도 있습니다.
(허가 되지 않은 점검도구 활용 스캔은 법적 문제 소지가 있으니 주의!)
다음 포스트를 통해 점검하는 기본 시나리오를 포스팅 할께요.
[IoT 기기 진단] UART 디버깅 포트 점검 (포인트) (1) | 2020.08.14 |
---|---|
[IoT 기기 진단] UART 디버깅 포트 점검 (시나리오) (1) | 2020.08.13 |
[Xray] CVE-2020-1938 Apache Tomcat AJP 취약점 점검 도구 (0) | 2020.03.04 |
[OpenVAS] 오픈소스 취약점 진단 시스템 : 오픈바스 (1) | 2020.03.04 |
[Clusterd] Python 기반 WAS 서버 취약점(유형 및 버전) 진단 도구 (0) | 2020.03.03 |
댓글 영역