KR101908517B1 - 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법 - Google Patents

스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법 Download PDF

Info

Publication number
KR101908517B1
KR101908517B1 KR1020170117964A KR20170117964A KR101908517B1 KR 101908517 B1 KR101908517 B1 KR 101908517B1 KR 1020170117964 A KR1020170117964 A KR 1020170117964A KR 20170117964 A KR20170117964 A KR 20170117964A KR 101908517 B1 KR101908517 B1 KR 101908517B1
Authority
KR
South Korea
Prior art keywords
code
string
packer
rule set
file
Prior art date
Application number
KR1020170117964A
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 KR1020170117964A priority Critical patent/KR101908517B1/ko
Application granted granted Critical
Publication of KR101908517B1 publication Critical patent/KR101908517B1/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (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)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에 관한 것으로서, 보다 구체적으로는 원격 관리 도구를 대상으로 한 악성코드 탐지 및 패커 해제 방법에 있어서, (1) 샘플로부터 원격 관리 도구에 대한 악성코드와 패커가 가지고 있는 스트링 및 코드 시그니처 중 적어도 어느 하나를 추출하는 단계; (2) 상기 단계 (1)에서 추출한 스트링 및 코드 시그니처 중 적어도 어느 하나를 이용하여 공격 그룹별 원격 관리 도구에 대한 모듈 룰셋 및 패커에 대한 패커 룰셋을 생성하는 단계; 및 (3) 상기 단계 (2)에서 생성한 모듈 룰셋 및 패커 룰셋에 따라 매칭되는 파일을 탐지하고, 어떤 룰셋에 해당하는지 판단하여 패킹 여부와 공격 그룹을 판별하는 단계를 포함하되, 상기 단계 (3)은, 패킹된 파일을 가상 머신에서 실행하여 상기 가상 머신의 메모리에서 패킹이 해제된 실행 파일을 덤프하는 것을 그 구성상의 특징으로 한다.
본 발명에서 제안하고 있는 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에 따르면, 원격 관리 도구를 대상으로 한 악성코드의 스트링과 코드 시그니처를 추출하여 룰셋을 생성하고, 생성한 룰셋을 기반으로 원격 관리 도구를 탐지하여, 원격 관리 도구를 대상으로 한 공격 그룹을 판별할 수 있다.
또한, 본 발명에서 제안하고 있는 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에 따르면, 악성코드가 포함된 파일이 패킹되어 있는 경우에도 패킹 여부를 확인하고, 패커를 특정하여 메모리 포렌식을 통해 가상 머신에서 패킹을 해제함으로써 안전하게 패킹이 해제된 파일을 획득할 수 있고, 패킹된 파일에 포함된 악성코드를 탐지하여 탐지율을 증가시킬 수 있다.

Description

스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법{METHOD FOR MALWARE DETECTION AND UNPACK OF MALWARE USING STRING AND CODE SIGNATURE}
본 발명은 악성코드를 탐지하여 악성코드의 공격 그룹을 판별하는 방법에 관한 것으로, 보다 구체적으로는 스트링과 코드 시그니처를 이용해 악성코드의 공격 그룹을 판별할 뿐만 아니라 패킹된 악성코드를 패킹 해제(언패킹)할 수 있는 악성코드 탐지 및 패커 해제 방법에 관한 것이다.
정보통신기술의 발달과 함께 악성코드를 이용한 사이버 공격 또한 급증하고 있다. 사이버 공격으로 인한 피해가 늘어남에 따라 다양한 방식의 악성코드 탐지 기법들이 개발되고 있으며, 공격 그룹 판별을 위한 프로파일링 기술이 연구되고 있다. 최근 많은 공격 그룹들은 맞춤형 악성코드를 개발하기보다는 기존의 악성코드를 위·변조하여 가공하는 공격 방식을 주로 이용하고 있다. 이는 악성코드가 발견되더라도 수많은 공격에 사용되는 원격 관리 도구(Remote Access Tool; RAT)의 사용 기록 때문에 APT(Advanced Persistent Threat) 공격 그룹의 정체를 숨길 수 있기 때문이다(D. Kaspersky Security Bulletin. Previsioni per il 2016. 참조). 따라서 원격 관리 도구를 이용하는 공격 그룹을 판별할 수 있는 기술에 대한 연구가 요구되고 있다.
원격 관리 도구는 많은 공격자들이 사용하는 도구로, 일반적으로 대상 시스템을 감염시킨 후 해당 시스템을 원격에서 제어하기 위해 사용된다. 원격 관리 도구는 시스템 감염을 위한 모듈을 생성하는데, 모듈이 시스템에서 실행되면 공격자는 대상 시스템을 원격에서 제어할 수 있게 된다. 대표적인 원격 관리 도구로는 프랑스에서 크게 이슈가 되었던 다크코멧(DarkComet)이 있으며, 싱가포르에서 JAR 파일 형태로 활동하며 윈도우즈(Windows), 리눅스(Linux), macOS 및 안드로이드(Android)를 지원하는 Adwind RAT이 있다. 이뿐만 아니라 Black Shades, JSpy, Pussy, Bozok, Poison, njRAT, DomeWare 등 많은 원격 관리 도구들이 존재한다.
원격 관리 도구는 공통적으로 원격 접속 환경을 만들어 주는 모듈을 생성하며, 해당 모듈이 실행되면 설정한 URL에서 파일을 내려 받는 다운로더(Downloader)를 생성할 수 있다. 또한, 감염된 대상 시스템의 정보를 간편하게 확인할 수 있으며, 시스템의 모니터링 또한 가능하다. 원격 관리 모듈에서 생성된 모듈은 통상적으로 이메일에 첨부하여 전송되거나, 웹 사이트의 취약점을 이용해 드라이브 바이 다운로드(Drive By Download; DBD) 공격으로 대상 시스템을 감염시킨다.
대다수의 원격 관리 도구는 모듈 실행 시 시스템에 인젝션될 때 사용할 뮤텍스명, 키로거 기능, 플러그인 기능, 아이콘 이미지 변경, 및 탐지 도구 우회 등의 기능을 제공한다. 도 1은 원격 관리 도구 중 하나인 다크코멧의 모듈 생성 화면을 도시한 도면이다. 도 1에 도시된 바와 같이, 다크코멧은 빠른 모듈 생성 화면(Minimalist(Quick))의 설정을 통해 감염 시스템에서 실행될 모듈(실행 파일)을 설정할 수 있으며, 감염 PC ID, 감염 시 연결될 IP 주소, 포트 번호, 은닉될 장소, 실행 파일에 사용할 아이콘을 지정할 수 있다. 이처럼 원격 관리 도구는 사용하기 편리한 인터페이스를 제공하는 만큼 사이버 공격에 능숙하지 않은 공격자도 쉽게 사용할 수 있다.
원격 관리 도구에서 모듈을 생성하기 때문에 원격 관리 도구에서 생성하는 모듈의 해시값(Hash value)을 이용하면 악성코드를 탐지할 수 있다. 그러나 원격 관리 도구에서 생성되는 모듈은 주로 C&C 서버 주소, 기능 활성화 및 비활성화에 따라 해시값이 변하기 때문에 행위 기반의 탐지가 필요하며, 모듈 내에 존재하는 데이터를 탐지할 필요가 있다.
한편, 패커(Packer)는 본래 실행 파일을 압축하여 용량을 줄이는 것을 목적으로 사용된다. 그러나 악성코드에서는 파일 용량을 줄일 뿐만 아니라 파일 내부의 코드와 리소스를 감추기 위해 사용되고 있다. 패커는 악성코드를 보호하기 위한 보호 기법 중 하나로 적용되므로, 패커에 의해 패킹된 프로그램은 실행되면 정상적으로 실행된다. 즉, 패킹된 파일의 프로그램이 실행되면 패킹된 원본 코드가 해제되면서 악성코드가 실행된다. 패킹된 파일은 내부 리소스를 보호할 뿐만 아니라 원본 코드를 확인하기 어렵게 만드므로, 패킹된 파일을 통해 악성코드를 분석하는데 많은 어려움을 겪고 있다.
해당 기술분야와 관련된 선행기술로서, 대한민국 공개특허 제 10-2017-0057030호 ‘시그니처 기반 네트워크 공격 탐지 및 공격 시그니처 생성 방법 및 장치’ 등이 제안된 바 있다.
본 발명은 기존에 제안된 방법들의 상기와 같은 문제점들을 해결하기 위해 제안된 것으로서, 원격 관리 도구를 대상으로 한 악성코드의 스트링과 코드 시그니처를 추출하여 룰셋을 생성하고, 생성한 룰셋을 기반으로 원격 관리 도구를 탐지하여, 원격 관리 도구를 대상으로 한 공격 그룹을 판별할 수 있는, 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은, 악성코드가 포함된 파일이 패킹되어 있는 경우에도 패킹 여부를 확인하고, 패커를 특정하여 메모리 포렌식을 통해 가상 머신에서 패킹을 해제함으로써 안전하게 패킹이 해제된 파일을 획득할 수 있고, 패킹된 파일에 포함된 악성코드를 탐지하여 탐지율을 증가시킬 수 있는, 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법을 제공하는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명의 특징에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법은,
원격 관리 도구를 대상으로 한 악성코드 탐지 및 패커 해제 방법에 있어서,
(1) 샘플로부터 원격 관리 도구에 대한 악성코드와 패커가 가지고 있는 스트링 및 코드 시그니처 중 적어도 어느 하나를 추출하는 단계;
(2) 상기 단계 (1)에서 추출한 스트링 및 코드 시그니처 중 적어도 어느 하나를 이용하여 공격 그룹별 원격 관리 도구에 대한 모듈 룰셋 및 패커에 대한 패커 룰셋을 생성하는 단계; 및
(3) 상기 단계 (2)에서 생성한 모듈 룰셋 및 패커 룰셋에 따라 매칭되는 파일을 탐지하고, 어떤 룰셋에 해당하는지 판단하여 패킹 여부와 공격 그룹을 판별하는 단계를 포함하되,
상기 단계 (3)은,
패킹된 파일을 가상 머신에서 실행하여 상기 가상 머신의 메모리에서 패킹이 해제된 실행 파일을 덤프하는 것을 그 구성상의 특징으로 한다.
바람직하게는, 상기 단계 (3)은,
탐지한 파일이 패킹된 파일인 경우, 상기 패커 룰셋에 의해 판별한 패커를 통해 패킹을 해제할 수 있다.
더욱 바람직하게는, 상기 단계 (3)은,
메모리 포렌식을 진행하여 패킹을 해제할 수 있다.
더욱더 바람직하게는, 상기 단계 (3)은,
볼라틸리티(Volatility)를 이용하여 메모리 포렌식을 진행하되,
상기 볼라틸리티의 플러그인 중 pslist, psxview 및 procexedump 중 적어도 어느 하나를 사용할 수 있다.
바람직하게는, 상기 단계 (3)은,
상기 단계 (2)에서 생성한 룰셋을 야라(YARA)에 적용하여 파일을 탐지할 수 있다.
더욱 바람직하게는, 상기 단계 (2)는,
상기 모듈 룰셋 및 패커 룰셋을 스트링, 코드 시그니처 및 상태를 포함하는 야라 룰셋으로 생성할 수 있다.
바람직하게는, 상기 단계 (1)은,
strings 유틸리티를 사용해 문자, 바이너리에서 사용되는 DLL 및 API 이름을 스트링으로 추출할 수 있다.
바람직하게는, 상기 단계 (1)은,
역공학 과정을 통해 상기 원격 관리 도구에서 생성된 모듈에서 블록 단위의 코드 시그니처를 추출할 수 있다.
본 발명에서 제안하고 있는 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에 따르면, 원격 관리 도구를 대상으로 한 악성코드의 스트링과 코드 시그니처를 추출하여 룰셋을 생성하고, 생성한 룰셋을 기반으로 원격 관리 도구를 탐지하여, 원격 관리 도구를 대상으로 한 공격 그룹을 판별할 수 있다.
또한, 본 발명에서 제안하고 있는 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에 따르면, 악성코드가 포함된 파일이 패킹되어 있는 경우에도 패킹 여부를 확인하고, 패커를 특정하여 메모리 포렌식을 통해 가상 머신에서 패킹을 해제함으로써 안전하게 패킹이 해제된 파일을 획득할 수 있고, 패킹된 파일에 포함된 악성코드를 탐지하여 탐지율을 증가시킬 수 있다.
도 1은 원격 관리 도구 중 하나인 다크코멧의 모듈 생성 화면을 도시한 도면.
도 2는 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법의 전체적인 구성을 도시한 도면.
도 3은 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법의 구성을 도시한 도면.
도 4는 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에서 UPX 패커 탐지 시 사용되는 데이터를 도시한 도면.
도 5는 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에서 코드 시그니처를 이용한 탐지를 예시한 도면.
도 6은 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에서 가상 머신을 이용하여 탐지하는 흐름도를 도시한 도면.
도 7은 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에서 메모리 포렌식을 이용한 덤프 과정을 도시한 도면.
이하에서는 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예를 상세하게 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다. 또한, 유사한 기능 및 작용을 하는 부분에 대해서는 도면 전체에 걸쳐 동일 또는 유사한 부호를 사용한다.
덧붙여, 명세서 전체에서, 어떤 부분이 다른 부분과 ‘연결’되어 있다고 할 때, 이는 ‘직접적으로 연결’되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 ‘간접적으로 연결’되어 있는 경우도 포함한다. 또한, 어떤 구성요소를 ‘포함’한다는 것은, 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있다는 것을 의미한다.
도 2는 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법의 전체적인 구성을 도시한 도면이다. 도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법은, 원격 관리 도구를 대상으로 악성코드를 탐지하여 공격 그룹을 판별할 수 있다. 보다 구체적으로는, 원격 관리 도구에서 생성된 모듈을 분석하면 고유한 스트링(Strings)과 코드 시그니처(Code Signature)를 확인할 수 있다. 여기서, 코드 시그니처는, 악성코드가 포함하는 고유한 패턴 정보를 지칭할 수 있다. 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법은, 원격 관리 도구를 대상으로 한 악성코드 샘플로부터 스트링 및 코드 시그니처 중 적어도 어느 하나를 추출하여 악성코드를 탐지할 수 있는 모듈 룰셋을 생성할 수 있다. 그리고 이러한 모듈 룰셋과 매칭되는 파일을 탐지하여 어떤 룰셋에 해당하는지 그리고 어떤 원격 관리 도구로부터 생성된 모듈인지 확인함으로써, 최종적으로 원격 관리 도구에 대한 공격 그룹을 판별할 수 있다. 이하에서는, ‘파일’은 원격 관리 도구에서 생성되는 모듈 또는 그 실행 파일과 동일한 의미로 혼용되어 사용될 수 있다.
한편, 패커 또한 고유한 스트링과 코드 시그니처를 가지며, 언패킹을 위한 흐름을 가진다. 만약 파일이 패커로 패킹되어 있는 경우에도, 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법은, 패커의 고유한 스트링 및 코드 시그니처 중 적어도 어느 하나를 추출하여 패커 룰셋을 생성하고, 이러한 패커 룰셋을 통해 패커를 탐지하고 특정함으로써 패킹을 해제하며, 패킹된 원본 스트링과 코드 시그니처를 확인할 수 있다. 따라서 패킹된 파일에 대해서도 패커를 탐지하고 패킹을 해제하여 악성코드를 탐지함으로써, 공격 그룹을 판별할 수 있다.
도 3은 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법의 구성을 도시한 도면이다. 도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법은, 원격 관리 도구를 대상으로 한 악성코드 탐지 및 패커 해제 방법에 있어서, 샘플로부터 원격 관리 도구에 대한 악성코드와 패커가 가지고 있는 스트링 및 코드 시그니처 중 적어도 어느 하나를 추출하는 단계(S100), 단계 S100에서 추출한 스트링 및 코드 시그니처 중 적어도 어느 하나를 이용하여 공격 그룹별 원격 관리 도구에 대한 모듈 룰셋 및 패커에 대한 패커 룰셋을 생성하는 단계(S200), 및 단계 S200에서 생성한 모듈 룰셋 및 패커 룰셋에 따라 매칭되는 파일을 탐지하고, 어떤 룰셋에 해당하는지 판단하여 패킹 여부와 공격 그룹을 판별하는 단계(S300)를 포함할 수 있다. 이하에서는, 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법의 각각의 구성에 대해 상세히 설명하기로 한다.
단계 S100에서는, 샘플로부터 원격 관리 도구에 대한 악성코드와 패커가 가지고 있는 스트링 및 코드 시그니처 중 적어도 어느 하나를 추출할 수 있다. 여기서, 샘플은 원격 관리 도구를 대상으로 하는 악성코드일 수 있으며, 상용화된 패커에 의해 패킹된 악성코드일 수 있다. 또한, 코드 시그니처는, 문자열 또는 바이너리 패턴을 포함할 수 있다. 원격 관리 도구에서 생성되는 모듈을 분석하면 고유한 스트링과 코드 시그니처를 확인할 수 있다. 보다 구체적으로는, 원격 관리 도구에서 생성되는 모듈은 대부분 PE 파일 구조를 가진다. 따라서 텍스트 섹션에서 각각의 모듈에서 사용하는 고유한 스트링을 확인하여 추출할 수 있으며, 역공학(Reversing engineering) 과정을 통해 사전에 특정 모듈에서 악성 행위를 시도하는 코드 시그니처를 추출할 수 있다.
단계 S100에서는, strings 유틸리티를 사용해 문자, 바이너리에서 사용되는 DLL 및 API 이름을 스트링으로 추출할 수 있다. 여기서, 문자는 모듈에서 흔히 사용되지 않는 문자일 수 있다. 단계 S100에서 추출되는 스트링의 예시는 다음의 표 1과 같다.
Figure 112017089552067-pat00001
표 1의 스트링은 다크코멧에서 생성된 모듈에서 발견할 수 있는 문자열로, 흔히 정상 실행 파일에서는 볼 수 없는 문자열에 해당한다. 표 1에서는 대표적인 원격 관리 도구인 다크코멧에서 생성된 모듈에서 확인되는 스트링을 예시하였으나, 스트링은 전술한 예에 한정되지 않는다.
단계 S100에서는, 역공학 과정을 통해 원격 관리 도구의 모듈에서 블록 단위의 코드 시그니처를 추출할 수 있다. 또한, 역공학을 통해 각각의 모듈의 경고문 생성 및 원격 접속과 같은 코드 시그니처를 추출할 수 있다. 원격 관리 도구에서 생성된 모듈에서 추출되는 데이터는 다음의 표 2와 같다.
Figure 112017089552067-pat00002
여기서, njRAT은 닷넷(.Net) 기반의 원격 관리 도구로, S.K.Y.P.E/Tagged 그룹에서 주로 사용하는 도구이다. 표 2에서는 대표적인 원격 관리 도구인 다크코멧, njRAT, 및 판도라에서 생성되는 모듈에서 추출된 코드 시그니처를 예시하였으나, 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법의 탐지 대상인 원격 관리 도구는 전술한 예에 한정되지 않는다.
도 4는 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에서 UPX 패커 탐지 시 사용되는 데이터를 도시한 도면이다. 도 1에 도시된 바와 같이, 단계 S100에서는, 원격 관리 도구에서 사용하는 패커의 스트링 및 코드 시그니처 중 적어도 어느 하나를 추출할 수 있다. 패커를 분석하면 고유한 스트링과 코드 시그니처와 각각의 패커마다 해당 패킹을 해제할 수 있는 언패킹을 위한 흐름을 가진다. 예를 들어, UPX 패커로 패킹된 파일의 구조를 확인하면 UPX0, UPX1 섹션이 존재한다. 각각의 패커에서 추출되는 데이터는 다음의 표 3과 같다.
Figure 112017089552067-pat00003
표 3에서는 대표적인 패커인 UPX, FSG, 및 MPRESS의 고유한 스트링과 코드 시그니처를 예시하였으나, 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법의 탐지 대상인 원격 관리 도구는 전술한 예에 한정되지 않는다.
단계 S200에서는, 단계 S100에서 추출한 스트링 및 코드 시그니처 중 적어도 어느 하나를 이용하여 공격 그룹별 원격 관리 도구에 대한 모듈 룰셋 및 패커에 대한 패커 룰셋을 생성할 수 있다. 보다 구체적으로, 단계 S200에서는, 표 1 및 표 2에 도시된 바와 같이, 각각의 원격 관리 도구와 패커에서 확인되는 고유의 스트링과 코드 시그니처 중 적어도 어느 하나를 이용하여 원격 관리 도구별 또는 패커별로 각각 룰셋을 생성할 수 있다. 즉, 단계 S200에서는, 각각의 원격 관리 도구 또는 패커를 탐지할 수 있는 룰을 포함하는 집합인 룰셋을 생성할 수 있다. 여기서, 모듈 룰셋은, 원격 관리 도구별로 생성되는 모듈에서 찾을 수 있는 데이터를 포함할 수 있다. 또한, 패커 룰셋은, 패커별로 패킹된 파일에서 찾을 수 있는 데이터를 포함할 수 있다.
단계 S300에서는, 모듈 룰셋 및 패커 룰셋에 따라 매칭되는 파일을 탐지하고, 어떤 룰셋에 해당하는지 판단하여 패킹 여부와 공격 그룹을 판별할 수 있다. 즉, 단계 S200에서 생성한 모듈 룰셋은 원격 관리 도구별로 생성되므로, 룰셋에 따라 매칭되는 파일을 탐지하고 분류함으로써 해당 파일(모듈)이 생성된 원격 관리 도구의 모듈을 특정할 수 있으며, 이를 통해 최종적으로 공격 그룹을 판별할 수 있다. 예를 들어, 모듈 룰셋에 의해 탐지된 파일과 매칭되는 원격 관리 도구가 njRAT이라면, njRAT을 주로 이용하는 공격 그룹을 판별할 수 있다. 한편, 잘 알려지지 않은 커스텀 원격 관리 도구의 경우에는, 모듈 룰셋 고도화 작업을 통해 탐지할 수 있다.
이때, 단계 S300에서는, 스트링 및 코드 시그니처 중 적어도 어느 하나를 확인하여 파일을 탐지할 수 있다. 스트링을 이용한 탐지 기법은 전술한 바와 같이, strings 유틸리티를 사용해 흔히 사용되지 않는 문자, 바이너리에서 사용되는 DLL 및 API 이름을 추출함으로써 파일을 탐지할 수 있다.
도 5는 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에서 코드 시그니처를 이용한 탐지를 예시한 도면이다. 도 5에 도시된 바와 같이, 코드 시그니처를 이용한 탐지 기법은, 역공학 과정을 통해 각각의 모듈에서 블록 단위의 코드 시그니처를 획득하여 탐지에 사용할 수 있다. 또한, 역공학을 통해 각각의 모듈의 경고문 생성 및 원격 접속과 같은 코드 시그니처를 추출하여 탐지에 사용할 수 있다.
한편, 단계 S300에서는, 단계 S200에서 생성한 룰셋을 야라(YARA)에 적용하여 파일을 탐지하고, 공격 그룹을 판별할 수 있다. 야라는 문자열이나 시그니처 패턴을 기반으로 악성코드를 검색하여 분류할 수 있는 도구이다. 야라는 C와 파이선(Python) 언어들과 비슷한 문법을 사용하기 때문에 룰셋(Ruleset) 작성이 쉽다. 또한, 야라는 윈도우, 리눅스, macOS 등 모든 시스템을 지원하며 직접 소스 코드를 컴파일하거나 실행 파일을 사용해 설치할 수 있다.
즉, 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법은, 단계 S100에서 추출한 데이터를 이용하여 단계 S200에서 룰셋을 생성하고, 단계 S300에서 해당 룰셋을 야라 룰셋에 적용하면, 룰셋에 해당하는 파일을 검색하여 탐지된 파일이 어떤 룰셋에 해당하는지 확인할 수 있다. 이때, 단계 S200에서는, 모듈 룰셋 및 패커 룰셋을 스트링, 코드 시그니처 및 상태를 포함하는 야라 룰셋으로 생성할 수 있다. 야라의 룰셋은 ‘설명’, ‘룰셋 이름’, ‘문자열’, ‘참, 거짓을 판단하기 위한 조건’으로 나눠서 정의되며, 파일 분류 시 단순한 문자열이나 시그니처 패턴을 비교할 뿐만 아니라 대상 파일의 엔트리 포인트(Entry Point) 값을 지정하거나 파일 오프셋(File Offset), 가상 메모리 주소(Virtual Memory Address)를 지정할 수 있다. 정규표현식도 함께 사용하면 더욱 효율적인 패턴 매칭이 가능하다. 이때, 스트링과 코드 시그니처는 야라에서 파일 탐지를 위해 사용되는 데이터이며, 불린(Boolean) 값에 따른 상태(Condition)를 더 추가하여 탐지할 수 있다. 실시예에 따라서는, 오탐율(False Positive Rate)을 줄이기 위해 상태는 최대한 모든 조건이 충족될 때 탐지하도록 룰셋이 적용될 수 있다.
단계 S300에서는, 단계 S200에서 생성한 패커 룰셋을 이용하여 패커를 탐지하고, 탐색한 파일이 패킹된 파일인 경우, 패커 룰셋에 의해 판별한 패커를 통해 패킹을 해제할 수 있다. 단계 S100 및 단계 S200에서 패커의 특징을 분석하여 패커 룰셋을 생성하였으므로, 단계 S300에서는 이러한 패커 룰셋을 이용하여 패커를 탐지할 수 있다. 패킹된 파일은 패커를 탐지한 후 패킹 해제 작업을 진행한다면, 원본 소스를 획득할 수 있으므로 어떠한 원격 관리 도구에서 생성된 파일(모듈)인지 여부를 판단할 수 있다.
도 6은 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에서 가상 머신을 이용하여 탐지하는 흐름도를 도시한 도면이다. 또한, 도 7은 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에서 메모리 포렌식을 이용한 덤프 과정을 도시한 도면이다. 단계 S300에서는, 패킹된 파일을 가상 머신에서 실행하여 가상 머신의 메모리에서 패킹이 해제된 실행 파일을 덤프할 수 있다. 또한, 단계 S300에서는, 메모리 포렌식(Memory Forensic)을 진행하여 패킹을 해제할 수 있다.
가상 머신은 컴퓨터 환경에 소프트웨어적으로 구현한 환경으로 컴퓨터에 다른 운영체제를 설치하고, 운영체제에 응용 프로그램을 설치하여 실행시킬 수 있는 환경을 제공할 수 있다. 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법은, 악성코드를 포함하는 패킹된 파일이 패킹 해제 후 메모리에 올라갔을 때 해당 메모리에 있는 악성코드를 덤프하는 환경을 위해 가상 머신을 사용할 수 있다.
메모리 포렌식은 APT(Advanced Persistent Threat)를 포함해 악성코드(Malware, Malicious Software)에서 중요 기밀 데이터를 확인할 때 핵심적인 역할을 할 수 있다. 메모리 포렌식은 여러 가지 포렌식 소프트웨어를 이용해 물리적인 램을 분석하는 일련의 과정이다. 컴퓨터 시스템은 중앙처리장치(Central Processing Unit; CPU)에 의해 여러 연산이 이루어지며, 여기서 어떠한 소프트웨어라도 메모리인 RAM에 그 데이터와 코드가 적재된다. 이는 중앙처리장치에서 메모리에 적재된 데이터와 코드에 대해 연산이 가능하기 때문이다. 이러한 컴퓨터 시스템의 특성으로 인해 메모리에는 하드디스크와는 다른 소프트웨어 또는 파일이 실행되는 과정이나 실행되었던 특유의 정보가 존재한다. 따라서 메모리 포렌식을 통해 메모리에서 프로세스와 쓰레드 정보, 모듈과 라이브러리 정보, 실행된 파일과 소켓 정보 및 다양한 데이터 구조 정보 등을 획득하여 확인할 수 있다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법은, 단계 S200에서 생성한 패커 룰셋을 이용하여 패커를 탐지하고, 어떤 패커인지에 대한 분류가 완료되면, 패킹된 파일을 가상 머신으로 전달한다. 그 후, 가상 머신에서는 패킹된 파일을 실행하여 가상 머신의 메모리에 실행 파일을 적재하고, 가상 머신의 메모리에서 패킹이 해제된 실행 파일을 덤프한다. 따라서 가상 머신 외부 환경에서는 패킹이 해제된 실행 파일을 실행하지 않으므로, 악성 코드에 감염될 우려가 없다.
도 7을 참조하면, 패킹을 해제하는데 사용되는 메모리 포렌식 도구로는 볼라틸리티(Volatility)가 있으며, 볼라틸리티는 다음의 표 4에 도시된 여러 프로세스 분석 플러그인을 제공할 수 있다.
Figure 112017089552067-pat00004
실시예에 따라서는, 패킹된 파일의 패킹을 해제할 때 표 4에 도시된 플러그인 중 pslist, psxview 및 procexedump를 사용할 수 있다. psxview를 사용하는 이유는 다른 프로세스 확인 플러그인들과 다르게 은닉된 프로세스들도 확인할 수 있기 때문이다. 하지만 속도가 pslist에 비해 느리므로 상황에 따라 사용할 수 있다. 또한 proexedump(procdump)는 프로세스 목록에서 획득한 메모리상의 프로세스를 획득할 때 사용될 수 있다. 표 4에서는 대표적인 메모리 포렌식 도구인 볼라틸리티에서 제공하는 프로셋 분석 플러그인을 예시하였으나, 메모리 포렌식 도구는 전술한 볼라틸리티에 한정되지 않는다.
이하에서는 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에서 야라를 사용한 탐지 결과를 설명한다. 표 5는 다크코멧 버전 4와 버전 5에서 제공되는 옵션들을 각각 사용했을 때 생성할 수 있는 모든 모듈을 생성한 후 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법을 적용한 결과이다.
Figure 112017089552067-pat00005
표 5를 참조하면, 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법은 다크코멧 버전 4와 버전 5에서 각각 88%와 92%의 탐지율을 가지는 것을 확인할 수 있다.
표 6은 본 발명의 일 실시예에 따른 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에 패커에 대한 언패킹 기능을 추가적으로 적용한 결과이다.
Figure 112017089552067-pat00006
표 6을 참조하면, 파일의 패킹을 해제함으로써 다크코멧 버전 4 및 버전 5 모두에서 모든 모듈을 탐지할 수 있는 것을 확인할 수 있다.
전술한 바와 같이, 본 발명에서 제안하고 있는 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에 따르면, 원격 관리 도구를 대상으로 한 악성코드의 스트링과 코드 시그니처를 추출하여 룰셋을 생성하고, 생성한 룰셋을 기반으로 원격 관리 도구를 탐지하여, 원격 관리 도구를 대상으로 한 공격 그룹을 판별할 수 있다. 또한, 본 발명에서 제안하고 있는 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법에 따르면, 악성코드가 포함된 파일이 패킹되어 있는 경우에도 패킹 여부를 확인하고, 패커를 특정하여 메모리 포렌식을 통해 가상 머신에서 패킹을 해제함으로써 안전하게 패킹이 해제된 파일을 획득할 수 있고, 패킹된 파일에 포함된 악성코드를 탐지하여 탐지율을 증가시킬 수 있다.
이상 설명한 본 발명은 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에 의하여 다양한 변형이나 응용이 가능하며, 본 발명에 따른 기술적 사상의 범위는 아래의 청구범위에 의하여 정해져야 할 것이다.
S100: 샘플로부터 원격 관리 도구에 대한 악성코드와 패커가 가지고 있는 스트링 및 코드 시그니처 중 적어도 어느 하나를 추출하는 단계
S200: 단계 S100에서 추출한 스트링 및 코드 시그니처 중 적어도 어느 하나를 이용하여 공격 그룹별 원격 관리 도구에 대한 모듈 룰셋 및 패커에 대한 패커 룰셋을 생성하는 단계
S300: 단계 S200에서 생성한 모듈 룰셋 및 패커 룰셋에 따라 매칭되는 파일을 탐지하고, 어떤 룰셋에 해당하는지 판단하여 패킹 여부와 공격 그룹을 판별하는 단계

Claims (8)

  1. 원격 관리 도구를 대상으로 한 악성코드 탐지 및 패커 해제 방법에 있어서,
    (1) 샘플로부터 원격 관리 도구에 대한 악성코드와 패커가 가지고 있는 스트링 및 코드 시그니처 중 적어도 어느 하나를 추출하는 단계;
    (2) 상기 단계 (1)에서 추출한 스트링 및 코드 시그니처 중 적어도 어느 하나를 이용하여 공격 그룹별 원격 관리 도구에 대한 모듈 룰셋 및 패커에 대한 패커 룰셋을 생성하는 단계; 및
    (3) 상기 단계 (2)에서 생성한 모듈 룰셋 및 패커 룰셋에 따라 매칭되는 파일을 탐지하고, 어떤 룰셋에 해당하는지 판단하여 패킹 여부와 공격 그룹을 판별하는 단계를 포함하되,
    상기 단계 (3)은,
    패킹된 파일을 가상 머신에서 실행하여 상기 가상 머신의 메모리에서 패킹이 해제된 실행 파일을 덤프하며,
    상기 단계 (2)는,
    상기 모듈 룰셋 및 패커 룰셋을 스트링, 코드 시그니처 및 상태를 포함하는 야라 룰셋으로 생성하고,
    상기 단계 (3)은,
    상기 단계 (2)에서 생성한 룰셋을 야라(YARA)에 적용하여 파일을 탐지하는 것을 특징으로 하는, 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법.
  2. 제1항에 있어서, 상기 단계 (3)은,
    탐지한 파일이 패킹된 파일인 경우, 상기 패커 룰셋에 의해 판별한 패커를 통해 패킹을 해제하는 것을 특징으로 하는, 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법.
  3. 제2항에 있어서, 상기 단계 (3)은,
    메모리 포렌식을 진행하여 패킹을 해제하는 것을 특징으로 하는, 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법.
  4. 제3항에 있어서, 상기 단계 (3)은,
    볼라틸리티(Volatility)를 이용하여 메모리 포렌식을 진행하되,
    상기 볼라틸리티의 플러그인 중 pslist, psxview 및 procexedump 중 적어도 어느 하나를 사용하는 것을 특징으로 하는 것을 특징으로 하는, 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법.
  5. 삭제
  6. 삭제
  7. 제1항에 있어서, 상기 단계 (1)은,
    strings 유틸리티를 사용해 문자, 바이너리에서 사용되는 DLL 및 API 이름을 스트링으로 추출하는 것을 특징으로 하는, 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법.
  8. 제1항에 있어서, 상기 단계 (1)은,
    역공학 과정을 통해 상기 원격 관리 도구에서 생성된 모듈에서 블록 단위의 코드 시그니처를 추출하는 것을 특징으로 하는, 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법.
KR1020170117964A 2017-09-14 2017-09-14 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법 KR101908517B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170117964A KR101908517B1 (ko) 2017-09-14 2017-09-14 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170117964A KR101908517B1 (ko) 2017-09-14 2017-09-14 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법

Publications (1)

Publication Number Publication Date
KR101908517B1 true KR101908517B1 (ko) 2018-10-16

Family

ID=64132667

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170117964A KR101908517B1 (ko) 2017-09-14 2017-09-14 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법

Country Status (1)

Country Link
KR (1) KR101908517B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111767540A (zh) * 2020-07-07 2020-10-13 杭州安恒信息技术股份有限公司 Jart恶意软件自动化分析方法、装置和计算机可读存储介质
KR102202911B1 (ko) 2019-07-25 2021-01-14 호서대학교 산학협력단 Pe 섹션 정보를 이용한 패커 유형 분류 장치 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150096022A1 (en) * 2013-09-30 2015-04-02 Michael Vincent Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses
KR20170060280A (ko) * 2015-11-24 2017-06-01 한국전자통신연구원 탐지 규칙 자동 생성 장치 및 방법
KR20170061179A (ko) * 2013-03-15 2017-06-02 맥아피 인코퍼레이티드 멀웨어 검출을 위한 애플리케이션들의 제네릭 언패킹

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170061179A (ko) * 2013-03-15 2017-06-02 맥아피 인코퍼레이티드 멀웨어 검출을 위한 애플리케이션들의 제네릭 언패킹
US20150096022A1 (en) * 2013-09-30 2015-04-02 Michael Vincent Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses
KR20170060280A (ko) * 2015-11-24 2017-06-01 한국전자통신연구원 탐지 규칙 자동 생성 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YARA Documentation, Ver 3.4.0, Victor M. Alvarez, 2016.01.30 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102202911B1 (ko) 2019-07-25 2021-01-14 호서대학교 산학협력단 Pe 섹션 정보를 이용한 패커 유형 분류 장치 및 방법
CN111767540A (zh) * 2020-07-07 2020-10-13 杭州安恒信息技术股份有限公司 Jart恶意软件自动化分析方法、装置和计算机可读存储介质

Similar Documents

Publication Publication Date Title
Tahir A study on malware and malware detection techniques
Chowdhury et al. Malware analysis and detection using data mining and machine learning classification
US20170372068A1 (en) Method to identify known compilers functions, libraries and objects inside files and data items containing an executable code
JP5326062B1 (ja) 非実行ファイル検査装置及び方法
KR101212553B1 (ko) 악성 파일 검사 장치 및 방법
Veeramani et al. Windows api based malware detection and framework analysis
Zakeri et al. A static heuristic approach to detecting malware targets
GB2439806A (en) Classifying software as malware using characteristics (or "genes")
US9038161B2 (en) Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor
Muralidharan et al. File packing from the malware perspective: Techniques, analysis approaches, and directions for enhancements
Adkins et al. Heuristic malware detection via basic block comparison
JP6000465B2 (ja) プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法
KR101646096B1 (ko) 메모리 분석을 통한 비실행 파일의 악성 여부 검사 방법 및 장치
El Boujnouni et al. New malware detection framework based on N-grams and support vector domain description
KR101816045B1 (ko) 악성코드 룰셋을 이용한 악성코드 탐지 시스템 및 방법
Gandotra et al. Integrated framework for classification of malwares
Jain et al. Integrated Malware analysis using machine learning
Mishra Methods of Virus detection and their limitations
Rohith et al. A comprehensive study on malware detection and prevention techniques used by anti-virus
Najari et al. Malware detection using data mining techniques
Alrzini et al. A review of polymorphic malware detection techniques
KR101908517B1 (ko) 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법
Ding et al. Accurate and efficient exploit capture and classification
US10880316B2 (en) Method and system for determining initial execution of an attack
Uma et al. Survey on Android malware detection and protection using data mining algorithms

Legal Events

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