KR101895836B1 - Method for Treating and Deleting Malware Having Self-Protection Function - Google Patents

Method for Treating and Deleting Malware Having Self-Protection Function Download PDF

Info

Publication number
KR101895836B1
KR101895836B1 KR1020160159272A KR20160159272A KR101895836B1 KR 101895836 B1 KR101895836 B1 KR 101895836B1 KR 1020160159272 A KR1020160159272 A KR 1020160159272A KR 20160159272 A KR20160159272 A KR 20160159272A KR 101895836 B1 KR101895836 B1 KR 101895836B1
Authority
KR
South Korea
Prior art keywords
code
function
client program
program module
shared memory
Prior art date
Application number
KR1020160159272A
Other languages
Korean (ko)
Other versions
KR20180060140A (en
Inventor
김기홍
Original Assignee
(주) 세인트 시큐리티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주) 세인트 시큐리티 filed Critical (주) 세인트 시큐리티
Priority to KR1020160159272A priority Critical patent/KR101895836B1/en
Publication of KR20180060140A publication Critical patent/KR20180060140A/en
Application granted granted Critical
Publication of KR101895836B1 publication Critical patent/KR101895836B1/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
    • G06F21/568Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은, 컴퓨터에서 실행 가능한 프로그램이 실행될 때에 커널 드라이버 모듈이 프로세스 이미지를 로딩하고 공유 메모리를 할당하는 제1 단계와; 클라이언트 프로그램 모듈이 모든 프로세스에 종료 코드를 프로세스 실행 전에 로딩하는 제2 단계와; 클라이언트 프로그램 모듈이 종료 코드의 함수 주소를 공유 메모리로서 기록하는 제3 단계와; 악성 코드가 감지되면 클라이언트 프로그램 모듈이 종료 코드의 함수를 호출하는 쓰레드를 생성하는 제4 단계와; 상기 함수가 호출되어 상기 프로그램을 종료시키는 제5 단계를 포함한다.The present invention includes a first step of a kernel driver module loading a process image and allocating a shared memory when a program executable by the computer is executed; A second step of the client program module loading all processes with an exit code before execution of the process; A third step of the client program module writing the function address of the termination code as a shared memory; A fourth step of, when a malicious code is detected, generating a thread for the client program module to call a function of the termination code; And terminating the program by calling the function.

Description

자기 보호 기능이 있는 악성 코드의 치료 및 삭제 방법{Method for Treating and Deleting Malware Having Self-Protection Function}[0001] The present invention relates to a method of treating and deleting a malicious code having a self-

본 발명은 악성 코드의 치료 및 삭제 방법에 대한 것으로서 좀 더 자세하게는 자기 보호 기능이 탑재된 악성 코드에 감염된 파일도 치료 및 삭제할 수 있는 방법에 대한 것이다.The present invention relates to a method for treating and deleting malicious codes, and more particularly, to a method for treating and deleting a file infected with malicious code equipped with a self-protection function.

종래의 컴퓨터 바이러스 백신 프로그램이나 악성 코드 치료 프로그램은 실행 중인 프로그램을 종료하고 감염된 파일을 삭제하는 등의 방식으로 악성 코드 감염 치료를 했다.Conventional computer antivirus programs or malicious code remediation programs have infected malicious code by terminating programs and deleting infected files.

그런데 자기 보호 기능이 탑재된 악성 코드는 해당 프로세스를 종료하려고 해도 종료되지 않기 때문에 치료 및 삭제가 불가능하다는 문제가 있다.However, there is a problem that the malicious code equipped with the self-protection function can not be cured or deleted because the process is not terminated even if the process is terminated.

본 발명은 위와 같이 자기 보호 기능이 탑재된 악성 코드에 감염된 파일이 실행되더라도, 강제로 프로세스를 종료시키고 악성 코드를 치료 및 삭제할 수 있는 방법을 제공하는 것을 목적으로 한다.An object of the present invention is to provide a method for forcibly terminating a process and treating and deleting a malicious code even if a file infected with the malicious code having the self-protection function is executed as described above.

본 발명은, 컴퓨터에서 실행 가능한 프로그램이 실행될 때에 커널 드라이버 모듈이 프로세스 이미지를 로딩하고 공유 메모리를 할당하는 제1 단계와; 클라이언트 프로그램 모듈이 모든 프로세스에 종료 코드를 프로세스 실행 전에 로딩하는 제2 단계와; 클라이언트 프로그램 모듈이 종료 코드의 함수 주소를 공유 메모리로서 기록하는 제3 단계와; 악성 코드가 감지되면 클라이언트 프로그램 모듈이 종료 코드의 함수를 호출하는 쓰레드를 생성하는 제4 단계와; 상기 함수가 호출되어 상기 프로그램을 종료시키는 제5 단계를 포함한다.
제2 단계는, 컴퓨터 시스템 전역에 상기 종료 코드를 로딩하도록 한 API 후킹에 의해서 실행되는 단계일 수 있다.
The present invention includes a first step of a kernel driver module loading a process image and allocating a shared memory when a program executable by the computer is executed; A second step of the client program module loading all processes with an exit code before execution of the process; A third step of the client program module writing the function address of the termination code as a shared memory; A fourth step of, when a malicious code is detected, generating a thread for the client program module to call a function of the termination code; And terminating the program by calling the function.
The second step may be a step executed by API hooking to load the exit code throughout the computer system.

삭제delete

제4 단계에서 쓰레드는 CreatRemoteThread 함수에 의해서 생성될 수 있다.In step 4, the thread can be created by the CreatRemoteThread function.

본 발명에 의하면, 자기 보호 기능을 가지는 악성 코드가 실행되어 있다 하더라도 해당 파일의 실행시의 모든 프로세스에 종료 코드가 로딩(삽입)되고, 종료 코드 함수의 호출 주소가 메모리에 공유 메모리로서 기록되기 때문에 종료 코드의 함수를 호출하는 쓰레드를 생성하여 프로그램을 종료시키고 악성 코드를 치료 및 삭제할 수 있는 효과가 있다.According to the present invention, even if a malicious code having a self-protection function is executed, an end code is loaded (inserted) into all processes at the time of execution of the file, and the call address of the end code function is recorded as a shared memory in the memory It is possible to terminate the program by creating a thread that calls a function of the termination code, and to treat and delete the malicious code.

도 1은 본 발명에 의한 악성 코드 치료 방법의 흐름도.
도 2는 본 발명에 의한 악성 코드 치료 방법을 설명하기 위한 블록도.
1 is a flow chart of a malicious code treatment method according to the present invention.
2 is a block diagram for explaining a malicious code treatment method according to the present invention.

이하에서는 첨부 도면을 참조하여 본 발명에 대해서 자세하게 설명한다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

본 명세서에서 수행되는 정보(데이터) 전송 과정은 필요에 따라서 암호화/복호화가 적용될 수 있으며, 본 명세서 및 특허청구범위에서 정보(데이터) 전송 과정을 설명하는 표현은 별도로 언급되지 않더라도 모두 암호화/복호화하는 경우도 포함하는 것으로 해석되어야 한다. 본 명세서에서 "A로부터 B로 전송(전달)" 또는 "A가 B로부터 수신"과 같은 형태의 표현은 중간에 다른 매개체가 포함되어 전송(전달) 또는 수신되는 것도 포함하며, A로부터 B까지 직접 전송(전달) 또는 수신되는 것만을 표현하는 것은 아니다. 본 발명의 설명에 있어서 각 단계의 순서는 선행 단계가 논리적 및 시간적으로 반드시 후행 단계에 앞서서 수행되어야 하는 경우가 아니라면 각 단계의 순서는 비제한적으로 이해되어야 한다. 즉 위와 같은 예외적인 경우를 제외하고는 후행 단계로 설명된 과정이 선행 단계로 설명된 과정보다 앞서서 수행되더라도 발명의 본질에는 영향이 없으며 권리범위 역시 단계의 순서에 관계없이 정의되어야 한다. 그리고 본 명세서에서 “A 또는 B”은 A와 B 중 어느 하나를 선택적으로 가리키는 것 뿐만 아니라 A와 B 모두를 포함하는 것도 의미하는 것으로 정의된다. 또한, 본 명세서에서 "포함"이라는 용어는 포함하는 것으로 나열된 요소 이외에 추가로 다른 구성요소를 더 포함하는 것도 포괄하는 의미를 가진다.Encryption / decryption may be applied to the information (data) transmission process performed in the present specification, and the description describing the process of transmitting information (data) in the present specification and claims is not limited to encryption / decryption Should be construed as including. Expressions of the form "transfer from A to B" or "receive from A" in this specification include transmission (transfer) or reception of another medium in between, It does not just represent transmission (forwarding) or receiving. In the description of the present invention, the order of each step should be understood to be non-limiting, unless the preceding step must be performed logically and temporally before the next step. That is to say, except for the exceptional cases mentioned above, even if the process described in the following stage is performed before the process described in the preceding stage, it does not affect the essence of the invention and the scope of the right should be defined regardless of the order of the stages. &Quot; A " or " B " is defined herein to mean not only selectively pointing to either A or B, but also including both A and B. It is also to be understood that the term "comprising " is intended to encompass further including other elements in addition to the elements listed as being included.

본 명세서에서는 본 발명의 설명에 필요한 필수적인 구성요소만을 설명하며, 본 발명의 본질과 관계가 없는 구성요소는 언급하지 아니한다. 그리고 언급되는 구성요소만을 포함하는 배타적인 의미로 해석되어서는 아니되며 다른 구성요소도 포함할 수 있는 비배타적인 의미로 해석되어야 한다.Only essential components necessary for explanation of the present invention are described in this specification, and components not related to the essence of the present invention are not mentioned. And should not be construed in an exclusive sense that includes only the recited elements, but should be interpreted in a non-exclusive sense to include other elements as well.

본 발명에 의한 악성 코드 치료 방법에 의하면 먼저 프로그램 실행시 프로그램 종료 코드를 로딩한다(100). 도 2에는 이 과정이 자세하게 설명되어 있다. 먼저 프로그램 실행시 프로세스 실행이 시작되면(100-1), 커널 드라이버 모듈(10)에 의해서 프로세스 이미지가 로딩되고 메모리가 할당된다(100-2). 그러면 본 발명에 의한 악성 코드 치료 방법을 수행하는 클라이언트 프로그램 모듈(20)이 모든 프로세스에 프로그램 종료 코드를 프로그램 실행 전에 로딩시킨다(100-3). 그리고 커널 드라이버 모듈(10)을 거쳐서 프로세스 생성 이벤트가 수집되며(100-4), 프로세스의 실행이 성공적으로 완료된다(100-5). According to the malicious code treatment method of the present invention, the program termination code is first loaded (100) when the program is executed. This process is described in detail in FIG. First, when the execution of the program starts (100-1) at the time of executing the program, the process image is loaded by the kernel driver module 10 and the memory is allocated (100-2). Then, the client program module 20 performing the malicious code repair method according to the present invention loads the program termination code into all the processes before executing the program (100-3). The process generation event is collected (100-4) through the kernel driver module (10), and the execution of the process is completed successfully (100-5).

종료 코드를 모든 프로세스에 로딩하는 것은 시스템 전역으로 API 후킹을 걸어서 실행할 수 있다.Loading the exit code into all processes can be done by hooking APIs throughout the system.

단계(110)에서는 종료 코드의 함수 주소가 메모리에 공유 메모리로서 기록된다. 이 과정은 종료 코드의 로딩시 동시에 수행될 수 있다. 프로그램 실행 중에 악성 코드가 클라이언트 프로그램 모듈(20)에 의해서 감지되면(120), 종료 코드의 함수를 호출할 수 있는 쓰레드(thread)를 생성한다(130). 쓰레드의 생성은 예를 들어 CreatRemoteThread 함수에 의해서 생성될 수 있으며, 종료 코드의 함수 주소가 공유 메모리로서 기록되어 있기 때문에 쓰레드의 호출에 의해서 종료 코드의 함수가 호출되며, 전술한 바와 같이 프로세스에 종료 코드가 로딩(삽입)되어 있기 때문에 악성 코드가 자기 보호 기능을 가지고 있다고 하더라도 악성 코드 자신이 종료 코드에 의해서 자신의 프로세스를 종료시키기 때문에 종래 기술과 달리 프로그램을 종료시키고 악성 코드에 감염된 파일을 삭제하는 등의 치료 행위를 수행할 수 있다.In step 110, the function address of the termination code is written to the memory as a shared memory. This process can be performed at the same time when loading the termination code. If a malicious code is detected 120 by the client program module 20 during execution of the program, a thread is created 130 that can call a function of the termination code. Creation of a thread can be created by, for example, the CreatRemoteThread function. Since the function address of the end code is recorded as shared memory, the function of the end code is called by calling the thread, Even if the malicious code has the self-protection function, the malicious code itself terminates its process by the termination code. Therefore, unlike the conventional technology, the program is terminated and the infected file is deleted Can be performed.

본 발명에 의하면, 자기 보호 기능을 가지는 악성 코드에 감염된 파일이라고 하더라도 해당 파일의 실행시의 모든 프로세스에 종료 코드가 로딩(삽입)되고, 종료 코드 함수의 주소가 메모리에 공유 메모리로서 기록되기 때문에 종료 코드의 함수를 호출하는 쓰레드를 생성하여 프로그램을 종료시키고 악성 코드를 치료할 수 있는 효과가 있다.According to the present invention, even if a file is infected with a malicious code having a self-protection function, an end code is loaded (inserted) into all processes at the time of execution of the file, and the address of the end code function is recorded as a shared memory in the memory. It is effective to kill a malicious code by creating a thread that calls a function of the code.

이상 첨부 도면을 참고하여 본 발명에 대해서 설명하였지만 본 발명의 권리범위는 후술하는 특허청구범위에 의해 결정되며 전술한 실시예 및/또는 도면에 제한되는 것으로 해석되어서는 아니된다. 그리고 특허청구범위에 기재된 발명의, 당업자에게 자명한 개량, 변경 및 수정도 본 발명의 권리범위에 포함된다는 점이 명백하게 이해되어야 한다.While the present invention has been described with reference to the accompanying drawings, it is to be understood that the scope of the present invention is defined by the claims that follow, and should not be construed as limited to the above-described embodiments and / or drawings. It is to be expressly understood that improvements, changes and modifications that are obvious to those skilled in the art are also within the scope of the present invention as set forth in the claims.

10: 커널 드라이버 모듈
20: 클라이언트 프로그램 모듈
10: kernel driver module
20: Client program module

Claims (3)

컴퓨터에서 실행 가능한 프로그램이 실행될 때에 커널 드라이버 모듈이 프로세스 이미지를 로딩하고 공유 메모리를 할당하는 제1 단계와,
클라이언트 프로그램 모듈이 모든 프로세스에 종료 코드를 프로세스 실행 전에 로딩하는 제2 단계와,
클라이언트 프로그램 모듈이 종료 코드의 함수 주소를 공유 메모리로서 기록하는 제3 단계와,
악성 코드가 감지되면 클라이언트 프로그램 모듈이 종료 코드의 함수를 호출하는 쓰레드를 생성하는 제4 단계와,
상기 함수가 호출되어 상기 프로그램을 종료시키는 제5 단계를 포함하는,
악성 코드 치료 방법.
A first step in which a kernel driver module loads a process image and allocates a shared memory when an executable program is executed in the computer,
A second step in which the client program module loads all the processes with an end code before execution of the process,
A third step of the client program module writing the function address of the termination code as a shared memory,
A fourth step of, when a malicious code is detected, generating a thread in which the client program module calls a function of the termination code;
And a fifth step of calling the function to terminate the program.
How to cure malware.
청구항 1에 있어서,
제2 단계는, 컴퓨터 시스템 전역에 상기 종료 코드를 로딩하도록 한 API 후킹에 의해서 실행되는 단계인,
악성 코드 치료 방법.
The method according to claim 1,
The second step is a step executed by API hooking to load the exit code throughout the computer system,
How to cure malware.
청구항 1 또는 청구항 2에 있어서,
제4 단계에서 쓰레드는 CreatRemoteThread 함수에 의해서 생성되는,
악성 코드 치료 방법.
The method according to claim 1 or 2,
In step 4, the thread is created by the CreatRemoteThread function,
How to cure malware.
KR1020160159272A 2016-11-28 2016-11-28 Method for Treating and Deleting Malware Having Self-Protection Function KR101895836B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160159272A KR101895836B1 (en) 2016-11-28 2016-11-28 Method for Treating and Deleting Malware Having Self-Protection Function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160159272A KR101895836B1 (en) 2016-11-28 2016-11-28 Method for Treating and Deleting Malware Having Self-Protection Function

Publications (2)

Publication Number Publication Date
KR20180060140A KR20180060140A (en) 2018-06-07
KR101895836B1 true KR101895836B1 (en) 2018-09-06

Family

ID=62621503

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160159272A KR101895836B1 (en) 2016-11-28 2016-11-28 Method for Treating and Deleting Malware Having Self-Protection Function

Country Status (1)

Country Link
KR (1) KR101895836B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006155090A (en) * 2004-11-26 2006-06-15 Matsushita Electric Ind Co Ltd Application executing device

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100875997B1 (en) * 2006-11-13 2008-12-24 한국전자통신연구원 Network Fuzzing Using Windows Sockets Application Program Hooking
KR101217677B1 (en) * 2011-05-12 2013-01-02 주식회사 안랩 Malicious program blocking apparatus and method
KR20150089365A (en) * 2014-01-27 2015-08-05 동국대학교 산학협력단 System and method for managing and controlling application program in client apparatus

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006155090A (en) * 2004-11-26 2006-06-15 Matsushita Electric Ind Co Ltd Application executing device

Also Published As

Publication number Publication date
KR20180060140A (en) 2018-06-07

Similar Documents

Publication Publication Date Title
EP3528149B1 (en) Software repackaging prevention method and device
US9081960B2 (en) Architecture for removable media USB-ARM
US10372444B2 (en) Android dynamic loading file extraction method, recording medium and system for performing the method
US20070226773A1 (en) System and method for using sandboxes in a managed shell
US20070089088A1 (en) Dynamically determining a buffer-stack overrun
EP3502944B1 (en) Detecting script-based malware cross reference to related applications
CN110325994B (en) Apparatus and method for enhancing control flow integrity of software applications
US10528729B2 (en) Methods and systems for defending against cyber-attacks
US11262993B2 (en) Application binary rewriting to reduce binary attack surface area
AU2014254253A1 (en) Executable component injection utilizing hotpatch mechanisms
US11397812B2 (en) System and method for categorization of .NET applications
CN103559439A (en) Detection method and system for buffer overflow
US9990493B2 (en) Data processing system security device and security method
US20170126716A1 (en) Malware detection
CN107479874B (en) DLL injection method and system based on Windows platform
EP3128458B1 (en) User-mode component injection and atomic hooking
CN104915594A (en) Application running method and device
KR101895836B1 (en) Method for Treating and Deleting Malware Having Self-Protection Function
KR101367992B1 (en) Method of blocking heap spray hacking using nop sled, and computer-readable recording medium with anti-heap spray program for the same
CN107798244B (en) Method and device for detecting remote code execution vulnerability
US20140283060A1 (en) Mitigating vulnerabilities associated with return-oriented programming
US20180165226A1 (en) Memory privilege
US11500982B2 (en) Systems and methods for reliably injecting control flow integrity into binaries by tokenizing return addresses
US8788785B1 (en) Systems and methods for preventing heap-spray attacks
KR102322408B1 (en) IoT Device Where Server Resource Detects and Removes Malware

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)