KR102494837B1 - Methods and apparatus for for detecting and decoding obfuscated javascript - Google Patents

Methods and apparatus for for detecting and decoding obfuscated javascript Download PDF

Info

Publication number
KR102494837B1
KR102494837B1 KR1020227033623A KR20227033623A KR102494837B1 KR 102494837 B1 KR102494837 B1 KR 102494837B1 KR 1020227033623 A KR1020227033623 A KR 1020227033623A KR 20227033623 A KR20227033623 A KR 20227033623A KR 102494837 B1 KR102494837 B1 KR 102494837B1
Authority
KR
South Korea
Prior art keywords
javascript
server
executing
library
execute
Prior art date
Application number
KR1020227033623A
Other languages
Korean (ko)
Inventor
양승환
Original Assignee
시큐레터 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 시큐레터 주식회사 filed Critical 시큐레터 주식회사
Application granted granted Critical
Publication of KR102494837B1 publication Critical patent/KR102494837B1/en

Links

Images

Classifications

    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/128Restricting unauthorised execution of programs involving web programs, i.e. using technology especially used in internet, generally interacting with a web browser, e.g. hypertext markup language [HTML], applets, java
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

본 명세서는 서버가 자바스크립트를 탐지하는 방법에 있어서, 비실행 파일과 관련된 응용프로그램의 프로세스를 실행하고, 상기 응용프로그램의 프로세스에 근거하여, 상기 비실행 파일에 포함된 자바스크립트를 탐지하며, 상기 자바스크립트를 실행하고, 상기 자바스크립트를 실행하기 위한 호스트(host) 프로세스를 디버깅하고, 상기 호스트 프로세스에 근거하여, 상기 자바스크립트를 실행하기 위한 라이브러리(library)가 로드(load)되는 지를 판단하며, 상기 라이브러리가 로드된 것에 근거하여, 상기 자바스크립트를 실행하기 위해 참조되는 함수의 주소에 브레이크 포인트(break point)를 설정하고, 상기 브레이크 포인트의 지점이 실행된 것에 근거하여, 상기 자바스크립트의 원문을 추출하며, 상기 자바스크립트는 난독화된 자바스크립트 일 수 있다.In the present specification, in a method for detecting JavaScript by a server, executing a process of an application program related to a non-executable file, detecting JavaScript included in the non-executable file based on the process of the application program, Executing JavaScript, debugging a host process for executing the JavaScript, and based on the host process, determining whether a library for executing the JavaScript is loaded, Based on the library being loaded, a breakpoint is set at the address of a function referred to to execute the JavaScript, and based on the execution of the breakpoint, the original text of the JavaScript is set. Extraction, and the JavaScript may be obfuscated JavaScript.

Description

난독화 된 자바스크립트를 탐지하고 복호화하기 위한 방법 및 이를 위한 장치 { METHODS AND APPARATUS FOR FOR DETECTING AND DECODING OBFUSCATED JAVASCRIPT }Method for detecting and decrypting obfuscated JavaScript and device therefor

본 명세서는 사람이 해석하기 어렵게 난독화 된 자바스크립트를 탐지하고 복호화하기 위한 방법 및 장치에 관한 것이다.The present specification relates to a method and apparatus for detecting and decrypting obfuscated JavaScript that is difficult for humans to interpret.

난독화 자바스크립트가 포함된 악성코드를 이용한 악성 파일 유포 방법은 일반적으로 난독화 시그니처를 만들어 탐지하지만 탐지율이 낮으며, 행위 분석 우회 기술이 적용된 자바스크립트의 경우에는 행위 분석을 통해서 탐지되지 못한다.Malicious file distribution methods using malware containing obfuscated JavaScript are generally detected by creating obfuscated signatures, but the detection rate is low, and JavaScript with behavior analysis bypass technology cannot be detected through behavior analysis.

보다 자세하게, 난독화 된 자바스크립트를 탐지하기 위한 방법은 정적 검사, 동적 검사 방법이 있다.More specifically, methods for detecting obfuscated JavaScript include static inspection and dynamic inspection methods.

정적 검사란, 검사 대상 파일을 실행시키지 않고 파일이 갖고 있는 데이터를 추출, 분석하여 악성 여부를 판별하는 검사로서, 예를 들어, 안티 바이러스 제품들을 통해 수행될 수 있다. 난독화 자바스크립트에 대한 정적 검사(예를 들어, 시그니처)는 하나의 자바스크립트로 다양한 난독화 패턴이 나올 수 있어, 시그니처를 통해 각각 대응해야하고 알려진 파일에 대해서만 대응할 수 있어 탐지율을 높이기 어렵다.Static scan is a scan that extracts and analyzes the data of a file without executing the file to be scanned to determine whether the file is malicious, and can be performed, for example, through anti-virus products. Static inspection (for example, signature) of obfuscated JavaScript can result in various obfuscation patterns with one JavaScript, so it is difficult to increase the detection rate because each must be responded to through a signature and can only be responded to known files.

동적 검사란, 검사 대상 파일을 실행시켜 행위 데이터를 기록, 분석하여 악의적 행위 패턴을 보이는지 판별하는 검사로서, 예를 들어, 샌드박스(가상머신, Virtual Machine) 기술을 이용하여 격리된 실행 환경에서 검사 대상 파일을 실행시켜 행위를 모니터링할 수 있다. 난독화 자바스크립트에 대한 동적 검사는 난독화 자바스크립트를 실행하여 비실행 파일의 의심스러운 행위를 탐지할 수 있다. 그러나 공격자는 행위 탐지를 회피하기 위해, 난독화 된 자바 스크립트를 실행하여 복호화 된 원문 스크립트가 악성 행위를 일으키기 전에 실행 지연(예를 들어, 지정된 시간에 동작, 일정 시간 후 동작), 행위 분석 환경 탐지 및 회피 등 다양한 우회 기술을 사용하여 동적 검사의 행위 분석을 우회할 수 있다.Dynamic inspection is an inspection that determines whether a malicious behavior pattern is displayed by executing the inspection target file to record and analyze behavior data. For example, inspection in an isolated execution environment using sandbox (virtual machine) technology. You can monitor the behavior by executing the target file. Dynamic inspection for obfuscated JavaScript can detect suspicious behavior in non-executable files by executing obfuscated JavaScript. However, in order to evade behavior detection, the attacker executes the obfuscated JavaScript and delays execution (eg, action at a specified time, action after a certain time), behavior analysis environment detection before the decrypted original script causes malicious behavior. It is possible to circumvent behavioral analysis of dynamic inspection using various circumvention techniques such as evasion and evasion.

본 명세서의 목적은, 비실행 파일에 포함된 자바스크립트의 원문을 확보하고 진단하여 기존의 정적/동적 탐지 방법보다 탐지율을 높이기 위한 방법 및 장치를 제안한다.An object of the present specification is to propose a method and apparatus for securing and diagnosing the original text of JavaScript included in a non-executable file to increase the detection rate compared to existing static/dynamic detection methods.

본 명세서가 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 이하의 명세서의 상세한 설명으로부터 본 명세서가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The technical problems to be achieved by this specification are not limited to the above-mentioned technical problems, and other technical problems not mentioned are clear to those skilled in the art from the detailed description of the specification below. will be understandable.

본 명세서의 일 양상은, 서버가 자바스크립트를 탐지하는 방법에 있어서, 비실행 파일과 관련된 응용프로그램의 프로세스를 실행하는 단계; 상기 응용프로그램의 프로세스에 근거하여, 상기 비실행 파일에 포함된 자바스크립트를 탐지하는 단계; 상기 자바스크립트를 실행하고, 상기 자바스크립트를 실행하기 위한 호스트(host) 프로세스를 디버깅하는 단계; 상기 호스트 프로세스에 근거하여, 상기 자바스크립트를 실행하기 위한 라이브러리(library)가 로드(load)되는 지를 판단하는 단계; 상기 라이브러리가 로드된 것에 근거하여, 상기 자바스크립트를 실행하기 위해 참조되는 함수의 주소에 브레이크 포인트(break point)를 설정하는 단계; 및 상기 브레이크 포인트의 지점이 실행된 것에 근거하여, 상기 자바스크립트의 원문을 추출하는 단계; 를 포함하며, 상기 자바스크립트는 난독화된 자바스크립트 일 수 있다.One aspect of the present specification is a method for a server to detect JavaScript, comprising: executing a process of an application program related to a non-executable file; Detecting JavaScript included in the non-executable file based on the process of the application program; Executing the JavaScript and debugging a host process for executing the JavaScript; Based on the host process, determining whether a library for executing the JavaScript is loaded; setting a break point at an address of a function referenced to execute the JavaScript, based on the library being loaded; and extracting the original text of the JavaScript based on the execution of the breakpoint. Including, the JavaScript may be obfuscated JavaScript.

또한, 상기 자바스크립트의 원문을 추출하는 단계는 레지스터에 설정된 데이터 추출 정책에 근거할 수 있다.In addition, the step of extracting the original text of JavaScript may be based on a data extraction policy set in the register.

또한, 상기 호스트 프로세스는 Wscript.exe를 포함할 수 있다.Also, the host process may include Wscript.exe.

또한, 상기 브레이크 포인트(break point)를 설정하는 단계는 상기 호스트 프로세스에 상기 라이브러리가 로드되는 것에 근거할 수 있다.Also, setting the break point may be based on loading the library into the host process.

또한, 상기 라이브러리는 Jscript.dll을 포함할 수 있다.Also, the library may include Jscript.dll.

또한, 상기 브레이크 포인트는 상기 라이브러리 내의 상기 자바스크립트를 실행하기 위해 참조되는 함수의 주소에 설정될 수 있다.Also, the breakpoint may be set at an address of a function referenced to execute the JavaScript in the library.

또한, 상기 자바스크립트를 실행하기 위해 참조되는 함수는 ScrFncObj::CALL 함수를 포함할 수 있다.Also, a function referred to to execute the JavaScript may include a ScrFncObj::CALL function.

또한, 상기 자바스크립트의 원문에 대해 정적 검사를 수행하는 단계; 를 더 포함할 수 있다.In addition, performing a static check on the original text of the JavaScript; may further include.

본 명세서의 또 다른 일 양상은, 자바스크립트를 탐지하기 위한 서버에 있어서, 통신부; 메모리; 및 상기 통신부 및 상기 메모리를 기능적으로 제어하는 프로세서;를 포함하고, 상기 프로세서는 비실행 파일과 관련된 응용프로그램의 프로세스를 실행하고, 상기 응용프로그램의 프로세스에 근거하여, 상기 비실행 파일에 포함된 자바스크립트를 탐지하며, 상기 자바스크립트를 실행하고, 상기 자바스크립트를 실행하기 위한 호스트(host) 프로세스를 디버깅하고, 상기 호스트 프로세스에 근거하여, 상기 자바스크립트를 실행하기 위한 라이브러리(library)가 로드(load)되는 지를 판단하며, 상기 라이브러리가 로드된 것에 근거하여, 상기 자바스크립트를 실행하기 위해 참조되는 함수의 주소에 브레이크 포인트(break point)를 설정하고, 상기 브레이크 포인트의 지점이 실행된 것에 근거하여, 상기 자바스크립트의 원문을 추출하며, 상기 자바스크립트는 난독화된 자바스크립트일 수 있다.Another aspect of the present specification is a server for detecting JavaScript, comprising: a communication unit; Memory; and a processor functionally controlling the communication unit and the memory, wherein the processor executes a process of an application program related to a non-executable file, and based on the process of the application program, the Java included in the non-executable file. Detect script, execute the JavaScript, debug a host process for executing the JavaScript, and based on the host process, a library for executing the JavaScript is loaded. ), and based on the library being loaded, setting a breakpoint at the address of the function referred to to execute the JavaScript, and based on the execution of the breakpoint, The original text of the JavaScript is extracted, and the JavaScript may be obfuscated JavaScript.

본 명세서의 실시예에 따르면, 비실행 파일에 포함된 자바스크립트의 원문을 확보하고 진단하여 기존의 정적/동적 탐지 방법보다 탐지율을 높일 수 있다.According to the embodiments of the present specification, the detection rate can be increased compared to the existing static/dynamic detection methods by securing and diagnosing the original text of JavaScript included in non-executable files.

본 명세서에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 명세서가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.Effects obtainable in the present specification are not limited to the effects mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the description below. .

도 1은 본 명세서와 관련된 전자 기기를 설명하기 위한 블록도이다.
도 2는 본 명세서와 관련된 서버 또는 클라이언트를 나타내는 도면이다.
도 3은 본 명세서에 적용될 수 있는 비정상 입력의 예시이다
도 4는 본 명세서가 적용될 수 있는 서버의 일 실시예이다.
도 5는 본 명세서가 적용될 수 있는 복호화된 자바스크립트의 원문의 예시이다.
본 명세서에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는, 첨부 도면은 본 명세서에 대한 실시예를 제공하고, 상세한 설명과 함께 본 명세서의 기술적 특징을 설명한다.
1 is a block diagram for explaining an electronic device related to the present specification.
2 is a diagram showing a server or client related to the present specification.
3 is an example of an abnormal input that can be applied to this specification
4 is an embodiment of a server to which this specification can be applied.
5 is an example of the original text of decrypted JavaScript to which this specification can be applied.
The accompanying drawings, which are included as part of the detailed description to aid understanding of the present specification, provide examples of the present specification and describe technical features of the present specification together with the detailed description.

이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 또한, 본 명세서에 개시된 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 실시예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 실시예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 명세서에 개시된 기술적 사상이 제한되지 않으며, 본 명세서의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.Hereinafter, the embodiments disclosed in this specification will be described in detail with reference to the accompanying drawings, but the same or similar components are given the same reference numerals regardless of reference numerals, and redundant description thereof will be omitted. The suffixes "module" and "unit" for components used in the following description are given or used together in consideration of ease of writing the specification, and do not have meanings or roles that are distinct from each other by themselves. In addition, in describing the embodiments disclosed in this specification, if it is determined that a detailed description of a related known technology may obscure the gist of the embodiment disclosed in this specification, the detailed description thereof will be omitted. In addition, the accompanying drawings are only for easy understanding of the embodiments disclosed in this specification, the technical idea disclosed in this specification is not limited by the accompanying drawings, and all changes included in the spirit and technical scope of this specification , it should be understood to include equivalents or substitutes.

제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.Terms including ordinal numbers, such as first and second, may be used to describe various components, but the components are not limited by the terms. These terms are only used for the purpose of distinguishing one component from another.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.It is understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, but other elements may exist in the middle. It should be. On the other hand, when an element is referred to as “directly connected” or “directly connected” to another element, it should be understood that no other element exists in the middle.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.Singular expressions include plural expressions unless the context clearly dictates otherwise.

본 명세서에서, "포함한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.In this specification, terms such as "comprise" or "having" are intended to indicate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, but one or more other features It should be understood that the presence or addition of numbers, steps, operations, components, parts, or combinations thereof is not precluded.

또한, 명세서에서 사용되는 "부"라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, "부"는 어떤 역할들을 수행한다. 그렇지만 "부"는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. "부"는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부"는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부"들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부"들로 결합되거나 추가적인 구성요소들과 "부"들로 더 분리될 수 있다.Also, the term “unit” used in the specification means a software or hardware component, and “unit” performs certain roles. However, "unit" is not meant to be limited to software or hardware. A “unit” may be configured to reside in an addressable storage medium and may be configured to reproduce on one or more processors. Thus, as an example, “unit” can refer to components such as software components, object-oriented software components, class components and task components, processes, functions, properties, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays and variables. Functionality provided within components and "parts" may be combined into fewer components and "parts" or further separated into additional components and "parts".

또한, 본 명세서의 일 실시예에 따르면 "부"는 프로세서 및 메모리로 구현될 수 있다. 용어 "프로세서"는 범용 프로세서, 중앙 처리 장치 (CPU), 마이크로프로세서, 디지털 신호 프로세서 (DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서는, "프로세서"는 주문형 반도체 (ASIC), 프로그램가능 로직 디바이스 (PLD), 필드 프로그램가능 게이트 어레이 (FPGA) 등을 지칭할 수도 있다. 용어 "프로세서"는, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다.Also, according to one embodiment of the present specification, "unit" may be implemented as a processor and a memory. The term “processor” should be interpreted broadly to include general-purpose processors, central processing units (CPUs), microprocessors, digital signal processors (DSPs), controllers, microcontrollers, state machines, and the like. In some circumstances, “processor” may refer to an application specific integrated circuit (ASIC), programmable logic device (PLD), field programmable gate array (FPGA), or the like. The term "processor" refers to a combination of processing devices, such as, for example, a combination of a DSP and a microprocessor, a combination of a plurality of microprocessors, a combination of one or more microprocessors in conjunction with a DSP core, or any other such configuration. may also refer to

용어 "메모리"는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. 용어 메모리는 임의 액세스 메모리 (RAM), 판독-전용 메모리 (ROM), 비-휘발성 임의 액세스 메모리 (NVRAM), 프로그램가능 판독-전용 메모리 (PROM), 소거-프로그램가능 판독 전용 메모리 (EPROM), 전기적으로 소거가능 PROM (EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.The term “memory” should be interpreted broadly to include any electronic component capable of storing electronic information. The term memory includes random access memory (RAM), read-only memory (ROM), non-volatile random access memory (NVRAM), programmable read-only memory (PROM), erasable-programmable read-only memory (EPROM), electrical may refer to various types of processor-readable media, such as erasable PROM (EEPROM), flash memory, magnetic or optical data storage, registers, and the like. A memory is said to be in electronic communication with the processor if the processor can read information from and/or write information to the memory. Memory integrated with the processor is in electronic communication with the processor.

본 명세서에서 사용되는 "비실행 파일"이란 실행 파일 또는 실행 가능한 파일과 반대되는 개념으로서 자체적으로 실행되지 않는 파일을 의미한다. 예를 들어, 비실행 파일은 PDF 파일, 한글 파일, 워드 파일과 같은 문서 파일, JPG 파일과 같은 이미지 파일, 동영상 파일, 자바 스크립트 파일, HTML 파일 등이 될 수 있으나, 이에 한정되지 않는다.As used herein, a "non-executable file" is a concept opposite to an executable file or an executable file, and means a file that is not itself executed. For example, the non-executable file may be a PDF file, a Korean file, a document file such as a word file, an image file such as a JPG file, a video file, a JavaScript file, and an HTML file, but is not limited thereto.

아래에서는 첨부한 도면을 참고하여 실시예에 대하여 본 명세서가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그리고 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분들은 생략될 수 있다.Hereinafter, with reference to the accompanying drawings, embodiments will be described in detail so that those skilled in the art can easily carry out the embodiments. In addition, in order to clearly describe the present disclosure in the drawings, parts irrelevant to the description may be omitted.

도 1은 본 명세서와 관련된 전자 기기를 설명하기 위한 블록도이다.1 is a block diagram for explaining an electronic device related to the present specification.

상기 전자 기기(100)는 무선 통신부(110), 입력부(120), 센싱부(140), 출력부(150), 인터페이스부(160), 메모리(170), 제어부(180) 및 전원 공급부(190) 등을 포함할 수 있다. 도 1에 도시된 구성요소들은 전자 기기를 구현하는데 있어서 필수적인 것은 아니어서, 본 명세서 상에서 설명되는 전자 기기는 위에서 열거된 구성요소들 보다 많거나, 또는 적은 구성요소들을 가질 수 있다.The electronic device 100 includes a wireless communication unit 110, an input unit 120, a sensing unit 140, an output unit 150, an interface unit 160, a memory 170, a control unit 180, and a power supply unit 190. ) and the like. The components shown in FIG. 1 are not essential to implement an electronic device, so an electronic device described in this specification may have more or fewer components than those listed above.

보다 구체적으로, 상기 구성요소들 중 무선 통신부(110)는, 전자 기기(100)와 무선 통신 시스템 사이, 전자 기기(100)와 다른 전자 기기(100) 사이, 또는 전자 기기(100)와 외부서버 사이의 무선 통신을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다. 또한, 상기 무선 통신부(110)는, 전자 기기(100)를 하나 이상의 네트워크에 연결하는 하나 이상의 모듈을 포함할 수 있다.More specifically, among the components, the wireless communication unit 110 is between the electronic device 100 and the wireless communication system, between the electronic device 100 and other electronic devices 100, or between the electronic device 100 and an external server. It may include one or more modules enabling wireless communication between Also, the wireless communication unit 110 may include one or more modules that connect the electronic device 100 to one or more networks.

이러한 무선 통신부(110)는, 방송 수신 모듈(111), 이동통신 모듈(112), 무선 인터넷 모듈(113), 근거리 통신 모듈(114), 위치정보 모듈(115) 중 적어도 하나를 포함할 수 있다.The wireless communication unit 110 may include at least one of a broadcast reception module 111, a mobile communication module 112, a wireless Internet module 113, a short-distance communication module 114, and a location information module 115. .

입력부(120)는, 영상 신호 입력을 위한 카메라(121) 또는 영상 입력부, 오디오 신호 입력을 위한 마이크로폰(microphone, 122), 또는 오디오 입력부, 사용자로부터 정보를 입력받기 위한 사용자 입력부(123, 예를 들어, 터치키(touch key), 푸시키(mechanical key) 등)를 포함할 수 있다. 입력부(120)에서 수집한 음성 데이터나 이미지 데이터는 분석되어 사용자의 제어명령으로 처리될 수 있다.The input unit 120 includes a camera 121 or video input unit for inputting a video signal, a microphone 122 for inputting an audio signal, or a user input unit 123 for receiving information from a user, for example , a touch key, a push key (mechanical key, etc.). Voice data or image data collected by the input unit 120 may be analyzed and processed as a user's control command.

센싱부(140)는 전자 기기 내 정보, 전자 기기를 둘러싼 주변 환경 정보 및 사용자 정보 중 적어도 하나를 센싱하기 위한 하나 이상의 센서를 포함할 수 있다. 예를 들어, 센싱부(140)는 근접센서(141, proximity sensor), 조도 센서(142, illumination sensor), 터치 센서(touch sensor), 가속도 센서(acceleration sensor), 자기 센서(magnetic sensor), 중력 센서(G-sensor), 자이로스코프 센서(gyroscope sensor), 모션 센서(motion sensor), RGB 센서, 적외선 센서(IR 센서: infrared sensor), 지문인식 센서(finger scan sensor), 초음파 센서(ultrasonic sensor), 광 센서(optical sensor, 예를 들어, 카메라(121 참조)), 마이크로폰(microphone, 122 참조), 배터리 게이지(battery gauge), 환경 센서(예를 들어, 기압계, 토양습도계, 온도계, 방사능 감지 센서, 열 감지 센서, 가스 감지 센서 등), 화학 센서(예를 들어, 전자 코, 헬스케어 센서, 생체 인식 센서 등) 중 적어도 하나를 포함할 수 있다. 한편, 본 명세서에 개시된 전자 기기는, 이러한 센서들 중 적어도 둘 이상의 센서에서 센싱되는 정보들을 조합하여 활용할 수 있다.The sensing unit 140 may include one or more sensors for sensing at least one of information within the electronic device, environmental information surrounding the electronic device, and user information. For example, the sensing unit 140 may include a proximity sensor 141, an illumination sensor 142, a touch sensor, an acceleration sensor, a magnetic sensor, and gravity. Sensor (G-sensor), gyroscope sensor (gyroscope sensor), motion sensor (motion sensor), RGB sensor, infrared sensor (IR sensor), finger scan sensor, ultrasonic sensor , optical sensor (e.g. camera (see 121)), microphone (see 122), battery gauge, environmental sensor (e.g. barometer, soil hygrometer, thermometer, radiation detection sensor) , a heat sensor, a gas sensor, etc.), and a chemical sensor (eg, an electronic nose, a health care sensor, a biometric sensor, etc.). Meanwhile, the electronic device disclosed in this specification may combine and utilize information sensed by at least two or more of these sensors.

출력부(150)는 시각, 청각 또는 촉각 등과 관련된 출력을 발생시키기 위한 것으로, 디스플레이부(151), 음향 출력부(152), 햅팁 모듈(153), 광 출력부(154) 중 적어도 하나를 포함할 수 있다. 디스플레이부(151)는 터치 센서와 상호 레이어 구조를 이루거나 일체형으로 형성됨으로써, 터치 스크린을 구현할 수 있다. 이러한 터치 스크린은, 전자 기기(100)와 사용자 사이의 입력 인터페이스를 제공하는 사용자 입력부(123)로써 기능함과 동시에, 전자 기기(100)와 사용자 사이의 출력 인터페이스를 제공할 수 있다.The output unit 150 is for generating an output related to sight, hearing, or touch, and includes at least one of a display unit 151, a sound output unit 152, a haptic module 153, and an optical output unit 154. can do. The display unit 151 may implement a touch screen by forming a mutual layer structure or integrally with the touch sensor. Such a touch screen may function as a user input unit 123 providing an input interface between the electronic device 100 and the user and provide an output interface between the electronic device 100 and the user.

인터페이스부(160)는 전자 기기(100)에 연결되는 다양한 종류의 외부 기기와의 통로 역할을 수행한다. 이러한 인터페이스부(160)는, 유/무선 헤드셋 포트(port), 외부 충전기 포트(port), 유/무선 데이터 포트(port), 메모리 카드(memory card) 포트, 식별 모듈이 구비된 장치를 연결하는 포트(port), 오디오 I/O(Input/Output) 포트(port), 비디오 I/O(Input/Output) 포트(port), 이어폰 포트(port) 중 적어도 하나를 포함할 수 있다. 전자 기기(100)에서는, 상기 인터페이스부(160)에 외부 기기가 연결되는 것에 대응하여, 연결된 외부 기기와 관련된 적절할 제어를 수행할 수 있다.The interface unit 160 serves as a passage for various types of external devices connected to the electronic device 100 . The interface unit 160 connects a device equipped with a wired/wireless headset port, an external charger port, a wired/wireless data port, a memory card port, and an identification module. It may include at least one of a port, an audio input/output (I/O) port, a video input/output (I/O) port, and an earphone port. In response to the external device being connected to the interface unit 160, the electronic device 100 may perform appropriate control related to the connected external device.

또한, 메모리(170)는 전자 기기(100)의 다양한 기능을 지원하는 데이터를 저장한다. 메모리(170)는 전자 기기(100)에서 구동되는 다수의 응용 프로그램(application program 또는 애플리케이션(application)), 전자 기기(100)의 동작을 위한 데이터들, 명령어들을 저장할 수 있다. 이러한 응용 프로그램 중 적어도 일부는, 무선 통신을 통해 외부 서버로부터 다운로드 될 수 있다. 또한 이러한 응용 프로그램 중 적어도 일부는, 전자 기기(100)의 기본적인 기능(예를 들어, 전화 착신, 발신 기능, 메시지 수신, 발신 기능)을 위하여 출고 당시부터 전자 기기(100)상에 존재할 수 있다. 한편, 응용 프로그램은, 메모리(170)에 저장되고, 전자 기기(100) 상에 설치되어, 제어부(180)에 의하여 상기 전자 기기의 동작(또는 기능)을 수행하도록 구동될 수 있다.Also, the memory 170 stores data supporting various functions of the electronic device 100 . The memory 170 may store a plurality of application programs (application programs or applications) running in the electronic device 100 , data for operating the electronic device 100 , and commands. At least some of these application programs may be downloaded from an external server through wireless communication. In addition, at least some of these application programs may exist on the electronic device 100 from the time of shipment for basic functions of the electronic device 100 (eg, incoming and outgoing calls, outgoing functions, message receiving, and outgoing functions). Meanwhile, the application program may be stored in the memory 170, installed on the electronic device 100, and driven by the control unit 180 to perform an operation (or function) of the electronic device.

제어부(180)는 상기 응용 프로그램과 관련된 동작 외에도, 통상적으로 전자 기기(100)의 전반적인 동작을 제어한다. 제어부(180)는 위에서 살펴본 구성요소들을 통해 입력 또는 출력되는 신호, 데이터, 정보 등을 처리하거나 메모리(170)에 저장된 응용 프로그램을 구동함으로써, 사용자에게 적절한 정보 또는 기능을 제공 또는 처리할 수 있다.The controller 180 controls general operations of the electronic device 100 in addition to operations related to the application program. The control unit 180 may provide or process appropriate information or functions to the user by processing signals, data, information, etc. input or output through the components described above or by running an application program stored in the memory 170.

또한, 제어부(180)는 메모리(170)에 저장된 응용 프로그램을 구동하기 위하여, 도 1과 함께 살펴본 구성요소들 중 적어도 일부를 제어할 수 있다. 나아가, 제어부(180)는 상기 응용 프로그램의 구동을 위하여, 전자 기기(100)에 포함된 구성요소들 중 적어도 둘 이상을 서로 조합하여 동작시킬 수 있다.In addition, the controller 180 may control at least some of the components discussed in conjunction with FIG. 1 in order to drive an application program stored in the memory 170 . Furthermore, the controller 180 may combine and operate at least two or more of the components included in the electronic device 100 to drive the application program.

전원공급부(190)는 제어부(180)의 제어 하에서, 외부의 전원, 내부의 전원을 인가받아 전자 기기(100)에 포함된 각 구성요소들에 전원을 공급한다. 이러한 전원공급부(190)는 배터리를 포함하며, 상기 배터리는 내장형 배터리 또는 교체가능한 형태의 배터리가 될 수 있다.The power supply unit 190 receives external power and internal power under the control of the controller 180 and supplies power to each component included in the electronic device 100 . The power supply unit 190 includes a battery, and the battery may be a built-in battery or a replaceable battery.

상기 각 구성요소들 중 적어도 일부는, 이하에서 설명되는 다양한 실시 예들에 따른 전자 기기의 동작, 제어, 또는 제어방법을 구현하기 위하여 서로 협력하여 동작할 수 있다. 또한, 상기 전자 기기의 동작, 제어, 또는 제어방법은 상기 메모리(170)에 저장된 적어도 하나의 응용 프로그램의 구동에 의하여 전자 기기 상에서 구현될 수 있다.At least some of the components may operate in cooperation with each other in order to implement an operation, control, or control method of an electronic device according to various embodiments described below. Also, the operation, control, or control method of the electronic device may be implemented on the electronic device by driving at least one application program stored in the memory 170 .

본 명세서에서 서버(또는 클라우드 서버) 또는 클라이언트는 전자기기(100)를 포함할 수 있으며, 전자기기(100)는 단말로 통칭될 수 있다.In this specification, the server (or cloud server) or client may include the electronic device 100, and the electronic device 100 may be collectively referred to as a terminal.

단말은 외부 서버(또는 클라우드 서버) 또는 클라이언트와 네트워크로 연결되어 통신할 수 있다.The terminal may communicate with an external server (or cloud server) or a client through a network connection.

도 2는 본 명세서와 관련된 서버 또는 클라이언트를 나타내는 도면이다.2 is a diagram showing a server or client related to the present specification.

본 명세서에서 서버(또는 클라우드 서버) 또는 클라이언트는 제어부(200) 및 통신부(230)를 포함할 수 있다. 제어부(200)는 프로세서(210) 및 메모리(220)를 포함할 수 있다. 프로세서(210)는 메모리(220)에 저장된 명령어들을 수행할 수 있다. 프로세서(210)는 통신부(230)를 제어할 수 있다. 메모리(220)는 캐시(cache) 메모리를 포함할 수 있다.In this specification, a server (or cloud server) or a client may include a control unit 200 and a communication unit 230. The control unit 200 may include a processor 210 and a memory 220. The processor 210 may execute instructions stored in the memory 220 . The processor 210 may control the communication unit 230 . The memory 220 may include cache memory.

프로세서(210)는 메모리(220)에 저장된 명령어에 기초하여 서버 또는 클라이언트의 동작을 제어할 수 있다. 서버 또는 클라이언트는 하나의 프로세서를 포함할 수 있고, 복수의 프로세서를 포함할 수 있다. 서버 또는 클라이언트가 복수의 프로세서를 포함하는 경우, 복수의 프로세서 중 적어도 일부는 물리적으로 이격된 거리에 위치할 수 있다. 또한, 서버 또는 클라이언트는 이에 한정되지 않고 알려진 다양한 방식으로 구현될 수 있다.The processor 210 may control the operation of the server or client based on instructions stored in the memory 220 . A server or client may include one processor or may include a plurality of processors. When the server or the client includes a plurality of processors, at least some of the plurality of processors may be located at physically separated distances. In addition, the server or client may be implemented in various known ways without being limited thereto.

통신부(230)는, 서버 또는 클라이언트와 무선 통신 시스템 사이, 서버 또는 클라이언트와 다른 서버 또는 클라이언트 사이, 또는 서버 또는 클라이언트와 외부서버(단말) 사이의 무선 통신을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다. 또한, 통신부(210)는, 서버 또는 클라이언트를 하나 이상의 네트워크에 연결하는 하나 이상의 모듈을 포함할 수 있다.The communication unit 230 may include one or more modules enabling wireless communication between a server or client and a wireless communication system, between a server or client and another server or client, or between a server or client and an external server (terminal). there is. Also, the communication unit 210 may include one or more modules that connect a server or a client to one or more networks.

제어부(200)는 메모리(220)에 저장된 응용 프로그램을 구동하기 위하여, 서버 또는 클라이언트의 구성요소들 중 적어도 일부를 제어할 수 있다. 나아가, 제어부(200)는 상기 응용 프로그램의 구동을 위하여, 서버 또는 클라이언트에 포함된 구성요소들 중 적어도 둘 이상을 서로 조합하여 동작 시킬 수 있다.The controller 200 may control at least some of the components of the server or client in order to drive the application program stored in the memory 220 . Furthermore, the control unit 200 may combine and operate at least two or more of the components included in the server or client to drive the application program.

본 명세서에서 서버는 리버싱 엔진 또는/및 CDR 서비스를 제공하는 CDR 엔진을 포함할 수 있다.In this specification, the server may include a reversing engine or/and a CDR engine providing CDR services.

리버싱(Reversing) 엔진Reversing Engine

리버싱 엔진이란, 비실행 파일에 대한 리버스 엔지니어링(리버싱) 과정을 자동화 한 분석/진단 엔진이다. 이는 역공학이라고 불리며, 이를 통해 서버는 소스코드가 없는 소프트웨어를 컴퓨터가 실행할 수 있는 언어인 어셈블리단까지 들어가 소프트웨어의 원리 및 구조에 대해 알 수 있다. 이를 이용하여 서버는 일반적인 소프트웨어(예를 들어, msoffice, pdf) 구조, 악성코드 행위, 취약점 악용 방법 등을 알 수 있다.A reversing engine is an analysis/diagnostic engine that automates the reverse engineering (reversing) process for non-executable files. This is called reverse engineering, and through this, the server can learn about the principles and structure of software without source code by entering the assembly stage, which is a language that computers can execute. Using this, the server can know the structure of general software (for example, msoffice, pdf), malicious code behavior, and how to exploit vulnerabilities.

예를 들어, 리버싱 엔진은 다음의 단계를 수행할 수 있다.For example, the reversing engine may perform the following steps.

1.파일 분석: 비실행 파일 자체의 외관(예를 들어, 속성, 작성자, 작성 날짜, 파일 타입)을 분석하는 단계로서, 일반 백신 프로그램과 유사하게 비실행 파일 자체의 정보만으로 악성여부를 진단할 수 있다.1. File analysis: As a step of analyzing the appearance of the non-executable file itself (eg, attribute, author, date of creation, file type), similar to general vaccine programs, maliciousness can be diagnosed only with the information of the non-executable file itself. can

2.정적 분석: 비실행 파일 내의 데이터를 추출, 분석해서 정상, 악성 여부를 판별하는 단계로서, 비실행 파일은 실행하지 않고 파일 구조에 맞게 내부 데이터를 추출하여 비교 분석하여 악성여부를 진단할 수 있다. 이는 매크로, URL 추출 분석 등에 적합할 수 있다.2.Static analysis: This is a step of extracting and analyzing data in non-executable files to determine whether they are normal or malicious. Non-executable files are not executed, and internal data is extracted according to the file structure and analyzed for comparison to diagnose maliciousness. there is. This may be suitable for macros, URL extraction analysis, and the like.

3.동적 분석: 비실행 파일을 실행하고 모니터링하면서 행위를 분석하여 악성 여부를 판별하는 단계로서, 매크로, 하이퍼링크, DDE 등 정상기능을 이용한 악성 행위를 탐지하기에 용이하다.3.Dynamic analysis: This is a step of analyzing behaviors while executing and monitoring non-executable files to determine whether they are malicious. It is easy to detect malicious behaviors using normal functions such as macros, hyperlinks, and DDE.

4.디버깅 분석: 비실행 파일을 실행하고 디버깅하여 취약점, 익스플로잇 등을 분석하는 단계로서, 매크로, 하이퍼링크, DDE를 포함하여 문서 내 본문, 표, 폰트, 그림 등을 이용한 응용프로그램의 취약점을 탐지하기에 적합하다.4. Debugging analysis: This is a step of analyzing vulnerabilities and exploits by executing and debugging non-executable files. Detecting vulnerabilities of applications using text, tables, fonts, pictures, etc. in documents, including macros, hyperlinks, and DDE suitable for doing

리버싱 엔진은 디버깅 분석에 사용될 수 있는 디버깅 엔진을 포함할 수 있다. 디버깅 엔진은 비실행 파일의 열람 과정을 디버깅 모드를 이용하여 문서 입력, 처리, 출력단계에서 발생하는 취약점을 진단할 수 있다. 여기서 취약점이란, 응용프로그램이 응용프로그램의 개발자가 개발한 코드(로직)에서 예상하지 못한 값을 입력 받았을 때, 발생하는 오류, 버그 등을 이용하는 것으로서, 공격자는 취약점을 통해 비정상 종료로 인한 서비스 거부, 원격 코드 실행 등의 악성 문서 행위를 실행할 수 있다.The reversing engine may include a debugging engine that may be used for debugging analysis. The debugging engine can diagnose vulnerabilities occurring in document input, processing, and output stages by using the debugging mode for the process of reading non-executable files. Vulnerability here refers to the use of errors and bugs that occur when an application program receives an unexpected value from the code (logic) developed by the application developer. Malicious document behavior such as remote code execution can be executed.

디버깅 엔진은 디버거를 포함할 수 있다. 디버거는 리버스 엔지니어링을 하기 위한 도구로 다른 대상 프로그램을 어셈블리 레벨에서 Break Point를 할 수 있는 프로그램, 프로세스를 의미할 수 있다.A debugging engine may include a debugger. A debugger is a tool for reverse engineering and can mean a program or process capable of breaking points in other target programs at the assembly level.

CDR 엔진(Contents Disarm and Reconstruction engine)CDR engine (Contents Disarm and Reconstruction engine)

CDR 엔진은 CDR 서비스를 제공한다. CDR 서비스는 비실행 파일을 분해해 악성 파일 또는 불필요한 파일을 제거하고, 콘텐츠는 원본과 최대한 동일하게 하여, 새로운 파일을 만드는 솔루션이다.The CDR engine provides CDR services. The CDR service is a solution that disassembles non-executable files to remove malicious or unnecessary files, and creates new files by keeping the contents as identical as possible to the original.

즉, CDR은 문서 내의 콘텐츠를 무해화(Disarm, 無害化)하고, 재조합(Reconstruction)하여 안전한 문서를 만들어 고객에게 제공하는 서비스를 의미한다. 여기서, 무해화 대상 파일은 비실행 파일 일체일 수 있다. 비실행 파일로는 워드 파일, 엑셀 파일, 파워포인트 파일, 한글 파일, PDF 파일을 예로 들 수 있다. 무해화 대상 콘텐츠는 액티브 콘텐츠일 수 있다. 액티브 콘텐츠로는 매크로, 하이퍼링크, 객체연결삽입(Object Linking and Embedding, OLE)을 예로 들 수 있다.In other words, CDR refers to a service that disarms and reconstructs contents in documents to create safe documents and provide them to customers. Here, the files to be harmless may be all non-executable files. Word files, Excel files, PowerPoint files, Hangul files, and PDF files may be exemplified as non-executable files. Content to be harmless may be active content. Examples of active content include macros, hyperlinks, and object linking and embedding (OLE).

도 3은 본 명세서에 적용될 수 있는 비정상 입력의 예시이다.3 is an example of an abnormal input that can be applied to this specification.

도 3을 참조하면, 응용프로그램은 비실행 파일을 통해, 비정상적인 값(예를 들어, 입력값이 정상범위인 2를 초과하는 경우)을 입력 받는 경우, 개발자가 의도하지 않은 실행흐름으로 변경되어 취약점이 동작될 수 있다. 디버깅 엔진은 문서 열람 과정을 자동 디버깅하여 취약점과 관련된 특정 지점에 브레이크 포인트를 설정하고 입력값과 관련된 특정값을 확인하여 입력값이 취약점을 일으키는 값인지 아닌지 판별하여 악성 여부를 진단할 수 있다.Referring to FIG. 3, when an application program receives an abnormal value (for example, when the input value exceeds the normal range of 2) through a non-executable file, the application program is changed into an execution flow unintended by the developer and is vulnerable. this can work. The debugging engine automatically debugs the document browsing process, sets a breakpoint at a specific point related to the vulnerability, checks a specific value related to the input value, determines whether the input value is a value that causes a vulnerability, and diagnoses whether the input value is malicious.

보다 자세하게, 디버깅 엔진은 비실행 파일을 확인하고 이를 열람하기 위한 응용프로그램을 실행하여 디버깅을 시작할 수 있다. 비실행 파일을 열람하는 과정에서 문서 행위와 관련된 모듈이 로드 되면, 디버깅 엔진은 해당 모듈이 분석 대상 모듈인지 확인하고, 분석 대상이라면 지정된 주소에 브레이크 포인트를 설정할 수 있다.More specifically, the debugging engine can start debugging by identifying non-executable files and running an application to view them. When a module related to a document behavior is loaded while viewing a non-executable file, the debugging engine checks whether the module is an analysis target module, and if it is an analysis target, it can set a breakpoint at a designated address.

예를 들어, 악성 비실행 파일은 응용프로그램의 버전이나 운영체제 환경 등의 특정 조건이 만족하지 않으면 응용프로그램을 종료하거나 아무런 악성 행위가 발생하지 않는 흐름으로 분기하는 분기 지점들을 가질 수 있다. 서버는 사전에 분석가에 의해 분석되어 이러한 가능성을 가지는 분기 지점에 브레이크 포인트를 설정할 수 있다.For example, a malicious non-executable file may have branching points at which an application program is terminated or branched into a flow in which no malicious activity occurs unless a specific condition such as an application version or an operating system environment is satisfied. The server can set a breakpoint at a divergence point that has been previously analyzed by an analyst and has this possibility.

또한, 서버는 해당 분기 지점과 연관되어, 응용프로그램을 종료하지 않고 계속 실행하거나 악성 행위가 발생할 수 있는 흐름으로 유도할 수 있는 조건들을 설정할 수 있다.In addition, the server may set conditions associated with a corresponding branching point to continuously execute the application program without terminating or lead to a flow in which a malicious action may occur.

응용프로그램의 프로세스 실행 중 해당 브레이크 포인트 지점에서 프로세스가 멈춘 경우, 서버는 탐지 로직에 따라 취약점 여부를 탐지한 후, 결과를 분석 리포트에 저장하는 단계를 수행할 수 있다.If the process stops at the corresponding breakpoint while the process of the application program is running, the server may perform a step of detecting whether or not there is a vulnerability according to the detection logic and then storing the result in an analysis report.

서버에 포함된 자동화 리버싱 엔진은 전술한 단계들을 자동으로 수행하면서 분석하여 분석가가 연구, 개발한 진단 알고리즘을 통해, 악성 비실행 파일을 진단하고 차단할 수 있다.The automated reversing engine included in the server can analyze and diagnose malicious non-executable files through a diagnosis algorithm researched and developed by an analyst by automatically performing and analyzing the above steps.

도 4는 본 명세서가 적용될 수 있는 서버의 일 실시예이다.4 is an embodiment of a server to which this specification can be applied.

도 4를 참조하면, 서버는 비실행 파일 및 비실행 파일을 실행시키기 위한 응용프로그램(예를 들어, MSOFFICE, 한컴오피스 등)을 포함할 수 있다. 예를 들어, 비실행 파일은 난독화된 자바스크립트를 포함할 수 있다.Referring to FIG. 4 , the server may include non-executable files and application programs (eg, MSOFFICE, Hancom Office, etc.) for executing non-executable files. For example, non-executable files may contain obfuscated JavaScript.

난독화는 실행 가능한 코드 또는 스크립트를 이해하기 어렵게 만들어 많은 분석 리소스를 소모하게 만드는 기술이다. 예를 들어, 윈도우에서 계산기 실행시키는 명령어 “cmd.exe /c calc”을 탐지하기 위한 룰은 문자열 안에 cmd 와 calc가 있으면 탐지하도록 설정될 수 있다. 이러한 탐지 룰은 난독화된 명령어가 ”C^m^D^%2E^E^x^e^%20^/^c^%20^C^a^L^C”인 경우, 탐지할 수 없다.Obfuscation is a technique that consumes a lot of analysis resources by making executable code or script difficult to understand. For example, a rule to detect “cmd.exe /c calc”, a command that runs a calculator in Windows, can be configured to detect cmd and calc in a string. These detection rules cannot detect if the obfuscated command is “C^m^D^%2E^E^x^e^%20^/^c^%20^C^a^L^C” .

이러한 문제를 해결하기 위해, 본 명세서에서 서버는 악성코드 분석을 위해 격리된 가상환경(Virtual Machine)을 생성하여, 난독화된 자바스크립트를 탐지할 수 있다. 예를 들어, 가상환경은 윈도우 운영체제를 포함할 수 있다.In order to solve this problem, in the present specification, the server may create an isolated virtual environment (Virtual Machine) for malicious code analysis and detect obfuscated JavaScript. For example, the virtual environment may include a Windows operating system.

서버는 디버깅(debugging) 모드로 비실행 파일과 관련된 응용프로그램의 프로세스를 실행한다(S4010). 예를 들어, 서버는 CreateProcess API를 이용하여 디버깅 모드(DEBUG_ONLY_THIS_PROCESS)로 응용프로그램의 분석 대상 비실행 파일을 열기 위한 프로세스를 실행할 수 있다. 이를 통해, 서버는 응용프로그램 프로세스의 디버그 이벤트를 수신 받을 수 있다.The server executes the process of the application program related to the non-executable file in a debugging mode (S4010). For example, the server may execute a process for opening a non-executable file to be analyzed by an application program in a debugging mode (DEBUG_ONLY_THIS_PROCESS) using the CreateProcess API. Through this, the server can receive the debug event of the application program process.

보다 자세하게, 서버는 CreateProcess API를 이용하여 응용프로그램 프로세스를 “DEBUG_ONLY_THIS_PROCESS” 플래그를 줘서 실행할 수 있다.In more detail, the server can execute the application process by passing the “DEBUG_ONLY_THIS_PROCESS” flag using the CreateProcess API.

서버는 응용프로그램의 프로세스에 근거하여, 비실행 파일에 포함된 자바스크립트를 탐지한다(S4020). 예를 들어, 서버는 메모리에 적재된 응용프로그램의 프로세스에 근거하여, (난독화된) 자바스크립트를 탐지할 수 있다. 보다 자세하게, 서버는 응용프로그램의 프로세스가 실행하는 프로그램의 확장자가 JS인 경우, 자바스크립트를 탐지할 수 있다.The server detects JavaScript included in non-executable files based on the process of the application program (S4020). For example, a server can detect (obfuscated) JavaScript based on the application's process loaded into memory. In more detail, the server may detect JavaScript when the extension of the program executed by the application process is JS.

서버는 자바스크립트를 실행하고, 자바스크립트를 실행하기 위한 호스트(host) 프로세스를 디버깅한다(S4030). 예를 들어, 서버는 확장자가 JS인 파일을 실행하여 스크립트 실행 호스트 프로세스인 Wscript.exe를 디버깅할 수 있다. Wscript.exe는 윈도우 운영체제에서 자바스크립트(예를 들어, Javascript, VBScript 등)를 실행할 수 있도록 자바스크립트 실행 호스트 역할을 수행하는 프로세스이다.The server executes JavaScript and debugs a host process for executing JavaScript (S4030). For example, the server can debug the script execution host process, Wscript.exe, by executing a file with the extension JS. Wscript.exe is a process that serves as a JavaScript execution host so that JavaScript (eg, Javascript, VBScript, etc.) can be executed in the Windows operating system.

서버는 호스트 프로세스에 근거하여, 자바스크립트를 실행하기 위한 라이브러리(library)가 로드(load)되는 지를 판단한다(S4040). 예를 들어, 서버는 Wscript.exe 프로세스 안에 자바스크립트 실행 엔진인 Jscript.dll이 로드되는지를 확인할 수 있다. 보다 자세하게, 서버는 Wscript.exe을 통해, 자바스크립트를 실행하면 jscript.dll이 로드되고, Vbscript를 실행하면 Vbscript.dll이 로드되며, 이를 통해, 각 스크립트 엔진이 로드되고 자바스크립트는 실행될 수 있다.Based on the host process, the server determines whether a library for executing JavaScript is loaded (S4040). For example, the server can check whether Jscript.dll, the JavaScript execution engine, is loaded in the Wscript.exe process. In more detail, the server loads jscript.dll when JavaScript is executed through Wscript.exe, and Vbscript.dll is loaded when Vbscript is executed, through which each script engine is loaded and JavaScript can be executed.

서버는 라이브러리가 로드된 것에 근거하여, 자바스크립트를 실행하기 위해 참조되는 함수의 주소에 브레이크 포인트(break point)를 설정한다(S4050). 예를 들어, 서버는 Jscript.dll 내의 ScrFncObj::CALL 함수의 주소(오프셋)에 브레이크 포인트를 설정할 수 있다. 이를 위해, 서버는 자바스크립트를 실행하기 위해 참조되는 함수의 주소가 설정되어 있을 수 있다.Based on the fact that the library is loaded, the server sets a break point at the address of the function referenced to execute JavaScript (S4050). For example, the server can set a breakpoint at the address (offset) of the ScrFncObj::CALL function in Jscript.dll. To this end, the server may have an address of a function referenced to execute JavaScript.

서버는 브레이크 포인트의 지점이 실행된 것에 근거하여, 자바스크립트의 원문을 추출한다(S4060). 예를 들어, 서버는 호스트 프로세스가 브레이크 포인트의 지점을 지날 때 정의된 데이터 추출 정책 (예를 들어, EBX 레지스터(Extended Base address Register)가 가리키는 메모리에서 스크립트 원문 추출)으로 난독화가 해제된 자바스크립트의 원문을 추출할 수 있다. 보다 자세하게, 데이터 추출 정책에 근거하여, 서버는 EBX-1 번지(EBX 레지스터에서 4를 뺀 주소)에 있는 “원문 스크립트 크기”를 확보하고, EBX 레지스터가 가리키는 메모리 주소에서 앞서 확보한 “원문 스크립트 크기” 만큼 원문 자바스크립트를 추출하여 저장할 수 있다.The server extracts the original text of the JavaScript based on the execution of the breakpoint (S4060). For example, the server can generate deobfuscated JavaScript files with a defined data extraction policy (e.g., extract script text from memory pointed to by the EBX register (Extended Base Address Register)) when the host process passes the point of a breakpoint. The original text can be extracted. More specifically, based on the data extraction policy, the server secures the "original script size" at address EBX-1 (the address minus 4 from the EBX register), and obtains the "original script size" previously obtained at the memory address pointed to by the EBX register. ” can extract and save the original JavaScript.

서버는 자바스크립트의 원문에 대해서 정적 검사를 수행한다(S4070).The server performs a static check on the original text of JavaScript (S4070).

본 명세서에서 서버는 추출된 원문에 대해 정적 검사를 수행하므로, 난독화된 자바스크립트에 대한 정적 검사보다 탐지율을 높일 수 있고, 동적 검사 우회 기술이 실행되기 전에 원문을 확보하여 탐지율을 높일 수 있다.In the present specification, since the server performs static inspection on the extracted original text, the detection rate can be increased compared to the static inspection on the obfuscated JavaScript, and the detection rate can be increased by securing the original text before the dynamic inspection bypass technique is executed.

도 5는 본 명세서가 적용될 수 있는 복호화된 자바스크립트의 원문의 예시이다.5 is an example of the original text of decrypted JavaScript to which this specification can be applied.

도 5를 참조하면, 서버는 난독화된 자바스크립트를 복호화하여, 자바스크립트의 원문을 추출할 수 있다.Referring to FIG. 5 , the server may decrypt the obfuscated JavaScript and extract the original text of the JavaScript.

예를 들어, 서버가 설정한 브레이크 포인트의 오프셋은 0x75C58276 번지(5020)로 이는 ScrFncObj::CALL 함수의 실행 지점일 수 있다. 이를 위해, 서버는 분석가가 사전에 분석한 브레이크 포인트의 오프셋이 설정되어 있을 수 있다. 서버는 디버깅엔진에서 디버깅을 시작할 때 Jscript.dll이 로드되었다면, 설정된 오프셋 값을 불러와 브레이크 포인트를 설정할 수 있다. 또한, ScrFncObj::CALL 함수의 주소는 Jscript.dll의 버전에 따라 달라질 수 있어 분석가에 의한 사전 분석에 따라 다르게 설정될 수 있고, 업데이트 될 수 있다.For example, the offset of the breakpoint set by the server is 0x75C58276 (5020), which may be the execution point of the ScrFncObj::CALL function. To this end, the server may have an offset of a breakpoint previously analyzed by an analyst set. If Jscript.dll is loaded when starting debugging in the debugging engine, the server can call the set offset value and set a breakpoint. Also, since the address of the ScrFncObj::CALL function may vary depending on the version of Jscript.dll, it may be differently set and updated according to an analyst's prior analysis.

서버는 EBX 레지스터 주소(5010)에서 4를 뺀 번지(예를 들어, 0x03F9004C - 4 = 0x03F90048 )에 저장된 “원문 스크립트 크기” (0xD716)를 확인할 수 있다. 서버는 EBX 레지스터(0x03F9004C(5010))가 가리키는 메모리에서 앞서 확인한 크기만큼의 데이터를 추출하여 자바스크립트의 원문을 확보할 수 있고, 확보된 자바 스크립트 원문을 파일로 저장하여, 이를 탐지 정책(예를 들어, 시그니처)과 비교하여 악성 여부를 탐지할 수 있다.The server can check the “Original script size” (0xD716) stored in the EBX register address (5010) minus 4 (eg, 0x03F9004C - 4 = 0x03F90048 ). The server can extract the original text of JavaScript by extracting the amount of data from the memory pointed to by the EBX register (0x03F9004C (5010)) to obtain the original text of JavaScript, and save the original text of JavaScript as a file so that it can be used as a detection policy (for example, For example, the signature) can be compared to detect maliciousness.

전술한 본 명세서는, 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터 시스템에 의하여 읽혀 질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 명세서의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 명세서의 등가적 범위 내에서의 모든 변경은 본 명세서의 범위에 포함된다.The above specification can be implemented as computer readable code on a medium on which a program is recorded. A computer-readable medium includes all types of recording devices in which data that can be read by a computer system is stored. Examples of computer-readable media include Hard Disk Drive (HDD), Solid State Disk (SSD), Silicon Disk Drive (SDD), ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage device, etc. , and also includes those implemented in the form of a carrier wave (eg, transmission over the Internet). Accordingly, the above detailed description should not be construed as limiting in all respects and should be considered illustrative. The scope of this specification should be determined by reasonable interpretation of the appended claims, and all changes within the equivalent scope of this specification are included in the scope of this specification.

또한, 이상에서 서비스 및 실시 예들을 중심으로 설명하였으나 이는 단지 예시일 뿐 본 명세서를 한정하는 것이 아니며, 본 명세서가 속하는 분야의 통상의 지식을 가진 자라면 본 서비스 및 실시 예의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 실시 예들에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부한 청구 범위에서 규정하는 본 명세서의 범위에 포함되는 것으로 해석되어야 할 것이다.In addition, although services and embodiments have been described above, this is only an example and does not limit the present specification, and those skilled in the art to which this specification belongs will not deviate from the essential characteristics of the present service and embodiments. It will be appreciated that various modifications and applications not exemplified above are possible. For example, each component specifically shown in the embodiments can be modified and implemented. And differences related to these modifications and applications should be construed as being included in the scope of the present specification as defined in the appended claims.

Claims (9)

서버가 자바스크립트를 탐지하는 방법에 있어서,
비실행 파일과 관련된 응용프로그램의 프로세스를 실행하는 단계;
상기 응용프로그램의 프로세스에 근거하여, 상기 비실행 파일에 포함된 자바스크립트를 탐지하는 단계;
상기 자바스크립트를 실행하고, 상기 자바스크립트를 실행하기 위한 호스트(host) 프로세스를 디버깅하는 단계;
상기 호스트 프로세스에 근거하여, 상기 자바스크립트를 실행하기 위한 라이브러리(library)가 로드(load)되는 지를 판단하는 단계;
상기 호스트 프로세스에 상기 라이브러리가 로드되는 것에 근거하여, 상기 자바스크립트를 실행하기 위해 참조되는 함수의 주소에 브레이크 포인트(break point)를 설정하는 단계; 및
상기 브레이크 포인트의 지점의 실행, 및 레지스터에 설정된 데이터 추출 정책에 근거하여, 상기 자바스크립트의 원문을 추출하는 단계;
를 포함하며,
상기 자바스크립트는 난독화된 자바스크립트이고,
상기 브레이크 포인트는
상기 라이브러리 내의 상기 자바스크립트를 실행하기 위해 참조되는 함수의 주소에 설정되며,
상기 자바스크립트를 실행하기 위해 참조되는 함수는
ScrFncObj::CALL 함수를 포함하는, 탐지방법.
In the method for the server to detect JavaScript,
Executing a process of an application program associated with a non-executable file;
Detecting JavaScript included in the non-executable file based on the process of the application program;
Executing the JavaScript and debugging a host process for executing the JavaScript;
Based on the host process, determining whether a library for executing the JavaScript is loaded;
setting a break point at an address of a function referenced to execute the JavaScript based on the loading of the library in the host process; and
extracting the original text of the JavaScript based on the execution of the breakpoint and the data extraction policy set in the register;
Including,
The JavaScript is obfuscated JavaScript,
The break point is
It is set to the address of a function referenced to execute the JavaScript in the library,
The function referenced to execute the JavaScript is
A detection method, including the ScrFncObj::CALL function.
삭제delete 제1항에 있어서,
상기 호스트 프로세스는
Wscript.exe를 포함하는, 탐지방법.
According to claim 1,
The host process
Detection method, including Wscript.exe.
삭제delete 제1항에 있어서,
상기 라이브러리는
Jscript.dll을 포함하는, 탐지방법.
According to claim 1,
The library
A detection method, including Jscript.dll.
삭제delete 삭제delete 제1항에 있어서,
상기 자바스크립트의 원문에 대해 정적 검사를 수행하는 단계;
를 더 포함하는, 탐지방법.
According to claim 1,
performing a static check on the original text of the JavaScript;
Further comprising a, detection method.
자바스크립트를 탐지하기 위한 서버에 있어서,
통신부;
메모리; 및
상기 통신부 및 상기 메모리를 기능적으로 제어하는 프로세서;를 포함하고,
상기 프로세서는
비실행 파일과 관련된 응용프로그램의 프로세스를 실행하고, 상기 응용프로그램의 프로세스에 근거하여, 상기 비실행 파일에 포함된 자바스크립트를 탐지하며, 상기 자바스크립트를 실행하고, 상기 자바스크립트를 실행하기 위한 호스트(host) 프로세스를 디버깅하고, 상기 호스트 프로세스에 근거하여, 상기 자바스크립트를 실행하기 위한 라이브러리(library)가 로드(load)되는 지를 판단하며, 상기 호스트 프로세스에 상기 라이브러리가 로드되는 것에 근거하여, 상기 자바스크립트를 실행하기 위해 참조되는 함수의 주소에 브레이크 포인트(break point)를 설정하고, 상기 브레이크 포인트의 지점의 실행, 및 레지스터에 설정된 데이터 추출 정책에 근거하여, 상기 자바스크립트의 원문을 추출하며,
상기 자바스크립트는 난독화된 자바스크립트이고,
상기 브레이크 포인트는
상기 라이브러리 내의 상기 자바스크립트를 실행하기 위해 참조되는 함수의 주소에 설정되며,
상기 자바스크립트를 실행하기 위해 참조되는 함수는
ScrFncObj::CALL 함수를 포함하는, 서버.

In a server for detecting JavaScript,
communications department;
Memory; and
A processor functionally controlling the communication unit and the memory;
The processor
A host for executing a process of an application program related to a non-executable file, detecting JavaScript included in the non-executable file based on the process of the application program, executing the JavaScript, and executing the JavaScript Debugging a (host) process, determining whether or not a library for executing the JavaScript is loaded based on the host process, and based on the loading of the library in the host process, Set a breakpoint at the address of a function referenced to execute JavaScript, extract the original text of the JavaScript based on the execution of the breakpoint and the data extraction policy set in the register,
The JavaScript is obfuscated JavaScript,
The break point is
It is set to the address of a function referenced to execute the JavaScript in the library,
The function referenced to execute the JavaScript is
A server, containing the ScrFncObj::CALL function.

KR1020227033623A 2022-09-27 2022-09-27 Methods and apparatus for for detecting and decoding obfuscated javascript KR102494837B1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/KR2022/014433 WO2024071461A1 (en) 2022-09-27 2022-09-27 Method for detecting and decoding obfuscated javascript and device therefor

Publications (1)

Publication Number Publication Date
KR102494837B1 true KR102494837B1 (en) 2023-02-06

Family

ID=85225379

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227033623A KR102494837B1 (en) 2022-09-27 2022-09-27 Methods and apparatus for for detecting and decoding obfuscated javascript

Country Status (2)

Country Link
KR (1) KR102494837B1 (en)
WO (1) WO2024071461A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101646096B1 (en) * 2016-01-21 2016-08-05 시큐레터 주식회사 Apparatus and method for detecting maliciousness of non-pe file through memory analysis

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789178B2 (en) * 2009-08-03 2014-07-22 Barracuda Networks, Inc. Method for detecting malicious javascript
KR101181843B1 (en) * 2010-12-21 2012-09-11 한국인터넷진흥원 JavaScript obfuscation by hooking automatically decrypted and how to detect malicious Web sites
KR101731022B1 (en) * 2014-12-31 2017-04-27 주식회사 시큐아이 Method and apparatus for detecting exploit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101646096B1 (en) * 2016-01-21 2016-08-05 시큐레터 주식회사 Apparatus and method for detecting maliciousness of non-pe file through memory analysis

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Ahmet Balci et al., "Malware Reverse Engineering Handbook"(2020.07.)* *

Also Published As

Publication number Publication date
WO2024071461A1 (en) 2024-04-04

Similar Documents

Publication Publication Date Title
Carmony et al. Extract Me If You Can: Abusing PDF Parsers in Malware Detectors.
US20180165449A1 (en) Detecting malicious files
JP5265061B1 (en) Malicious file inspection apparatus and method
US20220035919A1 (en) Just in time memory analysis for malware detection
JP2003196112A (en) Virus check method for virus check software
US10645099B1 (en) Malware detection facilitated by copying a memory range from an emulator for analysis and signature generation
KR102460078B1 (en) Method of making efficient backup space for original file using difference (delta) extraction method in disarming operation and apparatus therefor
US10902122B2 (en) Just in time memory analysis for malware detection
US9202053B1 (en) MBR infection detection using emulation
US10691791B2 (en) Automatic unpacking of executables
JP5441043B2 (en) Program, information processing apparatus, and information processing method
KR102472523B1 (en) Method and apparatus for determining document action based on reversing engine
Zhou et al. NCScope: hardware-assisted analyzer for native code in Android apps
Jang et al. Function-oriented mobile malware analysis as first aid
Delosières et al. Infrastructure for detecting Android malware
KR102470010B1 (en) Method and apparatus for blocking malicious non-portable executable file using reversing engine and cdr engine
KR102468431B1 (en) Method and apparatus for disarming ole object in ms-ooxml
KR102494837B1 (en) Methods and apparatus for for detecting and decoding obfuscated javascript
KR102549124B1 (en) Methods and apparatus for for detecting and decoding obfuscated vbscript
US11934534B2 (en) Vulnerability analysis of a computer driver
KR102494827B1 (en) Methods and apparatus for detecting malicious macros in non-executable files using ocr
KR102549007B1 (en) Methods and apparatus for detecting macro using debugging engine
KR102548984B1 (en) Methods and apparatus for detecting malicious document files using artificial intelligence models
KR102548985B1 (en) Methods and apparatus for machine learning modeling for detecting malicious document files
KR102581932B1 (en) Methods and devices for detecting seh overwrite mitigation bypass using a reverting engine

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant