KR101671795B1 - 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법 - Google Patents

동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법 Download PDF

Info

Publication number
KR101671795B1
KR101671795B1 KR1020100004506A KR20100004506A KR101671795B1 KR 101671795 B1 KR101671795 B1 KR 101671795B1 KR 1020100004506 A KR1020100004506 A KR 1020100004506A KR 20100004506 A KR20100004506 A KR 20100004506A KR 101671795 B1 KR101671795 B1 KR 101671795B1
Authority
KR
South Korea
Prior art keywords
function
thread
library
executed
computer system
Prior art date
Application number
KR1020100004506A
Other languages
English (en)
Other versions
KR20110084775A (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 KR1020100004506A priority Critical patent/KR101671795B1/ko
Priority to US12/885,695 priority patent/US8966511B2/en
Publication of KR20110084775A publication Critical patent/KR20110084775A/ko
Application granted granted Critical
Publication of KR101671795B1 publication Critical patent/KR101671795B1/ko

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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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

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)
  • Debugging And Monitoring (AREA)

Abstract

동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법을 개시한다. 컴퓨터 시스템은 하나의 프로세스가 실행 가능한 코드 라이브러리를 다른 프로세스에 동적으로 연결하려는 동작을 모니터링하여 연결을 차단한다.

Description

동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법{COMPUTER SYSTEM AND METHOD FOR PREVENTING DYNAMIC LINK LIBRARY INJECTION ATTACK}
본 발명의 실시예들은 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법에 관한 것이다.
기존의 안티 바이러스 제품은 라이브러리 내부의 바이러스 코드의 패턴을 조사하여(signature 기반) 공격 여부를 판단하고, 이러한 공격을 차단한다. 이를 위하여 기존의 안티 바이러스 제품은 미리 발견된 바이러스 종류에 대한 데이터베이스를 가지고 있어야 한다. 따라서, 이러한 기존의 안티 바이러스 제품은 데이터베이스 갱신이 필수적이고, 새로운 악성 코드에 대해서는 새로운 악성 코드가 발견된 후에 안티 바이러스 프로그램의 데이터베이스를 갱신한 이후에야 대응할 수 있다.
본 명세서에서는 효율적으로 동적 링크 라이브러리 삽입 공격을 방지할 수 있는 시스템 및 방법이 제안된다.
하나의 프로세스가 실행 가능한 코드 라이브러리를 다른 프로세스에 동적으로 연결하려는 동작을 모니터링하는 모니터링부 및 동작이 발생하는 경우, 실행 가능한 코드 라이브러리의 연결을 차단하는 차단부를 포함하는 컴퓨터 시스템이 제공된다.
일측에 따르면, 모니터링부는 스레드 생성 함수의 호출 여부를 감시하는 호출 감시부, 스레드 생성 함수가 호출되는 시점에 함수 후킹(hooking)을 통해 실행될 함수의 파라미터를 획득하는 파라미터 획득부 및 파라미터를 통해 동작의 발생을 확인하는 연결 확인부를 포함할 수 있다.
다른 측면에서, 모니터링부는, 스레드 생성 함수의 호출 여부를 감시하는 호출 감시부를 포함할 수 있고, 차단부는 스레드 생성 함수가 호출되는 시점에 함수 후킹을 통해 실행될 함수의 파라미터를 통해 동작의 발생을 확인하는 연결 확인부 및 동작이 발생하는 경우, 동작과 관련하여 생성되는 스레드를 종료시키는 종료부를 포함할 수 있다.
또 다른 측면에서, 파라미터는 타겟 프로세스, 생성될 스레드가 실행할 함수 및 스레드가 실행할 함수의 파라미터를 포함할 수 있고, 연결 확인부는 타겟 프로세스와 하나의 프로세스가 서로 다른 프로세스이고, 생성될 스레드가 실행할 함수가 코드 라이브러리 로드 함수이고, 실행할 함수의 파라미터가 실행 가능한 코드 라이브러리 이름인 경우, 동작이 발생한 것으로 확인할 수 있다.
하나의 프로세스가 실행 가능한 코드 라이브러리를 다른 프로세스에 동적으로 연결하려는 동작을 모니터링하는 단계 및 동작이 발생하는 경우, 실행 가능한 코드 라이브러리의 연결을 차단하는 단계를 포함하는 라이브러리 삽입 공격 방지 방법이 제공된다.
하나의 프로세스가 실행 가능한 코드 라이브러리를 다른 프로세스에 동적으로 연결하려는 동작을 모니터링하고, 이러한 연결 동작을 차단하여 의도하지 않은 기능이 실행되는 것을 방지할 수 있다.
별도의 데이터베이스를 구축하지 않고도 효율적으로 동적 링크 라이브러리 삽입 공격을 차단할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 컴퓨터 시스템의 개괄적인 구성을 설명하기 위한 블록도이다.
도 2는 본 발명의 일실시예에 있어서, 컴퓨터 시스템의 내부 구성을 설명하기 위한 블록도이다.
도 3은 본 발명의 일실시예에 있어서, 라이브러리 삽입 공격 방지 방법을 도시한 흐름도이다.
도 4는 본 발명의 일실시예에 있어서, 라이브러리 삽입을 판정하는 방법을 도시한 흐름도이다.
이하 첨부된 도면을 참조하여 본 발명에 따른 다양한 실시예를 상세히 설명하기로 한다.
본 발명의 실시예들에 따른 컴퓨터 시스템은 프로그램을 동작시켜 운용되는 시스템 전반을 포함한다. 즉, 컴퓨터 시스템은 PC(personal computer)나 임베디드 시스템, 모바일 시스템 등과 같이 전자회로를 이용하여 자동적으로 계산이나 데이터를 처리하는 시스템을 포함할 수 있다. 프로그램은 프로세스(process) 단위로 실행되고, 프로세스에는 하나 이상의 스레드(thread: 실행 단위)가 실행될 수 있다. 스레드가 새로 생성된다는 것은 프로그램 내에서 특정 기능을 병렬로 새로 시작하는 것을 의미할 수 있다. 예를 들어 스레드가 생성되는 곳에서 함수가 새로 실행될 수 있다.
프로그램에서 사용하는 함수들을 실행 가능한 파일 형태인 라이브러리(library)로 모듈화 하여 컴퓨터 시스템 내에 저장한다. 프로그램은 라이브러리를 연결하여 라이브러리 내의 필요한 함수를 사용할 수 있도록 하는데, 이를 연결(link)한다고 한다. 라이브러리를 프로그램에 연결(Link) 시키는 방법은 크게 프로그램 제작 단계(compile)에서 라이브러리를 프로그램에 포함시키는 정적 링크(static link)와 프로그램 실행 중 필요에 따라 라이브러리를 로드(load)하여 사용하는 동적 링크(Dynamic link / Run-time link)가 있다.
이러한 라이브러리를 "로드한다"는 것은 프로세스의 가상 메모리 공간에 라이브러리가 저장해 놓고, 필요한 함수를 호출하여 사용하는 것을 의미할 수 있다. 일례로, 이러한 형태의 라이브러리 파일로서 동적 링크 라이브러리(DLL: Dynamic Link Library) 파일을 들 수 있다.
도 1은 본 발명의 일실시예에 있어서, 컴퓨터 시스템의 개괄적인 구성을 설명하기 위한 블록도이다. 본 실시예에 따른 컴퓨터 시스템(100)은 도 1에 도시된 바와 같이, 인터페이스부(110), 모니터링부(120) 및 차단부(130)를 포함할 수 있다.
인터페이스부(110)는 사용자의 입력에 따라 모니터링(120)부의 동작 여부를 결정한다. 이러한 사용자의 입력은 모니터와 같은 출력장치를 통해 동작 여부를 결정하는 기능을 소프트웨어적으로 제공하고, 해당 기능을 통해 수신되거나 특정 키입력을 통해 하드웨어 적으로 수신될 수 있다. 예를 들어, 모바일 시스템의 경우, 특정 버튼을 길게 누름으로써 매너 모드를 설정하는 것과 같이 별도의 버튼이 동작 여부를 결정하기 위해 제공될 수 있다.
모니터링부(120)는 하나의 프로세스가 실행 가능한 코드 라이브러리를 다른 프로세스에 동적으로 연결하려는 동작을 모니터링한다. 예를 들어, 실행 가능한 코드 라이브러리는 윈도우 운영체제 시스템의 동적 링크 라이브러리(Dynamic-Link Library, 이하, DLL) 파일일 수 있다. 이때, 'RemoteCreateThread(타겟 프로세스, 스레드가 실행할 함수, 스레드가 실행할 함수의 파라미터)'와 같은 함수를 통해 다른 프로세스에 원격으로 스레드를 생성할 수 있다. 즉, 웜 등을 통해 악성 코드가 포함된 DLL이 타깃 프로세스를 통해 실행되도록 할 수 있다. 모니터링부(120)는 이러한 동적 연결 및 실행 가능한 코드 라이브러리를 외부 프로세서가 삽입하는 것을 모니터링할 수 있다.
이때, 모니터링부(120)는 단순히 스레드 생성 함수의 호출 여부만을 감지하거나 또는 스레드 생성 함수의 호출 여부를 감지하여 해당 프로세스의 공격 여부를 판단할 수도 있다.
즉, 일실시예로 모니터링부(120)는 단순히 스레드 생성 함수의 호출 여부를 감시하는 호출 감시부(미도시)만을 포함할 수 있다. 또는 다른 실시예로, 호출 감시부뿐만 아니라 스레드 생성 함수가 호출되는 시점에 함수 후킹(hooking)을 통해 실행될 함수의 파라미터를 통해 동작의 발생을 확인하는 연결 확인부(미도시)를 포함할 수 있다. 이때, 실행될 함수의 파라미터는 타겟 프로세스, 생성될 스레드가 실행할 함수 및 스레드가 실행할 함수의 파라미터를 포함할 수 있다. 이때, 연결 확인부는 타겟 프로세스와 상기 하나의 프로세스가 서로 다른 프로세스이고, 생성될 스레드가 실행할 함수가 코드 라이브러리 로드 함수이고, 실행할 함수의 파라미터가 실행 가능한 코드 라이브러리 파일의 이름인 경우, 상기 동작이 발생한 것으로 확인할 수 있다.
차단부(130)는 상기 동작이 발생하는 경우, 실행 가능한 코드 라이브러리의 연결을 차단한다. 우선, 차단부(130)는 모니터링부(120)가 호출 감시부만을 포함하는 경우에는 연결 확인부를 포함하여 공격 여부, 즉 상기 동작의 발생을 판단할 수 있고, 모니터링부(120)가 호출 감시부와 연결 확인부를 모두 포함하는 경우에는 차단의 역할만을 수행할 수도 있다. 또한, 차단부(130)는 상기 동작이 발생하는 경우, 상기 동작과 관련하여 생성되는 스레드를 종료시키는 종료부(미도시)를 포함할 수 있다. 즉, 하나의 프로세스가 다른 프로세스에 스레드를 생성시키는 동작의 공격 여부를 판단하고, 공격으로 판단된 경우에는 생성되는 스레드를 종료시킴으로써, 실행 중인 프로세스에 실행 가능한 코드 라이브러리를 동적 연결시키는 행위를 차단하여 의도하지 않은 기능의 실행을 방지할 수 있다. 다시 말해, 라이브러리 삽입 공격을 원천적으로 방지할 수 있다.
또한, 인터페이스부(110)는 상기 동작의 발생과 관련된 정보를 출력 장치를 통해 출력할 수 있다. 예를 들어, 라이브러리 삽입 공격이 발생하고, 이를 차단하였음을 알리는 경고 메시지와 같은 정보를 모니터나 모바일 시스템의 경우, 액정을 통해 디스플레이할 수 있다.
도 2는 본 발명의 일실시예에 있어서, 컴퓨터 시스템의 구체적인 내부 구성을 설명하기 위한 블록도이다. 본 실시예에 따른 컴퓨터 시스템(200)은 입력 인터페이스(211), 보호 모드 트리거(212), 출력 인터페이스(213), 보호 모듈(220) 및 경고 모듈(230)을 포함할 수 있다. 여기서, 인터페이스(211), 보호 모드 트리거(212), 출력 인터페이스(213), 및 경고 모듈(230)은 도 1을 통해 설명한 인터페이스부(110)에 대응될 수 있다. 또한, 보호 모듈(220)은 도 1을 통해 설명한 모니터링부(120) 및 차단부(130)에 대응될 수 있다.
입력 인터페이스(211)는 사용자(240)로부터의 입력을 받아들인다. 이때, 상술한 바와 같이 사용자(240)에게 소프트웨어적으로 또는 하드웨어적으로 제공되는 기능을 통해 코드 라이브러리의 동적 연결을 차단 여부에 대한 입력을 수신할 수 있다.
보호 모드 트리거(212)는 사용자(240)의 입력에 따라 보호 모듈(220)을 실행한다. 즉, 사용자가 차단 모드를 설정하면, 보호 모드 트리거(212)를 통해 보호 모듈(220)이 실행될 수 있다. 이때, 입력 인터페이스(211)가 하드웨어적으로 제공되는 기능을 통해 차단 여부에 대한 입력을 수신하는 경우, 보호 모드 트리거(212)는 사용자의 입력을 소프트웨어적으로 변환해주는 기능을 더 포함할 수도 있다.
보호 모듈(220)은 실행 가능한 코드 라이브러리의 동적 연결을 확인 및 차단한다. 이를 위해, 도 2에서와 같이 보호 모듈(220)은 모니터링 모듈(221)과 차단 모듈(222)을 포함할 수 있다.
모니터링 모듈(221)은 실행 가능한 코드 라이브러리의 동적 연결이 발생하도록 하는 스레드 생성 함수의 호출을 감시하고 있다가 호출 시점에 프로그램 제어권을 얻어 온다. 이를 위해, 모니터링 모듈(221)은 스레드 생성 함수가 호출되는 것을 확인하기 위해, 스레드 생성 함수의 내부에서 처음 실행되는 함수 호출을 감시할 수 있다.
차단 모듈(222)은 모니터링 모듈(221)에서 스레드 생성 함수의 호출을 감지하고, 프로그램의 제어권을 얻어 온 후에 실행되는 모듈로서, 스레드 생성 함수로 인하여 실제로 실행 가능한 코드 라이브러리 삽입이 일어날 것인지를 판별하는 공격 감지 모듈(222a) 및 실행 가능한 코드 라이브러리의 동적 연결을 위해 생성되는 스레드를 종료시키는 스레드 종료 모듈(222b)을 포함할 수 있다.
경고 모듈(230)은 실행 가능한 코드 라이브러리의 동적 연결이 발생하였음을 사용자에게 알리기 위한 정보를 생성하고, 출력 인터페이스(213)은 경고 모듈(230)에서 생성된 정보를 사용자(240)에게 제공한다.
도 1 및 도 2에서는 사용자가, 실행 가능한 코드 라이브러리의 동적 연결을 차단할 것인지를 먼저 결정하도록 하였으나, 필요에 따라 실행 가능한 코드 라이브러리의 동적 연결이 발생할 때마다 스레드를 종료할 것인지 사용자에게 선택하도록 할 수도 있다.
도 3은 본 발명의 일실시예에 있어서, 라이브러리 삽입 공격 방지 방법을 도시한 흐름도이다. 본 실시예에 따른 라이브러리 삽입 공격 방지 방법은 도 1을 통해 설명한 컴퓨터 시스템(100) 또는 도 2를 통해 설명한 컴퓨터 시스템(200)을 통해 수행될 수 있다. 도 3에서는 컴퓨터 시스템(100)을 통해 각각의 단계가 수행되는 과정을 설명함으로써, 라이브러리 삽입 공격 방지 방법을 설명한다.
단계(310)에서 컴퓨터 시스템(100)은 사용자 입력을 확인한다. 상술한 바와 같이, 사용자 입력은 모니터와 같은 출력장치를 통해 동작 여부를 결정하는 기능을 소프트웨어적으로 제공하고, 해당 기능을 통해 수신되거나 특정 키입력을 통해 하드웨어 적으로 수신될 수 있다. 예를 들어, 모바일 시스템의 경우, 특정 버튼을 길게 누름으로써 매너 모드를 설정하는 것과 같이 별도의 버튼이 동작 여부를 결정하기 위해 제공될 수 있다.
단계(320)에서 컴퓨터 시스템(100)은 사용자 입력에 따라 보호 모드를 온(on)한다. 예를 들어, 컴퓨터 시스템(100)은 보호 모드를 온하기 위해 도 1에서와 같이 모니터링부(120)가 동작하도록 하거나 도 2에서와 같이 보호 모듈(220)을 실행시킬 수 있다. 이때, 컴퓨터 시스템(100)은 보호 모드가 온되는 경우 단계(330)를 수행하고, 보호 모드가 온되지 않는 경우 다시 단계(310)를 수행할 수 있다.
단계(330)에서 컴퓨터 시스템(100)은 하나의 프로세스가 실행 가능한 코드 라이브러리를 다른 프로세스에 동적으로 연결하려는 동작을 모니터링 한다. 이때, 단계(330)에서 컴퓨터 시스템(100)은 단순히 스레드 생성 함수의 호출 여부만을 감지하거나 또는 스레드 생성 함수의 호출 여부를 감지하여 해당 프로세스의 공격 여부를 판단할 수도 있다.
즉, 일실시예로 컴퓨터 시스템(100)은 단계(330)에서 단순히 스레드 생성 함수의 호출 여부를 감시할 수 있다. 또는 다른 실시예로, 컴퓨터 시스템(100)은 단계(330)에서 스레드 생성 함수의 호출 여부를 감시할 뿐만 아니라 스레드 생성 함수가 호출되는 시점에 함수 후킹을 통해 실행될 함수의 파라미터를 통해 동작의 발생을 확인할 수도 있다. 이때, 실행될 함수의 파라미터는 타겟 프로세스, 생성될 스레드가 실행할 함수 및 스레드가 실행할 함수의 파라미터를 포함할 수 있다. 이때, 연결 확인부는 타겟 프로세스와 상기 하나의 프로세스가 서로 다른 프로세스이고, 생성될 스레드가 실행할 함수가 코드 라이브러리 로드 함수이고, 실행할 함수의 파라미터가 실행 가능한 코드 라이브러리 파일의 이름인 경우, 상기 동작이 발생한 것으로 확인할 수 있다.
단계(340)에서 컴퓨터 시스템(100)은 상기 동작이 발생하는 경우 단계(350)를 수행하고, 발생하지 않는 경우 다시 단계(330)를 수행한다. 즉, 지속적으로 상기 동작의 발생을 모니터링할 수 있다.
단계(350)에서 컴퓨터 시스템(100)은 실행 가능한 코드 라이브러리의 연결을 차단한다. 우선, 컴퓨터 시스템(100)은 단계(330)에서 스레드 생성 함수의 호출 여부만을 감시하는 경우에는 단계(350)에서 스레드 생성 함수가 호출되는 시점에 함수 후킹을 통해 실행될 함수의 파라미터를 통해 동작의 발생을 확인할 수도 있다.
이때, 컴퓨터 시스템은 상기 동작이 발생하는 경우, 상기 동작과 관련하여 생성되는 스레드를 종료시킴으로써 연결을 차단할 수 있다. 즉, 하나의 프로세스가 다른 프로세스에 스레드를 생성시키는 동작의 공격 여부를 판단하고, 공격으로 판단된 경우에는 생성되는 스레드를 종료시킴으로써, 실행 중인 프로세스에 실행 가능한 코드 라이브러리를 동적 연결시키는 행위를 차단하여 의도하지 않은 기능의 실행을 방지할 수 있다. 다시 말해, 라이브러리 삽입 공격을 원천적으로 방지할 수 있다.
즉, 하나의 프로세스가 다른 프로세스에 스레드를 생성시키는 동작의 공격 여부를 판단하고, 공격으로 판단된 경우에는 생성되는 스레드를 종료시킴으로써, 실행 중인 프로세스에 실행 가능한 코드 라이브러리를 동적 연결시키는 행위를 차단하여 의도하지 않은 기능의 실행을 방지할 수 있다. 다시 말해, 라이브러리 삽입 공격을 원천적으로 방지할 수 있다.
단계(360)에서 컴퓨터 시스템(100)은 동작의 발생과 관련된 정보를 사용자에게 제공한다. 즉, 컴퓨터 시스템(100)은 상기 동작의 발생과 관련된 정보를 출력 장치를 통해 출력할 수 있다. 예를 들어, 라이브러리 삽입 공격이 발생하고, 이를 차단하였음을 알리는 경고 메시지와 같은 정보를 모니터나 모바일 시스템의 경우, 액정을 통해 디스플레이할 수 있다.
도 4는 본 발명의 일실시예에 있어서, 라이브러리 삽입을 판정하는 방법을 도시한 흐름도이다. 본 실시예에 따른 라이브러리 삽입을 판정하는 방법은 도 1을 통해 설명한 컴퓨터 시스템(100) 또는 도 2를 통해 설명한 컴퓨터 시스템(200)을 통해 수행될 수 있다. 예를 들어, 라이브러리 삽입을 판정하는 방법(단계(410) 내지 단계(450))은 도 3의 단계(330)이나 단계(350)에서 수행될 수 있다. 도 4에서는 컴퓨터 시스템(100)을 통해 각각의 단계가 수행되는 과정을 설명함으로써, 라이브러리 삽입을 판정하는 방법을 설명한다.
단계(410)에서 컴퓨터 시스템(100)은 함수를 후킹한다. 즉, 스레드 생성 함수가 호출되는 경우, 후킹을 통해 프로그램 제어권을 얻어 올 수 있다.
단계(420)에서 컴퓨터 시스템(100)은 후킹한 함수의 파라미터를 추출한다. 상술한 바와 같이 함수의 파라미터는 타겟 프로세스, 생성될 스레드가 실행할 함수 및 스레드가 실행할 함수의 파라미터를 포함할 수 있다.
단계(430)에서 컴퓨터 시스템(100)은 함수를 호출한 프로세스와 스레드 생성 함수의 타겟 프로세스가 동일한지 여부를 확인하여 동일하지 않은 경우 단계(440)를 수행하고, 동일한 경우 종료한다. 또한, 단계(440)에서 컴퓨터 시스템(100)은 실행함수가 라이브러리 로드 함수인지를 확인하여 라이브러리 로드 함수인 경우 단계(450)를 수행하고, 라이브러리 로드 함수가 아닌 경우 종료한다. 또한, 단계(450)에서 컴퓨터 시스템(100)은 실행함수의 파라미터가 라이브러리 파일 이름인 경우 단계(460)를 수행하고, 라이브러리 파일 이름이 아닌 경우 종료한다. 여기서, 라이브러리 파일은 동적 연결 및 실행 가능한 라이브러리 파일을 포함할 수 있다.
즉, 함수를 호출한 프로세스와 스레드 생성 함수의 타겟 프로세스가 서로 동일하지 않은 경우에는 현재 실행 중인 프로세스의 스레드를 다른 프로세스가 생성하려 함을 확인할 수 있고, 스레드가 실행하는 실행함수가 라이브러리 로드 함수이고, 실행함수가 파라미터로 실행 가능하고 동적 연결이 가능한 라이브러리 파일 이름을 포함하는 경우, 라이브러리 삽입 공격이 발생했음을 판정할 수 있다.
단계(460)에서 컴퓨터 시스템(100)은 연결을 차단한다. 즉, 하나의 프로세스가 다른 프로세스에 스레드를 생성시키는 동작의 공격 여부를 판단하고, 공격으로 판단된 경우에는 생성되는 스레드를 종료시킴으로써, 실행 중인 프로세스에 실행 가능한 코드 라이브러리를 동적 연결시키는 행위를 차단하여 의도하지 않은 기능의 실행을 방지할 수 있다.
본 발명의 실시예들에 따른 컴퓨터 시스템 또는 라이브러리 삽입 공격 방지 방법을 이용하면, 하나의 프로세스가 실행 가능한 코드 라이브러리를 다른 프로세스에 동적으로 연결하려는 동작을 모니터링하고, 이러한 연결 동작을 차단하여 의도하지 않은 기능이 실행되는 것을 방지할 수 있고, 별도의 데이터베이스를 구축하지 않고도 효율적으로 동적 링크 라이브러리 삽입 공격을 차단할 수 있다.
본 발명에 따른 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 파일 데이터, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(Floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명을 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명하였으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100: 컴퓨터 시스템
110: 인터페이스부
120: 모니터링부
130: 차단부

Claims (16)

  1. 제1 프로세스가 실행 가능한 코드 라이브러리를 제2 프로세스에 동적으로 연결하려는 라이브러리 삽입 공격을 모니터링하는 모니터링부; 및
    상기 라이브러리 삽입 공격이 발생하는 경우, 상기 실행 가능한 코드 라이브러리의 연결을 차단하는 차단부
    를 포함하고,
    상기 모니터링부는,
    상기 제1 프로세스가 상기 제2 프로세스에 스레드를 생성시키는 동작을 판단하고, 상기 생성될 스레드에 의해 실행될 함수가 코드 라이브러리 로드 함수인 지를 확인함으로써, 상기 라이브러리 삽입 공격이 발생한 것으로 확인하는 연결 확인부
    를 포함하며,
    상기 연결 확인부는,
    상기 제2 프로세스가 상기 제1 프로세스와 다른 지 여부 및 상기 스레드에 의해 실행될 함수의 파라미터가 상기 실행 가능한 코드 라이브러리의 이름인 지 여부를 확인하는,
    컴퓨터 시스템.
  2. 제1항에 있어서,
    상기 모니터링부는,
    스레드 생성 함수의 호출 여부를 감시하는 호출 감시부; 및
    상기 스레드 생성 함수가 호출되는 시점에 함수 후킹(hooking)을 통해 실행될 함수의 파라미터를 통해 상기 동작의 발생을 확인하는 연결 확인부
    를 포함하는, 컴퓨터 시스템.
  3. 제1항에 있어서,
    상기 모니터링부는,
    스레드 생성 함수의 호출 여부를 감시하는 호출 감시부
    를 포함하고,
    상기 차단부는
    상기 스레드 생성 함수가 호출되는 시점에 함수 후킹을 통해 실행될 함수의 파라미터를 통해 상기 동작의 발생을 확인하는 연결 확인부; 및
    상기 동작이 발생하는 경우, 상기 동작과 관련하여 생성되는 스레드를 종료시키는 종료부
    를 포함하는, 컴퓨터 시스템.
  4. 제2항 또는 제3항에 있어서,
    상기 파라미터는 타겟 프로세스, 생성될 스레드가 실행할 함수 및 스레드가 실행할 함수의 파라미터를 포함하는,
    컴퓨터 시스템.
  5. 제1항에 있어서,
    상기 차단부는,
    상기 동작과 관련하여 생성되는 스레드를 종료시켜 상기 연결을 차단하는, 컴퓨터 시스템.
  6. 제1항에 있어서,
    사용자의 입력에 따라 상기 모니터링부의 동작 여부를 결정하는 인터페이스부
    를 더 포함하는 컴퓨터 시스템.
  7. 제1항에 있어서,
    상기 동작의 발생과 관련된 정보를 출력 장치를 통해 출력하는 인터페이스부
    를 더 포함하는 컴퓨터 시스템.
  8. 제1항에 있어서,
    상기 실행 가능한 코드 라이브러리는 동적 링크 라이브러리(Dynamic-Link Library)를 포함하는, 컴퓨터 시스템.
  9. 컴퓨터 시스템에서 라이브러리 삽입 공격을 방지하는 방법에 있어서,
    제1 프로세스가 실행 가능한 코드 라이브러리를 제2 프로세스에 동적으로 연결하려는 라이브러리 삽입 공격을 모니터링하는 단계; 및
    상기 라이브러리 삽입 공격이 발생하는 경우, 상기 실행 가능한 코드 라이브러리의 연결을 차단하는 단계
    를 포함하고,
    상기 모니터링하는 단계는,
    상기 제1 프로세스가 상기 제2 프로세스에 스레드를 생성시키는 동작을 판단하는 단계; 및
    상기 생성될 스레드에 의해 실행될 함수가 코드 라이브러리 로드 함수인 지를 확인함으로써, 상기 라이브러리 삽입 공격이 발생한 것으로 확인하는 단계
    를 포함하며,
    상기 확인하는 단계는,
    상기 제2 프로세스가 상기 제1 프로세스와 다른 지 여부 및 상기 스레드에 의해 실행될 함수의 파라미터가 상기 실행 가능한 코드 라이브러리의 이름인 지 여부를 확인하는 단계
    를 포함하는 라이브러리 삽입 공격 방지 방법.
  10. 제9항에 있어서,
    상기 동작을 모니터링하는 단계는,
    스레드 생성 함수의 호출 여부를 감시하는 단계;
    상기 스레드 생성 함수가 호출되는 시점에 함수 후킹을 통해 실행될 함수의 파라미터를 통해 상기 동작의 발생을 확인하는 단계
    를 포함하는, 라이브러리 삽입 공격 방지 방법.
  11. 제9항에 있어서,
    상기 동작을 모니터링하는 단계는,
    스레드 생성 함수의 호출 여부를 감시하는 단계
    를 포함하고,
    상기 연결을 차단하는 단계는
    상기 스레드 생성 함수가 호출되는 시점에 함수 후킹을 통해 실행될 함수의 파라미터를 통해 상기 동작의 발생을 확인하는 단계; 및
    상기 동작이 발생하는 경우, 상기 동작과 관련하여 생성되는 스레드를 종료시키는 단계
    를 포함하는, 라이브러리 삽입 공격 방지 방법.
  12. 제10항 또는 제11항에 있어서,
    상기 파라미터는 타겟 프로세스, 생성될 스레드가 실행할 함수 및 스레드가 실행할 함수의 파라미터를 포함하는,
    라이브러리 삽입 공격 방지 방법.
  13. 제9항에 있어서,
    상기 연결을 차단하는 단계는,
    상기 동작과 관련하여 생성되는 스레드를 종료시켜 상기 연결을 차단하는 단계
    를 포함하는, 라이브러리 삽입 공격 방지 방법.
  14. 제9항에 있어서,
    사용자의 입력에 따라 상기 동작의 모니터링 여부를 결정하는 단계
    를 더 포함하는 라이브러리 삽입 공격 방지 방법.
  15. 제9항에 있어서,
    상기 동작의 발생과 관련된 정보를 출력 장치를 통해 출력하는 단계
    를 더 포함하는 라이브러리 삽입 공격 방지 방법.
  16. 제9항 내지 제11항 또는 제13항 내지 제15항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록 매체.
KR1020100004506A 2010-01-18 2010-01-18 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법 KR101671795B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100004506A KR101671795B1 (ko) 2010-01-18 2010-01-18 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법
US12/885,695 US8966511B2 (en) 2010-01-18 2010-09-20 Computer system and method for preventing dynamic-link library injection attack

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100004506A KR101671795B1 (ko) 2010-01-18 2010-01-18 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20110084775A KR20110084775A (ko) 2011-07-26
KR101671795B1 true KR101671795B1 (ko) 2016-11-03

Family

ID=44278504

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100004506A KR101671795B1 (ko) 2010-01-18 2010-01-18 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법

Country Status (2)

Country Link
US (1) US8966511B2 (ko)
KR (1) KR101671795B1 (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 (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9734333B2 (en) * 2012-04-17 2017-08-15 Heat Software Usa Inc. Information security techniques including detection, interdiction and/or mitigation of memory injection attacks
CN103839002A (zh) * 2012-11-21 2014-06-04 腾讯科技(深圳)有限公司 网站源代码恶意链接注入监控方法及装置
GB2510641A (en) * 2013-02-12 2014-08-13 F Secure Corp Detecting suspicious code injected into a process if function call return address points to suspicious memory area
CN103679024B (zh) * 2013-11-19 2015-03-25 百度在线网络技术(北京)有限公司 病毒的处理方法及设备
CN106203087B (zh) * 2015-04-29 2020-04-28 腾讯科技(深圳)有限公司 注入防护方法、系统、终端以及存储介质
RU2589862C1 (ru) * 2015-06-30 2016-07-10 Закрытое акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносного кода в оперативной памяти
CN105824649B (zh) * 2016-06-08 2019-04-09 珠海豹趣科技有限公司 确定驱动应用程序安装是否成功的方法、装置及电子设备
US10235161B2 (en) * 2017-02-06 2019-03-19 American Megatrends, Inc. Techniques of adding security patches to embedded systems
US11513840B2 (en) * 2018-05-07 2022-11-29 Micron Technology, Inc. Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor
CN110321703A (zh) * 2019-07-02 2019-10-11 北京智游网安科技有限公司 一种检测应用程序非法入侵的方法、存储介质及终端设备
US11481482B2 (en) * 2019-09-09 2022-10-25 Mcafee, Llc Securing an application framework from shared library sideload vulnerabilities
KR102545488B1 (ko) * 2021-04-22 2023-06-20 명지대학교 산학협력단 Dll 인젝션을 탐지하는 산업제어시스템의 보안 관리 방법

Family Cites Families (35)

* 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
US6550060B1 (en) 1999-04-08 2003-04-15 Novadigm, Inc. Method and system for dynamic injection of dynamic link libraries into a windowed operating system
US20030159070A1 (en) * 2001-05-28 2003-08-21 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
WO2003058451A1 (en) * 2002-01-04 2003-07-17 Internet Security Systems, Inc. System and method for the managed security control of processes on a computer system
US7653900B2 (en) 2004-04-22 2010-01-26 Blue Coat Systems, Inc. System and method for remote application process control
US7971255B1 (en) * 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
US7814471B2 (en) * 2004-12-16 2010-10-12 Microsoft Corporation Method and apparatus for providing DLL compatibility
EP1684151A1 (en) * 2005-01-20 2006-07-26 Grant Rothwell William Computer protection against malware affection
US7490352B2 (en) * 2005-04-07 2009-02-10 Microsoft Corporation Systems and methods for verifying trust of executable files
US7735136B2 (en) * 2005-04-18 2010-06-08 Vmware, Inc. 0-touch and 1-touch techniques for improving the availability of computer programs under protection without compromising security
US7707558B2 (en) * 2005-06-10 2010-04-27 Symantec Corporation Operating system loader modification
US20070240212A1 (en) * 2006-03-30 2007-10-11 Check Point Software Technologies, Inc. System and Methodology Protecting Against Key Logger Spyware
WO2007117567A2 (en) * 2006-04-06 2007-10-18 Smobile Systems Inc. Malware detection system and method for limited access mobile platforms
US8528087B2 (en) * 2006-04-27 2013-09-03 Robot Genius, Inc. Methods for combating malicious software
US20080022378A1 (en) * 2006-06-21 2008-01-24 Rolf Repasi Restricting malicious libraries
US7870612B2 (en) * 2006-09-11 2011-01-11 Fujian Eastern Micropoint Info-Tech Co., Ltd Antivirus protection system and method for computers
KR20080030909A (ko) * 2006-10-02 2008-04-07 주식회사 베스트디지탈 소프트웨어 모듈 모니터링 방법 및 소프트웨어 모듈 실행후 시스템을 복원하는 방법
KR100875997B1 (ko) 2006-11-13 2008-12-24 한국전자통신연구원 윈도우 소켓 응용프로그램 인터페이스 후킹을 이용한네트워크 퍼징 방법
US8127316B1 (en) * 2006-11-30 2012-02-28 Quest Software, Inc. System and method for intercepting process creation events
US7865914B2 (en) * 2007-03-29 2011-01-04 Microsoft Corporation Cooperative DLL unload
AU2008202532A1 (en) * 2007-06-18 2009-01-08 Pc Tools Technology Pty Ltd Method of detecting and blocking malicious activity
US8065728B2 (en) * 2007-09-10 2011-11-22 Wisconsin Alumni Research Foundation Malware prevention system monitoring kernel events
US7620992B2 (en) * 2007-10-02 2009-11-17 Kaspersky Lab Zao System and method for detecting multi-component malware
CN101350052B (zh) * 2007-10-15 2010-11-03 北京瑞星信息技术有限公司 发现计算机程序的恶意行为的方法和装置
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
US20090165132A1 (en) * 2007-12-21 2009-06-25 Fiberlink Communications Corporation System and method for security agent monitoring and protection
US8209757B1 (en) * 2008-03-06 2012-06-26 Symantec Corporation Direct call into system DLL detection system and method
US8239836B1 (en) * 2008-03-07 2012-08-07 The Regents Of The University Of California Multi-variant parallel program execution to detect malicious code injection
US20130276119A1 (en) * 2008-03-11 2013-10-17 Jonathan L. Edwards System, method, and computer program product for reacting to a detection of an attempt by a process that is unknown to control a process that is known
KR100961149B1 (ko) * 2008-04-22 2010-06-08 주식회사 안철수연구소 악성 사이트 검사 방법, 악성 사이트 정보 수집 방법,장치, 시스템 및 컴퓨터 프로그램이 기록된 기록매체
US7472420B1 (en) * 2008-04-23 2008-12-30 Kaspersky Lab, Zao Method and system for detection of previously unknown malware components
US8225406B1 (en) * 2009-03-31 2012-07-17 Symantec Corporation Systems and methods for using reputation data to detect shared-object-based security threats
US8205257B1 (en) * 2009-07-28 2012-06-19 Symantec Corporation Systems and methods for preventing threats originating from a non-process based component hosted by a trusted process
US8484753B2 (en) * 2009-12-02 2013-07-09 Mcafee, Inc. Hooking nonexported functions by the offset of the function
US8739283B1 (en) * 2009-12-07 2014-05-27 Trend Micro, Inc. Automatic generation of malware clean pattern

Cited By (2)

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

Also Published As

Publication number Publication date
US20110179430A1 (en) 2011-07-21
KR20110084775A (ko) 2011-07-26
US8966511B2 (en) 2015-02-24

Similar Documents

Publication Publication Date Title
KR101671795B1 (ko) 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법
JP6706273B2 (ja) インタープリタ仮想マシンを用いた挙動マルウェア検出
KR102307534B1 (ko) 다수 소프트웨어 개체들에 걸쳐서 악성 행동을 트래킹하기 위한 시스템들 및 방법들
CN106991324B (zh) 一种基于内存保护类型监控的恶意代码跟踪识别方法
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
CN102651061B (zh) 用于检测复杂恶意软件的系统和方法
US8117660B2 (en) Secure control flows by monitoring control transfers
EP2426618B1 (en) Information device, program, method for preventing execution of unauthorized program code, and computer readable recording medium
US20140289851A1 (en) Malware Discovery Method and System
US9600665B2 (en) Monitoring device and monitoring method
CN107330328B (zh) 防御病毒攻击的方法、装置及服务器
JP2009064414A (ja) 非正常プロセスの探知方法及び装置
JP2010262609A (ja) 効率的なマルウェアの動的解析手法
US10055251B1 (en) Methods, systems, and media for injecting code into embedded devices
KR101974989B1 (ko) 위험 파일에 대응하는 행위 정보를 결정하는 방법 및 장치
CN105426751A (zh) 一种防止篡改系统时间的方法及装置
CN110717181B (zh) 基于新型程序依赖图的非控制数据攻击检测方法及装置
KR101500512B1 (ko) 데이터 프로세싱 시스템 보안 장치와 보안방법
KR101428915B1 (ko) 안드로이드 보안을 위한 피드백 기반 어플리케이션 재가공 프레임워크 방법과 그 시스템
KR100985071B1 (ko) 스크립트 언어를 사용한 취약점 공격 코드의 실시간 탐지및 차단 방법, 및 그 장치
KR20110057297A (ko) 악성 봇 동적 분석 시스템 및 방법
KR20090054359A (ko) 악성코드 자동실행 차단 장치 및 방법
CN111259392B (zh) 一种基于内核模块的恶意软件拦截方法及装置
KR20230025144A (ko) 바이너리 정적 분석을 통해 얻은 타입 정보를 활용하는 윈도우 커널 퍼징 기법
CN108647512B (zh) 终端安全控制方法、装置和计算机可读存储介质

Legal Events

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

Payment date: 20190910

Year of fee payment: 4