
PENIOT: IoT를 위한 침투 테스트 도구
PENIOT는 사물인터넷(IoT) 기기를 위한 침투 테스트 도구입니다. 이 도구는 인터넷 연결성을 대상으로 다양한 유형의 보안 공격을 통해 기기를 테스트/침투할 수 있도록 도와줍니다. 즉, 기기를 능동적 및 수동적 보안 공격 모두에 노출시킬 수 있습니다. 대상 기기와 해당 기기의 필요한 정보(또는 매개변수)를 결정한 후, 시스템 리소스 변경/소모, 유효한 통신 단위 재생 등의 능동적 보안 공격을 수행할 수 있습니다. 또한 중요 정보의 기밀성 침해나 트래픽 분석에 이르는 수동적 보안 공격도 수행할 수 있습니다. PENIOT 덕분에 이러한 모든 작업을 반자동화하거나 완전히 자동화할 수 있습니다. 요약하자면, PENIOT은 프로토콜 기반 보안 공격으로 IoT 기기를 대상으로 하는 패키지/프레임워크입니다.
또한 새로운 보안 공격이나 새로운 IoT 프로토콜을 추가로 삽입하기 위한 기본 구조를 제공합니다. PENIOT의 가장 중요한 기능 중 하나는 확장성이 뛰어나다는 것입니다. 기본적으로 여러 공통 IoT 프로토콜과 해당 프로토콜과 관련된 수많은 보안 공격을 갖추고 있습니다. 하지만 내부적으로 사용되는 구성 요소의 기본 구조를 내보내는 방식으로 더 확장할 수 있으므로 PENIOT의 내부 구조와 조화롭게 공격을 개발할 수 있습니다.
IoT 패러다임은 지난 10년 동안 엄청난 성장을 경험했으며, 수십억 대의 기기가 인터넷에 연결되었습니다. 이러한 기기 대부분은 용량 제약과 출시 기간 단축으로 인해 보안을 고려하지 않은 설계로 인해 기본적인 보안 조치조차 부족합니다. IoT의 높은 연결성으로 인해 해커는 취약한 기기를 통해 확장된 네트워크에 치명적인 영향을 미치는 공격을 쉽게 시작할 수 있습니다.
지금까지 침투 테스트는 완전히 무시되지 않았다면 수동으로 수행되었습니다. 이러한 절차는 기기 테스트 단계를 매우 느리게 만들었습니다. 반면, IoT 기기를 생산하는 기업은 악의적인 사용자에 의한 보안 공격에 노출될 경우 최종 사용자에게 예상치 못한 영향을 미칠 수 있으므로, 제공하는 기능뿐만 아니라 신뢰성과 견고성 측면에서도 기기 테스트를 항상 최신 상태로 유지해야 합니다. PENIOT의 주요 목표는 보안 테스트 프로세스를 가속화하는 것입니다. 시간이 많이 소요되는 침투 테스트 단계를 자동화하여 IoT 기기의 보안 취약점을 파악할 수 있도록 합니다.
우선, PENIOT은 참신성을 제공합니다. IoT 분야의 침투 테스트 도구 중 최초 사례 중 하나입니다. IoT에 특화된 유사한 도구는 한두 개 정도뿐이지만, 아직 개발 단계에 있어 완성되지 않았습니다.
IoT 기기의 수가 급격히 증가함에 따라 IoT 기기는 우리 일상생활에서 점점 더 보편화되고 있습니다. 스마트 홈, 스마트 자전거, 의료용 센서, 피트니스 트래커, 스마트 잠금장치, 연결된 공장은 IoT 제품의 몇 가지 예에 불과합니다. 이러한 점을 고려하여 PENIOT에 기본적으로 포함할 가장 일반적으로 사용되는 IoT 프로토콜 중 일부를 선택해야 했습니다. 우리는 다음 프로토콜을 PENIOT에 포함된 기본 IoT 프로토콜로 선택했습니다. 이러한 IoT 프로토콜은 DoS, 퍼징(Fuzzing), 스니핑(Sniffing), 재생(Replay) 공격과 같은 다양한 유형의 보안 공격으로 테스트되었습니다.
현재 지원되는 프로토콜은 다음과 같습니다:
또한 자체 구현된 프로토콜과 공격의 내부 메인프레임을 내보내어 자신만의 프로토콜이나 공격을 구현할 수 있도록 합니다. 또한 새로 구현한 공격으로 기존 프로토콜을 확장할 수 있습니다. 마지막으로 사용하기 쉽고 친숙한 그래픽 사용자 인터페이스를 제공합니다.
먼저 머신에 Python의 setuptools 모듈이 설치되어 있어야 합니다. 또한 설치 및 빌드 전에 python-tk와 **bluepy**를 설치해야 합니다.
요약하면 설치 스크립트를 실행하기 전에 다음이 필요합니다.
의존 라이브러리가 상당히 오래되었고 기존 외부 라이브러리 사이에 설치하는 데 문제가 발생할 수 있으므로 PENIOT을 위해 특별히 생성된 별도의 가상 환경을 사용하는 것이 좋습니다.
다음 코드를 실행하여 로컬에서 프로젝트를 빌드할 수 있습니다.
$ git clone [email protected]:yakuza8/peniot.git
$ cd peniot
$ python setup.py install
최신 설치 스크립트를 제공하기 위해 노력했지만 프로젝트를 오랫동안 유지 관리할 수 없어 일부 누락된 부분이 있을 수 있습니다. 설치에 문제가 있으면 알려주시기 바랍니다.
중요 참고사항: 퍼징 공격에서 퍼징 페이로드를 생성하려면 머신에 Radamsa가 설치되어 있어야 합니다.
가상 환경을 설정하고 위에서 설명한 필수 라이브러리를 설치한 후 명령줄이나 선호하는 IDE를 통해 Peniot을 실행할 수 있습니다.
$ python src/peniot.py
이 명령을 실행하면 사용자 인터페이스가 나타납니다. 그런 다음 도구를 직접 탐색할 수 있습니다.
resources/documents 폴더에서 설계 개요 문서와 최종 설계 문서를 찾을 수 있습니다. resources/diagrams 폴더 아래에 여러 다이어그램이 첨부되어 있습니다. 다음은 PENIOT이 모듈로 분리되고 설계된 방식을 가장 간단하게 표현한 것입니다.
대부분의 공격에는 해당 공격 스크립트 아래에 자체 샘플 통합 테스트가 있습니다. 이러한 테스트를 실행하려면 대상 프로토콜에 대한 실행 중인 프로그램이 필요합니다. 각 프로토콜의 examples 디렉토리에서 서버/클라이언트 스크립트를 찾을 수 있는 각 프로토콜에 대한 예제 프로그램을 제공하려고 노력했습니다.
이 프로젝트는 다음 프로젝트 구성원이 기여했습니다:
그리고 Pelin Angın이 감독했습니다.
먼저 프로젝트 사이트를 방문해 주셔서 감사합니다. 우리는 종단 간 보안 공격을 통해 어떻게 IoT 기기를 침투하고 해킹할 수 있는지 제공하려고 노력했습니다. 주요 목표는 일반적인 보안 공격으로 이러한 기기를 해킹하는 것입니다. 모든 프로토콜에 대한 특정 공격을 쉽게 찾을 수 있지만, 우리의 목표는 일반적이고 확장 가능한 침투 프레임워크를 제공하는 것이었습니다.
둘째, PENIOT은 Python2.7로 개발되었습니다. 그리고 코드가 레거시 상태가 되었을 수도 있습니다. 그럼에도 불구하고 누구든지 자체 침투 도구를 개발하는 데 통찰력과 영감을 얻을 수 있도록 공개하고자 합니다. 그렇게 된다면 우리에게 기쁨이 될 것입니다.
셋째, 시간이 허락한다면 도구를 Python3로 이식하려고 노력할 것입니다. 그렇게 되면 이 페이지를 통해 알려드리겠습니다. 관심 가져주셔서 감사합니다.
개발자: @yakuza8 (Berat Cankar)