KR20200093455A - Method and system for network protocol state inference through reverse engineering - Google Patents
Method and system for network protocol state inference through reverse engineering Download PDFInfo
- Publication number
- KR20200093455A KR20200093455A KR1020200008698A KR20200008698A KR20200093455A KR 20200093455 A KR20200093455 A KR 20200093455A KR 1020200008698 A KR1020200008698 A KR 1020200008698A KR 20200008698 A KR20200008698 A KR 20200008698A KR 20200093455 A KR20200093455 A KR 20200093455A
- Authority
- KR
- South Korea
- Prior art keywords
- messages
- protocol
- length
- information
- clustered
- Prior art date
Links
Images
Classifications
-
- 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/18—Protocol analysers
-
- 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/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/18—Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
아래 실시예들은 역공학을 통한 네트워크 프로토콜 상태 추론 방법 및 시스템에 관한 것이다.The embodiments below relate to a method and system for network protocol state inference through reverse engineering.
최근 인터넷 환경에서는 다양한 프로토콜(protocol)을 통해 많은 정보 교환이 이루어지고 있다. 호스트(host)들은 정보를 교환하기 위해 메시지를 주고받는다. 호스트들은 대부분 공개된 국제 표준 프로토콜이나 TCP(Transmission Control Protocol)와 같은 범용적인 프로토 콜을 통해 통신을 수행한다. 하지만, 기존의 프로토콜은 사물 인터넷(IoT, Internet of Things) 및 클라우드(cloud)와 같은 새로운 분야가 발전하고 점차 생활에 밀접한 관계를 띄기 시작함에 따라 한계점이 나타나기 시작했다. 예를 들어, 기존의 TCP 프로토콜은 신뢰성이 보장되지만, IoT 기기등에서 활용하기에는 너무 무거워서 지연이 발생한다.In the recent Internet environment, a lot of information exchange has been performed through various protocols. Hosts exchange messages to exchange information. Most hosts communicate through public protocols such as the published international standard protocol or Transmission Control Protocol (TCP). However, existing protocols began to show limitations as new fields such as the Internet of Things (IoT) and the cloud developed and gradually began to have a close relationship with life. For example, the reliability of the existing TCP protocol is guaranteed, but it is too heavy to be used in IoT devices, so a delay occurs.
기존의 프로토콜은 이러한 문제점이 발생함에 따라 경량화 혹은 속도 향상 등 다양한 연구를 통해 새로운 프로토콜이 개발되었다. 새로운 프로토콜의 개발은 서비스의 품질 등 편의성 면에서는 많은 개선이 되었지만, 반대로 보안과 같은 분야에서는 퇴보하여 새로운 문제가 대두되기 시작하였다.As these problems occurred, new protocols were developed through various studies such as weight reduction or speed improvement. The development of a new protocol has improved a lot in terms of convenience, such as quality of service, but on the contrary, in the field of security, new problems have started to emerge.
보안의 측면에서는 프로토콜의 구조나 논리가 공개되지 않았거나 제한적으로 공개된 경우 통상적인 방법으로는 해당 프로토콜의 정보를 알 수 없다. 이는 프로토콜을 관리하거나 통제할 방안이 없다는 점을 의미하기도 한다. 이러한 프로토콜 외에도 자체적으로 개발되거나 수정이 가해진 프로토콜의 경우 암호화, 혼잡 제어 등의 기능이 지원되지 않는 경우가 상당수 존재하며 이로 인해 네트워크의 다양한 문제점과 보안 문제가 발생한다.In the aspect of security, if the structure or logic of the protocol is not disclosed or is limitedly disclosed, the information of the protocol cannot be known by the conventional method. This also means that there is no way to manage or control the protocol. In addition to these protocols, in the case of protocols developed or modified in-house, there are many cases in which functions such as encryption and congestion control are not supported, and this causes various problems and security problems in the network.
실시예들은 프로토콜(protocol)에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보와, 현재까지 수신된 메시지의 길이를 이용하여 프로토콜의 상태를 결정할 수 있는 기술을 제공할 수 있다.Embodiments can provide a technique for determining the state of a protocol by using syntax information, semantics information, and timing information for a protocol, and the length of a message received so far. have.
일 실시예에 따른 프로토콜 상태 결정 방법은, 복수의 호스트(host)들로부터 적어도 하나 이상의 프로토콜(protocol)을 통해 전송된 제1 복수의 메시지들 및 제2 복수의 메시지들을 수신하는 단계와, 상기 복수의 제1 메시지들에 기초하여 상기 적어도 하나 이상의 프로토콜에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보를 획득하는 단계와, 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보와, 상기 제2 복수의 메시지들의 현재까지 수신된 메시지의 길이를 이용하여 상기 적어도 하나 이상의 프로토콜의 상태를 결정하는 단계를 포함한다.A method for determining a protocol status according to an embodiment includes receiving a first plurality of messages and a second plurality of messages transmitted through at least one protocol from a plurality of hosts, and the plurality of messages Obtaining syntax information, semantics information, and timing information for the at least one protocol based on the first messages of the; and the syntax information, the semantic information, and the timing information. And determining the status of the at least one protocol using the length of the message received to date of the second plurality of messages.
상기 획득하는 단계는, 상기 제1 복수의 메시지들을 상기 제1 복수의 메시지들 각각의 전송에 이용된 프로토콜별로 군집화(clustering)하는 단계와, 군집화된 제1 복수의 메시지들을 이용하여, 상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득하는 단계를 포함할 수 있다.The acquiring may include clustering the first plurality of messages for each protocol used for transmission of each of the first plurality of messages, and clustering the first plurality of messages using the clustered first plurality of messages. And obtaining the syntax information, the semantic information, and the timing information for a protocol corresponding to the first plurality of messages.
상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득하는 단계는, 상기 군집화된 제1 복수의 메시지들에 대한 전체 필드(field) 및 상기 군집화된 제1 복수의 메시지들에 대한 정적 필드(static field)를 이용하여 상기 구문 정보를 생성하는 단계와, 상기 군집화된 제1 복수의 메시지들 및 상기 정적 필드를 이용하여 상기 타이밍 정보를 생성하는 단계와, 상기 구문 정보 및 상기 타이밍 정보에 기초하여 상기 의미 정보를 생성하는 단계를 포함할 수 있다.The obtaining of the syntax information, the semantic information, and the timing information for a protocol corresponding to the clustered first plurality of messages may include: an entire field and the field for the clustered first plurality of messages. Generating the syntax information using a static field for the first clustered messages, and generating the timing information using the clustered first plurality of messages and the static fields And generating the semantic information based on the syntax information and the timing information.
상기 구문 정보를 생성하는 단계는, 상기 군집화된 제1 복수의 메시지들로부터 상기 정적 필드를 추출하는 단계와, 상기 정적 필드에서 일정한 길이로 반복되는 키워드(keyword)를 추출하는 단계와, 상기 키워드의 길이 및 상기 전체 필드의 길이를 이용하여 상기 군집화된 제1 복수의 메시지들에 대한 데이터의 길이를 계산하는 단계와, 상기 데이터의 길이, 상기 전체 필드의 길이 및 상기 키워드의 길이를 이용하여 상기 구문 정보를 생성하는 단계를 포함할 수 있다.The generating of the syntax information may include extracting the static field from the clustered first plurality of messages, extracting a keyword repeated in a certain length from the static field, and extracting the keyword. Calculating a length of data for the clustered first plurality of messages using a length and a length of the entire field, and using the length of the data, the length of the entire field and the length of the keyword And generating information.
상기 타이밍 정보를 생성하는 단계는, 상기 군집화된 제1 복수의 메시지들의 수신 순서에 대응하는 상기 군집화된 제1 복수의 메시지들 각각의 키워드의 순서에 기초하여 상기 타이밍 정보를 생성하는 단계를 포함할 수 있다.The generating of the timing information may include generating the timing information based on an order of keywords of each of the clustered first plurality of messages corresponding to an order of receiving the clustered first plurality of messages. Can.
상기 의미 정보를 생성하는 단계는, 상기 구문 정보를 이용하여 상기 제1 복수의 메시지들 중에서 적어도 하나 이상의 제1 데이터 메시지를 선택하는 단계와, 상기 제1 데이터 메시지 및 상기 타이밍 정보를 이용하여 상기 의미 정보를 생성하는 단계를 포함할 수 있다.The generating of the semantic information may include selecting at least one first data message among the first plurality of messages using the syntax information, and using the first data message and the timing information And generating information.
상기 결정하는 단계는, 상기 타이밍 정보 및 상기 의미 정보를 이용하여 상기 제2 복수의 메시지들 중에서 적어도 하나 이상의 제2 데이터 메시지를 선택하는 단계와, 상기 전체 필드의 길이와 같은 길이를 가지는 버퍼(buffer)를 생성하는 단계와, 상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 결정하는 단계를 포함할 수 있다.The determining may include selecting at least one second data message from the second plurality of messages using the timing information and the semantic information, and a buffer having a length equal to the length of the entire field. ), and the state of the protocol corresponding to the at least one second data message according to whether the length of the buffer and the length of the received message of the at least one second data message are the same. And determining.
상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 프로토콜의 상태를 결정하는 단계는, 상기 버퍼의 길이와 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신이 완료된 것으로 결정하는 단계와, 상기 버퍼의 길이와 상기 적어도 하나 이상의 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일하지 않은 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신중인 것으로 결정하는 단계를 포함할 수 있다.Determining the state of the at least one protocol according to whether the length of the buffer and the length of the received message of the at least one or more second data messages are the same include: the length of the buffer and the at least one or more Determining that the state of the protocol corresponding to the at least one second data message is completed when the length of the received message to the present is the same, and the length of the buffer and the at least one data And when the length of the received message so far is not the same, determining that the status of the protocol corresponding to the at least one second data message is being received.
상기 방법은, 상기 키워드에 퍼즈 테스팅(Fuzz testing)을 수행하여 상기 복수의 제1 메시지들에 대한 전송 과정에서의 오류를 판단하는 단계를 더 포함할 수 있다.The method may further include performing fuzz testing on the keyword to determine an error in the transmission process of the plurality of first messages.
일 실시예에 따른 프로토콜 상태 결정 장치는, 프로토콜의 상태 결정을 위한 인스트럭션들을 저장하는 메모리와, 상기 인스트럭션들을 실행하기 위한 프로세서를 포함하고, 상기 인스트럭션들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는, 복수의 호스트(host)들로부터 적어도 하나 이상의 프로토콜(protocol)을 통해 전송된 제1 복수의 메시지들 및 제2 복수의 메시지들을 수신하고, 상기 복수의 제1 메시지들에 기초하여 상기 적어도 하나 이상의 프로토콜에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보를 획득하고, 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보와, 상기 제2 복수의 메시지들의 현재까지 수신된 메시지의 길이를 이용하여 상기 적어도 하나 이상의 프로토콜의 상태를 결정한다.An apparatus for determining a protocol state according to an embodiment includes a memory for storing instructions for determining a state of a protocol, and a processor for executing the instructions, and when the instructions are executed by the processor, the processor includes a plurality of The first plurality of messages and the second plurality of messages transmitted through at least one protocol (protocol) from the hosts (host) of the, and based on the plurality of first messages to the at least one protocol Syntax information, semantics information, and timing information for acquiring, and obtaining the syntax information, the semantic information, and the timing information, and the length of a message received to date of the second plurality of messages Use to determine the state of the at least one protocol.
상기 프로세서는, 상기 제1 복수의 메시지들을 상기 제1 복수의 메시지들 각각의 전송에 이용된 프로토콜별로 군집화(clustering)하고, 군집화된 제1 복수의 메시지들을 이용하여, 상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득할 수 있다.The processor clusters the first plurality of messages for each protocol used for transmission of each of the first plurality of messages, and uses the grouped first plurality of messages to cluster the first plurality of messages. The syntax information, the semantic information, and the timing information for a protocol corresponding to messages may be obtained.
상기 프로세서는, 상기 군집화된 제1 복수의 메시지들에 대한 전체 필드(field) 및 상기 군집화된 제1 복수의 메시지들에 대한 정적 필드(static field)를 이용하여 상기 구문 정보를 생성하고, 상기 군집화된 제1 복수의 메시지들 및 상기 정적 필드를 이용하여 상기 타이밍 정보를 생성하고, 상기 구문 정보 및 상기 타이밍 정보에 기초하여 상기 의미 정보를 생성할 수 있다.The processor generates the syntax information using the entire field for the clustered first plurality of messages and a static field for the clustered first plurality of messages, and the clustering is performed. The timing information may be generated using the first plurality of messages and the static field, and the semantic information may be generated based on the syntax information and the timing information.
상기 프로세서는, 상기 군집화된 제1 복수의 메시지들로부터 상기 정적 필드를 추출하고, 상기 정적 필드에서 일정한 길이로 반복되는 키워드(keyword)를 추출하고, 상기 키워드의 길이 및 상기 전체 필드의 길이를 이용하여 상기 군집화된 제1 복수의 메시지들에 대한 데이터의 길이를 계산하고, 상기 데이터의 길이, 상기 전체 필드의 길이 및 상기 키워드의 길이를 이용하여 상기 구문 정보를 생성할 수 있다.The processor extracts the static field from the clustered first plurality of messages, extracts a keyword repeated in a constant length from the static field, and uses the length of the keyword and the length of the entire field By calculating the length of data for the clustered first plurality of messages, the syntax information may be generated using the length of the data, the length of the entire field, and the length of the keyword.
상기 프로세서는, 상기 군집화된 제1 복수의 메시지들의 수신 순서에 대응하는 상기 군집화된 제1 복수의 메시지들 각각의 키워드의 순서에 기초하여 상기 타이밍 정보를 생성할 수 있다.The processor may generate the timing information based on the order of keywords of each of the clustered first plurality of messages corresponding to the order of receiving the clustered first plurality of messages.
상기 프로세서는, 상기 구문 정보를 이용하여 상기 제1 복수의 메시지들 중에서 적어도 하나 이상의 제1 데이터 메시지를 선택하고, 상기 제1 데이터 메시지 및 상기 타이밍 정보를 이용하여 상기 의미 정보를 생성할 수 있다.The processor may select at least one first data message from the first plurality of messages using the syntax information, and generate the semantic information using the first data message and the timing information.
상기 프로세서는, 상기 타이밍 정보 및 상기 의미 정보를 이용하여 상기 제2 복수의 메시지들 중에서 적어도 하나 이상의 제2 데이터 메시지를 선택하고, 상기 전체 필드의 길이와 같은 길이를 가지는 버퍼(buffer)를 생성하고, 상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 결정할 수 있다.The processor selects at least one second data message from the second plurality of messages using the timing information and the semantic information, and generates a buffer having a length equal to the length of the entire field. , The state of the protocol corresponding to the at least one second data message may be determined according to whether the length of the buffer and the length of the at least one second data message received so far are the same.
상기 프로세서는, 상기 버퍼의 길이와 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신이 완료된 것으로 결정하고, 상기 버퍼의 길이와 상기 적어도 하나 이상의 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일하지 않은 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신중인 것으로 결정할 수 있다.The processor, when the length of the buffer and the length of the received message to the present time of the at least one or more second data messages are the same, determines that the state of the protocol corresponding to the at least one or more second data messages is completed. , When the length of the buffer and the length of the at least one data message received so far are not the same, it may be determined that the state of a protocol corresponding to the at least one second data message is being received.
상기 프로세서는, 상기 키워드에 퍼즈 테스팅(Fuzz testing)을 수행하여 상기 복수의 제1 메시지들에 대한 전송 과정에서의 오류를 판단할 수 있다.The processor may perform an fuzz testing on the keyword to determine an error in the transmission process of the plurality of first messages.
도 1은 일 실시예에 따른 프로토콜 상태 결정을 위한 시스템을 나타낸 도면이다.
도 2는 시스템이 구현된 일 예를 개략적으로 나타낸 도면이다.
도 3은 시스템이 구현된 다른 예를 개략적으로 나타낸 도면이다.
도 4는 도 2에 도시된 상태 결정 장치가 이용하는 커널 바이패스(Kernel-Bypass) 구조의 일 예를 나타낸 도면이다.
도 5는 상태 결정 장치의 동작을 개략적으로 나타낸 순서도이다.
도 6은 도 1에 도시된 상태 결정 장치를 개략적으로 나타낸 도면이다.
도 7 내지 도 9는 상태 결정 장치가 복수의 메시지들에 대해 수행하는 군집화를 설명하기 위한 도면이다.
도 10 내지 도 12는 상태 결정 장치가 구문 정보 및 키워드를 획득하는 동작을 설명하기 위한 도면이다.
도 13은 상태 결정 장치가 타이밍 정보 및 의미 정보를 생성하는 과정을 설명하기 위한 도면이다.
도 14는 상태 결정 장치가 수행하는 퍼즈 테스팅에 대한 설명을 위한 도면이다.
도 15는 상태 결정 장치가 프로토콜의 상태를 결정하기 위해 이용하는 알고리즘의 일 예를 나타낸다.
도 16은 다른 실시예에 따른 시스템을 메시지 및 ACK의 송수신을 중심으로 개략적으로 나타낸 도면이다.
도 17 내지 도 24는 상태 결정 장치의 성능 평가 결과를 설명하기 위한 도면이다.1 is a diagram illustrating a system for protocol state determination according to an embodiment.
2 is a diagram schematically showing an example in which the system is implemented.
3 is a diagram schematically showing another example in which the system is implemented.
FIG. 4 is a diagram illustrating an example of a kernel-bypass structure used by the state determination device illustrated in FIG. 2.
5 is a flowchart schematically showing the operation of the state determination device.
FIG. 6 is a diagram schematically showing a state determination device illustrated in FIG. 1.
7 to 9 are diagrams for explaining clustering performed by the state determination apparatus on a plurality of messages.
10 to 12 are diagrams for describing an operation of the state determining device to acquire syntax information and keywords.
13 is a diagram for explaining a process in which the state determination device generates timing information and semantic information.
14 is a diagram for description of fuzz testing performed by a state determination device.
15 shows an example of an algorithm used by the state determining device to determine the state of the protocol.
16 is a diagram schematically showing a system according to another embodiment with a focus on transmission and reception of messages and ACKs.
17 to 24 are diagrams for explaining the performance evaluation results of the state determination device.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. However, various changes may be made to the embodiments, and the scope of the patent application right is not limited or limited by these embodiments. It should be understood that all modifications, equivalents, or substitutes for the embodiments are included in the scope of rights.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the examples are used for illustrative purposes only and should not be construed as limiting. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this specification, terms such as “include” or “have” are intended to indicate that a feature, number, step, operation, component, part, or combination thereof described on the specification exists, and that one or more other features are present. It should be understood that the existence or addition possibilities of fields or numbers, steps, operations, components, parts or combinations thereof are not excluded in advance.
제1 또는 제2 등의 용어가 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해서 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 실시예의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Terms such as first or second may be used to describe various components, but the components should not be limited by terms. The terms are for the purpose of distinguishing one component from another component, for example, without departing from the scope of rights according to the concept of the embodiment, the first component may be referred to as the second component, and similarly The second component may also be referred to as the first component.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by a person skilled in the art to which the embodiment belongs. Terms, such as those defined in a commonly used dictionary, should be interpreted as having meanings consistent with meanings in the context of related technologies, and should not be interpreted as ideal or excessively formal meanings unless explicitly defined in the present application. Does not.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.In addition, in the description with reference to the accompanying drawings, the same reference numerals are assigned to the same components regardless of reference numerals, and redundant descriptions thereof will be omitted. In describing the embodiments, when it is determined that detailed descriptions of related known technologies may unnecessarily obscure the subject matter of the embodiments, the detailed descriptions will be omitted.
도 1은 일 실시예에 따른 프로토콜 상태 결정을 위한 시스템을 나타낸 도면이고, 도 2는 시스템이 구현된 일 예를 개략적으로 나타낸 도면이고, 도 3은 시스템이 구현된 다른 예를 개략적으로 나타낸 도면이고, 도 4는 도 2에 도시된 상태 결정 장치가 이용하는 커널 바이패스(Kernel-Bypass) 구조의 일 예를 나타낸 도면이고, 도 5는 상태 결정 장치의 동작을 개략적으로 나타낸 순서도이다.1 is a diagram illustrating a system for determining a protocol state according to an embodiment, FIG. 2 is a diagram schematically showing an example in which the system is implemented, and FIG. 3 is a diagram schematically showing another example in which the system is implemented , FIG. 4 is a diagram illustrating an example of a kernel-bypass structure used by the state determination apparatus shown in FIG. 2, and FIG. 5 is a flowchart schematically showing the operation of the state determination apparatus.
시스템(10)은 복수의 호스트들(100) 및 상태 결정 장치(300)를 포함한다.The
시스템(10)은 구조나 논리를 모르는 전송 계층의 프로토콜을 패킷 트레이스(Trace)를 기반으로 프로토콜 역공학(reverse engineering)을 수행하여 프로토콜에 대한 정보와 상태를 추론할 수 있다.The
프로토콜 역공학이란, 프로토콜을 분석하여 현재 프로토콜의 구성 요소와 그 의존성을 파악하고, 프로토콜을 추상화하고, 프로토콜의 설계 정보를 추출 및 생성하는 과정을 의미할 수 있다. 시스템(10)은 군집화(clustering)와 같은 다양한 자동화 방법을 통해 각 프로토콜의 특징으로부터 구조와 상태를 분석할 수 있다.Protocol reverse engineering may mean a process of analyzing a protocol to grasp the components of a current protocol and its dependencies, abstracting the protocol, and extracting and generating design information of the protocol. The
시스템(10)은 프로토콜 역공학을 1) 프로토콜 메시지의 종류, 구조, 및 크기의 분석, 2) 상태 머신(State-Machine)을 통한 상관 관계의 분석을 통해 수행할 수 있다.The
복수의 호스트들(100)은 네트워크(1000)를 통해 통신을 수행할 수 있다. 예를 들어, 복수의 호스트들(100)은 상태 결정 장치(300)와 직접 연결되어 통신을 수행할 수 있다. 복수의 호스트들(100)은 복수의 메시지들을 송신 및 수신할 수 있다.The plurality of
상태 결정 장치(300)는 복수의 호스트들(100)로부터 적어도 하나 이상의 프로토콜을 통해 전송된 복수의 메시지들을 수신 및/또는 캡쳐할 수 있다. 상태 결정 장치(300)는 복수의 메시지들에 기초하여 프로토콜의 상태를 결정할 수 있다.The
상태 결정 장치(300)는 복수의 호스트들(100)끼리 메시지를 교환하는 과정에서 발생하는 네트워크 트레이스를 기반으로 프로토콜의 구조나 논리를 역공학을 통해 분석할 수 있다.The
상태 결정 장치(300)는 FSM(Finite State Machine)을 통해 프로토콜을 오토마타(automata)로 표현할 수 있다. FSM은 통신을 위한 구조나 아키텍처를 설계할 때 사용되는 모델을 의미할 수 있다. 상태 결정 장치(300)는 FSM을 통해 통신을 위한 구조나 아키텍처가 유한한 상태를 가진다고 가정하고, 각각의 상태별 동작과 상태 간의 전이에 관한 내용을 설계하고 정의할 수 있다.The
상태 결정 장치(300)는 프로토콜의 사양(Specification)을 수학식 1 내지 수학식 3을 통해 오토마타로 표현할 수 있다.The
M은 메시지의 유형, T는 메시지 간의 전이, F는 메시지를 구성하는 필드를 의미할 수 있다. 즉, T는 메시지간의 전이 확률(transition probability)을 원소로 가질 수 있다.M may be a message type, T may be a transition between messages, and F may be a field constituting the message. That is, T may have a transition probability between messages as an element.
즉, 상태 결정 장치(300)는 메시지의 유형(M)을 상태(state)로 하고, 각 메시지 유형(M) 간 전이(T)를 기반으로 하여 프로토콜의 FSM을 표현할 수 있다. 상태 결정 장치(300)는 수학식 1 내지 3을 통해 프로토콜을 역공학 하는 과정에서 획득하는 정보를 기반으로, FSM을 통해 프로토콜을 오토마타로 표현할 수 있다.That is, the
도 3을 참조하면, 상태 결정 장치(300)는 복수의 호스트들(100) 중에서 어느 하나(100-7)에 포함될 수 있다. 상태 결정 장치(300)는 복수의 호스트들(100) 중에서 어느 하나 이상에 포함될 수 있다.Referring to FIG. 3, the
도 4를 참조하면, 상태 결정 장치(300)는 커널 바이패스(Kernel-Bypass) 구조로 네트워킹을 수행할 수 있다. 즉, 네트워크(1000)의 프로토콜을 분석하여 추론하기 위해서는 커널 레벨(Kernel-Level)이 아닌, 유저 레벨(User-Level)에서의 작업이 필요할 수 있다. 따라서, 상태 결정 장치(300)는 PF_RING 라이브러리를 기반으로 하는 동기식 커널 바이패스 구조로 통신을 수행할 수 있다. PF_RING 은 네트웍 디바이스에서 수신한 패킷을 빠르게 전달할 수 있는 패킷 캡쳐를 위한 소켓일 수 있다.Referring to FIG. 4, the
상태 결정 장치(300)는 PF_RING 라이브러리를 기반으로 하는 동기식 커널 바이패스 구조를 통해 메시지를 Control 영역과 Data 영역으로 구분하여 네트워킹을 수행할 수 있다. 또한, 상태 결정 장치(300)는 PF_RING 라이브러리를 기반으로 하는 동기식 커널 바이패스 구조를 통해 별도의 쓰레드(Thread)를 생성하여 패킷 캡처만 수행하도록 전담시킴으로써, 일반적인 리눅스 커널(Linux Kernel) 대비 오버헤를 더 적게 발생시킬 수 있다.The
상태 결정 장치(300)는 PF_RING 라이브러리를 기반으로 하는 동기식 커널 바이패스 구조를 통해 메시지가 손실(Loss)되어 역공학이 제대로 수행되지 않는 경우를 방지할 수 있다. 일반적인 네트워크 통신은 NIC 디바이스 드라이버(480; Network Interface Card Device Driver)를 통하여, 커널의 네트워킹(TCP/IP 혹은 UDP 등)을 기반으로 데이터를 수신할 수 있다. 상태 결정 장치(300)는 PF_RING 라이브러리를 기반으로 하는 동기식 커널 바이패스 구조를 통해 TCP/IP, UDP 등이 아닌 Unknown 프로토콜의 정보를 획득할 수 있다. 상태 결정 장치(300)는 NIC에서 커널로 정보를 넘기지 않고 PF-RING이라는 모듈을 통해 APP LAYER로 데이터를 전달하여 어플리케이션(410)에서 프로토콜의 정보를 다룰 수 있다.The
상태 결정 장치(300)는 PF_RING의 TCPDUMP를 기반으로 메시지 수집 기능을 수행할 수 있다. TCPDUMP는 주어진 조건식을 만족하는 네트워크 인터페이스를 거치는 패킷들을 출력할 수 있다.The
도 5를 참조하면, 상태 결정 장치(300)는 네트워크 트레이스(Network-Trace)에 혼재된 적어도 하나 이상의 프로토콜을 통해 전송된 복수의 메시지들을 수신할 수 있다(510). 상태 결정 장치(300)는 복수의 메시지들을 프로토콜별로 군집화할 수 있다(530). 상태 결정 장치(300)는 군집화된 복수의 메시지들을 분석하여 프로토콜의 구문(Syntax) 정보, 타이밍(timing) 정보, 및 의미(Semantics) 정보를 획득할 수 있다(550). 상태 결정 장치(300)는 구문(Syntax) 정보, 타이밍(timing) 정보, 및 의미(Semantics) 정보를 기반으로 프로토콜의 상태를 결정할 수 있다(570).Referring to FIG. 5, the
도 6은 도 1에 도시된 상태 결정 장치를 개략적으로 나타낸 도면이다.FIG. 6 is a diagram schematically showing a state determination device illustrated in FIG. 1.
상태 결정 장치(300)는 송수신기(310), 프로세서(330) 및 메모리(350)를 포함할 수 있다. 상태 결정 장치(300)는 송수신기(310)를 통해 네트워크(1000)에 연결되고 통신할 수 있다.The
송수신기(310)는 무선 통신 및/또는 유선 통신을 통해서 네트워크(1000)에 연결되어 복수의 호스트들(100) 등과 통신할 수 있다. 송수신기(310)는 복수의 호스트들로부터 적어도 하나 이상의 프로토콜을 통해 전송된 제1 복수의 메시지들 및 제2 복수의 메시지들을 수신할 수 있다. 송수신기(310)는 제1 복수의 메시지들 및/또는 제2 복수의 메시지들을 프로세서(330)로 전송할 수 있다.The
송수신기(310)는 결정된 프로토콜의 상태를 복수의 호스트들(100) 및/또는 서버(미도시) 등으로 송신할 수 있다.The
프로세서(330)는 중앙처리장치, 어플리케이션 프로세서, 또는 커뮤니케이션 프로세서(communication processor) 중 하나 또는 그 이상을 포함할 수 있다.The
프로세서(330)는 상태 결정 장치(300)의 적어도 하나의 다른 구성요소들의 제어에 관한 연산이나 데이터 처리를 실행할 수 있다. 예를 들어, 프로세서(330)는 메모리(350)에 저장된 어플리케이션 및/또는 소프트웨어 등을 실행할 수 있다.The
프로세서(330)는 송수신기(310)가 수신한 데이터 및 메모리(350)에 저장된 데이터를 처리할 수 있다. 프로세서(330)는 메모리(350)에 저장된 데이터를 처리할 수 있다. 프로세서(330)는 메모리(350)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(330)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.The
프로세서(330)는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.The
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.For example, data processing devices implemented in hardware include a microprocessor, a central processing unit, a processor core, a multi-core processor, and a multiprocessor. , ASIC (Application-Specific Integrated Circuit), FPGA (Field Programmable Gate Array).
프로세서(330)는 복수의 제1 메시지들에 기초하여 적어도 하나 이상의 프로토콜에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보를 획득할 수 있다.The
프로세서(330)는 제1 복수의 메시지들을 제1 복수의 메시지들 각각의 전송에 이용된 프로토콜별로 군집화(clustering)할 수 있다.The
프로세서(330)는 군집화된 제1 복수의 메시지들을 이용하여, 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 구문 정보, 의미 정보 및 타이밍 정보를 획득할 수 있다.The
프로세서(330)는 군집화된 제1 복수의 메시지들에 대한 전체 필드(field) 및 군집화된 제1 복수의 메시지들에 대한 정적 필드(static field)를 이용하여 구문 정보를 생성할 수 있다. 예를 들어, 프로세서(330)는 군집화된 제1 복수의 메시지들로부터 정적 필드를 추출할 수 있다. 프로세서(330)는 정적 필드에서 일정한 길이로 반복되는 키워드(keyword)를 추출할 수 있다. 프로세서(330)는 키워드의 길이 및 전체 필드의 길이를 이용하여 군집화된 제1 복수의 메시지들에 대한 데이터의 길이를 계산할 수 있다. 프로세서(330)는 데이터의 길이, 전체 필드의 길이 및 키워드의 길이를 이용하여 구문 정보를 생성할 수 있다.The
프로세서(330)는 군집화된 제1 복수의 메시지들 및 정적 필드를 이용하여 타이밍 정보를 생성할 수 있다. 예를 들어, 프로세서(330)는 군집화된 제1 복수의 메시지들의 수신 순서에 대응하는 군집화된 제1 복수의 메시지들 각각의 키워드의 순서에 기초하여 타이밍 정보를 생성할 수 있다.The
프로세서(330)는 구문 정보 및 타이밍 정보에 기초하여 의미 정보를 생성할 수 있다. 예를 들어, 프로세서(330)는 구문 정보를 이용하여 제1 복수의 메시지들 중에서 적어도 하나 이상의 제1 데이터 메시지를 선택할 수 있다. 프로세서(330)는 제1 데이터 메시지 및 타이밍 정보를 이용하여 의미 정보를 생성할 수 있다.The
프로세서(330)는 구문 정보, 의미 정보 및 타이밍 정보와, 제2 복수의 메시지들의 현재까지 수신된 메시지의 길이를 이용하여 적어도 하나 이상의 프로토콜의 상태를 결정할 수 있다.The
프로세서(330)는 타이밍 정보 및 의미 정보를 이용하여 제2 복수의 메시지들 중에서 적어도 하나 이상의 제2 데이터 메시지를 선택할 수 있다. 프로세서(330)는 전체 필드의 길이와 같은 길이를 가지는 버퍼(buffer)를 생성할 수 있다. 프로세서(330)는 버퍼의 길이와, 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 결정할 수 있다.The
예를 들어, 프로세서(330)는 버퍼의 길이와 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한 때, 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 전송이 완료된 것으로 결정할 수 있다. 프로세서(330)는 버퍼의 길이와 적어도 하나 이상의 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일하지 않은 때, 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 전송중인 것으로 결정할 수 있다.For example, when the length of the buffer is equal to the length of the at least one second data message and the received message to the present, the
프로세서(330)는 결정된 프로토콜의 상태를 송수신기(310)로 전송할 수 있다.The
프로세서(330)는 키워드에 퍼즈 테스팅(Fuzz testing)을 수행하여 복수의 제1 메시지들에 대한 전송 과정에서의 오류를 판단할 수 있다.The
메모리(350)는 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 메모리(350)는 상태 결정 장치(300)의 적어도 하나의 다른 구성요소에 관계된 명령 및/또는 데이터를 저장할 수 있다.The
메모리(350)는 소프트웨어(software) 및/또는 프로그램(program) 등을 저장할 수 있다. 예를 들어, 메모리(350)는 프로토콜의 상태 결정을 위한 어플리케이션 및 소프트 웨어 등을 저장할 수 있다.The
도 7 내지 도 9는 상태 결정 장치가 복수의 메시지들에 대해 수행하는 군집화를 설명하기 위한 도면이다.7 to 9 are diagrams for explaining clustering performed by the state determination apparatus on a plurality of messages.
상태 결정 장치(300)는 복수의 메시지들에 대해서 여러 프로토콜을 구분하기 위한 군집화 알고리즘으로 DBSCAN(Density-based spatial clustering of applications with noise)을 이용할 수 있다. DBSCAN이란, 비지도 학습의 대표적인 알고리즘으로, 군집의 개수를 따로 지정하지 않아도 효율적으로 데이터를 분석하여 군집화를 수행할 수 있다. DBSCAN의 군집화 결과는 여러 번 반복 수행하더라도 같은 결과가 일관성 있게 나타난다는 특징이 있을 수 있다.The
도 7을 참조하면, 상태 결정 장치(300)가 수행하는 DBSCAN을 통해 이루고자 하는 군집화의 방향과 목적성을 나타낼 수 있다. 상태 결정 장치(300)는 도 7에 표시된 3개의 군집이 프로토콜 A(Protocol A), 프로토콜 B(Protocol B), 프로토콜 C(Protocol C)로 명확히 구분된다고 가정할 때, 새로운 점(P)이 발생하면 3개의 군집 중에서 거리와 밀도 기반으로 가까운 군집을 찾아서 속하거나, 최소 개수(minPts)와 밀도(eps)를 기반으로 새로운 군집을 생성할 수 있다.Referring to FIG. 7, it is possible to indicate the direction and purpose of clustering to be achieved through DBSCAN performed by the
상태 결정 장치(300)는 네트워크 트레이스에서, 출발지와 목적지 주소를 기준으로, 메시지의 전송 횟수, 전송 시간, 메시지의 길이, 및 메시지의 전송 순서 등을 특징(Feature) 데이터로 정의할 수 있다. 상태 결정 장치(300)는 군집화의 성능을 개선하기 위한 과정으로 특정한 기준 시간 동안 선정된 특징 데이터를 대상으로 휴리스틱(Heuristic) 하게 일차적으로 가공하는 특징 공학(Feature Engineering)을 수행할 수 있다.In the network trace, the
도 8을 참조하면, 도 8은 2개의 프로토콜이 혼재된 네트워크 트레이스에서 군집화를 수행한 결과의 일 예를 나타낸다. 도 8의 A 부분(810)과 B 부분(830)은 각기 다른 프로토콜의 데이터를 의미할 수 있다. 도 8과 같은 결과는 군집이 명확하게 구분되지 않으며, 중복되는 구간이 크게 발생함을 의미한다.Referring to FIG. 8, FIG. 8 shows an example of a result of clustering in a network trace in which two protocols are mixed.
상태 결정 장치(300)는 시간과 관련된 특징 데이터를 더욱 정밀하게 가공하여 이러한 문제를 해결할 수 있다. 상태 결정 장치(300)는 시간과 관련된 특징 데이터를 밀리세컨드(millisecond) 단위로 듀레이션(duration) 혹은 인터벌(interval) 등으로 가공할 수 있다. 상태 결정 장치(300)가 시간과 관련된 특징 데이터를 가공하면, 군집화 수행 시 군집화 성능이 향상될 수 있다. The
일반적으로는 커널(Kernel)이 밀리세컨드 단위의 네트워킹을 지원하지 않는 경우가 있고, 이는 초 미만의 데이터가 모두 0으로 기재되는 문제점이 있을 수 있다. 하지만, 상태 결정 장치(300)는 커널 바이패스 구조로 네트워킹을 수행하기 때문에 밀리세컨드 단위의 네트워킹을 수행할 수 있다.In general, there are cases in which the kernel does not support millisecond-level networking, and this may have a problem in that data in less than a second is all described as 0. However, since the
상태 결정 장치(300)는 주성분 분석(PCA, Principal Component Analysis)을 심층 신경망 기반의 Auto-Encoder을 활용하여 구현할 수 있다. 주성분 분석은 데이터에서 의미를 제대로 표현하는 특징을 갖는 성분을 추려내는 과정을 의미할 수 있다. 상태 결정 장치(300)는 활성화 함수를 sigmoid, ReLU과 같은 비선형이 아닌, 선형 함수를 사용하고, 손실 함수로MSE(Mean Squared Error)를 사용하여 주성분 분석의 효과를 얻을 수 있다.The
도 9를 참조하면, 상태 결정 장치(300)는 시간과 관련된 특징 데이터의 가공 및 주성분 분석을 심층 신경망 기반이 오토 엔코더로 수행함으로써, DBSCAN을 통한 군집화의 성능을 향상시킬 수 있다. 도 9에서, 상태 결정 장치(300)가 복수의 메시지들에 대한 2개의 각기 다른 프로토콜(910, 950)을 정확히 군집화한 것을 알 수 있다.Referring to FIG. 9, the
도 10 내지 도 12는 상태 결정 장치가 구문 정보 및 키워드를 획득하는 동작을 설명하기 위한 도면이다.10 to 12 are diagrams for describing an operation of the state determining device to acquire syntax information and keywords.
상태 결정 장치(300)는 복수의 메시지들을 군집화한 이후, 각각의 프로토콜이 갖는 여러 종류의 메시지들을 세부적으로 분류하는 과정을 수행할 수 있다. 프로토콜은 상호 정보 교환을 위해 다양한 메시지를 교환할 수 있다. 교환되는 메시지들은 정의된 순서에 따라 서로 다른 다양한 구조와 의미가 있을 수 있다. 이는 일반적으로 프로토콜의 구문(Syntax) 정보, 타이밍(Timing) 정보, 및 의미(Semantics) 정보로 구분되어 정의될 수 있다.The
프로토콜에서 구문(Syntax)이란, 메시지가 갖는 필드(Field)와 데이터(Data) 각각의 형식과 크기 등을 의미할 수 있다. 의미(Semantics)란 메시지가 갖는 의미를 뜻하며, 타이밍(Timing)은 여러 개의 메시지 중 특정 메시지가 언제 어떠한 순서를 통해 전송될 것인지와 같은 정보를 포함할 수 있다. 프로토콜의 상태를 결정하기 위해서는 구문(Syntax) 정보, 타이밍(Timing) 정보, 및 의미(Semantics) 정보가 필요할 수 있다.Syntax in the protocol may mean the format and size of each field and data of the message. Semantics means the meaning of a message, and timing may include information such as when and in what order certain messages are transmitted among several messages. Syntax information, timing information, and semantics information may be required to determine the state of the protocol.
상태 결정 장치(300)는 메시지에서 정적 필드(예를 들어, [SYN](1010), [SYN, ACK](1030), [ACK](1050))를 추출할 수 있다. 도 10을 참조하면, TCP(Transmission Control Protocol)에서 세션을 수립하는 과정 중 교환되는 메시지의 플래그 필드(flag field)에서 등 정적인 값을 찾을 수 있다. 이처럼 정적인 값을 가지는 필드를 정적 필드(Static Field)라고 하며, 가변적으로 변하는 값을 가지는 필드를 동적 필드(Dynamic Field)라고 할 수 있다.The
상태 결정 장치(300)는 정적 필드에서 키워드(예를 들어, “SYN”, “SYN, ACK”, “ACK”)를 추출할 수 있다. 도 11을 참조하면, 메시지에서 정적인 값을 가지는 키워드들(1100)이 반복적으로 존재함을 알 수 있다. 상태 결정 장치(300)는 이처럼 고정된 값으로 반복되는 키워드들을 추출할 수 있다.The
도 12를 참조하면, 상태 결정 장치(300)는 알고리즘 1(Algorithm 1)을 통해 키워드를 추출할 수 있다. 즉, 상태 결정 장치(300)는 메시지에서 정적 필드를 추출하고 정적 필드에서 키워드를 추출할 수 있다.Referring to FIG. 12, the
예를 들어, 상태 결정 장치(300)는 정적 필드의 추출이 완료되면, 정적 필드에 대한 값을 한 바이트(1byte)씩 증감 탐색하여 리스트에 저장한 뒤, 반복적으로 다른 메시지의 필드에 포함된 값이 있는지 검증하여 키워드를 추출할 수 있다. 즉, 상태 결정 장치(300)는 keyword= read_byte(field, length)를 반복문으로 수행하는 행위를 통해서 키워드를 정적 필드에서 한 바이트씩 추출할 수 있다. 예를 들어, 상태 결정 장치(300)는 최초에 3바이트를 기준으로 키워드를 추출할 수 있다. 즉, 상태 결정 장치(300)는 정적 필드에 정적인 값이 “abcdef가 있다고 하면, 먼저 "abc"를 추출하여 다른 메시지 필드에 같은 값이 있는지 확인하고, 없으면 한 바이트를 증가시킨 "abcd"를 탐색하여 추출할 수 있다. 상태 결정 장치(300)는 이러한 동작을 정적 필드의 크기만큼 반복해서 복수의 메시지들에서 중복적으로 발생하는 키워드를 추출할 수 있다.For example, when the extraction of the static field is completed, the
상태 결정 장치(300)는 수학식 4를 통해, 즉 전체 필드의 길이(Field_size)에서 키워드의 길이(Keyword_size)를 빼는 방식으로 메시지의 데이터의 길이(Data_size)를 계산할 수 있다.The
상태 결정 장치(300)는 Data_size! = sytax인 점을 이용하여 구문 정보를 생성할 수 있다. 상태 결정 장치(300)는 데이터의 길이, 전체 필드의 길이 및 키워드의 길이를 이용하여 구문 정보를 생성할 수 있다.The
도 13은 상태 결정 장치가 타이밍 정보 및 의미 정보를 생성하는 과정을 설명하기 위한 도면이다.13 is a diagram for explaining a process in which the state determination device generates timing information and semantic information.
상태 결정 장치(300)는 획득한 키워드를 통해 해당 메시지가 갖는 순서인 타이밍 정보를 생성할 수 있다. 상태 결정 장치(300)는 해당 메시지가 갖는 순서를 대량의 메시지 트래픽(Traffic)에서 각각의 키워드가 몇 회 반복되었는지 비율과 순서 등을 산정하여 구할 수 있다. 또한, 상태 결정 장치(300)는 하나의 키워드를 기준으로 이후에 나타나는 다음 키워드와 연관성과 종속성을 찾는 작업을 반복적으로 수행할 수 있다.The
도 13은 상태 결정 장치(300)가 키워드를 기반으로 연관성을 탐지하는 과정의 일 예를 나타낸다. 도 13을 참조하면, TCP는 “SYN” 키워드를 가진 메시지 이후의 순서에서 “SYN+ACK” 키워드의 메시지가 발생하는 것을 알 수 있다. 이후에는 “ACK” 키워드의 메시지가 나날 수 있다. 상태 결정 장치(300)는 이러한 메시지 순서의 교환을 두 호스트의 IP주소를 교차하여 검증하는 것으로 구할 수 있다. 상태 결정 장치(300)는 이를 통해 프로토콜이 갖는 타이밍 정보를 생성할 수 있다.13 shows an example of a process in which the
상태 결정 장치(300)는 프로토콜의 타이밍 정보와 구문 정보를 이용하여 메시지가 갖는 의미(semantics)를 분석할 수 있다. 즉, UDP처럼 단순히 데이터 메시지를 보내는 프로토콜도 있지만, 세션을 확보하고 제한적으로 데이터를 보내는 프로토콜도 존재한다. 따라서, 상태 결정 장치(300)는 타이밍 정보를 기반으로 키워드의 연관성과 의미(Semantics)를 검증한다.The
상태 결정 장치(300)는 전체 네트워크 트레이스에서 데이터 메시지를 선택할 수 있다. 상태 결정 장치(300)는 구문 정보가 포함하는 메시지의 크기나 키워드 정보들을 통해 데이터 메시지를 선택할 수 있다.The
이후, 상태 결정 장치(300)는 데이터 메시지를 보내는 전/후에 발생하는 메시지를 타이밍 정보에서 확인하는 과정을 수행할 수 있다. 상태 결정 장치(300)는 이러한 과정을 통해 메시지 간의 연관성을 찾을 수 있다.Thereafter, the
또한, 상태 결정 장치(300)는 전체 통신기록에서 각각의 메시지 유형이 몇 회 수행 및 반복되는지를 산술적으로 비율을 계산할 수 있다. 상태 결정 장치(300)는 각각의 메시지 유형이 몇 회 수행 및 반복되는지 그 비율을 계산함으로써, 메시지가 어떠한 의미가 있는지 추론할 수 있다. 또한, 상태 결정 장치(300)는 이를 통해 데이터 메시지와 다른 메시지를 명확히 구분할 수 있고, 이를 통해 의미(Semantics) 정보를 생성할 수 있다.In addition, the
도 14는 상태 결정 장치가 수행하는 퍼즈 테스팅에 대한 설명을 위한 도면이다.14 is a diagram for description of fuzz testing performed by a state determination device.
상태 결정 장치(300)는 퍼징(Fuzzing, 퍼즈 테스팅(Fuzz testing))을 통해 알고리즘 1(Algorithm 1)의 과정에서 획득한, 메시지가 가지고 있는 전체 필드의 크기의 검증 및 보강을 수행할 수 있다.The
예를 들어, 도 14를 참조하면, 상태 결정 장치(300)는 키워드 뒤에 “A”와 “a”를 추가하는 행위를 반복하는 퍼즈 데이터(Fuzz data)를 추가한 뒤, 메시지로 재조립하여 통신의 과정에서의 오류 발생을 검증할 수 있다.For example, referring to FIG. 14, the
상태 결정 장치(300)는 퍼즈 테스팅을 통해, 각각의 메시지에 대한 필드의 정확한 오프셋(offset) 크기를 획득할 수 있다. “A”와“a”를 교차로 반복하는 이유는 오류가 발생하였을 때, 몇 번째의 문자열에서 발생하였는지 쉽게 찾기 위함일 수 있다. 상태 결정 장치(300)는 퍼즈 테스팅을 수행함에 있어서, msg4와 같이 키워드가 없거나, 키워드를 탐지하지 못한 필드의 경우에는 키워드없이 퍼즈 테스팅을 진행할 수 있다.The
도 15는 상태 결정 장치가 프로토콜의 상태를 결정하기 위해 이용하는 알고리즘의 일 예를 나타낸다.15 shows an example of an algorithm used by the state determining device to determine the state of the protocol.
상태 결정 장치(300)는 알고리즘 2(Algorithm 2)를 통해 해당 프로토콜에서 통신 중 메시지의 수신이 완료 되었는지와 수신 중인지를 결정할 수 있다.The
상태 결정 장치(300)는 데이터 메시지를 대상으로 획득한 필드의 길이를 모두 합산하여 그 수치와 같은 길이의 버퍼를 생성하며, 수신과정에서 수신된 크기만큼 버퍼에 하나씩 누적하여 크기를 비교하는 방식으로 프로토콜의 상태를 결정할 수 있다.The
즉, TCP를 일 예로, SYN 메시지 -> SYN+ACK 메시지 -> ACK 메시지 -> 데이터 메시지의 순서대로 전송된다고 가정하면, 상태 결정 장치(300)는 타이밍 정보를 통해 메시지의 수신 순서를 알 수 있고, 의미 정보를 통해 수신될 메시지가 SYN 메시지인지, SYN+ACK 메시지인지, ACK 메시지인지, 데이터 메시지인지 알 수 있다. 따라서, 상태 결정 장치(300)는 타이밍 정보 및 의미 정보를 이용하여 새로 수신되는 복수의 메시지들 중에서 데이터 메시지를 선택할 수 있다.That is, assuming that TCP is transmitted as an example, in the order of SYN message -> SYN+ACK message -> ACK message -> data message, the
또한, 상태 결정 장치(300)는 구문 정보에 포함된 전체 필드의 길이와 같은 길이를 가지는 버퍼를 생성할 수 있다. 상태 결정 장치(300)는 버퍼의 길이와, 새로 수신되는 메시지의 길이가 동일한 때(즉, 버퍼의 길이만큼 새로 수신되는 메시지가 바이트 단위로 수신이 이루어지는 새로 수신되는 메시지가 버퍼의 길이만큼의 바이트를 만족할 때) 프로토콜의 상태를 수신이 완료된 것으로 결정할 수 있다.Also, the
도 16은 다른 실시예에 따른 시스템을 메시지 및 ACK의 송수신을 중심으로 개략적으로 나타낸 도면이다.16 is a diagram schematically showing a system according to another embodiment with a focus on transmission and reception of messages and ACKs.
시스템(10)은 오류 정정이나 혼잡 제어 등을 지원하지 않는 프로토콜에서도 프로토콜 자체의 수정 없이, 프로토콜의 상태를 결정할 수 있다.The
복수의 호스트들(100)은 메시지를 전송한 후, 상태 결정 장치(300)로부터 ACK 메시지를 수신할 때까지 대기할 수 있다. 이후, 상태 결정 장치(300)는 메시지 수신의 진행 상황을 확인할 수 있다.After transmitting the message, the plurality of
상태 결정 장치(300)는 메시지 수신이 완료되면 ACK 메시지를 통해 수신 완료를 복수의 호스트들(100)에게 알릴 수 있다. 시스템(10)은 복수의 호스트들(100)이 송신한 메시지가 상태 결정 장치(300)에 제한시간 내에 정상적으로 도달하지 못하거나, 복수의 호스트들(100)의 자체적인 타임 아웃(Time-out)이 발생한 경우에는 메시지의 재전송을 수행할 수 있다.When the message reception is completed, the
상태 결정 장치(300)가 수행하는 프로토콜 상태 결정 동작은 UDP와 같이 비-신뢰성 프로토콜에도 적용 가능하며, 이를 통해 네트워크에서 발생하는 다양한 응용 처리를 추가 적용할 수 있다.The protocol state determination operation performed by the
도 17 내지 도 24는 상태 결정 장치의 성능 평가 결과를 설명하기 위한 도면이다.17 to 24 are diagrams for explaining the performance evaluation results of the state determination device.
도 17을 참조하면, 상태 결정 장치(300)의 성능평가는 다양한 결과를 고찰하기 위해, TCP 기반의 FTP 프로토콜과 UDP 프로토콜, 그리고 Google에서 개발한 QUIC프로토콜이 실험 대상일 수 있다. 실험에 활용된 네트워크 트레이스는 3가지 프로토콜을 통한 통신이 동시에 수행되어 혼재된 상황일 수 있다.Referring to FIG. 17, in order to consider various results, the performance evaluation of the
FTP는 다양한 명령어의 사용하면서 여러 개의 파일을 보내는 통신을 수행하였고, UDP는 단순한 문자열(“textdata goes here”)을 불규칙하게 5,000건을 발송하는 통신을 수행하였을 수 있다. 그리고 QUIC은 YouTube를 통해비디오 스트리밍을 지속 수행하는 통신이 수행되었을 수 있다.FTP used to communicate by sending multiple files while using various commands, and UDP may have performed by sending 5,000 random strings (“textdata goes here”) irregularly. And QUIC may have been performing communication that continuously performs video streaming through YouTube.
도 18 및 도 19는 FTP 프로토콜을 대상으로 수행한 성능 평가 결과 화면의 일 예를 나타낸다. 도 18은 FTP 프로토콜의 Traffic Trace를 대상으로 Wireshark 프로그램을 통해 표시한 화면이고, 도 19는 상태 결정 장치(300)의 동작 결과를 나타낼 수 있다.18 and 19 show an example of a performance evaluation result screen performed for the FTP protocol. FIG. 18 is a screen displayed through a Wireshark program for Traffic Trace of the FTP protocol, and FIG. 19 can show the operation result of the
Wireshark는, Open-Source 프로그램으로 다양한 프로토콜을 통한 통신기록을 확인하거나 교육에 활용되는 대표적인 패킷 분석 프로그램일 수 있다. 이러한 분석은 프로토콜의 Specification을 알고 있는 가정에서 구조 분석을 수행하므로, 정확한 결과가 보장될 수 있다. 하지만 상태 결정 장치(300)는 Specification을 모르는 상태에서 역공학을 통해 이러한 분석이 수행될 수 있다. 따라서, 상태 결정 장치(300)의 성능 평가는 공개된 프로토콜을 대상으로 Wireshark와의 결과를 비교하여 그 결과를 고찰해볼 수 있다.Wireshark, an open-source program, may be a representative packet analysis program used for checking communication records through various protocols or for education. Since this analysis performs structural analysis in the assumption that the specification of the protocol is known, accurate results can be ensured. However, the
도 20은 FTP를 대상으로 성능 평가를 수행한 결과 중 일부를 나타낼 수 있다. 도 20의 결과를 통해, 상태 결정 장치(300)는 역공학을 통해 정확히 메시지 내 키워드를 식별하였으며, 메시지의 필드의 크기를 구한 것을 알 수 있다.20 may represent some of the results of performance evaluation on FTP. Through the results of FIG. 20, it can be seen that the
도 21은 UDP 프로토콜을 대상으로 수행한 성능 평가 결과의 일 예를 나타낸다. 도 21에 표현된 오토마타는 UDP가 하나의 상태(state)만을 가진다는 점을 의미할 수 있다. 이러한 결과는 상태 결정 장치(300)가 역공학을 통해 획득한 Timing과 Semantics 정보를 기반으로 할 수 있다. 또한, 도 21에서, 상태 결정 장치(300)가 정확히 필드의 구조에서 데이터 문자열(“text data goes here”)만 추출한 것을 확인할 수 있다.21 shows an example of a performance evaluation result performed on the UDP protocol. The automata illustrated in FIG. 21 may mean that UDP has only one state. Such a result may be based on the timing and semantics information acquired by the
도 22는 UDP를 대상으로 성능 평가를 수행한 결과 중 일부를 나타낼 수 있다. 도 22를 통해 상태 결정 장치(300)가 정확히 메시지 내 데이터와 크기를 구한 것을 알 수 있다.22 may show some of the results of performance evaluation on UDP. It can be seen from FIG. 22 that the
도 23은 QUIC 프로토콜을 대상으로 수행한 성능 평가 결과의 일 예를 나타낸다. 도 23에 표현된 오토마타는 QUIC이 1회의 세션을 맺는 과정(Zero-RTT)이 있고, 이후부터는 UDP와 같이 데이터를 일방적으로 전송함을 의미할 수 있다. 이러한 결과는 마찬가지로 상태 결정 장치(300)가 역공학을 통해 획득한 타이밍 정보와 의미 정보를 기반으로 획득하는 것일 수 있다.23 shows an example of a performance evaluation result performed on the QUIC protocol. The automata shown in FIG. 23 may mean that there is a process (Zero-RTT) in which the QUIC establishes a session once, and thereafter, data is unilaterally transmitted like UDP. Such a result may similarly be obtained based on timing information and semantic information acquired by the
도 24는 QUIC을 통해 수행된 비디오 스트리밍이 정확히 필드의 구조에서 데이터만 구분된 것을 나타내는 도면일 수 있다. 상태 결정 장치(300)는 구문 정보를 통해 정확히 암호화 통신이 수행되고 있는 데이터 부분만 추출할 수 있다. QUIC은 패킷이 전송 중 변조나 훼손되었을 경우 정정 비트를 통해 훼손된 비트를 복구하는 FEC를 제공하여 이를 탐지함에서는 한계점을 보였었지만, 현재는 해당기능이 표준에서 제외됨을 확인하였다.FIG. 24 may be a diagram illustrating that video streaming performed through QUIC is exactly data separated in a field structure. The
도 17 내지 도 24에서 살펴본 바와 같이, 상태 결정 장치(300)는 UDP, QUIC과 같은 전송 계층의 프로토콜을 통한 성능 평가를 수행한 결과, 메시지가 가지는 구문 정보, 의미 정보 및 타이밍 정보 등을 상당히 높은 정확도로 추출할 수 있는 것을 알 수 있다.17 to 24, as a result of performing performance evaluation through a transport layer protocol such as UDP and QUIC, the
상태 결정 장치(300)는 구조나 논리가 공개되지 않은 프로토콜을 포함하여, 전송 계층의 모든 프로토콜을 네트워크 트레이스를 기반으로 역공학을 수행하여 프로토콜에 대한 정보와 상태를 추론할 수 있다.The
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, or the like alone or in combination. The program instructions recorded on the medium may be specially designed and constructed for the embodiments or may be known and usable by those skilled in computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs, DVDs, and magnetic media such as floptical disks. -Hardware devices specifically configured to store and execute program instructions such as magneto-optical media, and ROM, RAM, flash memory, and the like. Examples of program instructions include high-level language code that can be executed by a computer using an interpreter, etc., as well as machine language codes produced by a compiler. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instruction, or a combination of one or more of these, and configure the processing device to operate as desired, or process independently or collectively You can command the device. Software and/or data may be interpreted by a processing device or to provide instructions or data to a processing device, of any type of machine, component, physical device, virtual equipment, computer storage medium or device. , Or may be permanently or temporarily embodied in the transmitted signal wave. The software may be distributed on networked computer systems, and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described by the limited drawings, those skilled in the art can apply various technical modifications and variations based on the above. For example, the described techniques are performed in a different order than the described method, and/or the components of the described system, structure, device, circuit, etc. are combined or combined in a different form from the described method, or other components Alternatively, even if replaced or substituted by equivalents, appropriate results can be achieved.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.
Claims (18)
상기 복수의 제1 메시지들에 기초하여 상기 적어도 하나 이상의 프로토콜에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보를 획득하는 단계; 및
상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보와, 상기 제2 복수의 메시지들의 현재까지 수신된 메시지의 길이를 이용하여 상기 적어도 하나 이상의 프로토콜의 상태를 결정하는 단계
를 포함하는 프로토콜 상태 결정 방법.
Receiving the first plurality of messages and the second plurality of messages transmitted through at least one protocol from a plurality of hosts;
Obtaining syntax information, semantics information, and timing information for the at least one protocol based on the plurality of first messages; And
Determining the status of the at least one protocol by using the syntax information, the semantic information and the timing information, and the length of the message received to date of the second plurality of messages.
Protocol status determination method comprising a.
상기 획득하는 단계는,
상기 제1 복수의 메시지들을 상기 제1 복수의 메시지들 각각의 전송에 이용된 프로토콜별로 군집화(clustering)하는 단계; 및
군집화된 제1 복수의 메시지들을 이용하여, 상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 1,
The obtaining step,
Clustering the first plurality of messages for each protocol used for transmission of each of the first plurality of messages; And
Obtaining the syntax information, the semantic information, and the timing information for a protocol corresponding to the clustered first plurality of messages by using the clustered first plurality of messages.
Protocol status determination method comprising a.
상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득하는 단계는,
상기 군집화된 제1 복수의 메시지들에 대한 전체 필드(field) 및 상기 군집화된 제1 복수의 메시지들에 대한 정적 필드(static field)를 이용하여 상기 구문 정보를 생성하는 단계;
상기 군집화된 제1 복수의 메시지들 및 상기 정적 필드를 이용하여 상기 타이밍 정보를 생성하는 단계; 및
상기 구문 정보 및 상기 타이밍 정보에 기초하여 상기 의미 정보를 생성하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 2,
The obtaining of the syntax information, the semantic information, and the timing information for a protocol corresponding to the clustered first plurality of messages may include:
Generating the syntax information using an entire field for the clustered first plurality of messages and a static field for the clustered first plurality of messages;
Generating the timing information using the clustered first plurality of messages and the static field; And
Generating the semantic information based on the syntax information and the timing information
Protocol status determination method comprising a.
상기 구문 정보를 생성하는 단계는,
상기 군집화된 제1 복수의 메시지들로부터 상기 정적 필드를 추출하는 단계;
상기 정적 필드에서 일정한 길이로 반복되는 키워드(keyword)를 추출하는 단계;
상기 키워드의 길이 및 상기 전체 필드의 길이를 이용하여 상기 군집화된 제1 복수의 메시지들에 대한 데이터의 길이를 계산하는 단계; 및
상기 데이터의 길이, 상기 전체 필드의 길이 및 상기 키워드의 길이를 이용하여 상기 구문 정보를 생성하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 3,
Generating the syntax information,
Extracting the static field from the clustered first plurality of messages;
Extracting a keyword repeated in a certain length from the static field;
Calculating a length of data for the clustered first plurality of messages using the length of the keyword and the length of the entire field; And
Generating the syntax information using the length of the data, the length of the entire field, and the length of the keyword
Protocol status determination method comprising a.
상기 타이밍 정보를 생성하는 단계는,
상기 군집화된 제1 복수의 메시지들의 수신 순서에 대응하는 상기 군집화된 제1 복수의 메시지들 각각의 키워드의 순서에 기초하여 상기 타이밍 정보를 생성하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 4,
Generating the timing information,
Generating the timing information based on an order of keywords of each of the clustered first plurality of messages corresponding to an order of receiving the clustered first plurality of messages.
Protocol status determination method comprising a.
상기 의미 정보를 생성하는 단계는,
상기 구문 정보를 이용하여 상기 제1 복수의 메시지들 중에서 적어도 하나 이상의 제1 데이터 메시지를 선택하는 단계; 및
상기 제1 데이터 메시지 및 상기 타이밍 정보를 이용하여 상기 의미 정보를 생성하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 4,
The step of generating the semantic information,
Selecting at least one first data message from the first plurality of messages using the syntax information; And
Generating the semantic information using the first data message and the timing information
Protocol status determination method comprising a.
상기 결정하는 단계는,
상기 타이밍 정보 및 상기 의미 정보를 이용하여 상기 제2 복수의 메시지들 중에서 적어도 하나 이상의 제2 데이터 메시지를 선택하는 단계;
상기 전체 필드의 길이와 같은 길이를 가지는 버퍼(buffer)를 생성하는 단계; 및
상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 결정하는 단계
를 포함하는 프로토콜 상태 결정 방법.
According to claim 4,
The determining step,
Selecting at least one second data message from the second plurality of messages using the timing information and the semantic information;
Creating a buffer having a length equal to the length of the entire field; And
Determining a state of a protocol corresponding to the at least one second data message according to whether the length of the buffer is equal to the length of a message received to date of the at least one second data message;
Protocol status determination method comprising a.
상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 프로토콜의 상태를 결정하는 단계는,
상기 버퍼의 길이와 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신이 완료된 것으로 결정하는 단계; 및
상기 버퍼의 길이와 상기 적어도 하나 이상의 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일하지 않은 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신중인 것으로 결정하는 단계
를 포함하는 프로토콜 상태 결정 방법.
The method of claim 7,
Determining the state of the at least one protocol according to whether the length of the buffer and the length of the received message to the present of the at least one second data message are the same are:
Determining that the state of the protocol corresponding to the at least one second data message is completed when the length of the buffer is equal to the length of the message received to date of the at least one second data message; And
Determining that a state of a protocol corresponding to the at least one second data message is being received when the length of the buffer is not the same as the length of a message received to date of the at least one data message.
Protocol status determination method comprising a.
상기 키워드에 퍼즈 테스팅(Fuzz testing)을 수행하여 상기 복수의 제1 메시지들에 대한 전송 과정에서의 오류를 판단하는 단계
를 더 포함하는 프로토콜 상태 결정 방법.
According to claim 4,
Performing fuzz testing on the keyword to determine an error in the transmission process for the plurality of first messages
Protocol status determination method further comprising a.
상기 인스트럭션들을 실행하기 위한 프로세서
를 포함하고,
상기 인스트럭션들이 상기 프로세서에 의해 실행될 때, 상기 프로세서는,
복수의 호스트(host)들로부터 적어도 하나 이상의 프로토콜(protocol)을 통해 전송된 제1 복수의 메시지들 및 제2 복수의 메시지들을 수신하고,
상기 복수의 제1 메시지들에 기초하여 상기 적어도 하나 이상의 프로토콜에 대한 구문(Syntax) 정보, 의미(Semantics) 정보 및 타이밍(Timing) 정보를 획득하고,
상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보와, 상기 제2 복수의 메시지들의 현재까지 수신된 메시지의 길이를 이용하여 상기 적어도 하나 이상의 프로토콜의 상태를 결정하는
프로토콜 상태 결정 장치.
A memory for storing instructions for state determination of a protocol; And
Processor for executing the instructions
Including,
When the instructions are executed by the processor, the processor,
Receiving a first plurality of messages and a second plurality of messages transmitted through at least one protocol from a plurality of hosts,
Syntax information, semantics information, and timing information for the at least one protocol are obtained based on the plurality of first messages,
The state of the at least one protocol is determined by using the syntax information, the semantic information, and the timing information, and the length of the message received to date of the second plurality of messages.
Protocol status determination device.
상기 프로세서는,
상기 제1 복수의 메시지들을 상기 제1 복수의 메시지들 각각의 전송에 이용된 프로토콜별로 군집화(clustering)하고,
군집화된 제1 복수의 메시지들을 이용하여, 상기 군집화된 제1 복수의 메시지들에 대응하는 프로토콜에 대한 상기 구문 정보, 상기 의미 정보 및 상기 타이밍 정보를 획득하는
프로토콜 상태 결정 장치.
The method of claim 10,
The processor,
Clustering the first plurality of messages for each protocol used for transmission of each of the first plurality of messages,
Acquiring the syntax information, the semantic information, and the timing information for a protocol corresponding to the clustered first plurality of messages by using the clustered first plurality of messages
Protocol status determination device.
상기 프로세서는,
상기 군집화된 제1 복수의 메시지들에 대한 전체 필드(field) 및 상기 군집화된 제1 복수의 메시지들에 대한 정적 필드(static field)를 이용하여 상기 구문 정보를 생성하고,
상기 군집화된 제1 복수의 메시지들 및 상기 정적 필드를 이용하여 상기 타이밍 정보를 생성하고,
상기 구문 정보 및 상기 타이밍 정보에 기초하여 상기 의미 정보를 생성하는
프로토콜 상태 결정 장치.
The method of claim 11,
The processor,
The syntax information is generated using an entire field for the clustered first plurality of messages and a static field for the clustered first plurality of messages,
The timing information is generated using the clustered first plurality of messages and the static field,
Generating the semantic information based on the syntax information and the timing information
Protocol status determination device.
상기 프로세서는,
상기 군집화된 제1 복수의 메시지들로부터 상기 정적 필드를 추출하고,
상기 정적 필드에서 일정한 길이로 반복되는 키워드(keyword)를 추출하고,
상기 키워드의 길이 및 상기 전체 필드의 길이를 이용하여 상기 군집화된 제1 복수의 메시지들에 대한 데이터의 길이를 계산하고,
상기 데이터의 길이, 상기 전체 필드의 길이 및 상기 키워드의 길이를 이용하여 상기 구문 정보를 생성하는
프로토콜 상태 결정 장치.
The method of claim 12,
The processor,
Extracting the static field from the clustered first plurality of messages,
Extract a keyword repeated in a certain length from the static field,
The length of the data for the clustered first plurality of messages is calculated using the length of the keyword and the length of the entire field,
Generating the syntax information using the length of the data, the length of the entire field and the length of the keyword
Protocol status determination device.
상기 프로세서는,
상기 군집화된 제1 복수의 메시지들의 수신 순서에 대응하는 상기 군집화된 제1 복수의 메시지들 각각의 키워드의 순서에 기초하여 상기 타이밍 정보를 생성하는
프로토콜 상태 결정 장치.
The method of claim 13,
The processor,
Generating the timing information based on the order of each keyword of the clustered first plurality of messages corresponding to the order of receiving the clustered first plurality of messages
Protocol status determination device.
상기 프로세서는,
상기 구문 정보를 이용하여 상기 제1 복수의 메시지들 중에서 적어도 하나 이상의 제1 데이터 메시지를 선택하고,
상기 제1 데이터 메시지 및 상기 타이밍 정보를 이용하여 상기 의미 정보를 생성하는
프로토콜 상태 결정 장치.
The method of claim 13,
The processor,
Selecting at least one first data message from the first plurality of messages using the syntax information,
Generating the semantic information using the first data message and the timing information
Protocol status determination device.
상기 프로세서는,
상기 타이밍 정보 및 상기 의미 정보를 이용하여 상기 제2 복수의 메시지들 중에서 적어도 하나 이상의 제2 데이터 메시지를 선택하고,
상기 전체 필드의 길이와 같은 길이를 가지는 버퍼(buffer)를 생성하고,
상기 버퍼의 길이와, 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한지 여부에 따라 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 결정하는
프로토콜 상태 결정 장치.
The method of claim 13,
The processor,
At least one second data message is selected from the second plurality of messages by using the timing information and the semantic information,
Create a buffer having a length equal to the length of the entire field,
Determining the state of the protocol corresponding to the at least one second data message according to whether the length of the buffer and the length of the received message of the at least one second data message are the same.
Protocol status determination device.
상기 프로세서는,
상기 버퍼의 길이와 상기 적어도 하나 이상의 제2 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일한 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신이 완료된 것으로 결정하고,
상기 버퍼의 길이와 상기 적어도 하나 이상의 데이터 메시지의 현재까지 수신된 메시지의 길이가 동일하지 않은 때, 상기 적어도 하나 이상의 제2 데이터 메시지에 대응되는 프로토콜의 상태를 수신중인 것으로 결정하는
프로토콜 상태 결정 장치.
The method of claim 16,
The processor,
When the length of the buffer and the length of the received message to the present of the at least one second data message are the same, it is determined that reception of the protocol status corresponding to the at least one second data message is completed,
Determining that a state of a protocol corresponding to the at least one second data message is being received when the length of the buffer is not the same as the length of a message received to date of the at least one data message
Protocol status determination device.
상기 프로세서는,
상기 키워드에 퍼즈 테스팅(Fuzz testing)을 수행하여 상기 복수의 제1 메시지들에 대한 전송 과정에서의 오류를 판단하는
프로토콜 상태 결정 장치.The method of claim 13,
The processor,
Fuzz testing is performed on the keyword to determine an error in the transmission process of the plurality of first messages
Protocol status determination device.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190010466 | 2019-01-28 | ||
KR20190010466 | 2019-01-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20200093455A true KR20200093455A (en) | 2020-08-05 |
Family
ID=72041725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200008698A KR20200093455A (en) | 2019-01-28 | 2020-01-22 | Method and system for network protocol state inference through reverse engineering |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20200093455A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115334179A (en) * | 2022-07-19 | 2022-11-11 | 四川大学 | Unknown protocol reverse analysis method based on named entity recognition |
-
2020
- 2020-01-22 KR KR1020200008698A patent/KR20200093455A/en not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115334179A (en) * | 2022-07-19 | 2022-11-11 | 四川大学 | Unknown protocol reverse analysis method based on named entity recognition |
CN115334179B (en) * | 2022-07-19 | 2023-09-01 | 四川大学 | Unknown protocol reverse analysis method based on named entity recognition |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019120187A1 (en) | Non-intrusive mechanism to measure network function packet processing delay | |
US10892974B2 (en) | Automatic protocol test method by reverse engineering from packet traces to extended finite state machine | |
US9294944B2 (en) | Method and apparatus to monitor and analyze end to end flow control in an Ethernet/enhanced Ethernet environment | |
Sija et al. | A survey of automatic protocol reverse engineering approaches, methods, and tools on the inputs and outputs view | |
CN110719212A (en) | Method, system, and computer readable medium for testing network nodes using source code | |
US20110054878A1 (en) | Automated performance prediction for cloud services | |
Zhuang et al. | {NetCheck}: Network Diagnoses from Blackbox Traces | |
CN110213124A (en) | Passive operation system identification method and device based on the more sessions of TCP | |
US9218266B2 (en) | Systems and methods for replication of test results in a network environment | |
WO2011134739A1 (en) | Method for searching for message sequences, protocol analysis engine and protocol analyzer | |
GB2588837A (en) | Methods, systems, and computer readable media for configuring a test system using source code of a device being tested | |
KR20150007411A (en) | method and apparatus for transmitting and receiving data and medium thereof | |
JP2021502788A (en) | Detection of sources of computer network failures | |
KR20200093455A (en) | Method and system for network protocol state inference through reverse engineering | |
TWI538441B (en) | Process system for constructing network structure deployment diagram and the method thereof and computer program product storing network structure deployment analysis program are provided to analyze the network structure deployment of target network | |
Xiao et al. | Automatic protocol reverse engineering using grammatical inference | |
CN112436969A (en) | Internet of things equipment management method, system, equipment and medium | |
CN113760753B (en) | QUIC protocol testing method based on gray box blurring technology | |
Sija et al. | Survey on network protocol reverse engineering approaches, methods and tools | |
Shu et al. | A formal methodology for network protocol fingerprinting | |
US10623338B2 (en) | Information processing device, information processing method and non-transitory computer-readable storage medium | |
CN110493081B (en) | Method, device, equipment and storage medium for determining network traffic of game client | |
Rosay et al. | Study of Network IDS in IoT devices | |
JP6647725B2 (en) | Traffic generation device and traffic generation method | |
US10374898B2 (en) | Network revision evaluator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E601 | Decision to refuse application |