KR101829712B1 - 제어시스템 네트워크 취약점 검출 방법 및 장치 - Google Patents
제어시스템 네트워크 취약점 검출 방법 및 장치 Download PDFInfo
- Publication number
- KR101829712B1 KR101829712B1 KR1020160111682A KR20160111682A KR101829712B1 KR 101829712 B1 KR101829712 B1 KR 101829712B1 KR 1020160111682 A KR1020160111682 A KR 1020160111682A KR 20160111682 A KR20160111682 A KR 20160111682A KR 101829712 B1 KR101829712 B1 KR 101829712B1
- Authority
- KR
- South Korea
- Prior art keywords
- field
- test
- fields
- regular
- field value
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
필드 분류부가, 취약점 검출의 대상이 되는 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 각각의 필드 속성에 기초하여 복수 개의 필드를 복수 개의 속성 별 필드 군으로 분류하는 단계, 테스트 수행부가, 복수 개의 속성 별 필드 군 각각의 필드 속성에 기초하여, 복수 개의 속성 별 필드 군 각각에 포함된 하나 이상의 필드 각각에 대하여 임의의 필드값을 입력하는 테스트를 수행하는 단계 및 취약점 검출부가, 테스트의 결과에 기초하여, 특정 통신 프로토콜의 취약점을 검출하는 단계를 포함하는, 제어시스템 네트워크 취약점 검출 방법 및 이를 위한 장치에 관한 것이다.
Description
본 발명의 실시예들은 제어시스템 네크워크를 위해 활용되는 각각의 통신 프로토콜의 취약점을 검출하여 제어시스템 네트워크의 취약점을 검출하는 제어시스템 네트워크 취약점 검출 방법 및 장치에 관한 것이다.
최근 전력시스템과 IT 기술을 결합한 스마트그리드(Smart Grid)를 실제 전력 환경에 적용하기 위한 노력들이 활발히 진행되고 있다. 이러한 스마트그리드는 외부 네트워크와 연결되는 특징이 있기 때문에, 스마트그리드를 활용하는 경우 기존의 전력시스템에서는 필요하지 않았던 사이버 위협에 대한 대책이 필요한 실정이다.
일반 네트워크 환경에서 사용되는 많은 프로토콜들은 각종 기관 및 단체로부터 취약점 검사가 수행되고 있고, 이를 통해 밝혀진 취약점들을 제거하기 위한 업데이트가 빠르게 적용되고 있다. 하지만 산업제어시스템의 경우 취약점 검사를 수행하여 취약점이 밝혀진 경우에도 경제적인 문제점과 시스템의 가용성을 해칠 수 있다는 우려 때문에 취약점에 대한 업데이트가 빠르게 적용되지 못하고 있다.
이러한 제어시스템 네트워크를 위한 각종 프로토콜에 대한 취약점을 검출하기 위한 방법으로, 정상적이지 않은 입력값에 대한 특정 프로토콜의 반응을 토대로 취약점을 파악하는 방법인 퍼징(Fuzzing) 테스트가 있다.
일반적으로, 퍼징 테스트는 대상 식별을 통해 어떠한 퍼징 방법을 사용할 것인지 결정하고, 정상 입력값에 대한 결과를 식별한 뒤, 정상적이지 않은 입력값을 입력하는 테스트 케이스를 생성하고, 생성된 테스트 케이스를 이용하여 취약점 분석 테스트를 진행한 뒤, 모니터링을 통해 테스트 케이스에 따른 대상 시스템의 반응을 확인하고, 확인 결과에 기초하여 발생한 상황이 취약점인지 판단하는 방법을 통해 수행되게 된다.
이러한, 퍼징 테스트는 테스트에 사용되는 정보에 따라 블랙 박스(Black Box) 테스트, 화이트 박스(White Box) 테스트 및 그레이 박스(Gray Box)테스트로 구분될 수 있으며, 테스트 케이스 생성 방법에 따라 실제 사용되고 있는 패킷을 토대로 각 필드를 변경하여 퍼징 케이스를 생성하는 뮤테이션 기초 퍼징(Mutation Based Fuzzing)과 테스트 수행자가 직접 테스트 케이스를 제작하는 제너레이션 기초 퍼징(Generation Based Fuzzing)으로 구분될 수 있다.
종래에는 이러한 퍼징 테스트를 이용하여 일반적인 네트워크 프로토콜의 취약점을 검출하기 위한 연구가 수행되었으나, 일반적인 네트워크와 산업제어시스템의 속성 및 목적의 차이 때문에 종래의 일반적인 네트워크 프로토콜의 취약점을 검출하기 위한 퍼징 테스트에 대한 연구들을 제어시스템 네트워크의 프로토콜에 적용하는 것은 부적합한 문제가 있다.
본 발명의 목적은, 상기 문제점을 해결하기 위한 것으로, 제어시스템 네트워크의 특정 통신 프로토콜에 포함된 복수 개의 필드를 분류하고, 분류 결과에 기초하여 각각의 필드에 임의의 필드값을 입력하여 특정 통신 프로토콜의 취약점을 검출하는 것을 통해, 제어시스템 네트워크의 취약점을 검출하기 위한 것이다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기한 목적을 달성하기 위하여 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 방법은 필드 분류부가, 취약점 검출의 대상이 되는 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 각각의 필드 속성에 기초하여 복수 개의 필드를 복수 개의 속성 별 필드 군으로 분류하는 단계, 테스트 수행부가, 복수 개의 속성 별 필드 군 각각의 필드 속성에 기초하여, 복수 개의 속성 별 필드 군 각각에 포함된 하나 이상의 필드 각각에 대하여 임의의 필드값을 입력하는 테스트를 수행하는 단계 및 취약점 검출부가, 테스트의 결과에 기초하여, 특정 통신 프로토콜의 취약점을 검출하는 단계를 포함한다.
예를 들어, 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 방법은 분류하는 단계 이전에, 프로토콜 분석부가, 미리 저장된 포맷(Format)과 신택스(Syntax)에 기초하여, 특정 통신 프로토콜의 스팩을 분석하는 단계를 더 포함할 수 있다.
일 실시예에 따라, 속성 별 필드 군은, 하나 이상의 길이(Length) 필드를 포함하는 길이 필드 군, 하나 이상의 내용(Content) 필드를 포함하는 내용 필드 군 및 하나 이상의 레귤러(Regular) 필드를 포함하는 레귤러 필드 군 중 적어도 하나를 포함한다.
예컨대, 길이 필드는, 특정 통신 프로토콜에 포함되는 복수 개의 필드 상에서 자신의 뒤에 위치하는 하나 이상의 필드의 개수를 정상 필드값으로 하는 필드인 것을 특징으로 한다.
예를 들어, 테스트를 수행하는 단계는, 테스트 수행부가 길이 필드 군에 포함된, 하나 이상의 길이 필드 각각에 대하여, 하나 이상의 길이 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트, 하나 이상의 길이 필드가 정의되는 범위에 포함되는 랜덤(Random) 필드값을 입력하는 테스트 및 길이 필드 군에 포함된 제1 길이 필드 및 제2 길이 필드 각각의 정상 필드값을 서로 교환하여 입력하는 테스트 중 적어도 하나의 테스트를 수행하는 제1 테스트 단계를 포함한다.
일 실시예에 따라, 내용 필드는, 특정 통신 프로토콜을 통해 실제로 전송되는 데이터를 정의하기 위한 하나 이상의 필드값을 정상 필드값으로 하는 필드인 것을 특징으로 한다.
예컨대, 테스트를 수행하는 단계는, 테스트 수행부가 내용 필드 군에 포함된, 하나 이상의 내용 필드 각각에 대하여, 하나 이상의 내용 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트, 하나 이상의 내용 필드가 정의되는 범위에 포함되는 랜덤 필드값을 입력하는 테스트 및 하나 이상의 내용 필드가 정의되는 범위의 필드값 중 실제로 사용되지 않는 필드값인 미사용 필드값을 입력하는 테스트 중 적어도 하나의 테스트를 수행하는 제2 테스트 단계를 포함한다.
일 실시예에 따라, 레귤러 필드는, 특정 통신 프로토콜에 포함되는 복수 개의 필드 중 자신의 다음으로 참조할 다음 레귤러 필드를 정의하기 위한 필드값을 정상 필드값으로 하는 필드인 것을 특징으로 한다.
예컨대, 테스트를 수행하는 단계는, 테스트 수행부가 레귤러 필드 군에 포함된, 하나 이상의 레귤러 필드 각각에 대하여, 하나 이상의 레귤러 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트 및 하나 이상의 레귤러 필드가 정의되는 범위에 포함되는 랜덤 필드값을 입력하는 테스트 중 적어도 하나의 테스트를 수행하는 제3 테스트 단계를 포함한다.
일 실시예에 따라, 제3 테스트 단계 이후에, 최대 필드값, 최소 필드값 및 랜덤 필드값 중 적어도 하나가 정상 필드값이 아닐 때, 테스트 수행부가, 하나 이상의 레귤러 필드 중 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 하나 이상의 레귤러 필드인 하나 이상의 오인 동작 레귤러 필드를 추출하는 단계, 테스트 수행부가, 하나 이상의 오인 동작 레귤러 필드 중에서 상호간에 동일한 패킷 내에 포함되도록 결정된 적어도 2개의 오인 동작 레귤러 필드로 구성되는 복수의 오인 동작 레귤러 필드 조합을 생성하는 단계 및 테스트 수행부가, 복수의 오인 동작 레귤러 필드 조합에 대해 상기 제3 테스트를 재수행하는 단계를 더 포함하는 것을 특징으로 한다.
일 실시예에 따라, 취약점을 검출하는 단계에서, 취약점 검출부는, 하나 이상의 필드 각각에 입력된 임의의 필드값 중 특정 통신 프로토콜을 동작 불능 상태에 빠지게 하는 특정 필드값을 해당되는 필드의 취약점으로 검출하는 것을 특징으로 한다.
상기한 목적을 달성하기 위하여 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 장치는, 취약점 검출의 대상이 되는 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 각각의 필드 속성에 기초하여 복수 개의 필드를 복수 개의 속성 별 필드 군으로 분류하는 필드 분류부, 복수 개의 속성 별 필드 군 각각의 필드 속성에 기초하여, 복수 개의 속성 별 필드 군 각각에 포함된 하나 이상의 필드 각각에 대하여 임의의 필드값을 입력하는 테스트를 수행하는 테스트 수행부 및 테스트의 결과에 기초하여, 특정 통신 프로토콜의 취약점을 검출하는 취약점 검출부를 포함한다.
예를 들어, 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 장치는 미리 저장된 포맷(Format)과 신택스(Syntax)에 기초하여, 특정 통신 프로토콜의 스팩을 분석하는 프로토콜 분석부를 더 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 첨부 도면들에 포함되어 있다.
본 발명의 일 실시예에 따르면, 제어시스템의 네트워크를 위한 특정 통신 프로토콜에 포함된 복수 개의 필드를 분류하고, 분류 결과에 기초하여 각각의 필드에 임의의 필드값을 입력하여 특정 통신 프로토콜의 취약점을 검출하여, 제어시스템의 통신 프로토콜의 취약점을 검출하여 제어시스템 네트워크의 취약점을 제어시스템에 최적화된 상태에서 효율적으로 검출할 수 있다.
나아가, 본 발명의 일 실시예에 따르면, 제어시스템의 네트워크를 위한 특정 통신 프로토콜에 포함된 복수 개의 필드를 분류하여 특정 통신 프로토콜의 취약점을 검출하기 때문에, 테스트 대상 필드의 수를 감소시킬 수 있다.
도 1은 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 장치를 설명하기 위한 구성도이다.
도 2는 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법 및 장치에서, 통신 프로토콜, 필드 및 속성 별 필드 군을 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법 및 장치에서, 통신 프로토콜, 필드 및 속성 별 필드 군을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법에서, 테스트 수행 단계 중 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법 및 장치에서 레귤러 필드를 설명하기 위한 도면이다.
도 7은 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 방법에서, 테스트 수행 단계 중 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 방법을 설명하기 위한 도면이다.
도 2는 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법 및 장치에서, 통신 프로토콜, 필드 및 속성 별 필드 군을 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법 및 장치에서, 통신 프로토콜, 필드 및 속성 별 필드 군을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법에서, 테스트 수행 단계 중 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법 및 장치에서 레귤러 필드를 설명하기 위한 도면이다.
도 7은 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 방법에서, 테스트 수행 단계 중 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 방법을 설명하기 위한 도면이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
이하, 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 방법 및 장치를 첨부된 도면을 참조하여 상세하게 설명하면 아래와 같다.
이하, 도 1을 참조하여, 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 장치(100)의 구성을 설명한다.
도 1은 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 장치를 설명하기 위한 구성도이다.
도 1에 도시된 바와 같이, 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 장치(100)는 프로토콜 분석부(110), 필드 분류부(120), 테스트 수행부(130) 및 취약점 검출부(140)를 포함한다.
일 실시예에 따라, 제어시스템 네트워크 취약점 검출 장치(100)는 제어시스템 네트워크를 위한 통신 프로토콜에 대한 분석을 통해 통신 프로토콜의 취약점을 검출하여, 제어시스템 네트워크의 취약점을 검출할 수 있다.
예를 들어, 통신 프로토콜의 취약점이 제어시스템 네트워크의 취약점으로 정의될 수 있다.
일 실시예에 따라, 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 장치(100)는 제어시스템 중 산업제어시스템의 네트워크 취약점을 검출하기 위하여, 산업제어시스템의 통신 프로토콜의 취약점을 검출할 수도 있다.
이하, 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 장치(100)가 제어시스템 네트워크의 취약점을 검출하기 위하여, 통신 프로토콜의 취약점을 검출하는 동작에 대해 설명한다.
프로토콜 분석부(110)는 미리 저장된 포맷(Format)과 신택스(Syntax)에 기초하여, 특정 통신 프로토콜의 스팩을 분석한다.
필드 분류부(120)는 취약점 검출의 대상이 되는 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 각각의 필드 속성에 기초하여 복수 개의 필드를 복수 개의 속성 별 필드 군으로 분류한다.
테스트 수행부(130)는 복수 개의 속성 별 필드 군 각각의 필드 속성에 기초하여, 복수 개의 속성 별 필드 군 각각에 포함된 하나 이상의 필드 각각에 대하여 임의의 필드값을 입력하는 테스트를 수행한다.
취약점 검출부(140)는 테스트 수행부(130)의 테스트의 결과에 기초하여, 특정 통신 프로토콜의 취약점을 검출한다.
본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 장치(100)에 대한 보다 구체적은 설명은, 이하 도 2 내지 도 6을 참조하여 후술하도록 하며, 중복되는 설명은 생략한다.
이제 도 2를 참조하여, 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 방법을 설명한다.
도 2는 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법을 설명하기 위한 순서도이다.
일 실시예에 따르면, 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법은, 제어시스템 네트워크의 취약점을 검출하기 위하여, 제어시스템의 통신 프로토콜의 취약점을 검출하여, 통신 프로토콜의 취약점을 제어시스템 네트워크의 취약점으로 설정할 수 있다.
도 2에 도시된 바와 같이, 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법은 복수 개의 필드를 복수 개의 속성별 필드 군으로 분류하는 단계(S210), 하나 이상의 필드 각각에 대하여 임의의 필드값을 입력하는 테스트를 수행하는 단계(S230) 및 특정 통신 프로토콜의 취약점을 검출하는 단계(S250)를 포함한다.
나아가, 도면에 도시되지는 않았지만, 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법은 특정 통신 프로토콜의 스팩을 분석하는 단계(미도시)를 더 포함할 수 있다.
일 실시예에 따라, 특정 통신 프로토콜의 스팩을 분석하는 단계(미도시)는 S210 단계 이전에 수행될 수 있다.
특정 통신 프로토콜의 스팩을 분석하는 단계(미도시)에서 프로토콜 분석부(110)는, 미리 저장된 포맷(Format)과 신택스(Syntax)에 기초하여, 취약점 검출의 대상이 되는 특정 통신 프로토콜의 스팩을 분석한다.
예컨대, 프로토콜 분석부(110)는 미리 저장된 포맷(Format)과 신택스(Syntax)에 기초하여 특정 통신 프로토콜의 종류, 특정 통신 프로토콜의 길이, 특정 통신 프로토콜에 포함되는 필드의 종류, 특정 통신 프로토콜에 포함되는 필드의 개수, 특정 통신 프로토콜에 CRC 필드가 포함되는지 여부에 대한 정보를 비롯한 특정 통신 프로토콜의 각종 스팩을 분석할 수 있다.
일 실시예에 따라, 프로토콜 분석부(110)는 미리 저장된 복수의 통신 프로토콜 각각의 포맷과 신택스를 특정 통신 프로토콜의 포맷과 신택스와 비교하여 취약점 검출의 대상이 되는 특정 통신 프로토콜이 어떤 통신 프로토콜인지를 확인할 수도 있다.
예를 들어, 통신 프로토콜에는 CRC 필드를 비롯하여 필드값이 정상 필드값인지 확인하는 필드들이 존재하는 경우가 있기 때문에, 통신 프로토콜에 포함된 각각의 필드에 임의의 필드값을 입력하여 특정 통신 프로토콜에 대한 취약점을 검출하기 위하여, 프로토콜 분석부(110)는 특정 통신 프로토콜에 CRC 필드가 존재하는지 여부를 확인할 수 있다.
일 실시예에 따라, 통신 프로토콜에 필드값이 정상 필드값인지 확인하는 필드인 CRC 필드가 포함되는 경우, 해당되는 통신 프로토콜에 포함된 하나 이상의 필드에 임의의 필드값을 입력하는 퍼징(Fuzzing) 테스트를 수행하는 경우, CRC 필드는 해당되는 임의의 필드값을 드롭시키기 때문에, CRC 필드가 임의의 필드값을 드롭시키지 않도록 하기 위하여 프로토콜 분석부(110)는 특정 통신 프로토콜에 CRC 필드가 존재하는지 여부를 확인할 수 있다.
S210 단계에서, 필드 분류부(120)는, 취약점 검출의 대상이 되는 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 각각의 필드 속성에 기초하여 복수 개의 필드를 복수 개의 속성 별 필드 군으로 분류한다.
S210 단계에서, 필드 분류부(120)가 취약점 검출의 대상이 되는 특정 통신 프로토콜에 포함되는 복수 개의 필드를 각각의 필드 속성에 기초하여 분류할 경우 필드들은 속성 별 필드 군 마다 동일한 특성을 가지게 되며, 필드를 분류한 이후로는 더 이상 해당 필드가 어떠한 프로토콜에 해당하는지에 대해 고려하지 않고 취약점을 검출하는 테스트를 진행 할 수 있기 때문에 산업제어시스템에 포함된 다양한 통신 프로토콜을 대상으로 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 방법 및 장치를 적용할 때, 간단하게 테스트 케이스를 생성할 수 있게 된다.
일 실시예에 따라, 복수 개의 속성 별 필드 군은, 하나 이상의 길이(Length) 필드를 포함하는 길이 필드 군, 하나 이상의 내용(Content) 필드를 포함하는 내용 필드 군 및 하나 이상의 레귤러(Regular) 필드를 포함하는 레귤러 필드 군 중 적어도 하나를 포함할 수 있다.
일 실시예에 따라, 길이 필드는, 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 상에서 자신의 뒤에 위치하는 하나 이상의 필드의 개수를 정상 필드값으로 하는 필드를 의미할 수 있다.
예를 들어, 내용 필드는, 특정 통신 프로토콜을 통해 실제로 전송되는 데이터를 정의하기 위한 하나 이상의 필드값을 정상 필드값으로 하는 필드를 의미할 수 있다.
예컨대, 레귤러 필드는, 특정 통신 프로토콜에 포함되는 복수 개의 필드 중 자신의 다음으로 참조할 다음 레귤러 필드를 정의하기 위한 필드값을 정상 필드값으로 하는 필드를 의미할 수 있다.
이제 도 2, 도 3 및 도 4를 동시에 참조하여, 통신 프로토콜, 필드 분류부(120)가 분류한 속성 별 필드 군, 길이 필드, 내용 필드 및 레귤러 필드의 일 실시예에 대하여 설명하도록 한다.
도 3 및 도 4는 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법 및 장치에서, 통신 프로토콜, 필드 및 속성 별 필드 군을 설명하기 위한 도면이다.
보다 상세하게, 도 3은 산업제어시스템 통신 프로토콜 중 TPKT 프로토콜과 COTP 프로토콜에 포함된 각각의 필드들을 필드 속성에 기초하여 분류한 결과를 도시하고, 도 4는 산업제어시스템 통신 프로토콜 중 MMS Read Request 프로토콜에 포함된 각각의 필드들을 필드 속성에 기초하여 분류한 결과를 도시한다.
한편, 도 3 및 도 4 각각에 도시된 통신 프로토콜에 포함된 복수 개의 필드 각각은 1Byte 크기의 필드값을 가질 수 있다.
이때, 도 3 및 도 4 각각에 도시된 TPKT 프로토콜, COTP 프로토콜 및 MMS Read Request 프로토콜과 통신 프로토콜에 포함된 복수 개의 필드 각각의 필드값의 크기인 1Byte는 일 실시예로, 본 발명에 실시된 제어시스템 네트워크 취약점 검출 방법 및 장치는 이외에도 제어시스템의 네트워크를 위한 각종 통신 프로토콜의 취약점을 검출할 수 있으며, 다양한 크기의 필드에 대해서도 취약점을 검출할 수 있다.
도 3에 도시된 바와 같이, TPKT 프로토콜은 "Version 필드", "Reserved 필드" 및 2개의 "Length 필드"를 포함할 수 있다.
일 실시예에 따라, "Version 필드"는 16진수 "03"을 정상 필드값으로 하는 필드, "Reserved 필드"는 16진수 "00"을 정상 필드값으로 하는 필드, 2 개의 "Length 필드" 각각은 16진수 "00"과 "FF"를 정상 필드값으로 하는 필드일 수 있다.
이 경우, S210 단계에서 필드 분류부(120)는 TPKT 프로토콜에 포함된 필드 중 "Version 필드", "Reserved 필드" 각각의 필드 속성이 레귤러 필드임을 확인하고 해당되는 필드들을 레귤러 필드 군(12)으로 분류할 수 있다.
마찬가지로, S210 단계에서 필드 분류부(120)는 TPKT 프로토콜에 포함된 필드 중 2개의 "Length 필드" 각각의 필드 속성이 길이 필드임을 확인하고 해당되는 필드들을 길이 필드 군(10)으로 분류할 수 있다.
도 3에 도시된 바와 같이, COTP 프로토콜은 "L1(Length) 필드", "Type/CDT 필드" 및 "TPDU/EOT 필드"를 포함할 수 있다.
일 실시예에 따라, "L1(Length) 필드"는 16진수 "02"를 정상 필드값으로 하는 필드, "Type/CDT 필드"는 16진수 "F0"을 정상 필드값으로 하는 필드, "TPDU/EOT 필드"는 16진수 "80"을 정상 필드값으로 하는 필드일 수 있다.
이 경우, S210 단계에서 필드 분류부(120)는 COTP 프로토콜에 포함된 필드 중 "Type/CDT 필드", "TPDU/EOT 필드" 각각의 필드 속성이 레귤러 필드임을 확인하고 해당되는 필드들을 레귤러 필드 군(12)으로 분류할 수 있다.
마찬가지로, S210 단계에서 필드 분류부(120)는 COTP 프로토콜에 포함된 필드 중 "L1(Length) 필드"의 필드 속성이 길이 필드임을 확인하고 해당되는 필드들을 길이 필드 군(10)으로 분류할 수 있다.
도 4에 도시된 바와 같이, S210 단계의 수행결과 MMS Read Request 프로토콜은 길이 필드 군(10)에 포함되는 총 8개의 길이 필드, 내용 필드 군(11)에 포함되는 총 12개의 내용 필드 및 레귤러 필드 군(12)에 포함되는 총 8개의 레귤러 필드를 각각 포함할 수 있다.
이제 도 4를 계속 참조하여, 길이 필드 군(10)에 포함되는 길이 필드, 내용 필드 군(11)에 포함되는 내용 필드 및 레귤러 필드 군(12)에 포함되는 레귤러 필드 각각의 필드 속성에 대해 설명한다.
도 4에 도시된 MMS Read Request 프로토콜 중 16진수 "A0"를 필드값으로 가지는 좌측 첫 번째 필드는 레귤러 필드 군(12)에 포함되는 "Confirmed Request" 레귤러 필드일 수 있다.
상술한 바와 같이, 레귤러 필드는, 특정 통신 프로토콜에 포함되는 복수 개의 필드 중 자신의 다음으로 참조할 다음 레귤러 필드를 정의하기 위한 필드값을 정상 필드값으로 하는 필드를 의미한다.
일 실시예에 따라, 레귤러 필드는 정해진 값이 존재하는 기능적인 필드를 의미하며, 레귤러 필드의 필드값은 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 상에서 해당 레귤러 필드 뒤에 위치한 다른 레귤러 필드의 의미에 영향을 줄 수 있다.
예를 들어, "Confirmed Request" 레귤러 필드의 필드값이 16진수 "A0"에서 "A3"으로 변경되는 경우, "Confirmed Request" 레귤러 필드의 다음에 위치한 "invoke ID"레귤러 필드는 인보크 아이디(invoke ID) 기능을 더 이상 수행하지 못하게 되며, 그 결과 "invoke ID"레귤러 필드는 인보크 아이디(invoke ID)를 처리하는 코드가 아닌 다른 영역의 코드를 실행시키게 되기 때문에, "Confirmed Request" 레귤러 필드의 정상 필드값은 16진수 "A0"일 수 있다.
일 실시예에 따라, 레귤러 필드의 필드값은 특정 통신프로토콜에 포함된 각각의 코드를 수행하는 순서를 정의하는 필드를 의미할 수 있다.
도 4에 도시된 MMS Read Request 프로토콜 중 16진수 "1A"를 필드값으로 가지는 좌측 두 번째 필드는 길이 필드 군(10)에 포함되는 길이 필드일 수 있다.
상술한 바와 같이, 길이 필드는, 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 상에서 자신의 뒤에 위치하는 하나 이상의 필드의 개수를 정상 필드값으로 하는 필드를 의미할 수 있다.
일 실시예에 따라, 도 4에 도시된 바와 같이,"1A"를 필드값으로 가지는 좌측 두 번째 길이 필드 뒤에 위치하는 필드의 개수는 26개이며, 그 결과, MMS Read Request 프로토콜 중 좌측 두 번째 길이 필드의 정상 필드값은 26을 16진수로 변환한 값인 "1A"일 수 있다.
도 4에 도시된 MMS Read Request 프로토콜 중 16진수 "31"을 필드값으로 가지는 우측 첫 번째 필드는 내용 필드 군(11)에 포함되는 내용 필드일 수 있다.
상술한 바와 같이 내용 필드는, 특정 통신 프로토콜을 통해 실제로 전송되는 데이터를 정의하기 위한 하나 이상의 필드값을 정상 필드값으로 하는 필드를 의미할 수 있다.
다시 말해, 내용 필드는 특정 통신 프로토콜을 통해 실제로 전송되는 데이터를 정의하기 때문에, 특정한 하나의 필드값을 정상 필드값으로 가지지 않고, 기설정된 범위에 포함되는 하나 이상의 필드값을 정상 필드값으로 할 수 있다.
예컨대, 특정 통신 프로토콜에 포함된 필드가 1Byte의 크기를 가지는 경우, 내용 필드는 16 진수 "00" 내지 16 진수 "FF"사이에 포함된 하나 이상의 필드값들을 정상 필드값으로 가질 수 있다.
일 실시예에 따라, 특정 통신 프로토콜에 포함된 필드가 1Byte의 크기를 가지는 ASCII를 따르는 경우, ASCII는 1Byte의 크기를 16 진수 "00" 내지 16진수 "7F"로 정의하기 때문에, 내용 필드는 16 진수 "00" 내지 16진수 "7F" 사이에 포함된 하나 이상의 필드값들을 정상 필드값으로 가질 수도 있다.
일 실시예에 따라, 특정 통신 프로토콜에 포함된 필드가 1Byte의 크기를 가지는 ASCII를 따르며, ASCII에서 16 진수 "00" 내지 16 진수 "1E"가 미사용 필드값인 경우, 내용 필드는 16 진수 "1F" 내지 16 진수 "7F" 사이에 포함된 하나 이상의 필드값들을 정상 필드값으로 가질 수도 있다.
이제 도 2를 계속 참조하여 S230 단계를 설명한다.
S230 단계에서, 테스트 수행부(130)는, 복수 개의 속성 별 필드 군 각각의 필드 속성에 기초하여, 복수 개의 속성 별 필드 군 각각에 포함된 하나 이상의 필드 각각에 대하여 임의의 필드값을 입력하는 테스트를 수행한다.
일 실시예에 따라, 복수 개의 속성 별 필드 군 각각에 포함된 하나 이상의 필드 각각에 대하여 임의의 필드값을 입력하는 테스트는 일종의 퍼징 테스트를 의미할 수 있다.
상술한 바와 같이, 특정 통신 프로토콜에 포함된 각각의 필드는 정상 필드값을 가지게 되며, 테스트 수행부(130)는 특정 통신 프로토콜에 포함된 각각의 필드에 정상 필드값이 아닌 임의의 필드값을 입력하는 테스트를 수행하여, S250 단계에서 통신 프로토콜의 취약점을 검출하기 위한 테스트 결과를 생성할 수 있다.
일 실시예에 따라, S230 단계에서 테스트 수행부(130)는 길이 필드 군(10), 내용 필드 군(11) 및 레귤러 필드 군(12) 각각에 포함되는 복수 개의 필드 각각에 대하여 기설정된 방법을 통해 생성된 임의의 필드값을 입력하는 테스트를 수행할 수 있다.
예컨대, S230 단계에서 테스트 수행부(130)는 길이 필드 군(10)에 포함된 각각의 길이 필드에 대하여 총 3가지 방법으로 생성된 임의의 필드값을 입력하고, 내용 필드 군(11)에 포함된 각각의 내용 필드에 대하여 총 3가지 방법으로 생성된 임의의 필드값을 입력하고, 레귤러 필드 군(12)에 포함된 각각의 레귤러 필드에 대하여 총 2가지 방법으로 생성된 임의의 필드값을 입력하는 테스트를 각각 수행할 수 있다.
일 실시예에 따라, S230 단계에서, 테스트 수행부(130)는 길이 필드 군(10)에 포함된 하나 이상의 길이 필드 각각에 대하여, 하나 이상의 길이 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트, 하나 이상의 길이 필드가 정의되는 범위에 포함되는 랜덤(Random) 필드값을 입력하는 테스트 및 길이 필드 군에 포함된 제1 길이 필드 및 제2 길이 필드 각각의 정상 필드값을 서로 교환하여 입력하는 테스트 중 적어도 하나의 테스트를 수행하는 제1 테스트 단계를 수행할 수 있다.
일 실시예에 따라, 제1 테스트 중 하나 이상의 길이 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트에서 길이 필드가 1Byte의 크기를 가지는 경우, 테스트 수행부(130)는 길이 필드 군(10)에 포함된 하나 이상의 길이 필드 각각에 대하여, 1Byte의 최대 필드값인 16 진수 "FF" 및 1Byte의 최소 필드값인 16 진수 "00"을 입력할 수 있다.
예컨대, 제1 테스트 중 하나 이상의 길이 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트에서 길이 필드가 1Byte의 크기를 가지는 ASCII를 따르는 경우, 테스트 수행부(130)는 길이 필드 군(10)에 포함된 하나 이상의 길이 필드 각각에 대하여, 1Byte의 최대 필드값인 16 진수 "FF", 1Byte의 최소 필드값인 16 진수 "00", ASCII가 정의한 1Byte의 최대 필드값인 16진수 "7F" 및 ASCII가 정의한 1Byte의 최대 필드값인 16진수 "7F" 보다 1 만큼 큰 필드값인 16 진수 "80"을 입력할 수 있다.
일 실시예에 따라, 제1 테스트 중 하나 이상의 길이 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 길이 필드 군(10)에 포함된 하나 이상의 길이 필드 각각에 입력하는 테스트는 경계값을 입력하는 테스트인 경계값 테스트(Boundary Test)를 의미할 수 있다.
일 실시예에 따라, 제1 테스트 중 하나 이상의 길이 필드가 정의되는 범위에 포함되는 랜덤(Random) 필드값을 입력하는 테스트에서 길이 필드가 1Byte의 크기를 가지는 경우, 테스트 수행부(130)는 길이 필드 군(10)에 포함된 하나 이상의 길이 필드 각각에 대하여 16 진수 "00" 내지 16 진수 "FF" 사이의 값 중 랜덤으로 선별된 값을 입력할 수 있다.
일 실시예에 따라, 제1 테스트 중 하나 이상의 길이 필드가 정의되는 범위에 포함되는 랜덤(Random) 필드값을 길이 필드 군(10)에 포함된 하나 이상의 길이 필드 각각에 입력하는 테스트는 랜덤값을 입력하는 테스트인 랜덤값 테스트(Random Test)를 의미할 수 있다.
일 실시예에 따라, 랜덤값 테스트(Random Test)에서 테스트 수행부(130)는 기설정된 개수의 랜덤 필드값을 길이 필드 군(10)에 포함된 하나 이상의 길이 필드 각각에 입력할 수도 있다.
다시 도 4를 참조하여, 제1 테스트 중 길이 필드 군에 포함된 제1 길이 필드 및 제2 길이 필드 각각의 정상 필드값을 서로 교환하여 입력하는 테스트를 설명한다.
도 4에 도시된 바와 같이, 특정 통신 프로토콜에는 복수 개의 길이 필드가 포함되며, 상술한 바와 같은 길이 필드의 필드 속성 상, 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 상에서 앞에 위치하는 길이 필드의 정상 필드값은 뒤에 위치하는 길이 필드의 정상 필드값보다 큰 값을 가지게 된다.
그 결과, 특정 통신 프로토콜에 포함된 각각의 길이 필드의 정상 필드값을 서로 교환하여 입력하게 되는 경우, 각각의 길이 필드에는 임의의 필드값이 입력되게 되는 것이다.
예컨대, 도 4에 도시된 좌측 7번째 길이 필드는 16 진수 "15"를 정상 필드값으로 가지게 되고, 좌측 9번째 길이 필드는 16 진수 "13"을 정상 필드값으로 가지게 되는데, 테스트 수행부(130)가 제1 테스트 중 길이 필드 군에 포함된 제1 길이 필드 및 제2 길이 필드 각각의 정상 필드값을 서로 교환하여 입력하는 테스트를 수행하는 경우, 도 4에 도시된 좌측 7번째 길이 필드는 16 진수 "13"을 임의의 입력값으로 입력 받게 되고, 좌측 9번?? 길이 필드는 16 진수 "15"를 임의의 입력값으로 입력 받게 된다.
일 실시예에 따라, 제1 테스트 중 길이 필드 군에 포함된 제1 길이 필드 및 제2 길이 필드 각각의 정상 필드값을 서로 교환하여 입력하는 테스트는 치환 테스트(Transposition Test)를 의미할 수 있다.
일 실시예에 따라 S230 단계에서, 테스트 수행부(130)는 내용 필드 군(11)에 포함된, 하나 이상의 내용 필드 각각에 대하여, 하나 이상의 내용 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트, 하나 이상의 내용 필드가 정의되는 범위에 포함되는 랜덤 필드값을 입력하는 테스트 및 하나 이상의 내용 필드가 정의되는 범위의 필드값 중 실제로 사용되지 않는 필드값인 미사용 필드값을 입력하는 테스트 중 적어도 하나의 테스트를 수행하는 제2 테스트 단계를 수행할 수 있다.
여기서, 제2 테스트 중 하나 이상의 내용 필드 각각에 대하여, 하나 이상의 내용 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트 및 하나 이상의 내용 필드가 정의되는 범위에 포함되는 랜덤 필드값을 입력하는 테스트는 상술한 제1 테스트 단계에서 설명된 바와 같으므로 중복되는 설명은 생략한다.
일 실시예에 따라, 제2 테스트 중 하나 이상의 내용 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 내용 필드 군(11)에 포함된 하나 이상의 내용 필드 각각에 입력하는 테스트는 경계값을 입력하는 테스트인 경계값 테스트(Boundary Test)를 의미하고, 제2 테스트 중 하나 이상의 내용 필드가 정의되는 범위에 포함되는 랜덤(Random) 필드값을 내용 필드 군(11)에 포함된 하나 이상의 내용 필드 각각에 입력하는 테스트는 랜덤값을 입력하는 테스트인 랜덤값 테스트(Random Test)를 의미할 수 있다.
일 실시예에 따라, 제2 테스트 중 하나 이상의 내용 필드가 정의되는 범위의 필드값 중 실제로 사용되지 않는 필드값인 미사용 필드값을 입력하는 테스트에서 하나 이상의 내용 필드가 1Byte의 크기를 가지는 ASCII에서 정의되는 경우, 하나 이상의 내용 필드가 정의되는 범위의 필드값은 16 진수 "00" 내지 16 진수 "7F"를 의미할 수 있다.
예컨대, 1Byte의 크기를 가지는 ASCII에서 16 진수 "00" 내지 16 진수 "1E"는 실제로 전송되는 데이터를 의미하지 않으며, 실제로 사용되지 않는 필드값인 미사용 필드값을 의미할 수 있다.
이 경우, 제2 테스트 중 하나 이상의 내용 필드가 정의되는 범위의 필드값 중 실제로 사용되지 않는 필드값인 미사용 필드값을 입력하는 테스트에서 테스트 수행부(130)는 내용 필드가 정의되는 범위의 필드값(16 진수 "00" 내지 16 진수"7F") 중 실제로 사용되지 않는 필드값인 미사용 필드값(16 진수 "00" 내지 16 진수 "1E")을 내용 필드 군(11)에 포함된, 하나 이상의 내용 필드 각각에 입력할 수 있다.
일 실시예에 따라, 제2 테스트 중 하나 이상의 내용 필드가 정의되는 범위의 필드값 중 실제로 사용되지 않는 필드값인 미사용 필드값을 내용 필드 군(11)에 포함된 하나 이상의 내용 필드 각각에 입력하는 테스트는 인센스 테스트(Insense Test)를 의미할 수 있다.
일 실시예에 따라 S230 단계에서, 테스트 수행부(130)는 레귤러 필드 군(12)에 포함된, 하나 이상의 레귤러 필드 각각에 대하여, 하나 이상의 레귤러 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트 및 하나 이상의 레귤러 필드가 정의되는 범위에 포함되는 랜덤 필드값을 입력하는 테스트 중 적어도 하나의 테스트를 수행하는 제3 테스트 단계를 수행할 수 있다.
여기서, 하나 이상의 레귤러 필드 각각에 대하여, 하나 이상의 레귤러 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트 및 하나 이상의 레귤러 필드가 정의되는 범위에 포함되는 랜덤 필드값을 입력하는 테스트는 상술한 제1 테스트 단계에서 설명된 바와 같으므로 중복되는 설명은 생략한다.
일 실시예에 따라, 제3 테스트 중 하나 이상의 레귤러 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 레귤러 필드 군(12)에 포함된 하나 이상의 레귤러 필드 각각에 입력하는 테스트는 경계값을 입력하는 테스트인 경계값 테스트(Boundary Test)를 의미하고, 제3 테스트 중 하나 이상의 레귤러 필드가 정의되는 범위에 포함되는 랜덤(Random) 필드값을 레귤러 필드 군(12)에 포함된 하나 이상의 레귤러 필드 각각에 입력하는 테스트는 랜덤값을 입력하는 테스트인 랜덤값 테스트(Random Test)를 의미할 수 있다.
일 실시예에 따라, 길이 필드 군(10), 내용 필드 군(11) 및 레귤러 필드 군(12) 각각에 포함된 하나 이상의 길이 필드, 내용 필드 및 레귤러 필드 각각에 대해 수행되는 제1 테스트, 제2 테스트 및 제3 테스트 중 경계값 테스트(Boundary Test), 랜덤값 테스트(Random Test) 및 인센스 테스트(Insense Test) 각각은 복수 개의 필드간 상관관계를 고려하지 않는 테스트인 일종의 단일 필드 퍼징 테스트(Single Field Fuzzing Test)를 의미할 수 있다.
일 실시예에 따라, 길이 필드 군(10)에 포함된 하나 이상의 길이 필드에 대해 수행되는 제1 테스트 중 치환 테스트(Transposition Test) 는 복수 개의 길이 필드 상호간의 크기관계를 고려한 테스트로, 복수 개의 길이 필드 간 상관관계를 고려하는 테스트인 일종의 교차 필드 퍼징 테스트(Cross Field Fuzzing Test)를 의미할 수 있다.
S250 단계에서, 취약점 검출부(140)는, S230 단계의 테스트의 결과에 기초하여, 특정 통신 프로토콜의 취약점을 검출한다.
예컨대, 특정 통신 프로토콜에 포함된 각각의 필드에 임의의 필드값을 입력하는 경우, 특정 통신 프로토콜은 패킷을 드롭하거나 연결을 종료하여 세션을 초기화하는 동작을 수행하거나, 임의의 필드값이 입력되었음에도 특정 동작을 수행하거나, 동작 불능 상태에 빠지게 된다.
S250 단계에서, 취약점 검출부(140)는 특정 통신 프로토콜에 포함된 각각의 필드에 임의의 필드값이 입력되었을 때, 특정 통신 프로토콜이 패킷을 드롭하거나 연결을 종료하여 세션을 초기화하는 동작을 수행하였다면, 특정 통신 프로토콜은 잘못된 에러 입력에 대하여 정상적인 에러 처리를 수행하였기 때문에, 해당되는 임의의 필드값은 해당되는 필드에 대한 취약점이 아님을 판정할 수 있다.
S250 단계에서, 취약점 검출부(140)는 특정 통신 프로토콜에 포함된 각각의 필드에 임의의 필드값이 입력되었을 때, 특정 통신 프로토콜이 임의의 필드값이 입력되었음에도 특정한 동작을 수행하였다면, 특정 통신 프로토콜은 잘못된 에러 입력에 대하여 정상적인 에러 처리를 수행하였는지 여부를 판정할 수 없기 때문에, 해당되는 임의의 필드값은 해당되는 필드에 대한 취약점이 될 수 있는 가능성이 있는 필드값으로 판정할 수 있다.
S250 단계에서, 취약점 검출부(140)는 특정 통신 프로토콜에 포함된 각각의 필드에 임의의 필드값이 입력되었을 때, 특정 통신 프로토콜이 동작 불능 상태에 빠지게 되는 경우, 특정 통신 프로토콜은 잘못된 에러 입력에 대하여 정상적인 에러 처리를 수행하지 못하였기 때문에, 해당되는 임의의 필드값을 해당되는 필드에 대한 취약점으로 검출할 수 있다.
즉, 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법 및 장치가 검출하는 취약점은, 제어시스템 네트워크를 위한 특정 통신 프로토콜에 포함된 각각의 필드에 입력된 임의의 필드값 중 특정 통신 프로토콜을 동작 불능 상태에 빠지도록 하는 특정 필드에 대한 특정 필드값을 의미할 수 있다.
예를 들어, S250 단계에서, 취약점 검출부(140)는, 하나 이상의 필드 각각에 입력된 임의의 필드값 중 특정 통신 프로토콜을 동작 불능 상태에 빠지게 하는 특정 필드에 대한 특정 필드값을 해당되는 필드의 취약점으로 검출할 수 있다.
일 실시예에 따라, 특정 통신 프로토콜을 동작 불능 상태에 빠지게 하는 특정 필드에 대한 특정 필드값은 제어시스템 네트워크의 취약점을 의미할 수도 있다.
예를 들어, 도 4에 도시된 좌측 두 번째 필드인 길이 필드의 정상 필드값은 16 진수 "1A"이며, 도 4에 도시된 좌측 두 번째 필드인 길이 필드에 16 진수 "FF"가 입력되었을 때, 특정 통신 프로토콜이 동작 불능 상태에 빠지는 경우, 취약점 검출부(140)는 도 4에 도시된 좌측 두 번째 필드인 길이 필드의 취약점은 16 진수 "FF"임을 판정할 수 있다.
이제 도 6을 참조하여, 레귤러 필드 군(12)에 포함되는 레귤러 필드의 특징에 대해 상세히 설명한다.
도 6은 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법 및 장치에서 레귤러 필드를 설명하기 위한 도면이다.
상술한 바와 같이, 레귤러 필드의 필드값은 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 상에서 해당 레귤러 필드 뒤에 위치한 다른 레귤러 필드의 의미에 영향을 줄 수 있다.
그 결과, 동일한 패킷 상에 존재하는 각각의 레귤러 필드 중 뒤에 위치하는 레귤러 필드는 앞에 위치한 레귤러 필드들이 정상적으로 동작하는 경우에 그 의미를 가질 수 있으며, 이러한 특징을 활용하여 레귤러 필드 군(12)에 포함되는 복수 개의 레귤러 필드 상호간의 연관 관계를 이용하는 테스트인 교차 필드 퍼징 테스트(Cross Field Fuzzing Test)를 수행하는 경우, 임의의 필드값을 입력하는 테스트 케이스의 수를 감소시킬 수 있게 된다.
일 실시예에 따라, 도 6에 도시된 "Read", "InvokeID", "VariableAccessSpecification", "VariableListName", "ListOfVariable", "Sequence Of", "ObjectName", "Address", "VariableDescription", "ScatteredAccessDescription", "Invalidated" 각각은 특정 통신 프로토콜의 레귤러 필드 군(12)에 포함된 각각의 레귤러 필드를 의미할 수 있다.
한편, 도 6에 도시된 각각의 레귤러 필드 중 하나의 경로로 연결이 가능한 레귤러 필드들을 동일한 패킷 내에 포함되는 레귤러 필드로 정의할 수 있다.
예를 들어, 하나의 경로로 연결이 가능한, "Read", "InvokeID", "VariableAccessSpecification", "VariableListName"은 동일한 패킷 내에 포함되는 레귤러 필드들을 의미할 수 있다.
마찬가지로, 하나의 경로로 연결이 가능한, "Read", "InvokeID", "VariableAccessSpecification", "ListOfVariable", "Sequence Of", "VariableDescription" 또한 동일한 패킷 내에 포함되는 레귤러 필드들을 의미할 수 있다.
예를 들어, N1으로 도시된 레귤러 필드인 "VariableAccessSpecification"의 필드값에 따라, 이어지는 레귤러 필드가 변경될 수 있다.
이제 도 5 및 도 7을 동시에 참조하여, S230 단계의 일 실시예로, 레귤러 필드 군(12)에 포함된 각각의 레귤러 필드 상호간의 연관관계를 이용한 일종의 교차 필드 퍼징 테스트(Cross Field Fuzzing Test)를 수행하는 방법에 대해 설명한다.
도 5는 본 발명의 실시예에 따른, 제어시스템 네트워크 취약점 검출 방법에서, 테스트 수행 단계 중 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 방법을 설명하기 위한 순서도이다.
도 7은 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 방법에서, 테스트 수행 단계 중 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 방법을 설명하기 위한 도면이다.
도 5에 도시된 바와 같이, S230 단계에서 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 방법은 하나 이상의 레귤러 필드에 대하여 임의의 필드값을 입력하는 제3 테스트 단계(S231), 하나 이상의 레귤러 필드 중 오인 동작 레귤러 필드를 추출하는 단계(S233), 적어도 2개의 오인 동작 레귤러 필드로 구성되는 복수의 오인 동작 레귤러 필드 조합을 생성하는 단계(S235) 및 복수의 오인 동작 레귤러 필드 조합에 대하여 임의의 필드값을 입력하는 제3 테스트를 재수행하는 단계(S237)를 포함한다.
다시 말해, S230 단계에서 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 방법은 S230 단계에서, 레귤러 필드 군(12)에 포함되는 복수 개의 레귤러 필드 각각에 대해 제3 테스트를 수행한 이후에 수행될 수 있다.
S231 단계의 제3 테스트 방법은 상술한 바와 같으므로, 중복되는 설명은 생략한다.
일 실시예에 따라, S230 단계에서 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 방법은 최대 필드값, 최소 필드값 및 랜덤 필드값 중 적어도 하나가 정상 필드값이 아닐 때 수행될 수 있다.
S233 단계에서, 테스트 수행부(130)는, 하나 이상의 레귤러 필드 중 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 하나 이상의 레귤러 필드인 하나 이상의 오인 동작 레귤러 필드를 추출한다.
보다 상세하게, S231 단계의 제3 테스트 결과, 레귤러 필드 군(12)에 포함되는 복수 개의 레귤러 필드는 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 하나 이상의 레귤러 필드인 하나 이상의 오인 동작 레귤러 필드와 정상 필드값이 아닌 필드값을 비정상 필드값으로 파악하고 세션 연결을 종료하거나 해당 패킷을 무시하여 정상적으로 에러처리를 수행한 하나 이상의 레귤러 필드인 에러 처리 레귤러 필드로 구분될 수 있다.
일 실시예에 따라, 오인 동작 레귤러 필드는 임의의 필드값으로 조작된 패킷을 정상으로 오인하여, 특정한 에러 처리를 하지 않았음에도 임의의 필드값으로 인한 문제가 발생하지 않은 레귤러 필드로, 특정 오인 동작 레귤러 필드와 연관된 다른 오인 동작 레귤러 필드들을 대상으로 제3 테스트를 재수행하는 경우 취약점이 발생할 가능성이 있는 레귤러 필드를 의미할 수 있다.
따라서, 오인 동작 레귤러 필드는 레귤러 필드 상호간의 연관관계를 이용한 일종의 교차 필드 퍼징 테스트(Cross Field Fuzzing Test)를 수행하는 대상이 되는 레귤러 필드를 의미할 수 있다.
예컨대, 에러 처리 레귤러 필드는 임의의 필드값으로 조작된 패킷을 비정상으로 파악하고, 통신 연결을 종료하거나 패킷을 무시하는 반응을 나타낸 레귤러 필드로, 에러 처리 레귤러 필드는 정상적으로 에러 처리를 수행하는 레귤러 필드를 의미할 수 있다.
따라서, 에러 처리 레귤러 필드는 임의의 필드값으로 조작된 패킷을 무시하거나 세션을 종료하였기 때문에, 테스트 수행부(130)는 특정 에러 처리 레귤러 필드와 연관된 다른 에러 처리 레귤러 필드들을 대상으로 일종의 교차 필드 퍼징 테스트(Cross Field Fuzzing Test)를 수행하지 않을 수 있다.
이제 도 7을 참조하여, 오인 동작 레귤러 필드와 에러 처리 레귤러 필드에 대해 설명한다.
도 7에 도시된, "a", "b", ... "n", "o" 각각은 레귤러 필드 군(12)에 포함된 하나 이상의 레귤러 필드 각각을 의미할 수 있다.
하나 이상의 레귤러 필드 중, 음영처리가 되지 않은 "정상동작" 레귤러 필드인 "b", "c", "d", "g", "j", "k" 및 "m" 각각은 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 오인 동작 레귤러 필드를 의미할 수 있다.
한편, 하나 이상의 레귤러 필드 중, 음영처리가 된 "연결종료" 레귤러 필드인 "a", "e", "f", "h", "i", "l", "n", "o" 각각은 정상 필드값이 아닌 필드값을 비정상 필드값으로 파악하고 세션 연결을 종료하거나 해당 패킷을 무시하여 정상적으로 에러처리를 수행한 하나 이상의 레귤러 필드인 에러 처리 레귤러 필드를 의미할 수 있다.
일 실시예에 따라, S233 단계에서, 테스트 수행부(130)는 레귤러 필드 군(12)에 포함된 복수 개의 레귤러 필드 각각에 최대 필드값, 최소 필드값 및 랜덤 필드값 중 적어도 하나의 필드값을 입력하는 테스트인 제3 테스트를 수행한 결과, 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 오인 동작 레귤러 필드인 "b", "c", "d", "g", "j", "k" 및 "m" 각각을 추출할 수 있다.
S235 단계에서, 테스트 수행부(130)는, 하나 이상의 오인 동작 레귤러 필드 중에서 상호간에 동일한 패킷 내에 포함되도록 결정된 적어도 2개의 오인 동작 레귤러 필드로 구성되는 복수의 오인 동작 레귤러 필드 조합을 생성한다.
이제 도 7을 참조하여, S235 단계를 계속 설명한다.
도 7에 도시된 바와 같이, 복수 개의 레귤러 필드인 "a", "b", ... "n", "o" 중 하나의 경로로 연결이 가능한 레귤러 필드들은 상호간에 동일한 패킷 내에 포함되도록 결정된 레귤러 필드들을 의미할 수 있다.
예컨대, "a", "b", "d", "j"는 하나의 경로로 연결이 가능하기 때문에 상호간에 동일한 패킷 내에 포함되도록 결정된 레귤러 필드일 수 있다.
마찬가지로, "a", "b", "d", "i", "m", "o"는 하나의 경로로 연결이 가능하기 때문에 상호간에 동일한 패킷 내에 포함되도록 결정된 레귤러 필드일 수 있다.
S235 단계에서, 테스트 수행부(130)는, 하나 이상의 오인 동작 레귤러 필드인 "b", "c", "d", "g", "j", "k" 및 "m" 중 하나의 경로로 연결이 가능한 오인 동작 레귤러 필드로 구성되는 복수의 오인 동작 레귤러 필드 조합을 생성한다.
예를 들어, S235 단계에서, 테스트 수행부(130)가 2개의 오인 동작 레귤러 필드로 구성되는 오인 동작 레귤러 필드 조합을 생성하는 경우, 오인 동작 레귤러 필드 조합은 "b, d", "b, j", "b, m", "d, j", "d, m", "c, g", "c, k"로 생성될 수 있다.
일 실시예에 따라, S235 단계에서, 테스트 수행부(130)가 3개의 오인 동작 레귤러 필드로 구성되는 오인 동작 레귤러 필드 조합을 생성하는 경우, "b, d, j", "b, d, m"의 오인 동작 레귤러 필드 조합이 생성될 수 있다.
S237 단계에서, 테스트 수행부(130)는, 복수의 오인 동작 레귤러 필드 조합에 대해 제3 테스트를 재수행한다.
이제 도 7을 참조하여, S237 단계를 계속 설명한다.
일 실시예에 따라, S237 단계에서 테스트 수행부(130)는, S235 단계에서 생성된 2개의 오인 동작 레귤러 필드로 구성되는 오인 동작 레귤러 필드 조합인 "b, d", "b, j", "b, m", "d, j", "d, m", "c, g", "c, k"에 대하여 제3 테스트를 재수행한다.
예컨대, 오인 동작 레귤러 필드 조합인 "b, d"에 대해 제3 테스트를 수행하는 경우, 테스트 수행부(130)는 오인 동작 레귤러 필드인 "b"와 "d" 각각에 대하여 오인 동작 레귤러 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 오인 동작 레귤러 필드 "b"및 "d"에 각각 입력하는 테스트, 오인 동작 레귤러 필드가 정의 되는 범위에 포함되는 랜덤 필드값을 오인 동작 레귤러 필드 "b" 및 "d"에 각각 입력하는 테스트를 수행할 수 있다.
S237 단계에서, 테스트 수행부(130)는 오인 동작 레귤러 필드 조합인 "b, d" 뿐만 아니라, "b, j", "b, m", "d, j", "d, m", "c, g", "c, k" 각각에 대해서도 상술한 과정을 반복할 수 있다.
마찬가지로, S237 단계에서 테스트 수행부(130)는, S235 단계에서 생성된 3개의 오인 동작 레귤러 필드로 구성되는 오인 동작 레귤러 필드 조합인 "b, d, j", "b, d, m"에 대하여 상술한 과정을 반복할 수도 있다.
이제 도 7을 참조하여, 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 다른 실시예에 대해 설명하도록 한다.
레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 다른 실시예에서, 테스트 수행부(130)는 레귤러 필드 군(12)에 포함된 복수 개의 레귤러 필드 각각에 최대 필드값, 최소 필드값 및 랜덤 필드값 중 적어도 하나의 필드값을 입력하는 테스트인 제3 테스트를 수행한 결과, 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 오인 동작 레귤러 필드인 "b", "c", "d", "g", "j", "k" 및 "m" 각각을 추출할 수 있다.
그 뒤, 테스트 수행부(130)는 추출된 하나 이상의 오인 동작 레귤러 필드 중 상호간에 동일한 패킷 내에 포함되도록 결정된 2개의 오인 동작 레귤러 필드로 구성되는 복수의 오인 동작 레귤러 필드 조합을 생성할 수 있으며, 복수의 오인 동작 레귤러 필드 조합은 "b, d", "b, j", "b, m", "d, j", "d, m", "c, g", "c, k"으로 생성될 수 있다.
그 뒤, 테스트 수행부(130)는 2개의 오인 동작 레귤러 필드로 구성되는 복수의 오인 동작 레귤러 필드 조합인 "b, d", "b, j", "b, m", "d, j", "d, m", "c, g", "c, k" 각각에 대하여 제3 테스트를 재수행할 수 있으며, 제3 테스트에 대한 구체적인 설명은 상술한 바와 같으므로 중복되는 설명은 생략한다.
이어서, 테스트 수행부(130)는 2개의 오인 동작 레귤러 필드로 구성되는 복수의 오인 동작 레귤러 필드 조합인 "b, d", "b, j", "b, m", "d, j", "d, m", "c, g", "c, k" 각각에 대하여 제3 테스트를 재수행할 결과, 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 오인 동작 레귤러 필드 조합을 다시 추출할 수 있다.
예를 들어, 2개의 오인 동작 레귤러 필드로 구성되는 복수의 오인 동작 레귤러 필드 조합 중 "b, d"와 "c, g"가 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 오인 동작 레귤러 필드 조합인 경우, 테스트 수행부(130)는 "b, d"와 "c, g"를 다시 추출할 수 있는 것이다.
그 뒤, 테스트 수행부(130)는 추출된 특정 오인 동작 레귤러 필드 조합과 동일한 패킷 내에 포함되도록 결정된 다른 오인 동작 레귤러 필드를 특정 오인 동작 레귤러 필드 조합에 추가하여, 3개의 오인 동작 레귤러 필드로 구성되는 복수의 오인 동작 레귤러 필드 조합을 생성할 수 있다.
예를 들어, 추출된 오인 동작 레귤러 필드 조합인 "b, d"와 동일한 패킷 내에 포함되도록 결정된 오인 동작 레귤러 필드는 "j" 및 "m"이므로, 테스트 수행부(130)는 추출된 오인 동작 레귤러 필드 조합인 "b, d"에 "j" 및 "m"을 각각 추가하여, 3개의 오인 동작 레귤러 필드로 구성되는 새로운 오인 동작 레귤러 필드 조합인 "b, d, j" 및 "b, d, m"을 생성할 수 있다.
일 실시예에 따라, 도 7에서는 추출된 오인 동작 레귤러 필드 조합인 "c, g"와 동일한 패킷 내에 포함되도록 결정된 오인 동작 레귤러 필드가 없으므로, 테스트 수행부(130)는 추출된 오인 레귤러 필드 조합인 "c, g"에 더 이상의 오인 동작 레귤러 필드를 추가하지 않을 수 있다.
그 뒤, 테스트 수행부(130)는 3개의 오인 동작 레귤러 필드로 구성되는 새로운 오인 동작 레귤러 필드 조합인 "b, d, j" 및 "b, d, m" 각각에 대하여 제3 테스트를 재수행할 수 있으며, 제3 테스트를 재수행한 결과, 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 오인 동작 레귤러 필드 조합을 다시 추출하여, 4개의 오인 동작 레귤러 필드로 구성되는 새로운 오인 동작 레귤러 필드 조합을 생성하는 과정을 반복할 수 있다.
레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 다른 실시예에서 테스트 수행부(130)가 수행하는 상술한 과정은, 특정한 크기의 오인 동작 레귤러 필드 조합과 동일한 패킷 내에 포함되도록 결정된 다른 오인 동작 레귤러 필드가 더 이상 없거나, 특정한 크기의 오인 동작 레귤러 필드 조합에 제3 테스트를 수행한 뒤 취약점이 발견되거나, 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 오인 동작 레귤러 필드 조합이 더 이상 발견되지 않을 때까지 반복될 수 있다.
다시 말해, 레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 다른 실시예에서 테스트 수행부(130)는 복수 개의 오인 동작 레귤러 필드를 추출한 뒤, 추출된 오인 동작 레귤러 필드 중 상호간에 동일한 패킷 내에 포함되도록 결정된 2개의 오인 동작 레귤러 필드로 구성되는 복수 개의 오인 동작 레귤러 필드 조합을 생성하여, 제3 테스트를 수행하고, 복수 개의 오인 동작 레귤러 필드 조합 중 정상 필드값이 아닌 필드값을 정상 필드값으로 오인하여 정상적으로 동작한 오인 동작 레귤러 필드 조합을 다시 추출하여, 추출된 오인 동작 레귤러 필드 조합과 동일한 패킷 내에 포함되도록 결정된 오인 동작 레귤러 필드 더 추가하는 동작을 반복할 수 있는 것이다.
레귤러 필드에 대한 교차 필드 퍼징 테스트를 수행하는 다른 실시예에서와 같이, 오인 동작 레귤러 필드로만 구성된 오인 동작 레귤러 필드 조합을 활용하여 제3 테스트를 수행하는 경우, 테스트 케이스의 수를 크게 줄일 수 있게 되어, 특정 통신 프로토콜의 취약점을 검출하는데 걸리는 시간을 비약적으로 단축할 수 있게 된다.
또한, 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 방법 및 장치를 활용하는 경우, 필드 속성에 기초하여 필드 군을 분류하기 때문에 크로스 레이어 테스트 케이스(Cross Layer Test Case)를 보다 쉽게 생성할 수 있다.
상술한 바와 같이, 본 발명의 실시예에 따른 제어시스템 네트워크 취약점 검출 방법 및 장치는, 제어시스템 네트워크를 위한 각종 통신 프로토콜의 취약점을 검출하여, 검출된 각종 통신 프로토콜의 취약점을 제어시스템 네트워크의 취약점으로 검출할 수 있다.
이상에서 본 발명에 따른 바람직한 실시예에 대해 설명하였으나, 다양한 형태로 변형이 가능하며, 본 기술분야에서 통상의 지식을 가진 자라면 본 발명의 특허청구범위를 벗어남이 없이 다양한 변형예 및 수정예를 실시할 수 있을 것으로 이해된다.
10: 길이 필드군
11: 내용 필드 군
12: 레귤러 필드 군
100: 제어시스템 네트워크 취약점 검출 장치
110: 프로토콜 분석부
120: 필드 분류부
130: 테스트 수행부
140: 취약점 검출부
11: 내용 필드 군
12: 레귤러 필드 군
100: 제어시스템 네트워크 취약점 검출 장치
110: 프로토콜 분석부
120: 필드 분류부
130: 테스트 수행부
140: 취약점 검출부
Claims (13)
- 필드 분류부가, 취약점 검출의 대상이 되는 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 각각의 필드 속성에 기초하여 상기 복수 개의 필드를 복수 개의 속성 별 필드 군으로 분류하는 단계;
테스트 수행부가, 상기 복수 개의 속성 별 필드 군 각각의 필드 속성에 기초하여, 상기 복수 개의 속성 별 필드 군 각각에 포함된 하나 이상의 필드 각각에 대하여 임의의 필드값을 입력하는 테스트를 수행하는 단계; 및
취약점 검출부가, 상기 테스트의 결과에 기초하여, 상기 특정 통신 프로토콜의 취약점을 검출하는 단계를 포함하는, 제어시스템 네트워크 취약점 검출 방법. - 제1항에 있어서,
상기 분류하는 단계 이전에,
프로토콜 분석부가, 미리 저장된 포맷(Format)과 신택스(Syntax)에 기초하여, 상기 특정 통신 프로토콜의 스팩을 분석하는 단계를 더 포함하는, 제어시스템 네트워크 취약점 검출 방법. - 제1항에 있어서,
상기 속성 별 필드 군은,
하나 이상의 길이(Length) 필드를 포함하는 길이 필드 군, 하나 이상의 내용(Content) 필드를 포함하는 내용 필드 군 및 하나 이상의 레귤러(Regular) 필드를 포함하는 레귤러 필드 군 중 적어도 하나를 포함하는, 제어시스템 네트워크 취약점 검출 방법. - 제3항에 있어서,
상기 길이 필드는,
상기 특정 통신 프로토콜에 포함되는 복수 개의 필드 상에서 자신의 뒤에 위치하는 하나 이상의 필드의 개수를 정상 필드값으로 하는 필드인 것을 특징으로 하는, 제어시스템 네트워크 취약점 검출 방법. - 제4항에 있어서,
상기 테스트를 수행하는 단계는,
상기 테스트 수행부가, 상기 길이 필드 군에 포함된 상기 하나 이상의 길이 필드 각각에 대하여,
상기 하나 이상의 길이 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트, 상기 하나 이상의 길이 필드가 정의되는 범위에 포함되는 랜덤(Random) 필드값을 입력하는 테스트 및 상기 길이 필드 군에 포함된 제1 길이 필드 및 제2 길이 필드 각각의 상기 정상 필드값을 서로 교환하여 입력하는 테스트 중 적어도 하나의 테스트를 수행하는 제1 테스트 단계를 포함하는, 제어시스템 네트워크 취약점 검출 방법. - 제3항에 있어서,
상기 내용 필드는,
상기 특정 통신 프로토콜을 통해 실제로 전송되는 데이터를 정의하기 위한 하나 이상의 필드값을 정상 필드값으로 하는 필드인 것을 특징으로 하는, 제어시스템 네트워크 취약점 검출 방법. - 제6항에 있어서,
상기 테스트를 수행하는 단계는,
상기 테스트 수행부가, 상기 내용 필드 군에 포함된 상기 하나 이상의 내용 필드 각각에 대하여,
상기 하나 이상의 내용 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트, 상기 하나 이상의 내용 필드가 정의되는 범위에 포함되는 랜덤 필드값을 입력하는 테스트 및 상기 하나 이상의 내용 필드가 정의되는 범위의 필드값 중 실제로 사용되지 않는 필드값인 미사용 필드값을 입력하는 테스트 중 적어도 하나의 테스트를 수행하는 제2 테스트 단계를 포함하는, 제어시스템 네트워크 취약점 검출 방법. - 제3항에 있어서,
상기 레귤러 필드는,
상기 특정 통신 프로토콜에 포함되는 복수 개의 필드 중 자신의 다음으로 참조할 다음 레귤러 필드를 정의하기 위한 필드값을 정상 필드값으로 하는 필드인 것을 특징으로 하는, 제어시스템 네트워크 취약점 검출 방법. - 제8항에 있어서,
상기 테스트를 수행하는 단계는,
상기 테스트 수행부가, 상기 레귤러 필드 군에 포함된 상기 하나 이상의 레귤러 필드 각각에 대하여,
상기 하나 이상의 레귤러 필드가 정의되는 범위의 최대 필드값 및 최소 필드값을 입력하는 테스트 및 상기 하나 이상의 레귤러 필드가 정의되는 범위에 포함되는 랜덤 필드값을 입력하는 테스트 중 적어도 하나의 테스트를 수행하는 제3 테스트 단계를 포함하는, 제어시스템 네트워크 취약점 검출 방법. - 제9항에 있어서,
상기 제3 테스트 단계 이후에,
상기 최대 필드값, 최소 필드값 및 랜덤 필드값 중 적어도 하나가 상기 정상 필드값이 아닐 때,
상기 테스트 수행부가, 상기 하나 이상의 레귤러 필드 중 상기 정상 필드값이 아닌 필드값을 상기 정상 필드값으로 오인하여 정상적으로 동작한 하나 이상의 레귤러 필드인 하나 이상의 오인 동작 레귤러 필드를 추출하는 단계;
상기 테스트 수행부가, 상기 하나 이상의 오인 동작 레귤러 필드 중에서 상호간에 동일한 패킷 내에 포함되도록 결정된 적어도 2개의 오인 동작 레귤러 필드로 구성되는 복수의 오인 동작 레귤러 필드 조합을 생성하는 단계; 및
상기 테스트 수행부가, 상기 복수의 오인 동작 레귤러 필드 조합에 대해 상기 제3 테스트를 재수행하는 단계를 더 포함하는 것을 특징으로 하는, 제어시스템 네트워크 취약점 검출 방법. - 제1항에 있어서,
상기 취약점을 검출하는 단계에서,
상기 취약점 검출부는, 상기 하나 이상의 필드 각각에 입력된 상기 임의의 필드값 중 상기 특정 통신 프로토콜을 동작 불능 상태에 빠지게 하는 특정 필드값을 해당되는 필드의 상기 취약점으로 검출하는 것을 특징으로 하는, 제어시스템 네트워크 취약점 검출 방법. - 취약점 검출의 대상이 되는 특정 통신 프로토콜에 포함되는 복수 개의 필드(Field) 각각의 필드 속성에 기초하여 상기 복수 개의 필드를 복수 개의 속성 별 필드 군으로 분류하는 필드 분류부;
상기 복수 개의 속성 별 필드 군 각각의 필드 속성에 기초하여, 상기 복수 개의 속성 별 필드 군 각각에 포함된 하나 이상의 필드 각각에 대하여 임의의 필드값을 입력하는 테스트를 수행하는 테스트 수행부; 및
상기 테스트의 결과에 기초하여, 상기 특정 통신 프로토콜의 취약점을 검출하는 취약점 검출부를 포함하는, 제어시스템 네트워크 취약점 검출 장치. - 제12항에 있어서,
미리 저장된 포맷(Format)과 신택스(Syntax)에 기초하여, 상기 특정 통신 프로토콜의 스팩을 분석하는 프로토콜 분석부를 더 포함하는, 제어시스템 네트워크 취약점 검출 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160111682A KR101829712B1 (ko) | 2016-08-31 | 2016-08-31 | 제어시스템 네트워크 취약점 검출 방법 및 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020160111682A KR101829712B1 (ko) | 2016-08-31 | 2016-08-31 | 제어시스템 네트워크 취약점 검출 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101829712B1 true KR101829712B1 (ko) | 2018-02-19 |
Family
ID=61387619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160111682A KR101829712B1 (ko) | 2016-08-31 | 2016-08-31 | 제어시스템 네트워크 취약점 검출 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101829712B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200052165A (ko) * | 2018-11-06 | 2020-05-14 | 국방과학연구소 | 정상/위협 트래픽 재활용을 위한 메타 정보 플랫폼 장치 및 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005354338A (ja) | 2004-06-10 | 2005-12-22 | Matsushita Electric Ind Co Ltd | ネットワーク脆弱性検査装置及び方法 |
JP2011176562A (ja) | 2010-02-24 | 2011-09-08 | Anritsu Corp | プロトコル試験方法及びプロトコル試験装置 |
-
2016
- 2016-08-31 KR KR1020160111682A patent/KR101829712B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005354338A (ja) | 2004-06-10 | 2005-12-22 | Matsushita Electric Ind Co Ltd | ネットワーク脆弱性検査装置及び方法 |
JP2011176562A (ja) | 2010-02-24 | 2011-09-08 | Anritsu Corp | プロトコル試験方法及びプロトコル試験装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200052165A (ko) * | 2018-11-06 | 2020-05-14 | 국방과학연구소 | 정상/위협 트래픽 재활용을 위한 메타 정보 플랫폼 장치 및 방법 |
KR102179439B1 (ko) * | 2018-11-06 | 2020-11-16 | 국방과학연구소 | 정상/위협 트래픽 재활용을 위한 메타 정보 플랫폼 장치 및 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112003870B (zh) | 一种基于深度学习的网络加密流量识别方法及装置 | |
KR101538709B1 (ko) | 산업제어 네트워크를 위한 비정상 행위 탐지 시스템 및 방법 | |
KR102185869B1 (ko) | 머신러닝과 자연어처리 기술을 활용한 사이버위협 탐지 방법 | |
CN111866024B (zh) | 一种网络加密流量识别方法及装置 | |
US20180150635A1 (en) | Apparatus and Method for Using a Support Vector Machine and Flow-Based Features to Detect Peer-to-Peer Botnet Traffic | |
CN109274692B (zh) | 一种识别区块链网络作恶节点的方法及装置 | |
CN107360145A (zh) | 一种多节点蜜罐系统及其数据分析方法 | |
CN107209834B (zh) | 恶意通信模式提取装置及其系统和方法、记录介质 | |
CN109600362A (zh) | 基于识别模型的僵尸主机识别方法、识别设备及介质 | |
WO2019163963A1 (ja) | トラヒック特徴情報抽出装置、トラヒック特徴情報抽出方法、及びトラヒック特徴情報抽出プログラム | |
CN109639624A (zh) | 一种Modbus TCP协议模糊测试中畸形数据过滤方法 | |
CN113518019B (zh) | 基于存活端口的系统识别方法 | |
Ali et al. | A generic machine learning approach for IoT device identification | |
JP7065744B2 (ja) | ネットワーク装置、パケットを処理する方法、及びプログラム | |
KR101829712B1 (ko) | 제어시스템 네트워크 취약점 검출 방법 및 장치 | |
KR101488271B1 (ko) | Ids 오탐 검출 장치 및 방법 | |
CN117240598A (zh) | 攻击检测方法、装置、终端设备及存储介质 | |
KR102014044B1 (ko) | L2 패킷 차단이 가능한 침입 방지 시스템 및 방법 | |
CN101547127A (zh) | 一种内、外网络报文的识别方法 | |
KR101383069B1 (ko) | 네트워크 이상상태 탐지 장치 및 방법 | |
CN112688947B (zh) | 基于互联网的网络通信信息智能监测方法及系统 | |
CN114257444A (zh) | 一种可疑外连的检测方法及装置 | |
Tien et al. | Using Autoencoders for Anomaly Detection and Transfer Learning in Iot. Computers 2021, 10, 88 | |
US20240340298A1 (en) | Method and system for recognizing tls fingerprints based on finite-state machines | |
CN109214212A (zh) | 信息防泄露方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |