Nothing Special   »   [go: up one dir, main page]

KR101563657B1 - Method for sending data escape windows practical sandboxing - Google Patents

Method for sending data escape windows practical sandboxing Download PDF

Info

Publication number
KR101563657B1
KR101563657B1 KR1020150068345A KR20150068345A KR101563657B1 KR 101563657 B1 KR101563657 B1 KR 101563657B1 KR 1020150068345 A KR1020150068345 A KR 1020150068345A KR 20150068345 A KR20150068345 A KR 20150068345A KR 101563657 B1 KR101563657 B1 KR 101563657B1
Authority
KR
South Korea
Prior art keywords
data
outside
context
target process
kernel
Prior art date
Application number
KR1020150068345A
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 주식회사 블랙포트시큐리티
Priority to KR1020150068345A priority Critical patent/KR101563657B1/en
Application granted granted Critical
Publication of KR101563657B1 publication Critical patent/KR101563657B1/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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

The present invention relates to a method for transmitting data to the outside of a sandboxed window application program which enables a sub party module injected into an operating process in a sandbox to transmit data to the outside of the sandbox. The method for transmitting data to the outside of a sandboxed window application program according to the present invention comprises the following steps of: searching a state in an operating module injected into a target process in target process context; attempting to transmit data through a loopback socket opened to the outside; setting a location of data in a memory area sharable with a kernel; ending control if a process is generated and bringing the location of the data to a memory shared in the kernel if a target process ends; converting context from the target process context to system process context; and transmitting data to the outside of the sandboxed window application program in the converted system process context.

Description

샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법{Method for sending data escape windows practical sandboxing}{Method for sending data escape windows practical sandboxing}

본 발명은 윈도우 응용 프로그램 외부로의 데이터 전송에 관한 것으로, 더욱 상세하게는 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법에 관한 것이다.
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to data transmission outside a Windows application program, and more particularly to a method of data transmission outside a sandboxed window application.

일반적으로 보안 프로그램들은 Windows OS 상에서 특정 프로세스의 행위를 모니터링 하거나 차단하기 위해서 보호 모듈을 모니터링 대상 프로세스에 인젝션(Injection)(외부 프로세스에서 특정 프로세스에 원하는 dll을 주입하는 행위) 하여 원하는 동작을 수행한다. 비록 커널에서도 특정 프로세스의 행위를 모니터링 할 수 있고 차단할 수 있지만, 파일 시스템 관련 동작, 네트워크 관련 동작, 레지스트리 관련 동작 등등 큰 부분들에 대해서만 할 수 있고 세세한 모니터링 및 차단을 위해서는 대상 프로세스에 직접 보호 모듈을 인젝션(Injection) 하여 동작을 수행하는 것이 일반적이다. In general, security programs perform a desired operation by injecting a protection module into a monitoring target process (injecting a desired dll into a specific process in an external process) in order to monitor or block the behavior of a specific process on the Windows OS. Although the kernel can monitor and block the behavior of a specific process, it can only do a large part of file-system-related, network-related, registry-related, etc. operations. Injection is generally performed to perform the operation.

이 때 대상 프로세스에 인젝션(Injection) 되어 동작 중인 보호 모듈의 경우 모니터링 도중 관련 정보를 디스크에 파일로 남긴다던지, 같이 실행되고 있는 서비스 프로세스에게 정보를 전송시킨다던지 하는 행위가 분명히 필요할 것이다. 이 때 보호 모듈은 디스크에 정보를 남기기 위해서는 fopen이나 CreateFile과 같은 파일 생성 함수를 사용하여 디스크에 파일을 생성하는 행위를 하게 될 것이다. In this case, if the protection module is injected into the target process and is in operation, it is definitely necessary to leave related information on the disk as a file during monitoring, or to transmit information to a service process being executed simultaneously. At this point, the protection module will create a file on disk using a file creation function such as fopen or CreateFile to leave information on the disk.

또는 다른 프로세스로 바로 정보를 전송하기 위해서는 파이프, 소켓, 메시지, 공유메모리 등등 여러 가지 방법을 사용할 수 있다. You can use pipes, sockets, messages, shared memory, etc. to transfer information directly to other processes.

일반적인 프로세스 같은 경우 이와 같은 행위들을 하는데 있어서 권한 문제 측면에서 아무런 제약이 없기 때문에 해당 프로세스에 인젝션(Injection) 되어 동작 중인 보호 모듈 또한 위와 같은 방법들을 사용해 정보를 남기는데 있어서 별 어려움이 없다. Since there is no restriction on the authority problem in the case of the general process, there is no difficulty in leaving the information using the above methods by the injection of the protection module which is injected into the process.

하지만 모든 프로세스가 일반적인 권한을 가지고 동작하는 것은 아니다. 특히 Internet Explorer, Chrome, Adobe Reader 등과 같이 취약점 공격의 주 대상이 되는 프로세스들은 일명 샌드박스(Sandbox)라는 기술에 갇혀서 동작을 하게 된다. However, not all processes operate with normal permissions. In particular, processes that are the subject of exploitation attacks, such as Internet Explorer, Chrome, and Adobe Reader, are trapped in a so-called Sandbox technology.

왜냐하면 한 가지 예를 들어 취약점 공격이 이루어지게 되면 해당 공격은 보통 외부 서버로부터 실질적인 악성 행위를 수행할 악성코드를 다운로드 받는 행위가 이루어지게 된다. For example, when a vulnerability attack occurs, the attack usually downloads malicious code from the external server to perform a malicious action.

하지만 샌드박스(Sandbox) 내부에 있는 프로세스들은 디스크에 파일 쓰기 행위를 한다 던지, 다른 프로세스에 접근을 한다 던지 등등 이러한 행위들이 전부 샌드박스(Sandbox)에 의해 거부를 당하게 된다. 즉, 취약점을 이용해 해당 프로세스에서 해커가 원하는 코드를 실행할 수 있는 상태가 오더라도 악성 코드가 원하는 동작을 하지 못하게 함으로써 최종적으로 해커의 공격은 실패로 돌아가게 만드는 것이다.However, processes inside the sandbox may be denied by the sandbox, such as writing files to the disk, accessing other processes, and so on. In other words, even if the vulnerability allows the hacker to execute the desired code in the process, the malicious code will not be able to perform the desired operation, which will eventually cause the hacker's attack to fail.

이러한 샌드박스(Sandbox) 기술은 취약점 공격을 막기 위해 만들어진 기술이지만 보안 프로그램을 만드는 개발자 입장에서는 이러한 샌드박스(Sandbox)가 보호 모듈에서 외부로 데이터를 전송할 때 심각한 걸림돌이 되는 기술이 되어버린다. This sandbox technology is designed to prevent vulnerability attacks, but for security program developers, it becomes a serious hurdle when these sandboxes transfer data from the protection module to the outside world.

예를 들어, Internet Explorer의 행위를 모니터링하고 악성 행위를 차단하기 위해 보호 모듈이 인젝션(Injection)되어 돌아가고 있다고 하자. 이 때, Internet Explorer에서 특정 행위를 하게 되고 이러한 행위를 보호 모듈은 캐치해 서비스 프로세스로 관련 정보를 전달하려고 한다. 하지만 Internet Explorer라는 프로세스는 샌드박스(Sandbox)에 의해 갇혀서 동작하는 프로세스이고 보호 모듈 또한 Internet Explorer에 인젝션(Injection)되어 동작하기 때문에 결국 우리의 보호 모듈 또한 관련 정보를 샌드박스(Sandbox) 외부로 전송하기 위한 행위는 실패하게 되는 것이다.For example, suppose a protection module is being injected to monitor the behavior of Internet Explorer and block malicious activity. At this time, Internet Explorer performs a specific action, and the protection module catches this action and attempts to transmit related information to the service process. However, since Internet Explorer is a process that is trapped by a sandbox and the protection module is also injected into Internet Explorer, our protection module also sends related information out of the sandbox The act of failure is to fail.

보호 모듈이 대상 프로세스에서 원하는 내용을 잡아내고 해당 정보를 대상 프로세스 외부로 빼내지 못한다면 하나의 제품으로서 심각한 기능상 오류로 밖에 보일 수 없다는 문제가 있었다.
If the protection module can not retrieve the desired contents in the target process and can not extract the information outside the target process, there is a problem that the product can only be seen as a serious functional error.

대한민국 공개특허 제10-2013-0132859-호 "보안 샌드박스"Korean Patent Publication No. 10-2013-0132859- "Security Sandbox"

본 발명은 상기와 같은 종래 기술의 문제점을 해결하기 위한 것으로, 본 발명은 샌드박스 내부에서 동작 중인 프로세스에 인젝션(Injection)된 서드파티 모듈이 샌드박스 외부로 데이터 전송을 할 수 있는 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법을 제공하는데 그 목적이 있다.
SUMMARY OF THE INVENTION The present invention has been made to solve the above problems of the conventional art, and it is an object of the present invention to provide a sandboxed window in which a third party module injected into a process in the sandbox can transfer data to the outside of the sandbox And to provide a method of transmitting data to the outside of an application program.

상기한 목적을 달성하기 위한 본 발명 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법은, 대상 프로세스 컨텍스트에서 대상 프로세스 인젝션(Injection)되어 동작 중인 모듈에서 상태를 탐지하는 단계; 상기 모듈의 상태 관련 정보를 외부로 전송하기 위해 외부에 열려있는 루프백 소켓(loopback socket)을 통해 데이터 전송을 시도하는 단계; 상기 루프백 소켓(loopback socket)을 통한 데이터 전송이 실패하면 데이터의 위치를 커널과 공유가능한 메모리 영역에 설정하는 단계; 악의적인 행위가 감지된 경우 상기 대상 프로세스의 종료를 시작하고, 프로세스 콜백루틴에서 상기 콜백루틴이 호출된 상태가 프로세스 생성되는 경우인지 종료되는 경우인지의 상태를 체크하여 상기 프로세스가 생성되는 경우라면 제어를 종료하고, 상기 대상 프로세스 종료되는 경우라면 외부로 데이터 전송을 하기 위한 작업을 커널에서 시작하기 위하여 상기 커널에서 공유하는 메모리에서 데이터 위치를 가져오는 단계; 데이터 전송하는 부분을 담당하는 코드를 실행할 시스템 스레드를 생성하여 컨텍스트를 상기 대상 프로세스 컨텍스트에서 시스템 프로세스 컨텍스트로 전화하는 단계; 및 상기 전환된 시스템 프로세스 컨텍스트에서 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터를 전송하는 단계;를 포함하여 이루어지는 것을 특징으로 한다.According to another aspect of the present invention, there is provided a method of transferring data to a sandboxed window application program, the method comprising the steps of: detecting a status of a target process in a target process; Attempting to transmit data through an externally open loopback socket to transmit status related information of the module to the outside; Setting a location of data in a memory area that can be shared with the kernel if data transmission through the loopback socket fails; If the malicious action is detected, the process is terminated and the process callback routine checks whether the callback routine is called or terminated. If the process is generated, If the target process is terminated, fetching a data location from a memory shared by the kernel to start an operation for transferring data to the kernel in the kernel; Generating a system thread to execute code responsible for a data transferring part and calling a context from the target process context to a system process context; And transmitting data to the outside of the sandboxed window application program in the switched system process context.

여기서, 루프백 소켓(loopback socket)과 연결이 성공한 경우 해당 루프백 소켓(loopback socket)으로 관련 데이터를 보냄으로써 대상 프로세스 외부로 데이터 전송을 완료하고, 프로세스를 종료하는 단계를 더 포함하는 것을 특징으로 한다.In this case, when the connection to the loopback socket is successful, the method further includes transmitting data to the loopback socket to complete data transmission to the outside of the target process and terminating the process.

그리고 대상 프로세스의 PEB(Process environment block) 주소를 얻는 단계는 루프백 소켓을 이용한 탈출의 실패나, 대상 프로세스 외부로의 데이터 전송이 실패(False)인 경우인 것을 특징으로 한다.The step of obtaining the process environment block (PEB) address of the target process is characterized in that the process fails to escape using the loopback socket or the data transfer to the outside of the target process fails (False).

한편 프로세스 종료가 시작되면 미리 커널에 등록해놓은 프로세스 콜백루틴으로 제어가 넘어오게 되는데, 상기 콜백루틴은 개발자가 직접 등록할 수 있고 이는 윈도우 환경에서 새로운 프로세스가 실행되거나 종료되는 경우 매번 호출되는 콜백함수인 것을 특징으로 한다.On the other hand, when the process termination is started, control is passed to the process callback routine registered in advance in the kernel. The callback routine can be registered by the developer directly. This is a callback function to be called each time a new process is executed or terminated in the window environment .

또한 프로세스 종료를 시작하기 전에 외부로 전송할 데이터를 가지고 있는 주소 정보를 가져오고, 외부로 전송할 데이터를 가지고 있는 주소 정보를 상기 PEB 구조체로부터 가져왔으면 해당 주소를 커널에서 전역적으로 접근할 수 있도록 전역 변수 영역에 담는 단계를 포함하여 이루어지는 것을 특징으로 한다.Also, if address information having data to be transferred to the outside is fetched from the PEB structure, and address information having data to be transferred is fetched from the PEB structure before the process termination is started, In a region of the substrate.

여기서 데이터 전송하는 부분을 담당하는 코드를 실행할 시스템 스레드를 생성하는 단계는, 샌드박스에 갇혀서 동작 중인 대상 프로세스의 컨텍스트로부터 벗어나 데이터 전송 코드를 실행하기 위한 것으로, 외부로 데이터를 전송하는 코드 자체를 샌드박스 외부에서 하기 위해 시스템 스레드를 만들어 컨텍스트를 전환시켜 코드를 실행하기 위한 것임을 특징으로 한다.Here, the step of generating a system thread to execute a code that carries a data transferring part is for executing a data transfer code, which is trapped in a sandbox and deviates from the context of a target process in operation, And to execute the code by creating a system thread to switch the context in order to be outside the box.

그리고 전환된 시스템 프로세스 컨텍스트에서 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터를 전송하는 단계는, 루프백 소켓(loopback socket), 파일 생성, 파이프 연결, 메시지 전달 중 하나 이상으로 이루어지는 것을 특징으로 한다.
And transferring data to the outside of the sandboxed window application in the switched system process context comprises at least one of a loopback socket, a file creation, a pipe connection, and a message delivery.

본 발명에 의하면 다음과 같은 효과가 있다.The present invention has the following effects.

첫째, 샌드박싱 된 프로세스에서 PEB 구조체에서 사용되지 않는 멤버변수에 외부로 전송할 데이터를 포함하는 주소정보를 설정하고, 아무 프로세스나 하나 생성하여 커널에 있는 프로세스 콜백루틴에서 프로세스 생성일 때를 잡아내어, 외부로 데이터 전송할 코드를 시스템 스레드를 만들어 실행시키면 샌드박스 내부에서 동작 중인 프로세스에 인젝션(Injection)된 서드파티 모듈이 샌드박스 외부로 데이터 전송을 할 수 있는 효과가 있다.First, in the sandboxed process, we set up address information that contains data to be sent out to member variables that are not used in the PEB structure, and create a process to capture when the process is created in the process callback routine in the kernel, If the system thread is created by executing the code to transfer data to the outside, the injected third party module can transfer the data to the outside of the sandbox to the process running in the sandbox.

둘째, 프로세스 종료시나 프로세스 동작 중간에도 외부로의 데이터 전송이 가능한 효과가 있다.Second, data can be transferred to the outside at the end of the process or in the middle of the process operation.

셋째, 제품로그를 남기거나 사용자에게 알림을 할 수 있으므로 사용자 친화적 프로세스를 제공할 수 있다.
Third, it can provide a user-friendly process by leaving a product log or notifying the user.

도 1은 본 발명에 따른 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법을 설명하기 위한 흐름도이다.FIG. 1 is a flowchart illustrating a method of transmitting data out of a sandboxed window application program according to the present invention.

본 발명의 바람직한 실시 예를 첨부된 도면에 의하여 상세히 설명하면 다음과 같다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.

아울러, 본 발명에서 사용되는 용어는 가능한 한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며 이 경우는 해당되는 발명의 설명부분에서 상세히 그 의미를 기재하였으므로, 단순한 용어의 명칭이 아닌 용어가 가지는 의미로서 본 발명을 파악하여야 함을 밝혀두고자 한다. 또한 실시예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고, 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
In addition, although the term used in the present invention is selected as a general term that is widely used at present, there are some terms selected arbitrarily by the applicant in a specific case. In this case, since the meaning is described in detail in the description of the relevant invention, It is to be understood that the present invention should be grasped as a meaning of a term that is not a name of the present invention. Further, in describing the embodiments, descriptions of technical contents which are well known in the technical field to which the present invention belongs and which are not directly related to the present invention will be omitted. This is for the sake of clarity of the present invention without omitting the unnecessary explanation.

먼저 이 발명을 할 때 가장 크게 고려한 부분은 두 가지이다.First, there are two major considerations in the invention.

첫째, 윈도우 환경에서 제공해주는 공식적인 방식만을 사용해 구현을 하는 것이다. 보통 샌드박스를 탈출하기 위해 버그헌팅을 하는 사람들은 샌드박스 자체 취약점을 찾아서 탈출을 하게 된다. 하지만 이는 윈도우에서 공식적으로 제공하는 기능이 아닐 뿐 더러 취약점을 이용한 공격이므로 윈도우에서는 해당 취약점을 수정해 샌드박스 탈출을 하지 못하도록 막을 것이다. 그러므로 일반적으로 개발자들이 제품을 개발할 때 사용가능 하도록 윈도우에서 제공하는 기능만을 사용해 구현을 한다.First, the implementation is done using only the official method provided by Windows environment. Usually, people who bug hunts to escape from the sandbox find themselves vulnerable to the sandbox and escape. However, this is not an officially provided function in Windows, but it is an attack using a vulnerability, so Windows will prevent the vulnerability from being able to escape the sandbox. Therefore, it is generally implemented using only the functions provided by Windows so that developers can use them when developing products.

둘째, 샌드박스 내부에서는 어떠한 데이터도 외부로 전송이 불가능하다고 가정한다. 현재는 윈도우에서 제공하는 특별한 기능을 사용해 샌드박스 외부로 데이터 전송이 가능한 경우도 있고, 윈도우가 미쳐 생각하지 못한 데이터 전송 함수로 인하여 전송이 가능한 경우도 있다. 예를 들어, 윈도우 7의 샌드박스 기능에서는 루프백 소켓을 사용해 샌드박스 외부로 데이터 전송이 가능했지만 윈도우 8에서 제공하는 샌드박스 기능에서는 루프백 소켓을 이용해도 외부로 데이터 전송이 불가능하게 되었다. 이처럼 영구적이지 않은 방식을 이용해 샌드박스 외부로 데이터 전송 기능을 사용하고 있는 경우 다음 버전 윈도우에서 해당 기능을 막아버리면 제품 설계 자체를 바꿔야 하는 심각한 문제에 빠지기 때문이다. 그러므로 애당초에 샌드박스 내부에서는 어떠한 데이터도 외부로 전송이 불가능하다는 가정을 하는 것이다.Second, it is assumed that no data can be transmitted to the outside in the sandbox. Currently, some special functions provided by Windows can be used to transfer data to outside the sandbox, and in some cases, transmission is possible due to a data transfer function that is not thought of by Windows. For example, in the sandbox function in Windows 7, data can be transferred outside the sandbox using a loopback socket, but in the sandbox function provided in Windows 8, data transfer to the outside is not possible even with a loopback socket. If you are using this non-persistent way to send data out of the sandbox, you might be in serious trouble to change the product design itself if you block that feature in the next version of Windows. Therefore, in the first place, it is assumed that no data can be transmitted outside in the sandbox.

이제 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송을 위한 방법을 첨부된 도 1을 참조하여 설명하기로 한다.Now, a method for transferring data out of a sandboxed window application will be described with reference to FIG.

본 발명에 따른 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법은 도 1에 나타낸 바와 같은데, 도 1에서 초록색으로 크게 네모 친 부분은 대상 프로세스 컨텍스트(Target process context)와 시스템 프로세스 컨텍스트(System process context)로 나눠놓은 것이다. 이때, 주황색은 유저 영역에서 실행되는 코드들이고 파란색은 커널 영역에서 실행되는 코드들이다. The method of transmitting data to the outside of the sandboxed window application program according to the present invention is as shown in FIG. 1. In FIG. 1, a green square represents a target process context and a system process context ). In this case, orange is the code executed in the user area and blue is the code executed in the kernel area.

우선 대상 프로세스 컨텍스트에서, Detect Status(S100)는 대상 프로세스에 인젝션(Injection)되어 동작 중인 모듈에서 특정한 상태를 감지한 상태이다.First, in the target process context, Detect Status (S100) is a state in which a certain state is detected in an active module due to injection into a target process.

그리고 Connect loopback socket(S110)은 관련 정보를 외부로 전송하기 위해 외부에 열려있는 루프백 소켓(loopback socket)에 연결을 시도해본다. 즉 루프백 소켓을 이용한 데이터 전송을 1차로 시도한다. 윈도우 7까지는 이 방식으로 샌드박스 탈출이 가능했다.And the Connect loopback socket (S110) tries to connect to an open loopback socket to send the related information to the outside. That is, the first attempt is made to transmit data using a loopback socket. Until Windows 7, it was possible to escape the sandbox this way.

그 다음 Send data to loopback socket(S120)은 외부에 열려 있는 루프백 소켓(loopback socket)과 연결이 성공한 경우 해당 루프백 소켓(loopback socket)으로 관련 데이터를 보냄으로써 대상 프로세스 외부로 데이터 전송을 완료하고, 프로세스를 종료한다(Terminate Process)(S130).If the connection to the external loopback socket is successful, the send data to loopback socket (S120) completes the data transmission to the outside of the target process by sending the relevant data to the loopback socket, (Terminate Process) (S130).

한편 루프백 소켓을 이용한 탈출이나 대상 프로세스 외부로의 데이터 전송이 실패(False)하면, 즉 “connect loopback socket”과 “Send data to loopback socket” 둘 중 하나라도 실패를 한 경우 대상 프로세스의 PEB(Process environment block) 주소를 얻는다(Get PEB(S140)).If either the loopback socket or the data transfer to the target process fails (False), ie if either the "connect loopback socket" or the "send data to loopback socket" fails, the PEB block address (Get PEB (S140)).

Set data pointer to unused member within PEB(S150)는 얻은 PEB 구조체의 사용되지 않는 멤버 변수에 외부로 전송할 데이터를 포함하고 있는 주소 정보를 설정하는 프로세스이다. 여기서 PEB 내부 멤버변수에 외부로 전송할 데이터를 포함하고 있는 주소 정보를 넣는 이유는 유저와 커널 간 주소 정보를 공유하고 있는 구조체 정보가 바로 PEB이기 때문이다. 이때, 데이터의 위치를 커널과 공유가능한 메모리 영역에 설정한다.The set data pointer to unused member within PEB (S150) is a process for setting address information including data to be transmitted to an unused member variable of the obtained PEB structure. The reason for putting the address information including the data to be transferred to the external member variable in the PEB is that the structure information sharing the address information between the user and the kernel is the PEB. At this time, the location of the data is set in a memory area that can be shared with the kernel.

Start Terminate Process(S160)는 악의적인 행위가 감지된 경우 더 이상 대상 프로세스가 실행할 필요가 없는 상황이므로 프로세스 종료를 시작한다.Start Terminate Process (S160) starts the process termination because it is no longer necessary to execute the target process when a malicious action is detected.

Call CreateProcessNotify Routine(S170)는 프로세스 종료가 시작되면 미리 커널에 등록해놓은 프로세스 콜백루틴으로 제어가 넘어오게 된다. 해당 콜백루틴은 개발자가 직접 등록할 수 있고 이는 윈도우 환경에서 새로운 프로세스가 실행되거나 종료되는 경우 매번 호출되는 콜백함수이다. The call CreateProcessNotify Routine (S170) is controlled by the process callback routine registered in advance in the kernel when the process termination is started. The callback routine can be registered directly by the developer, which is a callback function that is called each time a new process is executed or terminated in a Windows environment.

Check CreateProcess Status(S180)는 현재 콜백루틴이 호출된 상태가 프로세스 생성되는 경우인지 종료되는 경우인지의 상태를 체크한다. 프로세스가 생성되는 경우라면 아무런 처리도 하지 않고 제어를 끝내면 된다. 반면 프로세스 종료되는 경우라면 외부로 데이터 전송을 하기 위한 작업을 커널에서 시작해야한다.Check CreateProcess Status (S180) checks whether the current callback routine is called when the process is created or terminated. If the process is created, you can finish the process without any processing. On the other hand, if the process is terminated, you need to start working on the outside to transfer data to the kernel.

Get data pointer from unused member within PEB(S190)는 유저영역에서 프로세스 종료를 시작하기 전에 외부로 전송할 데이터를 가지고 있는 주소 정보를 PEB 내부 멤버변수에 설정을 했었는데, 이 부분은 해당 주소 정보를 PEB 구조체 멤버변수, 즉 커널에서 공유가능한 메모리에서 데이터 위치를 가지고 오는 부분이다. PEB 구조체 주소 정보는 유저와 커널 간 같은 주소를 가지고 있으므로 이와 같은 동작이 가능하다.The PEB (S190) sets the address information having the data to be transmitted to the external member in the PEB internal member variable before starting the process termination in the user area. This part sets the address information to the PEB structure member Variables, that is, parts of the kernel that take data locations from a shareable memory. This behavior is possible because the PEB structure address information has the same address between the user and the kernel.

Set data pointer to kernel global area(S200)는 외부로 전송할 데이터를 가지고 있는 주소 정보를 PEB 구조체로부터 가져왔으면 해당 주소를 커널에서 전역적으로 접근할 수 있도록 전역 변수 영역에 담아둔다. If the set data pointer to kernel global area (S200) is fetched from the PEB structure with address information having data to be transmitted to the outside, the address is stored in the global variable area so that the address can be accessed globally in the kernel.

Create system thread(S210)는 이제 해당 데이터를 외부로 전송(탈출)하기 위해 데이터 전송하는 부분을 담당하는 코드를 실행할 시스템 스레드를 생성한다. 이때, 대상 프로세스 컨텍스트에서는 프로그램 종료가 된다(S220). 여기서 데이터를 외부로 전송하기 위해 시스템 스레드를 생성하는 이유는 샌드박스에 갇혀서 동작 중인 대상 프로세스의 컨텍스트로부터 벗어나 데이터 전송 코드를 실행하기 위함이다. 위에서 고려한 두 가지 사항 중 두 번째 가정을 보면, 샌드박스 내부에서는 어떠한 데이터도 외부로 전송이 불가능하다고 가정했는데, 그렇기 때문에 외부로 데이터를 전송하는 코드는 샌드박스 내부에서 절대로 실행하면 안되기 때문에 외부로 데이터 전송하는 코드 자체를 샌드박스 외부에서 하기 위해 시스템 스레드를 만들어 컨텍스트를 전환시켜 코드를 실행하기 위함이다.The Create system thread (S210) now creates a system thread to execute the code responsible for the data transferring part in order to transfer (escape) the data to the outside. At this time, the program is terminated in the target process context (S220). The reason for creating a system thread to transfer data to the outside is to execute the data transfer code out of the context of the target process that is trapped in the sandbox and is in operation. Considering the second of the two above considerations, we assume that no data can be transferred out of the sandbox, so the code that transfers data to the outside must never be executed inside the sandbox, To send code out of the sandbox itself, we create a system thread to switch the context and execute the code.

Connect loopback socket(S230)는 현재는 샌드박스를 벗어난 시스템 프로세스 컨텍스트이기 때문에 루프백 소켓(loopback socket)에 연결을 시도할 경우 실패하지 않고 제대로 연결이 된다. 이와 같은 방식은 루프백 소켓을 이용한 2차 시도로써 이와 같은 방식을 이용하는 경우 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송이 윈도우 10까지 가능하다. 한편, 루프백 소켓(loopback socket) 연결뿐 만 아니라, 파일 생성, 파이프 연결, 메시지 전달 등등 샌드박스 내부에서 하지 못했던 데이터 전송 동작들이 전부 동작가능하므로 소켓만을 사용해 데이터 전송을 할 필요는 없으나 예를 들어 설명한 것이다. Connect loopback socket (S230) is a system process context that is currently out of the sandbox, so if you try to connect to a loopback socket it will not fail and connect properly. This approach is a second attempt using a loopback socket, which allows data transfer to the outside of sandboxed Windows applications up to Windows 10 when using this approach. On the other hand, there is no need to transfer data using only sockets, since not only the loopback socket connection but also the data transfer operations that were not performed in the sandbox such as file creation, pipe connection, message transfer, will be.

Send data to loopback socket(S240)는 루프백 소켓(loopback socket)에 연결이 성공한 경우 해당 소켓으로 외부로 보낼 데이터를 전송한다.
The send data to loopback socket (S240) transmits the data to be sent out to the socket when the loopback socket is successfully connected.

본 발명을 첨부된 도면과 함께 설명하였으나, 이는 본 발명의 요지를 포함하는 다양한 실시 형태 중의 하나의 실시예에 불과하며, 당업계에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 하는 데에 그 목적이 있는 것으로, 본 발명은 상기 설명된 실시예에만 국한되는 것이 아님은 명확하다. 따라서, 본 발명의 보호범위는 하기의 청구범위에 의해 해석되어야 하며, 본 발명의 요지를 벗어나지 않는 범위 내에서의 변경, 치환, 대체 등에 의해 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함될 것이다. 또한, 도면의 일부 구성은 구성을 보다 명확하게 설명하기 위한 것으로 실제보다 과장되거나 축소되어 제공된 것임을 명확히 한다.
While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it should be understood that various changes and modifications will be apparent to those skilled in the art. Obviously, the invention is not limited to the embodiments described above. Accordingly, the scope of protection of the present invention should be construed according to the following claims, and all technical ideas which fall within the scope of equivalence by alteration, substitution, substitution, Range. In addition, it should be clarified that some configurations of the drawings are intended to explain the configuration more clearly and are provided in an exaggerated or reduced size than the actual configuration.

Claims (7)

대상 프로세스 컨텍스트에서 대상 프로세스 인젝션(Injection)되어 동작 중인 모듈에서 상태를 탐지하는 단계;
상기 모듈의 상태 관련 정보를 외부로 전송하기 위해 외부에 열려있는 루프백 소켓(loopback socket)을 통해 데이터 전송을 시도하는 단계;
상기 루프백 소켓(loopback socket)을 통한 데이터 전송이 실패하면 데이터의 위치를 커널과 공유가능한 메모리 영역에 설정하는 단계;
악의적인 행위가 감지된 경우 상기 대상 프로세스의 종료를 시작하고, 프로세스 콜백루틴에서 상기 프로세스 콜백루틴이 호출된 상태가 프로세스 생성되는 경우인지 종료되는 경우인지의 상태를 체크하여 상기 프로세스가 생성되는 경우라면 제어를 종료하고, 상기 대상 프로세스 종료되는 경우라면 외부로 데이터 전송을 하기 위한 작업을 커널에서 시작하기 위하여 상기 커널에서 공유하는 메모리에서 데이터 위치를 가져오는 단계;
데이터 전송하는 부분을 담당하는 코드를 실행할 시스템 스레드를 생성하여 컨텍스트를 상기 대상 프로세스 컨텍스트에서 시스템 프로세스 컨텍스트로 전환하는 단계; 및
상기 전환된 시스템 프로세스 컨텍스트에서 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터를 전송하는 단계;를 포함하여 이루어지는 것을 특징으로 하는 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법.
Detecting a state in a module that is in operation and subject to a target process injection in a target process context;
Attempting to transmit data through an externally open loopback socket to transmit status related information of the module to the outside;
Setting a location of data in a memory area that can be shared with the kernel if data transmission through the loopback socket fails;
If a malicious action is detected, the process is started by terminating the target process and checking whether the process callback routine is called when the process callback routine is called or when the process callback routine is terminated. If the target process is terminated, fetching a data location from a memory shared by the kernel to start a task for data transfer to the outside in the kernel;
Generating a system thread to execute code that is responsible for the data transferring part, and converting the context from the target process context to the system process context; And
And transferring data to the outside of the sandboxed window application program in the switched system process context.
제1항에 있어서,
상기 루프백 소켓(loopback socket)과 연결이 성공한 경우 해당 루프백 소켓(loopback socket)으로 관련 데이터를 보냄으로써 대상 프로세스 외부로 데이터 전송을 완료하고, 프로세스를 종료하는 단계를 더 포함하는 것을 특징으로 하는 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법.
The method according to claim 1,
If the connection with the loopback socket is successful, sending the related data to the loopback socket to complete data transmission to the outside of the target process and terminating the process. A method of transferring data out of a Windows application.
제1항에 있어서,
상기 대상 프로세스의 PEB(Process environment block) 주소를 얻는 단계는 루프백 소켓을 이용한 탈출의 실패나, 대상 프로세스 외부로의 데이터 전송이 실패(False)인 경우인 것을 특징으로 하는 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법.
The method according to claim 1,
Wherein the step of obtaining the PEB (Process Environment Block) address of the target process is a failure of escape using a loopback socket or a failure of data transmission to the outside of the target process (False) / RTI >
제1항에 있어서,
상기 프로세스 종료가 시작되면 미리 커널에 등록해놓은 프로세스 콜백루틴으로 제어가 넘어오게 되는데, 상기 프로세스 콜백루틴은 개발자가 직접 등록할 수 있고 이는 윈도우 환경에서 새로운 프로세스가 실행되거나 종료되는 경우 매번 호출되는 콜백함수인 것을 특징으로 하는 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법.
The method according to claim 1,
When the process is terminated, control is transferred to a process callback routine registered in advance in the kernel. The process callback routine can be directly registered by the developer. In this case, when a new process is executed or terminated in a window environment, Wherein the method comprises the steps of:
제3항에 있어서,
상기 프로세스 종료를 시작하기 전에 외부로 전송할 데이터를 가지고 있는 주소 정보를 가져오고, 외부로 전송할 데이터를 가지고 있는 주소 정보를 상기 PEB주소로부터 가져왔으면 해당 주소를 커널에서 전역적으로 접근할 수 있도록 전역 변수 영역에 담는 단계를 포함하여 이루어지는 것을 특징으로 하는 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법.
The method of claim 3,
If address information having data to be transmitted to the outside is fetched from the PEB address, address information having data to be transmitted to the outside is fetched before starting the process termination. If the address information is fetched from the PEB address, Said method comprising the steps of: storing said data in a region of said window;
제1항에 있어서,
상기 데이터 전송하는 부분을 담당하는 코드를 실행할 시스템 스레드를 생성하는 단계는,
샌드박스에 갇혀서 동작 중인 대상 프로세스의 컨텍스트로부터 벗어나 데이터 전송 코드를 실행하기 위한 것으로, 외부로 데이터를 전송하는 코드 자체를 샌드박스 외부에서 하기 위해 시스템 스레드를 만들어 컨텍스트를 전환시켜 코드를 실행하기 위한 것임을 특징으로 하는 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법.
The method according to claim 1,
Wherein the step of generating a system thread to execute a code for carrying out the data transferring step comprises:
It is intended to run the data transfer code out of the context of the target process, which is trapped in the sandbox, to execute the code by creating a system thread to switch the context outside of the sandbox itself, A method of transmitting data out of a sandboxed window application program.
제1항에 있어서,
상기 전환된 시스템 프로세스 컨텍스트에서 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터를 전송하는 단계는,
루프백 소켓(loopback socket), 파일 생성, 파이프 연결, 메시지 전달 중 하나 이상으로 이루어지는 것을 특징으로 하는 샌드박싱 된 윈도우 응용프로그램 외부로의 데이터 전송방법.
The method according to claim 1,
Wherein transferring data to the outside of the sandboxed window application in the switched system process context comprises:
A loopback socket, a file creation, a pipe connection, and a message delivery. ≪ Desc / Clms Page number 13 >
KR1020150068345A 2015-05-15 2015-05-15 Method for sending data escape windows practical sandboxing KR101563657B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150068345A KR101563657B1 (en) 2015-05-15 2015-05-15 Method for sending data escape windows practical sandboxing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150068345A KR101563657B1 (en) 2015-05-15 2015-05-15 Method for sending data escape windows practical sandboxing

Publications (1)

Publication Number Publication Date
KR101563657B1 true KR101563657B1 (en) 2015-10-27

Family

ID=54428677

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150068345A KR101563657B1 (en) 2015-05-15 2015-05-15 Method for sending data escape windows practical sandboxing

Country Status (1)

Country Link
KR (1) KR101563657B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011081652A (en) 2009-10-08 2011-04-21 Nec Corp Process quarantine device, quarantine system, file processing method and program
KR101177971B1 (en) 2006-11-29 2012-08-29 콸콤 인코포레이티드 Methods, systems, and apparatus for object invocation across protection domain boundaries

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101177971B1 (en) 2006-11-29 2012-08-29 콸콤 인코포레이티드 Methods, systems, and apparatus for object invocation across protection domain boundaries
JP2011081652A (en) 2009-10-08 2011-04-21 Nec Corp Process quarantine device, quarantine system, file processing method and program

Similar Documents

Publication Publication Date Title
CN110651269B (en) Isolated container event monitoring
US10599841B2 (en) System and method for reverse command shell detection
EP3123311B1 (en) Malicious code protection for computer systems based on process modification
US10554685B1 (en) Self-healing architecture for resilient computing services
US8214900B1 (en) Method and apparatus for monitoring a computer to detect operating system process manipulation
US10867049B2 (en) Dynamic security module terminal device and method of operating same
US7822978B2 (en) Quiescing a manageability engine
JP2014521184A (en) Activate trust level
WO2016070623A1 (en) Sensitive information security protection method and device
US20130042297A1 (en) Method and apparatus for providing secure software execution environment based on domain separation
US20230074455A1 (en) System and method for monitoring delivery of messages passed between processes from different operating systems
CN103970574A (en) Office program running method and device and computer system
US20200244461A1 (en) Data Processing Method and Apparatus
CN105760164B (en) Method for realizing ACL authority in user space file system
US20100218261A1 (en) Isolating processes using aspects
KR101563657B1 (en) Method for sending data escape windows practical sandboxing
CN106022105B (en) A kind of command processing method and device
CN113836529A (en) Process detection method, device, storage medium and computer equipment
Nazar et al. Rooting Android–Extending the ADB by an auto-connecting WiFi-accessible service
KR20220097037A (en) Data leak prevention system
CN112948241B (en) Anti-debugging method and device for application program, electronic equipment and storage medium
EP4145318A1 (en) System and method for monitoring delivery of messages passed between processes from different operating systems
Kim et al. Self‐Controllable Mobile App Protection Scheme Based on Binary Code Splitting
EP3113066B1 (en) Computer security architecture and related computing method
Schöni et al. Automatically Retrofitting Cordova Applications for Stricter Content Security Policies

Legal Events

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

Payment date: 20180808

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200210

Year of fee payment: 6