KR20240011218A - Method of diagnosing bootloader using deep-learning model and apparatus therefor - Google Patents
Method of diagnosing bootloader using deep-learning model and apparatus therefor Download PDFInfo
- Publication number
- KR20240011218A KR20240011218A KR1020240006168A KR20240006168A KR20240011218A KR 20240011218 A KR20240011218 A KR 20240011218A KR 1020240006168 A KR1020240006168 A KR 1020240006168A KR 20240006168 A KR20240006168 A KR 20240006168A KR 20240011218 A KR20240011218 A KR 20240011218A
- Authority
- KR
- South Korea
- Prior art keywords
- bootloader
- firmware
- file
- learning
- image
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000013136 deep learning model Methods 0.000 title abstract 2
- 238000013135 deep learning Methods 0.000 claims abstract description 33
- 230000006870 function Effects 0.000 claims abstract description 32
- 238000003745 diagnosis Methods 0.000 claims abstract description 20
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 4
- 230000007488 abnormal function Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2263—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1417—Boot up procedures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Image Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Stored Programmes (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
Abstract
본 발명은 딥러닝 모델을 이용한 부트로더 진단 방법 및 장치에 관한것이다. 보다 상세하게는, 학습용 펌웨어 부트로더의 하드웨어 종류 및 기능별로 ELF(Executable and Linkable Format) 파일을 생성하는 단계; 역공학 도구를 이용하여 상기 생성한 ELF 파일로부터 구조 이미지 파일을 생성하고 구조 이미지를 학습하는 단계; 대상 펌웨어 부트로더의 구조 이미지와 대응되는 학습된 구조 이미지를 검출하는 단계; 및 검출된 각 구조 이미지에 딥러닝 알고리즘을 적용하여 상기 대상 펌웨어 부트로더의 정상 여부에 대한 진단을 수행하는 단계;를 포함하는, 펌웨어 부트로더 진단 방법에 관한 것이다.The present invention relates to a bootloader diagnosis method and device using a deep learning model. More specifically, generating an Executable and Linkable Format (ELF) file for each hardware type and function of the learning firmware bootloader; Generating a structural image file from the generated ELF file using a reverse engineering tool and learning the structural image; Detecting a learned structure image corresponding to the structure image of the target firmware bootloader; and performing a diagnosis as to whether the target firmware bootloader is normal by applying a deep learning algorithm to each detected structure image.
Description
본 발명은 부트로더 진단에 관한 것으로, 보다 상세하게는 딥러닝 알고리즘을 통하여 부트로더에 존재하는 정상적이지 않은 기능, 취약점 여부 등을 자동 진단 및 예측하는 방법 및 장치에 관한 것이다.The present invention relates to bootloader diagnosis, and more specifically, to a method and device for automatically diagnosing and predicting abnormal functions and vulnerabilities in the bootloader through a deep learning algorithm.
펌웨어(firmware)는 특정 하드웨어 장치에 포함된 소프트웨어로, 소프트웨어를 읽어 실행하거나, 수정하는 것을 가능하게 하는 장치이다. 펌웨어의 종류로는 디바이스의 제어를 담당하는 디바이스 드라이버(device driver), 디바이스에 운영체제(OS: Operating System)를 올려주는 부트로더(Bootloader), 디바이스용 소형 운영체제, 해당 디바이스에서 구동되는 응용 소프트웨어 등이 있다. 부트로더는 일반적으로 플래시 메모리(flash memory)에 저장되어 중앙 처리 장치가 초기 부팅 시 가동되며 장치 내부에 저장된 내용을 읽고, 다음 단계의 운영체제 소프트웨어가 실행되도록 하는 소프트웨어이다. 부트로더는 필요에 따라서 업데이트가 진행될 수 있다.Firmware is software included in a specific hardware device and is a device that enables reading, executing, or modifying software. Types of firmware include a device driver that controls the device, a bootloader that uploads the operating system (OS) to the device, a small operating system for the device, and application software that runs on the device. there is. The bootloader is software that is generally stored in flash memory and is run by the central processing unit during initial booting, reads the contents stored inside the device, and executes the next level of operating system software. The bootloader can be updated as needed.
하드웨어 장비의 초기 수행에 있어서 주요한 임무를 수행하는 부트로더에 제작의 실수 혹은 임의로 발생 가능한 취약점이 존재하면, 그를 통한 다양한 보안 공격이 가능해지고, 결국 해당 하드웨어 장비에 치명적인 문제를 가져올 수 있다. 따라서, 장비의 초기 생산 시에 설치되거나 추후 필요에 따라 업데이트가 이루어지는 소프트웨어인 부트로더에 대하여, 보안 취약점을 대상으로 하는 공격으로부터 그를 보호할 필요가 있다. If there is a manufacturing mistake or a randomly occurring vulnerability in the bootloader, which performs a major task in the initial operation of the hardware device, various security attacks are possible through this, which can eventually lead to fatal problems in the hardware device. Therefore, it is necessary to protect the bootloader, which is software installed during initial production of equipment or updated as needed, from attacks targeting security vulnerabilities.
이를 위해 종래에는 펌웨어, 하드웨어, 운영체제, 및 역공학 분야의 전문가들에 의한 수동적인 분석을 통하여 실제 부트로더 소프트웨어에 대한 보안 취약점이나 비정상적인 악성 기능을 탐지하였다. 즉, 종래에는, 역공학을 통하여 구해진 소프트웨어 구조 및 순서도에 따라서 개발자, 시험 검증 전문 인원 등이 각 라인별로 시간 순서에 맞추어서 정상적이지 않는 부분을 경험 및 코드 기반에 의하여 문제를 찾는 방식이었다. 따라서, 이러한 종래 방법은, 전문가 역량에 따른 탐지 정확성의 문제, 분석을 위한 많은 자원 소요 등의 한계 내지 문제점이 있었다.To this end, in the past, security vulnerabilities or abnormal malicious functions in the actual bootloader software were detected through manual analysis by experts in the fields of firmware, hardware, operating systems, and reverse engineering. In other words, in the past, according to the software structure and flowchart obtained through reverse engineering, developers, test verification experts, etc. followed the chronological order of each line and found problems based on experience and code base for abnormal parts. Therefore, these conventional methods had limitations or problems, such as problems with detection accuracy depending on expert capabilities and the need for a large amount of resources for analysis.
상기한 종래 문제점을 해소하기 위하여, 본 발명의 일과제는, 부트로더 파일에 대한 역공학을 통하여 생성되는 구조 이미지 파일에 대하여 딥러닝 알고리즘을 적용하여, 부트로더에 존재하는 정상적이지 않은 이상 기능 내지 취약점 여부를 자동으로 진단하고 예측하는 방법 및 장치를 제공하는 것이다.In order to solve the above-described conventional problems, the work of the present invention is to apply a deep learning algorithm to a structural image file generated through reverse engineering of the bootloader file, It provides a method and device for automatically diagnosing and predicting vulnerabilities.
본 발명의 다른 일과제는, 상기와 같이 딥러닝 알고리즘의 학습을 통하여 인간의 개입을 최소화하면서 부트로더의 정상 여부를 자동으로 진단하는 방법 및 장치를 제공하는 것이다.Another task of the present invention is to provide a method and device for automatically diagnosing whether a bootloader is normal while minimizing human intervention through learning a deep learning algorithm as described above.
본 발명에서 이루고자 하는 기술적 과제들은 상기 기술적 과제로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The technical problems to be achieved in the present invention are not limited to the above technical problems, and other technical problems not mentioned will be clearly understood by those skilled in the art from the description below.
상술한 문제점을 해결하기 위한 본 발명의 일실시예에 따른 펌웨어 부트로더 진단 방법은, 학습용 펌웨어 부트로더의 하드웨어 종류 및 기능별로 ELF(Executable and Linkable Format) 파일을 생성하는 단계; 역공학 도구를 이용하여 상기 생성한 ELF 파일로부터 구조 이미지 파일을 생성하고 구조 이미지를 학습하는 단계; 대상 펌웨어 부트로더의 구조 이미지와 대응되는 학습된 구조 이미지를 검출하는 단계; 및 검출된 각 구조 이미지에 딥러닝 알고리즘을 적용하여 상기 대상 펌웨어 부트로더의 정상 여부에 대한 진단을 수행하는 단계;를 포함할 수 있다.The firmware bootloader diagnosis method according to an embodiment of the present invention to solve the above-described problem includes the steps of generating an ELF (Executable and Linkable Format) file for each hardware type and function of the learning firmware bootloader; Generating a structural image file from the generated ELF file using a reverse engineering tool and learning the structural image; Detecting a learned structure image corresponding to the structure image of the target firmware bootloader; and performing a diagnosis as to whether the target firmware bootloader is normal by applying a deep learning algorithm to each detected structure image.
본 발명의 일실시예에 따른 펌웨어 부트로더 진단 방법에 따르면, 상기 대상 펌웨어 부트로더의 ELF 파일을 생성하는 단계; 및 역공학 도구를 이용하여 생성한 대상 펌웨어 부트로더의 ELF 파일로부터 구조 이미지 파일을 생성하고 구조 이미지로 변환하는 단계;를 더 포함할 수 있다.According to the firmware bootloader diagnosis method according to an embodiment of the present invention, generating an ELF file of the target firmware bootloader; and generating a structure image file from the ELF file of the target firmware bootloader created using a reverse engineering tool and converting it into a structure image.
본 발명의 일실시예에 따른 펌웨어 부트로더 진단 방법에 따르면, 상기 학습하는 단계는, 생성된 구조 이미지 파일을 펌웨어 부트로더의 개별 기능에 대한 이미지와 각 기능별 처리에 대한 순서를 표시하는 그래픽이 포함된 이미지로 변환하는 단계;를 포함할 수 있다.According to the firmware bootloader diagnosis method according to an embodiment of the present invention, the learning step includes images of individual functions of the firmware bootloader and graphics displaying the processing order for each function in the generated structure image file. It may include a step of converting to an image.
본 발명의 일실시예에 따른 펌웨어 부트로더 진단 방법에 따르면, 상기 학습하는 단계는, 상기 변환된 이미지로부터 추출된 공간적인 특징을 이용하여 학습 모델을 생성하는 단계;를 포함할 수 있다.According to the firmware bootloader diagnosis method according to an embodiment of the present invention, the learning step may include generating a learning model using spatial features extracted from the converted image.
**
*본 발명의 일실시예에 따른 펌웨어 부트로더 진단 방법에 따르면, 상기 검출된 구조 이미지에 기초하여 상기 딥러닝 적용을 위한 데이터 세트를 생성하는 단계;를 더 포함할 수 있다.*According to the firmware bootloader diagnosis method according to an embodiment of the present invention, it may further include generating a data set for applying the deep learning based on the detected structure image.
본 발명의 일실시예에 따른 펌웨어 부트로더 진단 장치는, 학습용 펌웨어 부트로더의 하드웨어 종류 및 기능별로 제1 ELF 파일을 생성하는 제1 파일 생성부; 역공학 도구를 이용하여, 상기 생성한 제1 ELF 파일로부터 제1 구조 이미지 파일을 생성하는 제2 파일 생성부; 상기 제1 구조 이미지 파일에 기초하여 구조 이미지를 학습하는 학습부; 대상 펌웨어 부트로더의 구조 이미지와 대응되는 학습된 구조 이미지를 각각 검출하는 이미지 검출부; 및 검출된 각 구조 이미지에 딥러닝 알고리즘을 적용하여 상기 대상 펌웨어 부트로더의 정상 여부에 대한 진단을 수행하는 진단부;를 포함할 수 있다.A firmware bootloader diagnostic device according to an embodiment of the present invention includes a first file generator that generates a first ELF file for each hardware type and function of a learning firmware bootloader; a second file generator that generates a first structure image file from the generated first ELF file using a reverse engineering tool; a learning unit that learns a structure image based on the first structure image file; An image detection unit that detects the structure image of the target firmware bootloader and the corresponding learned structure image, respectively; and a diagnostic unit that applies a deep learning algorithm to each detected structure image to diagnose whether the target firmware bootloader is normal.
본 발명의 일실시예에 따른 펌웨어 부트로더 진단 장치에 따르면, 상기 제1 파일 생성부는, 상기 대상 펌웨어 부트로더의 하드웨어 종류 및 기능별로 제2 ELF 파일을 더 생성하고, 상기 제2 파일 생성부는, 역공학 도구를 이용하여, 상기 생성한 제2 ELF 파일로부터 제2 구조 이미지 파일을 더 생성할 수 있다.According to the firmware bootloader diagnosis device according to an embodiment of the present invention, the first file generator further generates a second ELF file for each hardware type and function of the target firmware bootloader, and the second file generator: Using a reverse engineering tool, a second structural image file can be further created from the generated second ELF file.
본 발명의 일실시예에 따른 펌웨어 부트로더 진단 장치에 따르면, 상기 학습부는, 상기 생성된 제1 구조 이미지 파일을 학습용 펌웨어 부트로더의 개별 기능에 대한 이미지와 각 기능별 처리에 대한 순서를 표시하는 그래픽이 포함된 이미지로 변환할 수 있다.According to the firmware bootloader diagnostic device according to an embodiment of the present invention, the learning unit converts the generated first structure image file into images for individual functions of the learning firmware bootloader and graphics displaying the order of processing for each function. It can be converted to an image containing this.
본 발명의 일실시예에 따른 펌웨어 부트로더 진단 장치에 따르면, 상기 학습부는, 상기 변환된 이미지로부터 추출된 공간적인 특징을 이용하여 학습 모델을 생성할 수 있다.According to the firmware bootloader diagnostic device according to an embodiment of the present invention, the learning unit may generate a learning model using spatial features extracted from the converted image.
본 발명의 일실시예에 따른 펌웨어 부트로더 진단 장치에 따르면, 상기 검출된 구조 이미지에 기초하여 상기 딥러닝 적용을 위한 데이터 세트를 생성하는 데이터 생성부;를 더 포함할 수 있다.According to the firmware bootloader diagnostic device according to an embodiment of the present invention, it may further include a data generator that generates a data set for applying the deep learning based on the detected structure image.
상기와 같은 본 발명에 따르면 아래에 기재된 효과를 얻을 수 있다. 다만, 본 발명을 통해 얻을 수 있는 효과는 이에 제한되지 않는다.According to the present invention as described above, the effects described below can be obtained. However, the effects that can be achieved through the present invention are not limited to this.
첫째, 부트로더 파일에 대한 역공학을 통하여 생성되는 구조 이미지 파일에 대하여 딥러닝 알고리즘을 적용하여, 부트로더에 존재하는 정상적이지 않은 이상 기능 내지 취약점 여부를 자동으로 진단하고 예측하는 방법 및 장치를 제공할 수 있는 효과가 있다.First, we provide a method and device to automatically diagnose and predict abnormal functions or vulnerabilities in the bootloader by applying a deep learning algorithm to the structural image file created through reverse engineering of the bootloader file. There is an effect that can be done.
둘째, 상기와 같이 딥러닝 알고리즘의 학습을 통하여 인간의 개입을 최소화하면서 부트로더의 정상 여부를 자동으로 진단하는 방법 및 장치를 제공할 수 있는 효과가 있다.Second, as described above, there is an effect of providing a method and device for automatically diagnosing whether the bootloader is normal while minimizing human intervention through learning of a deep learning algorithm.
도 1은 본 발명의 일실시예에 따른 펌웨어 부트로더 정상 여부 진단 장치의 구성 블록도이다.
도 2는 본 발명의 일실시예에 따른 펌웨어의 부트로더 정상 여부 자동 진단 방법을 설명하기 위해 도시한 순서도이다.
도 3은 본 발명의 일실시예에 따른 펌웨어의 부트로더 정상 여부 자동 진단에 이용되는 역공학 구조 이미지 생성 방법을 설명하기 위해 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 펌웨어 부트로더 역공학 구조 이미지 파일 분류를 위해 검출된 구조도 이미지 후보를 설명하기 위해 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 딥러닝 알고리즘을 적용하여 부트로더 구조 이미지를 학습하는 과정을 설명하기 위해 도시한 도면이다.
도 6과 7은 본 발명의 일실시예에 따른 펌웨어 구조별 항목 분류를 설명하기 위해 도시한 도면이다.
도 8 내지 10은 본 발명의 일실시예에 따른 역공학 이미지를 설명하기 위해 도시한 도면이다. Figure 1 is a block diagram of a device for diagnosing whether a firmware bootloader is normal according to an embodiment of the present invention.
Figure 2 is a flowchart illustrating a method for automatically diagnosing whether the bootloader of firmware is normal according to an embodiment of the present invention.
Figure 3 is a diagram illustrating a method for generating a reverse engineering structure image used to automatically diagnose whether the bootloader of firmware is normal according to an embodiment of the present invention.
FIG. 4 is a diagram illustrating a structure image candidate detected for classifying a firmware bootloader reverse engineering structure image file according to an embodiment of the present invention.
Figure 5 is a diagram illustrating a process of learning a bootloader structure image by applying a deep learning algorithm according to an embodiment of the present invention.
Figures 6 and 7 are diagrams to explain item classification by firmware structure according to an embodiment of the present invention.
Figures 8 to 10 are diagrams to explain a reverse engineering image according to an embodiment of the present invention.
이하, 본 발명에 따른 바람직한 실시 형태를 첨부된 도면을 참조하여 상세하게 설명한다. 첨부된 도면과 함께 이하에 개시될 상세한 설명은 본 발명의 예시적인 실시형태를 설명하고자 하는 것이며, 본 발명이 실시될 수 있는 유일한 실시형태를 나타내고자 하는 것이 아니다.Hereinafter, preferred embodiments according to the present invention will be described in detail with reference to the attached drawings. The detailed description set forth below in conjunction with the accompanying drawings is intended to illustrate exemplary embodiments of the invention and is not intended to represent the only embodiments in which the invention may be practiced.
단지 본 실시예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전히 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.These embodiments are provided solely to ensure that the disclosure of the present invention is complete and to fully inform those skilled in the art of the present invention of the scope of the invention, and that the present invention will be defined by the scope of the claims. It's just that.
몇몇의 경우, 본 발명의 개념이 모호해지는 것을 피하기 위하여 공지의 구조 및 장치는 생략되거나, 각 구조 및 장치의 핵심기능을 중심으로 한 블록도 형식으로 도시될 수 있다. 또한, 본 명세서 전체에서 동일한 구성요소에 대해서는 동일한 도면 부호를 사용하여 설명한다.In some cases, in order to avoid ambiguity of the concept of the present invention, well-known structures and devices may be omitted or may be shown in block diagram form focusing on the core functions of each structure and device. In addition, the same components are described using the same reference numerals throughout this specification.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함(comprising 또는 including)"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. Throughout the specification, when a part is said to “comprise or include” a certain element, this means that it does not exclude other elements but may further include other elements, unless specifically stated to the contrary. do.
또한, 명세서에 기재된 "??부"의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 나아가, "일(a 또는 an)", "하나(one)", 및 유사 관련어는 본 발명을 기술하는 문맥에 있어서 본 명세서에 달리 지시되거나 문맥에 의해 분명하게 반박되지 않는 한, 단수 및 복수 모두를 포함하는 의미로 사용될 수 있다.Additionally, the term "unit" used in the specification refers to a unit that processes at least one function or operation, and may be implemented as hardware, software, or a combination of hardware and software. Furthermore, the terms “a” or “an”, “one”, and similar related terms may be used in the singular and plural in the context of describing the present invention, unless otherwise indicated herein or clearly contradicted by context. It can be used in a meaning that includes.
아울러, 본 발명의 실시예들에서 사용되는 특정(特定) 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.In addition, specific terms used in the embodiments of the present invention are provided to aid understanding of the present invention, and unless otherwise defined, all terms used herein, including technical or scientific terms, refer to the present invention. It has the same meaning as generally understood by those with ordinary knowledge in the technical field to which it belongs. The use of these specific terms may be changed to other forms without departing from the technical spirit of the present invention.
이하 본 발명에 따른 딥러닝 알고리즘(deep-learning algorithm)을 통하여 부트로더(Bootloader)에 존재하는 정상적이지 않은 기능, 취약점 여부 등을 자동 진단 및 예측하는 방법 및 장치 내지 시스템에 대한 실시예들에 대해 설명한다.Hereinafter, embodiments of a method, device, or system for automatically diagnosing and predicting abnormal functions and vulnerabilities in a bootloader through a deep-learning algorithm according to the present invention will be described. Explain.
이하 본 명세서에서는, 본 발명의 이해를 돕고 설명의 편의를 위하여, 펌웨어(firmware) 부트로더를 일실시예로 하여 설명하나, 본 발명은 이에 한정되는 것은 아니며, 펌웨어 디바이스 드라이버(device driver), 디바이스용 소형 운영체제(OS: operating system), 해당 디바이스에서 구동되는 응용 소프트웨어(application software)에도 적용 가능하다. 즉, 본 발명은 펌웨어를 진단하는 시스템에 적용될 수 있다.Hereinafter, in this specification, to help understand the present invention and for convenience of explanation, the firmware bootloader is described as an example, but the present invention is not limited thereto, and includes a firmware device driver, a device It can also be applied to small operating systems (OS) and application software running on the device. That is, the present invention can be applied to a system that diagnoses firmware.
첨부된 도면을 참조하여 본 발명의 다양한 실시예를 설명한다.Various embodiments of the present invention will be described with reference to the attached drawings.
도 1은 본 발명의 일실시예에 따른 펌웨어의 부트로더 정상 여부 진단 장치(100)의 구성 블록도이다.Figure 1 is a block diagram of a device 100 for diagnosing whether the bootloader of firmware is normal according to an embodiment of the present invention.
도 1을 참조하면, 펌웨어의 부트로더 정상 여부 진단 장치(100)는, 파일 수신부(110), 제1 파일 생성부(120), 제2 파일 생성부(130), 학습부(140), 이미지 검출부(150), 데이터 생성부(160), 진단부(170), 및 메모리(180)를 포함할 수 있다.Referring to FIG. 1, the device 100 for diagnosing whether the bootloader of the firmware is normal includes a file receiving unit 110, a first file generating unit 120, a second file generating unit 130, a learning unit 140, and an image. It may include a detection unit 150, a data generation unit 160, a diagnosis unit 170, and a memory 180.
파일 수신부(110)는, 대상(target) 펌웨어의 부트로더에 대한 데이터를 수신할 수 있다. 파일 수신부(110)는, 딥러닝 학습을 위한 학습용 펌웨어의 부트로더에 대한 데이터를 수신할 수 있다. 딥러닝 학습을 위한 펌웨어의 부트로더에 대한 데이터는, 공개 데이터베이스, 펌웨어의 부트로더 제작사 등으로부터 획득 또는 수신할 수 있다.The file receiving unit 110 may receive data about the bootloader of the target firmware. The file receiving unit 110 may receive data about the bootloader of learning firmware for deep learning learning. Data on the bootloader of firmware for deep learning learning can be obtained or received from public databases, firmware bootloader manufacturers, etc.
파일 수신부(110)는, 대상 펌웨어의 부트로더 또는/및내지 딥러닝 학습을 위한 펌웨어의 부트로더에 대한 데이터를 수신하기 위하여 필요한 인터페이스 환경을 제공할 수 있다. The file receiving unit 110 may provide an interface environment necessary to receive data about the bootloader of target firmware and/or the bootloader of firmware for deep learning learning.
제1 파일 생성부(120)는, 대상 펌웨어의 부트로더와 학습용 펌웨어의 부트로더에 데이터로부터 각각 부트로더의 하드웨어 종류, 기능별로 제1 포맷의 파일을 생성할 수 있다. 이 때, 상기 제1 포맷은, 디버그(debug) 목적으로 역공학 도구에서 이용될 ELF(Executable and Linkable Format) 파일 포맷(file format)을 일실시예로 하나한다. 다만, 본 발명은 이러한 파일 포맷에 한정되는 것은 아니다지 않는다. The first file generator 120 may generate a file in a first format for each hardware type and function of the bootloader from data in the bootloader of the target firmware and the bootloader of the learning firmware. At this time, the first format is an ELF (Executable and Linkable Format) file format to be used in a reverse engineering tool for debug purposes. However, the present invention is not limited to these file formats.
제2 파일 생성부(130)는, 대상 펌웨어의 부트로더에 대한 정상 여부 자동 진단을 위하여, 제1 파일 생성부(120)에서 상기 대상 펌웨어의 부트로더에 대해 생성된 제1 파일 및 상기 학습용 펌웨어의 부트로더에 대해 생성된 제2 파일로부터 각각 제2 포맷의 파일을 생성한다. 이 때, 상기 생성되는 제2 포맷의 파일은 구조 이미지 파일로 명명하여 설명한다. 한편, 제2 파일 생성부(130)는 역공학 도구를 이용하여 구조 이미지 파일을 역공학 도구를 이용하여 생성할 수 있다. 다만, 본 발명은 이에 한정되는 것은 아니다.The second file generator 130 generates the first file for the bootloader of the target firmware in the first file generator 120 and the learning firmware in order to automatically diagnose whether the bootloader of the target firmware is normal. A file of a second format is generated from the second file generated for the boot loader. At this time, the generated file of the second format will be described by being named a structure image file. Meanwhile, the second file generator 130 may generate a structural image file using a reverse engineering tool. However, the present invention is not limited to this.
실시예에 따라서, 파일 수신부(110), 제1 파일 생성부(120) 및 제2 파일 생성부(130) 중 적어도 하나는, 대상 펌웨어의 부트로더와 학습용 펌웨어의 부트로더를 위하여 각각 개별로 구비될 수 있다.Depending on the embodiment, at least one of the file receiving unit 110, the first file generating unit 120, and the second file generating unit 130 is separately provided for a bootloader of the target firmware and a bootloader of the learning firmware. It can be.
학습부(140)는, 실제 딥러닝 학습을 위한 구조 이미지 생성, 즉 제2 파일 생성부(130)에서 생성된 학습용 펌웨어의 부트로더에 대한 구조 이미지 파일을 부트로더의 개별 기능에 대한 이미지와 각 기능별 처리에 대한 순서를 표시하는 이미지로 변환할 수 있다. 상기 변환되는 이미지는, 그래픽(graphic)을 포함할 수 있다.The learning unit 140 generates a structural image for actual deep learning learning, that is, creates a structural image file for the bootloader of the learning firmware generated in the second file generating unit 130 with images for individual functions of the bootloader. It can be converted into an image showing the order of processing for each function. The converted image may include graphics.
학습부(140)는, 변환된 이미지에 대하여 딥러닝 학습을 수행하고, 학습 모델을 생성할 수 있다.The learning unit 140 may perform deep learning learning on the converted image and create a learning model.
이미지 검출부(150)는, 대상 펌웨어의 부트로더에 대한 구조 이미지 파일로부터 구조 이미지를 검출할 수 있다. 이미지 검출부(150)는, 검출되는 대상 펌웨어의 부트로더 파일의 구조 이미지에 대응되는 학습용 펌웨어의 부트로더에 대해 기학습된 구조 이미지를 검출할 수 있다.The image detector 150 may detect a structure image from a structure image file for the bootloader of the target firmware. The image detector 150 may detect a pre-learned structure image for the bootloader of the learning firmware corresponding to the structure image of the bootloader file of the detected target firmware.
데이터 생성부(160)는, 이미지 검출부(150)에서 검출한 펌웨어 부트로더의 구조 이미지에 대한 데이터 세트(data set)를 생성할 수 있다. 상기 생성되는 데이터 세트는, 딥러닝 알고리즘이 적용되는 단위에 기초하여 생성될 수 있다. 실시예에 따라서, 상기 생성되는 데이터는 임의의 단위로 생성될 수 있다.The data generator 160 may generate a data set for the structure image of the firmware bootloader detected by the image detector 150. The generated data set may be generated based on the unit to which the deep learning algorithm is applied. Depending on the embodiment, the generated data may be generated in arbitrary units.
실시예에 따라서, 데이터 생성부(160)는, 대상 펌웨어 부트로더의 정상 여부 진단과 관련하여, 구조상 이상 행동 삽입 여부와 취약점 진단에 대한 정확도 향상을 위해, 펌웨어 부트로더가 구현되는 방식 및 펌웨어 부트로더의 동작 순서 등에서 나타내는 특징을 분석하여, 항목별로 구분되어 딥러닝 알고리즘이 적용될 수 있도록 데이터 세트를 생성할 수 있다.Depending on the embodiment, the data generator 160 determines whether the target firmware bootloader is normal, determines whether structural abnormal behavior is inserted, and improves accuracy in diagnosing vulnerabilities by determining the method in which the firmware bootloader is implemented and the firmware boot. By analyzing the characteristics shown in the loader's operation sequence, etc., a data set can be created so that deep learning algorithms can be applied by dividing each item.
진단부(170)는, 데이터 생성부(160)에서 생성한 데이터 세트에 딥러닝 알고리즘을 적용하여, 대상 펌웨어 부트로더의 정상 여부를 진단할 수 있다. 본 명세서에서 정상 여부라 함은, 펌웨어의 부트로더의 구조상 이상 행동 여부, 취약점, 악성 기능 포함 여부 등을 포괄하는 개념을 말한다.The diagnosis unit 170 may apply a deep learning algorithm to the data set generated by the data generation unit 160 to diagnose whether the target firmware bootloader is normal. In this specification, normality refers to a concept that encompasses whether the bootloader of the firmware behaves abnormally in its structure, whether it contains vulnerabilities, or whether it contains malicious functions.
메모리(180)는, 본 발명과 관련된 다양한 형태의 파일 등을 일시 저장한다. 예를 들어, 메모리(180)는, 딥러닝 학습에 이용된 펌웨어의 부트로더 구조화 이미지 내지 구조화 이미지 파일을 일시 저장할 수 있다. 실시예에 따라서, 메모리(180)는 반드시 1개일 필요는 없으며, 펌웨어의 부트로더 정상 여부 진단 장치에 구비될 필요는 없다. The memory 180 temporarily stores various types of files related to the present invention. For example, the memory 180 may temporarily store a bootloader structured image or structured image file of firmware used for deep learning learning. Depending on the embodiment, the memory 180 does not necessarily need to be one, and does not need to be included in the device for diagnosing whether the bootloader of the firmware is normal.
본 발명에 따른 펌웨어의 부트로더 정상 여부 진단 시스템은, 펌웨어의 부트로더 정상 여부 진단 장치(100)와 사용자 단말(미도시)을 포함할 수 있다. 이 때, 펌웨어의 부트로더 정상 여부 진단 장치(100)는, 서버(server)일 수 있다. 따라서, 온라인을 통하여 적어도 하나의 사용자 단말로부터 대상 펌웨어의 부트로더에 대한 정상 여부 진단 요청을 수신하거나 관련 파일을 수신할 수 있다. 펌웨어의 부트로더 정상 여부 진단 장치(100)와 사용자 단말은 유무선 통신 네트워크를 통해 요청, 파일 등을 송수신하는 데이터 커뮤니케이션을 수행할 수 있다. The system for diagnosing whether the bootloader of firmware is normal according to the present invention may include a device 100 for diagnosing whether the bootloader of firmware is normal and a user terminal (not shown). At this time, the device 100 for diagnosing whether the bootloader of the firmware is normal may be a server. Accordingly, a request to diagnose whether the bootloader of the target firmware is normal or a related file can be received from at least one user terminal online. The device 100 for diagnosing whether the bootloader of the firmware is normal and the user terminal can perform data communication by sending and receiving requests, files, etc. through a wired or wireless communication network.
본 명세서에서는 본 발명의 이해를 돕고 설명의 편의를 위하여 1개의 대상 펌웨어의 부트로더의 정상 여부를 자동 진단하는 것을 예로 하여 설명하나, 이에 한정되는 것은 아니다. In this specification, for the sake of understanding and convenience of explanation, automatic diagnosis of whether the bootloader of one target firmware is normal is used as an example, but is not limited thereto.
본 발명은, 역공학 도구를 통하여 펌웨어의 부트로더에 대한 파일을 구조화 이미지 파일로 변환하여 학습하고, 대상 펌웨어의 부트로더에 학습 결과, 딥러닝 알고리즘을 적용하여 정상 여부를 자동으로 진단 및 예측하는바, 실시예에 따라서, 딥러닝 기반의 학습 모델을 이용하여 동시에 복수의 대상 펌웨어의 부트로더에 대한 정상 여부 진단을 수행할 수도 있다. The present invention learns by converting the file for the bootloader of the firmware into a structured image file through a reverse engineering tool, and applies the learning results and deep learning algorithm to the bootloader of the target firmware to automatically diagnose and predict whether it is normal. However, depending on the embodiment, it is possible to diagnose whether the bootloaders of multiple target firmwares are normal at the same time using a deep learning-based learning model.
도 2는 본 발명의 일실시예에 따른 펌웨어의 부트로더 정상 여부 자동 진단 방법을 설명하기 위해 도시한 순서도이다.Figure 2 is a flowchart illustrating a method for automatically diagnosing whether the bootloader of firmware is normal according to an embodiment of the present invention.
도 2를 참조하여, 전술한 도 1의 펌웨어 부트로더 정상 여부 진단 장치(100)를 이용한 펌웨어 부트로더의 정상 여부 자동 진단 방법을 설명하면, 다음과 같다.Referring to FIG. 2, a method of automatically diagnosing whether the firmware bootloader is normal using the firmware bootloader normality diagnosis device 100 of FIG. 1 described above will be described as follows.
펌웨어 부트로더 정상 여부 진단 장치(100)는, 학습용 펌웨어 부트로더의 하드웨어 종류 및 기능별로 학습제1 ELF 파일을 생성한다(S201).The device 100 for diagnosing whether the firmware bootloader is normal generates a first learning ELF file for each hardware type and function of the learning firmware bootloader (S201).
펌웨어 부트로더 정상 여부 진단 장치(100)는, 역공학 도구를 이용하여 상기 생성한 학습제1 ELF 파일로부터 제1 구조 이미지 파일을 생성한다(S202).The device 100 for diagnosing whether the firmware bootloader is normal generates a first structure image file from the generated first learning ELF file using a reverse engineering tool (S202).
펌웨어 부트로더 정상 여부 진단 장치(100)는, 생성된 제1 구조 이미지 파일을 구조 이미지로 변환하고 학습한다(S203).The device 100 for diagnosing whether the firmware bootloader is normal converts the generated first structure image file into a structure image and learns it (S203).
펌웨어 부트로더 정상 여부 진단 장치(100)는, 대상 펌웨어 부트로더의 구조 이미지와 대응되는 학습된 구조 이미지를 검출한다(S204).The device 100 for diagnosing whether the firmware bootloader is normal detects a learned structure image corresponding to the structure image of the target firmware bootloader (S204).
펌웨어 부트로더 정상 여부 진단 장치(100)는, 검출된 각 구조 이미지에 딥러닝 알고리즘을 적용하여(S205) 상기 대상 펌웨어 부트로더의 정상 여부에 대한 진단을 수행한다(S206).The device 100 for diagnosing whether the firmware bootloader is normal applies a deep learning algorithm to each detected structure image (S205) to diagnose whether the target firmware bootloader is normal (S206).
상기에서, 본 발명의 일실시예에 따른 펌웨어 부트로더 진단 방법은, 대상 펌웨어 부트로더의 제2대상 ELF 파일을 생성하고, 역공학 도구를 이용하여 생성한 대상 펌웨어 부트로더의 제2대상 ELF 파일로부터 제2 구조 이미지 파일을 생성하고, 생성된 제2 구조 이미지 파일을 진단을 위한 구조 이미지로 변환한다.In the above, the firmware bootloader diagnosis method according to an embodiment of the present invention generates a second target ELF file of the target firmware bootloader, and creates a second target ELF file of the target firmware bootloader using a reverse engineering tool. A second structural image file is generated from and the generated second structural image file is converted into a structural image for diagnosis.
실시예에 따라, 전술한 S203 단계에서는, 생성된 제1 구조 이미지 파일을 펌웨어 부트로더의 개별 기능에 대한 이미지와 각 기능별 처리에 대한 순서를 표시하는 그래픽이 포함된 이미지로 변환할 수 있다.Depending on the embodiment, in the above-described step S203, the generated first structure image file may be converted into an image including images for individual functions of the firmware bootloader and graphics indicating the processing order for each function.
실시예에 따라, 전술한 S203 단계에서는, 상기 변환된 이미지로부터 추출된 공간적인 특징을 이용하여 학습 모델을 생성할 수 있다.Depending on the embodiment, in step S203 described above, a learning model may be created using spatial features extracted from the converted image.
실시예에 따라, 본 발명의 일실시예에 따른 펌웨어 부트로더 진단 방법은, 상기 검출된 구조 이미지에 기초하여 데이터 세트를 생성하여 딥러닝 알고리즘을 적용할 수 있다.Depending on the embodiment, the firmware bootloader diagnosis method according to an embodiment of the present invention may generate a data set based on the detected structure image and apply a deep learning algorithm.
도 3은 본 발명의 일실시예에 따른 펌웨어의 부트로더 정상 여부 자동 진단에 이용되는 역공학 구조 이미지 생성 방법을 설명하기 위해 도시한 도면이다.Figure 3 is a diagram illustrating a method for generating a reverse engineering structure image used to automatically diagnose whether the bootloader of firmware is normal according to an embodiment of the present invention.
도 3은, 전술한 부트로더에 대한 역공학 구조 이미지 생성 방법을 설명한다. 도 3은 대상 및/또는 학습용 펌웨어의 부트로더에 대해 적용 가능하다.Figure 3 explains a method of generating a reverse engineering structure image for the bootloader described above. Figure 3 is applicable to the bootloader of the target and/or learning firmware.
먼저, 도 3의 (a)에 도시된 바와 같이, 펌웨어 부트로더 정상 여부 진단 장치(100)는, 펌웨어 부트로더에 대하여, 펌웨어 부트로더의 실행 및 링크 기능 포맷의 파일, 즉 ELF 파일을 생성한다.First, as shown in (a) of FIG. 3, the firmware bootloader normality diagnosis device 100 generates a file in the execution and link function format of the firmware bootloader, that is, an ELF file, for the firmware bootloader. .
다음으로, 도 3의 (b)와 (c)에 도시된 바와 같이, 펌웨어 부트로더 정상 여부 진단 장치(100)는, 생성된 ELF 파일을 역공학 도구를 이용하여 img 파일, 즉 구조화 이미지 파일을 생성한다.Next, as shown in (b) and (c) of FIG. 3, the firmware bootloader normality diagnostic device 100 converts the generated ELF file into an img file, that is, a structured image file, using a reverse engineering tool. Create.
마지막으로, 도 3의 (d)와 (e)에 도시된 바와 같이, 펌웨어 부트로더 정상 여부 진단 장치(100)는, 생성된 구조화 이미지 파일을 분석하여 딥러닝 학습용 이미지를 생성 내지 변환한다. 실시예에 따라, 상기 생성된 구조화 이미지 파일의 분석에도 역공학 도구가 이용될 수 있다. 이렇게 생성 내지 변환된 딥러닝 학습용 이미지에는, 해당 이미지 파일을 개별 기능에 대한 이미지와 각 기능별 처리에 대한 순서를 표시하는 그래픽을 포함하는 이미지가 포함될 수 있다.Finally, as shown in (d) and (e) of FIG. 3, the firmware bootloader normality diagnosis device 100 analyzes the generated structured image file to generate or convert an image for deep learning learning. Depending on the embodiment, a reverse engineering tool may also be used to analyze the generated structured image file. The deep learning learning image created or converted in this way may include an image including images for individual functions of the corresponding image file and graphics indicating the order of processing for each function.
도 4는 본 발명의 일실시예에 따른 펌웨어 부트로더 역공학 구조 이미지 파일 분류를 위해 검출된 구조도 이미지 후보를 설명하기 위해 도시한 도면이다.FIG. 4 is a diagram illustrating a structure image candidate detected for classifying a firmware bootloader reverse engineering structure image file according to an embodiment of the present invention.
도 4에서는, 학습용 펌웨어 부트로더의 역공학 구조 이미지 파일 분류를 위해 검출된 구조도 이미지 후보를 설명한다.In Figure 4, the structure image candidates detected for classifying the reverse engineering structure image file of the learning firmware bootloader are explained.
이러한 구조도 이미지 후보, 즉 딥러닝 적용을 위한 구조 이미지로서 전체 구조 이미지(410)는, 학습용 펌웨어 부트로더의 프로그램의 시작부터 종료까지의 순서 및 예외 처리 부가 기능에 대한 기능과 순서도를 포함하여 구성될 수 있다.This structure image candidate, that is, the overall structure image 410 as a structure image for deep learning application, includes the sequence from start to end of the program of the learning firmware bootloader and functions and flowcharts for exception handling additional functions. It can be.
한편, 전체 구조 이미지로부터 세부적으로 해당 이미지 구조를 상세하게 본 상세 구조 이미지(420)는, 기능별 역할 및 내용에 따라 상세 사항 내용을 제공할 수 있다.Meanwhile, the detailed structure image 420, which looks at the image structure in detail from the overall structure image, can provide detailed content according to the role and content of each function.
도 5는 본 발명의 일실시예에 따른 딥러닝 알고리즘을 적용하여 부트로더 구조 이미지를 학습하는 과정을 설명하기 위해 도시한 도면이다.Figure 5 is a diagram illustrating a process of learning a bootloader structure image by applying a deep learning algorithm according to an embodiment of the present invention.
펌웨어 부트로더 정상 여부 진단 장치(100)는, 도 5에 도시된 바와 같이, 학습용 펌웨어 부트로더에 대하여 생성한 구조 이미지를 학습한다.The device 100 for diagnosing whether the firmware bootloader is normal learns the structure image generated for the learning firmware bootloader, as shown in FIG. 5 .
펌웨어 부트로더 정상 여부 진단 장치(100)는, 의도적이거나 실수로 인한 부트로더의 구조나 실행 순서의 변경, 악성 기능의 삽입 여부 등과 같은 펌웨어 부트로더의 정상 여부를, 도시된 바와 같이 추출된 공간적인 특징을 이용하여 학습모델을 생성함으로써, 기능들 각각을 학습할 수 있다. The device 100 for diagnosing whether the firmware bootloader is normal determines whether the firmware bootloader is normal, such as whether the structure or execution order of the bootloader is changed intentionally or accidentally, or whether a malicious function is inserted, by measuring the extracted spatial data as shown. By creating a learning model using features, each function can be learned.
펌웨어 부트로더 정상 여부 진단 장치(100)는, 해당 구조에 대한 이미지 파일의 공간적인 특징을 추출하고, 이 특징을 이용하여 부트로더에 구조 프레임 특성을 학습하고 검증하는 데이터 세트로 적용한다.The device 100 for diagnosing whether the firmware bootloader is normal extracts spatial characteristics of an image file for the corresponding structure and uses these characteristics to apply them to the bootloader as a data set for learning and verifying structural frame characteristics.
펌웨어 부트로더 정상 여부 진단 장치(100)는, 부트로더 구조에 대한 특징들에 대하여 DNN(Deep Neural Network)을 학습함으로써, 학습 모델을 생성할 수 있다. The device 100 for diagnosing whether the firmware bootloader is normal may generate a learning model by learning a Deep Neural Network (DNN) about the characteristics of the bootloader structure.
상기 부트로더 구조 이미지 각각을 학습하는 단계는 재귀 신경망을 기반으로 상기 구조들에 대해 추출된 공간적인 특징을 이용하여 학습 모델을 생성함으로써, 부트로더 내부의 기능 각각을 학습할 수 있다.In the step of learning each of the bootloader structure images, each function within the bootloader can be learned by creating a learning model using spatial features extracted for the structures based on a recursive neural network.
펌웨어 부트로더 정상 여부 진단 장치(100)는, 계산된 인식 값에 기초하여 미세 기능의 변경 및 처리 순서 등을 인식할 수 있다. 실시예에 따라, 펌웨어 부트로더 정상 여부 진단 장치(100)는, 부트로더 구조 이미지에 포함되는 기능과 순서의 특징을 딥러닝을 활용하여 분석하고 이를 이용하여 부트로더 기능을 인식할 수 있다.The device 100 for diagnosing whether the firmware bootloader is normal may recognize changes in fine functions and processing sequences based on the calculated recognition value. Depending on the embodiment, the device 100 for diagnosing whether the firmware bootloader is normal may analyze the characteristics of functions and sequences included in the bootloader structure image using deep learning and use this to recognize the bootloader function.
실시예에 따라, 펌웨어 부트로더 정상 여부 진단 장치(100)는, 부트로더의 구조적 특징을 모델링(modeling)하여 활용할 수 있기 때문에 성능 측면에서 효과적인 부트로더 동작 인식을 수행할 수 있다.Depending on the embodiment, the device 100 for diagnosing whether the firmware bootloader is normal can perform effective bootloader operation recognition in terms of performance because it can model and utilize the structural characteristics of the bootloader.
본 발명에 적용되는 딥-러닝 기술과 관련하여서는, 공지 기술을 참조할 수 있으며, 본 명세서에서 이에 대한 상세 설명은 생략한다.Regarding the deep-learning technology applied to the present invention, known technologies may be referred to, and detailed description thereof will be omitted in this specification.
도 6과 7은 본 발명의 일실시예에 따른 펌웨어 구조별 항목 분류를 설명하기 위해 도시한 도면이다.Figures 6 and 7 are diagrams to explain item classification by firmware structure according to an embodiment of the present invention.
도 8 내지 10은 본 발명의 일실시예에 따른 역공학 이미지를 설명하기 위해 도시한 도면이다.Figures 8 to 10 are diagrams to explain a reverse engineering image according to an embodiment of the present invention.
도 6과 7에서는, 딥러닝 알고리즘에 추가 정보로 사용 가능한 하드웨어 악성 기능 분류 예시를 도시하였다.Figures 6 and 7 show examples of hardware malicious function classifications that can be used as additional information in deep learning algorithms.
먼저, 미세한 변화에 대한 분별력을 가지기 위하여, 하드웨어 장비와 펌웨어 구성을 하는 중앙 처리 장치, 즉 CPU 코어별로 구분할 수 있다. First, in order to discern minute changes, hardware equipment and firmware configuration can be divided by central processing unit, that is, CPU core.
이때, CPU 코어로는 도 6에 도시된 ARM과 도 7에 도시된 RISC-V를 포함할 수 있으나, 이에 한정되는 것은 아니며, 예를 들어 MIPS 등이 CPU 코어로 포함될 수 있다. At this time, the CPU core may include ARM shown in FIG. 6 and RISC-V shown in FIG. 7, but is not limited thereto. For example, MIPS, etc. may be included as the CPU core.
한편, 도 6 내지 7에 도시된 바와 같이, 각 CPU 코어별로 컴파일 및 빌드 도구를 다르게 사용되므로, 파일 생성 및 구조가 상이한 특징을 가질 수 있다. Meanwhile, as shown in FIGS. 6 and 7, different compilation and build tools are used for each CPU core, so file creation and structure may have different characteristics.
다음으로, 실제 부트로더의 구성 방식 및 흐름은 부트로더를 구성하는 프로그램별로 상이하므로 각각에 대하여 정의를 내릴 수 있다.Next, since the configuration method and flow of the actual bootloader are different for each program that constitutes the bootloader, definitions can be made for each.
실시예에 따라, 첫번째 학습 시에는, 각 CPU 별로 프로그램 구성에 따라서 해당되는 구조 이미지들에 대하여 분류하여 학습을 진행할 수 있다.Depending on the embodiment, during the first learning, the corresponding structural images may be classified and learned according to the program configuration for each CPU.
도 8 내지 10에서는 역공학 도구를 이용한 구조 이미지의 예시를 도시하였다.Figures 8 to 10 show examples of structural images using reverse engineering tools.
도 8은 1단계 부트로더에 대한 역공학 구조 이미지를, 도 9는 2단계 부트로더에 대한 역공학 구조 이미지를, 그리고 도 10은 도 9의 구조를 확대한 상세 역공학 구조 이미지를 도시하였다.FIG. 8 shows a reverse engineering structure image for a first-stage bootloader, FIG. 9 shows a reverse engineering structure image for a second-stage bootloader, and FIG. 10 shows a detailed reverse engineering structure image enlarging the structure of FIG. 9.
한편, 상술한 방법은, 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터 판독 가능 매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터 판독 가능 매체에 여러 수단을 통하여 기록될 수 있다. 본 발명의 다양한 방법들을 수행하기 위한 실행 가능한 컴퓨터 코드를 저장하는 컴퓨터 판독 가능 매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, DVD 등)와 같은 저장 매체를 포함한다.Meanwhile, the above-described method can be written as a program that can be executed on a computer, and can be implemented in a general-purpose digital computer that operates the program using a computer-readable medium. Additionally, the data structure used in the above-described method may be recorded on a computer-readable medium through various means. Computer-readable media storing executable computer code for performing the various methods of the present invention include magnetic storage media (e.g., ROM, floppy disk, hard disk, etc.), optical readable media (e.g., CD-ROM, DVD, etc.) etc.) and other storage media.
본원 발명의 실시예들과 관련된 기술 분야에서 통상의 지식을 가진 자는 상기 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로, 개시된 방법들은 한정적인 관점이 아닌 설명적 관점에서 고려되어야 한다. 본 발명의 범위는 발명의 상세한 설명이 아닌 특허청구 범위에 나타나며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명의 범위에 포함되는 것으로 해석되어야 한다.Those skilled in the art related to the embodiments of the present invention will understand that the above-described material may be implemented in a modified form without departing from its essential characteristics. Therefore, the disclosed methods should be considered from an illustrative rather than a restrictive perspective. The scope of the present invention is indicated in the claims, not the detailed description of the invention, and all differences within the equivalent scope should be construed as being included in the scope of the present invention.
Claims (1)
역공학 도구를 이용하여 상기 생성한 ELF 파일로부터 구조 이미지 파일을 생성하고 구조 이미지를 학습하는 단계;
대상 펌웨어 부트로더의 구조 이미지와 대응되는 학습된 구조 이미지를 검출하는 단계; 및
검출된 각 구조 이미지에 딥러닝 알고리즘을 적용하여 상기 대상 펌웨어 부트로더의 정상 여부에 대한 진단을 수행하는 단계;를 포함하는, 펌웨어 부트로더 진단 방법.Creating an ELF (Executable and Linkable Format) file for each hardware type and function of the learning firmware bootloader;
Creating a structural image file from the generated ELF file using a reverse engineering tool and learning the structural image;
Detecting a learned structure image corresponding to the structure image of the target firmware bootloader; and
A firmware bootloader diagnosis method comprising: applying a deep learning algorithm to each detected structure image to diagnose whether the target firmware bootloader is normal.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020240006168A KR20240011218A (en) | 2020-10-28 | 2024-01-15 | Method of diagnosing bootloader using deep-learning model and apparatus therefor |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200141499A KR20220056688A (en) | 2020-10-28 | 2020-10-28 | Method of diagnosing bootloader using deep-learning model and apparatus therefor |
KR1020230018886A KR20230024954A (en) | 2020-10-28 | 2023-02-13 | Method of diagnosing bootloader using deep-learning model and apparatus therefor |
KR1020240006168A KR20240011218A (en) | 2020-10-28 | 2024-01-15 | Method of diagnosing bootloader using deep-learning model and apparatus therefor |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230018886A Division KR20230024954A (en) | 2020-10-28 | 2023-02-13 | Method of diagnosing bootloader using deep-learning model and apparatus therefor |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20240011218A true KR20240011218A (en) | 2024-01-25 |
Family
ID=81584531
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200141499A KR20220056688A (en) | 2020-10-28 | 2020-10-28 | Method of diagnosing bootloader using deep-learning model and apparatus therefor |
KR1020230018886A KR20230024954A (en) | 2020-10-28 | 2023-02-13 | Method of diagnosing bootloader using deep-learning model and apparatus therefor |
KR1020240006168A KR20240011218A (en) | 2020-10-28 | 2024-01-15 | Method of diagnosing bootloader using deep-learning model and apparatus therefor |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200141499A KR20220056688A (en) | 2020-10-28 | 2020-10-28 | Method of diagnosing bootloader using deep-learning model and apparatus therefor |
KR1020230018886A KR20230024954A (en) | 2020-10-28 | 2023-02-13 | Method of diagnosing bootloader using deep-learning model and apparatus therefor |
Country Status (1)
Country | Link |
---|---|
KR (3) | KR20220056688A (en) |
-
2020
- 2020-10-28 KR KR1020200141499A patent/KR20220056688A/en active Application Filing
-
2023
- 2023-02-13 KR KR1020230018886A patent/KR20230024954A/en active Application Filing
-
2024
- 2024-01-15 KR KR1020240006168A patent/KR20240011218A/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
KR20220056688A (en) | 2022-05-06 |
KR20230024954A (en) | 2023-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109359468B (en) | Vulnerability detection method, device and equipment | |
US8589884B2 (en) | Method and system for identifying regression test cases for a software | |
US7882495B2 (en) | Bounded program failure analysis and correction | |
CN108984416B (en) | Method for evaluating dependency conflict danger level in Maven environment | |
US11934533B2 (en) | Detection of supply chain-related security threats to software applications | |
US11030074B2 (en) | Code update based on detection of change in runtime code during debugging | |
US20210405980A1 (en) | Long method autofix engine | |
CA2811617C (en) | Commit sensitive tests | |
US20150220733A1 (en) | Apparatus and method for detecting a malicious code based on collecting event information | |
CN116756021A (en) | Fault positioning method and device based on event analysis, electronic equipment and medium | |
US10896252B2 (en) | Composite challenge task generation and deployment | |
KR20110067418A (en) | System and method for monitoring and evaluating a self-healing system | |
AU2021251463A1 (en) | Generating performance predictions with uncertainty intervals | |
KR102110735B1 (en) | Method and system for re-generating binary for vulnerability detection | |
KR20240011218A (en) | Method of diagnosing bootloader using deep-learning model and apparatus therefor | |
CN111309311B (en) | Vulnerability detection tool generation method, device, equipment and readable storage medium | |
JP6911928B2 (en) | Hypothesis verification device, hypothesis verification method, and program | |
JP5755861B2 (en) | Test case generation apparatus, test case generation method, and test case generation program | |
CN116383834B (en) | Detection method for source code vulnerability detection tool abnormality and related equipment | |
US20240354233A1 (en) | Method for taking feedback into account in a software test | |
Khan et al. | Analysis of various types of bugs in the object oriented java script language coding | |
CN114201359B (en) | Intelligent active software protection method based on common function and kernel function mixed call control flow graph | |
Wu et al. | Automation Slicing and Testing for in-App Deep Learning Models | |
CN115757119A (en) | Method and device for determining cause of program crash | |
KR20240129928A (en) | Vulnerability detection device, vulnerability detection method and computer program for rust language |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent |