
IoTGoat는 의도적으로 보안이 취약한 펌웨어로, OpenWrt를 기반으로 합니다.

IoTGoat 프로젝트는 의도적으로 취약하게 만든 펌웨어로, OpenWrt를 기반으로 하며 OWASP에서 관리하여 사용자들이 IoT 기기에서 발견되는 가장 일반적인 취약점을 테스트하는 방법을 교육합니다. 취약점 과제는 아래에 언급된 OWASP IoT Top 10과 프로젝트 기여자들의 "이스터 에그"를 기반으로 합니다. 취약점 과제 목록은 IoTGoat challenges wiki 페이지를 참조하십시오.
| OWASP IoT Top 10 2018 | 설명 |
|---|---|
| I1 취약하거나 추측 가능한, 또는 하드코딩된 비밀번호 | 배포된 시스템에 무단 접근을 허용하는 펌웨어 또는 클라이언트 소프트웨어의 백도어를 포함하여 쉽게 무차별 대입되거나 공개적으로 이용 가능하거나 변경할 수 없는 자격 증명 사용. |
| I2 안전하지 않은 네트워크 서비스 | 기기 자체에서 실행되는 불필요하거나 안전하지 않은 네트워크 서비스, 특히 인터넷에 노출되어 정보의 기밀성, 무결성/신뢰성, 가용성을 손상시키거나 무단 원격 제어를 허용하는 서비스. |
| I3 안전하지 않은 생태계 인터페이스 | 기기 외부의 생태계에서 안전하지 않은 웹, 백엔드 API, 클라우드 또는 모바일 인터페이스로, 기기 또는 관련 구성 요소의 손상을 허용합니다. 일반적인 문제로는 인증/인가 부재, 암호화 부족 또는 약한 암호화, 입력 및 출력 필터링 부재 등이 있습니다. |
| I4 안전한 업데이트 메커니즘 부족 | 기기를 안전하게 업데이트할 수 있는 기능 부족. 여기에는 기기에서 펌웨어 검증 부족, 안전한 전달 부재(전송 중 암호화되지 않음), 롤백 방지 메커니즘 부재, 업데이트로 인한 보안 변경 알림 부재 등이 포함됩니다. |
| I5 안전하지 않거나 오래된 구성 요소 사용 | 기기가 손상될 수 있도록 하는 사용 중지되거나 안전하지 않은 소프트웨어 구성 요소/라이브러리 사용. 여기에는 운영 체제 플랫폼의 안전하지 않은 사용자 정의와 손상된 공급망의 타사 소프트웨어 또는 하드웨어 구성 요소 사용이 포함됩니다. |
| I6 불충분한 개인정보 보호 | 기기 또는 생태계에 저장된 사용자의 개인 정보가 안전하지 않거나, 부적절하게 또는 허가 없이 사용되는 경우. |
| I7 안전하지 않은 데이터 전송 및 저장 | 생태계 내 어디에서든 민감한 데이터에 대한 암호화 또는 접근 통제 부족(저장, 전송 또는 처리 중 포함). |
| I8 기기 관리 부족 | 생산 배포 기기에 대한 보안 지원 부족. 자산 관리, 업데이트 관리, 안전한 폐기, 시스템 모니터링 및 대응 기능 포함. |
| I9 안전하지 않은 기본 설정 | 안전하지 않은 기본 설정으로 배송되거나 운영자가 구성을 수정하지 못하도록 제한하여 시스템을 더 안전하게 만들 수 있는 기능이 부족한 기기 또는 시스템. |
| I10 물리적 강화 부족 | 물리적 강화 조치 부족으로, 잠재적 공격자가 향후 원격 공격에 도움이 될 수 있는 민감한 정보를 얻거나 기기에 대한 로컬 제어를 획득할 수 있음. |
IoTGoat 해킹을 시작하는 여러 방법이 있습니다.
파일 시스템을 추출하고 구성 및 바이너리를 정적으로 분석하려는 경우, https://github.com/scriptingxss/IoTGoat/releases 에서 최신 미리 컴파일된 펌웨어 릴리스를 다운로드하십시오. 취약점 식별을 돕기 위해 OWASP의 Firmware Security Testing Methodology를 참조하십시오.
동적 웹 테스트 및 바이너리 런타임 분석을 위해 가장 빠른 시작 방법은 최신 "IoTGoat-x86.vmdk" (VMware)를 다운로드하고 IoTGoat 디스크 이미지를 사용하여 사용자 지정 가상 머신을 생성하는 것입니다. 웹 애플리케이션 취약점 식별에 대한 추가 지침은 OWASP의 Web Security Testing Guide 및 ASVS 프로젝트를 참조하십시오.
Firmadyne, FAT 등과 같은 오픈소스 도구를 사용하여 펌웨어를 에뮬레이트하십시오. 이러한 도구는 QEMU를 활용하여 로컬에서 IoTGoat을 가상화합니다.
IoTGoat-raspberry-pi2-sysupgrade.img 펌웨어를 사용하여 Raspberry Pi 2 (BRCM2708 & BRCM2709)에 플래시하십시오.
OpenWrt는 다양한 CPU 플랫폼과 보드를 빌드할 수 있습니다. 소스에서 빌드하면 사용자가 지원되는 OpenWrt 하드웨어에 IoTGoat을 플래시할 수 있는 유연성을 얻을 수 있습니다. 10-15GB의 디스크 공간, 최소 4GB의 RAM, Ubuntu 18.04와 같은 지원되는 Linux 배포판이 필요합니다. 사용자 지정 펌웨어 빌드를 시작하려면 다음 단계를 따르십시오.
$ git clone https://github.com/scriptingxss/IoTGoat.git
$ cd IoTGoat/OpenWrt/openwrt-18.06.2/
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ make menuconfig # 선택한 구성에 따라 툴체인, 대상 시스템 및 펌웨어 패키지를 선택하십시오.
$ make # make로 펌웨어를 빌드하십시오. 이 과정에서 모든 소스를 다운로드하고, 크로스 컴파일 툴체인을 빌드한 다음 대상 시스템에 대해 Linux 커널과 선택한 모든 애플리케이션을 크로스 컴파일합니다.
첫 번째 빌드는 완료하는 데 시간이 걸리며, 제공된 인터넷 연결 속도에 따라 다릅니다. 성공적으로 빌드가 완료되면, 컴파일된 펌웨어는 IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ 디렉토리 아래에 위치하며, menuconfig에서 선택한 대상에 따라 달라집니다. 예를 들어, IoTGoat Raspberry Pi 2 펌웨어는 IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709 디렉토리에 위치합니다. IoTGoat 빌드 구성 파일은 x86 (.config-x86) 및 Raspberry Pi 2 (.config-rpi) 플랫폼에 대해 제공됩니다.