KR101689795B1 - 통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템 - Google Patents

통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템 Download PDF

Info

Publication number
KR101689795B1
KR101689795B1 KR1020150150410A KR20150150410A KR101689795B1 KR 101689795 B1 KR101689795 B1 KR 101689795B1 KR 1020150150410 A KR1020150150410 A KR 1020150150410A KR 20150150410 A KR20150150410 A KR 20150150410A KR 101689795 B1 KR101689795 B1 KR 101689795B1
Authority
KR
South Korea
Prior art keywords
message fields
code coverage
values
test cases
test
Prior art date
Application number
KR1020150150410A
Other languages
English (en)
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 KR1020150150410A priority Critical patent/KR101689795B1/ko
Priority to US15/200,051 priority patent/US10185831B2/en
Application granted granted Critical
Publication of KR101689795B1 publication Critical patent/KR101689795B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer And Data Communications (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)

Abstract

본 발명의 기술적 사상에 의한 일 양태에 따른 통신 프로토콜 소프트웨어의 취약성 검출 시스템은, 산업 제어 시스템 통신 프로토콜의 메시지 필드들을 선택하는 필드 선택 모듈과, 필드 선택 모듈에서 선택된 메시지 필드들 각각에 대해 제1 값 세트들을 설정하는 값 세트 설정 모듈과, 제1 값 세트들을 곱집합하여 제1 테스트 케이스들을 생성하는 테스트 케이스 생성 모듈과, 제1 테스트 케이스들을 기초로 산업 제어 시스템 통신 프로토콜의 소프트웨어를 테스팅하여 제1 코드 커버리지 데이터를 생성하는 테스트 모듈, 및 제1 코드 커버리지 데이터를 분석하는 코드 커버리지 분석 모듈을 포함하되, 필드 선택 모듈은, 코드 커버리지 분석 모듈의 분석에 따라 메시지 필드들 중에서 제1 코드 커버리지 데이터에 영향을 미치는 집중 메시지 필드들을 선택한다.

Description

통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템{METHOD AND SYSTEM FOR DETECTING VULNERABILITIES OF COMMUNICATION PROTOCOL SOFTWARE}
본 발명의 기술적 사상은 통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템에 관한 것으로, 보다 상세하게는, 본 발명의 기술적 사상은 산업 제어 시스템에서 이용되는 통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템에 관한 것이다.
산업 제어 시스템(Industrial Control System)은 전기, 물 및 가스와 같은 산업 분야에서 각 산업 과정을 감시하고 제어하기 위한 컴퓨터 기반 시스템을 의미한다. SCADA(Supervisory Control And Data Acquisition) 시스템, 또는 분산 제어 시스템(distributed control systems)은 산업 제어 시스템의 한 예이다.
산업 제어 시스템에 이용되는 DNP3(Distributed Network Protocol)와 같은 통신 프로토콜은 사이버 공격에 취약할 수 있다. 따라서 이러한 사이버 공격을 막기 위해 산업 제어 시스템에 이용되는 통신 프로토콜 소프트웨어의 취약성을 효율적으로 검출할 수 있는 방법 및 시스템이 요구된다.
본 발명의 기술적 사상이 이루고자 하는 기술적 과제는 사이버 공격자들이 통신 프로토콜 소프트웨어의 취약성을 이용하여 산업 제어 시스템을 공격하는 것을 방지하기 위한 통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템을 제공하는 것이다.
본 발명의 기술적 사상에 의한 일 양태에 따른 통신 프로토콜 소프트웨어의 취약성 검출 방법은, 산업 제어 시스템 통신 프로토콜의 메시지 필드들 각각에 대해 설정된 제1 값 세트들을 곱집합(Cartesian product)하여 제1 테스트 케이스들(test cases)을 생성하는 단계; 상기 제1 테스트 케이스들을 기초로 상기 산업 제어 시스템 통신 프로토콜의 소프트웨어를 테스팅(testing)하여 제1 코드 커버리지 데이터(code coverage data)를 생성하고, 상기 생성된 제1 코드 커버리지 데이터에 따라 상기 메시지 필드들 중에서 상기 제1 코드 커버리지 데이터에 영향을 미치는 집중 메시지 필드들을 선택하는 단계; 상기 집중 메시지 필드들에 대해 상기 제1 값 세트들보다 넓은 범위를 가지는 제2 값 세트들을 곱집합하여 제2 테스트 케이스들을 생성하고, 상기 제2 테스트 케이스들을 기초로 상기 소프트웨어를 테스팅하여 제2 코드 커버리지 데이터를 생성하는 단계; 상기 제2 코드 커버리지 데이터에 따라 상기 제2 테스트 케이스들을 분류하고, 상기 분류된 제2 테스트 케이스들에서 제3 값 세트들을 추출하는 단계; 상기 메시지 필드들 중 상기 집중 메시지 필드들을 제외한 나머지 메시지 필드들에 대해 상기 제1 값 세트들보다 넓은 범위를 가지는 제4 값 세트들을 설정하는 단계; 및 상기 제3 값 세트들과 상기 제4 값 세트들을 곱집합하여 제3 테스트 케이스들을 생성하는 단계;를 포함한다.
일부 실시 예에서, 상기 집중 메시지 필드들을 선택하는 단계는, K-평균 알고리즘을 이용하여 상기 제1 코드 커버리지 데이터를 복수의 클래스들(Class)로 분류하는 단계; 상기 메시지 필드들 각각에 대하여 상기 분류된 클래스들이 변수로 이용되는 카이 제곱 테스트(Chi-squared test)를 수행하는 단계; 및 상기 테스트 결과에 따라 상기 집중 메시지 필드들을 선택하는 단계;를 포함할 수 있다.
일부 실시 예에서, 상기 통신 프로토콜 소프트웨어의 취약성 검출 방법은, 상기 통신 프로토콜 소프트웨어의 취약성을 검출할 때까지 상기 집중 메시지 필드들을 선택하는 단계, 상기 소프트웨어를 테스팅하여 상기 제2 코드 커버리지 데이터를 생성하는 단계, 상기 제3 값 세트들을 추출하는 단계, 상기 제4 값 세트들을 설정하는 단계, 및 상기 제3 테스트 케이스들을 생성하는 단계가 반복적으로 수행될 수 있다.
본 발명의 기술적 사상에 의한 다른 양태에 따른 통신 프로토콜 소프트웨어의 취약성 검출 시스템은, 산업 제어 시스템 통신 프로토콜의 메시지 필드들을 선택하는 필드 선택 모듈; 상기 필드 선택 모듈에서 선택된 메시지 필드들 각각에 대해 제1 값 세트들을 설정하는 값 세트 설정 모듈; 상기 제1 값 세트들을 곱집합하여 제1 테스트 케이스들을 생성하는 테스트 케이스 생성 모듈; 상기 제1 테스트 케이스들을 기초로 상기 산업 제어 시스템 통신 프로토콜의 소프트웨어를 테스팅하여 제1 코드 커버리지 데이터를 생성하는 테스트 모듈; 및 상기 제1 코드 커버리지 데이터를 분석하는 코드 커버리지 분석 모듈;을 포함하되, 상기 필드 선택 모듈은, 상기 코드 커버리지 분석 모듈의 분석에 따라 상기 메시지 필드들 중에서 상기 제1 코드 커버리지 데이터에 영향을 미치는 집중 메시지 필드들을 선택한다.
일부 실시 예에서, 상기 코드 커버리지 분석 모듈은, K-평균 알고리즘을 이용하여 상기 제1 코드 커버리지 데이터를 복수의 클래스들로 분류하고, 상기 메시지 필드들 각각에 대해 상기 분류된 클래스들이 변수로 이용되는 카이 제곱 테스트를 수행하여 상기 제1 코드 커버리지 데이터를 분석할 수 있다.
일부 실시 예에서, 상기 값 세트 설정 모듈은 상기 집중 메시지 필드들에 대해 상기 제1 값 세트들보다 넓은 범위를 가지는 제2 값 세트들을 설정할 수 있고, 상기 테스트 케이스 생성 모듈은 상기 제2 값 세트들을 곱집합하여 제2 테스트 케이스들을 생성할 수 있고, 상기 테스트 모듈은 상기 제2 테스트 케이스들을 기초로 상기 소프트웨어를 테스팅하여 제2 코드 커버리지 데이터를 생성할 수 있다.
일부 실시 예에서, 상기 코드 커버리지 분석 모듈은 K-평균 알고리즘을 이용하여 상기 제2 코드 커버리지 데이터에 따라 상기 제2 테스트 케이스들을 복수의 클래스들로 분류할 수 있고, 상기 값 세트 설정 모듈은 상기 복수의 클래스들 중 하이로 분류된 제2 테스트 케이스들에서 제3 값 세트들을 추출할 수 있다.
일부 실시 예에서, 상기 값 세트 설정 모듈은 상기 메시지 필드들 중 상기 집중 메시지 필드들을 제외한 나머지 메시지 필드들에 대해 상기 제1 값 세트들보다 넓은 범위를 가지는 제4 값 세트들을 설정할 수 있고, 상기 테스트 케이스 생성 모듈은 상기 제3 값 세트들과 상기 제4 값 세트들을 곱집합하여 제3 테스트 케이스들을 생성할 수 있다.
본 발명의 기술적 사상에 의한 실시예들에 따른 통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템은 코드 커버리지 데이터(code coverage data)를 이용하여 우선적으로 필드들을 선택하고 단계적으로 테스트를 수행함으로써, 산업 제어 시스템에 이용되는 통신 프로토콜 소프트웨어의 취약성을 검출할 수 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 산업 제어 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 중앙 제어 스테이션과 RTU 사이의 산업 제어 시스템 통신 프로토콜 소프트웨어의 취약성을 검출하기 위한 시스템의 블록도를 나타낸다.
도 3은 도 2에 도시된 통신 프로토콜 소프트웨어의 취약성을 검출하기 위한 시스템의 동작을 설명하기 위한 흐름도를 나타낸다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
또한, 본 명세서에서, 일 구성요소가 다른 구성요소와 "연결된다" 거나 "접속된다" 등으로 언급된 때에는, 상기 일 구성요소가 상기 다른 구성요소와 직접 연결되거나 또는 직접 접속될 수도 있지만, 특별히 반대되는 기재가 존재하지 않는 이상, 중간에 또 다른 구성요소를 매개하여 연결되거나 또는 접속될 수도 있다고 이해되어야 할 것이다.
또한, 본 명세서에 기재된 "~부(유닛)", "~기", "~자", "~모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
그리고 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.
이하, 본 발명의 실시예들을 차례로 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 산업 제어 시스템의 블록도를 나타낸다.
도 1을 참조하면, 산업 제어 시스템(100)은 중앙 제어 스테이션(10), 원자력 발전 시설(Nuclear Power Plant, 20) 및 에너지 분산 시설(Distributed Energy Resource, 40)을 포함한다. 실시 예에 따라, 산업 제어 시스템(100)은 원자력 발전 시설(20) 또는 에너지 분산 시설(40)을 포함할 수 있다. 또한, 다른 실시 예에 따라, 산업 제어 시스템(100)은 전기, 물, 석유 또는 가스와 같은 산업 시설을 포함할 수 있다.
중앙 제어 스테이션(10)은 원자력 발전 시설(20) 또는 에너지 분산 시설(40)과 통신을 통해 원자력 발전 시설(20) 또는 에너지 분산 시설(40)을 제어할 수 있다.
원자력 발전 시설(20)과 에너지 분산 시설(40)은 각각 RTU(Remote Terminal Units, 21 및 41), PLC(Programmable Logic Controllers, 23, 27, 43 및 47), IED(Intelligent electronic devices, 25, 29, 45 및 49) 및 센서들(31, 33, 35, 37, 51, 53, 55 및 57)을 포함할 수 있다. 실시 예에 따라, 원자력 발전 시설(20)과 에너지 분산 시설(40)은 각각 RTU(21 및 41)와 센서들(31, 33, 35, 37, 51, 53, 55 및 57)로 구성될 수 있다.
센서(31, 33, 35, 37, 51, 53, 55 및 57)는 전기, 물, 석유 또는 가스와 관련된 소정의 정보 데이터를 수집하거나, 경고 알람을 위한 주변 환경을 모니터링하기 위해 이용될 수 있다. 센서(31, 33, 35, 37, 51, 53, 55 및 57)는 PLC(23, 27, 43 및 47)와 접속되거나, IED(25, 29, 45 및 49)와 접속된다. PLC(23, 27, 43 및 47)는 센서(31, 33, 35, 37, 51, 53, 55 및 57)로부터 출력되는 아날로그 신호를 디지털 데이터로 변환할 수 있다. IED(25, 29, 45, 및 49)는 센서(31, 33, 35, 37, 51, 53, 55 및 57)로부터 출력되는 신호를 수신하고, 제어 신호를 출력할 수 있다.
RTU(21 또는 41)는 중앙 제어 스테이션(10), PLC(23, 27, 43 및 47), 및 IED(25, 29, 45 및 49)와 접속된다. 즉, RTU(21 또는 41)는 PLC(23, 27, 43 및 47)로부터 출력되는 디지털 신호를 중앙 제어 스테이션(10)으로 전송하거나, IED(25, 29, 45 및 49)에 의해 생성되는 제어 신호를 중앙 제어 스테이션(10)으로 전송할 수 있다. RTU(21 또는 41)와 중앙 제어 스테이션(10) 사이의 산업 제어 시스템 통신 프로토콜은, 예를 들어, DNP3(Distributed Network Protocol)일 수 있다.
이하에서는 DNP3을 예로 산업 제어 시스템 통신 프로토콜의 소프트웨어의 취약성 검출 방법에 대해 설명될 것이다. RTU(21 또는 41)와 중앙 제어 스테이션(10) 사이의 산업 제어 시스템 통신을 위해 통신 프로토콜 소프트웨어가 RTU(21 또는 41)와 중앙 제어 스테이션(10)에 설치될 수 있다.
사이버 공격자들은 에너지 분산 시설(40) 내부의 IED(49)에 침투하여 RTU(21 또는 41)와 중앙 제어 스테이션(10)에 설치된 통신 프로토콜 소프트웨어의 취약성을 이용하여 원자력 발전 시설(20)의 내부(예컨대, RTU(21), 또는 IED(29))를 해킹하거나, 공격할 수 있다. 따라서 이러한 사이버 공격자들의 공격을 막기 위해 산업 제어 시스템 통신 프로토콜 소프트웨어의 취약성 검출 방법이 요구된다.
도 2는 도 1에 도시된 중앙 제어 스테이션과 RTU 사이의 산업 제어 시스템 통신 프로토콜 소프트웨어의 취약성을 검출하기 위한 시스템의 블록도를 나타낸다.
도 3은 도 2에 도시된 통신 프로토콜 소프트웨어의 취약성을 검출하기 위한 시스템의 동작을 설명하기 위한 흐름도를 나타낸다.
도 1 내지 도 3을 참조하면, 산업 제어 시스템 통신 프로토콜 소프트웨어의 취약성을 검출하기 위한 시스템(이하, 소프트웨어 취약성 검출 시스템이라 칭함, 200)은 산업 제어 시스템(100)에서 사용되는 통신 프로토콜 소프트웨어(210)의 취약성을 검출하기 위해 이용된다. 소프트웨어(210)는 RTU(21, 41), 또는 중앙 제어 스테이션(10)에 저장될 수 있다. 소프트웨어 취약성 검출 시스템(200)은 하드웨어 또는 소프트웨어로 구현될 수 있다.
소프트웨어 취약성 검출 시스템(200)은 필드 선택 모듈(230), 값 세트 설정 모듈(240), 테스트 케이스 생성 모듈(250), 테스트 모듈(260) 및 코드 커버리지 분석 모듈(270)을 포함한다.
본 명세서에 모듈(module)이라 함은 본 발명의 실시 예에 따른 기술적 사상을 수행하기 위한 하드웨어 및 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적 또는 구조적 결합을 의미할 수 있다. 예컨대, 상기 모듈은 소정의 프로그램 코드와 상기 프로그램 코드가 수행되기 위한 하드웨어 리소스의 논리적 또는 기능적 단위를 의미할 수 있으며 반드시 물리적으로 연결된 프로그램 코드를 의미하거나 한 종류의 하드웨어를 의미하는 것은 아니다.
필드 선택 모듈(230)은 소프트웨어(210)를 테스트하기 위해 산업 제어 시스템(100)의 통신 프로토콜의 메시지 필드들을 선택한다(S10). 예컨대, 산업 제어 시스템(100)의 통신 프로토콜이 DNP3이라 할 때, 필드 선택 모듈(230)은 메시지 필드들 중 N개의 메시지 필드들(FF1, FF2, ..., 및 FFn)을 임의적으로 선택할 수 있다. 상기 메시지 필드들은 함수 코드(function code) 또는 객체 그룹(object group)일 수 있다.
값 세트 설정 모듈(240)은 필드 선택 모듈(230)에서 선택된 메시지 필드들 각각에 대해 초기 값 세트들(또는 제1값 세트들)을 설정한다(S20). 초기 값 세트들(IVSk; 여기서 k는 자연수)은 유효 값 집합들(VFFk), 비유효 값 집합들(IFFk) 및 경계 값 집합들(BFFk)의 합집합이다. 예컨대, 제1 유효 값 집합(VFF1)이 {0~10, 129~130}, 제1 비유효 값 집합(IFF1)이 {49, 79, 91, 159, 252}, 제1 경계 값 집합(BFF1)이 {0~2, 253~255}일 때, 제1 초기 값 세트(IVS1)는 제1 유효 값 집합(VFF1), 제1 비유효 값 집합(IFF1), 및 제1 경계 값 집합(BFF1)의 합집합인 {0~10, 49, 79, 91, 129~130, 159, 252~255}이다.
테스트 케이스 생성 모듈(250)은 N(N은 자연수)개의 제1 값 세트들을 곱집합(Cartesian product)하여 제1 테스트 케이스들(test cases)을 생성한다(S30). 예컨대, 제1테스트 케이스들은 다음 수학식 1과 같이 생성될 수 있다.
Figure 112015104936238-pat00001
여기서 TCS는 제1 테스트 케이스를 나타내며, IVS1, IVS2, ..., 및 IVSN은 초기 값 세트들을 각각 나타내며, N은 자연수이다.
초기 퍼징 단계(initial fuzzing stage)는 메시지 필드들 선택 동작(S10), 초기 값 세트들 설정 동작(S20), 및 제1테스트 케이스들 생성 동작(S30)을 포함한다.
테스트 모듈(260)은 상기 제1 테스트 케이스들을 기초로 통신 프로토콜 소프트웨어(210)를 테스팅(testing)하여 제1 코드 커버리지 데이터(code coverage data)를 생성한다.
코드 커버리지 분석 모듈(270)은 상기 생성된 제1 코드 커버리지 데이터를 분석한다. 필드 선택 모듈(230)은 상기 분석에 따라 상기 메시지 필드들 중에서 상기 제1 코드 커버리지 데이터에 영향을 미치는 집중 메시지 필드들을 선택한다(S40).
구체적으로, 코드 커버리지 분석 모듈(270)은 K-평균 알고리즘(K-means algorithm)을 이용하여 상기 제1 코드 커버리지 데이터를 복수의 클래스들(Class, 예컨대, 하이(high), 미디움(medium) 및 로우(low))로 분류한다. 코드 커버리지 분석 모듈(270)은 다음 수학식 2와 같이 상기 메시지 필드들 각각에 대하여 상기 분류된 클래스들이 변수로 이용되는 카이 제곱 테스트(Chi-squared test)를 수행한다.
Figure 112015104936238-pat00002
여기서, VSk는 k번째 메시지 필드를, CC는 하이, 미디움 및 로우 중 어느 하나의 클래스를, Nec는 관찰 빈도수(observed frequency)를, Eec는 기대 빈도수(expected frequency)를, e는 VSk 집합의 원소를, c는 CC 집합의 원소를 나타낸다.
필드 선택 모듈(230)은 상기 테스트 결과에 따라 상기 메시지 필드들 중에서 상기 제1 코드 커버리지 데이터에 영향을 미치는 집중 메시지 필드들을 선택한다.
필드 선택 모듈(230)에 따라 상기 집중 메시지 필드들이 성공적으로 선택될 때, 값 세트 설정 모듈(240)은 상기 집중 메시지 필드들에 대해 상기 제1 값 세트들보다 넓은 범위를 가지는 제2 값 세트들을 설정한다. 예컨대, 제1 값 세트들이 {0~10, 49, 79, 91, 129~130, 159, 252~255}일 때, 제2 값 세트들은 {0~33, 49, 52, 63, 79, 83, 91, 107, 129~131, 159, 173, 250~255}일 수 있다. 이 때, 제1 값 세트들의 유효 값 집합(VFF1)은 {0~10, 129~130}, 제1 값 세트들의 비유효 값 집합(IFF1)은 {49, 79, 91, 159, 252}, 제1 값 세트들의 경계 값 집합(BFF1)은 {0~2, 253~255}이며, 제2 값 세트들의 유효 값 집합(VFF2)은 {0~33, 129~131}, 제2 값 세트들의 비유효 값 집합(IFF2)은 {49, 52, 63, 79, 83, 91, 107, 159, 173, 252}, 제2 값 세트들의 경계 값 집합(BFF2)은 {0~6, 250~255}일 수 있다.
테스트 케이스 생성 모듈(250)은 유사하게 상기 제2 값 세트들을 곱집합하여, 제2 테스트 케이스들을 생성한다. 테스트 모듈(260)은 상기 제2 테스트 케이스들을 기초로 소프트웨어(210)를 테스팅하여 제2 코드 커버리지 데이터를 생성한다(S50).
코드 커버리지 분석 모듈(270)은 K-평균 알고리즘(K-means algorithm)을 이용하여 상기 제2 코드 커버리지 데이터에 따라 상기 제2 테스트 케이스들을 하이, 미디움 및 로우로 분류한다.
값 세트 설정 모듈(240)은 하이로 분류된 상기 제2 테스트 케이스들에서 제3 값 세트들을 추출한다(S60).
값 세트 설정 모듈(240)은 상기 메시지 필드들 중 상기 집중 메시지 필드들을 제외한 나머지 메시지 필드들에 대해 상기 제1 값 세트들보다 넓은 범위를 가지는 제4 값 세트들을 설정한다(S70).
테스트 케이스 생성 모듈(260)은 상기 제3 값 세트들과 상기 제4 값 세트들을 곱집합하여 제3 테스트 케이스들을 생성한다(S80).
심화 퍼징 단계(deep fuzzing stage)는 집중 메시지 필드들 선택 동작(S40), 제2 코드 커버리지 데이터 생성 동작(S50), 제3 값 세트들 추출 동작(S60), 제4 값 세트들 설정 동작(S70), 및 제3 테스트 케이스들 생성 동작(S80)을 포함한다.
소프트웨어(210)의 취약성이 발견될 때까지 집중 메시지 필드들 선택 동작(S40), 제2 코드 커버리지 데이터 생성 동작(S50), 제3 값 세트들 추출 동작(S60), 제4 값 세트들 설정 동작(S70), 및 제3 테스트 케이스들 생성 동작(S80)이 반복된다.
실시 예에 따라 집중 메시지 필드들 선택 동작(S40)에서 성공적으로 집중 메시지 필드들이 선택되지 않을 때, 소프트웨어 취약성 검출 시스템(220)의 동작은 중단된다. 구체적인 예를 들면, 집중 메시지 필드들 선택 동작(S40)이 3회 연속으로 실패하면, 소프트웨어 취약성 검출 시스템(220)의 동작은 중단될 수 있다. 그러나, 본 발명의 기술적 사상이 이에 한정되는 것은 아니며, 소프트웨어 취약성 검출 시스템(220)의 동작 중단을 결정하는 집중 메시지 필드들의 선택 실패 횟수는 테스트 환경 등에 따라 다양하게 설정될 수 있다.
이상, 본 발명을 바람직한 실시예를 들어 상세하게 설명하였으나, 본 발명은 상기 실시예에 한정되지 않고, 본 발명의 기술적 사상 및 범위 내에서 당 분야에서 통상의 지식을 가진 자에 의하여 여러가지 변형 및 변경이 가능하다.
100: 산업 제어 시스템
10: 중앙 제어 스테이션
20: 원자력 발전 시설
40: 에너지 분산 시설
21, 41: RTU
23, 27, 43, 47: PLC
25, 29, 45, 및 49: IED
31, 33, 35, 37, 51, 53, 55, 및 57; 센서들
200: 산업 제어 시스템 통신 프로토콜의 소프트웨어 취약성 검출 시스템
230: 필드 선택 모듈
240: 값 세트 설정 모듈
250: 테스트 케이스 생성 모듈
260: 테스트 모듈
270: 코드 커버리지 분석 모듈

Claims (8)

  1. 산업 제어 시스템 통신 프로토콜의 메시지 필드들 각각에 대해 설정된 제1 값 세트들을 곱집합(Cartesian product)하여 제1 테스트 케이스들(test cases)을 생성하는 단계;
    상기 제1 테스트 케이스들을 기초로 상기 산업 제어 시스템 통신 프로토콜의 소프트웨어를 테스팅(testing)하여 제1 코드 커버리지 데이터(code coverage data)를 생성하고, 상기 생성된 제1 코드 커버리지 데이터에 따라 상기 메시지 필드들 중에서 상기 제1 코드 커버리지 데이터에 영향을 미치는 집중 메시지 필드들을 선택하는 단계;
    상기 집중 메시지 필드들에 대해 상기 제1 값 세트들보다 넓은 범위를 가지는 제2 값 세트들을 곱집합하여 제2 테스트 케이스들을 생성하고, 상기 제2 테스트 케이스들을 기초로 상기 소프트웨어를 테스팅하여 제2 코드 커버리지 데이터를 생성하는 단계;
    상기 제2 코드 커버리지 데이터에 따라 상기 제2 테스트 케이스들을 분류하고, 상기 분류된 제2 테스트 케이스들에서 제3 값 세트들을 추출하는 단계;
    상기 메시지 필드들 중 상기 집중 메시지 필드들을 제외한 나머지 메시지 필드들에 대해 상기 제1 값 세트들보다 넓은 범위를 가지는 제4 값 세트들을 설정하는 단계; 및
    상기 제3 값 세트들과 상기 제4 값 세트들을 곱집합하여 제3 테스트 케이스들을 생성하는 단계를 포함하고,
    상기 집중 메시지 필드들을 선택하는 단계는,
    K-평균 알고리즘을 이용하여 상기 제1 코드 커버리지 데이터를 복수의 클래스들로 분류하고, 상기 메시지 필드들 각각에 대해 상기 분류된 클래스들이 변수로 이용되는 카이 제곱 테스트(Chi-squared test)를 수행하여 테스트 결과에 따라 상기 집중 메시지 필드들을 선택하는, 통신 프로토콜 소프트웨어의 취약성 검출 방법.
  2. 삭제
  3. 제1 항에 있어서,
    상기 통신 프로토콜 소프트웨어의 취약성 검출 방법은,
    상기 통신 프로토콜 소프트웨어의 취약성을 검출할 때까지 상기 집중 메시지 필드들을 선택하는 단계, 상기 소프트웨어를 테스팅하여 상기 제2 코드 커버리지 데이터를 생성하는 단계, 상기 제3 값 세트들을 추출하는 단계, 상기 제4 값 세트들을 설정하는 단계, 및 상기 제3 테스트 케이스들을 생성하는 단계가 반복적으로 수행되는 통신 프로토콜 소프트웨어의 취약성 검출 방법.
  4. 산업 제어 시스템 통신 프로토콜의 메시지 필드들을 선택하는 필드 선택 모듈;
    상기 필드 선택 모듈에서 선택된 메시지 필드들 각각에 대해 제1 값 세트들을 설정하는 값 세트 설정 모듈;
    상기 제1 값 세트들을 곱집합하여 제1 테스트 케이스들을 생성하는 테스트 케이스 생성 모듈;
    상기 제1 테스트 케이스들을 기초로 상기 산업 제어 시스템 통신 프로토콜의 소프트웨어를 테스팅하여 제1 코드 커버리지 데이터를 생성하는 테스트 모듈; 및
    K-평균 알고리즘을 이용하여 상기 제1 코드 커버리지 데이터를 복수의 클래스들로 분류하고, 상기 메시지 필드들 각각에 대해 상기 분류된 클래스들이 변수로 이용되는 카이 제곱 테스트(Chi-squared test)를 수행하여 상기 제1 코드 커버리지 데이터를 분석하는 코드 커버리지 분석 모듈;을 포함하되,
    상기 필드 선택 모듈은, 상기 코드 커버리지 분석 모듈의 분석에 따라 상기 메시지 필드들 중에서 상기 제1 코드 커버리지 데이터에 영향을 미치는 집중 메시지 필드들을 선택하는, 통신 프로토콜 소프트웨어의 취약성 검출 시스템.
  5. 삭제
  6. 제4 항에 있어서,
    상기 값 세트 설정 모듈은,
    상기 집중 메시지 필드들에 대해 상기 제1 값 세트들보다 넓은 범위를 가지는 제2 값 세트들을 설정하고,
    상기 테스트 케이스 생성 모듈은,
    상기 제2 값 세트들을 곱집합하여 제2 테스트 케이스들을 생성하고,
    상기 테스트 모듈은,
    상기 제2 테스트 케이스들을 기초로 상기 소프트웨어를 테스팅하여 제2 코드 커버리지 데이터를 생성하는 통신 프로토콜 소프트웨어의 취약성 검출 시스템.
  7. 제6 항에 있어서,
    상기 코드 커버리지 분석 모듈은,
    상기 K-평균 알고리즘을 이용하여 상기 제2 코드 커버리지 데이터에 따라 상기 제2 테스트 케이스들을 상기 복수의 클래스들로 분류하고,
    상기 값 세트 설정 모듈은,
    상기 복수의 클래스들 중 하이로 분류된 제2 테스트 케이스들에서 제3 값 세트들을 추출하는 통신 프로토콜 소프트웨어의 취약성 검출 시스템.
  8. 제7 항에 있어서,
    상기 값 세트 설정 모듈은,
    상기 메시지 필드들 중 상기 집중 메시지 필드들을 제외한 나머지 메시지 필드들에 대해 상기 제1 값 세트들보다 넓은 범위를 가지는 제4 값 세트들을 설정하고,
    상기 테스트 케이스 생성 모듈은,
    상기 제3 값 세트들과 상기 제4 값 세트들을 곱집합하여 제3 테스트 케이스들을 생성하는 통신 프로토콜 소프트웨어의 취약성 검출 시스템.
KR1020150150410A 2015-10-28 2015-10-28 통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템 KR101689795B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150150410A KR101689795B1 (ko) 2015-10-28 2015-10-28 통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템
US15/200,051 US10185831B2 (en) 2015-10-28 2016-07-01 Method and system for detecting vulnerabilities of communication protocol software

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150150410A KR101689795B1 (ko) 2015-10-28 2015-10-28 통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR101689795B1 true KR101689795B1 (ko) 2016-12-26

Family

ID=57733723

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150150410A KR101689795B1 (ko) 2015-10-28 2015-10-28 통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템

Country Status (2)

Country Link
US (1) US10185831B2 (ko)
KR (1) KR101689795B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857669A (zh) * 2019-02-13 2019-06-07 杭州孝道科技有限公司 一种基于JavaAgent的JavaWEB应用程序漏洞检测方法
KR20190107373A (ko) 2018-03-12 2019-09-20 주식회사 아이오티큐브 네트워크 프로토콜의 취약점을 탐지하는 퍼징 방법 및 장치
KR20210088242A (ko) * 2020-01-06 2021-07-14 한국과학기술원 코드 커버리지를 이용하는 sdn에 대한 퍼징방법
KR102598691B1 (ko) 2022-12-15 2023-11-06 이화여자대학교 산학협력단 기계학습모델을 이용한 소프트웨어의 변수 취약점을 탐지하는 방법

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10581686B2 (en) * 2017-03-02 2020-03-03 Schweitzer Engineering Laboratories, Inc. Automatic configuration in a distributed network
US10826324B2 (en) * 2017-05-18 2020-11-03 Schweitzer Engineering Laboratories, Inc. Mitigation of gratuitous conditions on electric power delivery systems
CN107341109B (zh) * 2017-07-07 2021-07-16 中国银行股份有限公司 一种测试数据的生成方法和系统
CN110928758B (zh) * 2018-09-19 2024-04-05 北京京东尚科信息技术有限公司 生成测试用例的方法和装置
CN110502441B (zh) * 2019-08-12 2022-02-18 中核控制系统工程有限公司 基于vba的dcs单体测试用例自动生成方法
CN112104525B (zh) * 2020-09-18 2021-07-30 西安科技大学 基于序列生成对抗网络的dnp3协议模糊测试方法
CN112181856B (zh) * 2020-11-02 2022-04-22 浙江中控技术股份有限公司 一种加密工控协议测试方法及装置
CN112565026B (zh) * 2021-02-20 2021-06-04 支付宝(杭州)信息技术有限公司 测试帧的生成方法、装置及设备
CN114944997B (zh) * 2022-03-24 2024-02-20 浙江大华技术股份有限公司 一种协议检测方法、协议检测装置和计算机可读存储介质
CN115604037B (zh) * 2022-12-13 2023-05-30 广州市盛通建设工程质量检测有限公司 一种故障监测系统的通信安全测试方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120259576A1 (en) * 2011-04-07 2012-10-11 Infosys Technologies, Ltd. System and method for efficient test case generation using input dependency information

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1483739A2 (en) * 2001-09-27 2004-12-08 BRITISH TELECOMMUNICATIONS public limited company Method and apparatus for data analysis
KR100916329B1 (ko) 2007-11-01 2009-09-11 한국전자통신연구원 소프트웨어 취약점 점검 장치 및 방법
US8136095B2 (en) * 2007-12-19 2012-03-13 Microsoft Corporation Relations in fuzzing data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120259576A1 (en) * 2011-04-07 2012-10-11 Infosys Technologies, Ltd. System and method for efficient test case generation using input dependency information

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
정종근 외 2명, "네트워크에서 에이전트 학습을 이용한 침입탐지시스템 모델", 한국해양정보통신학회논문지 제6권 제8호 (2002.) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190107373A (ko) 2018-03-12 2019-09-20 주식회사 아이오티큐브 네트워크 프로토콜의 취약점을 탐지하는 퍼징 방법 및 장치
CN109857669A (zh) * 2019-02-13 2019-06-07 杭州孝道科技有限公司 一种基于JavaAgent的JavaWEB应用程序漏洞检测方法
KR20210088242A (ko) * 2020-01-06 2021-07-14 한국과학기술원 코드 커버리지를 이용하는 sdn에 대한 퍼징방법
KR102357710B1 (ko) * 2020-01-06 2022-02-03 한국과학기술원 코드 커버리지를 이용하는 sdn에 대한 퍼징방법
KR102598691B1 (ko) 2022-12-15 2023-11-06 이화여자대학교 산학협력단 기계학습모델을 이용한 소프트웨어의 변수 취약점을 탐지하는 방법

Also Published As

Publication number Publication date
US10185831B2 (en) 2019-01-22
US20170124333A1 (en) 2017-05-04

Similar Documents

Publication Publication Date Title
KR101689795B1 (ko) 통신 프로토콜 소프트웨어의 취약성 검출 방법 및 시스템
KR101538709B1 (ko) 산업제어 네트워크를 위한 비정상 행위 탐지 시스템 및 방법
Adepu et al. Generalized attacker and attack models for cyber physical systems
US10261502B2 (en) Modbus TCP communication behaviour anomaly detection method based on OCSVM dual-outline model
Lin et al. Cyber attack and defense on industry control systems
Shirazi et al. Evaluation of anomaly detection techniques for scada communication resilience
US9191398B2 (en) Method and system for alert classification in a computer network
US10356113B2 (en) Apparatus and method for detecting abnormal behavior
MX2014003067A (es) Deteccion de intrusion ciberfisica inteligente y sistemas de prevencion y metodos para sistemas de control industrial.
Faramondi et al. A hardware-in-the-loop water distribution testbed dataset for cyber-physical security testing
US10547634B2 (en) Non-intrusive digital agent for behavioral monitoring of cybersecurity-related events in an industrial control system
CN108280348B (zh) 基于rgb图像映射的安卓恶意软件识别方法
KR102001813B1 (ko) Dnn 알고리즘을 이용한 비표준 프로토콜 페이로드 이상행위 탐지 장치 및 방법
WO2018208715A1 (en) Multilevel intrusion detection in automation and control systems
CN110266670A (zh) 一种终端网络外联行为的处理方法及装置
CN105512027A (zh) 进程状态监控方法和装置
KR102500033B1 (ko) 산업제어시스템의 이상징후를 감지하는 방법 및 장치
KR101281456B1 (ko) 자기 유사성을 이용한 scada 네트워크의 이상증후를 탐지하는 장치 및 방법
Iturbe et al. On the feasibility of distinguishing between process disturbances and intrusions in process control systems using multivariate statistical process control
CN105427507A (zh) 火灾监测方法及装置
CN102710349B (zh) 一种脉冲干扰环境下基于数据挑选的频谱感知方法
Kiss et al. Denial of service attack detection in case of tennessee eastman challenge process
Elkanishy et al. Supervising communication SoC for secure operation using machine learning
Wan et al. Function‐Aware Anomaly Detection Based on Wavelet Neural Network for Industrial Control Communication
Peng et al. Industrial control system fingerprinting and anomaly detection

Legal Events

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

Payment date: 20191008

Year of fee payment: 4