KR102344966B1 - 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법 - Google Patents

파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법 Download PDF

Info

Publication number
KR102344966B1
KR102344966B1 KR1020200148001A KR20200148001A KR102344966B1 KR 102344966 B1 KR102344966 B1 KR 102344966B1 KR 1020200148001 A KR1020200148001 A KR 1020200148001A KR 20200148001 A KR20200148001 A KR 20200148001A KR 102344966 B1 KR102344966 B1 KR 102344966B1
Authority
KR
South Korea
Prior art keywords
hidden
interface
interfaces
flag
file
Prior art date
Application number
KR1020200148001A
Other languages
English (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 KR1020200148001A priority Critical patent/KR102344966B1/ko
Application granted granted Critical
Publication of KR102344966B1 publication Critical patent/KR102344966B1/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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • 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

Landscapes

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

Abstract

본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법은, 파일 기반 기만 기술(file based deception technology)을 기반으로, 호스트 시스템(host system)에 접근할 때 이용되는 복수개의 인터페이스(interface)와 시스템 정보에 설정되어 있는 플래그(flag)를 이용하여, 호스트 시스템에 요청되는 리퀘스트(request)를 통해 호스트 시스템에 대한 공격(attack)을 탐지함으로써, 파일 기반 기만 기술의 존재를 알고 있는 공격자들의 공격도 탐지할 수 있다.

Description

파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법{Apparatus and method for detecting attacks using file based deception technology}
본 발명은 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법에 관한 것으로서, 더욱 상세하게는 기만 기술(deception technology)을 이용하여 호스트 시스템(host system)에 대한 공격(attack)을 탐지하는, 장치 및 방법에 관한 것이다.
기만 기술(deception technology)은 허니팟(honeypot)의 확장된 개념으로, 공격자를 기만하여 공격을 탐지, 방지, 또는 지연시키는 기술을 의미한다. 기만 기술은 네트워크 포트, 서비스, 프로세스, 시스템 콜, 데이터베이스 등에 폭넓게 적용되어 왔다. 이중에서도 허니파일(honeyfile)은 가짜 파일을 이용하여 공격자가 가짜 파일을 접근하는 순간 공격의 징후로 탐지하는 기술이다. 공격자가 호스트에 침입하여 가장 먼저 하는 일 중 하나는 시스템의 파일들을 읽어 보며 호스트에 대한 정보를 수집하는 일이다. 공격자의 입장에서 볼 때, 시스템의 파일을 전혀 읽거나 쓰지 않고 공격을 수행하기는 거의 불가능하다. 따라서, 가짜 파일을 이용하여 공격을 탐지하면, 기존의 시그니처-기반 침입 탐지 시스템(signature-based intrusion detection system)에서 감지하기 어려운 제로-데이 공격(0-day attack)이나 지능형 지속 공격(advanced persistent threat)도 효과적으로 탐지할 수 있다.
그러나, 파일 기반 기만 기술을 비롯한 종래의 기만 기술의 공통적인 문제점은 기만 기술의 존재가 공격자에게 알려지면 더이상 효과가 없다는 것이다. 기만 기술은 공격자를 속여서 공격을 탐지, 지연 또는 방지하는 기술인데, 이러한 기술의 존재를 알고 있는 공격자는 더이상 기만 기술에 속지 않고 회피할 방법을 찾을 수 있다.
본 발명이 이루고자 하는 목적은, 파일 기반 기만 기술(file based deception technology)을 기반으로, 호스트 시스템(host system)에 접근할 때 이용되는 복수개의 인터페이스(interface)와 시스템 정보에 설정되어 있는 플래그(flag)를 이용하여, 호스트 시스템에 요청되는 리퀘스트(request)를 통해 호스트 시스템에 대한 공격(attack)을 탐지하는, 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법을 제공하는 데 있다.
본 발명의 명시되지 않은 또 다른 목적들은 하기의 상세한 설명 및 그 효과로부터 용이하게 추론할 수 있는 범위 내에서 추가적으로 고려될 수 있다.
상기의 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 장치는, 호스트 시스템(host system)의 복수개의 인터페이스(interface) 중에서 유저 계정(user account)에 대응되는 인터페이스를 통해 상기 호스트 시스템에 액세스(access)하기 위한 리퀘스트(request)를 수신하는 수신부; 및 상기 리퀘스트가 수신되는 인터페이스에 대해, 상기 리퀘스트에 따른 시스템 정보에 설정된 플래그(flag)를 기반으로, 상기 호스트 시스템에 대한 공격(attack)을 탐지하는 탐지부;를 포함하며, 상기 시스템 정보는, 상기 호스트 시스템 내의 디렉토리(directory) 및 실행가능한 것들(executable) 중 하나이고, 상기 복수개의 인터페이스는, 레귤러 인터페이스(regular interface) 및 복수개의 히든 인터페이스(hidden interface)를 포함하며, 상기 유저 계정은, 상기 복수개의 인터페이스 중에서 하나가 할당되고, 상기 플래그(flag)는, 상기 복수개의 인터페이스 각각에 대하여, 상기 시스템 정보별로 설정되며, 실행가능한 것의 읽기 동작 시 알람(alarm)을 발생하는 플래그 r, 실행가능한 것의 쓰기 동작 시 알람을 발생하는 플래그 w, 시스템 정보를 히든 인터페이스로부터 숨기는 것인 플래그 h, 및 실행가능한 것의 실행 동작 시 알람을 발생하는 플래그 x 중 적어도 하나이며, 상기 호스트 시스템의 시스템 콜(system call) 중에서 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜에서 상기 플래그를 체크한다.
여기서, 상기 복수개의 히든 인터페이스는, 파라미터(parameter)로 유저 공간(user space)에 대한 포인터(pointer)를 취하는 복수개의 시스템 콜을 이용하여 구현될 수 있다.
여기서, 상기 복수개의 히든 인터페이스는, read 시스템 콜, write 시스템 콜 및 pread 시스템 콜을 이용하여 구현될 수 있다.
여기서, 상기 복수개의 히든 인터페이스 각각은, 서로 다른 시그니처(signature)와 인터페이스 인덱스(interface index)가 할당되며, 상기 탐지부는, 시그니처 매칭을 통해 히든 인터페이스의 호출 여부를 판단하고, 인터페이스 인덱스를 통해 상기 복수개의 히든 인터페이스 중에서 어떤 히든 인터페이스가 이용되는지를 판단할 수 있다.
여기서, 상기 리퀘스트의 타입은, change flags, read flags, read, write, pread, read a directory, pwrite, execve, mmap, memfd_create, rename, 및 unlink 중 하나일 수 있다.
여기서, 상기 복수개의 히든 인터페이스 각각은, 서로 다른 히든 디렉토리가 할당되며, 상기 히든 디렉토리의 전체 명칭은, 미리 설정된 스트링(string)으로 변경되어 있을 수 있다.
여기서, 상기 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜은, read 시스템 콜, write 시스템 콜, getdents 시스템 콜, pread 시스템 콜, pwrite 시스템 콜, execve 시스템 콜, mmap 시스템 콜, memfd_create 시스템 콜, rename 시스템 콜, 및 unlink 시스템 콜일 수 있다.
상기의 목적을 달성하기 위한 본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 방법은, 호스트 시스템(host system)에 대한 공격(attack)을 탐지하는 공격 탐지 장치에서 수행되는 공격 탐지 방법으로서, 상기 호스트 시스템의 복수개의 인터페이스(interface) 중에서 유저 계정(user account)에 대응되는 인터페이스를 통해 상기 호스트 시스템에 액세스(access)하기 위한 리퀘스트(request)를 수신하는 단계; 및 상기 리퀘스트가 수신되는 인터페이스에 대해, 상기 리퀘스트에 따른 시스템 정보에 설정된 플래그(flag)를 기반으로, 상기 호스트 시스템에 대한 공격을 탐지하는 단계;를 포함하며, 상기 시스템 정보는, 상기 호스트 시스템 내의 디렉토리(directory) 및 실행가능한 것들(executable) 중 하나이고, 상기 복수개의 인터페이스는, 레귤러 인터페이스(regular interface) 및 복수개의 히든 인터페이스(hidden interface)를 포함하며, 상기 유저 계정은, 상기 복수개의 인터페이스 중에서 하나가 할당되고, 상기 플래그(flag)는, 상기 복수개의 인터페이스 각각에 대하여, 상기 시스템 정보별로 설정되며, 실행가능한 것의 읽기 동작 시 알람(alarm)을 발생하는 플래그 r, 실행가능한 것의 쓰기 동작 시 알람을 발생하는 플래그 w, 시스템 정보를 히든 인터페이스로부터 숨기는 것인 플래그 h, 및 실행가능한 것의 실행 동작 시 알람을 발생하는 플래그 x 중 적어도 하나이며, 상기 호스트 시스템의 시스템 콜(system call) 중에서 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜에서 상기 플래그를 체크한다.
여기서, 상기 복수개의 히든 인터페이스는, 파라미터(parameter)로 유저 공간(user space)에 대한 포인터(pointer)를 취하는 복수개의 시스템 콜을 이용하여 구현될 수 있다.
여기서, 상기 복수개의 히든 인터페이스 각각은, 서로 다른 시그니처(signature)와 인터페이스 인덱스(interface index)가 할당되며, 상기 탐지 단계는, 시그니처 매칭을 통해 히든 인터페이스의 호출 여부를 판단하고, 인터페이스 인덱스를 통해 상기 복수개의 히든 인터페이스 중에서 어떤 히든 인터페이스가 이용되는지를 판단하는 것으로 이루어질 수 있다.
여기서, 상기 복수개의 히든 인터페이스 각각은, 서로 다른 히든 디렉토리가 할당되며, 상기 히든 디렉토리의 전체 명칭은, 미리 설정된 스트링(string)으로 변경되어 있을 수 있다.
여기서, 상기 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜은, read 시스템 콜, write 시스템 콜, getdents 시스템 콜, pread 시스템 콜, pwrite 시스템 콜, execve 시스템 콜, mmap 시스템 콜, memfd_create 시스템 콜, rename 시스템 콜, 및 unlink 시스템 콜일 수 있다.
상기의 기술적 과제를 달성하기 위한 본 발명의 바람직한 실시예에 따른 컴퓨터 프로그램은 컴퓨터로 읽을 수 있는 기록 매체에 저장되어 상기한 파일 기반 기만 기술을 이용한 공격 탐지 방법 중 어느 하나를 컴퓨터에서 실행시킨다.
본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법에 의하면, 파일 기반 기만 기술(file based deception technology)을 기반으로, 호스트 시스템(host system)에 접근할 때 이용되는 복수개의 인터페이스(interface)와 시스템 정보에 설정되어 있는 플래그(flag)를 이용하여, 호스트 시스템에 요청되는 리퀘스트(request)를 통해 호스트 시스템에 대한 공격(attack)을 탐지함으로써, 파일 기반 기만 기술의 존재를 알고 있는 공격자들의 공격도 탐지할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 장치를 설명하기 위한 블록도이다.
도 2는 종래의 PhantomFS를 설명하기 위한 도면이다.
도 3은 종래의 PhantomFS의 의사코드(pseudocode)를 나타내는 도면이다.
도 4는 본 발명의 바람직한 실시예에 따른 extended PhantomFS를 설명하기 위한 도면이다.
도 5는 본 발명의 바람직한 실시예에 따른 extended PhantomFS의 의사코드(pseudocode)를 나타내는 도면이다.
도 6은 본 발명의 바람직한 실시예에 따른 플래그(flag)를 저장하는 데이터 구조의 일례를 설명하기 위한 도면이다.
도 7은 본 발명의 바람직한 실시예에 따른 read 시스템 콜을 이용한 복수개의 히든 인터페이스의 구현 예시를 설명하기 위한 도면이다.
도 8은 본 발명의 바람직한 실시예에 따른 extended PhantomFS의 성능을 설명하기 위한 도면으로, 응답 시간(response time)을 나타낸다.
도 9는 본 발명의 바람직한 실시예에 따른 extended PhantomFS의 성능을 설명하기 위한 도면으로, 처리량(throughput)을 나타낸다.
도 10은 본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 방법을 설명하기 위한 흐름도이다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 명세서에서 "제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
본 명세서에서 각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 명세서에서, "가진다", "가질 수 있다", "포함한다" 또는 "포함할 수 있다"등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
또한, 본 명세서에 기재된 '~부'라는 용어는 소프트웨어 또는 FPGA(field-programmable gate array) 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터 구조들 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다.
이하에서 첨부한 도면을 참조하여 본 발명에 따른 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법의 바람직한 실시예에 대해 상세하게 설명한다.
먼저, 도 1을 참조하여 본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 장치에 대하여 설명한다.
도 1은 본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 장치를 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 장치(100)는 파일 기반 기만 기술(file based deception technology)을 기반으로, 호스트 시스템(host system)에 접근할 때 이용되는 복수개의 인터페이스(interface)와 시스템 정보에 설정되어 있는 플래그(flag)를 이용하여, 호스트 시스템에 요청되는 리퀘스트(request)를 통해 호스트 시스템에 대한 공격(attack)을 탐지한다.
여기서, 시스템 정보는 호스트 시스템 내의 디렉토리(directory) 및 실행가능한 것들(executable) 중 하나를 말한다. 실행가능한 것들은 exe 파일, dll 파일 등과 같이 호스트 시스템 내에서 특정 기능을 위해 실행되는 바이너리를 말한다.
그리고, 복수개의 인터페이스는 레귤러 인터페이스(regular interface) 및 복수개의 히든 인터페이스(hidden interface)를 포함한다. 이때, 복수개의 히든 인터페이스는 파라미터(parameter)로 유저 공간(user space)에 대한 포인터(pointer)를 취하는 복수개의 시스템 콜을 이용하여 구현될 수 있다. 즉, 복수개의 히든 인터페이스는 read 시스템 콜, write 시스템 콜 및 pread 시스템 콜을 이용하여 구현될 수 있다. 그리고, 복수개의 히든 인터페이스 각각은 서로 다른 히든 디렉토리가 할당될 수 있다. 이때, 히든 디렉토리의 전체 명칭은 미리 설정된 스트링(string)으로 변경되어 있을 수 있다.
그리고, 유저 계정은 복수개의 인터페이스 중에서 하나가 할당된다. 예컨대, 관리자 계정에는 제1 히든 인터페이스가 할당되고, 웹 마스터 계정에는 제2 히든 인터페이스가 할당되며, 일반적인 유저 계정에는 레귤러 인터페이스가 할당될 수 있다.
그리고, 플래그는 복수개의 인터페이스 각각에 대하여, 시스템 정보(디렉토리, 실행가능한 것)별로 설정된다. 플래그는 플래그 r, 플래그 w, 플래그 h, 및 플래그 x 중 적어도 하나이다. 플래그 r은 실행가능한 것의 읽기 동작 시 알람(alarm)을 발생하는 플래그이다. 플래그 w는 실행가능한 것의 쓰기 동작 시 알람을 발생하는 플래그이다. 플래그 h는 시스템 정보(디렉토리, 실행가능한 것)를 히든 인터페이스로부터 숨기는 플래그이다. 플래그 x는 실행가능한 것의 실행 동작 시 알람을 발생하는 플래그이다.
이를 위해, 공격 탐지 장치(100)는 수신부(110) 및 탐지부(130)를 포함할 수 있다.
수신부(110)는 호스트 시스템의 복수개의 인터페이스 중에서 유저 계정(user account)에 대응되는 인터페이스를 통해 호스트 시스템에 액세스(access)하기 위한 리퀘스트를 수신할 수 있다.
여기서, 리퀘스트의 타입은 change flags, read flags, read, write, pread, read a directory, pwrite, execve, mmap, memfd_create, rename, 및 unlink 중 하나일 수 있다.
탐지부(130)는 리퀘스트가 수신되는 인터페이스에 대해, 리퀘스트에 따른 시스템 정보에 설정된 플래그를 기반으로, 호스트 시스템에 대한 공격을 탐지할 수 있다.
이때, 호스트 시스템의 시스템 콜(system call) 중에서 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜에서 플래그를 체크한다. 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜은 read 시스템 콜, write 시스템 콜, getdents 시스템 콜, pread 시스템 콜, pwrite 시스템 콜, execve 시스템 콜, mmap 시스템 콜, memfd_create 시스템 콜, rename 시스템 콜, 및 unlink 시스템 콜을 말한다.
여기서, 탐지부(130)는 시그니처 매칭(signature)을 통해 히든 인터페이스의 호출 여부를 판단하고, 인터페이스 인덱스(interface index)를 통해 복수개의 히든 인터페이스 중에서 어떤 히든 인터페이스가 이용되는지를 판단할 수 있다. 이때, 복수개의 히든 인터페이스 각각에는 서로 다른 시그니처와 인터페이스 인덱스가 할당되어 있다.
한편, 본 발명에 따른 공격 감지 장치(100)가 수신부(110)와 탐지부(130)로 이루어지는 것을 설명하였으나, 이는 기능상의 구분으로 본 발명은 이에 한정되지 않고, 실시예에 따라 다양한 방식으로 구현될 수 있다. 예컨대, 본 발명에 따른 공격 탐지 장치(100)는 호스트 시스템 상에 소프트웨어 형태로 구현될 수 있다. 즉, 호스트 시스템에서 이용하는 라이브러리(library) 자체를 수정하여 본 발명이 구현되도록 할 수 있다.
그러면, 도 2 내지 도 9를 참조하여 본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 동작에 대하여 보다 자세하게 설명한다.
먼저, 원래의 파일 기반 기만 기술인 PhantomFS에 대하여 간략히 설명한다. 그런 다음, 위협 모델(threat model)과 공격 표면(attack surface)에 대해 설명한다. 이후, 본 발명에 따른 방어 전략(defense strategy)을 설명한 다음, 이의 예시에 대하여 설명한다. 그런 다음, 본 발명에 따른 extended PhantomFS에 의해 방어 전략이 어떻게 실현되는지를 설명한다. 마지막으로, 본 발명에 따른 extended PhantomFS의 실험 결과에 대하여 설명한다.
종래의 파일 기반 기만 기술(PhantomFS)
도 2는 종래의 PhantomFS를 설명하기 위한 도면이고, 도 3은 종래의 PhantomFS의 의사코드(pseudocode)를 나타내는 도면이다.
PhantomFS의 목표는 전통적인 침입 탐지 시스템에 의해 탐지되지 않으면서 호스트(host)에 액세스(access)할 수 있는 공격자들을 유혹하는 것이다. PhantomFS는 이와 같은 공격자들을 좌절시키기 위해 추가적인 보안 장벽(security barrier)을 제공한다.
PhantomFS은 레귤러 인터페이스(regular interface)외에 히든 인터페이스(hidden interface)를 제공한다. 도 2에 도시된 바와 같이, 레귤러 인터페이스를 통해 파일들에 액세스하는, PhantomFS를 인식하지 못하는, 공격자들과는 달리, 정당한 유저들과 어플리케이션들은 히든 인터페이스를 사용한다. 공격자들이 레귤러 인터페이스를 통해 플래그(flag)가 설정된 파일을 액세스하면, 관리자에게 잠재적인 침입으로 리포트된다. 관리자들은 레귤러 인터페이스로부터 민감한 파일들을 숨길 수 있다. 히든 인터페이스를 통해, 정당한 유저들은 알람을 트리거하지 않으면서 파일들에 액세스할 수 있고, 이는 오경보(false alarm)들을 감소시킨다. 가짜 파일(fake file)들에 의해 발생되는 오경보들을 제거하기 위해 가짜 파일들은 히든 인터페이스로부터 숨겨질 수 있다.
PhantomFS는 아래의 [표 1]과 같이, 각각의 파일들에 대해 4개의 부가적인 플래그들을 유지할 수 있다. 플래그 h는 레귤러 인터페이스로부터 파일을 숨기기 위한 것이다. 민감한 파일들은 이 플래그를 이용하여 숨겨질 수 있다. 플래그 r 또는 w가 설정되면, 레귤러 인터페이스를 통해 파일이 읽어지거나 수정되면 관리자에게 리포트된다. 플래그 f는 히든 인터페이스로부터 파일을 숨기기 위한 것이다. 플래그들은 또한 디렉토리들에 대해서도 이용될 수 있다.
Flag Meaning
h Hidden from the regular interface
r Report if this file is read
w Report if this file is written
f Hidden from the hidden interface
PhantomFS는 존재하는 액세스 제어 매커니즘들로부터 독립적으로 동작한다. 플래그 h가 설정된 파일이 보여지지 않더라도, 이의 경로(path)가 알려지면 이는 여전히 액세스될 수 있다. 플래그들 r 및 w는 액세스 퍼미션(access permission)에 있어 직교(orthogonal)한다. 이러한 플래그들의 설정은 공격자들이 파일에 액세스하는 것을 예방하지 못한다.
4개의 플래그들은 그들의 대응되는 시스템 콜(system call)에 의해 체크된다. 리눅스에서, 파일들의 리스트는 getdents 시스템 콜을 통해 읽어지고, 파일은 read 및 write 시스템 콜들을 통해 읽어지고 수정된다. getdents가 파일들의 리스트를 리턴하기 전에, 플래그 h가 설정된 파일들은 그들을 숨기기 위해 제거된다. read 및 write 시스템 콜들은 플래그 r 또는 w가 설정된 파일이 요청되면 알람을 보낸다.
히든 인터페이스는 read 시스템 콜을 이용하여 구현된다. 호출자는 원래 커널(kernel)로부터 데이터를 수신하는데 이용되는, 버퍼(buffer)에 포인터(pointer)를 제공한다. read 시스템 콜이 히든 인터페이스로 사용될 때, 데이터 구조는 버퍼에 저장된다. read 시스템 콜이 호출될 때, 버퍼의 처음 4개 워드들(first four words)을 읽는다. 그들이 미리-정의된 시그니처(signature)와 매칭이 되면, 시스템 콜은 히든 인터페이스로 호출된 것을 의미한다. 매칭되지 않으면, 레귤러 read 시스템 콜이 호출된 것을 의미한다.
히든 인터페이스는 시스템 콜들에 대응되는, getdents, read, 및 write 리퀘스트(request)를 지원한다. 추가적으로, 이는 PhantomFS 플래그들을 읽거나 변경하는 리퀘스트를 처리할 수 있다. 리퀘스트를 처리하는데 필요한 정보는 버퍼에 시그니처 이후에 저장된다. 요약하면, 수정된 시스템 콜들의 의사코드(pseudocode)는 도 3에 도시된 바와 같다.
정당한 어플리케이션들은 히든 인터페이스를 이용하기 위해 수정될 필요가 있다. 어플리케이션들은 직접 시스템 콜들을 호출하는 것 대신에 보통 라이브러리 내의 래퍼 함수(wrapper function)들을 호출한다. 리눅스 어플리케이션들의 대부분은 파일에 액세스하기 위해 표준 glibc 라이브러리를 이용한다. 따라서, 히든 인터페이스를 이용하는, 수정된 라이브러리가 제공되고, 정당한 어플리케이션들은 이것과 링크될 필요가 있다. 표준 라이브러리는 보통 동적으로 링크된다. 이 경우, 라이브러리는 라이브러리의 경로를 변경하는 것에 의해 변경될 수 있다.
정당한 유저들은 히든 인터페이스를 이용하는 정당한 어플리케이션들을 이용하게 된다. 정당한 유저들이 실수로 오경보들을 트리거하는 것을 예방하기 위해, 다음의 접근 방식(approach)이 이용된다. 정당한 어플리케이션들은 동일한 이름을 유지하면서 히든 디렉토리에 위치한다. 예컨대, 정당한 ls는 히든 디렉토리인, /PhantomFS_HiddenDir_123qweASD에 위치할 수 있다. 레귤러 인터페이스를 이용하는, 원래의 ls는 여전히 /bin에 위치한다. 유저가 ls를 실행하고, 원래의 ls가 이용되면, 오경보들을 트리거할 수 있다. 그러나, 유저가 검색 경로를 히든 디렉토리로 변경하면, 유저는 마치 변경이 되지 않은 것처럼 ls를 이용할 수 있다. 히든 디렉토리는 레귤러 인터페이스로부터 숨겨지기 위해 플래그 h가 설정될 수 있다. 따라서, 히든 디렉토리의 정확한 경로를 아는 유저들은 이에 액세스할 수 있지만, 이를 알지 못하는 공격자들은 액세스할 수 없다. 또한, 수정된 라이브러리는 히든 디렉토리에 있을 수 있다. 히든 경로는 패스워드와 유사한 역할을 수행한다. 정당한 유저는 이를 안전하게 유지하여야 한다.
공격 표면(attack surface)
공격자들이 본 발명에 따른 extended PhantomFS를 인식하고 있는 경우의 잠재적인 공격 표면을 분석한다. 이를 하기 위해, 먼저 그들의 능력에 따라 공격자들을 분류하고, 그런 다음 공격 표면들에 대해 분석한다.
A. 위협 모델(threat model)
extended PhantomFS는 침입 탐지 시스템들을 회피하여 성공적으로 호스트에 액세스할 수 있는 공격자들을 유혹하는 것을 목표로 한다. 그들은 취약점들을 이용하는 것에 의해 관리적 특권을 획득할 수 있다. 그들은 셸(shell)을 런칭하고 존재하는 유틸리티(utility)들을 실행하는 것을 성공할 수 있다. 그들은 또한 호스트에 해킹 툴을 설치할 수 있다. 그들은 취약점들을 이용하는 것에 의해 정당한 어플리케이션에 악의적 코드를 주입할 수 있다.
extended PhantomFS는 커널에 구현되기 때문에, 본 발명은 커널-레벨 멀웨어(루트킷들)는 상정하고 있지 않다. 루트킷(rootkit)이 존재한다면, extended PhantomFS의 정확한 동작은 보증될 수 없다.
종래의 PhantomFS는 공격자들이 PhantomFS에 대하여 어떤것도 알지 못하고 있다고 상정한다. 그들은 히든 인터페이스의 존재와 히든 경로의 위치를 알지 못한다. 정당한 어플리케이션들과 수정된 라이브러리가 히든 경로에 위치하면, 공격자들은 그것들이 어디에 있는지 알지 못한다.
본 발명은 공격자들이 extended PhantomFS를 인식하고 있다고 가정한다. 지식(knowledge)과 extended PhantomFS의 퍼미션에 따라, 본 발명은 아래와 같은 명칭을 가지는 4개의 카테고리들로 공격자들을 분류한다.
- 외부 공격자(outside attacker)들은 일반적으로 extended PhantomFS를 인식하고 있지만, 그들은 그들이 액세스하려하는 호스트의 구체적인 구성들을 알지 못한다. 관리자는 파일들의 플래그를 구성하고 히든 경로에 파일들을 숨긴다. 외부 공격자들은 관리자가 어떻게 그들을 구성하는지를 알지 못한다.
- 위장 공격자(impersonation attacker)들은 extended PhantomFS를 인식하고 정당한 유저로 위장한다. 그들은 패스워드와 히든 경로를 포함하는 정당한 유저의 크리덴셜(credential)을 훔친다. 따라서, 그들은 히든 인터페이스에 액세스하는 퍼미션을 가진다. 그러나, 그들은 구성들을 알지 못한다.
- 내부 공격자(inside attacker)들은 구성들을 포함하는 extended PhantomFS의 모든 상세한 정보들을 알고 있지만, 타겟 호스트에 액세스하는 퍼미션을 가지고 있지 않다. 그들은 정당한 계정(account)을 가지고 있지 않고 타겟 호스트의 히든 인터페이스에 액세스할 수 없다.
- 배신자(traitor)들은 extended PhantomFS의 구성들과 모든 상세한 정보들을 알고 있고 퍼미션을 가지고 있다. 그들은 자신의 제어 하에 자원(resource)들을 액세스하는 공격자들이다. 그들은 관리자들 또는 일반적인 유저들일 수 있다. 그들은 비밀을 누설하고, 정보를 위조 또는 파괴하며, 보안 솔루션들을 비활성화하는 것을 시도한다.
일반적인 행동으로부터 배신자들의 부정행동을 구별하는 것은 매우 어렵기때문에 본 발명의 초점은 처음 3가지 타입의 공격자들에 있다. 추가적으로, 본 발명은 배신자들의 동기가 다른 공격자들의 동기보다 매우 약할 것이라는 것을 예상한다. 배신자들이 관리하는, 자원들이 사이버 사건(incident)에 관련된다면, 배신자들은 책임에서 자유롭지 못하다고 생각한다. 그들은 사건으로 인해 유죄를 받을수 있지만, 자원들에 대해 최소한의 주의깊지 못한 관리의 책임이 있다.
B. 공격 표면(attack surface)
본 발명은 3개의 잠재적인 공격들의 타겟(히든 경로, 히든 인터페이스 및 회피)에 대해 알아본다.
1) 히든 경로
공격자들은 히든 경로의 위치를 알아내기 위해 노력할 수 있다. 히든 경로는 레귤러 인터페이스를 통해 보여지지 않지만, 그것의 정확한 경로가 알려지면 여전히 접속할 수 있다. 그것이 알려지면, 공격자들은 거기에 위치하는 정당한 어플리케이션들을 이용할 수 있다.
위에서 설명한 바와 같이, 히든 경로는 패스워드와 유사한 역할을 수행한다. 정당한 유저들은 이것을 안전하게 유지하여야 한다. 이것을 훔치는 비-기술적인 방법들(예컨대, 사회 공학)이 있지만, 본 발명의 범위를 벗어나는 내용이다.
공격자들이 정당한 유저들의 명령어 히스토리(command history)를 읽으면, 그들은 히든 경로를 찾을 수 있다. 정당한 유저들은 디폴트 검색 경로를 히든 경로로 변경하는 스크립트를 실행할 필요가 있다. 스크립트 자체는 히든 경로에 숨겨지지만, 명령어 히스토리는 경로를 나타내고 있다.
일부 시스템 유틸리티들(예컨대, ps 및 proc 파일 시스템)은 실행되는 어플리케이션들의 절대적인 경로를 보여준다. 그들 중의 하나를 이용하는 것에 의해, 공격자는 정당한 어플리케이션들이 어디에 위치하는지 알아낼 수 있다.
2) 히든 인터페이스
공격자들은 그들이 이용하지 않는 것으로 되어 있는 히든 인터페이스를 훔칠수 있다. 이는 시스템 콜들의 코드를 역공학(reverse engineering)하는 것에 의해 성취될 수 있다. 시스템 콜이 히든 인터페이스를 구현하는데 이용된다는 것을 그들이 안다면, 그들은 메인 메모리에 시스템 콜의 코드가 어디에 있는지와 시스템 콜이 어떻게 동작하는지를 알아낼 수 있다. 그들은 또한 정당한 어플리케이션들 또는 수정된 라이브러리의 코드를 분석하는 것에 의해 이를 알아낼 수도 있다.
히든 인터페이스가 어떻게 동작하는지를 그들이 알아내지 못한다고 하더라도, 그들은 정당한 어플리케이션들을 탈취(hijacking)하는 것에 의해 이를 이용할 수 있다. 호스트에서 실행되는 정당한 시스템 서비스들과 어플리케이션들이 있을 수 있다. 이들 중 일부는 오경보를 피하기 위해 히든 인터페이스를 이용할 필요가 있을 수 있다. 공격자들은 이들의 취약점들을 이용하는 것에 의해 이들에 악의적 코드를 주입할 수 있다. 피해 어플리케이션(victim)이 히든 인터페이스를 이용한다면 주입된 악의적 코드는 히든 인터페이스를 이용할 수 있다.
3) 회피
공격자들이 시도할 수 있는 다른 접근 방식은 extended PhantomFS를 회피하는 것이다. 파일들에 액세스하기 위해 표준 인터페이스인, read, write 및 getdents 시스템 콜들이 호출될 때 종래의 PhantomFS의 구현은 단지 플래그들을 체크한다. 공격자들이 비-표준 방법으로 파일들을 액세스하면, 그들은 알람을 트리거하지 않으면서 성공할 수 있다. 예컨대, 마치 메모리에 액세스하는 것처럼 어플리케이션이 파일들을 액세스할 수 있도록 하기 위해, 그들은 파일들을 메모리에 맵핑하는 mmap을 이용할 수 있다. 이 방법에서, 공격자들은 read 및 write 시스템 콜들을 호출하지 않으면서 파일들을 액세스할 수 있다.
extended PhantomFS가 파일 시스템에 구현되면, 공격자들은 파일 시스템을 통하지 않으면서 디스크(raw block device)를 액세스하는 것에 의해 extended PhantomFS를 회피하기 위한 시도를 할 수 있다. 그들이 디스크(raw block device)에 직접 액세스하면, 그들은 알람을 트리거하지 않으면서 파일들을 액세스할 수 있다. 이렇게 하기 위해, 그들은 파일 시스템 타입과 온-디스크 데이터 구조들을 상세히 알아낼 필요가 있다.
또한 공격자들이 관리자들에게 리포팅하는 것을 비활성화하는 것도 가능하다. 사실, 보안 솔루션들에 대해 이용될 수 있는 일반적인 공격 표면이 있다. extended PhantomFS가 구체적인 리포팅 매커니즘을 명령하지 않더라도, 이는 공격자들에 의해 비활성화될 수도 있다.
본 발명에 따른 방어 전략(defense strategy)
위에서 분석된 잠재적인 공격들을 어떻게 방어할 것인지에 대해 설명한다. 아래의 [표 2]는 본 발명에 따른 방어 전략을 요약하고 있다. 이하 본 발명에 따른 방어 전략의 상세한 내용에 대해 설명한다.
Target Attack vector Defense
Hidden
path
Command history Flagging the history file Multiple hidden interface and
flagging executables
Utilities based on proc Modification to proc
Hidden
interface
Reverse engineering Diverse implementation of hidden interfaces
Control flow hijacking Limiting the impact
Malware installation Prohibiting, hiding, or flagging development tools
Evasion File access in a non-standard way Checking flags in all system calls that can be used to access files
A. 공통 방어 전략(common defense strategy)
1) 복수개의 히든 인터페이스(multiple hidden interfaces)
도 4는 본 발명의 바람직한 실시예에 따른 extended PhantomFS를 설명하기 위한 도면이다.
우선, 히든 인터페이스를 이용할 수 있는 위장 공격자들을 방어하기 위해 복수개의 히든 인터페이스가 필요하다. 단지 한개의 히든 인터페이스만 있다면, extended PhantomFS는 그들에 의해 쉽게 무효화될 수 있다. 한개 이상의 히든 인터페이스가 반드시 필요하고, 이들은 이들의 역할 또는 특권에 따라 유저들에게 할당되어야 한다.
도 4에 도시된 바와 같이, 파일 뷰(file view)는 히든 인터페이스에 의존하여 달라진다. 이는 히든 인터페이스들에 플래그들을 설정하는 것에 의해 이루어진다. 예컨대, 히든 인터페이스를 위한 파일에 플래그를 설정할 때, 이는 히든 인터페이스를 통해 파일이 액세스되면 알람이 트리거된다는 것을 의미한다. 따라서, 공격자들이 정당한 유저로 위장하는 것이 성공하더라도, 그들은 여전히 호스트의 파일들에 액세스하는 것이 제한된다.
복수개의 히든 인터페이스를 이용한 접근 방식에서, 플래그 f는 더이상 필요하지 않고, 플래그들 h, r, 및 w는 히든 인터페이스들에 설정될 수 있다. [표 5]는 다른 인터페이스들에 플래그들을 설정하는 예시를 나타내며, 이에 대한 상세한 내용은 뒤에서 설명한다.
그러나, 복수개의 히든 인터페이스는 위장 공격자들에 의한 모든 타입의 공격들을 방어할 수 없다. 그들이 히든 인터페이스들 중 하나를 이용할 수 있다면, 그들은 여전히 히든 인터페이스에 의해 허락되는 공격들을 커밋(commit)할 수 있다. 이것에 대응하기 위해, 히든 인터페이스는 유저가 주어진 작업(task)을 수행하는데 필요로 하는 최소한의 퍼미션을 부여하여야 한다. 이는 sudo를 이용할 때와 동일한 철학(philosophy)이다. 어플리케이션이 탈취(hijack)될 수 있기 때문에 이것은 히든 인터페이스를 어플리케이션에 할당할 때 또한 적용된다. 이 방법에서, 히든 인터페이스들 중 하나가 공격자들에 의해 취해질 때 본 발명은 영향을 최소화할 수 있다.
2) 실행가능한 것들에 플래그 설정(flagging executables)
위에서 언급한 바와 같이, 공격자들은 어플리케이션에 악의적 코드를 주입하거나, 멀웨어를 설치하거나, 또는 셸을 런칭할 수 있다. 그들이 셸을 런칭하는 것에 성공할 때, 그들은 공격을 커밋하기 위해 존재하는 유틸리티들을 실행할 수 있다. 본 발명이 공격자들이 실행할 만한 시스템 유틸리티들에 플래그를 설정하면, 본 발명은 공격들을 탐지할 수 있다. 이를 위해, 본 발명은 새로운 플래그 x를 제시한다. 플래그 x가 실행가능한 것에 설정될 때, 이것이 실행되면 알람이 생성된다.
히든 디렉토리에 위치하는, 정당한 어플리케이션들은 플래그가 설정되어 있지 않고 이를 실행하는 것은 알람을 생성하지 않는다. 정당한 어플리케이션이 어디에 있는지 알고 있는, 누군가는 알람을 트리거하지 않으면서 이것을 실행할 수 있다. 공격자들이 히든 경로를 알아 내면, 공격자들도 어플리케이션의 실행이 가능하다. 이 경우에, 그들은 수정된 라이브러리를 이용하는 것에 의해 히든 인터페이스를 이용할 수 있기 때문에 플래그를 체크하는 것은 의미없게 된다.
따라서, 플래그 x는 인터페이스에 상관없이 파일에 설정된다. 플래그가 설정되면, 이것이 누구에 의해 실행되는지는 상관없이 알람이 생성된다. 정당한 어플리케이션들은 플래그가 설정되어 있지 않고 이들의 위치를 알고 있는 누군가에 의해 알람없이 실행될 수 있다.
외부 공격자들은 히든 인터페이스를 이용할 퍼미션을 가지고 있지 않고, 이는 그들이 히든 경로를 알지 못하는 것을 의미한다. 내부 공격자들은 extended PhantomFS 구성을 알지만, 히든 인터페이스를 액세스할 수 없다. 그들이 히든 경로에 위치하지 않는 플래그가 설정된 어떤 유틸리티를 동작하면 그들은 탐지될 수 있다. 위장 공격자들은 히든 인터페이스들 중 하나를 이용할 퍼미션을 가지고 있다. 그러나, 그들은 어떤 유틸리티에 플래그가 설정된 지를 알지 못한다. 플래그가 설정된 유틸리티가 동작하면 알람을 트리거한다는 것을 그들이 알기 때문에, 그들이 플래그 구성들을 알아내지 못하는 한 그들은 유틸리티를 동작하는 것을 조심할 것이다.
B. 공격 벡터의 분석(analysis of attack vectors)
1) 명령어 히스토리(command history)
명령어 히스토리 파일(예컨대, .bash_history)과 명령어 히스토리를 보여주는 유틸리티(예컨대, history)는 그들이 정당한 유저들에 의해서만 액세스될 수 있도록 하기 위해 플래그가 설정되어야 한다. 다시 말하면, 외부 공격자들과 내부 공격자들이 이들에 액세스하려는 시도를 한다면, 알람이 생성된다. 위장 공격자들이 다른 히든 인터페이스들을 이용하는 다른 유저들의 명령어 히스토리에 액세스하려는 시도를 한다면, 알람이 생성된다. 위장 공격자들은 자신의 히스토리를 액세스할 수 있지만, 다른 인터페이스들을 이용하는 다른 유저들의 히스토리는 액세스할 수 없다.
2) proc 기반 유틸리티(utilities based on proc)
어플리케이션들의 절대적인 경로를 보여주는 유틸리티들(예컨대, ps)이 있다. 이들은 proc 파일 시스템을 기반으로 동작한다. 본 발명은 proc 파일 시스템의 경로를 비활성화하거나 변경할 수 있지만, 이는 많은 유틸리티들이 동작하지 않는 것을 유발할 수 있다. 본 발명에 따른 접근 방식은 히든 경로의 스트링(string)을 특별한 스트링(예컨대, *******)으로 치환하는 것이다. 본 발명은 히든 경로를 찾고 이를 특별한 스트링으로 치환하기 위해 proc 파일 시스템의 소스 코드를 수정한다. 히든 경로를 찾는 것을 보다 쉽게 하기 위해, 본 발명은 히든 디렉토리에 대한 네이밍 규칙(naming rule)을 시행한다. 히든 디렉토리가 "PhantomFS_HiddenDir"로 시작하면, 디렉토리 명칭을 포함하는 전체 경로는 proc 파일 시스템에 의해 특별한 스트링으로 치환된다. 예컨대, 플래그 h가 /home/admin/PhantomFS_HiddenDir_123qweASD에 설정되면, 전체 스트링은 *******로 치환된다.
3) 역공학(reverse engineering)
공격자들이 역공학에 의해 히든 인터페이스가 어떻게 동작하는지 알아내기 어렵게 하기 위해 히든 인터페이스는 다양한 방식들로 구현되어야 한다. 종래의 PhantomFS는 read 시스템 콜을 수정하는 것에 의해 히든 인터페이스를 구현한다. read 시스템 콜은 시그니처를 체크하는 것에 의해 히든 인터페이스로 이용되는지 또는 레귤러 인터페이스로 이용되는지를 구분한다. 복수개의 시그니처들을 이용하는 것에 의해 복수개의 히든 인터페이스를 구현하는 것이 가능하지만, 이는 역공학을 방어하기에는 약하다. 공격자들이 read 시스템 콜이 어떻게 동작되는지 알아내는 것을 성공하면, 그들은 모든 히든 인터페이스들을 알아낼 수 있다.
대신에, 본 발명은 파라미터로 유저-공간 포인터(user-space pointer)를 취하는 다른 시스템 콜들을 이용할 수 있다. 본 발명은 포인터를 다른 방식으로 이용하기 때문에 포인터의 타입은 문제가 되지 않는다. 시스템 콜이 호출될 때, 시그니처를 체크하기 위해 포인터로부터 처음 몇 바이트(first few bytes)를 읽는다. 시그니처가 매칭되면, 히든 인터페이스를 처리하기 위한 데이터 구조인, 포인터로부터 나머지를 읽는다. 시그니처가 매칭되지 않으면, 콜은 레귤러 방식으로 처리된다. 이러한 방법에 의해 히든 인터페이스를 구현하는데 이용될 수 있는 후보 시스템 콜들은 많이 있다.
4) 제어 흐름 탈취(control flow hijacking)
취약점들(예컨대, 메모리 변형과 버퍼 오버플로우)을 이용하는 것에 의해, 공격자들은 히든 인터페이스를 이용하는 정당한 어플리케이션의 제어 흐름을 탈취(hijack)할 수 있다. 이것이 발생되면, 그들은 히든 인터페이스에 허락된 자원들을 액세스할 수 있다. 이는 히든 인터페이스를 이용하는 퍼미션을 가지는 위장 공격자와 동일한 상황이다. 그러나, 공격자들이 제어 흐름을 탈취하는 도중 숨겨진 파일들에 액세스한다면, extended PhantomFS는 이것을 탐지할 수 있다. 심지어 이용 단계(취약점들이 제어 흐름을 탈취하기 위해 이용되는 단계)에서 이것을 탐지하지 못하더라도, 악의적 코드가 숨겨진 파일들을 액세스한다면, 이것은 페이로드 단계(악의적 코드가 실행되는 단계)에서 탐지될 수 있다.
예컨대, 정당한 어플리케이션의 제어 흐름을 탈취하는 것에 의해, 공격자들에게 허용되지 않는 특정 타겟 파일에 액세스하기를 공격자들이 원한다고 가정한다. 이것을 하기 위해, 그들은 그들의 특권을 수평으로 또는 수직으로 확대하여야 한다. 심지어 그들이 특권 확대에 성공한다고 하더라도, 그들이 타겟 파일에 액세스하기 위한 적절한 히든 인터페이스를 취한다는 것을 의미하지는 않는다. 그들은 그들이 원하는 것을 허용하는 히든 인터페이스를 찾고 취하여야 한다. 그렇지 않으면, 공격자들에게 허락되지 않은 파일들에 그들이 액세스하면 그들은 탐지된다.
5) 멀웨어 설치(malware installation)
공격자들이 어떤 유틸리티가 안전하게 동작하는지 알아내지 못하면, 그들은 그들의 유틸리티를 설치하려고 시도한다. 멀웨어 설치는 종종 어플리케이션에 대한 정보를 수집하고, 악의적 코드의 파일들을 전달 또는 생성하며, 악의적 코드를 설치하는 것이 필요하다. 이러한 모든 단계들은 호스트에서 동작되는 유틸리티들에 의해 수행되어야 한다. 따라서, 플래그가 설정된 유틸리티들은 히든 인터페이스를 이용하지 못하는 외부 공격자들과 내부 공격자들에 의한 멀웨어 설치를 예방할 수 있다.
그러나, 위장 공격자들은 히든 인터페이스들 중의 하나를 액세스할 수 있고, 이는 그들이 수정된 라이브러리가 어디에 있는지 안다는 것을 의미한다. 따라서, 그들은 히든 인터페이스에 액세스할 수 있도록 하기 위해 멀웨어를 설치하고 이를 수정된 라이브러리에 링크할 수 있다. 사실, 고도의 보안 서버들의 대부분은 컴파일러들(예컨대, gcc)과 스크립트 해석기들(예컨대, python)과 같은 개발 툴들을 가지고 있지 않다. 그러나, 가벼운 서버들(casual servers) 또는 테스트나 개발에 이용되는 내부 서버들은 엄격한 보안 정책을 따르고 있지 않고 개발 툴들을 가지고 있을 수 있다. 위장 공격자들이 개발 툴들을 이용하는 퍼미션을 가지고 있다면, 그들은 히든 인터페이스를 이용하는 그들의 멀웨어의 설치를 성공할 수 있다. 이 경우는 제어 흐름 탈취와 동일하다. 심지어 그들이 멀웨어의 설치를 성공하더라도, 이것이 숨겨진 파일들에 액세스하면 이것은 탐지된다.
6) 비-표준 방법의 파일 액세스(file access in a non-standard way)
파일을 읽고 쓰는 표준 방법은 상응하는 read 및 write 시스템 콜들을 호출하는 것이다. 그러나, 파일을 메모리에 맵핑하고 마치 메모리에 액세스하는 것처럼 파일을 액세스하는 것이 가능하다. 이것은 mmap 시스템 콜을 호출하는 것에 의해 수행될 수 있다. 따라서, extended PhantomFS는 이것이 호출될 때 플래그를 체크한다.
플래그 w가 설정되어 있다면 알람을 트리거하는, 파일을 오버라이트(overwrite)하는 대신, 공격자들은 파일을 삭제하고 동일한 명칭을 가지는 새로운 파일을 생성할 수 있다. 타겟 파일을 삭제하고 존재하는 파일을 타겟 파일로 리네임(rename)하는 것도 가능하다. extended PhantomFS에서, 플래그들은 파일들을 언링크(unlink)하고 리네임하는 것을 위해 체크된다.
공격자들은 파일 시스템을 바이패스(bypass)하여 파일들에 액세스하려는 시도를 할 수 있다. 예컨대, 그들은 파일에 액세스하기 위해 debugfs를 이용할 수 있다. 이것은 존재하는 유틸리티들이 동작되거나 새로운 실행가능한 것들이 설치되는 것을 필요로 하기 때문에, 위에서 언급된 방어 매커니즘들이 이것을 완화시키는데 이용될 수 있다.
C. 한계(limitations)
공격 벡터들의 분석을 통해, 본 발명에 따른 extended PhantomFS는 히든 인터페이스를 이용하는 퍼미션을 가지지 않는 외부 공격자들과 내부 공격자들의 공격 시도들을 성공적으로 좌절시킬 수 있다는 것을 확인할 수 있다. 위장 공격자들이 허락되지 않은 파일들을 액세스하려는 시도를 하면, extended PhantomFS는 이것을 탐지할 수 있다. 그러나, extended PhantomFS는 다음의 경우들, 즉 (1) 위장 공격자들이 자신의 히든 인터페이스를 통해 허락되는 파일들을 액세스하는 경우, 및 (2) 공격자들이 정당한 어플리케이션의 제어 흐름을 탈취하고, 정당한 어플리케이션의 히든 인터페이스를 통해 허용되는 파일들을 액세스하는 경우는 다룰 수 없다. 이러한 경우들의 영향을 최소화하기 위해, 각각의 히든 케이스에 최소한의 퍼미션이 할당되어야 한다.
본 발명에 따른 방어 전략(defense strategy)의 예시(example)
A. 설정(setup)
웹 서버를 예시로 하여 본 발명에 따른 방어 전략을 설명한다. [표 3]에 요약된 바와 같이, 3개의 계정을 가지고 있다. admin 계정은 시스템 관리자를 위한 것이고, webmaster 계정은 웹 서버가 서비스하는 웹 사이트의 관리자를 위한 것이다. 그들은 각각 히든 인터페이스들, Hadmin 및 Hweb을 이용한다. 이전에 설명한 바와 같이, 히든 인터페이스를 이용하기 위해, 그들은 디폴트 검색을 히든 경로로 변경하는 스크립트를 실행한다. 그들의 히든 경로들은 Hadmin 및 Hweb 각각에 대하여, Padmin 및 Pweb으로 나타낸다. nobody 계정은 웹 서버를 위한 것이다. 웹 서버는 히든 인터페이스 Hnobody를 이용하는 수정된 라이브러리와 함께 계속 동작한다.
Account Role Interface
admin Administrator Hadmin
webmaster Web master Hweb
nobody Web server Hnobody
웹 서버외에, 시스템은 [표 4]와 같은 실행가능한 것들을 제공한다. 이들은 공격자들에 의해 자주 실행되는 명령어들이다. ls는 디렉토리에서 파일들의 리스트를 검색하는 유틸리티이고, vi는 기본 텍스트 에디터이다. 이들은 전형적으로 /bin에 위치한다. 따라서, /bin에 있는 이들이 플래그 x로 설정되고, 누군가가 이들을 실행하면 알람을 트리거한다. 정당한 유저들은 알람을 트리거하지 않는, 자신의 히든 경로에 있는 이들의 다른 버전을 이용하여야 한다. /bin 내에 있는 이것들은 공격자들을 유혹하는데 이용된다. ps 명령어는 단지 관리자에게만 허용되는 것으로, 프로세스들의 상태를 보여준다. 이는 단지 관리자의 히든 경로(Padmin)에 위치한다.
Executable Location Flag
ls /bin x
ls Padmin
ls Pweb
vi /bin x
vi Padmin
vi Pweb
ps Padmin
예시 시스템에서, 보호를 필요하는 2개의 데이터 파일들이 있다. 하나는 웹 서버에 의해 서비스되는 index.html이다. [표 5]와 같이, Hweb을 제외한 모든 인터페이스들에 대해 플래그 w가 index.html에 설정된다. 따라서, Hweb외의 인터페이스를 이용하는, 공격자가 이것을 수정하려는 시도를 하면, 알람이 생성된다. 서버는 단지 이것을 읽기 때문에 플래그 w는 Hnobody에 대해 또한 설정된다. 플래그 w가 Hadmin에 대해 설정되어 있기 때문에 심지어 관리자도 이것에 액세스할 수 없다. 관리자가 웹 사이트를 관리하지 않기로 되어 있으면, index.html을 수정하는 것은 허용되지 않는다. 관리자는 이것에 액세스할 수 있는 특권(종래의 액세스 제어 매커니즘에 의한 허용)을 가질 수 있지만, 시스템이 위태로울 때 추가적인 장벽으로 역할을 하는, extended PhantomFS는 이것을 방지한다. 보호 아래에 있는 다른 파일은 관리자에 의해 유지되는 secret.txt이다. 따라서, 플래그들 rw가 레귤러 인터페이스와 관리자에 대한 히든 인터페이스를 제외한 히든 인터페이스들에 대해 설정된다.
File Regular H admin H web H nobody
index.html w w - w
secret.txt rw - rw rw
B. 외부 공격자(outside attackers)
외부 공격자들은 웹 서버의 취약점들을 이용하는 것에 의해 셸을 런칭하는 것을 성공할 수 있다. 셸은 nobody 계정의 특권을 상속받고, Hnobody를 이용한다. 대신, 그들은 취약점을 이용하는 것에 의해 웹 서버에 악의적 코드를 주입할 수 있다. 이 경우, 웹 서버는 nobody 계정에 의해 동작되기 때문에 악의적 코드는 Hnobody를 이용할 수 있다. 이는 외부 공격자들이 nobody로 위장하는 것과 유사한 상황이다. 그러나, Hnobody를 통해, 그들은 index.html을 수정할 수 없을 뿐만 아니라 secret.txt에 액세스할 수도 없다.
C. 위장 공격자(impersonation attackers)
위장 공격자들은 히든 경로의 위치를 포함하는, 정당한 유저의 크리덴셜들을 훔치는 것을 성공할 수 있다. 이 예시에서, 그들이 webmaster의 크리덴션들을 훔치고 Hweb을 이용할 수 있다고 가정하고, 이는 그들이 Pweb을 알고 있다는 것을 의미한다. 그러나, 그들은 구성을 알지 못하기 때문에 어떤 실행가능한 것이 동작하는데 안전한지를 알지 못한다. 그들이 분명히 알고 있는 것은 그들이 Pweb의 ls 및 vi를 이용할 수 있다는 것이다.
위장 공격자들은 정당한 웹 마스터의 모든 크리덴션들을 알기 때문에 index.html을 수정할 수 있다. 이 경우, 배신자들의 상황과 유사하고, extended PhantomFS에 의해 다룰 수 없다. 그러나, 그들이 secret.txt에 액세스하려는 시도를 한다면, extended PhantomFS는 이를 탐지할 수 있다.
그들은 webmaster의 특권을 가지고 이것에 액세스할 수 없다. 그들은 그들의 특권을 확장하는 것이 필요하다. 심지어 그들이 특권 확장에 성공하더라도, 그들이 Hadmin을 알고 있지만 secret.txt에 여전히 액세스할 수 없다. 따라서, extended PhantomFS는 추가적인 보안 장벽으로 수행된다. 추가하여, extended PhantomFS는 위장 공격자들의 접근이 가능한 자원들을 제한한다. 그들이 어떤 실행가능한 것이 실행하는데 안전하고 어떤 파일이 액세스하는데 안전한지를 알지 못하기 때문에, 그들은 단지 자신의 히든 경로에서 접근이 가능한 것들만 이용할 수 있다. 나아가, 특권 확장의 시도는 플래그가 설정된 파일들을 액세스하는 것에 의해 알람을 트리거할 수 있다. 따라서, 그들은 단지 특권 확장과 히든 인터페이스의 획득에 있어 매우 제한된 공격 벡터들을 가지고 있다.
D. 내부 공격자(inside attackers)
내부 공격자들이 extended PhantomFS의 상세 내용을 알고 있다고 하더라도, 그들은 웹 서버에 액세스하는 퍼미션을 가질 수 없다. 따라서, 그들은 외부 공격자들과 유사한 상황에 있다. 그들이 할 수 있는 것은 취약점을 이용하는 것에 의해 웹 서버를 공격하는 것이다. 그러나, 위에서 설명한 바와 같이, 그들이 히든 인터페이스를 알고 있다고 하더라도 그들은 보호되는 자원들에 액세스하는 것을 성공할 수 없다.
본 발명에 따른 방어 전략(defense strategy)의 실현
본 발명에 따른 방어 전략이 어떻게 실현되는지에 대해 설명한다.
A. 더 많은 시스템 콜들에서 플래그 체킹(flag checking in more system calls)
[표 6]은 시스템 콜들에서 체크되는 플래그들을 보여준다. 본 발명은 파일들을 액세스하는데 잠재적으로 이용될 수 있는 모든 시스템 콜들에서 플래그를 체크한다.
System call Flags
read r
write w
getdents h, r
pread r
pwrite w
execve x
mmap r, w, x
memfd_create r, w
rename r
unlink r
pread 및 pwrite의 경우에서, 이들은 파일의 오프셋 위치(offset position)로부터 파일 카운팅 바이트(file counting bytes)를 읽거나 쓰는 시스템 콜들이다. 공격자들은 종래의 PhantomFS에서 알람을 트리거하지 않으면서 파일들을 읽거나 쓸 수 있다. 따라서, extended PhantomFS에서, 플래그들 r 및 w를 체크하기 위한 코드는 pread 및 pwrite 각각에 추가된다.
위에서 설명한 바와 같이, 본 발명은 동작중인 실행가능한 것들을 탐지하기 위해, 새로운 플래그 x를 추가한다. exec 패밀리 내의 execve 시스템 콜은 플래그 x가 설정된 파일이 실행될 때 알람을 트리거하기 위해 수정된다. extended PhantomFS를 통해, 비인가된 유저가 실행가능한 파일을 동작하는 것을 탐지하는 것이 가능하다.
공격자들은 전통적인 read, write 및 execve 시스템 콜들없이 파일들을 읽고, 쓰고, 실행하기 위해 mmap 시스템 콜을 이용할 수 있다. 이 방법에서, 플래그가 설정된 파일은 알람없이 액세스될 수 있다. extended PhantomFS는 이것을 예방하기 위해 mmap 시스템 콜을 수정한다. mmap 시스템 콜은 읽거나, 쓰거나, 실행하기 위해 맵핑된 파일을 나타내는 prot 인자(argument)를 취한다. 따라서, 각각의 플래그에 따라 파일에 대한 액세스를 체크하기 위해 mmap 시스템 콜은 extended PhantomFS 내에서 prot 인자를 체크하도록 수정된다. 읽는 경우, prot의 prot_read 플래그가 설정되면, 플래그 r이 설정된 파일에 대해 알람이 트리거된다. 동일한 방법으로, 플래그 w에 대해 prot_write를 체크하고 플래그 x에 대해 prot_exec를 체크하는 것에 의해, 보통의 시스템 콜들 대신에 mmap 시스템 콜을 이용하여 파일에 액세스하는 것을 탐지하는 것이 가능하다. 정당한 유저는 정당한 히든 인터페이스를 이용하기 위해 수정된 라이브러리를 통해 히든 인터페이스에 구현된 mmap 시스템 콜을 이용할 수 있다.
그리고, extended PhantomFS는 memfd_create 시스템 콜을 수정한다. 이 시스템 콜은 또한 mmap처럼 메모리 맵핑을 통해 파일들에 액세스할 수 있다. 그래서 extended PhantomFS는 이들을 탐지하기 위해 플래그 r 및 플래그 w 체크 코드를 추가한다.
직접 파일의 내용을 수정하는 것 대신, 공격자들은 cp 및 mv에 의해 파일을 오버라이트(overwrite)할 수 있다. 또한, 이러한 명령어들의 이용은 extended PhantomFS에서 탐지될 수 있다. cp 명령어가 write 시스템 콜을 이용하면, 플래그 w가 설정된 경우 이는 탐지될 수 있다. 이는 또한 종래의 PhantomFS에 의해 탐지될 수 있지만, 또 다른 시스템 콜 rename을 호출하는, mv 명령어의 경우는 그렇지 않다. 따라서, extended PhantomFS는 플래그 r이 파일에 설정된 경우 mv 명령어를 이용하여 존재하는 파일의 오버라이트(overwrite)를 탐지하기 위해 rename 시스템 콜을 수정한다. 정당한 유저는 수정된 라이브러리를 통해 히든 인터페이스에 구현된 rename 시스템 콜을 이용할 수 있다.
마지막으로, 종래의 PhantomFS는 파일 삭제를 탐지할 수 없다. 그러나, 공격자가 파일을 삭제할 수 있기 때문에, extended PhantomFS는 파일의 삭제를 탐지하기 위해 unlink 시스템 콜을 수정한다. 공격자가 플래그 r이 설정된 파일을 삭제할 때 이를 탐지하는 것이 가능하다.
B. 복수개의 히든 인터페이스(multiple hidden interfaces)
도 5는 본 발명의 바람직한 실시예에 따른 extended PhantomFS의 의사코드(pseudocode)를 나타내는 도면이고, 도 6은 본 발명의 바람직한 실시예에 따른 플래그(flag)를 저장하는 데이터 구조의 일례를 설명하기 위한 도면이며, 도 7은 본 발명의 바람직한 실시예에 따른 read 시스템 콜을 이용한 복수개의 히든 인터페이스의 구현 예시를 설명하기 위한 도면이다.
복수개의 히든 인터페이스를 구현하기 위해, extended PhantomFS는 각각의 인터페이스에 다른 시그니처를 할당한다. 그러나, 복수개의 인터페이스를 위해 하나의 시스템 콜이 이용되면, 위에서 설명한 바와 같이, 역공학에 취약할 수 있다. 따라서, extended PhantomFS는 복수개의 히든 인터페이스를 지원하기 위해 복수개의 존재하는 시스템 콜들을 이용한다. 파라미터로 유저 공간(user space)에 대한 포인터(pointer)를 취하는 시스템 콜들이 있다. 포인터는 원래 유저-레벨 어플리케이션과 커널 사이의 데이터 교환에 이용된다. 종래의 PhantomFS는 read 시스템 콜을 이용하여 히든 인터페이스를 구현한다. 복수개의 히든 인터페이스를 위해, extended PhantomFS는 유저 공간에 대한 포인터를 이용하는 다른 시스템 콜들을 이용하여 이들을 구현한다. read, write 및 pread 시스템 콜들을 이용하여 이들을 구현하는 것에 대해 이하 설명한다.
히든 인터페이스를 이용하는 프로세스는 기본적으로 종래의 PhantomFS와 동일하다. 즉, 어플리케이션은 버퍼를 할당하고, 시그니처, 리퀘스트 타입(request type), 및 파라미터를 버퍼에 쓰며, 그런 다음 히든 인터페이스로 이용되는, 시스템 콜을 호출한다. extended PhantomFS는 12개의 리퀘스트 타입, 즉 (1) change flags, (2) read flags, (3) read, (4) write, (5) pread, (6) read a directory, (7) pwrite, (8) execve, (9) mmap, (10) memfd_create, (11) rename, 및 (12) unlink를 지원한다. 처음 5개의 리퀘스트 타입은 종래의 PhantomFS에 의해 지원되고, 나머지 리퀘스트 타입들은 extended PhantomFS에서 추가된다.
커널에서 각각의 시스템 콜에 대해 시그니처가 매칭되면, 이는 히든 인터페이스를 호출하는 것을 의미한다. 복수개의 히든 인터페이스를 구현하기 위해, 시그니처가 매칭될 때, 어떤 히든 인터페이스가 이용되는지를 식별하기 위해, 인터페이스 인덱스(interface index)가 주어진다. 보다 상세하게 설명하면, 복수개의 히든 인터페이스를 위한 의사코드(pseudocode)는 도 5에 도시된 바와 같다.
예컨대, read 시스템 콜이 히든 인터페이스들 중 하나를 위해 이용된다. 이것이 호출될 때, 먼저 시그니처가 체크된다. 시그니처가 매칭되면, IF_READ는 IF_INDEX 번호에 배정되고 리퀘스트를 처리하기 위해 hidden_interface 함수가 호출된다. IF_INDEX는 어떤 히든 인터페이스가 호출되는지를 나타낸다. 시그니처가 매칭되지 않으면, 이는 read 시스템 콜이 레귤러 인터페이스로 호출되는 것을 의미한다. 그러면, IF_REG가 IF_INDEX 번호에 배정된다. 이것의 플래그가 r이면, 리포트는 관리자에게 전달된다. 이는 send_report 함수에 의해 핸들링된다. 인터페이스(IF_INDEX)에 대해 어떤 플래그(FLAGS)가 파일에 설정되면 관리자에게 리포트를 보내게 된다. 마지막으로, 원래의 read 시스템 콜이 호출된다.
write 및 pread 시스템 콜들은 동일한 방법에 의해 동작한다. getdents 시스템 콜에서, 파일들의 리스트를 읽기 위해 이의 원래 시스템 콜이 호출된다. 그런 다음, 리스트 내의 파일들의 플래그들이 체크된다. 플래그 h가 설정된 파일이 있으면, 해당 파일은 레귤러 인터페이스로부터 숨겨져야 하기 때문에 해당 파일은 리스트에서 제거된다. 시스템 콜들 pwrite, execve, mmap, 및 rename에서, 플래그들이 체크된다. 체크되는 플래그들은 도 5와 [표 6]에서 도시된 바와 같이 시스템 콜들에 의해 변한다. 그러나, 그들이 히든 인터페이스로 이용되지 않으면, 시그니처는 체크되지 않는다.
함수 hidden_interface는 IF_INDEX 번호를 가지는 히든 인터페이스의 리퀘스트들을 처리하기 위해 이용된다. 리퀘스트 타입이 changing flags이면, IF_INDEX 및 플래그들은 그에 맞추어 저장된다. 리퀘스트 타입이 reading flags이면, IF_INDEX에 대한 파일의 플래그 정보가 리턴된다. 리퀘스트 타입이 read, write, 또는 pread이면, send_report를 호출하는 것에 의해 플래그들이 체크된다. 그런 다음, 원래의 시스템 콜이 호출된다. 리퀘스트 타입이 getdents이면, 원래의 getdents 시스템 콜이 호출되고, 그런 다음 IF_INDEX에 대하여 플래그 h가 설정된 파일들이 리스트에서 제거된다. 다른 시스템 콜들에서도, IF_INDEX를 호출하는 것에 의해 그들에 상응하는 플래그들이 체크되고, 그들의 원래 시스템 콜들이 호출된다. 마지막으로, 히든 인터페이스를 방어하기 위해 시그니처가 삭제되는 것이 뜻하지 않게 트리거될 수 있다.
플래그들을 저장하는 데이터 구조는 도 6에 도시된 바와 같이, 각각의 히든 인터페이스별로 개별적으로 유지된다. 플래그들은 파일별로, 인터페이스별로 저장된다. 레귤러 인터페이스를 포함하는 다른 인터페이스들을 통해 액세스될 때 파일의 저장된 플래그들이 체크된다. 도 6을 참조하여, 유저 1이 히든 인터페이스 1을 이용한다고 가정한다. 유저 1은 파일 1에 플래그들 rx를 설정한다. 이는 파일 1이 다른 인터페이스들을 통해 읽거나 실행될 때, 알람이 트리거된다는 것을 의미한다. 동시에, 플래그 w가 히든 인터페이스 2를 통해 동일한 파일에 설정된다. 따라서, 유저 1이 파일 1을 오버라이트(overwrite)하려 시도하면, 알람이 트리거된다. 데이터 구조는 분리되어 유지되기 때문에, 유저 1은 수정할 수 없을 뿐만 아니라 히든 인터페이스 2의 플래그 w를 읽을 수도 없다.
extended PhantomFS는 히든 인터페이스를 이용하기 위해 glibc 코드를 수정한다. 리퀘스트들의 12개 타입을 처리하기 위해, extended PhantomFS는 그들의 래퍼 함수(wrapper function)를 수정한다. 이 함수들에서, 도 7에 도시된 바와 같이, extended PhantomFS는 시그니처, 리퀘스트 타입, 및 파라미터를 버퍼에 생성하고, 상응하는 시스템 콜을 호출한다. read 시스템 콜을 이용하는 것에 의한 히든 인터페이스 구현은 도 7에 도시된 바와 같다. 어플리케이션이 write 래퍼 함수를 호출할 때, glibc의 write 래퍼 함수는 히든 인터페이스를 이용하는 extended PhantomFS에 대한 write 리퀘스트를 만들기 위해 버퍼를 생성하고, read 시스템 콜을 호출한다.
본 발명의 실험 결과
종래의 PhantomFS에 의해 탐지될 수 없는, extended PhantomFS를 인식하고 있는 공격자들을 extended PhantomFS가 탐지할 수 있다는 것을 실험 결과를 통해 설명한다. 침투 테스트(penetration testing)에 의해 실험을 진행하였다. 또한 extended PhantomFS에 의해 발생되는 성능 오버헤드(performance overhead)를 측정한 결과 무시해도 될 정도(negligible)의 오버헤드가 발생되는 것을 확인할 수 있었다.
A. 실험 설정(experimental setup)
위에서 설명한 예시와 유사하게 설정하여 실험을 진행한다. 호스트 머신(host machine)에 가상 머신(virtual machine)으로 Ubuntu Server 18.04를 설치한다. 이들의 스펙은 [표 7]과 같다. 가상 머신에서 동작하는 웹 서버로 GoAhead를 이용한다. 이 서버는 개발자들이 호스트 임베디드 웹 어플리케이션들을 개발하는데 효율적인 대중적인 임베디드 웹 서버 중의 하나이다. 우리의 시나리오들에 대한 일부 타입의 공격자들의 능력으로, 3.6.5 이전에 GoAhead에 대한 원격 코드 실행을 허용하는 심각한 취약점인 CVE-2017-17562를 이용한다. 이 취약점은 GoAhead 웹 서버를 통해 원격으로 임의의 명령어들의 실행을 허용하는 특권을 공격자들이 획득하는 것을 가능하게 한다. 오픈된 포트(port)들은 22 및 80이고, 이들은 각각 시큐어 셸(secure shell, SSH) 및 웹 서버를 위한 것이다. 개발 툴들은 설치되지 않는다.

Host machine
Processor Intel i7
Memory 32 GB
Disk 512 GB SSD
Operating system Windows 10

Virtual machine
Virtualizer VirtualBox 5.2.26
Memory 4 GB
Disk 50 GB
Operating system Ubuntu Server 18.04
Kernel Linux 5.0.7
[표 3]과 같이 3개의 계정을 생성한다. 관리자(Padmin)의 히든 경로는 /home/admin/PhantomFS_HiddenDir_q1W2e3이고, 웹 마스터(Pweb)의 히든 경로는 /home/web/PhantomFS_HiddenDir_789uioJKL이다. 수정된 라이브러리와 검색 경로를 변경하는 스크립트는 히든 경로 내에 위치한다. 플래그 h는 상응하는 히든 인터페이스를 제외한 모든 인터페이스들에 대해 히든 디렉토리에 설정된다. 특히, 플래그 h는 레귤러 인터페이스, Hweb 및 Hnobody에 대해 Padmin에 설정되고, 플래그 h는 레귤러 인터페이스, Hadmin 및 Hnobody에 대해 Pweb에 설정된다.
/bin, /sbin, /usr/bin, 및 /usr/sbin 내의 모든 실행가능한 것들은 플래그 x가 설정된다. 관리자가 이들을 이용할 수 있도록 하기 위해 이들은 플래그없이 Padmin에 복사된다. Padmin의 이들은 라이브러리의 경로를 변경하는 것에 의해 수정된 라이브러리와 링크된다. 웹 마스터에 대해, 필수적인 유틸리티들만 Pweb에 복사된다. 침투 테스트에서 이들은 ls 및 vi이다.
index.html과 secret.txt를 공격들의 타겟들로 둔다. 플래그들은 [표 5]에서 도시된 바와 같이 이들에 설정된다.
B. 침투 테스트(penetration testing)
테스트를 통해 확인하고자 하는 가설은 아래와 같다.
- extended PhantomFS를 알고 있지만 히든 인터페이스를 이용하는 퍼미션을 가지고 있지 않은, 외부 공격자들과 내부 공격자들은, 할당된 히든 인터페이스만을 통해서만 액세스될 수 있는 파일들에 액세스할 수 없다.
- extended PhantomFS를 알고 있고 히든 인터페이스들 중 하나를 이용할 수 있는, 위장 공격자들은, 다른 히든 인터페이스만을 통해서만 액세스될 수 있는 파일들에 액세스할 수 없다.
외부 공격자들과 내부 공격자들의 목표는 알람을 트리거하지 않으면서 index.html을 수정하는 것이다. 다시 말하면, 그들이 이를 하지 못하면 첫 번째 가설은 입증된다. 위장 공격자들의 목표는 extended PhantomFS에 의해 탐지되지 않으면서 secret.txt를 읽는 것이다. 다시 말하면, 그들이 이를 하지 못하면 두 번째 가설은 입증된다. 비교를 위해, 종래의 PhantomFS를 위한 테스트와 동일하게 테스트를 수행한다.
1) 외부 공격자들
외부 공격자들은 타겟 시스템이 extended PhantomFS로 보호되는지 여부를 알고 있다. 나아가, 그들은 웹 서버를 이용하는 것에 의해 타겟 시스템의 코드 실행 특권을 획득할 수 있다.
테스트 시나리오 : 외부 공격자들은 Hnobody에 대해 플래그 w가 설정된 index.html 파일을 수정하려고 시도한다. 그들은 extended PhantomFS가 동작중이고 이의 디자인에 대한 사실외에 어떠한 정보도 가지고 있지 않다. extended PhantomFS에 대한 테스트 시나리오는 아래와 같다.
- 공격자들은 원격 명령어 실행을 획득하기 위해 웹 서버 내의 취약점을 이용한다.
- extended PhantomFS의 존재를 알지만 정확한 구성을 인식하지 못하기 때문에, 공격자들은 /bin/vi로 우연히 index.html을 수정한다.
결과 : extended PhantomFS는 플래그 x를 통해 위에서 설명한 시나리오 하에서 외부 공격자들을 성공적으로 탐지할 수 있다. 위에서 설명한 바와 같이, 플래그 x가 설정된 실행가능한 것들이 어떤 유저들에 의해 실행될 때 알람은 발생한다. 따라서, 공격자들이 index.html을 수정하기 위해 /bin/vi를 실행하자마자 알람이 생성된다. 그러나, 공격자들이 플래그 w를 바이패스(bypass)하기 위해 mmap 트릭을 이용할 때 종래의 PhantomFS는 공격을 탐지할 수 없다.
2) 내부 공격자들
내부 공격자들 또한 extended PhantomFS의 존재를 알고 있다. 내부 공격자들과 외부 공격자들의 차이는 단지 [표 3]과 [표 4]와 같은 extended PhantomFS의 상세 구성을 알고 있는 것이다. 공격자들의 두가지 타입은 히든 인터페이스를 이용하는 퍼미션을 가지고 있지 않다. 이 실험에서, 내부 공격자들의 목적은 index.html을 수정하는 것이다. 이러한 관점에서의 2개의 시나리오는 아래와 같다.
제1 테스트 시나리오 : 제1 테스트 시나리오에서, 공격자들은 히든 경로를 알아내려는 시도를 한다.
- 공격자들은 원격 명령어 실행을 획득하기 위해 웹 서버 내의 취약점을 이용한다.
- 정확한 플래그 구성들을 알고 있기 때문에, 공격자들은 index.html을 수정하지 않고, 대신, 히든 인터페이스 Hnobody의 경로를 찾는다.
- 그러나, 히든 인터페이스를 알아내는 것은 특정 패스워드를 찾는 것과 동일하고, 이는 공격 가능성이 매우 낮다.
결과 : 히든 인터페이스의 경로를 찾지 못한 공격자들이 사용할 수 있는 바이너리들은 /bin 디렉토리 내의 바이너리들로 제한된다. 이에 의해, 플래그 구성들을 인식하고 있기 때문에 공격자들은 extended PhantomFS에 의해 탐지되지 않는 공격들을 지속할 수 없다.
제2 테스트 시나리오 : 공격자들이 Pnobody를 찾는 것을 해내더라도, Hnobody를 통해 허용되지 않기 때문에 공격자들은 index.html을 수정할 수 없다.
- 공격자들은 원격 명령어 실행 능력을 획득하기 위해 웹 서버 내의 취약점을 이용한다.
- 공격자들은 히든 인터페이스 Hnobody에 대한 경로를 획득하기 위해 메모리 변형 취약점을 이용하는 것에 의해 웹 서버의 환경적 변수를 검색한다.
- 공격자들은 index.html을 수정하기 위해 Hnobody로부터 우연히 vi를 동작한다.
결과 : Hnobody에 대한 경로를 인식하고 있음에도 불구하고, 공격자들이 Hnobody를 통해 index.html을 수정하려고 시도하면, 이는 경보로 이어진다. 즉, 공격자들은 extended PhantomFS에 의해 보호되고 있는 index.html을 수정하려고 하면 결국 탐지되게 된다.
3) 위장 공격자들
위장 공격자들은 webmaster 계정을 가지고 있고 Pweb으로부터 실행가능한 것들을 이용할 수 있게 하는, 히든 인터페이스 Hweb에 액세스할 수 있다. 그러나, 그들은 실행가능한 것들의 정확한 플래그 정보들을 알아채지 못하고, 이는 Pweb 내의 vi 및 ls외의 어떤 바이너리들을 실행할 것 같지 않다는 것을 의미한다. 이 실험의 목표는 위장 공격자들이 secret.txt를 읽지 못한다는 것을 보증하는 것이다. 위에서 언급된 목표를 달성하기 위해, 아래와 같은 테스트 시나리오를 준비한다.
테스트 시나리오 : 공격자들은 종래의 PhantomFS에 의해 탐지되지 않는 mmap 트릭을 이용하는 것에 의해 Hadmin에 의해서만 액세스가능한 secret.txt를 읽기 위해 복잡한 공격을 수행한다.
- 공격자들은 Hweb 인터페이스에 액세스한다.
- Pweb으로부터 일부 유틸리티들을 이용하여, 공격자들은 탐지되지 않으면서 secret.txt를 읽기 위해 메모리-맵핑 I/O(memory-mapped I/O)를 이용한다.
결과 : 리눅스 커널 내의 특권 확장 취약점들을 이용하는 것 대신, 공격자들은 종래의 PhantomFS에 의해 탐지되지 않는 메모리 맵핑 I/O 시스템 콜들(예컨대, mmap, 및 memfd_create)을 이용하여 secret.txt를 읽기 위해 시도한다. 그러나, extended PhantomFS에서, read 또는 write 시스템 콜들을 이용하지 않으면서 파일들을 읽거나 쓰려하는 시도인 모든 액션들을 탐지하기 위해 메모리 맵핑 I/O와 관련된 시스템 콜들에서 철저한 검사가 수행된다. 따라서, 위장 공격자들은 extended PhantomFS에 의해 탐지된다.
C. 성능 평가(performance evaluation)
도 8은 본 발명의 바람직한 실시예에 따른 extended PhantomFS의 성능을 설명하기 위한 도면으로, 응답 시간(response time)을 나타내고, 도 9는 본 발명의 바람직한 실시예에 따른 extended PhantomFS의 성능을 설명하기 위한 도면으로, 처리량(throughput)을 나타낸다.
extended PhantomFS에 의해 수정된 10개의 시스템 콜의 성능 오버헤드(performance overhead)를 측정한다. 각각의 시스템 콜을 호출하는 스크립트를 생성하고, 100번의 응답 시간(response time)을 기록한다. 도 8은 두꺼운 히스토그램 바(histogram bar)에 의해 100번의 실험의 평균을 나타내고, 좁은 에러 바(error bar)에 의해 최대값과 최소값을 나타낸다. extended PhantomFS가 없는 수정되지 않은 파일 시스템('Unmodified'라 한다)의 응답 시간, 레귤러 인터페이스를 이용하는 extended PhantomFS('Regular'라 한다)의 응답 시간, 및 read 시스템 콜을 통해 히든 인터페이스를 이용하는 extended PhantomFS('Hidden'이라 한다)의 응답 시간을 비교한다.
시그니처가 체크되고 플래그가 체크되기 때문에 read 시스템 콜이 레귤러 인터페이스로 이용될 때 read 시스템 콜의 오버헤드는 발생할 수 있다. 도 8의 (a)에서 도시된 바와 같이, 리퀘스트들의 크기에 따라 Regular의 응답 시간은 변화된다. 리퀘스트 크기가 작으면, 관련된 오버헤드는 높아진다. 리퀘스트 크기가 4K이면, 응답 시간은 평균적으로 103.00% 증가된다. 이는 지나친 것처럼 보이지만, 절대적인 증가는 단지 4.12ms이다. 리퀘스트 크기가 4M이면, 응답 시간은 평균적으로 19.55% 증가된다.
read 시스템 콜이 히든 인터페이스로 호출될 때, 시그니처를 체크하고, 리퀘스트를 처리하며, 플래그를 체크하는 것에 의해 오버헤드가 발생한다. 리퀘스트 크기가 4K일 때, 오버헤드는 85%이고, 리퀘스트 크기가 4M일 때, 오버헤드는 21.06%이다.
이와 같은 실험 결과보다 유저에 의해 경험되는 오버헤드는 많이 낮게 된다. 실험 결과는 하나의 시스템 콜의 오버헤드이지만, 시스템 콜은 유틸리티의 단지 일부분이다. 따라서, 유틸리티의 증가되는 응답 시간의 비율은 시스템 콜의 그것보다 낮게 된다.
이를 입증하기 위해, 도 9에 도시된 바와 같이, dd 유틸리티의 처리량(throughput)을 비교한다. 유틸리티는 디스크를 액세스하는 처리량을 리포트한다. y축은 처리량이고, 이것이 높으면 더 좋다는 것을 나타낸다. 도 9에 도시된 바와 같이, read 시스템 콜은 dd 유틸리티의 단지 일부분이기 때문에, Unmodified, Regular, 및 Hidden의 처리량에 있어 분명한 차이는 없다. Regular의 오버헤드는 3.35% ~ 8.21%이고, Hidden의 오버헤드는 0.58%가 증가한다. Hidden의 경우, 처리량은 때때로 Unmodified보다 높다. 이는 read 시스템 콜의 응답 시간의 약간의 증가는 dd 유틸리티의 전반적인 성능에 분명한 영향을 주지 않는 다는 것을 의미한다.
시스템 콜들 write, pread, 및 pwrite에 대해서도, 유사한 경향을 관측할 수 있다. write 시스템 콜의 경우에, Regular의 오버헤드는 2.40% ~ 24.64%이고, Hidden의 오버헤드는 1.23% ~ 19.20%이다. pread 시스템 콜의 경우에, Regular의 오버헤드는 2.66% ~ 199.05%이고, Hidden의 오버헤드는 6.67% ~ 111.32%이다. pwrite 시스템 콜의 경우에, Regular의 오버헤드는 0.25% ~ 91.89%이고, Hidden의 오버헤드는 0.89% ~ 95.25%이다.
getdents 시스템 콜에서, 오버헤드는 추가적인 메모리 복사에 의해 발생된다. getdents 시스템 콜은 디렉토리 내의 모든 파일들의 리스트를 획득한다. 그런 다음 리스트로부터 플래그 h가 설정된 파일들을 제거하면서 다른 메모리 위치에 복사되고, 이는 추가적인 메모리 복사 오버헤드를 발생한다. 따라서, 히든 파일들의 개수가 증가하면 오버헤드는 감소한다.
도 8의 (d)는 getdents 시스템 콜의 응답 시간을 나타낸다. 100개의 파일들을 생성하고, 0%, 25%, 50%, 75%, 및 100%의 파일들에 플래그 h가 설정될 때의 응답 시간을 측정한다. 히든 파일들의 개수가 증가하면, 오버헤드가 감소되는 것을 확인할 수 있다. 히든 파일들의 퍼센트가 100%일 때, Regular의 응답 시간과 Hidden의 응답 시간은 심지어 Unmodified의 응답 시간보다 낮다. 이를 제외하면, Regular의 오버헤드는 40.01% ~ 191.80%이고, Hidden의 오버헤드는 39.25% ~ 191.80%이다.
execve 시스템 콜은 파일을 실행하기 위해 이용된다. 리퀘스트된 파일들의 개수를 변화하면서 이의 응답 시간을 측정한다. Regular의 응답 시간과 Hidden의 응답 시간은 때때로 Unmodified의 응답 시간보다 낮지만, 그 차이는 노이즈 마진(noise margin) 내에 있다. 다른 경우, Regular의 오버헤드는 7.30% ~ 23.38%이고, Hidden의 오버헤드는 5.38% ~ 23.38%이다.
mmap 시스템 콜의 경우, prot 인자와 플래그를 체크할 때 오버헤드가 발생한다. 파일이 메모리에 일단 맵핑되면, 파일은 메모리로부터 직접 액세스될 수 있다. 따라서, 도 8의 (g)에 도시된 바와 같이, 파일이 맵핑될 때만 오버헤드가 발생하고, 이는 리퀘스트 크기에 상관없는 상수(constant)이다. Regular의 오버헤드는 98.56% ~ 143.11%이고, Hidden의 오버헤드는 92.08% ~ 128.44%이다. 그러나, 절대적인 값은 단지 Regular의 경우 1.15ms ~ 1.60ms이고 Hidden의 경우 1.13ms ~ 1.54ms이다.
memfd_create 시스템 콜은 익명의 파일이 생성될 때 이용된다. 따라서, 리퀘스트된 파일들의 개수를 변화하면서 이의 오버헤드를 측정한다. 오버헤드는 단지 플래그를 체크하는 것에 의해 발생된다. Regular의 오버헤드는 114.28% ~ 166.66%이고, Hidden의 오버헤드는 107.14% ~ 185.71%이지만, 절대적인 값은 단지 Regular의 경우 2.14ms ~ 2.66ms이고 Hidden의 경우 2.07ms ~ 2.85ms이다.
rename 및 unlink 시스템 콜들에서, 오버헤드는 플래그를 체크하기 위해 단지 발생한다. 리퀘스트된 파일들의 개수를 변화하면서 응답 시간을 측정한다. rename 시스템 콜의 경우, Regular의 오버헤드는 0.68% ~ 24.59%이고, Hidden의 오버헤드는 1.54% ~ 22.95%이다. unlink 시스템 콜의 경우, Regular의 오버헤드는 1.66% ~ 6.38%이고, Hidden의 오버헤드는 2.38% ~ 4.25%이다.
그러면, 도 10을 참조하여 본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 방법에 대하여 설명한다.
도 10은 본 발명의 바람직한 실시예에 따른 파일 기반 기만 기술을 이용한 공격 탐지 방법을 설명하기 위한 흐름도이다.
도 10을 참조하면, 공격 탐지 장치(100)는 호스트 시스템의 복수개의 인터페이스 중에서 유저 계정에 대응되는 인터페이스를 통해 호스트 시스템에 액세스하기 위한 리퀘스트를 수신한다(S110).
여기서, 리퀘스트의 타입은 change flags, read flags, read, write, pread, read a directory, pwrite, execve, mmap, memfd_create, rename, 및 unlink 중 하나일 수 있다.
그러면, 공격 탐지 장치(100)는 리퀘스트가 수신되는 인터페이스에 대해, 리퀘스트에 따른 시스템 정보에 설정된 플래그를 기반으로, 호스트 시스템에 대한 공격을 탐지한다(S130).
이때, 호스트 시스템의 시스템 콜 중에서 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜에서 플래그를 체크한다. 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜은 read 시스템 콜, write 시스템 콜, getdents 시스템 콜, pread 시스템 콜, pwrite 시스템 콜, execve 시스템 콜, mmap 시스템 콜, memfd_create 시스템 콜, rename 시스템 콜, 및 unlink 시스템 콜을 말한다.
여기서, 공격 탐지 장치(100)는 시그니처 매칭을 통해 히든 인터페이스의 호출 여부를 판단하고, 인터페이스 인덱스를 통해 복수개의 히든 인터페이스 중에서 어떤 히든 인터페이스가 이용되는지를 판단할 수 있다. 이때, 복수개의 히든 인터페이스 각각에는 서로 다른 시그니처와 인터페이스 인덱스가 할당되어 있다.
위와 같은 본 발명을 통해, 아래와 같은 시나리오의 공격 탐지가 가능하다.
- 정찰 : 공격자가 호스트 침입후 가장 먼저 하는 일은 시스템의 주요 파일들을 읽어 보며 정보를 수집하는 일이다. 따라서, 이 파일들의 접근을 탐지하면 공격 징후 탐지가 가능하다.
- 파일 변조 공격 : 공격의 중간 결과 또는 최종 결과로 파일이 변경되는 경우 이를 탐지한다. 예컨대, DLL injection 공격의 경우, 취약점을 이용하여 DLL을 무단으로 변조하여 공격을 실행한다.
- 랜섬웨어 : 랜섬웨어는 사용자의 파일들을 암호화한 후 사용자에게 몸값을 요구하는 멀웨어의 한 종류이다. 랜섬웨어는 사용자 파일을 찾기 위해 특정 폴더들을 탐색하기 때문에 이 경로에 가짜 파일을 설치하면 탐지가 가능하다.
이상에서 설명한 본 발명의 실시예를 구성하는 모든 구성요소들이 하나로 결합하거나 결합하여 동작하는 것으로 기재되어 있다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다. 또한, 그 모든 구성요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 또한, 이와 같은 컴퓨터 프로그램은 USB 메모리, CD 디스크, 플래쉬 메모리 등과 같은 컴퓨터가 읽을 수 있는 기록 매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 기록 매체로서는 자기기록매체, 광 기록매체 등이 포함될 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로써, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 : 공격 탐지 장치,
110 : 수신부,
130 : 탐지부

Claims (13)

  1. 호스트 시스템(host system)의 복수개의 인터페이스(interface) 중에서 유저 계정(user account)에 대응되는 인터페이스를 통해 상기 호스트 시스템에 액세스(access)하기 위한 리퀘스트(request)를 수신하는 수신부; 및
    상기 리퀘스트가 수신되는 인터페이스에 대해, 상기 리퀘스트에 따른 시스템 정보에 설정된 플래그(flag)를 기반으로, 상기 호스트 시스템에 대한 공격(attack)을 탐지하는 탐지부;
    를 포함하며,
    상기 시스템 정보는, 상기 호스트 시스템 내의 디렉토리(directory) 및 실행가능한 것들(executable) 중 하나이고,
    상기 복수개의 인터페이스는, 레귤러 인터페이스(regular interface) 및 복수개의 히든 인터페이스(hidden interface)를 포함하며,
    상기 유저 계정은, 상기 복수개의 인터페이스 중에서 하나가 할당되고,
    상기 플래그(flag)는, 상기 복수개의 인터페이스 각각에 대하여, 상기 시스템 정보별로 설정되며, 실행가능한 것의 읽기 동작 시 알람(alarm)을 발생하는 플래그 r, 실행가능한 것의 쓰기 동작 시 알람을 발생하는 플래그 w, 시스템 정보를 히든 인터페이스로부터 숨기는 것인 플래그 h, 및 실행가능한 것의 실행 동작 시 알람을 발생하는 플래그 x 중 적어도 하나이며,
    상기 호스트 시스템의 시스템 콜(system call) 중에서 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜에서 상기 플래그를 체크하는,
    파일 기반 기만 기술을 이용한 공격 탐지 장치.
  2. 제1항에서,
    상기 복수개의 히든 인터페이스는,
    파라미터(parameter)로 유저 공간(user space)에 대한 포인터(pointer)를 취하는 복수개의 시스템 콜을 이용하여 구현되는,
    파일 기반 기만 기술을 이용한 공격 탐지 장치.
  3. 제2항에서,
    상기 복수개의 히든 인터페이스는,
    read 시스템 콜, write 시스템 콜 및 pread 시스템 콜을 이용하여 구현되는,
    파일 기반 기만 기술을 이용한 공격 탐지 장치.
  4. 제1항에서,
    상기 복수개의 히든 인터페이스 각각은, 서로 다른 시그니처(signature)와 인터페이스 인덱스(interface index)가 할당되며,
    상기 탐지부는, 시그니처 매칭을 통해 히든 인터페이스의 호출 여부를 판단하고, 인터페이스 인덱스를 통해 상기 복수개의 히든 인터페이스 중에서 어떤 히든 인터페이스가 이용되는지를 판단하는,
    파일 기반 기만 기술을 이용한 공격 탐지 장치.
  5. 제1항에서,
    상기 리퀘스트의 타입은,
    change flags, read flags, read, write, pread, read a directory, pwrite, execve, mmap, memfd_create, rename, 및 unlink 중 하나인,
    파일 기반 기만 기술을 이용한 공격 탐지 장치.
  6. 제1항에서,
    상기 복수개의 히든 인터페이스 각각은, 서로 다른 히든 디렉토리가 할당되며,
    상기 히든 디렉토리의 전체 명칭은, 미리 설정된 스트링(string)으로 변경되어 있는,
    파일 기반 기만 기술을 이용한 공격 탐지 장치.
  7. 제1항에서,
    상기 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜은,
    read 시스템 콜, write 시스템 콜, getdents 시스템 콜, pread 시스템 콜, pwrite 시스템 콜, execve 시스템 콜, mmap 시스템 콜, memfd_create 시스템 콜, rename 시스템 콜, 및 unlink 시스템 콜인,
    파일 기반 기만 기술을 이용한 공격 탐지 장치.
  8. 호스트 시스템(host system)에 대한 공격(attack)을 탐지하는 공격 탐지 장치에서 수행되는 공격 탐지 방법으로서,
    상기 호스트 시스템의 복수개의 인터페이스(interface) 중에서 유저 계정(user account)에 대응되는 인터페이스를 통해 상기 호스트 시스템에 액세스(access)하기 위한 리퀘스트(request)를 수신하는 단계; 및
    상기 리퀘스트가 수신되는 인터페이스에 대해, 상기 리퀘스트에 따른 시스템 정보에 설정된 플래그(flag)를 기반으로, 상기 호스트 시스템에 대한 공격을 탐지하는 단계;
    를 포함하며,
    상기 시스템 정보는, 상기 호스트 시스템 내의 디렉토리(directory) 및 실행가능한 것들(executable) 중 하나이고,
    상기 복수개의 인터페이스는, 레귤러 인터페이스(regular interface) 및 복수개의 히든 인터페이스(hidden interface)를 포함하며,
    상기 유저 계정은, 상기 복수개의 인터페이스 중에서 하나가 할당되고,
    상기 플래그(flag)는, 상기 복수개의 인터페이스 각각에 대하여, 상기 시스템 정보별로 설정되며, 실행가능한 것의 읽기 동작 시 알람(alarm)을 발생하는 플래그 r, 실행가능한 것의 쓰기 동작 시 알람을 발생하는 플래그 w, 시스템 정보를 히든 인터페이스로부터 숨기는 것인 플래그 h, 및 실행가능한 것의 실행 동작 시 알람을 발생하는 플래그 x 중 적어도 하나이며,
    상기 호스트 시스템의 시스템 콜(system call) 중에서 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜에서 상기 플래그를 체크하는,
    파일 기반 기만 기술을 이용한 공격 탐지 방법.
  9. 제8항에서,
    상기 복수개의 히든 인터페이스는,
    파라미터(parameter)로 유저 공간(user space)에 대한 포인터(pointer)를 취하는 복수개의 시스템 콜을 이용하여 구현되는,
    파일 기반 기만 기술을 이용한 공격 탐지 방법.
  10. 제8항에서,
    상기 복수개의 히든 인터페이스 각각은, 서로 다른 시그니처(signature)와 인터페이스 인덱스(interface index)가 할당되며,
    상기 탐지 단계는, 시그니처 매칭을 통해 히든 인터페이스의 호출 여부를 판단하고, 인터페이스 인덱스를 통해 상기 복수개의 히든 인터페이스 중에서 어떤 히든 인터페이스가 이용되는지를 판단하는 것으로 이루어지는,
    파일 기반 기만 기술을 이용한 공격 탐지 방법.
  11. 제8항에서,
    상기 복수개의 히든 인터페이스 각각은, 서로 다른 히든 디렉토리가 할당되며,
    상기 히든 디렉토리의 전체 명칭은, 미리 설정된 스트링(string)으로 변경되어 있는,
    파일 기반 기만 기술을 이용한 공격 탐지 방법.
  12. 제8항에서,
    상기 실행가능한 것을 액세스하는데 이용되는 모든 시스템 콜은,
    read 시스템 콜, write 시스템 콜, getdents 시스템 콜, pread 시스템 콜, pwrite 시스템 콜, execve 시스템 콜, mmap 시스템 콜, memfd_create 시스템 콜, rename 시스템 콜, 및 unlink 시스템 콜인,
    파일 기반 기만 기술을 이용한 공격 탐지 방법.
  13. 제8항 내지 제12항 중 어느 한 항에 기재된 파일 기반 기만 기술을 이용한 공격 탐지 방법을 컴퓨터에서 실행시키기 위하여 컴퓨터로 읽을 수 있는 기록 매체에 저장된 컴퓨터 프로그램.
KR1020200148001A 2020-11-06 2020-11-06 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법 KR102344966B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200148001A KR102344966B1 (ko) 2020-11-06 2020-11-06 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200148001A KR102344966B1 (ko) 2020-11-06 2020-11-06 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법

Publications (1)

Publication Number Publication Date
KR102344966B1 true KR102344966B1 (ko) 2021-12-30

Family

ID=79178455

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200148001A KR102344966B1 (ko) 2020-11-06 2020-11-06 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102344966B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101216986B1 (ko) * 2012-03-20 2012-12-31 주식회사 시큐브 동적 라이브러리 및 코드 사인 기반의 파일 및 폴더 접근 제어 시스템 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101216986B1 (ko) * 2012-03-20 2012-12-31 주식회사 시큐브 동적 라이브러리 및 코드 사인 기반의 파일 및 폴더 접근 제어 시스템 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Junghee Lee et al, "PhantomFS: File-Based Deception Technology for Thwarting Malicious Users"(2020.02.) *
Teryl Taylor et al, "Hidden in Plain Sight: Filesystem View Separation for Data Integrity and Deception", Detection of Intrusions and Malware, and Vulnerability Assessment, pp. 256-278(2018.06.) *

Similar Documents

Publication Publication Date Title
US10691792B2 (en) System and method for process hollowing detection
US11586736B2 (en) Systems and methods for detecting malicious processes
US9530001B2 (en) System and method for below-operating system trapping and securing loading of code into memory
RU2646352C2 (ru) Система и способ для применения индикатора репутации для облегчения сканирования на наличие вредоносных программ
KR101626424B1 (ko) 가상 머신 모니터 기반 안티 악성 소프트웨어 보안 시스템 및 방법
US9392016B2 (en) System and method for below-operating system regulation and control of self-modifying code
US9262246B2 (en) System and method for securing memory and storage of an electronic device with a below-operating system security agent
US9384349B2 (en) Negative light-weight rules
US8925089B2 (en) System and method for below-operating system modification of malicious code on an electronic device
US8650642B2 (en) System and method for below-operating system protection of an operating system kernel
US8966624B2 (en) System and method for securing an input/output path of an application against malware with a below-operating system security agent
US9032525B2 (en) System and method for below-operating system trapping of driver filter attachment
CN107066311B (zh) 一种内核数据访问控制方法与系统
US20080016339A1 (en) Application Sandbox to Detect, Remove, and Prevent Malware
US9183377B1 (en) Unauthorized account monitoring system and method
US20120255003A1 (en) System and method for securing access to the objects of an operating system
US20130312099A1 (en) Realtime Kernel Object Table and Type Protection
US20120255014A1 (en) System and method for below-operating system repair of related malware-infected threads and resources
US20120255031A1 (en) System and method for securing memory using below-operating system trapping
US11494491B2 (en) Systems and methods for protecting against malware code injections in trusted processes by a multi-target injector
US11971986B2 (en) Self-protection of anti-malware tool and critical system resources protection
US20230297676A1 (en) Systems and methods for code injection detection
Choi et al. PhantomFS-v2: Dare you to avoid this trap
WO2022105610A1 (zh) 一种数据保护的方法、装置、存储介质和计算机设备
KR102344966B1 (ko) 파일 기반 기만 기술을 이용한 공격 탐지 장치 및 방법

Legal Events

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