KR20220060231A - 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법 및 이를 이용한 장치 - Google Patents

자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법 및 이를 이용한 장치 Download PDF

Info

Publication number
KR20220060231A
KR20220060231A KR1020200145990A KR20200145990A KR20220060231A KR 20220060231 A KR20220060231 A KR 20220060231A KR 1020200145990 A KR1020200145990 A KR 1020200145990A KR 20200145990 A KR20200145990 A KR 20200145990A KR 20220060231 A KR20220060231 A KR 20220060231A
Authority
KR
South Korea
Prior art keywords
iot device
fuzzing
agent
firmware
purging
Prior art date
Application number
KR1020200145990A
Other languages
English (en)
Other versions
KR102397754B1 (ko
Inventor
최양서
안개일
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020200145990A priority Critical patent/KR102397754B1/ko
Priority to US17/134,088 priority patent/US11175992B1/en
Publication of KR20220060231A publication Critical patent/KR20220060231A/ko
Application granted granted Critical
Publication of KR102397754B1 publication Critical patent/KR102397754B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2268Logging of test results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/267Reconfiguring circuits for testing, e.g. LSSD, partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법 및 이를 이용한 장치가 개시된다. 본 발명의 일실시예에 따른 IoT 기기 자동 퍼징 방법은 IoT 기기 자동 퍼징 장치가, 펌웨어 기반의 IoT 기기에 퍼징 에이전트(FUZZING AGENT)를 적재하는 단계; 상기 IoT 기기 자동 퍼징 장치가, 상기 퍼징 에이전트를 기반으로 퍼징 입력에 대한 상기 IoT 기기의 처리 상황을 모니터링하는 단계; 상기 IoT 기기에서 크래쉬(CRASH)가 발생하는 경우, 상기 IoT 기기 자동 퍼징 장치가, 상기 퍼징 에이전트를 이용한 후킹(HOOKING)을 기반으로 상기 크래쉬 발생에 상응하는 퍼징 데이터를 수집하는 단계; 및 상기 IoT 기기 자동 퍼징 장치가, 상기 퍼징 에이전트를 기반으로 상기 IoT 기기를 리셋시키는 단계를 포함한다.

Description

자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법 및 이를 이용한 장치 {METHOD FOR AUTO FUZZING FOR IoT DEVICE BASED ON AUTO RESET AND APPARATUS USING THE SAME}
본 발명은 펌웨어 기반의 IoT 기기를 자동으로 퍼징(fuzzing)하는 기술에 관한 것으로, 특히 운영체제와 응용프로그램이 펌웨어 형태로 동작하여 기기 상태 확인 및 초기화 작업이 어려운 IoT 기기에서 퍼징 입력으로 인해 발생하는 크래쉬(crash)를 탐지하여 자동화된 퍼징을 수행하는 기술에 관한 것이다.
퍼징(fuzzing)은 특정 소프트웨어에 존재하지만 알려지지 않은 취약점을 찾기 위하여, 소프트웨어에 대입한 임의의 입력에 대해 소프트웨어의 동작, 대응, 처리 결과를 분석하여 취약점 존재 여부를 확인하는 기법을 의미한다.
최근에는 이러한 퍼징을 이용하여 사고가 발생하기 이전에 다양한 형태의 취약점을 먼저 찾아내고 보완하는데 사용하고 있다. 여기서, 퍼징 대상 소프트웨어란 일반 응용프로그램에서부터 펌웨어까지 다양하게 해당될 수 있다.
일반적으로 퍼징 수행시에는 자동화된 모니터링 방식으로 오류나 크래쉬 발생 여부를 확인하게 되는데, 이러한 환경을 구축하기 어려운 경우에는 수동으로 퍼징 대상 소프트웨어의 상태를 확인해야 하므로 퍼징에 소요되는 시간이 크게 증가한다.
예를 들어, 윈도우나 리눅스 같은 일반적인 범용 운영체제에서 동작하는 응용프로그램은 운영체제 상에서 실행되는 다른 응용프로그램을 이용하여 퍼징 대상 프로그램의 상태를 모니터링 할 수 있다. 그러나, IoT 기기의 경우에는 펌웨어 자체가 운영체제의 역할과 응용프로그램의 역할을 동시에 수행하는 형태로 운영되기 때문에 일반적인 방식과는 다르게 모니터링을 수행해야 한다.
일반적으로 펌웨어 기반의 IoT 기기는 내부적으로 침해가 발생하는 것이 아니라 외부 입력으로 인한 오작동이 발생하므로, 외부 입력을 전달하는 네트워크 퍼징 방식을 시도하게 된다.
이러한, IoT 기기에 대한 퍼징 시에는 해당 기기의 특징 응용프로그램 문제를 모니터링하고 취약점을 찾아내는 방식이 아니라 해당 IoT 기기 자체의 문제를 찾는 방식으로 수행해야 하지만, 아직까지는 IoT 기기의 펌웨어에 대해 자동으로 모니터링을 수행하는 기술이 존재하지 않는다.
또한, 퍼징 과정을 자동화하여 반복적으로 수행하기 위해서는, 퍼징 입력으로 인해 퍼징 대상 소프트웨어가 정상적으로 동작될 수 없는 상황(크래쉬 발생 상황)이라고 판단되는 경우에 해당 소프트웨어를 초기화할 수 있어야 한다.
이 때, 일반적인 범용 운영체제 상에서는 크래쉬가 발생한 응용 프로그램을 간단히 종료시키고 재시작할 수 있지만, IoT 기기의 경우에는 아직까지 기기 자체를 자동으로 리셋하거나 재부팅하는 방법이 존재하지 않는다.
펌웨어는 특정 기능만을 수행하도록 개발된 것으로, 이미 개발된 펌웨어에 IoT 기기의 상태를 모니터링하고 리셋을 자동화하는 기능을 추가하는 것은 매우 어려운 일이다. 이로 인해 대부분의 IoT 기기에 대한 퍼징은 사람이 직접 모니터링하고, 오류가 발생하는 경우에도 사람이 직접 IoT 기기의 전원을 껐다 켜는 방식으로 초기화하여 수행되고 있다.
일부 IoT 기기의 경우, 기기 자체를 가상화 환경(VMware, Qemu 등) 내에 포함시키는 방식으로 퍼징 기능을 위해 필요한 기능들을 수행하려고 노력하고 있다. 하지만, 대부분의 IoT 기기는 하드웨어 의존도가 매우 높기 때문에 하드웨어에 대한 처리를 가상화 환경에서 지원하는 경우가 매우 제한적이라, 이러한 기술을 실제로 활용하기는 매우 어려운 상황이다.
한국 등록 특허 제10-2104610호, 2020년 4월 20일 등록(명칭: 네트워크 프로토콜의 취약점을 탐지하는 퍼징 방법 및 장치)
본 발명의 목적은 펌웨어 기반으로 동작하는 IoT 기기에 대한 자동화된 퍼징 기술을 제공하는 것이다.
또한, 본 발명의 목적은 IoT 기기를 모니터링하여 크래쉬 발생을 감지하고, 크래쉬 발생 관련 정보를 수집하여 전달하고, IoT 기기를 초기화(리셋)할 수 있는 퍼징 기능을 자동으로 수행하는 기술을 제공하는 것이다.
또한, 본 발명의 목적은 자동화된 퍼징을 기반으로 IoT 기기의 취약점을 조기에 발견하여 대처할 수 있게 함으로써 보다 안전한 IoT 기기 활용 환경을 구축하는 것이다.
상기한 목적을 달성하기 위한 본 발명에 따른 IoT 기기 자동 퍼징 방법은 IoT 기기 자동 퍼징 장치가, 펌웨어 기반의 IoT 기기에 퍼징 에이전트(FUZZING AGENT)를 적재하는 단계; 상기 IoT 기기 자동 퍼징 장치가, 상기 퍼징 에이전트를 기반으로 퍼징 입력에 대한 상기 IoT 기기의 처리 상황을 모니터링하는 단계; 상기 IoT 기기에서 크래쉬(CRASH)가 발생하는 경우, 상기 IoT 기기 자동 퍼징 장치가, 상기 퍼징 에이전트를 이용한 후킹(HOOKING)을 기반으로 상기 크래쉬 발생에 상응하는 퍼징 데이터를 수집하는 단계; 및 상기 IoT 기기 자동 퍼징 장치가, 상기 퍼징 에이전트를 기반으로 상기 IoT 기기를 리셋시키는 단계를 포함한다.
이 때, 수집하는 단계는 상기 IoT 기기의 펌웨어 정보를 기반으로 펌웨어 메모리 상에서 상기 IoT 기기의 예외 핸들러(EXCEPTION HANDLER) 위치를 사전에 파악하는 단계; 및 상기 예외 핸들러 위치를 기반으로 상기 IoT 기기에서 상기 크래쉬에 의해 실행되는 예외 처리(EXCEPTION HANDLING)를 후킹하는 단계를 포함할 수 있다.
이 때, 후킹하는 단계는 예외 테이블(EXCEPTION TABLE)에 정의된 복수의 인터럽트들 중 상기 크래쉬에 상응하는 인터럽트를 후킹할 수 있다.
이 때, 퍼징 데이터는 상기 예외 처리가 실행되는 동안에 상기 IoT 기기에서 사용되는 CPU 아키텍처의 레지스터 값 및 크래쉬 발생 정보 중 적어도 하나를 포함할 수 있다.
이 때, 퍼징 에이전트는 상기 펌웨어 메모리에서 사용되지 않는 여유 공간에 적재될 수 있다.
이 때, 퍼징 에이전트는 상기 IoT 기기의 펌웨어가 동작하는 CPU 아키텍처에 상응하게 컴파일된 바이너리 파일의 형태에 상응할 수 있다.
이 때, 퍼징 에이전트는 상기 펌웨어 메모리에 접근 가능한 인터페이스 및 상기 IoT 기기의 디버그 포트 중 적어도 하나를 기반으로 적재될 수 있다.
이 때, 펌웨어 정보는 상기 IoT 기기의 제조사에 의해 공개된 정보 및 상기 IoT 기기의 디버깅 데이터 중 적어도 하나를 기반으로 수집될 수 있다.
이 때, 크래쉬는 상기 IoT 기기의 펌웨어가 정상적으로 동작할 수 없는 상황에 상응할 수 있다.
또한, 본 발명의 일실시예에 따른 IoT 기기 자동 퍼징 장치는, 펌웨어 기반의 IoT 기기에 퍼징 에이전트(FUZZING AGENT)를 적재하고, 상기 퍼징 에이전트를 기반으로 퍼징 입력에 대한 상기 IoT 기기의 처리 상황을 모니터링하고, 상기 IoT 기기에서 크래쉬(CRASH)가 발생하는 경우에 상기 퍼징 에이전트를 이용한 후킹(HOOKING)을 기반으로 상기 크래쉬 발생에 상응하는 퍼징 데이터를 수집하고, 상기 퍼징 에이전트를 기반으로 상기 IoT 기기를 리셋시키는 프로세서; 및 상기 퍼징 데이터를 저장하는 메모리를 포함한다.
이 때, 프로세서는 상기 IoT 기기의 펌웨어 정보를 기반으로 펌웨어 메모리 상에서 상기 IoT 기기의 예외 핸들러(EXCEPTION HANDLER) 위치를 사전에 파악하고, 상기 예외 핸들러 위치를 기반으로 상기 IoT 기기에서 상기 크래쉬에 의해 실행되는 예외 처리(EXCEPTION HANDLING)를 후킹할 수 있다.
이 때, 프로세서는 예외 테이블(EXCEPTION TABLE)에 정의된 복수의 인터럽트들 중 상기 크래쉬에 상응하는 인터럽트를 후킹할 수 있다.
이 때, 퍼징 데이터는 상기 예외 처리가 실행되는 동안에 상기 IoT 기기에서 사용되는 CPU 아키텍처의 레지스터 값 및 크래쉬 발생 정보 중 적어도 하나를 포함할 수 있다.
이 때, 퍼징 에이전트는 상기 펌웨어 메모리에서 사용되지 않는 여유 공간에 적재될 수 있다.
이 때, 퍼징 에이전트는 상기 IoT 기기의 펌웨어가 동작하는 CPU 아키텍처에 상응하게 컴파일된 바이너리 파일의 형태에 상응할 수 있다.
이 때, 퍼징 에이전트는 상기 펌웨어 메모리에 접근 가능한 인터페이스 및 상기 IoT 기기의 디버그 포트 중 적어도 하나를 기반으로 적재될 수 있다.
이 때, 펌웨어 정보는 상기 IoT 기기의 제조사에 의해 공개된 정보 및 상기 IoT 기기의 디버깅 데이터 중 적어도 하나를 기반으로 수집될 수 있다.
이 때, 크래쉬는 상기 IoT 기기의 펌웨어가 정상적으로 동작할 수 없는 상황에 상응할 수 있다.
본 발명에 따르면, 펌웨어 기반으로 동작하는 IoT 기기에 대한 자동화된 퍼징 기술을 제공할 수 있다.
또한, 본 발명은 IoT 기기를 모니터링하여 크래쉬 발생을 감지하고, 크래쉬 발생 관련 정보를 수집하여 전달하고, IoT 기기를 초기화(리셋)할 수 있는 퍼징 기능을 자동으로 수행하는 기술을 제공할 수 있다.
또한, 본 발명은 자동화된 퍼징을 기반으로 IoT 기기의 취약점을 조기에 발견하여 대처할 수 있게 함으로써 보다 안전한 IoT 기기 활용 환경을 구축할 수 있다.
도 1은 본 발명의 일실시예에 따른 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법을 나타낸 동작 흐름도이다.
도 2는 본 발명에 따른 디버그 포트의 일 예를 나타낸 도면이다.
도 3은 본 발명의 일실시예에 따라 퍼징 에이전트를 적재하는 과정을 나타낸 도면이다.
도 4는 본 발명에 따른 퍼징 에이전트 코드 메모리맵의 일 예를 나타낸 도면이다.
도 5 내지 도 6은 본 발명에 따라 퍼징 데이터로 수집되는 레지스터 값의 일 예를 나타낸 도면이다.
도 7은 본 발명에 따른 IoT 기기 자동 퍼징 장치와 퍼징 에이전트 간의 동작을 나타낸 도면이다.
도 8은 본 발명의 일실시예에 따른 퍼징 에이전트의 동작 과정을 상세하게 나타낸 동작 흐름도이다.
도 9는 본 발명에 따른 퍼징 전체 과정의 일 예를 나타낸 도면이다.
도 10은 본 발명의 일실시예에 따른 IoT 자동 퍼징 방법을 상세하게 나타낸 동작 흐름도이다.
도 11은 본 발명의 일실시예에 따른 자동화된 리셋 기반의 IoT 기기 자동 퍼징 장치를 나타낸 블록도이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
일반적으로 소프트웨어에 대한 퍼징(fuzzing)을 수행하기 위해서는 퍼징 대상 소프트웨어에 대입할 입력을 만들어내는 기능과 해당 입력을 퍼징 대상 소프트웨어에 전달하는 기능, 퍼징 대상 소프트웨어가 해당 입력을 어떻게 처리하는지 또는 퍼징 대상 소프트웨어 에서 해당 입력으로 인해 어떤 결과가 나타나는지를 모니터링하는 기능 그리고 퍼징 과정을 반복적으로 수행할 수 있는 환경을 구축하는 기능들이 요구된다.
이 때, 퍼징을 위해 대입할 입력이 퍼징 대상 소프트웨어가 처리하는 형식에 맞지 않는 경우, 해당 소프트웨어에서 해당 입력을 처리하지 않고 제외시켜버리는 경우가 자주 발생한다. 이러한 경우 퍼징이 수행되지 않아 효율이 매우 떨어지는 문제가 발생하기 때문에 퍼징 대상 소프트웨어에 대입할 입력은 해당 소프트웨어가 처리하는 형식에 맞춰 생성된다.
또한, 퍼징 입력에 대한 소프트웨어의 처리 결과가 어떤지를 모니터링함으로써 어떤 입력을 대입하였을 때 해당 소프트웨어에 오류가 발생하는지 확인할 수 있고, 이로 인해 해당 소프트웨어에 취약점이 존재한다는 것을 인지할 수 있다.
여기서 의미하는 오류는, 소프트웨어의 종료(크래쉬)를 포함하여 퍼징 대상 소프트웨어가 정상적으로 동작하지 않도록 영향을 주는 모든 형태의 오류를 의미할 수 있다.
본 발명에서는 상기와 같은 기능들을 이용하여 펌웨어를 기반으로 동작하는 IoT(Internet of Things) 기기나 ICS(Industrial Control System)에 대해 자동화된 퍼징을 수행할 수 있는 기술을 제안하고자 한다.
이하에서는 설명의 편의를 위해 IoT 기기를 중심으로 설명하도록 하며, 설명된 기술이나 구성은 ICS 관련 기기에 적용하여 사용될 수 있다.
도 1은 본 발명의 일실시예에 따른 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법을 나타낸 동작 흐름도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법은 IoT 기기 자동 퍼징 장치가, 펌웨어 기반의 IoT 기기에 퍼징 에이전트(FUZZING AGENT)를 적재한다(S110).
이 때, 퍼징 에이전트는 본 발명의 일실시예에 따른 IoT 기기 자동 퍼징을 수행하기 위해 개발된 도구에 상응할 수 있다.
예를 들어, 퍼징 에이전트는 퍼징 대상인 IoT 기기에 대한 펌웨어 정보를 기반으로 펌웨어 모니터링 기능과 초기화(리셋) 기능을 수행하도록 개발될 수 있다.
이 때, IoT 기기의 펌웨어 정보는 IoT 기기의 제조사에 의해 공개된 정보 및 IoT 기기의 디버깅 데이터 중 적어도 하나를 기반으로 수집될 수 있다.
예를 들어, 퍼징 대상인 IoT 기기 제조사가 펌웨어를 공개한 경우에는 공개된 정보를 획득하여 사용할 수 있다.
만약, IoT 기기의 펌웨어 정보를 공개적으로 획득하기 어려운 경우에는 UART(UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER)나 JTAG(JOINT TEST ACTION GROUP)와 같이 IoT 기기의 펌웨어 메모리에 접근 가능한 인터페이스를 이용하여 획득한 IoT 기기의 디버깅 데이터를 이용하여 펌웨어 정보를 수집할 수도 있다.
일반적으로, 디버깅 데이터를 이용하기 위해서는 IoT 기기에서 사용하는 칩이나 메모리에 대한 정보가 필요하므로, UART나 JTAG와 같이 IoT 기기의 펌웨어 메모리에 접근 가능한 인터페이스를 제공함으로써 IoT 기기에서 사용하는 칩이나 메모리에 대한 정보를 획득할 수 있다.
이 때, 도 2에 도시된 URAT나 JTAG 등의 디버그 포트(210, 220)는 칩 디버깅을 위해 사용되는 것으로, 대부분의 IC 칩에서 제공하고 있다.
이 때, 퍼징 에이전트는 IoT 기기의 펌웨어 메모리에 접근 가능한 인터페이스 및 IoT 기기의 디버그 포트 중 적어도 하나를 기반으로 적재될 수 있다.
예를 들어, 도 3을 참조하면, 본 발명의 일실시예에 따른 IoT 기기 자동 퍼징 장치(310)는 USB 포트를 기반으로 접근한 IoT 기기(320)의 URAT 또는 JTAG를 통해 퍼징 에이전트를 제공함으로써 IoT(320)의 펌웨어 메모리 상에 퍼징 에이전트를 적재할 수 있다.
다른 예를 들어, 도 3을 참조하면, 본 발명의 일실시예에 따른 IoT 기기 자동 퍼징 장치(310)는 네트워크 or 시리얼 포트를 기반으로 접근한 IoT 기기(320)의 네트워크 or 시리얼 포트를 통해 퍼징 에이전트를 제공함으로써 IoT(320)의 펌웨어 메모리 상에 퍼징 에이전트를 적재할 수도 있다.
이 때, 퍼징 에이전트는 IoT 기기의 펌웨어가 동작하는 CPU 아키텍처에 상응하게 컴파일된 바이너리 파일의 형태에 상응할 수 있다.
예를 들어, 퍼징 에이전트는 Intel x86, ARM, PowerPC 등의 CPU 아키텍처에 맞춰 컴파일되어 바이너리 코드에 상응하게 생성될 수 있다.
이 때, 퍼징 에이전트는 IoT 퍼징 과정에서 예외 처리(EXCEPTION HANDLING)의 후킹이 가능하도록 구성 또는 생성될 수 있다.
이 때, 퍼징 에이전트는 IoT 기기의 펌웨어 메모리에서 사용되지 않는 여유 공간에 적재될 수 있다.
예를 들어, URAT나 JTAG를 통해 펌웨어 메모리에 접근한 뒤에 사용되지 않는 공간을 확보하고, 확보된 공간에 IoT 기기 자동 퍼징 장치로부터 수신된 퍼징 에이전트에 상응하는 코드를 적재할 수 있다.
예를 들어, 본 발명의 일실시예에 따른 퍼징 에이전트 코드는 도 4에 도시된 것처럼 IoT 기기의 펌웨어 메모리 상에 적재될 수 있다.
이 때, IoT 기기의 펌웨어 내에 포함되어 있는 라이브러리를 확인하고, 활용 가능한 함수들을 확보할 수 있다.
또한, 추후 예외 처리(EXCEPTION HANDLING)를 후킹을 위해 예외 핸들러(EXCEPTION HANDLER) 및 예외 테이블(EXCEPTION TABLE)의 위치와 함께 관련 정보를 확인할 수도 있다.
이 때, 도 4에 도시된 것과 같은 예시로 바이너리 코드 형태의 퍼징 에이전트를 적재함으로써 IoT 퍼징 수행 중 예외(exception) 발생시 관련 정보 수집, 정보 전달, IoT 기기 초기화 등을 수행할 수 있다.
또한, 본 발명의 일실시예에 따른 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법은 IoT 기기 자동 퍼징 장치가, 퍼징 에이전트를 기반으로 퍼징 입력에 대한 IoT 기기의 처리 상황을 모니터링한다(S120).
이 때, 본 발명의 일실시예에 따른 퍼징 에이전트는 모니터링을 수행함으로써 IoT 기기에서 크래쉬(CRASH)가 발생하였는지 여부를 판단한다(S125).
단계(S125)의 판단결과 IoT 기기에서 크래쉬가 발생하는 경우, IoT 기기 자동 퍼징 장치가, 퍼징 에이전트를 이용한 후킹(HOOOKING)을 기반으로 크래쉬 발생에 상응하는 퍼징 데이터를 수집한다(S130).
이 때, 크래쉬는 IoT 기기의 펌웨어가 정상적으로 동작할 수 없는 상황에 상응할 수 있다.
예를 들어, 퍼징 입력으로 인해 IoT 기기의 펌웨어가 종료되거나, 오류가 발생하여 더 이상 동작하지 않는 경우에 크래쉬가 발생한 것으로 판단할 수 있다.
이 때, IoT 기기의 펌웨어 정보를 기반으로 펌웨어 메모리 상에서 IoT 기기의 예외 핸들러(EXCEPTION HANDLER) 위치를 사전에 파악할 수 있다.
예를 들어, IoT 기기의 펌웨어 정보에 대해 역공학 분석을 수행함으로써 IoT 기기의 펌웨어 메모리 상에서 예외 핸들러의 위치를 확인할 수 있다.
이렇게 확보된 예외 핸들러 위치를 기반으로 IoT 기기에서 크래쉬에 의해 실행되는 예외 처리(EXCEPTION HANDLING)를 후킹할 수 있다.
일반적으로 IoT 기기의 펌웨어는 IoT 기기에 어떤 문제나 오류가 발생하여 크래쉬가 발생했을 경우, 이를 인지하고 자체적인 예외 처리(EXCEPTION HANDLING)를 수행하도록 설계될 수 있다. 본 발명에서는 이렇게 IoT 기기 내에서 자체적으로 수행되는 예외 처리(EXCEPTION HANDLING)를 중간에 가로채서 퍼징 과정을 수행할 수 있다.
특히, IoT 기기나 ICS 기기는, 크래쉬가 발생하는 경우에 최초 의도된 목적으로 동작을 지속할 수 있도록 가능한 빠르게 기기를 초기화하여 기능을 회복하도록 설계되어 있는데, 이를 처리하기 위한 정보가 예외 테이블(EXCEPTION TABLE)에 정의되어 있다.
예를 들어, 예외 테이블(EXCEPTION TABLE)에는 IoT 기기에서 발생할 수 있는 다양한 인터럽트들에 대하여, 해당 인터럽트가 발생했을 경우에 어떠한 동작을 수행할지가 사전에 정의되어 있을 수 있다.
따라서, 본 발명은 예외 테이블(EXCEPTION TABLE)에 정의된 복수의 인터럽트들 중 크래쉬에 상응하는 인터럽트를 후킹할 수 있다.
즉, 일반적인 예외 처리의 경우, 시스템에 크래쉬가 발생한 것으로 판단되면 시스템 기능 복구를 위해 실제로 초기화를 진행하도록 설계될 수 있는데, 본 발명에서는 이 과정에서 인터럽트를 후킹함으로써 시스템이 리셋되기 전에 퍼징 데이터를 수집할 수 있다.
이 때, 퍼징 에이전트는 수집한 퍼징 데이터를 IoT 기기 자동 퍼징 장치로 전달할 수 있다.
이 때, 퍼징 데이터는 예외 처리가 실행되는 동안에 IoT 기기에서 사용되는 CPU 아키텍처의 레지스터 값 및 크래쉬 발생 정보 중 적어도 하나를 포함할 수 있다.
예를 들어, 도 5 내지 도 6을 참조하면, VxWorks 운영체제를 활용하는 기기에서 임의의 프로세스를 생성하고, 해당 프로세스가 실행되는 동안에 사용되는 레지스터 값(510)을 메모리의 특정 영역을 검색함으로써 확인할 수 있다.
특히, 해당 메모리 상에서는 VxWorks 운영체제에서 제공하는 정보를 활용하여 레지스터 별 기능을 확인할 수도 있다.
예를 들어, Program Counter의 경우, 프로그램 내에서 어느 위치를 수행하고 있는지에 대한 정보를 포함하고 있기 때문에, 이를 이용하면 프로그램 내에서 크래쉬가 발생한 위치를 확인할 수 있다.
이 때, 단계(S125)의 판단결과 IoT 기기에서 크래쉬가 발생하지 않으면, IoT 기기 자동 퍼징이 종료될 때까지 IoT 기기의 처리 상황을 지속적으로 모니터링 할 수 있다.
또한, 본 발명의 일실시예에 따른 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법은 IoT 기기 자동 퍼징 장치가, 퍼징 에이전트를 기반으로 IoT 기기를 리셋시킨다(S140).
이 때, IoT 기기를 리셋 시킴으로써 자동화된 방식으로 IoT 기기에 대한 퍼징을 반복적으로 수행할 수 있다.
예를 들어, IoT 기기에 대한 리셋이 완료되면, IoT 기기 자동 퍼징 장치가, 퍼징 에이전트를 기반으로 이전과 다른 퍼징 입력을 대입하여 단계(S110) 내지 단계(S140)의 단계를 반복 수행함으로써 IoT 기기에 대한 자동 퍼징을 이어서 수행할 수 있다.
이하에서는 도 7 내지 도 8을 참조하여 본 발명의 일실시예에 따른 퍼징 에이전트를 통해 IoT 기기의 퍼징을 수행하는 과정을 보다 상세하게 설명하도록 한다.
먼저, 도 7을 참조하면, 본 발명의 일실시예에 따른 IoT 기기 자동 퍼징 장치(710)는 에이전트 업로드 기능을 통해 IoT 기기에 퍼징 에이전트(720)를 업로드 또는 적재할 수 있다.
이렇게 IoT 기기에 업로드 또는 적재된 퍼징 에이전트(720)는 퍼징 입력에 대한 IoT 기기의 처리 상황을 모니터링하여(S810) 크래쉬가 발생하는지 여부를 판단할 수 있다(S815).
단계(S815)의 판단결과 크래쉬가 발생하지 않았으면, IoT 기기에 대한 퍼징이 완료될 때까지 반복적으로 모니터링을 수행할 수 있다.
또한, 단계(S815)의 판단결과 크래쉬가 발생하였으면, 도 7에 도시된 퍼징 에이전트의 레지스터 값 읽기 기능을 기반으로 IoT 기기에서 크래쉬 발생에 상응하는 예외 처리가 실행되는 동안에 사용되는 CPU 아키텍처의 레지스터 값을 수집할 수 있다(S820).
이 때, 퍼징 에이전트는 IoT 기기에서 현재 명령을 수행하고 있는 IP(Instruction Pointer)에 대한 레지스터를 읽음으로써 크래쉬 발생 위치를 알 수 있다.
이 후, 퍼징 에이전트는 도 7에 도시된 레지스터 값 전송 기능을 기반으로 IoT 기기 자동 퍼징 장치(710)에게 퍼징 데이터를 전달할 수 있다(S830).
이 때, 퍼징 데이터는 네트워크를 통해 전달될 수 있으며, 레지스터 값과 함께 크래쉬 발생 정보와 크래쉬 발생 위치 등을 포함할 수 있다.
이 후, 퍼징 에이전트는 반복적인 퍼징 수행을 위해 도 7에 도시된 리셋 기능을 기반으로 IoT 기기를 리셋시킬 수 있다(S840).
이와 같은 IoT 기기 자동 퍼징 방법을 통해 펌웨어 기반으로 동작하는 IoT 기기에 대한 자동화된 퍼징 기술을 제공할 수 있다.
또한, IoT 기기를 모니터링하여 크래쉬 발생을 감지하고, 크래쉬 발생 관련 정보를 수집하여 전달하고, IoT 기기를 초기화(리셋)할 수 있는 퍼징 기능을 자동으로 수행하는 기술을 제공할 수 있다.
또한, 자동화된 퍼징을 기반으로 IoT 기기의 취약점을 조기에 발견하여 대처할 수 있게 함으로써 보다 안전한 IoT 기기 활용 환경을 구축할 수 있다.
도 9는 본 발명에 따른 퍼징 전체 과정의 일 예를 나타낸 도면이다.
도 10은 본 발명의 일실시예에 따른 IoT 자동 퍼징 방법을 상세하게 나타낸 동작 흐름도이다.
이하에서는 도 9 내지 도 10을 참조하여 본 발명의 일실시예에 따른 IoT 자동 퍼징 방법을 상세하게 설명하도록 한다.
먼저, 도 9에 도시된 IoT 기기 자동 퍼징 장치(910)는 퍼징 대상인 IoT 기기(920)를 설정하고(S1010), 설정된 IoT(920)로 퍼징 에이전트를 업로드 할 수 있다(S1020).
예를 들어, 도 9에 도시된 IoT 기기 자동 퍼징 장치(910) USB 포트와 IoT 기기(920)의 디버그 포트(UART, JTAG)에 간의 연결 또는 네트워크 포트 간의 연결을 기반으로 퍼징 에이전트를 IoT 기기(920)의 펌웨어 메모리 상에 업로드 할 수 있다.
이 후, IoT 기기 자동 퍼징 장치(910)는 프로세서를 통해 퍼징 입력을 생성하고, 네트워크 포트를 기반으로 IoT 기기(920)로 퍼징 입력을 전달할 수 있다(S1030).
이 후, IoT 기기 자동 퍼징 장치(910)는 IoT 기기(920)에 적재된 퍼징 에이전트를 기반으로 IoT 기기(920)의 퍼징 입력 처리 과정을 모니터링하여 크래쉬가 발생하는지 여부를 판단할 수 있다(S1035).
단계(S1035)의 판단결과 크래쉬가 발생하면, IoT 기기 자동 퍼징 장치(910)는 퍼징 에이전트를 통해 IoT 기기(920)의 예외 처리를 후킹하여 퍼징 데이터를 수집 및 기록할 수 있다(S1040).
이 때, 퍼징 에이전트는 IoT 기기(920)의 네트워크 포트를 기반으로 크래쉬 발생 시 IoT 기기의 동작과 관련된 레지스터 값, 크래쉬 발생 정보 및 크래쉬 발생 위치 등을 포함하는 퍼징 데이터를 IoT 기기 자동 퍼징 장치(910)로 전달할 수 있다.
이 후, IoT 기기 자동 퍼징 장치(910)는 퍼징 에이전트를 통해 IoT 기기(920)를 리셋시킬 수 있고(S1050), IoT 기기(920)의 퍼징이 완료되었는지 여부를 판단할 수 있다(S1055).
또한, 단계(S1035)의 판단결과 크래쉬가 발생하지 않은 경우에도 IoT 기기(920)의 퍼징이 완료되었는지 여부를 판단할 수 있다(S1055).
단계(S1055)의 판단결과 IoT 기기(920)의 퍼징이 완료되지 않았으면, IoT 기기 자동 퍼징 장치(910)는 퍼징 에이전트를 기반으로 단계(S1030)부터 단계(S1055)에 해당하는 퍼징 과정을 반복적으로 수행할 수 있다.
또한, 단계(S1055)이 판단결과 IoT 기기(920)의 퍼징이 완료되었으면, IoT 기기 자동 퍼징 장치(910)는 내부 메모리에 IoT 기기(920)에 대한 퍼징 히스토리 기록하고 퍼징을 종료할 수 있다(S1060).
이 때, 도 10은 일실시예에 해당하는 것으로, 각 단계의 선후 관계는 경우에 따라 변경될 수도 있다.
도 11은 본 발명의 일실시예에 따른 자동화된 리셋 기반의 IoT 기기 자동 퍼징 장치를 나타낸 블록도이다.
도 11을 참조하면, 본 발명의 일실시예에 따른 자동화된 리셋 기반의 IoT 기기 자동 퍼지 장치는 통신부(1110), 프로세서(1120) 및 메모리(1130)를 포함한다.
통신부(1110)는 네트워크와 같은 통신망을 통해 IoT 기기 자동 퍼징을 위해 필요한 정보를 송수신하는 역할을 할 수 있다. 이 때, 네트워크는 장치들간에 데이터를 전달하는 통로를 제공하는 것으로서, 기존에 이용되는 네트워크 및 향후 개발 가능한 네트워크를 모두 포괄하는 개념이다.
예를 들면, 네트워크는 인터넷 프로토콜(IP)을 통하여 대용량 데이터의 송수신 서비스 및 끊기는 현상이 없는 데이터 서비스를 제공하는 아이피망, 아이피를 기반으로 서로 다른 망을 통합한 아이피망 구조인 올 아이피(All IP)망 등일 수 있으며, 유선망, Wibro(Wireless Broadband)망, WCDMA를 포함하는 3세대 이동통신망, HSDPA(High Speed Downlink Packet Access)망 및 LTE 망을 포함하는 3.5세대 이동통신망, LTE advanced를 포함하는 4세대 이동통신망, 위성통신망 및 와이파이(Wi-Fi)망 중에서 하나 이상을 결합하여 이루어질 수 있다.
또한, 네트워크는 한정된 지역 내에서 각종 정보장치들의 통신을 제공하는 유무선근거리 통신망, 이동체 상호 간 및 이동체와 이동체 외부와의 통신을 제공하는 이동통신망, 위성을 이용해 지구국과 지구국간 통신을 제공하는 위성통신망이거나 유무선 통신망 중에서 어느 하나이거나, 둘 이상의 결합으로 이루어질 수 있다. 한편, 네트워크의 전송 방식 표준은, 기존의 전송 방식 표준에 한정되는 것은 아니며, 향후 개발될 모든 전송 방식 표준을 포함할 수 있다.
프로세서(1120)는 펌웨어 기반의 IoT 기기에 퍼징 에이전트(FUZZING AGENT)를 적재한다.
이 때, 퍼징 에이전트는 본 발명의 일실시예에 따른 IoT 기기 자동 퍼징을 수행하기 위해 개발된 도구에 상응할 수 있다.
예를 들어, 퍼징 에이전트는 퍼징 대상인 IoT 기기에 대한 펌웨어 정보를 기반으로 펌웨어 모니터링 기능과 초기화(리셋) 기능을 수행하도록 개발될 수 있다.
이 때, IoT 기기의 펌웨어 정보는 IoT 기기의 제조사에 의해 공개된 정보 및 IoT 기기의 디버깅 데이터 중 적어도 하나를 기반으로 수집될 수 있다.
예를 들어, 퍼징 대상인 IoT 기기 제조사가 펌웨어를 공개한 경우에는 공개된 정보를 획득하여 사용할 수 있다.
만약, IoT 기기의 펌웨어 정보를 공개적으로 획득하기 어려운 경우에는 UART(UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER)나 JTAG(JOINT TEST ACTION GROUP)와 같이 IoT 기기의 펌웨어 메모리에 접근 가능한 인터페이스를 이용하여 획득한 IoT 기기의 디버깅 데이터를 이용하여 펌웨어 정보를 수집할 수도 있다.
일반적으로, 디버깅 데이터를 이용하기 위해서는 IoT 기기에서 사용하는 칩이나 메모리에 대한 정보가 필요하므로, UART나 JTAG와 같이 IoT 기기의 펌웨어 메모리에 접근 가능한 인터페이스를 제공함으로써 IoT 기기에서 사용하는 칩이나 메모리에 대한 정보를 획득할 수 있다.
이 때, 도 2에 도시된 URAT나 JTAG 등의 디버그 포트(210, 220)는 칩 디버깅을 위해 사용되는 것으로, 대부분의 IC 칩에서 제공하고 있다.
이 때, 퍼징 에이전트는 IoT 기기의 펌웨어 메모리에 접근 가능한 인터페이스 및 IoT 기기의 디버그 포트 중 적어도 하나를 기반으로 적재될 수 있다.
예를 들어, 도 3을 참조하면, 본 발명의 일실시예에 따른 IoT 기기 자동 퍼징 장치(310)는 USB 포트를 기반으로 접근한 IoT 기기(320)의 URAT 또는 JTAG를 통해 퍼징 에이전트를 제공함으로써 IoT(320)의 펌웨어 메모리 상에 퍼징 에이전트를 적재할 수 있다.
다른 예를 들어, 도 3을 참조하면, 본 발명의 일실시예에 따른 IoT 기기 자동 퍼징 장치(310)는 네트워크 or 시리얼 포트를 기반으로 접근한 IoT 기기(320)의 네트워크 or 시리얼 포트를 통해 퍼징 에이전트를 제공함으로써 IoT(320)의 펌웨어 메모리 상에 퍼징 에이전트를 적재할 수도 있다.
이 때, 퍼징 에이전트는 IoT 기기의 펌웨어가 동작하는 CPU 아키텍처에 상응하게 컴파일된 바이너리 파일의 형태에 상응할 수 있다.
예를 들어, 퍼징 에이전트는 Intel x86, ARM, PowerPC 등의 CPU 아키텍처에 맞춰 컴파일되어 바이너리 코드에 상응하게 생성될 수 있다.
이 때, 퍼징 에이전트는 IoT 퍼징 과정에서 예외 처리(EXCEPTION HANDLING)의 후킹이 가능하도록 구성 또는 생성될 수 있다.
이 때, 퍼징 에이전트는 IoT 기기의 펌웨어 메모리에서 사용되지 않는 여유 공간에 적재될 수 있다.
예를 들어, URAT나 JTAG를 통해 펌웨어 메모리에 접근한 뒤에 사용되지 않는 공간을 확보하고, 확보된 공간에 IoT 기기 자동 퍼징 장치로부터 수신된 퍼징 에이전트에 상응하는 코드를 적재할 수 있다.
예를 들어, 본 발명의 일실시예에 따른 퍼징 에이전트 코드는 도 4에 도시된 것처럼 IoT 기기의 펌웨어 메모리 상에 적재될 수 있다.
이 때, IoT 기기의 펌웨어 내에 포함되어 있는 라이브러리를 확인하고, 활용 가능한 함수들을 확보할 수 있다.
또한, 추후 예외 처리(EXCEPTION HANDLING)를 후킹을 위해 예외 핸들러(EXCEPTION HANDLER) 및 예외 테이블(EXCEPTION TABLE)의 위치와 함께 관련 정보를 확인할 수도 있다.
이 때, 도 4에 도시된 것과 같은 예시로 바이너리 코드 형태의 퍼징 에이전트를 적재함으로써 IoT 퍼징 수행 중 예외(exception) 발생시 관련 정보 수집, 정보 전달, IoT 기기 초기화 등을 수행할 수 있다.
또한, 프로세서(1120)는 퍼징 에이전트를 기반으로 퍼징 입력에 대한 IoT 기기의 처리 상황을 모니터링한다.
또한, 프로세서는(1120) 퍼징 에이전트는 모니터링을 수행함으로써 IoT 기기에서 크래쉬(CRASH)가 발생하였는지 여부를 판단하고, IoT 기기에서 크래쉬가 발생하는 경우, 퍼징 에이전트를 이용한 후킹(HOOOKING)을 기반으로 크래쉬 발생에 상응하는 퍼징 데이터를 수집한다.
이 때, 크래쉬는 IoT 기기의 펌웨어가 정상적으로 동작할 수 없는 상황에 상응할 수 있다.
예를 들어, 퍼징 입력으로 인해 IoT 기기의 펌웨어가 종료되거나, 오류가 발생하여 더 이상 동작하지 않는 경우에 크래쉬가 발생한 것으로 판단할 수 있다.
이 때, IoT 기기의 펌웨어 정보를 기반으로 펌웨어 메모리 상에서 IoT 기기의 예외 핸들러(EXCEPTION HANDLER) 위치를 사전에 파악할 수 있다.
예를 들어, IoT 기기의 펌웨어 정보에 대해 역공학 분석을 수행함으로써 IoT 기기의 펌웨어 메모리 상에서 예외 핸들러의 위치를 확인할 수 있다.
이렇게 확보된 예외 핸들러 위치를 기반으로 IoT 기기에서 크래쉬에 의해 실행되는 예외 처리(EXCEPTION HANDLING)를 후킹할 수 있다.
일반적으로 IoT 기기의 펌웨어는 IoT 기기에 어떤 문제나 오류가 발생하여 크래쉬가 발생했을 경우, 이를 인지하고 자체적인 예외 처리(EXCEPTION HANDLING)를 수행하도록 설계될 수 있다. 본 발명에서는 이렇게 IoT 기기 내에서 자체적으로 수행되는 예외 처리(EXCEPTION HANDLING)를 중간에 가로채서 퍼징 과정을 수행할 수 있다.
특히, IoT 기기나 ICS 기기는, 크래쉬가 발생하는 경우에 최초 의도된 목적으로 동작을 지속할 수 있도록 가능한 빠르게 기기를 초기화하여 기능을 회복하도록 설계되어 있는데, 이를 처리하기 위한 정보가 예외 테이블(EXCEPTION TABLE)에 정의되어 있다.
예를 들어, 예외 테이블(EXCEPTION TABLE)에는 IoT 기기에서 발생할 수 있는 다양한 인터럽트들에 대하여, 해당 인터럽트가 발생했을 경우에 어떠한 동작을 수행할지가 사전에 정의되어 있을 수 있다.
따라서, 본 발명은 예외 테이블(EXCEPTION TABLE)에 정의된 복수의 인터럽트들 중 크래쉬에 상응하는 인터럽트를 후킹할 수 있다.
즉, 일반적인 예외 처리의 경우, 시스템에 크래쉬가 발생한 것으로 판단되면 시스템 기능 복구를 위해 실제로 초기화를 진행하도록 설계될 수 있는데, 본 발명에서는 이 과정에서 인터럽트를 후킹함으로써 시스템이 리셋되기 전에 퍼징 데이터를 수집할 수 있다.
이 때, 퍼징 에이전트는 수집한 퍼징 데이터를 IoT 기기 자동 퍼징 장치로 전달할 수 있다.
이 때, 퍼징 데이터는 예외 처리가 실행되는 동안에 IoT 기기에서 사용되는 CPU 아키텍처의 레지스터 값 및 크래쉬 발생 정보 중 적어도 하나를 포함할 수 있다.
예를 들어, 도 5 내지 도 6을 참조하면, VxWorks 운영체제를 활용하는 기기에서 임의의 프로세스를 생성하고, 해당 프로세스가 실행되는 동안에 사용되는 레지스터 값(510)을 메모리의 특정 영역을 검색함으로써 확인할 수 있다.
특히, 해당 메모리 상에서는 VxWorks 운영체제에서 제공하는 정보를 활용하여 레지스터 별 기능을 확인할 수도 있다.
예를 들어, Program Counter의 경우, 프로그램 내에서 어느 위치를 수행하고 있는지에 대한 정보를 포함하고 있기 때문에, 이를 이용하면 프로그램 내에서 크래쉬가 발생한 위치를 확인할 수 있다.
또한, 프로세서(1120)는 IoT 기기에서 크래쉬가 발생하지 않으면, IoT 기기 자동 퍼징이 종료될 때까지 IoT 기기의 처리 상황을 지속적으로 모니터링 할 수 있다.
또한, 프로세서(1120)는 퍼징 에이전트를 기반으로 IoT 기기를 리셋시킨다.
이 때, IoT 기기를 리셋 시킴으로써 자동화된 방식으로 IoT 기기에 대한 퍼징을 반복적으로 수행할 수 있다.
예를 들어, IoT 기기에 대한 리셋이 완료되면, IoT 기기 자동 퍼징 장치가, 퍼징 에이전트를 기반으로 이전과 다른 퍼징 입력을 대입하여 단계(S110) 내지 단계(S140)의 단계를 반복 수행함으로써 IoT 기기에 대한 자동 퍼징을 이어서 수행할 수 있다.
이하에서는 도 7 내지 도 8을 참조하여 본 발명의 일실시예에 따른 퍼징 에이전트를 통해 IoT 기기의 퍼징을 수행하는 과정을 보다 상세하게 설명하도록 한다.
먼저, 도 7을 참조하면, 본 발명의 일실시예에 따른 IoT 기기 자동 퍼징 장치(710)는 에이전트 업로드 기능을 통해 IoT 기기에 퍼징 에이전트(720)를 업로드 또는 적재할 수 있다.
이렇게 IoT 기기에 업로드 또는 적재된 퍼징 에이전트(720)는 퍼징 입력에 대한 IoT 기기의 처리 상황을 모니터링하여(S810) 크래쉬가 발생하는지 여부를 판단할 수 있다(S815).
단계(S815)의 판단결과 크래쉬가 발생하지 않았으면, IoT 기기에 대한 퍼징이 완료될 때까지 반복적으로 모니터링을 수행할 수 있다.
또한, 단계(S815)의 판단결과 크래쉬가 발생하였으면, 도 7에 도시된 퍼징 에이전트의 레지스터 값 읽기 기능을 기반으로 IoT 기기에서 크래쉬 발생에 상응하는 예외 처리가 실행되는 동안에 사용되는 CPU 아키텍처의 레지스터 값을 수집할 수 있다(S820).
이 때, 퍼징 에이전트는 IoT 기기에서 현재 명령을 수행하고 있는 IP(Instruction Pointer)에 대한 레지스터를 읽음으로써 크래쉬 발생 위치를 알 수 있다.
이 후, 퍼징 에이전트는 도 7에 도시된 레지스터 값 전송 기능을 기반으로 IoT 기기 자동 퍼징 장치(710)에게 퍼징 데이터를 전달할 수 있다(S830).
이 때, 퍼징 데이터는 네트워크를 통해 전달될 수 있으며, 레지스터 값과 함께 크래쉬 발생 정보와 크래쉬 발생 위치 등을 포함할 수 있다.
이 후, 퍼징 에이전트는 반복적인 퍼징 수행을 위해 도 7에 도시된 리셋 기능을 기반으로 IoT 기기를 리셋시킬 수 있다(S840).
메모리(1130)는 퍼징 데이터를 저장한다.
또한, 메모리(1130)는 상술한 IoT 기기 자동 퍼징 과정에서 발생하는 다양한 정보를 저장할 수도 있다.
실시예에 따라, 메모리(1130)는 IoT 기기 자동 퍼징 장치와 독립적으로 구성되어 IoT 기기 자동 퍼징을 위한 기능을 지원할 수 있다. 이 때, 메모리(1130)는 별도의 대용량 스토리지로 동작할 수 있고, 동작 수행을 위한 제어 기능을 포함할 수도 있다.
이와 같은 IoT 기기 자동 퍼징 장치를 이용함으로써 펌웨어 기반으로 동작하는 IoT 기기에 대한 자동화된 퍼징 기술을 제공할 수 있다.
또한, IoT 기기를 모니터링하여 크래쉬 발생을 감지하고, 크래쉬 발생 관련 정보를 수집하여 전달하고, IoT 기기를 초기화(리셋)할 수 있는 퍼징 기능을 자동으로 수행하는 기술을 제공할 수 있다.
또한, 자동화된 퍼징을 기반으로 IoT 기기의 취약점을 조기에 발견하여 대처할 수 있게 함으로써 보다 안전한 IoT 기기 활용 환경을 구축할 수 있다.
이상에서와 같이 본 발명에 따른 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법 및 이를 이용한 장치는 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
210, 220: 디버깅 포트 310, 710, 910: IoT 기기 자동 퍼징 장치
320, 920: IoT 기기 510: 레지스터 값
720: 퍼징 에이전트 1110: 통신부
1120: 프로세서 1130: 메모리

Claims (18)

  1. IoT 기기 자동 퍼징 장치가, 펌웨어 기반의 IoT 기기에 퍼징 에이전트(FUZZING AGENT)를 적재하는 단계;
    상기 IoT 기기 자동 퍼징 장치가, 상기 퍼징 에이전트를 기반으로 퍼징 입력에 대한 상기 IoT 기기의 처리 상황을 모니터링하는 단계;
    상기 IoT 기기에서 크래쉬(CRASH)가 발생하는 경우, 상기 IoT 기기 자동 퍼징 장치가, 상기 퍼징 에이전트를 이용한 후킹(HOOKING)을 기반으로 상기 크래쉬 발생에 상응하는 퍼징 데이터를 수집하는 단계; 및
    상기 IoT 기기 자동 퍼징 장치가, 상기 퍼징 에이전트를 기반으로 상기 IoT 기기를 리셋시키는 단계
    를 포함하는 것을 특징으로 하는 IoT 기기 자동 퍼징 방법.
  2. 청구항 1에 있어서,
    상기 수집하는 단계는
    상기 IoT 기기의 펌웨어 정보를 기반으로 펌웨어 메모리 상에서 상기 IoT 기기의 예외 핸들러(EXCEPTION HANDLER) 위치를 사전에 파악하는 단계; 및
    상기 예외 핸들러 위치를 기반으로 상기 IoT 기기에서 상기 크래쉬에 의해 실행되는 예외 처리(EXCEPTION HANDLING)를 후킹하는 단계를 포함하는 것을 특징으로 하는 IoT 기기 자동 퍼징 방법.
  3. 청구항 2에 있어서,
    상기 후킹하는 단계는
    예외 테이블(EXCEPTION TABLE)에 정의된 복수의 인터럽트들 중 상기 크래쉬에 상응하는 인터럽트를 후킹하는 것을 특징으로 하는 IoT 기기 자동 퍼징 방법.
  4. 청구항 2에 있어서,
    상기 퍼징 데이터는
    상기 예외 처리가 실행되는 동안에 상기 IoT 기기에서 사용되는 CPU 아키텍처의 레지스터 값 및 크래쉬 발생 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 IoT 기기 자동 퍼징 방법.
  5. 청구항 2에 있어서,
    상기 퍼징 에이전트는
    상기 펌웨어 메모리에서 사용되지 않는 여유 공간에 적재되는 것을 특징으로 하는 IoT 기기 자동 퍼징 방법.
  6. 청구항 1에 있어서,
    상기 퍼징 에이전트는
    상기 IoT 기기의 펌웨어가 동작하는 CPU 아키텍처에 상응하게 컴파일된 바이너리 파일의 형태에 상응하는 것을 특징으로 하는 IoT 기기 자동 퍼징 방법.
  7. 청구항 2에 있어서,
    상기 퍼징 에이전트는
    상기 펌웨어 메모리에 접근 가능한 인터페이스 및 상기 IoT 기기의 디버그 포트 중 적어도 하나를 기반으로 적재되는 것을 특징으로 하는 IoT 기기 자동 퍼징 방법.
  8. 청구항 2에 있어서,
    상기 펌웨어 정보는
    상기 IoT 기기의 제조사에 의해 공개된 정보 및 상기 IoT 기기의 디버깅 데이터 중 적어도 하나를 기반으로 수집되는 것을 특징으로 하는 IoT 기기 자동 퍼징 방법.
  9. 청구항 1에 있어서,
    상기 크래쉬는
    상기 IoT 기기의 펌웨어가 정상적으로 동작할 수 없는 상황에 상응하는 것을 특징으로 하는 IoT 기기 자동 퍼징 방법.
  10. 펌웨어 기반의 IoT 기기에 퍼징 에이전트(FUZZING AGENT)를 적재하고, 상기 퍼징 에이전트를 기반으로 퍼징 입력에 대한 상기 IoT 기기의 처리 상황을 모니터링하고, 상기 IoT 기기에서 크래쉬(CRASH)가 발생하는 경우에 상기 퍼징 에이전트를 이용한 후킹(HOOKING)을 기반으로 상기 크래쉬 발생에 상응하는 퍼징 데이터를 수집하고, 상기 퍼징 에이전트를 기반으로 상기 IoT 기기를 리셋시키는 프로세서; 및
    상기 퍼징 데이터를 저장하는 메모리
    를 포함하는 것을 특징으로 하는 IoT 기기 자동 퍼징 장치.
  11. 청구항 10에 있어서,
    상기 프로세서는
    상기 IoT 기기의 펌웨어 정보를 기반으로 펌웨어 메모리 상에서 상기 IoT 기기의 예외 핸들러(EXCEPTION HANDLER) 위치를 사전에 파악하고, 상기 예외 핸들러 위치를 기반으로 상기 IoT 기기에서 상기 크래쉬에 의해 실행되는 예외 처리(EXCEPTION HANDLING)를 후킹하는 것을 특징으로 하는 IoT 기기 자동 퍼징 장치.
  12. 청구항 11에 있어서,
    상기 프로세서는
    예외 테이블(EXCEPTION TABLE)에 정의된 복수의 인터럽트들 중 상기 크래쉬에 상응하는 인터럽트를 후킹하는 것을 특징으로 하는 IoT 기기 자동 퍼징 장치.
  13. 청구항 11에 있어서,
    상기 퍼징 데이터는
    상기 예외 처리가 실행되는 동안에 상기 IoT 기기에서 사용되는 CPU 아키텍처의 레지스터 값 및 크래쉬 발생 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 IoT 기기 자동 퍼징 장치.
  14. 청구항 11에 있어서,
    상기 퍼징 에이전트는
    상기 펌웨어 메모리에서 사용되지 않는 여유 공간에 적재되는 것을 특징으로 하는 IoT 기기 자동 퍼징 장치.
  15. 청구항 10에 있어서,
    상기 퍼징 에이전트는
    상기 IoT 기기의 펌웨어가 동작하는 CPU 아키텍처에 상응하게 컴파일된 바이너리 파일의 형태에 상응하는 것을 특징으로 하는 IoT 기기 자동 퍼징 장치.
  16. 청구항 11에 있어서,
    상기 퍼징 에이전트는
    상기 펌웨어 메모리에 접근 가능한 인터페이스 및 상기 IoT 기기의 디버그 포트 중 적어도 하나를 기반으로 적재되는 것을 특징으로 하는 IoT 기기 자동 퍼징 장치.
  17. 청구항 11에 있어서,
    상기 펌웨어 정보는
    상기 IoT 기기의 제조사에 의해 공개된 정보 및 상기 IoT 기기의 디버깅 데이터 중 적어도 하나를 기반으로 수집되는 것을 특징으로 하는 IoT 기기 자동 퍼징 장치.
  18. 청구항 10에 있어서,
    상기 크래쉬는
    상기 IoT 기기의 펌웨어가 정상적으로 동작할 수 없는 상황에 상응하는 것을 특징으로 하는 IoT 기기 자동 퍼징 장치.
KR1020200145990A 2020-11-04 2020-11-04 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법 및 이를 이용한 장치 KR102397754B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200145990A KR102397754B1 (ko) 2020-11-04 2020-11-04 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법 및 이를 이용한 장치
US17/134,088 US11175992B1 (en) 2020-11-04 2020-12-24 Method for automated fuzzing for IoT device based on automated reset and apparatus using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200145990A KR102397754B1 (ko) 2020-11-04 2020-11-04 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법 및 이를 이용한 장치

Publications (2)

Publication Number Publication Date
KR20220060231A true KR20220060231A (ko) 2022-05-11
KR102397754B1 KR102397754B1 (ko) 2022-05-16

Family

ID=78524221

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200145990A KR102397754B1 (ko) 2020-11-04 2020-11-04 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법 및 이를 이용한 장치

Country Status (2)

Country Link
US (1) US11175992B1 (ko)
KR (1) KR102397754B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190109872A1 (en) * 2017-10-05 2019-04-11 Honeywell International Inc. Intelligent automated security vulnerability detection and analysis for industrial internet of things (iiot) devices
KR20190041912A (ko) * 2018-09-28 2019-04-23 한국인터넷진흥원 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램
KR20190113408A (ko) * 2018-03-28 2019-10-08 한국과학기술원 에뮬레이션 기반의 임베디드 기기 취약점 점검 및 검증 방법
KR102104610B1 (ko) 2018-03-12 2020-05-29 주식회사 아이오티큐브 네트워크 프로토콜의 취약점을 탐지하는 퍼징 방법 및 장치

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7269768B2 (en) * 2004-03-18 2007-09-11 Intel Corporation Method and system to provide debugging of a computer system from firmware
US8549491B2 (en) 2008-12-05 2013-10-01 Electronics And Telecommunications Research Institute Apparatus and method for application testing of embedded system
KR101295644B1 (ko) 2011-11-11 2013-09-16 한국전자통신연구원 스마트폰 앱 검증 시스템 및 그 방법
KR102456267B1 (ko) 2018-01-22 2022-10-20 컴즈 주식회사 IoT 장치에 대한 신뢰성 검증 시스템
US11520901B2 (en) * 2018-12-26 2022-12-06 Jfrog Ltd Detecting firmware vulnerabilities
KR101972825B1 (ko) 2019-01-18 2019-04-30 한국과학기술원 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램
CN112417461B (zh) * 2020-12-07 2023-10-03 北京梆梆安全科技有限公司 设备固件的模糊测试方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190109872A1 (en) * 2017-10-05 2019-04-11 Honeywell International Inc. Intelligent automated security vulnerability detection and analysis for industrial internet of things (iiot) devices
KR102104610B1 (ko) 2018-03-12 2020-05-29 주식회사 아이오티큐브 네트워크 프로토콜의 취약점을 탐지하는 퍼징 방법 및 장치
KR20190113408A (ko) * 2018-03-28 2019-10-08 한국과학기술원 에뮬레이션 기반의 임베디드 기기 취약점 점검 및 검증 방법
KR20190041912A (ko) * 2018-09-28 2019-04-23 한국인터넷진흥원 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Katharina Bogad 외 1명, "Hazer Roller: Linker-Based Instrumentation for Enhanced Embedded Security Testing"https://arxiv.org/pdf/1912.08573.pdf, (2019.12.18.) *

Also Published As

Publication number Publication date
KR102397754B1 (ko) 2022-05-16
US11175992B1 (en) 2021-11-16

Similar Documents

Publication Publication Date Title
JP5128944B2 (ja) コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム
US8151147B2 (en) Synchronize error handling for a plurality of partitions
US8726097B2 (en) Debugging method and computer system using the same
US20130227356A1 (en) Apparatus and method for handling rebooting of mobile terminal
US10949307B2 (en) Executing computer instruction including asynchronous operation
CN109669724B (zh) 一种基于Linux系统的多命令并发式代理服务方法及系统
US20120222051A1 (en) Shared resource access verification
JP5609242B2 (ja) 情報処理装置及びメモリダンプ採取方法
US7281163B2 (en) Management device configured to perform a data dump
US20130019123A1 (en) Storage system and communications method
KR102397754B1 (ko) 자동화된 리셋 기반의 IoT 기기 자동 퍼징 방법 및 이를 이용한 장치
US7062677B1 (en) Method for capturing core dump of a service module
CN101706752B (zh) 一种软件错误现场定位的方法及装置
CN116724297A (zh) 一种故障处理方法、装置及系统
CN115904793B (zh) 一种基于多核异构系统的内存转存方法、系统及芯片
US20110010584A1 (en) Diagnosis of and Response to Failure at Reset in a Data Processing System
US8006135B2 (en) Method and system for remote node debugging using an embedded node controller
US8203937B2 (en) Global detection of resource leaks in a multi-node computer system
CN113391931B (zh) 基于蓝牙的远程控制方法、装置、计算机设备和存储介质
US20230195552A1 (en) Retrieving diagnostic information from a pci express endpoint
CN109086179B (zh) 一种程序异常情况下的处理方法和装置
US9712380B2 (en) Analytical device control system
CN111782515A (zh) web应用的状态检测方法、装置、服务器和存储介质
CN117667465B (zh) 代码共享方法、装置、交换机、多主机系统、设备和介质
EP2360591A1 (en) Volatile memory content capturing method and processing system

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant