KR101662162B1 - 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법 - Google Patents

악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법 Download PDF

Info

Publication number
KR101662162B1
KR101662162B1 KR1020160032995A KR20160032995A KR101662162B1 KR 101662162 B1 KR101662162 B1 KR 101662162B1 KR 1020160032995 A KR1020160032995 A KR 1020160032995A KR 20160032995 A KR20160032995 A KR 20160032995A KR 101662162 B1 KR101662162 B1 KR 101662162B1
Authority
KR
South Korea
Prior art keywords
file
context
irp
detecting
called
Prior art date
Application number
KR1020160032995A
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 KR1020160032995A priority Critical patent/KR101662162B1/ko
Application granted granted Critical
Publication of KR101662162B1 publication Critical patent/KR101662162B1/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 장치 및 방법에 관한 것이다. 본 발명은, 정상 프로그램과 악성 코드의 경우 실행하는 목적은 서로 달라도 운영체제에서 발생하는 행위는 대부분 일치하는 점을 토대로, 공격 대상 PC에 유입된 악성 코드가 실행되고 종료될 때까지의 감염 경로 역추적에 필요한 주요 사용자 행위를 수집하여 분석하는 기술이다.

Description

악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법{User action detecting method for backtracking of infection way of vicious code}
본 발명은 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법에 관한 것이다.
더 구체적으로 본 발명은, 정상 프로그램과 악성 코드의 경우 실행하는 목적은 서로 달라도 운영체제에서 발생하는 행위는 대부분 일치하는 점을 토대로, 공격 대상 PC에 유입된 악성 코드가 실행되고 종료될 때까지의 감염 경로 역추적에 필요한 주요 사용자 행위를 수집하여 분석하는 기술이다.
해커는 실행 파일(EXE)로 만든 악성 코드를 응용 프로그램에 알려지지 않은 취약점을 이용하여 오랜 전부터 공격 대상 PC에 감염시켜 유포하는 것이 최근 국내에서 발생하는 사이버 침해 사고의 일 유형이다.
따라서 침해 사고의 발생을 인식할 시점에는 이미 해커가 공격을 마치고, 흔적을 지우기에 충분한 시간이 경과한 후일 경우가 대부분이다.
기존에는 이러한 침해 사고에 대응하기 위한 방편으로 IT 장치에서 발생하는 모든 로그를 수집하여 공격 징후를 탐지하는 방법을 사용하였는데, 이러한 방법은 물리적인 한계와 함께 기술적으로도 구현이 쉽지 않은 단점이 있다.
침해 사고의 일례로서, 한국 수력 원자력 원전 해킹 사고의 경우, 알려지지 않은 문서 프로그램의 취약점을 공격하는 식으로 악성 코드가 내부 망에 유입된 경우이다.
이 경우에도 침해 사고 인지가 늦어짐에 따라 그만큼 대응 시간도 길어질 수밖에 없었다.
이와 같이 악성 코드 감염 원인이 명확하게 밝혀지기까지 많은 오류가 있었고, 모든 침해를 완벽하게 막을 수는 없으므로 탐지(Detection) 및 차단(Block)을 하는 대신에 탐지 및 대응(Response)을 하는 기술이 필요하게 되었다.
이를 위해서는, 정상 프로그램과 악성 코드의 경우 실행하는 목적은 서로 달라도 운영체제에서 발생하는 행위는 대부분 일치하기 마련이므로, 공격 대상 PC에 유입된 악성 코드가 실행되고 종료될 때까지의 감염 경로 역추적에 필요한 주요 사용자 행위를 수집하여 분석하는 기술이 구현될 필요가 있다.
본 발명의 목적은, 침해 사고 대응 방편으로 사용자 행위를 검출하여 그 경로를 역추적함으로써 최초 악성 코드의 감염 원인을 찾을 수 있도록 한, 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법을 제공하는데 있다.
기타, 본 발명의 목적들은 이하 상세한 설명을 통해 유추 가능할 것이다.
상기 목적을 달성하기 위한 본 발명의 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 장치는, 프로세스의 생성 및 종료시 호출받는 프로세스 콜백 함수와, 실행 파일의 원시 코드가 메모리에 올라올 때 호출받는 이미지 콜백 함수 등록에 의해 프로세스의 생성 및 종료 행위를 수집하는 프로세스 행위 수집부; 파일 이벤트 발생시 파일 IRP(I/O Request Packet)의 제어를 위하여 생성된 파일 오브젝트를 추적하여 파일 행위를 수집하는 파일 행위 수집부; 네트워크 이벤트 발생시 네트워크 IRP의 제어를 위하여 생성된 파일 오브젝트를 추적하여 네트워크 행위를 수집하는 네트워크 행위 수집부; 및 외부 디스크의 삽입시 호출되는 콜백 함수와, 해제시 발생되는 IRP에 의해 디스크 삽입 및 해제 행위를 수집하는 디스크 행위 수집부로 이루어진 것을 특징으로 한다. 파일 행위 수집부는, 파일 시스템 필터 매니저에 파일 이벤트 발생시 파일 IRP 제어를 위해 필터가 장착되는 것을 특징으로 한다.
네트워크 행위 수집부는, 네트워크 이벤트 발생시 네트워크 IRP 제어를 위하여 네트워크 트랜스포트 계층 커널 드라이버에 필터가 장착되는 것을 특징으로 한다.
프로세스 행위 수집부는, 프로세스 식별을 위하여 부모 프로세스 식별자와 현재 프로세스 식별자를 검출하는 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법은, 프로세스의 생성 및 종료시 호출받는 프로세스 콜백 함수와, 실행 파일의 원시 코드가 메모리에 올라올 때 호출받는 이미지 콜백 함수에 의해 프로세서의 생성 및 종료 행위를 수집하는 것을 특징으로 한다.
프로세스 생성 행위 수집은, 프로세스 콜백 함수 호출; 자체 프로세스 콘텍스트 저장; 이미지 콜백 함수 호출; 콘텍스트 조회 요청 판단에 따라 종료하거나, EPROCESS의 PEB에서 Command Line 검사로 실행 인자와 경로를 검출하고 프로세스 생성을 탐지하는 동작으로 이루어진 것을 특징으로 한다.
프로세스 종료 행위 수집은, 프로세스 콜백 함수 호출; 콘텍스트 조회 요청 판단; 콘텍스트 조회 요청에 따라 종료하거나, 자체 프로세스 콘텍스트를 삭제하고, 프로세스 종료 행위를 탐지하는 동작으로 이루어진 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법은, 파일 이벤트 발생시 파일 IRP(I/O Request Packet)의 제어를 위하여 생성된 파일 오브젝트를 추적하여 파일 생성, 삭제, 이름 변경, 이동, 덮어쓰기, 열기 행위를 수집하는 것을 특징으로 한다.
파일 생성 행위 수집은, IRP_MJ_CLEATE 실행 후 루틴 호출; 파일 생성 I/O 완료 정보값이 FILE_CREATED 라면 콘텍스트 생성; IRP_MJ-CLEANUP 실행 전 루틴 호출; 콘텍스트 여부에 따라 종료하거나 파일 전체 경로 검출; 파일의 내용을 읽어서 PE 파일 여부 검출; 및 콘텍스트 삭제 및 파일 생성을 탐지하는 동작으로 이루어진 것을 특징으로 한다.
파일 삭제 행위 수집은, IRP_MJ_CREATE 실행 후 루틴 호출; I/O 파라미터값의 생성 옵션이 FILE_DELETE_ON_CLOSE 라면 콘텍스트 생성; IRP_MJ-CLEANUP 실행 전 루틴 호출; 콘텍스트 여부에 따라 종료하거나 파일 전체 경로 검출; 파일의 내용을 읽어서 PE 파일 여부 검출; 및 콘텍스트 삭제 후, 파일 삭제를 탐지 하는 동작으로 이루어진 것을 특징으로 한다.
파일 이름 변경 행위 수집은, IRP_MJ_SETINFORMATION 실행 전 루틴 호출; I/O 파라미터의 File Information값 검출; FileRename Information인지 판단; FileRename Information이 아닐 경우에는 종료하고, FileRename Information일 경우에는 콘텍스트를 생성; IRP_MJ_SETINFORMATION 실행 후 루틴 호출; 콘텍스트가 있는지 판단; 및 콘텍스트가 없을 경우에는 종료하고, 콘텍스트가 있을 경우에는 변경 전 전체 파일 경로를 검출하고, 파일 이름 변경을 탐지하는 동작으로 이루어진 것을 특징으로 한다.
파일 이동 행위 수집은, IRP_MJ_SETINFORMATION 실행 전 루틴 호출; I/O 파라미터의 File Information값 검출; FileRename Information인지 판단; FileRename Information이 아닐 경우에는 종료하고, FileRename Information일 경우에는 콘텍스트를 생성; IRP_MJ_SETINFORMATION 실행 후 루틴 호출; 콘텍스트가 있는지 판단; 콘텍스트 유무에 따라 종료하거나 부모 디렉토리 변경 판단; 및 부모 디렉토리가 변경되지 않았을 경우에는 종료하고, 변경되었을 경우에는 이동 후 전체 파일 경로를 검출하고, 파일 이동을 탐지하는 동작으로 이루어진 것을 특징으로 한다.
파일 덮어쓰기 행위 수집은, IRP_MJ_CLEATE 실행 후 루틴 호출; 파일 생성 I/O 완료 정보값이 FILE_OVERWRITTEN 이라면 콘텍스트 생성; IRP_MJ-CLEANUP 실행 전 루틴 호출; 콘텍스트 여부에 따라 종료하거나 파일 전체 경로 검출; 파일의 내용을 읽어서 PE 파일 여부 검출; 및 콘텍스트 삭제 후, 파일 덮어쓰기를 탐지하는 동작으로 이루어진 것을 특징으로 한다.
파일 열기 행위 수집은, IRP_MJ_CREATE 실행 전 루틴 호출; 파라미터의 Create Disposition값 검출; FILE_OPEN인지 판단; FILE_OPEN일 경우에는 파일 열기 탐지; FILE_OPEN이 아닐 경우에는 FILE_OPEN_IF인지 판단; 및 FILE_OPEN_IF일 경우에는 파일 열기를 탐지하고, FILE_OPEN_IF가 아닐 경우종료하는 동작으로 이루어진 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법은, 네트워크 이벤트 발생시 네트워크 IRP의 제어를 위하여 생성된 파일 오브젝트를 추적하여 로컬 접속, 로컬 접속 해제, 원격 접속, 원격 접속 해제 행위를 수집하는 것을 특징으로 한다.
로컬 접속 행위 수집은, IRP_MJ_INTERNAL_DEVICE_CONTROL 실행 전 루틴 호출; IRP 스택의 Minor Function값 검출; TDI_CONNECT인지 판단; 및TDI_CONNECT가 아닐 경우에는 종료하고, TDI_CONNECT일 경우에는 원격지 접속 IP, PORT를 검출하는 동작으로 이루어진 것을 특징으로 한다.
로컬 접속 해제 행위 수집은, IRP_MJ_INTERNAL_DEVICE_CONTROL 실행 전 루틴 호출; IRP 스택의 Minor Function값 검출; TDI_DISCONNECT인지 판단; TDI_DISCONNECT가 아닐 경우에는 종료하고, TDI_DISCONNECT일 경우에는 콘텍스트가 있는지 판단; 및 콘텍스트가 없을 경우에는 종료하고, 있을 경우에는 원격지 접속 IP, PORT를 검출하는 동작으로 이루어진 것을 특징으로 한다.
원격 접속 행위 수집은, TDI_EVENT_CONNECT 루틴 호출; 콘텍스트 여부 판단; 및 콘텍스트 여부에 다라 종료하거나 원격지 정보를 검출한 후, 원격 접속을 탐지하는 동작으로 이루어진 것을 특징으로 한다.
원격 접속 해제 행위 수집은, TDI_EVENT_DISCONNECT 루틴 호출; 콘텍스트 여부 판단; 및 콘텍스트 여부에 따라 종료하거나 원격지 정보를 검출한 후, 원격 접속 해제를 탐지하는 동작으로 이루어진 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법은, 외부 디스크의 삽입시 호출되는 콜백 함수와, 해제시 발생되는 IRP에 의해 디스크 삽입 및 해제 행위를 수집하는 것을 특징으로 한다.
디스크 삽입 행위 수집은, 파일 시스템 필터에 등록된 Instance Setup 루틴 호출; 디바이스 타입(Device Type)이 FILE_DEVICE_DISK_FILE_SYSTEM인지 판단; 및 FILE_DEVICE_DISK_FILE_SYSTEM이 아닐 경우에는 종료하고, FILE_DEVICE_DISK_FILE_SYSTEM일 경우에는 볼륨 타입(USB Memory, HDD)을 검출한 후, 외부 디스크 삽입을 탐지하는 동작으로 이루어진 것을 특징으로 한다.
디스크 해제 행위 수집은, IRP_MJ_PNP 요청 전 함수 호출; IRP 스택의 Minor Funtion값 검출; IRP_MN_REMOVE_DEVICE인지 판단; 및 IRP_MN_REMOVE_DEVICE일 경우에는 볼륨 타입을 검출하고, 외부 디스크 해제를 탐지하는 동작으로 이루어진 것을 특징으로 한다.
IRP_MN_REMOVE_DEVICE가 아닐 경우에는 IRP_MN_SURPRISE_REMOVAL인지 판단; IRP_MN_SURPRISE_REMOVAL가 아닐 경우에는 종료하고, IRP_MN_SURPRISE_REMOVAL일 경우에는 볼륨 타입을 검출하고, 외부 디스크 해제를 탐지하는 것을 특징으로 한다.
본 발명의 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법에 따르면, 공격 대상 PC에 유입된 악성 코드가 실행되고 종료될 때까지의 행위를 정확하게 분석할 수 있을 뿐만 아니라, 감염 경로를 역추적함으로써 감염 원인과 사용자의 행위를 정확하게 탐지할 수 있는 이점이 있다.
도 1은 악성 코드의 감염 경로 역추적에 필요한 행위와 연결고리 개념도.
도 2는 본 발명의 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 장치의 구성도.
도 3은 침해사고 타임라인 범위도.
도 4는 프로세스 생성 행위 탐지 흐름도.
도 5는 프로세스 종료 행위 탐지 흐름도.
도 6은 파일 행위 탐지 개념도.
도 7a는 파일 생성을 위한 파일 접근 감시 흐름도.
도 7b는 파일 생성 탐지 흐름도.
도 8a는 파일 삭제를 위한 파일 접근 감시 흐름도.
도 8b는 파일 삭제 탐지 흐름도.
도 9a는 파일 이름 변경을 위한 파일 접근 감시 흐름도.
도 9b는 파일 이름 변경 탐지 흐름도.
도 10a는 파일 이동을 위한 파일 접근 감시 흐름도.
도 10b는 파일 이동 탐지 흐름도.
도 11a는 파일 덮어쓰기를 위한 파일 접근 감시 흐름도.
도 11b는 파일 덮어쓰기 탐지 흐름도.
도 12는 파일 열기 탐지 흐름도.
도 13은 네트워크 행위 탐지 개념도.
도 14는 로컬 접속 탐지 흐름도.
도 15는 로컬 접속 해제 탐지 흐름도.
도 16a는 원격 접속 탐지를 위한 감시 흐름도.
도 16b는 원격 접속 탐지 흐름도.
도 17a는 원격 접속 해제를 위한 감시 흐름도.
도 17b는 원격 접속 해제 탐지 흐름도.
도 18은 외부 디스크 삽입 탐지 흐름도.
도 19는 외부 디스크 해제 탐지 흐름도.
이하, 본 발명의 실시예를 첨부 도면을 참조하여 상세히 설명한다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다.
도 1은 악성 코드의 감염 경로 역추적에 필요한 사용자 행위와 연결고리 개념도이다.
윈도우 운영체제에서 실행되는 프로그램은 실행 파일 포맷으로 디스크에 저장된다. 따라서 프로그램이 실행되면 프로그램 실행에 필요한 원시 코드가 메모리에 업로드되고, 운영체제는 실행중인 프로그램 관리를 위하여 프로세스를 생성한다.
공격자는 이러한 운영체제하에서 공격 대상 PC에 있는 응용 프로그램의 알려지지 않은 취약점을 이용하여 프로그램의 흐름을 바꾸는 식으로 원하는 명령을 실행한다. 이러한 공격 형태는, 외부 네트워크로부터 다른 악성 코드를 추가로 전송받거나, 내부 리소스에 있는 악성 코드를 불러와서 실행하는 경우 등도 있을 수 있다. 또한, 외부 디스크로부터 유입되어 공격 대상 PC에 파일로 저장하여 실행할 수도 있다.
상기한 바와 같이, 공격자는 악성 코드를 공격 대상 PC에 파일로 저장할 수 있다. 즉 문서 프로그램 또는 동영상 플레이어 프로그램의 알려지지 않은 취약점이 동작하려면, 사용자가 문서 파일 또는 동영상 파일을 외부에서 다운로드 받아 파일로 저장해야 한다.
문서 프로그램 또는 동영상 플레이어 프로그램이 실행되면서 다운로드 받은 문서 파일과 동영상 파일이 실행되면 비로소 취약점 공격이 시작된다. 따라서 최초 발생된 공격 지점을 역추적하려면 도 1과 같이 프로세스(10), 파일(20), 네트워크(30), 외부 디스크(40) 행위 등을 수집하는 것이 효과적이다.
예를 들어, 프로세스(10)의 프로그램 원본 파일 경로를 수집하면 이 프로세스(10)가 어떤 파일인지 알 수 있다. 파일 전체 경로에 포함되어 있는 논리 볼륨 이름(C:\, D:\, E:\)으로 외부 디스크(40)의 삽입 또는 해제를 알 수 있다. 또한, 모든 행위에 프로세스 식별 번호(PID)를 수집하면, 프로세스(10)의 파일 행위 종류와 외부와의 네트워크(30) 통신 여부를 알 수 있다.
또한, 프로세스의 생성 및 종료시 호출받는 프로세스 콜백 함수와, 실행 파일의 원시 코드가 메모리에 올라올 때 호출 받는 이미지 콜백 함수를 등록하면 프로세스의 생성 및 종료 행위를 수집할 수 있다.
또한, 파일 시스템 필터 매니저(Filter Manager)에 필터를 장착하면, 파일 이벤트 발생시 파일 IRP(I/O Request Packet)를 제어할 수 있다. 윈도우 운영체제는 파일 제어를 위하여 파일 오브젝트를 생성하여 사용한다. 따라서 파일 오브젝트를 추적하면 파일 행위의 수집이 가능하다.
또한, 네트워크 트랜스포트 계층 커널 드라이버에 필터를 장착하면, 네트워크 이벤트 발생시 네트워크 IRP 제어가 가능하다. 윈도우 운영체제는 네트워크 통신에 사용하는 소켓도 가상의 파일로 간주하여 파일 오브젝트를 생성한다. 따라서 파일 오브젝트를 추적하면 네트워크 행위 수집이 가능하다.
이를 위해 본 발명은 도 2에 도시된 바와 같이 ENDPOINT-PC(100)와, 프로세스 행위 수집부(200)와, 파일 행위 수집부와(300), 네트워크 행위 수집부(400)와, 외부 디스크 행위 수집부(500)로 구성된다.
ENDPOINT-PC(100)는 본 발명의 사용자의 행위를 탐지하기 위한 데이터를 처리하는 수단이다.
프로세스 행위 수집부(200)는, 프로세스 생성과 프로세스 종료 행위를 수집한다.
파일 행위 수집부(300)는, 파일 생성, 파일 삭제, 파일 이름 변경, 파일 이동, 파일 덮어쓰기, 파일 열기 행위를 수집한다.
네트워크 행위 수집부(400)는, 로컬 접속, 로컬 접속 해제, 원격 접속, 원격 접속 해제 행위를 수집한다.
외부 디스크 행위 수집부(500)는, 외부 디스크 삽입, 외부 디스크 해제 행위를 수집한다.
이하에서는 이들 행위 수집부들을 통한 행위 수집 동작에 대해 설명한다.
1. 프로세스 행위 수집
악성 코드가 공격 대상 PC에 유입되어 프로세스가 되면 악성 행위가 시작된 것이다. 프로세스가 종료되지 않았다면 악성 행위가 지속되는 중이고, 프로세스가 종료되었다면 악성 코드가 다른 곳으로 전이되었거나 종료된 것이다. 프로세스는 다른 프로세스를 생성 및 종료할 수 있다. 프로세스의 생성 및 종료 행위와 행위 발생 시간을 함께 수집하면 도 3과 같이 공격 타임라인(Attack Timeline) 범위를 좁힐 수 있다.
예를 들어, '이상 행위'의 탐지시, 대상 프로세스의 동작시간이 악성 행위 동작시간이 된다. 운영체제가 프로세스 식별을 위해 프로세스의 생성시 지정하는 번호는 중복될 수 있지만, 프로세스의 종료 전까지는 식별 번호가 중복되지 않는다. 상기'이상 행위'는 식별 변호로 구분하지 않으므로 동일한 이름을 가진 프로그램이 여러 번 실행되더라도 문제가 발생하지 않는다.
1.1 프로세스 생성
프로세스 콜백 함수가 호출되는 시점은 프로세스를 생성하는 부모 프로세스의 쓰레드 Context에서 생성하는 프로세스의 PEB(Process Environment Block)가 만들어지기 전이다. 따라서 자체 프로세스 콘텍스트(Context)를 만들어 프로세스 식별 번호와 경로만 저장한다. 실행 파일 원시 코드가 메모리에 올라오는 시점에 호출되는 이미지 콜백 함수가 호출될 때는 PEB가 생성되므로 EPROCESS로 PEB를 참조할 수 있다.
또한, PEB의 Command Line 값을 검사하면 실행 인자를 검출할 수 있다. 따라서 이미지 콜백 함수에서 프로세스의 생성을 탐지한다.
프로세스 생성 탐지 흐름을 도시한 것이 도 4이다.
도 4에 도시된 바와 같이. 프로세스 콜백 함수가 호출되면(S1), 자체 프로세스 콘텍스트가 저장되고(S2), 이미지 콜백 함수가 호출되며(S3), 콘텍스트 조회가 요청되었는지 판단된다(S4).
그 판단결과, 콘텍스트 조회 요청이 없는 경우에는 종료하고, 있는 경우에는 EPROCESS의 PEB에서 Command Line 검사로 실행 인자와 경로를 검출하고, 프로세스 생성을 탐지하게 된다(S5).
1.2 프로세스 종료
프로세스 생성 시점에 만든 자체 프로세스 콘텍스트가 있다면 이는 감시 대상 프로세스이다. 따라서 이 시점에 프로세스 종료 행위를 탐지하고, 프로세스 콘텍스트를 제거한다. 프로세스 종료 행위는 공격 타임라인의 범위를 지정하고, 현재 악성 코드로 의심되는 프로세스가 실행중인지를 확인하기 위한 것일 뿐, 다른 정보를 검출하지는 않는다. 다만, 프로세스 식별을 위해 부모 프로세스 식별자와 현재 프로세스 식별자를 검출한다.
프로세스 종료 탐지 흐름을 도시한 것이 도 5이다.
프로세스 콜백 함수가 호출되면(S1), 콘텍스트 조회가 요청되었는지판단된다(S2).
그 판단결과, 콘텍스트 조회 요청이 없었으면 종료하고, 있었으면 자체 프로세스 콘텍스트를 삭제하게 된다(S3).
2. 파일 행위 수집
운영체제는 파일에 대한 접근시 IRP_MJ_CREATE ?? ACTIVITY ?? IRP_MJ_CLEANUP ?? IRP_MJ_CLOSE 등 크게 총 4 단계를 거치는 것이 일반적이다. 여기서 ACTIVITY는 IRP_MJ CREATE, IRP_MJ CLEANUP, IRP_MJ CLOSE를 제외한 모든 IRP 종류를 의미한다. 따라서 파일 시스템 매니저에 필터를 장착하면 IRP가 파일 시스템에 도달하기 전에 제어할 수 있고, IRP가 파일 시스템으로부터 완료된 후에 제어할 수 있다.
운영체제는 하나의 파일에 대한 작업시마다 하나의 파일 오브젝트를 생성한다. 사용자가 더 이상 사용하지 않을 경우에 IRP_MJ_CLEANUP이 호출되고, 운영체제까지 사용하지 않을 경우에는 IRP_MJ_CLOSE를 호출한다. 따라서 실제 사용자의 파일 행위를 정확히 탐지하려면 도 6에 도시된 바와 같이 IRP_MJ_CLEANUP에서 탐지하는 것이 효과적이다. 상황에 따라서 굳이 IRP_MJ_CLEANUP에서 탐지하지 않아도 무방한 사용자 행위도 있지만 대부분 사용자 행위는 IRP_MJ_CLEANUP에서 탐지하는 것이 효과적이다.
2.1 파일 생성
공격 대상 PC에 파일이 생성되었음을 IRP_MJ_CREATE에서 탐지해야 할 것 같지만, IRP_MJ_CREATE는 파일에 대한 접근을 의미하므로 언제든지 행위를 취소할 수 있다.
해커가 디스크에 대한 파일 기록을 위해 열었다는 신호를 IRP_MJ_CREATE에서 검사하고, 파일 오브젝트 추적을 위해 파일 오브젝트 Context를 생성한다. 생성한 Context는 모든 IRP에서 추적이 가능하다. IRP_MJ_CLEANUP에서 파일 오브젝트를 추적하여 파일 생성 행위의 성공여부를 탐지한다. IRP_MJ_CLEANUP은 사용자 레벨에서 파일에 더 이상 접근할 수 없으므로, 만약 파일 생성을 취소하였다면, IRP_MJ_CLEANUP에서의 탐지는 불가능하다. 따라서 공격 대상 PC에 파일이 확실히 생성되었음을 확인하려면 IRP_MJ_CLEANUP에서 파일 오브젝트가 완전히 소멸되기 전에 탐지해야 한다.
또한, 해당 시점에 파일 오브젝트로부터 데이터를 읽어서 내용을 확인하면 윈도우 실행 파일을 기록하는지도 탐지가 가능하다.
파일 생성을 위한 파일 접근 감시 흐름을 도시한 것이 도 7a이다.
도 7a에 도시된 바와 같이, IRP_MJ_CREATE 실행 후 루틴이 호출되면(S1), I/O 결과의 정보값이 검출되고(S2), FILE_CREATED 인자가 판단된다(S3).
그 판단결과, FILE_CREATED가 아닐 경우에는 종료하고, FILE_CREATED일 경우에는 파일 오브젝트 콘텍스트를 생성하게 된다(S4).
파일 생성 탐지 흐름을 도시한 것이 도 7b이다.
도 7b에 도시된 바와 같이, IRP_MJ_CLEANUP 실행전 루틴이 호출되고(S1), 콘텍스트가 있는지가 판단된다(S2).
그 판단결과, 콘텍스트가 없을 경우에는 종료하고, 콘텍스트가 있을 경우에는 파일 전체 경로를 검출하고(S3), 파일의 내용을 읽어서 PE 파일 여부를 검출하며(S4), 콘텍스트를 삭제한 후(S5) 파일 생성을 탐지한다(S6).
2.2 파일 삭제
파일 삭제도 상술한 파일 생성과 행위는 동일하다. 삭제 신호를 IRP_MJ_CREATE 파일 오브젝트를 추적하여 IRP_MJ_CLEANUP에서 탐지한다. IRP_MJ_CREATE에서 삭제 행위를 탐지해야 할 것 같지만 IRP_MJ_CREATE는 파일에 대한 접근을 의미하므로 언제든지 행위 취소가 가능하다.
해커가 파일을 디스크에서 삭제하기 위해 열었다는 신호를 IRP_MJ_CREATE에서 감시하고, 파일 오브젝트 추적을 위해 파일 오브젝트 Context를 생성한다. 생성한 Context는 모든 IRP에서 추적할 수 있다. IRP_MJ_CLEANUP에서 파일 오브젝트를 추적해 파일 삭제 행위 성공을 탐지한다. IRP_MJ_CLEANUP은 사용자 레벨에서 파일에 더 이상 접근할 수 없으므로 만약 파일 삭제를 취소하였다면, IRP_MJ_CLEANUP에서 탐지가 불가능하다. 따라서 공격 대상 PC에 파일이 확실히 삭제되었음을 확인하려면 IRP_MJ_CLEANUP에서 파일 오브젝트가 완전히 소멸되기 전에 탐지해야 한다. 운영체제는 파일을 삭제하면 삭제하려는 파일을 휴지통으로 이름을 변경하여 파일 이동 행위에 가깝다.
파일 삭제를 위한 파일 접근 감시 흐름을 도시한 것이 도 8a이다.
도 8a에 도시된 바와 같이, IRP_MJ_CREATE 실행 후 루틴이 호출되고(S1), I/O 파라미터의 Create Options값을 검출하며(S2), FILE_DELETE_ON_CLOSE인지가 판단된다(S3).
그 판단결과, FILE_DELETE_ON_CLOSE가 아닐 경우에는 종료하고, FILE_DELETE_ON_CLOSE일 경우에는 파일 오브젝트 콘텍스트를 생성하게 된다(S4).
파일 삭제 탐지 흐름을 도시한 것이 도 8b이다.
도 8b에 도시된 바와 같이, IRP_MJ_CLEANUP 실행전 루틴이 호출되고(S1), 콘텍스트가 있는지 판단된다(S2).
그 판단결과, 콘텍스트가 없을 경우에는 종료하고, 콘텍스트가 있을 경우에는 파일 전체 경로를 검출하고(S3), 파일의 내용을 읽어서 PE 파일 여부를 검출하며(S4), 콘텍스트를 삭제한 후(S5), 파일 삭제를 탐지한다(S6).
2.3 파일 이름 변경
IRP_MJ_SETINFORMATION 요청 전은 파일 이름을 변경하기 전이다. 변경하기 전에 파일 경로를 저장하고, 파일 오브젝트 Context를 생성한다. IRP_MJ_SETINFORMATION 요청을 완료하고 성공하면 파일 오브젝트를 추적한다. 파일 이름 변경은 운영체제에서 파일 이동 탐지 알고리즘과 동일하다.
다만, 본 발명에서는 부모 디렉토리가 변경되지 않았을 때, 이를 파일 이름 변경으로 판단하고, 부모 디렉토리가 변경되었을 때는 이를 파일 이동으로 판단한다. 운영체제는 파일 이름 변경을 하기 위한 함수를 제공하지 않는다. 이름 변경은 사용자 입장의 행위이므로 파일 이름 변경에 대한 시도 행위를 탐지해야 한다. 따라서 IRP_MJ_CLEANUP이 아닌 ACTIVITY의 실행 후 루틴에서 성공하였을 경우, 부모 디렉토리가 변경되지 않았을 때 파일 이름 변경으로 탐지한다.
파일 이름 변경을 위한 파일 접근 감시 흐름을 도시한 것이 도 9a이다.
도 9a에 도시된 바와 같이, IRP_MJ_SETINFORMATION 실행 전 루틴이 호출되고(S1), I/O 파라미터의 File 정보값을 검출하며(S2), FileRename Information인지가 판단된다(S3).
그 판단결과, FileRename Information이 아닐 경우에는 종료하고, FileRename Information일 경우에는 변경 전 전체 파일 경로를 검출하고(S4), 파일 오브젝트 콘텍스트를 생성하게 된다(S5).
파일 이름 변경 탐지 흐름을 도시한 것이 도 9b이다.
도 9b에 도시된 바와 같이, IRP_MJ_SETINFORMATION 실행 전 루틴이 호출되고(S1), I/O 파라미터의 File 정보값을 검출하며(S2), FileRename Information인지가 판단된다(S3).
그 판단결과, FileRename Information이 아닐 경우에는 종료하고, FileRename Information일 경우에는 추가적으로 콘텍스트가 있는지 판단된다(S4).
그 판단결과, 콘텍스트가 없을 경우에는 종료하고, 콘텍스트가 있을 경우에는 변경 전 전체 파일 경로를 검출하고(S6), 파일 이름 변경을 탐지하게 된다(S6).
2.4 파일 이동
IRP_MJ_SETINFORMATION 요청 전은 파일을 이동하기 전이다. 이동하기 전에 파일 경로를 저장하고, 파일 오브젝트 Context를 생성한다. IRP_MJ_SETINFORMATION 요청을 완료하고 성공하면 파일 오브젝트를 추적한다. 동일 볼륨간 파일 이동은 운영체제에서 파일 이름 변경 탐지 알고리즘과 동일하다.
다만, 본 발명에서는 부모 디렉토리가 변경되었을 때, 이를 파일 이동으로 판단하고, 부모 디렉토리가 변경되지 않았을 때는 이름 변경으로 판단한다. 운영체제는 파일 경로 이동을 위한 함수를 제공한다. 파일 경로 이동 행위는 IRP_MJ_CLEANUP이 아닌 ACTIVITY의 실행 후 루틴에서 요청이 성공하였을 경우, 부모 디렉토리가 변경되었을 때 파일 이동으로 탐지한다.
파일 이동을 위한 파일 접근 감시 흐름을 도시한 것이 도 10a이다.
도 10a에 도시된 바와 같이, IRP_MJ_SETINFORMATION 실행 전 루틴이 호출되고(S1), I/O 파라미터의 File Information 값이 검출되며(S2), FileRename Information인지가 판단된다(S3).
그 판단결과, FileRename Information이 아닐 경우에는 종료하고, FileRename Information일 경우에는 이동 전 전체 파일 경로를 검출하고(S4), 파일 오브젝트 콘텍스트를 생성하게 된다(S5).
파일 이동 탐지 흐름을 도시한 것이 도 10b이다.
도 10b에 도시된 바와 같이, IRP_MJ_SETINFORMATION 실행 전 루틴이 호출되고(S1), I/O 파라미터의 File Information값이 검출되며(S2), FileRename Information인지가 판단된다(S3).
그 판단결과, FileRename Information이 아닐 경우에는 종료하고, FileRename Information일 경우에는 추가적으로 콘텍스트가 있는지 판단된다(S4).
그 판단결과, 콘텍스트가 없을 경우에는 종료하고, 콘텍스트가 있을 경우에는 부모 디렉토리가 변경되었는지 판단된다(S5).
그 판단결과, 부모 디렉토리가 변경되지 않았을 경우에는 종료하고, 변경되었을 경우에는 이동 후 전체 파일 경로를 검출하고(S6), 파일 이동을 탐지하게 된다(S7).
2.5 파일 덮어쓰기
파일 덮어쓰기는 기존 파일 생성 및 삭제와 탐지 방법이 동일하다. I/O 결과의 Information 값이 FILE_OVERWRITTEN인지 검사하여 파일 오브젝트의 Context를 생성한다. IRP_MJ_CLEANUP에서 파일 오브젝트의 Context가 있으면 파일 덮어쓰기로 탐지한다. IRP_MJ_CREATE는 파일에 대한 접근을 의미하는 것이므로 언제든지 행위를 취소할 수 있다. 해커가 파일을 덮어쓰기 하기 위해 열었다는 신호를 IRP_MJ_CREATE에서 검사하고, 파일 오브젝트 추적을 위해 파일 오브젝트 Context를 생성한다. 생성한 Context는 모든 IRP에서 추적할 수 있다. IRP_MJ_CLEANUP에서 파일 오브젝트를 추적해 덮어쓰기 행위 성공을 탐지한다.
파일 덮어쓰기를 위한 파일 접근 감시 흐름을 도시한 것이 도 11a이다.
도 11a에 도시된 바와 같이, IRP_MJ_CREATE 실행 후 루틴이 호출되고(S1), I/O 결과의 정보값이 검출되며(S2), FILE_OVERWRITTEN 인지가 판단된다(S3).
그 판단결과, FILE_OVERWRITTEN이 아닐 경우에는 종료하고, FILE_OVERWRITTEN일 경우에는 파일 오브젝트 콘텍스트를 생성하게 된다(S4).
파일 덮어쓰기 탐지 흐름을 도시한 것이 도 11b이다.
도 11b에 도시된 바와 같이, IRP_MJ_CLEANUP 실행 후 루틴이 호출되고(S1), 콘텍스트가 있는지 판단된다(S2).
그 판단결과, 콘텍스트가 없을 경우에는 종료하고, 있을 경우에는 파일 전체 경로를 검출하고(S3), 파일의 내용을 읽어서 PE 파일 여부를 검출하며(S4), 콘텍스트를 삭제한 후(S5), 파일 덮어쓰기를 탐지하게 된다(S6).
2.6 파일 열기
파일 열기는 IRP_MJ_CREATE 실행 전 루틴에서 행위를 탐지한다. 파일을 열면 IRP_MJ_CREATE의 I/O Parameter의 Create Disposition이 FILE_OPEN이거나 FILE_OPEN_IF일 경우에 파일을 열었다고 탐지한다.
파일 열기 탐지 흐름을 도시한 것이 도 12이다.
도 12에 도시된 바와 같이, IRP_MJ_CREATE 실행 전 루틴이 호출되고(S1), 파라미터의 Create Disposition값이 검출되며(S2), FILE_OPEN인지를 판단하게 된다.
그 판단결과, FILE_OPEN일 경우에는 파일 열기를 탐지하고(S5), FILE_OPEN이 아닐 경우에는 FILE_OPEN_IF인지가 판단된다(S4).
그 판단결과, FILE_OPEN_IF일 경우에는 파일 열기를 탐지하고(S5), FILE_OPEN_IF가 아닐 경우에는 종료한다.
3. 네트워크 행위 수집
운영체제는 소켓을 생성하여 통신시 가상의 파일 오브젝트를 사용한다. 이는 도 13에 도시된 바와 같이, IRP_MJ_CREATE ?? ACTIVITY ?? IRP_MJ_CLEANUP ?? IRP_MJ_CLOSE 등 크게 총 4 단계를 거치는 것이 일반적이다. 여기서 ACTIVITY는 IRP_MJ CREATE, IRP_MJ CLEANUP, IRP_MJ CLOSE를 제외한 모든 IRP 종류를 의미한다.
TDI 드라이버에 필터를 장착하면 IRP가 파일 시스템에 도달하기 전에 제어할 수 있고, IRP가 파일 시스템으로부터 완료된 후에 제어할 수 있다.
운영체제는 네트워크에 접속할 때마다 하나의 소켓을 생성하는데, 내부적으로는 한 개의 가상 파일 오브젝트를 생성한다. 사용자가 더 이상 사용하지 않을 경우에는 IRP_MJ_CLEANUP이 호출되고, 운영체제까지 사용하지 않을 경우에는 IRP_MJ_CLOSE를 호출한다.
원격지에서 접속 또는 해제는 현재 프로세스 Context가 아니라 임의의 Context에서 이벤트로 발생하는 것이므로, 이벤트 Context의 정리가 필요하다. 따라서 IRP_MJ_CREATE에서 자체 Context를 생성하고, IRP_MJ_CLEANUP에서 이벤트 Context를 정리해야 한다.
3.1 로컬 접속
사용자가 로컬 접속을 위해 Connect 함수를 호출하면, IRP_MJ_INTERNAL_DEVICE_CONTROL의 TDI_CONNECT IRP가 발생한다. 따라서 해당 시점에 Connect 시도를 탐지한다.
로컬 접속 탐지 흐름을 도시한 것이 도 14이다.
도 14에 도시된 바와 같이, IRP_MJ_INTERNAL_DEVICE_CONTROL 실행 전 루틴이 호출되고(S1), IRP 스택의 Minor Function값이 검출되면(S2), TDI_CONNECT인지가 판단된다(S3).
그 판단결과, TDI_CONNECT가 아닐 경우에는 종료하고, TDI_CONNECT일 경우에는 원격지 접속 IP, PORT를 검출하게 된다(S4).
3.2 로컬 접속 해제
사용자가 로컬 접속 해제를 위해 Disconnect 함수를 호출하면, IRP_MJ_INTERNAL_DEVICE_CONTROL의 TDI_DISCONNECT IRP가 발생한다. 따라서 해당 시점에 Disconnect 시도를 탐지할 수 있다. Connect 시도를 한 후에 해제한 범위를 지정하려면 해당 소켓이 종료되는지를 탐지해야 한다. 따라서 IRP_MJ_CREATE 시점에 생성한 자체 Context가 있는지 확인한 후에 로컬 접속 해제를 탐지한다.
로컬 접속 해제 탐지 흐름을 도시한 것이 도 15이다.
도 15에 도시된 바와 같이, IRP_MJ_INTERNAL_DEVICE_CONTROL 실행 전 루틴이 호출되고(S1), IRP 스택의 Minor Function값이 검출되면(S2), TDI_DISCONNECT인지가 판단된다(S3).
그 판단결과, TDI_DISCONNECT가 아닐 경우에는 종료하고, TDI_DISCONNECT일 경우에는 콘텍스트가 있는지 판단된다(S4).
그 판단결과, 콘텍스트가 없을 경우에는 종료하고, 있을 경우에는 원격지 접속 IP, PORT를 검출하게 된다(S5).
3.3 원격 접속
외부에서 로컬로 접속하는 행위를 탐지하려면 로컬에서 접속 대기를 해야 한다. 접속 대기한 소켓 파일 오브젝트에 원격에서 접속하면 TDI_EVENT_CONNECT가 발생한다. 따라서 접속 대기 요청이 올 때, Event Connect Handler를 변경하여 감지할 수 있도록 하고, TDI_EVENT_CONNECT가 발생하면 원격지 접속을 탐지한다.
원격 접속 감시 흐름을 도시한 것이 도 16a이다.
도 16a에 도시된 바와 같이, IRP_MJ_INTERNAL_DEVICE_CONTROL 실행 전 루틴이 호출되고(S1), IRP 스택의 Minor Function값이 검출되면(S2), TDI_SET_EVENT_HANDLER인지 판단된다(S3).
그 판단결과, TDI_SET_EVENT_HANDLER가 아닐 경우에는 종료하고, TDI_SET_EVENT_HANDLER일 경우에는 콘텍스트가 있는지 판단된다(S4).
그 판단결과, 콘텍스트가 없으면 종료하고, 있으면 TDI_EVENT_CONNECT인지 판단된다(S5).
그 판단결과, TDI_EVENT_CONNECT가 아닐 경우에는 종료하고, TDI_EVENT_CONNECT일 경우에는 Event Context Handler를 변경한 후(S6), 원격 접속 감지 대기를 한다(S7).
원격 접속 탐지 흐름을 도시한 것이 도 16b이다.
도 16b에 도시된 바와 같이, TDI_EVENT_CONNECT 루틴이 호출되고(S1), 콘텍스트가 있는지 판단된다(S2).
그 판단결과, 콘텍스트가 없을 경우에는 종료하고, 있을 경우에는 원격지 정보를 검출한 후(S3), 원격 접속을 탐지하게 된다(S4).
3.4 원격 접속 해제
외부에서 로컬로 접속 해제하는 행위를 탐지하려면 로컬에서 접속 해제 대기를 해야 한다. 접속 해제 대기한 소켓 파일 오브젝트에 원격에서 접속 해제하면 TDI_EVENT_DISCONNECT가 발생한다. 따라서 접속 대기 요청이 올 때, Event Disconnect Handler를 변경해서 감지할 수 있도록 하고, TDI_EVENT_DISCONNECT가 발생하면 원격지 접속 해제를 탐지한다.
원격 접속 해제 감시 흐름을 도시한 것이 17a이다.
도 17a에 도시된 바와 같이, IRP_MJ_INTERNAL_DEVICE_CONTROL 실행 전 루틴이 호출되고(S1), IRP 스택의 Minor Function값이 검출되면(S2), TDI_SET_EVENT_HANDLER인지 판단된다(S3).
그 판단결과, TDI_SET_EVENT_HANDLER가 아닐 경우에는 종료하고, TDI_SET_EVENT_HANDLER일 경우에는 콘텍스트가 있는지 판단된다(S4).
그 판단결과, 콘텍스트가 없을 경우에는 종료하고, 있을 경우에는 TDI_EVENT_DISCONNECT인지 판단된다(S5).
그 판단결과, TDI_EVENT_DISCONNECT가 아닐 경우에는 종료하고, TDI_EVENT_DISCONNECT일 경우에는 Event Context Handler를 변경한 후(S6), 원격 접속 해제 감지 대기를 한다(S7).
원격 접속 해제 탐지 흐름을 도시한 것이 도 17b이다.
도 17b에 도시된 바와 같이, TDI_EVENT_DISCONNECT 루틴이 호출되고(S1), 콘텍스트가 있는지 판단된다(S2).
그 판단결과, 콘텍스트가 없을 경우에는 종료하고, 있을 경우에는 원격지 정보를 검출한 후(S3), 원격 접속 해제를 탐지하게 된다(S4).
4 외부 디스크 행위 수집
4.1 외부 디스크 삽입
윈도우 운영체제는 NTFS, FAT 파일 시스템을 제공한다. 사용자가 USB 메모리, 하드 디스크를 삽입하면 파일 시스템으로 장착(Mount)되는데, 이때 파일 시스템 필터 매니저에 등록된 필터 드라이버의 Instance Setup 콜백 함수가 호출된다. 인자로 넘어온 디바이스 타입(Device Type)을 조사해서 USB인지 또는 하드 디스크인지 탐지한다.
외부 디스크 삽입 탐지 흐름을 도시한 것이 도 18이다.
도 18에 도시된 바와 같이, 파일 시스템 필터에 등록된 Instance Setup 루틴이 호출되고(S1), Device Type이 FILE_DEVICE_DISK_FILE_SYSTEM인지 판단된다(S2).
그 판단결과, FILE_DEVICE_DISK_FILE_SYSTEM이 아닐 경우에는 종료하고, FILE_DEVICE_DISK_FILE_SYSTEM일 경우에는 볼륨 타입(USB Memory, HDD)을 검출한 후(S3), 외부 디스크 삽입을 탐지하게 된다(S4).
4.2 외부 디스크 해제
외부 디스크를 해제하면 IRP_MJ_PNP 요청 전 IRP가 발생한다. IRP Minor Function에 IRP_MN_REMOVE_DEVICE이거나 IRP_MN_SURPRISE_REMOVAL값이 기록되어 있으면 디스크를 제거하거나, 갑작스럽게 제거했을 때 발생한 것으로 탐지 한다.
외부 디스크 해제 탐지 흐름을 도시한 것이 도 19이다.
도 19에 도시된 바와 같이, IRP_MJ_PNP 요청 전 함수가 호출되고(S1), IRP 스택의 Minor Funtion값이 검출되며(S2), IRP_MN_REMOVE_DEVICE인지 판단된다(S3).
그 판단결과, IRP_MN_REMOVE_DEVICE일 경우에는 볼륨 타입을 검출하고(S4), 외부 디스크 해제를 탐지하게 된다(S5).
한편, 상기 스텝 S3에서 IRP_MN_REMOVE_DEVICE가 아닐 경우에는 IRP_MN_SURPRISE_REMOVAL인지 판단된다(S41),
그 판단결과, IRP_MN_SURPRISE_REMOVAL가 아닐 경우에는 종료하고, IRP_MN_SURPRISE_REMOVAL일 경우에는 스텝 S4로 나아가서 볼륨 타입을 검출하고(S4), 외부 디스크 해제를 탐지하게 된다(S5).
100 : ENDPOINT-PC 200 : 프로세스 행위 수집부
300 : 파일 행위 수집부 400 : 네트워크 행위 수집부
500 : 외부 디스크 행위 수집부

Claims (23)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 프로세스의 생성 및 종료시 호출받는 프로세스 콜백 함수와, 실행 파일의 원시 코드가 메모리에 올라올 때 호출받는 이미지 콜백 함수에 의해 프로세스의 생성 및 종료 행위를 수집하는 악성코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법에 있어서,
    상기 프로세스 생성 행위 수집은,
    프로세스 콜백 함수가 호출되는 제1단계;
    자체 프로세스 콘텍스트가 저장되는 제2단계;
    이미지 콜백 함수가 호출되는 제3단계;
    콘텍스트 조회가 요청되었는지 판단되는 제4단계;
    상기 판단결과, 콘텍스트 조회 요청이 없는 경우에는 종료하고, 있는 경우에는 프로세스 전체 경로를 검출하는 제5단계;
    EPROCESS의 PEB에서 Command Line 검사로 실행 인자를 검출하는 제6단계; 및
    프로세스 생성을 탐지하는 제7단계로 이루어지고,
    상기 프로세스 종료 행위 수집은,
    프로세스 콜백 함수가 호출되는 제1단계;
    콘텍스트 조회가 요청되었는지 판단되는 제2단계;
    상기 판단결과, 콘텍스트 조회 요청이 없었으면 종료하고, 있었으면 자체 프로세스 콘텍스트를 삭제하는 제3단계; 및
    프로세스 종료 행위를 탐지하는 제4단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  6. 삭제
  7. 삭제
  8. 파일 이벤트 발생시 파일 IRP(I/O Request Packet)의 제어를 위하여 생성된 파일 오브젝트를 추적하여 파일 생성, 삭제, 이름 변경, 이동, 덮어쓰기, 열기 행위를 수집하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법에 있어서,
    상기 파일 생성 행위 수집은,
    IRP_MJ_CLEATE 실행 후 루틴이 호출되는 제1단계;
    파일 생성 I/O 완료 정보값이 FILE_CREATED 라면 콘텍스트가 생성되는 제2단계;
    IRP_MJ-CLEANUP 실행 전 루틴이 호출되는 제3단계;
    콘텍스트가 있는지가 판단되는 제4단계;
    상기 판단결과, 콘텍스트가 없을 경우에는 종료하고, 콘텍스트가 있을 경우에는 파일 전체 경로를 검출하는 제5단계;
    파일의 내용을 읽어서 PE 파일 여부를 검출하는 제6단계; 및
    콘텍스트를 삭제하고 파일 생성을 탐지하는 제7단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  9. 삭제
  10. 제8항에 있어서,
    상기 파일 삭제 행위 수집은,
    IRP_MJ_CREATE 실행 후 루틴이 호출되는 제1단계;
    I/O 파라미터값의 생성 옵션이 FILE_DELETE_ON_CLOSE 라면 콘텍스트 가 생성되는 제2단계;
    IRP_MJ-CLEANUP 실행 전 루틴이 호출되는 제3단계;
    콘텍스트가 있는지 판단되는 제4단계;
    상기 판단결과, 콘텍스트가 없을 경우에는 종료하고, 콘텍스트가 있을 경우에는 파일 전체 경로를 검출하는 제5단계;
    파일의 내용을 읽어서 PE 파일 여부를 검출하는 제6단계; 및
    콘텍스트를 삭제한 후, 파일 삭제를 탐지하는 제7단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  11. 제8항에 있어서,
    상기 파일 이름 변경 행위 수집은,
    IRP_MJ_SETINFORMATION 실행 전 루틴이 호출되는 제1단계;
    I/O 파라미터의 File Information값을 검출하는 제2단계;
    FileRename Information인지가 판단되는 제3단계;
    상기 판단결과, FileRename Information이 아닐 경우에는 종료하고, FileRename Information일 경우에는 콘텍스트가 있는지 판단되는 제4단계; 및
    상기 판단결과, 콘텍스트가 없을 경우에는 종료하고, 콘텍스트가 있을 경우에는 변경 전 전체 파일 경로를 검출하고, 파일 이름 변경을 탐지하는 제5단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  12. 제8항에 있어서,
    상기 파일 이동 행위 수집은,
    IRP_MJ_SETINFORMATION 실행 전 루틴이 호출되는 제1단계;
    I/O 파라미터의 File Information값이 검출되는 제2단계;
    FileRename Information인지 판단되는 제3단계;
    상기 판단결과, FileRename Information이 아닐 경우에는 종료하고, FileRename Information일 경우에는 콘텍스트가 있는지 판단되는 제4단계;
    상기 판단결과, 콘텍스트가 없을 경우에는 종료하고, 콘텍스트가 있을 경우에는 부모 디렉토리가 변경되었는지 판단되는 제5단계; 및
    상기 판단결과, 부모 디렉토리가 변경되지 않았을 경우에는 종료하고, 변경되었을 경우에는 이동 후 전체 파일 경로를 검출하고, 파일 이동을 탐지하는 제6단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  13. 제8항에 있어서,
    상기 파일 덮어쓰기 행위 수집은,
    IRP_MJ_CLEATE 실행 후 루틴이 호출되는 제1단계;
    파일 생성 I/O 완료 정보값이 FILE_OVERWRITTEN이라면 콘텍스트가 생성되는 제2단계;
    IRP_MJ_CLEANUP 실행 전 루틴이 호출되는 제3단계;
    콘텍스트가 있는지 판단되는 제4단계;
    상기 판단결과, 콘텍스트가 없을 경우에는 종료하고, 있을 경우에는 파일 전체 경로를 검출하는 제5단계;
    파일의 내용을 읽어서 PE 파일 여부를 검출하는 제6단계; 및
    콘텍스트 삭제 후, 파일 덮어쓰기를 탐지하는 제7단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  14. 제8항에 있어서,
    상기 파일 열기 행위 수집은,
    IRP_MJ_CREATE 실행 전 루틴이 호출되는 제1단계;
    파라미터의 Create Disposition값이 검출되는 제2단계;
    FILE_OPEN인지가 판단되는 제3단계;
    상기 판단결과, FILE_OPEN일 경우에는 파일 열기를 탐지하고, FILE_OPEN이 아닐 경우에는 FILE_OPEN_IF인지가 판단되는 제4단계; 및
    상기 판단결과, FILE_OPEN_IF일 경우에는 파일 열기를 탐지하고, FILE_OPEN_IF가 아닐 경우에는 종료하는 제5단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  15. 네트워크 이벤트 발생시 네트워크 IRP의 제어를 위하여 생성된 파일 오브젝트를 추적하여 로컬 접속, 로컬 접속 해제, 원격 접속, 원격 접속 해제 행위를 수집하는 악성코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법에 있어서,
    상기 로컬 접속 행위 수집은,
    IRP_MJ_INTERNAL_DEVICE_CONTROL 실행 전 루틴이 호출되는 제1단계;
    IRP 스택의 Minor Function값이 검출되는 제2단계;
    TDI_CONNECT인지가 판단되는 제3단계; 및
    상기 판단결과, TDI_CONNECT가 아닐 경우에는 종료하고, TDI_CONNECT일 경우에는 원격지 접속 IP, PORT를 검출하는 제4단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  16. 삭제
  17. 제15항에 있어서,
    상기 로컬 접속 해제 행위 수집은,
    IRP_MJ_INTERNAL_DEVICE_CONTROL 실행 전 루틴이 호출되는 제1단계;
    IRP 스택의 Minor Function값이 검출되는 제2단계;
    TDI_DISCONNECT인지가 판단되는 제3단계;
    상기 판단결과, TDI_DISCONNECT가 아닐 경우에는 종료하고, TDI_DISCONNECT일 경우에는 콘텍스트가 있는지 판단되는 제4단계; 및
    상기 판단결과, 콘텍스트가 없을 경우에는 종료하고, 있을 경우에는 원격지 접속 IP, PORT를 검출하는 제5단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  18. 제15항에 있어서,
    상기 원격 접속 행위 수집은,
    TDI_EVENT_CONNECT 루틴이 호출되는 제1단계;
    콘텍스트가 있는지 판단되는 제2단계; 및
    상기 판단결과, 콘텍스트가 없을 경우에는 종료하고, 있을 경우에는 원격지 정보를 검출한 후, 원격 접속을 탐지하는 제3단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  19. 제15항에 있어서,
    상기 원격 접속 해제 행위 수집은,
    TDI_EVENT_DISCONNECT 루틴이 호출되는 제1단계;
    콘텍스트가 있는지 판단되는 제2단계; 및
    상기 판단결과, 콘텍스트가 없을 경우에는 종료하고, 있을 경우에는 원격지 정보를 검출한 후, 원격 접속 해제를 탐지하는 제3단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  20. 외부 디스크의 삽입시 호출되는 콜백 함수와, 해제시 발생되는 IRP에 의해 디스크 삽입 및 해제 행위를 수집하는 악성코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법에 있어서,
    상기 디스크 삽입 행위 수집은,
    파일 시스템 필터에 등록된 Instance Setup 루틴이 호출되는 제1단계;
    디바이스 타입이 FILE_DEVICE_DISK_FILE_SYSTEM인지 판단되는 제2단계; 및
    상기 판단결과, FILE_DEVICE_DISK_FILE_SYSTEM이 아닐 경우에는 종료하고, FILE_DEVICE_DISK_FILE_SYSTEM일 경우에는 볼륨 타입을 검출한 후, 외부 디스크 삽입을 탐지하는 제3단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  21. 삭제
  22. 제20항에 있어서,
    상기 디스크 해제 행위 수집은,
    IRP_MJ_PNP 요청 전 함수가 호출되는 제1단계;
    IRP 스택의 Minor Funtion값이 검출되는 제2단계;
    IRP_MN_REMOVE_DEVICE인지 판단되는 제3단계; 및
    상기 판단결과, IRP_MN_REMOVE_DEVICE일 경우에는 볼륨 타입을 검출하고, 외부 디스크 해제를 탐지하는 제4단계로 이루어진 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
  23. 제22항에 있어서,
    상기 제3단계에서 IRP_MN_REMOVE_DEVICE가 아닐 경우에는 IRP_MN_SURPRISE_REMOVAL인지 판단되어지고;
    상기 판단결과, IRP_MN_SURPRISE_REMOVAL가 아닐 경우에는 종료하고, IRP_MN_SURPRISE_REMOVAL일 경우에는 볼륨 타입을 검출하고, 외부 디스크 해제를 탐지하는 것을 특징으로 하는 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법.
KR1020160032995A 2016-03-18 2016-03-18 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법 KR101662162B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160032995A KR101662162B1 (ko) 2016-03-18 2016-03-18 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160032995A KR101662162B1 (ko) 2016-03-18 2016-03-18 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법

Publications (1)

Publication Number Publication Date
KR101662162B1 true KR101662162B1 (ko) 2016-10-10

Family

ID=57145955

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160032995A KR101662162B1 (ko) 2016-03-18 2016-03-18 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법

Country Status (1)

Country Link
KR (1) KR101662162B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106802882A (zh) * 2016-12-29 2017-06-06 杭州迪普科技股份有限公司 一种检测命令行界面编码方式的方法及装置
KR102177223B1 (ko) * 2020-06-26 2020-11-10 최원천 악성코드 모니터링을 수행하는 서버 및 그 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090026846A (ko) * 2007-09-11 2009-03-16 (주)기가바이트씨앤씨 이원화된 독립적 환경을 통한 내외부망 분리 장치 및 그제어 방법
KR20090109640A (ko) * 2008-04-16 2009-10-21 주식회사 안철수연구소 Usb 디바이스 보안 장치 및 방법
KR20120031745A (ko) * 2010-09-27 2012-04-04 한국인터넷진흥원 커널 콜백 매커니즘을 이용한 악성코드 자동 분석 방법
KR20140036714A (ko) * 2012-09-18 2014-03-26 이선희 단위 파일별 행위 분석 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090026846A (ko) * 2007-09-11 2009-03-16 (주)기가바이트씨앤씨 이원화된 독립적 환경을 통한 내외부망 분리 장치 및 그제어 방법
KR20090109640A (ko) * 2008-04-16 2009-10-21 주식회사 안철수연구소 Usb 디바이스 보안 장치 및 방법
KR20120031745A (ko) * 2010-09-27 2012-04-04 한국인터넷진흥원 커널 콜백 매커니즘을 이용한 악성코드 자동 분석 방법
KR20140036714A (ko) * 2012-09-18 2014-03-26 이선희 단위 파일별 행위 분석 시스템

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106802882A (zh) * 2016-12-29 2017-06-06 杭州迪普科技股份有限公司 一种检测命令行界面编码方式的方法及装置
CN106802882B (zh) * 2016-12-29 2020-03-06 杭州迪普科技股份有限公司 一种检测命令行界面编码方式的方法及装置
KR102177223B1 (ko) * 2020-06-26 2020-11-10 최원천 악성코드 모니터링을 수행하는 서버 및 그 시스템

Similar Documents

Publication Publication Date Title
US6907396B1 (en) Detecting computer viruses or malicious software by patching instructions into an emulator
US9418227B2 (en) Detecting malicious software
JP4828199B2 (ja) アンチウィルスソフトウェアアプリケーションの知識基盤を統合するシステムおよび方法
US8065728B2 (en) Malware prevention system monitoring kernel events
US8453244B2 (en) Server, user device and malware detection method thereof
KR101647487B1 (ko) 패치파일 분석시스템과 분석방법
CN107004088B (zh) 确定装置、确定方法及记录介质
CN104598823A (zh) 一种安卓系统中内核级rootkit检测方法及其系统
KR20140033349A (ko) 가상 머신 모니터 기반 안티 악성 소프트웨어 보안 시스템 및 방법
US7024694B1 (en) Method and apparatus for content-based instrusion detection using an agile kernel-based auditor
US7685174B2 (en) Automatic regeneration of computer files
KR102079304B1 (ko) 화이트리스트 기반 악성코드 차단 장치 및 방법
KR101068931B1 (ko) 패턴 탐지 기반의 웹쉘 관제 시스템 및 그 방법
CN114065196A (zh) Java内存马检测方法、装置、电子设备与存储介质
KR101662162B1 (ko) 악성 코드의 감염 경로 역추적을 위한 사용자 행위 검출 방법
CN101452619B (zh) 一种税控收款机后台系统隔离u盘病毒的方法
CN103001937A (zh) 孤岛式以太网防御移动存储介质病毒的系统和方法
CN115086081B (zh) 一种蜜罐防逃逸方法及系统
KR100968121B1 (ko) 이동식 디스크를 통한 악성 프로그램 차단 방법 및 그 장치
EP2584484B1 (en) System and method for protecting a computer system from the activity of malicious objects
KR101290852B1 (ko) 가상 머신을 이용한 데이터 유출 방지 장치 및 방법
KR101988747B1 (ko) 하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치
KR102559482B1 (ko) It 장비 반출입 관리 시스템
KR101234063B1 (ko) 악성코드 자동 수집 시스템
CN117272299A (zh) 一种内存马的查杀方法及系统

Legal Events

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

Payment date: 20200210

Year of fee payment: 5