KR101242127B1 - Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법 - Google Patents

Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법 Download PDF

Info

Publication number
KR101242127B1
KR101242127B1 KR1020110039901A KR20110039901A KR101242127B1 KR 101242127 B1 KR101242127 B1 KR 101242127B1 KR 1020110039901 A KR1020110039901 A KR 1020110039901A KR 20110039901 A KR20110039901 A KR 20110039901A KR 101242127 B1 KR101242127 B1 KR 101242127B1
Authority
KR
South Korea
Prior art keywords
target process
dll
injection
target
program
Prior art date
Application number
KR1020110039901A
Other languages
English (en)
Other versions
KR20120121973A (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 KR1020110039901A priority Critical patent/KR101242127B1/ko
Priority to JP2014508278A priority patent/JP2014518582A/ja
Priority to US14/113,249 priority patent/US8875165B2/en
Priority to PCT/KR2012/001775 priority patent/WO2012148080A2/ko
Priority to EP12777809.0A priority patent/EP2704004B1/en
Publication of KR20120121973A publication Critical patent/KR20120121973A/ko
Application granted granted Critical
Publication of KR101242127B1 publication Critical patent/KR101242127B1/ko

Links

Images

Classifications

    • 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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)

Abstract

DLL 인젝션 기능을 구비한 컴퓨팅 장치 및 DLL 인젝션 방법이 개시된다. 운영 체제로부터 사용자가 실행을 명령한 프로그램에 대응하는 대상 프로세스의 생성 여부가 통지되면, 인젝션 프로그램의 프로세스 생성모듈은 런처 프로세스를 실행하여 런처 프로세스의 자식 프로세스로서 상기 대상 프로세스를 중지 모드로 생성한다. 코드 삽입모듈은 대상 프로세스의 프로세스 핸들을 이용하여 대상 프로세스가 적재된 메모리 영역을 할당받아 대상 프로세스에 인젝션하고자 하는 DLL 파일을 실행하는 코드를 삽입한다. 복원모듈은 대상 프로세스의 중지 모드를 해제하여 대상 프로세스가 실행되도록 한다. 본 발명에 따르면, 중지 모드로 생성된 대상 프로세스의 메모리 영역에 DLL 실행 코드를 삽입함으로써, 다른 DLL 인젝션 기법과 충돌하지 않고 안정적으로 DLL 인젝션을 수행할 수 있다.

Description

DLL 인젝션 기능을 구비한 컴퓨팅 장치 및 DLL 인젝션 방법{Computing device having a function of DLL injection and method for DLL injection}
본 발명은 DLL 인젝션 기능을 구비한 컴퓨팅 장치 및 DLL 인젝션 방법에 관한 것으로, 보다 상세하게는, 런처가 실행되어 자식 프로세스로서 대상 프로세스가 실행될 때 DLL 인젝션을 수행하는 장치 및 방법에 관한 것이다.
DLL 인젝션(injection)이란 다른 프로세스(process)에 특정 DLL을 강제로 삽입시키는 것을 말한다. 즉, 다른 프로세스가 실행되는 과정에서 강제로 삽입한 DLL이 로드되어 처리되도록 하는 것이다. DLL 인젝션은 루트킷(rootkit)을 비롯하여 바이러스 및 악성코드 등 여러 분야에서 사용되며, 강제로 삽입된 DLL은 해당 프로세스의 메모리에 대한 접근 권한을 가지게 되므로 후킹(hooking) 및 기능 추가 등을 통해 프로세스를 쉽게 제어할 수 있다.
기존의 대표적인 DLL 인젝션 기술로는 SetWindowsHookEx() 함수를 사용하는 방법, CreateRemoteThread() 함수를 사용하는 방법 및 레지스트리(registry)의 값을 조작하는 방법 등이 있다. 이와 같은 기존의 DLL 인젝션 방법에서는 사용자가 프로세스를 시작하면 해당 프로세스가 메모리에 적재되며, 적재된 프로세스가 실행되면서 DLL 인젝션이 수행된다.
이상과 같은 기존의 DLL 인젝션 기법들은 동일한 프로세스에 대하여 동시에 적용됨에 따라 충돌이 발생하는 경우가 있으며, DLL 인젝션 시점이 동작 환경의 영향을 받아 달라지거나, 동일한 환경이라도 동작 순간마다 달라질 수 있으므로 실패할 가능성이 있다.
본 발명이 이루고자 하는 기술적 과제는, 기존의 DLL 인젝션 기법에 비해 안정성이 높으며, 다른 DLL 인젝션 기법과 충돌할 우려가 없는 DLL 인젝션 기능을 구비한 컴퓨팅 장치 및 DLL 인젝션 방법을 제공하는 데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는, 기존의 DLL 인젝션 기법에 비해 안정성이 높으며, 다른 DLL 인젝션 기법과 충돌할 우려가 없는 DLL 인젝션 기능을 구비한 컴퓨팅 장치 및 DLL 인젝션 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 DLL 인젝션 기능을 구비한 컴퓨팅 장치는, 대상 프로세스에 DLL 인젝션을 수행하기 위한 인젝션 프로그램 및 운영 체제를 실행하는 프로세서; 및 상기 운영 체제, 상기 인젝션 프로그램 및 상기 대상 프로세스가 저장되는 메모리;를 구비하며, 상기 인젝션 프로그램은, 런처 프로세스를 실행하여 상기 런처 프로세스의 자식 프로세스로서 상기 대상 프로세스를 중지(suspend) 모드로 생성하는 프로세스 생성모듈; 상기 대상 프로세스의 프로세스 핸들을 이용하여 상기 대상 프로세스가 적재된 메모리 영역을 할당받아 상기 대상 프로세스에 인젝션하고자 하는 DLL 파일을 실행하는 코드를 삽입하는 코드 삽입모듈; 및 상기 대상 프로세스의 중지 모드를 해제하여 상기 대상 프로세스가 실행되도록 하는 복원모듈;을 포함한다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 DLL 인젝션 방법은, (a) 운영 체제로부터 사용자가 실행을 명령한 프로그램에 대응하는 대상 프로세스의 생성 여부를 통지받는 단계; (b) 런처 프로세스를 실행하여 상기 런처 프로세스의 자식 프로세스로서 상기 대상 프로세스를 중지 모드로 생성하는 단계; (c) 상기 대상 프로세스의 프로세스 핸들을 이용하여 상기 대상 프로세스가 적재된 메모리 영역을 할당받아 상기 대상 프로세스에 인젝션하고자 하는 DLL 파일을 실행하는 코드를 삽입하는 단계; 및 (d) 상기 대상 프로세스의 중지 모드를 해제하여 상기 대상 프로세스가 실행되도록 하는 단계;를 갖는다.
본 발명에 따른 DLL 인젝션 기능을 구비한 컴퓨팅 장치 및 DLL 인젝션 방법에 의하면, 중지 모드로 생성된 대상 프로세스의 메모리 영역에 DLL 실행 코드를 삽입함으로써, 다른 DLL 인젝션 기법과 충돌하지 않고 안정적으로 DLL 인젝션을 수행할 수 있다. 또한 대상 프로세스를 시스템 권한으로 실행함으로써 DLL 인젝션을 수행하는 다른 프로세스가 대상 프로세스에 대해 실행되는 것을 방지할 수 있다.
도 1은 본 발명에 따른 DLL 인젝션 기능을 구비한 컴퓨팅 장치에 대한 바람직한 실시예의 구성을 도시한 블록도,
도 2는 인젝션 프로그램의 구성을 도시한 도면,
도 3은 코드 삽입모듈에 의해 수행되는 인젝션 코드의 삽입 과정을 도시한 흐름도,
도 4는 PE 구조의 구성을 도시한 도면,
도 5는 권한 변경모듈에 의해 대상 프로그램이 시스템 권한으로 실행되도록 하는 과정을 도시한 흐름도, 그리고,
도 6은 본 발명에 따른 DLL 인젝션 방법에 대한 바람직한 실시예의 수행과정을 도시한 흐름도이다.
이하에서 첨부된 도면들을 참조하여 본 발명에 따른 DLL 인젝션 기능을 구비한 컴퓨팅 장치 및 DLL 인젝션 방법의 바람직한 실시예에 대해 상세하게 설명한다.
도 1은 본 발명에 따른 DLL 인젝션 기능을 구비한 컴퓨팅 장치에 대한 바람직한 실시예의 구성을 도시한 블록도이다.
도 1을 참조하면, 본 발명에 따른 DLL 인젝션 기능을 구비한 컴퓨팅 장치는 프로세서(110) 및 메모리(120)를 구비한다.
프로세서(110)는 특히 메모리(120)에 저장된 소프트웨어를 실행하기 위한 하드웨어 디바이스이다. 또한 프로세서(110)는 임의의 주문 제작 또는 상용으로 입수할 수 있는 프로세서, 중앙 처리 장치(CPU), 컴퓨터와 연관된 몇몇의 프로세서 중 보조 프로세서, 반도체 기반 마이크로 프로세서, 매크로 프로세서 또는 일반적으로 소프트웨어 명령어를 실행하기 위한 임의의 디바이스일 수 있다.
도 1에 도시된 바와 같이 프로세서(110)는 운영 체제(112)를 실행하며, 운영 체제(112)는 메모리(120)에 저장될 수 있다. 또한 프로세서(110)는 메모리(120)에 저장되어 있는 프로그램 어플리케이션(122)으로부터 컴퓨터 프로그램 지시사항을 검색하고 실행하며, 인젝션 프로그램(114)을 실행한다. 이때 인젝션 프로그램(114)은 드라이버 형태로 구현되어 레지스트리 설정을 통해 운영 체제(112)의 부팅시 적절한 시점에 자동으로 실행될 수 있으며, 공통 프로그램 어플리케이션의 일 요소로서 구현될 수도 있다.
메모리(110)는 휘발성 메모리 요소, 예를 들면, RAM(DRAM, SRAM 및 SDRAM 등 및 비휘발성 메모리 요소, 예를 들면, ROM, 소거 가능 프로그램 가능한 읽기 전용 메모리(EPROM), 전기적 소거가능 읽기 전용 메모리(EEPROM), 프로그램 가능한 읽기 전용 메모리(PROM), 테이프, 컴팩트 디스크 읽기 전용 메모리(CD-ROM), 디스크, 디스켓, 카트리지, 카세트 등 중의 어느 하나 또는 이들의 결합을 포함할 수 있다. 나아가 메모리(120)는 전자적, 자기적, 광학적 및/또는 다른 타입의 저장 매체를 채택할 수 있다. 메모리(120)는 다양한 컴포넌트가 서로로부터 멀리 떨어져 위치한 분산 아키텍처를 가질 수 있으나, 프로세서(110)에 의해 액세스될 수 있다.
또한 도 1에 도시된 바와 같이 메모리(120)에는 문서, 멀티미디어 파일 및 데이터 파일 등 프로그램 데이터(124)가 저장되며, 나아가 메모리(120)의 일부 공간을 인젝션 프로그램(114)이 사용할 수 있다. 이와 같이 메모리(120)에 저장된 소프트웨어는 하나 이상의 개별 프로그램을 포함할 수 있고, 각각의 프로그램은 논리적 기능을 구현하기 위한 실행 가능 명령어의 정렬된 목록을 포함한다.
도 1의 인젝션 프로그램(114)은 대상 프로세스에 DLL 인젝션을 수행하기 위한 것으로, 도 2에는 인젝션 프로그램(114)의 구성이 도시되어 있다. 도 2를 참조하면, 인젝션 프로그램(114)은 프로세스 생성모듈(114-1), 코드 삽입모듈(114-2) 및 복원모듈(114-3)로 이루어져 대상 프로세스의 실행이 완료되기 이전에 DLL 인젝션을 수행한다.
기존의 DLL 인젝션 기법에서는 사용자로부터 프로세스 실행 명령이 입력되면 해당 프로세스가 메모리에 적재된 후 실행되면서 DLL 인젝션이 수행된다. 그러나 앞에서 설명한 바와 같이 이러한 기존의 DLL 인젝션 기법은 실패 또는 다른 DLL 인젝션 기법과의 충돌 가능성이 있다.
따라서 본 발명에서 제안하는 인젝션 프로그램(114)은 런처(launcher) 프로세스를 실행하여 대상 프로세스를 자식 프로세스로서 실행하되, 대상 프로세스가 적재된 메모리 영역에 DLL 파일의 경로를 나타내는 인젝션 코드를 삽입함으로써 대상 프로세스의 실행 이전에 DLL 인젝션이 이루어지도록 할 수 있다.
프로세스 생성모듈(114-1)은 런처 프로세스를 실행하여 런처 프로세스의 자식 프로세서로서 대상 프로세스를 중지(suspend) 모드로 생성한다. 이는 대상 프로세스가 실행을 위해 메모리에 적재된 상태에서 프로세스 실행이 완료되기 이전에 인젝션 코드를 삽입하기 위해서이다. 또한 대상 프로세스는 런처 프로세스의 자식 프로세스로서 생성되므로, 프로세스 생성모듈(114-1)은 '실행 프로세스 경로' 및 '실행 프로세스 파라미터'를 입력하여 자식 프로세스를 생성한다.
이와 같이 본 발명에서 제안하는 인젝션 프로그램(114)이 중지 모드로서 실행이 중지된 대상 프로세스의 메모리 영역에 인젝션 코드를 삽입한 후 중지 모드를 해제하여 대상 프로세스가 실행되도록 하면, DLL 인젝션의 시점을 조절할 수 있어 DLL 인젝션이 실패하는 것을 방지할 수 있다.
다음으로 코드 삽입모듈(114-2)은 대상 프로세스의 프로세스 핸들을 이용하여 대상 프로세스가 적재된 메모리 영역을 할당받아 인젝션하고자 하는 DLL 파일의 경로를 나타내는 인젝션 코드(Load DLL Code)를 삽입한다.
도 3은 코드 삽입모듈(114-2)에 의해 수행되는 인젝션 코드의 삽입 과정을 도시한 흐름도이다.
프로세스 실행모듈(114-1)에 의해 대상 프로세스가 자식 프로세스로 생성되었으므로, 코드 삽입모듈(114-2)은 대상 프로세스의 메모리 영역에 직접 접근할 수 있는 권한을 가진다. 따라서 코드 삽입모듈(114-2)은 대상 프로세서의 생성 과정에서 얻어진 프로세스 핸들을 이용하여 메모리(120)에서 대상 프로세스가 적재된 위치를 찾고, 해당 위치로부터 실행 코드를 읽어온다(S210).
코드 삽입모듈(114-2)이 읽어온 실행 코드는 마이크로소프트(Microsoft)에서 지원하는 실행 파일의 형식인 PE(Portable Excutable) 구조를 가진다. 도 4에는 PE 구조의 구성이 도시되어 있다. 코드 삽입부(120)는 실행 코드가 PE 구조인지 확인하기 위해서 도 4에 도시된 구성의 IMAGE_DOS_HEADER의 첫 두 바이트가 IMAGE_DOS_SIGNATURE(문자 MZ)인지 확인한다. 또한 IMAGE_NT_HEADER의 첫 네 바이트가 IMAGE_NT_SIGNATURE(문자 PE00)인지 확인한다. 그 결과 실행 코드가 PE 구조를 가지는 것으로 확인되면 PE 구조로부터 엔트리 포인트(EntryPoint)를 찾는다(S220).
다음으로 코드 삽입모듈(114-2)은 프로세스 핸들을 이용하여 프로세스 가상 메모리 영역의 일부를 할당받는다(S230). 할당받은 메모리 영역은 추후 삽입될 Load DLL Code가 저장되기 위한 공간이다. 또한 지역 변수에 LoadLibrary를 호출하고, 원래의 엔트리 포인트로 리턴하도록 하는 Load DLL Code를 작성하여 기록한다(S240).
실행 코드의 엔트리 포인트를 변경하여 대상 프로그램의 실행 과정에서 Load DLL Code가 실행되도록 하기 위해서는 엔트리 포인트의 접근 권한을 쓰기 가능(writable)한 상태로 변경하여야 한다(S250). 또한 코드 삽입모듈(114-2)은 Load DLL Code가 실행된 후 원래의 엔트리 포인트로 리턴할 수 있도록 앞에서 생성된 지역 변수의 일부인 BackupEntry에 변경 전 현재의 엔트리 포인트를 저장한다(S260).
다음으로 코드 삽입모듈(114-2)은 앞에서 할당받은 가상 메모리 영역에 지역 변수에 저장하였던 Load DLL Code를 삽입하고(S270), 쓰기 가능한 상태로 변경된 엔트리 포인트에 Load DLL Code의 위치로 이동하기 위한 점프 코드(Jump Code)를 삽입한다(S280).
이상에서 설명한 과정에 의해 DLL 인젝션을 위한 Load DLL Code의 삽입 과정이 완료된다. 마지막으로 코드 삽입모듈(114-2)은 엔트리 포인트에 대한 접근 권한을 원상태로 복구시킨다(S290). 이와 같이 대상 프로세스의 메모리 영역에 Load DLL Code가 삽입된 후, 복원모듈(114-3)은 대상 프로세스의 중지 모드를 해제하여 대상 프로세스가 정상적으로 실행되도록 한다. 이때 코드 삽입모듈(114-2)에 의해 대상 프로세스의 메모리 영역에 삽입된 Load DLL Code로 인하여 인젝션된 DLL이 대상 프로세스와 함께 실행된다.
한편, 인젝션 프로그램(114)이 대상 프로세스를 중지 모드로 실행하여 DLL 인젝션을 수행하는 것은 다른 DLL 인젝션 기법과의 충돌을 막아 안정적으로 DLL 인젝션이 이루어지도록 하기 위해서이다. 이를 위해서는 앞에서 설명한 바와 같이 DLL 인젝션의 시점을 달리할 뿐 아니라 대상 프로세스를 다른 DLL 인젝션 기법으로부터 방어할 필요성이 있다.
일반적인 DLL 인젝션 방식에서는 사용자 권한으로 대상 프로세스가 실행될 때 동일하게 사용자 권한으로 실행되고 있던 DLL 인젝션을 시도하는 프로세스가 대상 프로세스의 실행을 감지하고 DLL 인젝션을 시도하게 된다. 그에 따라 DLL 인젝션이 성공하고, 대상 프로세스가 실행될 때 인젝션된 DLL이 로드되어 함께 실행된다.
본 발명에서 제안하는 인젝션 프로그램(114)에는 권한 변경모듈(114-4)이 더 구비되어 사용자 권한으로 실행되는 프로세스에 의한 DLL 인젝션으로부터 대상 프로세스를 방어하기 위하여 대상 프로세스를 시스템 권한으로 실행한다. 이와 같이 함으로써 일반적인 DLL 인젝션 프로세스들은 권한이 높은 프로세스에 대한 DLL 인젝션을 실패하게 되며, 인젝션 프로그램(114)은 다른 DLL 인젝션 기법이 대상 프로세스에 적용되는 것을 막음과 동시에 안정적으로 DLL 인젝션을 수행할 수 있다.
도 5는 권한 변경모듈(114-4)에 의해 대상 프로그램이 시스템 권한으로 실행되도록 하는 과정을 도시한 흐름도이다.
도 5를 참조하면, 권한 변경모듈(114-4)은 먼저 모든 윈도우즈 운영체제에서 항상 시스템 권한으로 동작하고 있는 프로세스, 예를 들면 'winlogon.exe'의 프로세스 아이디(ID)를 얻어온다(S410). 프로세스 아이디를 얻어오는 방식으로는 마이크로소프트사에서 프로세스 정보를 얻을 수 있도록 제공하는 Tool Help 라이브러리의 스냅샷(snapshot) 방식을 사용한다.
다음으로 권한 변경모듈(114-4)은 얻어온 프로세스 아이디를 사용하여 'winlogon.exe'의 프로세스 핸들을 열고(S420), 이를 사용하여 'winlogon.exe'의 토큰(token)을 연다(S430). 하나의 토큰에는 로그온 세션(logon session)에 대한 보안 정보가 포함되어 있으며, 사용자가 운영체제에 로그온할 때 만들어진 하나의 토큰을 복사하여 유저가 실행하는 모든 프로세스가 실행된다.
윈도우즈 운영체제에서는 각각의 사용자를 독립적으로 관리하기 위하여 세션으로 권한을 관리하는데, 기본적으로 하나의 사용자가 로그온하면 하나의 세션을 할당받으며, 할당된 세션 내에서 작업을 수행한다. 로그온한 사용자에게 할당되는 세션과 비슷한 방식으로 최상위 권한인 시스템에 대하여도 세션이 할당되고, 운영체제 내부의 중요한 작업이 처리된다.
따라서 권한 변경모듈(114-4)이 시스템 권한으로 동작하는 'winlogon.exe'의 토큰을 얻어오는 것은 시스템에 할당된 세션에 대상 프로세스를 진입시키기 위한 권한 획득의 의미를 가지게 된다.
다음으로 권한 변경모듈(114-4)은 얻어온 토큰을 복사하여 새로운 토큰을 생성한다(S450). 복사된 토큰은 'winlogon.exe'의 시스템 권한을 내포하고 있다. 한편, 현재 로컬 시스템을 구분할 수 있는 값인 LUID를 얻어(S440) 복사한 토큰을 사용할 수 있도록 권한을 변경한다(S460).
마지막으로 권한 변경모듈(114-4)은 프로세스 생성모듈(114-1)이 복사된 토큰을 사용하여 대상 프로세스를 생성하도록 한다(S470). 이때 프로세스 경로 및 프로세스 파라미터를 지정함으로써 원하는 프로세스를 생성하게 된다. 또한 본 발명에서 대상 프로세스가 본 발명에 따른 DLL 인젝션 장치의 자식 프로세스로서 생성된다는 점은 앞에서 설명한 바와 같다. 한편, 프로세스 생성모듈(114-1)은 대상 프로세스가 아닌 런처 프로세스를 시스템 권한으로 실행할 수 있으며, 그에 따라 생성되는 자식 프로세스인 대상 프로세스 역시 시스템 권한으로 실행된다.
이후 대상 프로세스는 시스템 권한으로 실행되며, 코드 삽입모듈(114-2)은 외부 프로세스에 의한 DLL 인젝션의 영향을 받지 않고 대상 프로세스가 적재된 메모리 영역에 Load DLL Code를 삽입하여 원하는 DLL이 실행되도록 한다.
이상에서 설명한 것과 같은 권한 변경모듈(114-4)에 의한 DLL 인젝션 방어 기법은 DLL 인젝션 기법을 분석하여 DLL 인젝션의 발생을 모니터링함으로써 방어하는 기존의 기법에 비하여 원천적으로 대상 프로세스를 DLL 인젝션으로부터 방어할 수 있다는 효과를 가진다.
도 6은 본 발명에 따른 DLL 인젝션 방법에 대한 바람직한 실시예의 수행과정을 도시한 흐름도이다.
도 6을 참조하면, 운영 체제(112)로부터 사용자가 실행을 명령한 프로그램에 대응하는 대상 프로세스의 생성 여부가 통지되면(S510), 인젝션 프로그램(114)의 프로세스 생성모듈(114-1)은 런처 프로세스를 실행하여 런처 프로세스의 자식 프로세스로서 대상 프로세스를 중지 모드로 생성한다(S520). 이때 앞에서 설명한 것과 같이 권한 생성모듈(114-2)이 시스템 권한으로 실행되는 'winlogon.exe'의 토큰을 복사하여 대상 프로세스가 시스템 권한으로 생성되도록 할 수 있다.
다음으로 코드 삽입모듈(114-2)은 대상 프로세스의 프로세스 핸들을 이용하여 대상 프로세스가 적재된 메모리 영역을 할당받아 대상 프로세스에 인젝션하고자 하는 DLL 파일을 실행하는 코드를 삽입한다(S530). 코드 삽입모듈(114-2)의 자세한 동작은 앞에서 도 3을 참조하여 설명한 바와 같다.
코드 삽입모듈(114-2)에 의해 대상 프로세스의 메모리 영역에 DLL 파일을 실행하기 위한 Load DLL Code가 삽입되면, 복원모듈(114-3)은 대상 프로세스의 중지 모드를 해제하여 대상 프로세스가 실행되도록 한다(S540).
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상에서 본 발명의 바람직한 실시예에 대해 도시하고 설명하였으나, 본 발명은 상술한 특정의 바람직한 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.
110 - 프로세서
112 - 운영 체제
114 - 인젝션 프로그램
114-1 - 프로세스 생성모듈
114-2 - 코드 삽입모듈
114-3 - 복원모듈
114-4 - 권한 변경모듈
120 - 메모리
122 - 프로그램 어플리케이션
124 - 프로그램 데이터

Claims (7)

  1. 대상 프로세스에 DLL 인젝션을 수행하기 위한 인젝션 프로그램 및 운영 체제를 실행하는 프로세서; 및
    상기 운영 체제, 상기 인젝션 프로그램 및 상기 대상 프로세스가 저장되는 메모리;를 포함하며,
    상기 인젝션 프로그램은,
    런처 프로세스를 실행하여 상기 런처 프로세스의 자식 프로세스로서 상기 대상 프로세스를 중지(suspend) 모드로 생성하는 프로세스 생성모듈;
    상기 대상 프로세스의 프로세스 핸들을 이용하여 상기 대상 프로세스가 적재된 메모리 영역을 할당받아 상기 대상 프로세스에 인젝션하고자 하는 DLL 파일을 실행하는 코드를 삽입하는 코드 삽입모듈; 및
    상기 대상 프로세스의 중지 모드를 해제하여 상기 대상 프로세스가 실행되도록 하는 복원모듈;을 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  2. 제 1항에 있어서,
    상기 인젝션 프로그램은,
    상기 운영 체제에서 시스템 권한으로 동작하는 프로세스의 프로세스 아이디(ID)를 사용하여 상기 대상 프로세스가 시스템 권한으로 실행되도록 하는 권한 변경모듈을 더 포함하는 것을 특징으로 하는 컴퓨팅 장치.
  3. 제 2항에 있어서,
    상기 권한 변경모듈은 상기 운영 체제에서 시스템 권한으로 동작하는 프로세스의 프로세스 아이디를 사용하여 얻어진 프로세스 핸들에 의해 토큰을 복사하고,
    상기 프로세스 생성모듈은 상기 복사된 토큰을 사용하여 상기 대상 프로세스를 생성하는 것을 특징으로 하는 컴퓨팅 장치.
  4. 제 1항에 있어서,
    상기 프로세스 생성모듈은 상기 운영 체제에서 시스템 권한으로 동작하는 프로세스의 프로세스 아이디(ID)를 사용하여 상기 런처 프로세스가 시스템 권한으로 실행되도록 하는 것을 특징으로 하는 컴퓨팅 장치.
  5. (a) 운영 체제로부터 사용자가 실행을 명령한 프로그램에 대응하는 대상 프로세스의 생성 여부를 통지받는 단계;
    (b) 런처 프로세스를 실행하여 상기 런처 프로세스의 자식 프로세스로서 상기 대상 프로세스를 중지 모드로 생성하는 단계;
    (c) 상기 대상 프로세스의 프로세스 핸들을 이용하여 상기 대상 프로세스가 적재된 메모리 영역을 할당받아 상기 대상 프로세스에 인젝션하고자 하는 DLL 파일을 실행하는 코드를 삽입하는 단계; 및
    (d) 상기 대상 프로세스의 중지 모드를 해제하여 상기 대상 프로세스가 실행되도록 하는 단계;를 포함하는 것을 특징으로 하는 DLL 인젝션 방법.
  6. 제 5항에 있어서,
    상기 (b) 단계에서, 상기 대상 프로세스를 중지 모드로 생성하되, 상기 운영 체제에서 시스템 권한으로 동작하는 프로세스의 프로세스 아이디를 사용하여 상기 생성된 대상 프로세스가 시스템 권한으로 실행되도록 하는 것을 특징으로 하는 DLL 인젝션 방법.
  7. 제 5항 또는 제 6항에 기재된 DLL 인젝션 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020110039901A 2011-04-28 2011-04-28 Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법 KR101242127B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020110039901A KR101242127B1 (ko) 2011-04-28 2011-04-28 Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법
JP2014508278A JP2014518582A (ja) 2011-04-28 2012-03-12 Dllインジェクション機能を持つコンピュータ装置及びdllインジェクション方法
US14/113,249 US8875165B2 (en) 2011-04-28 2012-03-12 Computing device having a DLL injection function, and DLL injection method
PCT/KR2012/001775 WO2012148080A2 (ko) 2011-04-28 2012-03-12 Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법
EP12777809.0A EP2704004B1 (en) 2011-04-28 2012-03-12 Computing device having a dll injection function, and dll injection method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110039901A KR101242127B1 (ko) 2011-04-28 2011-04-28 Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법

Publications (2)

Publication Number Publication Date
KR20120121973A KR20120121973A (ko) 2012-11-07
KR101242127B1 true KR101242127B1 (ko) 2013-03-12

Family

ID=47072842

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110039901A KR101242127B1 (ko) 2011-04-28 2011-04-28 Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법

Country Status (5)

Country Link
US (1) US8875165B2 (ko)
EP (1) EP2704004B1 (ko)
JP (1) JP2014518582A (ko)
KR (1) KR101242127B1 (ko)
WO (1) WO2012148080A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200054752A (ko) 2018-11-12 2020-05-20 주식회사 안랩 메시지 모니터링 장치 및 방법

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109684824B (zh) * 2014-12-29 2021-09-03 北京奇虎科技有限公司 进程的权限配置方法及装置
US10083296B2 (en) * 2015-06-27 2018-09-25 Mcafee, Llc Detection of malicious thread suspension
CN106095482A (zh) * 2016-05-31 2016-11-09 宇龙计算机通信科技(深圳)有限公司 应用程序的冻结方法及装置
US10235161B2 (en) * 2017-02-06 2019-03-19 American Megatrends, Inc. Techniques of adding security patches to embedded systems
JP6957311B2 (ja) * 2017-10-25 2021-11-02 システムインテリジェント株式会社 情報漏洩防止装置、及び情報漏洩防止プログラム
US10747874B2 (en) * 2018-05-22 2020-08-18 NortonLifeLock, Inc. Systems and methods for controlling an application launch based on a security policy
CN111198723B (zh) * 2018-11-19 2023-03-07 深圳市优必选科技有限公司 一种进程注入方法、终端设备及计算机可读存储介质
KR101958933B1 (ko) * 2018-12-18 2019-03-18 주식회사 웨어밸리 소켓 인젝션을 통한 데이터베이스 내의 정보 수집 방법 및 장치
US11170126B2 (en) 2019-01-03 2021-11-09 Citrix Systems, Inc. Policy based notification protection service in workspace
US11307910B2 (en) * 2019-06-10 2022-04-19 Citrix Systems, Inc. Notification tagging for a workspace or application
CN111338922B (zh) * 2020-03-02 2023-04-11 武汉思普崚技术有限公司 Dll失效的检测方法及装置
CN111475229B (zh) * 2020-04-09 2021-01-15 广州锦行网络科技有限公司 一种Windows平台下的dll注入方法及***
US11681520B2 (en) 2021-04-20 2023-06-20 International Business Machines Corporation Software upgrading using dynamic link library injection

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
JP2011013955A (ja) * 2009-07-02 2011-01-20 Hitachi Systems & Services Ltd メディアチェック回避システム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7039919B1 (en) * 1998-10-02 2006-05-02 Microsoft Corporation Tools and techniques for instrumenting interfaces of units of a software program
US6463583B1 (en) 1999-04-08 2002-10-08 Novadigm, Inc. Dynamic injection of execution logic into main dynamic link library function of the original kernel of a windowed operating system
US8769268B2 (en) * 2007-07-20 2014-07-01 Check Point Software Technologies, Inc. System and methods providing secure workspace sessions
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US20120167057A1 (en) * 2010-12-22 2012-06-28 Microsoft Corporation Dynamic instrumentation of software code

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
JP2011013955A (ja) * 2009-07-02 2011-01-20 Hitachi Systems & Services Ltd メディアチェック回避システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200054752A (ko) 2018-11-12 2020-05-20 주식회사 안랩 메시지 모니터링 장치 및 방법

Also Published As

Publication number Publication date
EP2704004B1 (en) 2016-02-03
EP2704004A2 (en) 2014-03-05
EP2704004A4 (en) 2014-12-17
KR20120121973A (ko) 2012-11-07
JP2014518582A (ja) 2014-07-31
WO2012148080A2 (ko) 2012-11-01
US20140047461A1 (en) 2014-02-13
WO2012148080A3 (ko) 2013-01-03
US8875165B2 (en) 2014-10-28

Similar Documents

Publication Publication Date Title
KR101242127B1 (ko) Dll 인젝션 기능을 구비한 컴퓨팅 장치 및 dll 인젝션 방법
KR101740224B1 (ko) 불법 모드 변경처리
RU2637997C1 (ru) Система и способ обнаружения вредоносного кода в файле
CN102799817B (zh) 用于使用虚拟化技术进行恶意软件保护的***和方法
US9195823B1 (en) System and method for intercepting process creation events
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
RU2627107C2 (ru) Профилирование выполнения кода
JP5607752B2 (ja) 不正な変更からオペレーティング・システムを保護するための方法及びシステム
JP2018041438A5 (ko)
JP2010517164A (ja) オペレーティングシステム資源の保護
US9740864B2 (en) System and method for emulation of files using multiple images of the emulator state
JP2014518582A5 (ko)
JP7228751B2 (ja) 権限管理のための方法および装置、コンピュータ機器ならびに記憶媒体
EP2680138B1 (en) Dynamic rule management for kernel mode filter drivers
US11263065B2 (en) Method for identifying at least one function of an operating system kernel
WO2016126206A1 (en) Method for obfuscation of code using return oriented programming
KR101207434B1 (ko) 이종의 디지털 문서 보호 시스템 간의 충돌 방지 시스템 및 방법
RU2592383C1 (ru) Способ формирования антивирусной записи при обнаружении вредоносного кода в оперативной памяти
KR101653741B1 (ko) 실행 프로그램 동작 감시방법, 감시장치 및 이를 위한 컴퓨터 프로그램, 그 기록매체
Daghmehchi Firoozjaei et al. Parent process termination: an adversarial technique for persistent malware
CN116775147B (zh) 一种可执行文件处理方法、装置、设备及存储介质
Ciholas et al. Fast and furious: outrunning Windows kernel notification routines from user-mode
KR20180093529A (ko) 바이트코드와 네이티브코드 간의 상호 의존성에 기반한 어플리케이션 위변조 방지 방법 및 장치
Pearce Windows Internals and Malware Behavior: Malware Analysis Day 3
RU2606883C2 (ru) Система и способ открытия файлов, созданных уязвимыми приложениями

Legal Events

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

Payment date: 20160225

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190225

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20200305

Year of fee payment: 8