KR101693370B1 - 퍼지 화이트리스팅 안티-멀웨어 시스템 및 방법 - Google Patents

퍼지 화이트리스팅 안티-멀웨어 시스템 및 방법 Download PDF

Info

Publication number
KR101693370B1
KR101693370B1 KR1020147015041A KR20147015041A KR101693370B1 KR 101693370 B1 KR101693370 B1 KR 101693370B1 KR 1020147015041 A KR1020147015041 A KR 1020147015041A KR 20147015041 A KR20147015041 A KR 20147015041A KR 101693370 B1 KR101693370 B1 KR 101693370B1
Authority
KR
South Korea
Prior art keywords
hashes
target
target object
computer system
hash
Prior art date
Application number
KR1020147015041A
Other languages
English (en)
Other versions
KR20140089567A (ko
Inventor
아이. 블라드 토판
브이. 소린 두데아
디. 비로엘 칸야
Original Assignee
비트데펜더 아이피알 매니지먼트 엘티디
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 비트데펜더 아이피알 매니지먼트 엘티디 filed Critical 비트데펜더 아이피알 매니지먼트 엘티디
Publication of KR20140089567A publication Critical patent/KR20140089567A/ko
Application granted granted Critical
Publication of KR101693370B1 publication Critical patent/KR101693370B1/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F21/563Static detection by source code analysis
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • 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

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)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

일부 실시예들에서, 안티-멀웨어 시스템은 컴파일러들 및 다른 다형들에 의해 도입되는 차이들과 같은 악성이 아닌 데이터 객체들 사이의 유순한 차이들을 처리한다. 대상 객체는 다수의 코드 블록들로 분리되고, 해시는 각각의 코드 블록 마다 계산된다. 대상 해시들의 획득된 세트는 그 다음 화이트리스팅된 객체들로부터 추출되는 코드 블록들에 상응하는 해시들의 데이터베이스에 대하여 비교된다. 대상 객체는 그것이 화이트리스팅된 객체와 마찬가지로 상당한 수의 해시들을 갖는다면, 화이트리스팅된(신뢰된, 악성이 아닌) 것으로 라벨링될 수 있다. 알려진 화이트리스팅된 객체들과 약간 다른 객체들은 화이트리스팅 상태를 여전히 수신할 수 있다. 개별 객체들의 해시들의 세트들 사이에 일정 정도의 부조화를 허용함으로써, 본 발명의 일부 실시예들은 안전의 감소를 수용하지 않고 화이트리스팅의 효율성을 증가시킨다.

Description

퍼지 화이트리스팅 안티-멀웨어 시스템 및 방법{FUZZY WHITELISTING ANTI-MALWARE SYSTEMS AND METHODS}
본 출원은 2011년 11월 2일자로 출원된 미국 가출원 61/554,859호의 출원 일자의 이익을 주장하며, 그 전체가 본원에 참조로 포함된다.
본 발명은 악성 소프트웨어로부터 사용자들을 보호하는 시스템 및 방법, 보다 상세하게는 소프트웨어 화이트리스팅(whitelisting)에 관한 것이다.
멀웨어(malware)로서도 알려진 악성 소프트웨어는 전세계적으로 다수의 컴퓨터 시스템들에 영향을 미치고 있다. 컴퓨터 바이러스들, 웜(worm)들, 트로이 목마들, 및 루트킷(rootkit)들과 같은 그것의 많은 형태들에서, 멀웨어는 수백만 명의 컴퓨터 사용자들을 무엇보다도 데이터의 손실, 신원 도용, 및 생산성의 손실에 취약하게 하여 수백만 명의 컴퓨터 사용자들에게 심각한 위험을 야기한다.
멀웨어 스캐닝에 전용되는 컴퓨터 프로그램들은 사용자 컴퓨터 시스템들로부터 멀웨어를 검출하고 제거하는 다양한 방법들을 채용한다. 그러한 방법들은 행위-기반 기술들 및 콘텐츠-기반 기술들을 포함한다. 행위-기반 방법들은 의심되는 프로그램이 격리된 가상 환경 내에서 실행되는 것을 허용하는 단계, 악성 행위를 식별하는 단계, 및 위반 프로그램의 실행을 차단하는 단계를 포함할 수 있다. 콘텐츠-기반 방법들에서, 의심되는 파일의 콘텐츠는 통상적으로 알려진 멀웨어-식별 서명들의 데이터베이스와 비교된다. 알려진 멀웨어 서명이 의심되는 파일 내에서 발견되면, 파일은 악성으로 라벨링된다.
멀웨어를 방지하는 다른 방법들은 애플리케이션 화이트리스팅을 채용하며, 이는 사용자의 컴퓨터 시스템 상에서 허용되는 소프트웨어 및 행위들의 리스트를 유지하는 단계, 및 모든 다른 애플리케이션들이 실행되는 것을 차단하는 단계를 포함한다. 그러한 방법들은 다형 멀웨어의 멀웨어-식별 서명을 무작위로 수정할 수 있어, 통상적인 콘텐츠-기반 방법들을 효과가 없게 하는 다형 멀웨어에 대하여 특히 효과적이다.
일부 화이트리스팅 애플리케이션들은 화이트리스팅된 소프트웨어의 무결성을 식별하고 보장하기 위해 해시(hash)값들을 채용한다. 암호화 해시는 화이트리스팅된 애플리케이션과 연계되는 파일 또는 파일들의 그룹에 대해 생성되고 참고로 저장될 수 있다. 각각의 애플리케이션은 그 다음 저장된 해시를 실행 시간에 생성되는 새로운 해시와 비교함으로써 인증된다.
안티-멀웨어 화이트리스팅 방법들의 성능은 효율적이고 유연성 있는 방식으로 화이트리스트 데이터베이스들을 유지하고 업데이트하는 능력에 따를 수 있다.
일 양태에 따르면, 방법은 클라이언트 컴퓨터 시스템에서, 클라이언트 컴퓨터 시스템의 복수의 대상 객체들의 초기 멀웨어 스캔을 수행하는 단계; 및 대상 객체가 악성으로 의심된다는 초기 멀웨어 스캔에 의한 잠정적 판정에 응답하여: 클라이언트 컴퓨터 시스템에서, 대상 객체의 복수의 대상 해시들을 생성하는 단계로서, 각각의 대상 해시가 대상 객체의 개별 코드 블록을 나타내며, 각각의 개별 코드 블록이 대상 객체의 프로세서 명령들의 시퀀스로 구성되는 생성하는 단계; 클라이언트 컴퓨터 시스템으로부터, 복수의 대상 해시들을 광역 네트워크를 통해 클라이언트 컴퓨터 시스템에 연결되는 서버 컴퓨터 시스템에 송신하는 단계; 및 상기 클라이언트 컴퓨터 시스템에서, 상기 서버 컴퓨터 시스템으로부터 대상 객체가 악성인지에 대한 서버-측 지시자를 수신하는 단계를 포함한다. 상기 서버-측 지시자는, 상기 서버 컴퓨터 시스템에 의해서: 상기 복수의 대상 해시들 중 적어도 하나의 대상 해시에 대해, 기준 객체의 복수의 기준 해시들을 검색(retrieving)하는 단계로서, 상기 기준 객체는 상기 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되는 검색하는 단계, 및 상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하는 단계; 및 유사성 스코어가 미리 정해진 임계치를 초과할 때, 대상 객체를 악성이 아닌 것으로 지정하는 단계에 의해 생성된다.
다른 양태에 따르면, 방법은 서버 컴퓨터 시스템에서, 광역 네트워크를 통해 서버 컴퓨터 시스템에 연결되는 클라이언트 컴퓨터 시스템의 대상 객체의 복수의 대상 해시들을 수신하는 단계; 상기 서버 컴퓨터 시스템에서, 상기 대상 객체가 악성인지에 대한 서버-측 지시자를 생성하는 단계; 및 상기 대상 객체가 악성인지에 대한 상기 서버-측 지시자를 상기 클라이언트 컴퓨터 시스템에 송신하는 단계를 포함한다. 상기 복수의 대상 해시들은 상기 대상 객체가 악성으로 의심된다는 상기 클라이언트 컴퓨터 시스템에 의한 잠정적 판정에 응답하여 상기 클라이언트 컴퓨터 시스템에서 생성되며, 상기 잠정적 판정은 상기 클라이언트 컴퓨터 시스템의 복수의 대상 객체들의 초기 멀웨어 스캔에 기인한다. 상기 서버 컴퓨터 시스템에서, 상기 대상 객체가 악성인지에 대한 서버-측 지시자를 생성하는 단계는: 상기 복수의 대상 해시들 중 적어도 하나의 대상 해시에 대해, 기준 객체의 복수의 기준 해시들을 검색하는 단계로서, 상기 기준 객체는 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되는 검색하는 단계, 및 상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하는 단계, 및 상기 유사성 스코어가 미리 정해진 임계치를 초과할 때, 대상 객체를 악성이 아닌 것으로 지정하는 단계를 포함한다.
또 다른 양태에 따르면, 방법은 서버 컴퓨터 시스템에서, 대상 객체의 복수의 대상 해시들을 수신하는 단계로서, 각각의 대상 해시는 상기 대상 객체의 개별 코드 블록을 나타내며, 각각의 개별 코드 블록은 상기 대상 객체의 프로세서 명령들의 시퀀스로 구성되는 수신하는 단계; 상기 복수의 대상 해시들 중 적어도 하나의 대상 해시에 대해 상기 서버 컴퓨터 시스템을 채용하는 단계로서: 기준 객체의 복수의 기준 해시들을 검색하는 단계로서, 상기 기준 객체는 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되는 단계, 및 상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하는 단계; 및 상기 유사성 스코어가 미리 정해진 임계치를 초과할 때, 상기 대상 객체를 악성이 아닌 것으로 라벨링하는 서버 컴퓨터 시스템을 채용하는 단계를 포함한다.
또 다른 양태에 따르면, 컴퓨터 시스템은 복수의 대상 해시들을 수신하되 각각의 대상 해시는 대상 객체의 개별 코드 블록을 나타내며, 각각의 개별 코드 블록은 상기 대상 객체의 프로세서 명령들의 시퀀스로 구성되고; 상기 복수의 대상 해시들 중 적어도 하나의 대상 해시에 대해: 기준 객체의 복수의 기준 해시들을 검색하되, 상기 기준 객체는 상기 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되고, 상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하고; 및 상기 유사성 스코어가 미리 정해진 임계치를 초과할 때, 상기 대상 객체를 악성이 아닌 것으로 라벨링하도록 프로그래밍되는 적어도 하나의 프로세서를 포함한다.
또 다른 양태에 따르면, 비일시적 컴퓨터-판독 가능한 기록 매체는 프로세서 상에서 실행될 때, 상기 프로세서가: 복수의 대상 해시들을 수신하되, 각각의 대상 해시는 대상 객체의 개별 코드 블록을 나타내며, 각각의 개별 코드 블록은 상기 대상 객체의 프로세서 명령들의 시퀀스로 구성되고; 상기 복수의 대상 해시들 중 적어도 하나의 대상 해시에 대해, 기준 객체의 복수의 기준 해시들을 검색하되, 상기 기준 객체는 상기 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되고, 및 상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하는 단계들을 수행하도록 하는 명령들을 인코딩한다. 상기 유사성 스코어가 미리 정해진 임계치를 초과할 때, 상기 대상 객체는 악성이 아니다.
또 다른 양태에 따르면, 컴퓨터 시스템은: 복수의 대상 해시들을 수신하는 수단으로서, 각각의 대상 해시는 대상 객체의 개별 코드 블록을 나타내며, 각각의 개별 코드 블록은 상기 대상 객체의 프로세서 명령들의 시퀀스로 구성되는 수신하는 수단; 기준 객체의 복수의 기준 해시들을 검색하는 수단으로서, 상기 기준 객체는 상기 복수의 대상 해시들의 선택된 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되는 검색하는 수단; 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하는 수단; 및 상기 유사성 스코어에 따라 상기 대상 객체를 악성이 아닌 것으로 라벨링하는 수단을 포함한다.
또 다른 양태에 따르면, 방법은 서버 컴퓨터 시스템에서, 복수의 대상 해시들을 수신하는 단계로서, 각각의 대상 해시는 대상 객체의 개별 데이터 블록을 나타내며, 각각의 개별 코드 블록은 상기 대상 객체의 프로세서 명령들의 시퀀스로 구성되는 수신하는 단계; 상기 복수의 대상 해시들을 수신하는 단계에 응답하여, 화이트리스팅된 데이터 객체를 나타내는 복수의 기준 해시들을 검색하는 단계, 및 상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들이 다수의 항목들을 공유할 때, 대상 객체를 악성이 아닌 것으로 라벨링하는 단계를 포함한다.
본 발명의 상술한 양태들 및 이점들은 후술하는 상세한 설명을 읽고 이하의 도면들을 참조하면 보다 명확하게 이해될 것이다.
도 1은 본 발명의 일부 실시예들에 따른 예시적인 안티-멀웨어 시스템을 도시한다.
도 2는 본 발명의 일부 실시예들에 따른 클라이언트 컴퓨터 시스템의 예시적인 하드웨어 구성을 도시한다.
도 3 은 본 발명의 일부 실시예들에 따른 안티-멀웨어 서버 시스템의 예시적인 하드웨어 구성을 도시한다.
도 4는 본 발명의 일부 실시예들에 따른 클라이언트 컴퓨터 시스템 상에서 실행되는 예시적인 안티-멀웨어 애플리케이션의 다이어그램을 도시한다.
도 5는 본 발명의 일부 실시예들에 따른 안티-멀웨어 서버 시스템 상에서 실행되는 예시적인 애플리케이션들을 도시한다.
도 6은 본 발명의 일부 실시예들에 따른 도 4의 클라이언트 안티-멀웨어 애플리케이션에 의해 수행되는 예시적인 단계들의 시퀀스를 도시한다.
도 7은 본 발명의 일부 실시예들에 따른 코드 정규화의 예시를 도시한다.
도 8은 본 발명의 일부 실시예들에 따른 프로세서 명령의 예시적인 메모리 표현을 도시한다.
도 9는 본 발명의 일부 실시예들에 따른 예시적인 코드 블록 및 코드 블록에 상응하는 예시적인 연산 코드 패턴을 도시한다.
도 10은 본 발명의 일부 실시예들에 따른 복수의 코드 블록들을 포함하는 코드의 예시적인 프레그먼트(fragment) 및 코드의 프레그먼트에 상응하는 예시적인 ODI(object data indicator)를 도시한다.
도 11은 본 발명의 일부 실시예들에 따른 도 5의 서버 안티-멀웨어 애플리케이션에 의해 수행되는 예시적인 단계들의 시퀀스를 도시한다.
이하의 설명에서, 구조들 사이에서 언급된 모든 연결들은 직접적인 동작 연결들 또는 매개 구조들을 통한 간접적인 동작 연결들일 수 있는 점이 이해된다. 구성요소들의 한 세트는 하나 이상의 구성요소들을 포함한다. 구성요소의 임의의 열거는 적어도 하나의 구성요소를 언급하는 것으로 이해된다. 복수의 구성요소들은 적어도 2개의 구성요소들을 포함한다. 달리 요구되지 않는다면, 임의의 설명된 방법 단계들은 특정의 예시되는 순서로 반드시 수행될 필요는 없다. 제2 구성요소로부터 유도되는 제1 구성요소(예를 들어, 데이터)는 제2 구성요소와 동일한 제1 구성요소뿐만 아니라, 제2 구성요소 및 선택적으로 다른 데이터를 프로세싱함으로써 생성되는 제1 구성요소를 포함한다. 매개 변수에 따라 판정 또는 결정을 하는 것은 매개 변수 및 선택적으로 다른 데이터에 따라 판정 또는 결정을 하는 것을 포함한다. 달리 특정되지 않는다면, 일부 양/데이터의 지시자는 양/데이터 그 자체, 또는 양/데이터 그 자체와 다른 지시자일 수 있다. 본 발명의 일부 실시예들에서 설명되는 컴퓨터 프로그램들은 독립형 소프트웨어 엔티티들 또는 다른 컴퓨터 프로그램들의 서브-엔티티들(예를 들어, 서브루틴들, 코드 객체들)일 수 있다. 달리 특정되지 않는다면, 대상 객체는 클라이언트 컴퓨터 시스템에서 상주하는 파일 또는 프로세스이다. 대상 객체의 식별자는 클라이언트 컴퓨터 시스템의 전체 메모리와 같은 더 큰 데이터 구조의 일부로서만이 아닌, 대상 객체 그 자체의 선택적 신원 확인 및 검색을 허용하는 데이터를 포함한다. 달리 특정되지 않는다면, 대상 객체의 ODI(object data indicator)는 대상 객체가 악성인지 예를 들어, 멀웨어에 감염됐는지를 판정하는데 도움이 되는 대상 객체 데이터(예를 들어, 코드 블록, 연산 코드 패턴, 해시)의 특징들을 포함한다. 달리 특정되지 않는다면, 해시는 해시 함수의 출력이다. 해시 함수들은 심볼들(예를 들어, 문자들, 비트들)의 시퀀스들을 수들 또는 비트 스트링들의 더 짧은 시퀀스들로 매핑하는 수학적 변환들이다. 대상 해시는 대상 객체의 데이터 상에서 계산되는 해시이다. 달리 특정되지 않는다면, ‘화이트리스팅된’은 클린한 것 즉, 멀웨어를 포함하지 않는 것으로 신뢰되는 것을 의미하는 것으로 이해된다. 제1 세트의 모든 구성요소들이 제2 세트 내에 포함되고, 제2 세트의 모든 구성요소들이 제1 세트 내에 포함될 때, 제1 세트는 제2 세트와 동일하다. 컴퓨터 판독 가능한 매체는 자기, 광, 및 반도체 저장 매체(예를 들어, 하드 드라이브들, 광 디스크들, 플래시 메모리, DRAM)와 같은 비일시적 매체뿐만 아니라, 전도성 케이블들 및 파이버 광 링크들과 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 그 중에서도, 본 명세서에서 설명된 방법들을 수행하기 위해 프로그래밍되는 하드웨어(예를 들어, 하나 이상의 프로세서들)뿐만 아니라 본 명세서에서 설명된 방법들을 수행하기 위해 명령들을 인코딩하는 컴퓨터-판독 가능한 매체를 포함하는 컴퓨터 시스템들을 제공한다.
이하의 설명은 예시적인 그리고 반드시 제한하는 것은 아닌 본 발명의 실시예들을 개시한다.
도 1은 본 발명의 일부 실시예들에 따른 예시적인 멀웨어 검출 시스템(10)을 도시한다. 시스템(10)은 AM(anti-malware) 서버 시스템들(20a~20c)의 세트 및 클라이언트 컴퓨터 시스템들(30a~30b)의 세트를 포함한다. 클라이언트 컴퓨터 시스템들(30a~30b)은 각각이 프로세서, 메모리 및 스토리지를 갖고, Windows®, MacOS® 또는 Linux와 같은 운영 시스템을 실행시키는 최종-사용자 컴퓨터들을 나타낼 수 있다. 일부 클라이언트 컴퓨터 시스템들(30a~30b)은 태블릿 PC들 및 이동 전화기들과 같은 이동 컴퓨팅 및/또는 전화통신 디바이스들을 나타낼 수 있다. 일부 실시예들에서, 클라이언트 컴퓨터 시스템들(30a~30b)은 개인 고객들을 나타낼 수 있거나, 수 개의 클라이언트 컴퓨터 시스템들은 동일한 고객에 속할 수 있다. 일부 실시예들에서, 시스템들(30a~30b) 중 하나는 메일 서버와 같은 서버 컴퓨터일 수 있으며, 이 경우 멀웨어 검출 서비스들은 다수의 클라이언트들에게 송신되는 이메일들 또는 다른 메시지들 내에 존재하는 멀웨어를 식별하고, 메세지들이 클라이언트들에게 전달되기 전에, 적절한 조치(예를 들어, 멀웨어-감염된 항목들을 제거하거나 격리함)를 취하기 위해 사용될 수 있다. 네트워크(12)는 클라이언트 컴퓨터 시스템들(30a~30c) 및 안티-멀웨어 서버 시스템들(20a~20c)을 연결한다. 네트워크(12)는 인터넷과 같은 광역 네트워크일 수 있다. 네트워크(12)의 일부들, 예를 들어 클라이언트 컴퓨터 시스템들(30a~30b)을 상호 연결하는 네트워크(12)의 일부는 또한 LAN(local area network)를 포함할 수 있다.
도 2는 클라이언트 컴퓨터 시스템(30)의 예시적인 하드웨어 구성을 도시한다. 일부 실시예들에서, 시스템(30)은 프로세서(24), 메모리 유닛(26), 입력 디바이스들(28)의 세트, 출력 디바이스들(32)의 세트, 저장 디바이스들(34)의 세트, 및 통신 인터페이스 제어기(36)를 포함하며, 모두가 버스들(38)의 세트에 의해 연결된다.
일부 실시예들에서, 프로세서(24)는 신호들 및/또는 데이터의 세트로 컴퓨터 조작의 및/또는 논리적 연산들을 실행하도록 구성되는 물리적 디바이스(예를 들어, 다중-코어 집적 회로)를 포함한다. 일부 실시예들에서, 그러한 논리 연산들은 프로세서 명령들의 시퀀스(예를 들어, 기계 코드 또는 다른 타입의 소프트웨어)의 형태로 프로세서(24)에 전달된다. 메모리 유닛(26)은 명령들을 수행하는 중에 프로세서(24)에 의해 액세스되거나 생성되는 데이터/신호들을 저장하는 휘발성 컴퓨터-판독 가능 매체(예를 들어, RAM)를 포함할 수 있다. 입력 디바이스들(28)은, 무엇보다도, 사용자가 데이터 및/또는 명령들을 시스템(30)으로 도입하는 것을 허용하는 컴퓨터 키보드들 및 마우스들을 포함할 수 있다. 출력 디바이스들(32)은 모니터들과 같은 디스플레이 디바이스들을 포함할 수 있다. 일부 실시예들에서, 입력 디바이스들(28) 및 출력 디바이스들(32)은 터치 스크린 디바이스들의 경우에서와 같이 공통 피스(piece)의 하드웨어를 공유할 수 있다. 저장 디바이스들(34)은 소프트웨어 명령들 및/또는 데이터의 비휘발성 저장, 판독 및 기록을 가능하게 하는 컴퓨터-판독 가능한 매체를 포함한다. 예시적인 저장 디바이스들(34)은 자기 및 광 디스크들 및 플래시 메모리 디바이스들뿐만 아니라, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 제거 가능한 매체를 포함한다. 통신 인터페이스 제어기(36)는 시스템(30)이 컴퓨터 네트워크 및/또는 다른 기계들/컴퓨터 시스템들에 연결되는 것을 가능하게 한다. 전형적인 통신 인터페이스 제어기들(36)은 네트워크 어댑터들을 포함한다. 버스들(38)은 집합적으로 복수의 시스템, 주변 장치, 및 칩셋 버스들 및/또는 컴퓨터 시스템(30)의 디바이스들(24~36)의 상호-통신을 가능하게 하는 모든 다른 회로 소자를 나타낸다. 예를 들어, 버스들(38)은, 무엇보다도, 프로세서(24)를 메모리(26)에 연결시키는 노스브리지 버스 및/또는 프로세서(24)를 디바이스들(28~36)에 연결시키는 사우스브리지 버스를 포함할 수 있다.
도 3은 본 발명의 일부 실시예들에 따른 시스템들(20a~20c)의 예시적인 AM 서버 시스템(20)의 하드웨어 구성을 도시한다. AM 서버 시스템(20)은 서버 프로세서(124), 서버 메모리(126), 서버 저장 디바이스들(134)의 세트, 및 서버 통신 인터페이스 제어기(136)를 포함하는 컴퓨터 시스템일 수 있으며, 모두가 서버 버스들(138)의 세트를 통해 서로 연결된다. 하드웨어 구성의 일부 상세들이 서버 시스템(20)과 클라이언트 컴퓨터 시스템(30) 사이에서 다를 수 있지만, 디바이스들(124, 126, 134, 136 및 138)의 범위는 각각 상술된 디바이스들(24, 26, 34, 36 및 38)의 범위와 유사할 수 있다.
클라이언트 컴퓨터 시스템(30)은, 도 4에 도시된 바와 같이, 클라이언트 AM(anti-malware) 애플리케이션(40) 및 클라이언트-측 캐시(56)를 포함할 수 있다. 일부 실시예들에서, 클라이언트 AM 애플리케이션(40)은 독립형 애플리케이션일 수 있거나, 안티바이러스, 방화벽, 안티-스팸, 및 다른 모듈들을 갖는 보안성 슈트(security suite)의 안티-멀웨어 모듈일 수 있다. 클라이언트 AM 애플리케이션은 활성 AM 스캐너(42), 정적 AM 스캐너(44), 정적 AM 스캐너(44)에 연결되는 에뮬레이터(emulator)(46), 스캐너들(42 및 44)에 연결되는 코드 정규화 엔진(48), 클라이언트 AM 통신 관리자(52) 및 코드 정규화 엔진(48)에 연결되는 해싱 엔진(54)을 포함할 수 있다.
일부 실시예들에서, 클라이언트 AM 애플리케이션(40)은 클라이언트 컴퓨터 시스템(30)의 일부를 형성하는 컴퓨터-판독 가능한 매체(예를 들어, 메모리, 하드 드라이브), 또는 시스템(30)에 연결되는 컴퓨터-판독 가능한 매체(예를 들어, 메모리 스틱, 외부 하드 드라이브, 네트워크 디바이스들 등) 상에 저장되는 멀웨어를 검출하기 위해 클라이언트-서버 공동 스캔의 클라이언트-측 부분을 수행하도록 구성된다. 클라이언트-서버 공동 스캔의 일부로서, 클라이언트 AM 애플리케이션(40)은 대상 ODI(object data indicator)(100)를 AM 서버 시스템들(20a~20c)에 송신하고 시스템들(20a~20c)로부터 스캔 보고서(50)를 수신하도록 구성된다.
AM 애플리케이션(40)에 의해 스캔되는 대상 객체들은 컴퓨터 파일들 및 프로세스들을 포함한다. 각각의 프로세스는 로딩된 메모리 모듈들(즉, 대상 실행 파일의 로딩된 이미지들 및 그것의 기준화된 동적 링크된 라이브러리들)의 세트뿐만 아니라, 로딩된 메모리 모듈들에 상응하는 임의의 부가 파일들을 포함할 수 있다. 대상 객체가 악성 소프트웨어 엔티티(예를 들어, 바이러스, 웜, 트로이 목마 바이러스)의 적어도 일부를 포함한다면, 대상 객체는 멀웨어로 고려될 수 있다.
일부 실시예들에서, ODI(100)는 복수의 코드 블록 지시자들을 포함하며, 각각의 코드 블록 지시자는 대상 객체의 개별 코드 블록을 나타낸다. ODI(100)의 예시적인 콘텐츠 및 형식들은 도 7 내지 도 9와 관련하여 상세히 논의될 것이다.
일부 실시예들에서, 스캔 보고서(50)는 대상 객체의 식별자(예를 들어, 태그, 파일 ID), 대상 객체의 멀웨어 상태 지시자(예를 들어, 감염된, 클린한, 알려지지 않은), 및/또는 개별 멀웨어 에이전트들의 이름들(예를 들어, Win32.Worm.Downadup.Gen), 멀웨어 클래스 지시자들(바이러스, 루트킷 등), 또는 멀웨어 지식 베이스에서 각각의 에이전트들에의 포인터들과 같은 대상 객체를 감염시키는 멀웨어 에이전트들의 식별자들의 세트를 포함한다. 일부 실시예들에서, 단일 스캔 보고서는 대상 객체들의 배치(batch)를 위해 컴파일될 수 있다.
일부 실시예들에서, 서버 통신 관리자(52)는 서버 AM 시스템들(20a~20c)과의 통신을 관리하도록 구성된다. 예를 들어, 관리자(52)는 네트워크(12)를 통한 연결들을 수립하고, 데이터를 AM 서버들(20a~20c)로 송신하고 AM 서버들로부터 수신하고, 진행중인 스캔 트랜잭션(transaction)들의 리스트를 유지하고, 대상 ODI들(100)을 서버-측 스캐닝을 수행하는 AM 서버들과 연관시킬 수 있다.
활성 AM 스캐너(42) 및 정적 AM 스캐너(44)는, 이하에서 보다 상세하게 도시된 바와 같이, 클라이언트 AM 애플리케이션(40)이 대상 객체의 예비 안티-멀웨어 스캔을 실행하는 것을 가능하게 한다. 예비 스캔이 악성 콘텐츠를 검출하면, 위반하는 대상 객체는 클라이언트-서버 스캐닝을 거칠 필요없이 사용자에게 직접 보고되므로, 시간 및 컴퓨터 리소스들을 절감한다. 일부 실시예들에서, 파일 대상 객체들은 정적 AM 스캐너(44)에 의해 처리되는 반면에, 프로세스 대상 객체들은 활성 AM 스캐너(42)에 의해 처리된다. 일부 실시예들에서, 정적 AM 스캐너(44)는 메인 메모리와는 별도로 파일을 언패킹(unpacking)하고 그것을 보호된 환경에서 실행시키기 위해 에뮬레이터(46)를 사용할 수 있다. 스캐너들(42, 44)은 대상 객체가 멀웨어인지를 판정하기 위해 행위-기반 방법들, 다양한 발견법, 콘텐츠-기반 방법들(예를 들어, 서명 매칭), 또는 그것의 조합을 사용할 수 있다. 대상 객체가 악성인지를 판정하는 발견적 기준의 예들은, 무엇보다도, 대상 객체의 PE(portable executable) 파일에서의 다양한 부분들의 상대적 크기들, 각각의 부분의 정보 밀도, PE 헤더에서의 특정 플래그들 및 플래그 그룹들의 존재, (필요하다면) 팩커(packer)/프로텍터(protector)에 대한 정보, 및 실행 파일 내부의 특정 텍스트 패턴들의 존재를 포함한다.
클라이언트 AM 애플리케이션(40)은 대상 ODI(100)를 생성하기 위해 코드 정규화 엔진(48) 및 해싱 엔진(54)을 채용할 수 있다. 코드 정규화 엔진(48)의 동작은 도 7과 관련하여 이하에서 논의될 것이다. 해싱 엔진(54)은, 도 8 및 도 9와 관련하여 도시된 바와 같이, 연산 코드 패턴을 수신하고 각각의 연산 코드 패턴의 해시를 생성하도록 구성된다. 일부 실시예들에서, 해시는 심볼들(예를 들어, 문자들, 비트들)의 시퀀스를 수들 또는 비트 스트링의 시퀀스로 매핑하는 수학적 변환인 해시 함수의 출력이다. 해싱 엔진(54)에 의해 이용되는 예시적인 해시 함수들은, 무엇보다도, CRC(cyclic redundancy check), MD(message digest), 또는 SHA(secure hashing)를 포함한다. 예시적인 해시는 4-바이트 CRC32이다.
클라이언트-측 캐시(56)의 일부 실시예들은, 임의의 주어진 시간에서, 각각의 클라이언트 시스템(30) 상에서 상주하는 대상 객체들에 상응하는 ODI들의 리포지터리(repository)를 포함하며, 객체들은 멀웨어에 대해 이미 스캔되어 있다. 일부 실시예들에서, 캐시(56)는 대상 객체 ODI들의 해시들의 세트를 포함할 수 있으며; 클라이언트 시스템들(30)로부터 수신되는 각각의 ODI는 복제 해시들이 제거된 상태로 해싱되고, 결과적인 해시들이 각각의 ODI들의 고유의 지시자들로서 저장될 수 있다. 캐시(56)는 멀웨어 스캐닝의 속도 증가를 허용한다. 대상 객체의 ODI 또는 그것의 해시가 클라이언트 캐시(56)에서 발견되어, 각각의 대상 객체가 적어도 한 번 이미 스캔되었다는 것을 나타내면, 대상 객체의 멀웨어 상태는 캐시(56)로부터 직접 검색되고 사용자에게 보고될 수 있으며, 프로세스는 대상 객체의 새로운 스캔을 수행하는 것보다 상당히 더 빠르다. 모든 ODI에 대해, 캐시(56)의 일부 실시예들은 객체 식별자(예를 들어, 태그, 파일 ID), 및 각각의 대상 객체의 멀웨어 상태의 지시자를 포함할 수 있다.
도 5는 본 발명의 일부 실시예들에 따른 AM 서버 시스템(20) 상에서 실행되는 예시적인 애플리케이션들을 도시한다. 일부 실시예들에서, 시스템(20)은 서버 AM 애플리케이션(60), 서버-측 캐시(68), 화이트리스트 데이터베이스(65), 멀웨어 데이터베이스(66), 및 아웃브레이크(outbreak) 데이터베이스(67b)를 포함하며, 모두가 AM 서버 애플리케이션(60)에 연결된다.
일부 실시예들에서, AM 서버 애플리케이션(60)은 클라이언트 컴퓨터 시스템들(30a~30b)과 함께 복수의 멀웨어 검출 트랜잭션들을 수행하도록 구성된다. 각각의 그러한 트랜잭션에 대해, 서버 AM 애플리케이션(60)은, 이하에서 상세하게 설명되는 바와 같이, 각각의 클라이언트 컴퓨터 시스템 상에서 상주하는 멀웨어를 검출하기 위해 공동 스캔의 서버-측 부분을 수행하도록 구성된다. 클라이언트-서버 트랜잭션의 일부로서, 애플리케이션(60)은 클라이언트 컴퓨터 시스템으로부터 대상 ODI(100)를 수신하고, 스캔 보고서(50)를 각각의 클라이언트 컴퓨터 시스템에 송신한다. 서버 AM 애플리케이션(60)은 서버 AM 통신 관리자(62) 및 통신 관리자(62)에 연결되는 코드 비교기(64)를 포함할 수 있다.
일부 실시예들에서, 서버 통신 관리자(62)는 클라이언트 컴퓨터 시스템들(30a~30b)과의 통신을 관리하도록 구성된다. 예를 들어, 관리자(62)는 네트워크(12)를 통한 연결들을 수립하고, 데이터를 클라이언트들과 송수신하고, 진행중인 스캔 트랜잭션들의 리스트를 유지하고, 대상 ODI들(100)을 발신 클라이언트 컴퓨터 시스템들(30a~30b)과 연관시킬 수 있다. 코드 비교기(64)는, 이하에서 상세하게 설명되는 바와 같이, 대상 객체와 데이터베이스들(65~67) 내에 저장되는 기준 객체들의 세트 사이에서 유사성의 정도를 나타내는 유사성 스코어를 계산하도록 구성된다.
일부 실시예들에서, 서버-측 캐시(68)는 멀웨어에 대해 이미 스캔되었던 대상 객체들의 ODI들의 리포지터리를 포함하며, ODI들은 이전 클라이언트-서버 공동 스캔들 중에 다양한 클라이언트 컴퓨터 시스템들(30a~30b)로부터 수신된다. 이하에서 더 논의되는 바와 같이, 대상 객체의 ODI가 서버 캐시(68)에서 발견되어, 각각의 대상 객체가 적어도 한 번 이미 스캔되었다는 것을 나타내면, 대상 객체의 멀웨어 상태(예를 들어, 클린한, 감염된 등)는 대상 객체의 새로운 스캔을 수행하지 않고 캐시(68)로부터 검색될 수 있다. 대상 ODI들과 함께, 서버 캐시(68)의 일부 실시예들은 각각의 대상 객체의 멀웨어 상태(예를 들어, 클린한, 감염된)를 저장할 수 있다.
데이터베이스들(65~67)은 현재의 멀웨어-관련 지식의 리포지터리들로서 유지된다. 일부 실시예들에서, 각각의 데이터베이스(65~67)는 알려진 멀웨어 상태의 기준 객체들(파일들 및 프로세스들)의 수집에 상응하는 데이터 지시자들의 세트를 포함한다. 일부 실시예들에서, 데이터베이스들(65~67)은 연산 코드 패턴 해시들(도 7-도 10과 관련하여 이하에서 더 설명되는)의 형태로 데이터를 저장한다. 화이트리스트 데이터베이스(65)는 클린한 것으로 신뢰되는 객체들(즉, 화이트리스팅된 항목들)로부터 검색되는 해시들의 세트를 포함한다. 멀웨어 데이터베이스(66)는 멀웨어로 알려진 객체들로부터 검색되는 멀웨어-식별 해시들을 포함한다. 일부 실시예들에서, 아웃브레이크 데이터베이스(67)는 알려지지 않은 멀웨어 상태인(멀웨어 또는 클린한 것으로 아직 인식되지 않은) 객체들에 대해 계산되는 해시들을 포함한다.
일부 실시예들에서, 데이터베이스들(65~67) 내에 저장되는 모든 연산 코드 패턴 해시들은 동일한 크기(예를 들어, 4 바이트들)를 갖는다. 그것들은 서버 시스템들(20a~20c)의 메모리 및/또는 컴퓨터-판독 가능한 매체 내에 순차적으로 저장될 수 있다. 일부 실시예들에서, 객체 식별자들(예를 들어, 4 바이트 수들로서 또한 표현되는 파일 ID들)을 포함하는 제2 데이터 구조는 기준 해시들의 세트와 함께 저장된다. 각각의 AM 서버의 메모리에 저장되는 양방향 매핑은 각각의 해시를 그것이 검색되었던 객체의 파일 ID에 관련시키기 위해 사용된다. 이것은 클라이언트 컴퓨터 시스템들로부터 수신되는 대상 객체들이 데이터베이스들(65~67) 내에 저장되는 임의의 기준 객체들과 유사한지를 판정하기 위해 서버 AM 애플리케이션이 기준 해시들을 선택적으로 검색하는 것을 허용한다. 데이터베이스들(65~67)은, 이하에서 더 설명되는 바와 같이, 클라이언트 컴퓨터 시스템들(30a~30b)로부터 수신되는 대상 객체 데이터의 부가에 의해 최신으로 유지된다.
도 6은 본 발명의 일부 실시예들에 따른 클라이언트 AM 애플리케이션(40)에 의해 수행되는 예시적인 단계들의 시퀀스를 도시한다. 단계(202)에서, 애플리케이션(40)은 멀웨어에 대해 스캔할 대상 객체를 선택한다. 일부 실시예들에서, 대상 객체들은 사용자에 의해 직접 또는 간접적으로 지정될 수 있다(온 디맨드(on-demand) 스캐닝). 예를 들어, 사용자는 AM 애플리케이션(40)에 특정 파일, 또는 특정 폴더의 콘텐츠, 또는 특정 컴퓨터-판독 가능한 매체(예를 들어, CDROM, 플래시 메모리 디바이스) 상에 저장되는 콘텐츠를 스캔할 것을 명령할 수 있다. 다른 예시적인 대상 객체들은 온-액세스 스캐닝 동안 선택되며, 여기서 애플리케이션(40)은 특정 타입들의 파일들 또는 프로세스들을 판독/로딩/런칭하기 전에, 그것들을 스캔하도록 구성된다. 일부 실시예들에서, 대상 객체들의 세트는 애플리케이션(40)을 실행시키는 클라이언트 컴퓨터 시스템의 스케줄링된 스캔의 목적으로 컴파일될 수 있다. Microsoft Windows®를 실행시키는 클라이언트 시스템 상에 상주하는 그러한 대상 객체들의 예시적인 세트는, 무엇보다도, WINDIR 폴더로부터의 실행 파일들, WINDIR/system32 폴더로부터의 실행 파일들, 현재 실행하는 프로세스들의 실행 파일들, 현재 실행하는 프로세스들에 의해 불러와지는 DLL(dynamic link libraries), 및 모든 설치된 시스템 서비스들의 실행 파일들을 포함할 수 있다. 일부 실시예들에서, 대상 객체들은 또한 관심 있는 멀웨어 프로그램들, 예를 들어 각각의 멀웨어 스캔의 개시시에 가장 광범위하고 활발한 것으로 고려되는 멀웨어 프로그램들에 의해 대상화되는 파일들/프로세스들을 포함할 수 있다.
일부 실시예들에서, 식별자(예를 들어, 파일 ID)는 각각의 대상 객체에 고유하게 태그를 붙이기 위해 사용된다. 식별자는 대상 객체 그 자체(예를 들어, 파일 또는 프로세스), 예를 들어, 각각의 클라이언트 컴퓨터 시스템의 전체 메모리와 같은 더 큰 구조의 일부로서가 아닌 것의 선택적 신원 확인을 허용하는 데이터를 포함한다. 예시적인 대상 객체 식별자들은, 무엇보다도, 파일 경로들 및 메모리 어드레스들을 포함한다. 식별자는 또한 대상 ODI(100)를 계산할 뿐만 아니라, 클라이언트-서버 스캔 트랜잭션들을 다수의 대상 객체들과 함께 분명하게 수행하기 위해, 클라이언트 AM 애플리케이션(40)이 대상 객체를 선택적으로 검색하는 것을 허용한다.
단계(204)(도 6)에서, 클라이언트 AM 애플리케이션(40)은 대상 객체의 예비 안티-멀웨어 스캔을 실행시킬 수 있다. 일부 실시예들에서, 파일 대상 객체들은 정적 AM 스캐너(44)에 의해 처리되는 반면에, 프로세스 대상 객체들은 활성 AM 스캐너(42)에 의해 처리된다. 스캐너들(42, 44)은 대상 객체가 멀웨어인지를 판정하기 위해, 행위 방법들(예를 들어, 에뮬레이션), 다양한 발견법(예를 들어, 대상 객체의 휴대용 실행 파일 헤더의 기하학적 구조), 콘텐츠-기반 방법들(예를 들어, 서명 매칭), 또는 그것의 조합을 사용할 수 있다. 일부 실시예들에서, 스캐너들(42, 44)은 대상 객체의 멀웨어 상태의 지시자를 생성할 수 있다. 예시적인 상태 지시자들은, 무엇보다도, 악성인 것, 악성인 것으로 의심되는 것, 및 클린한 것을 포함한다.
일부 실시예들에서, 대상 객체가 알려진 악성 객체들과 마찬가지로 일부 특징들을 가지지만, 멀웨어로 간주되기에 충분하지 않을 때, 대상 객체는 악성인 것으로 의심될 수 있다. 예시적인 의심스러운 특징들은, 무엇보다도, 특정 값들/값 쌍들의 대상 객체의 PE 헤더 내에서의 존재, 특정 코드 시퀀스들의 대상 객체 내에서의 존재(예를 들어, 대상 객체가 가상 환경 내에서 실행되고 있는지를 체크하는 코드), 및 안티-멀웨어 소프트웨어의 공통 패스워드들 및 이름들 및/또는 경로 지시자들과 같은 멀웨어-식별 텍스트 패턴들(서명들)의 존재를 포함한다. 다른 의심스러운 특징들은 대상 객체의 특정 멀웨어-식별 행위 패턴들을 포함할 수 있다.
일부 실시예들에서, 스캐너들(42, 44)은 각각의 대상 객체에 대한 멀웨어 스코어를 계산하며, 여기서 각각의 멀웨어-식별 특징에는 특정 가중치가 주어질 수 있다. 멀웨어 스코어가 제1 임계치를 초과할 때, 각각의 대상 객체는 악성인 것으로 의심될 수 있으며; 스코어가 제2의, 더 높은 임계치를 초과할 때, 대상 객체는 멀웨어로서 라벨링될 수 있다. IRC 프로토콜에 특정한 스트링들, 안티바이러스 프로그램들의 이름들, 통상의 Windows® 패스워드들, 및 익스플로잇(exploits)에 특정한 코드 시퀀스들을 포함하는 예시적인 대상 객체는 비교적 높은 멀웨어 스코어를 받을 수 있고, 그러므로 멀웨어로 라벨링될 수 있는 반면에, 단지 일부 안티-멀웨어 애플리케이션들의 이름들을 포함하는 다른 예시적인 대상 객체는 상대적으로 낮은 스코어를 받을 수 있지만, 여전히 악성인 것으로 의심될 수 있다.
단계(206)에서, 애플리케이션(40)은 대상 객체가 악성인지를 예비 멀웨어 스캔에 따라 판정한다. 대상 객체가 악성이 아니라면, 애플리케이션(40)의 동작은 이하에서 설명되는 단계(210)로 진행된다. 대상 객체가 악성이면, 단계(208)에서 AM 애플리케이션(40)은 대상 객체를 멀웨어로서 라벨링하고, 단계(230)에서 그에 상응하게 클라이언트-측 캐시(56)를 업데이트한다. 다음에, 클라이언트 AM 애플리케이션(40)은 단계(232)에서 멀웨어 스캔의 결과를 출력한다.
일부 실시예들에서, 단계(232)는 사용자에게 각각의 클라이언트 컴퓨터 시스템이 감염될 수 있는 것을 통지하기 위해 경보(예를 들어, 팝업 창)를 발하는 단계를 포함할 수 있다. 대안적으로, 애플리케이션(40)은 멀웨어 스캔을 시스템 로그에 기록할 수 있다. AM 애플리케이션(40)의 일부 실시예들은 스캔 보고서를 사용자에게 디스플레이할 수 있으며, 보고서는, 무엇보다도, 대상 객체의 이름(또는 객체 식별자), 검출되는 멀웨어의 타입의 지시자, 및 각각의 멀웨어에 관한 부가 정보(예를 들어, 가능한 클린업(cleanup) 방법들)를 포함한다.
단계(210)에서, 클라이언트 AM 애플리케이션(40)은 대상 객체가 악성인 것으로 의심되는지를 예비 스캔의 결과(위의 단계(204) 참조)에 따라 판정할 수 있다. 대상 객체가 악성이면, 동작은 이하에서 논의되는 단계(212)로 진행된다. 대상 객체가 악성이 아니라면, 단계(228)에서, 애플리케이션(40)은 대상 객체를 악성이 아닌 것(클린한 것)으로 라벨링할 수 있고 단계(230)로 진행한다.
단계(212)에서, 대상 객체가 파일일 때, 애플리케이션(40)은 대상 파일을 에뮬레이터(46)에 의해 제공되는 보호된 환경 내에 로딩하여, 대상 객체의 코드를 팩킹하거나 및/또는 암호화 보호하는 임의의 계층들을 제거할 수 있다. 대상 객체가 프로세스일 때, 애플리케이션(40)의 동작은 대상 객체가 이미 시스템 메모리로 로딩될 것이므로, 단계(212)를 생략할 수 있다.
단계(214)에서, 코드 정규화 엔진(48)은 대상 객체의 코드 정규화를 수행한다. 컴파일러들은 사용되는 컴파일(compilation) 매개 변수들에 따라, 특히 코드 최적화로 인해 소스 코드의 동일한 블록으로부터 다른 기계 코드를 생성할 수 있다. 부가 코드 변형들은 프로텍터/다형 멀웨어에 의해 도입될 수 있다. 일부 실시예들에서, 코드 정규화는 컴파일 및/또는 다른 다형들에 의해 도입되는 컴퓨터 코드의 변형들을 제거하기 위해, 대상 객체를 형성하는 프로세서 명령들의 세트를 프로세서 명령들의 표준화된 세트로 변환하는 것을 포함한다. 예시적인 코드 정규화 동작은 이하에서와 같이 진행될 수 있다:
1. 대상 객체를 구축하는데 사용되는 컴파일러는 대상 객체의 특정 특징들에 따라 검출된다. 컴파일러가 알려진 경우, 대상 객체의 메모리 이미지 내부의 객체-특정 코드의 위치가 결정된다. 컴파일러가 결정될 수 없는 경우, 코드 추출에 대한 대상 영역들은 가능한 많은 잠재 객체-특정 코드 위치들(예를 들어, 진입점, 제1 부분의 시작 부분, 모든 부분들의 시작 부분 등)을 커버하기 위해 선택된다.
2. 코드 분해는 이전 단계에서 발견되는 위치에서 시작한다. 일부 실시예들에서, 코드 분해는 코드 분기들(예를 들어, x86 코드에서의 JMP/Jxx/CALL)을 추종한다. 분해된 명령들은 순서대로 처리된다. 정규화 프로세스의 일부로서, 일부 명령들은 변경되지 않은 채 남고 다른 것들은 변경된다. 예시적인 변경들은 이하를 포함한다:
a. 레지스터 ID들이 그것들이 함수 블록 내부에서 나타나는 순서에 기반하여 대체된다;
b. 상수 값들 및 오프셋들이 제거된다;
c. POP 시퀀스들에 의해 추종되는 PUSH는 MOV 명령들로 대체된다;
d. 변수/레지스터/메모리 어드레스의 값을 0으로 설정하는 시퀀스들(예를 들어, XOR <item>, <item>)은 MOV <item>, 0으로 대체된다;
e. 1 또는 2의 가산/감산은 각각 하나의 또는 2개의 INC/DEC 명령들로 대체된다.
f. JZ/JNZ 명령들은 각각 JE/JNE 명령들로 대체된다;
g. 함수 도입부들 및 종결부들이 제거된다;
h. 명령 클래스들 CMP, MOV 및 TEST가 제거된다;
i. 비동작들(0으로 ADD 및 SUB; NOP 등)이 제거된다.
도 7은 본 발명의 일부 실시예들에 따른 코드 정규화의 예시를 도시한다. 예시적인 대상 객체로부터 분해된 코드의 프레그먼트는 함수 블록(70)을 포함한다. 일부 실시예들에서, 함수 블록들은 PUSH EBP; MOV EBP, ESP 명령 시퀀스로 시작하고 그것들은 POP EBP로 종료한다. 함수 블록(70)에서의 코드(프로세서 명령)의 각각의 라인은 우측상에서 나열된 규정에 따라 수정되어, 상응하는 정규화된 함수 블록(72)을 생성한다.
단계(216)(도 6)에서, 클라이언트 AM 애플리케이션(40)은 대상 객체의 ODI(object data indicator)를 계산한다. 일부 실시예들에서, ODI는 복수의 코드 블록 지시자들을 포함하며, 각각의 코드 블록 지시자는 대상 객체의 개별 코드 블록을 나타낸다. 예시적인 코드 블록 지시자는 각각의 코드 블록의 연산 코드 패턴을 포함한다.
일부 실시예들에서, 코드 블록은 연속적 프로세서 명령들의 시퀀스를 포함하며, 시퀀스는 대상 객체의 정규화된 코드로부터 추출된다. 일부 실시예들에서, 코드 블록들은 미리 정해진, 코드-독립 수의 명령들을 포함한다. 대안적으로, 코드 블록 내에서 명령들의 수는 미리 정해진 범위 내에서 변화된다. 예시적인 코드 블록들은 5개 내지 50개의 인접한 명령들을 포함한다. 일부 실시예들에서, 코드 블록들의 크기(예를 들어, 명령들의 수)는 실질적으로 함수 블록들의 크기보다 더 작아, 함수 블록은 하나보다 더 많은 코드 블록을 포함할 수 있다. 일부 실시예들에서, 코드 블록들은 함수 블록의 시작 부분에서, 또는 CALL 명령에서 시작한다. 예시적인 코드 블록(74)은 도 7에 도시된다.
일부 실시예들에서, 단계(216)는 대상 객체를 코드 블록들로 분리시키고, 및 각각의 그러한 코드 블록으로부터 연산 코드 지시자들의 세트를 추출하는 것을 포함한다. 도 8은 프로세서 명령(80)(프로세서들의 Intel®x86, 32비트 패밀리에 대해 예시되는)의 예시적인 이진 메모리 표현을 도시한다. 일부 실시예들에서, 각각의 프로세서 명령은 바이트들의 시퀀스로서 메모리 내에 저장되고, 시퀀스는 프리픽스(prefix) 필드(82a), 2개의 연산 코드 필드들(82b~82c), Mod/Reg/R/M 필드(82d), 및 대체/데이터 필드(82e)와 같은 명령 필드들의 세트를 포함한다. 일부 실시예들에서, 연산 코드 필드들(82b~82c)은 명령의 타입(예를 들어, MOV, PUSH 등)을 인코딩하는 반면에, 필드들(82a, 82d~82e)은 다양한 명령 매개 변수들(예를 들어, 레지스터 이름들, 메모리 어드레스들 등)을 인코딩한다. 일부 실시예들에서, x86 형식과 같은, 명령 필드들의 바이트 크기 및 콘텐츠는 명령 독립적이므로, x86 아키텍처에 대한 명령들은 가변 길이를 갖는다. 도 8에 도시되는 명령(XOR CL, 12H)은 제1 연산 코드 바이트(XOR에 대해 10000000), Mod/Reg/R/M 바이트(레지스터 CL에 대해 11110001), 및 대체/데이터 바이트(00010010은 12H에 대해 이진임)만을 포함하는 반면에, 다른 명령들은 연산 코드 필드들 둘 다, 또는 프리픽스, 연산 코드, Mod, Reg 및/또는 데이터 필드들의 다른 조합들을 포함할 수 있다.
도 9는 코드 블록(74)에 상응하는 예시적인 연산 코드 패턴(90)을 도시한다. 일부 실시예들에서, 연산 코드 패턴(90)은 연산 코드 지시자들(92)의 세트를 포함하는 데이터 구조(예를 들어, 바이트 시퀀스, 리스트 등)이며, 각각의 연산 코드 지시자는 정규화된 코드 블록(74)의 프로세서 명령에 상응한다. 예시적인 연산 코드 지시자들(92)은 각각의 프로세서 명령의 연산 코드 필드들의 콘텐츠를 포함하며, 이 경우 연산 코드 패턴(90)은 각각의 코드 블록을 구성하는 명령 타입들의 시퀀스를 포함한다. 도 9에 도시되는 실시예에서, 각각의 연산 코드 지시자(92)는 연산 코드 바이트들 및 매개 변수 바이트들의 조합을 포함한다(예를 들어, 명령 PUSH EDX에 대한 연산 코드 지시자는 16진법에서 52이다).
도 10은 본 발명의 일부 실시예들에 따른 정규화된 코드의 프레그먼트 및 프레그먼트의 예시적인 ODI(100)를 도시한다. ODI(100)는 복수의 코드블록 지시자들(104a~104c)을 포함하며, 각각의 코드블록 지시자는 각각의 코드 블록(74a~74c)의 다이제스트(digest)(예를 들어, 지문, 서명)를 제공한다. 예시적인 코드블록 지시자(104a~104c)는 각각의 연산 코드 패턴(90a~90c)을 포함한다. 일부 실시예들에서, 코드블록 지시자들(104a~104c)은, 도 10에 도시된 바와 같이, 각각 연산 코드 패턴들(90a~90c)의 해시들을 포함한다. 코드블록 지시자들(104a~104c) 외에, ODI(100)의 일부 실시예들은 각각의 대상 객체, 및/또는 대상 객체의 객체 특징 지시자들(106)의 세트에 태그를 붙이는 객체 식별자(102)(예를 들어, 파일 ID)를 포함할 수 있다. 예시적인 객체 특징 지시자들은, 무엇보다도, 파일 크기(예를 들어, 130kB), 파일 타입의 지시자(예를 들어, 파일이 실행 파일, DLL 등인지 여부), 대상 객체의 메모리 어드레스, 및 안티-멀웨어 발견적 테스트들의 세트의 결과(예를 들어, 대상 객체가 어떤 멀웨어-특정 행위들 또는 콘텐츠를 디스플레이하는지)를 나타내는 수들의 세트를 포함한다. 일부 실시예들에서, 객체 특징 지시자들(106)은 예를 들어, 대상 객체의 예비 스캔 동안(단계(202)) AM 스캐너들(42~44)에 의해 계산될 수 있다.
간략화를 위해, 명세서의 나머지 부분은 코드블록 지시자들(104a~104c)이 연산 코드 패턴들(90a~90c)의 해시들을 포함한다고 가정할 것이다. 단계(216)(도 6)의 실행은 그 다음 이하와 같이 진행된다. 클라이언트 AM 애플리케이션(40)은 대상 객체를 개별 코드 블록들(도 10에서의 코드 블록들(74a~74c)로 도시되는)로 분리시킬 수 있다. 각각의 코드 블록(74a~74c)에 대해, 애플리케이션(40)은, 도 9에 도시된 바와 같이, 각각 연산 코드 패턴(90a~90c)을 계산하도록 진행할 수 있다. 애플리케이션(40)은 그 다음 연산 코드 패턴(90a~90c)의 해시를 계산하기 위해 해싱 엔진(54)을 작동시켜, 각각의 코드블록 지시자(즉, 대상 해시)(104a~104c)를 생성할 수 있다. 해싱 엔진(54)은, 무엇보다도, CRC(cyclic redundancy check), MD(message digest), 또는 SHA(secure hashing)와 같은 해싱 알고리즘을 이용할 수 있다.
대상 ODI(100)를 계산한 후에, 단계(218)(도 6)에서, 클라이언트 AM 애플리케이션(40)은 클라이언트-측 캐시(56)에서 ODI의 룩업(lookup)을 수행한다. ODI가 캐시 기록에 부합하여(캐시 적중), 각각의 대상 객체가 적어도 한 번 멀웨어에 대해 이미 스캔되었다는 것을 나타내면, 애플리케이션(40)은 단계(220)로 진행하여, 캐시 기록(예를 들어, 클린한 것 또는 멀웨어)에 따라 대상 객체를 라벨링하고, 상술한 단계(232)로 진행한다.
대상 ODI(100)가 클라이언트-측 캐시(56)에서 부합되지 않으면, 단계(222)에서 애플리케이션(40)은 클라이언트-서버 스캐닝 트랜잭션을 개시하기 위해 클라이언트 AM 통신 관리자(52)를 작동시킬 수 있다. 통신 관리자(52)는 대상 ODI(100)를 AM 서버들(20a~20c)에 송신하고, 단계(224)에서 서버들(20a~20c)로부터 스캔 보고서(50)를 수신한다. 일부 실시예들에서, 각각의 ODI는 개별 클라이언트-서버 스캐닝 트랜잭션의 일부를 형성할 수 있거나, 다수의 ODI들은 동일한 트랜잭션(배치 프로세싱) 내에서 동시에 송신될 수 있다.
단계(226)에서, 애플리케이션(40)은 스캔 보고서(50)에 따라 대상 객체가 화이트리스팅되는지(클린한지)를 판정한다. 대상 객체가 화이트리스팅되면, 대상 객체는 악성이 아닌 것으로 라벨링된다(단계(228)). 대상 객체가 스캔 보고서(50)에 따라 악성이면, 애플리케이션(40)은 대상 객체를 멀웨어로 라벨링한다(단계(208)).
도 11은 본 발명의 일부 실시예들에 따른 서버 AM 애플리케이션(60)(도 5)에 의해 수행되는 예시적인 단계들의 시퀀스를 도시한다. 단계(302)에서, 서버 AM 통신 관리자(62)는 클라이언트 컴퓨터 시스템(30)으로부터 대상 ODI(100)를 수신한다. 단계(304)에서, 애플리케이션(60)은 서버-측 캐시(68)에서 ODI(100)의 룩업을 수행한다. ODI가 캐시 기록(캐시 적중)에 부합하여, 각각의 대상 객체가 적어도 한 번 멀웨어에 대해 이미 스캔되었다는 것을 나타내면, 애플리케이션(60)은 단계(306)로 진행하여, 캐시 기록(예를 들어, 클린한 것 또는 멀웨어)에 따라 대상 객체를 라벨링한다. 단계(308)에서, 통신 관리자(62)는 스캔 보고서(50)를 컴파일하고 보고서(50)를 각각의 클라이언트 컴퓨터 시스템(30)에 송신한다.
ODI(100)의 어떤 기록도 서버-측 캐시(68)에서 발견되지 않으면, 단계(310)에서 서버 AM 애플리케이션(60)은 해시들의 관련된 서브세트(subset)를 생성하기 위해 ODI(100)의 해시들을 필터링한다. 일부 실시예들에서, 객체-특정이 아닌 연산 코드 패턴들의 해시들은 멀웨어 스캐닝의 성능을 향상시키기 위해 ODI(100)로부터 폐기될 수 있다. 그러한 불특정 연산 코드 패턴들은 예를 들어, 언팩커 코드(예를 들어, 설치자, 자체 추출기) 및/또는 라이브러리 코드에 상응하거나, 클린한 객체들 및 멀웨어 객체들 모두에서 존재한다.
단계(312)에서, ODI(100)의 각각의 해시에 대해, 서버 AM 애플리케이션(60)은 각각의 해시를 포함하는 화이트리스팅된 기준 객체들의 세트를 검색하기 위해 화이트리스트 데이터베이스(65)를 문의할 수 있다. 일부 실시예들에서, 힙(heap)-기반 알고리즘은 그것들의 대상 객체와의 유사성에 따라 검색된 기준 객체들의 등급을 매기기 위해 사용된다.
단계(314)에서, 서버 AM 애플리케이션(60)은 대상 객체가 단계(312)에서 검색되는 각각의 화이트리스팅된 기준 객체와 얼마나 유사한지의 특성을 나타내는 유사성 스코어를 계산하기 위해 코드 비교기(64)를 작동시킨다. 일부 실시예들에서, 유사성 스코어는 이하의 수학식에 따라 계산된다:
[수학식 1]
Figure 112014052332587-pct00001
여기서, C는 대상 객체 및 각각의 기준 객체 모두에 공통된 해시들의 수(총수)를 나타내고, ΝT은 앞서 단계(310)에서 논의된 바와 같이 필터링되는 대상 ODI의 해시들의 수(총수)를 나타내고, NR은 기준 객체의 해시들의 수(총수)를 나타낸다.
대안적인 실시예들은 이하와 같은 수학식들에 따라 유사성 스코어를 계산할 수 있다:
[수학식 2]
Figure 112014052332587-pct00002
또는
[수학식 3]
Figure 112014052332587-pct00003
단계(316)에서, 애플리케이션(60)은 유사성 스코어(예를 들어, 수학식 1)를 미리 정해진 임계치와 비교한다. 유사성 스코어가 임계치를 초과하여, 대상 객체가 적어도 하나의 화이트리스팅된 객체와 유사한 것을 나타낼 때, 서버 AM 애플리케이션(60)의 일부 실시예들은 단계(318)에서 대상 객체를 악성이 아닌 것(클린한 것)으로 라벨링할 수 있다. 화이트리스팅 임계치의 예시적인 값은 50이고, 대상 객체가 화이트리스팅된 객체와 대상 객체의 연산 코드 패턴들의 50%보다 더 많이 공유할 때 대상 객체가 화이트리스팅된 것을 나타낸다.
그 다음에, 단계(320)는 화이트리스트 데이터베이스(65)를 현재의 대상 객체의 기록으로 업데이트하고, 단계(322)는 서버-측 캐시(68)를 대상 객체의 기록 및 스캔 결과(예를 들어, 클린한)의 지시자로 업데이트한다.
화이트리스팅 유사성 스코어(단계(318))가 임계치를 초과하지 않아, 대상 객체가 임의의 알려진 화이트리스팅된 객체와 충분히 유사하지 않은 것을 나타낼 때, 서버 AM 애플리케이션은 단계(324)로 넘어가며, 여기서 대상 ODI(100)는 멀웨어 객체들의 기록들의 세트와 비교된다. 일부 실시예들에서, ODI(100)의 해시들의 세트는 화이트리스트 데이터베이스(65)로부터의 기록들에 부합하였던 모든 해시들을 제거하기 위해 더 필터링되어(상술한 단계(312) 참조), 임의의 알려진 화이트리스팅된 객체에서 발견되지 않은 해시들의 서브세트를 유지한다. 대상 객체의 각각의 그러한 인식되지 않은 해시에 대해, 코드 비교기(64)는 각각의 해시를 포함하는 멀웨어 객체들의 세트를 검색하기 위해 멀웨어 및/또는 아웃브레이크 데이터베이스들(66~67)을 문의할 수 있다. 단계(326)에서, 코드 비교기(64)는 그 다음 대상 객체가 각각의 그러한 멀웨어 객체와 얼마나 유사한지를 나타내는 멀웨어 유사성 스코어를 계산하는 것을 진행할 수 있다. 일부 실시예들에서, 코드 비교기(64)는 멀웨어 유사성 스코어를 계산하기 위해 상술된 수학식 1-3 중 임의의 수학식을 사용한다.
단계(328)는 멀웨어 유사성 스코어를 미리 설정된 임계치와 비교한다. 멀웨어 유사성 스코어가 임계치를 초과하여, 대상 객체가 데이터베이스들(66~67) 내에 저장되는 적어도 하나의 멀웨어 객체와 유사한 것을 나타낼 때, 단계(330)에서 대상 객체는 멀웨어로서 라벨링된다. 멀웨어로서의 분류에 대한 예시적인 임계치는 70이다(즉, 대상 객체는 알려진 멀웨어 객체와 연산 코드 패턴들의 적어도 70%를 공유한다). 그 다음에, 멀웨어 및/또는 아웃브레이크 데이터베이스들(66~67)은 대상 객체의 기록을 포함하도록 업데이트된다. 서버-측 캐시(68)는 대상 객체의 기록 및 그것의 멀웨어 상태(예를 들어, 감염된)의 지시자를 포함하도록 업데이트되고, 스캔 보고서는 컴파일링되고 클라이언트 컴퓨터 시스템으로 송신된다(단계 308).
멀웨어 유사성 스코어가 임계치를 초과하지 않아, 대상 객체가 알려진 멀웨어 객체들과 유사하지 않은 것을 나타낼 때, 서버 AM 애플리케이션들의 일부 실시예들은 대상 객체를 화이트리스팅된/악성이 아닌 것으로 라벨링하고(단계 318), 그에 상응하게 화이트리스트 데이터베이스(65)를 업데이트한다.
대상 ODI(100)는 또한 멀웨어 아웃브레이크 경보를 트리거할 수 있다. 일부 실시예들에서, 서버 AM 애플리케이션(60)은 대상 객체와 유사하고 미리 정해진 기간(예를 들어, 최근의 6 시간) 내에서 AM 서버 시스템들(20a~20c)에 의해 수신되었던 객체들인, 기준 객체들을 아웃브레이크 데이터베이스(67)로부터 카운팅한다. 총수가 임계치(예를 들어, 10)를 초과할 때, 멀웨어 아웃브레이크가 추정되고 대상 객체뿐만 아니라, 그것과 유사한 모든 기준 객체들은 감염된 것으로 마킹된다. 멀웨어 및/또는 아웃브레이크 데이터베이스들(66~67)은 그 다음 그에 상응하게 업데이트된다.
상술한 예시적인 시스템들 및 방법들은 안티-멀웨어 시스템이 유연성 있는 화이트리스트 데이터베이스를 유지하고, 멀웨어 검출 성능을 향상시키기 위해 화이트리스트 데이터베이스를 사용하는 것을 허용한다.
통상적인 화이트리스팅 애플리케이션들에서, 대상 객체(컴퓨터 파일 또는 프로세스)의 해시는 화이트리스팅된 객체들(클린한 것으로 신뢰되는 객체들)에 상응하는 해시들의 세트와 비교된다. 대상 객체의 해시가 화이트리스팅된 해시에 부합하여, 대상 객체가 화이트리스팅된 객체들 중 적어도 하나와 동일함을 나타내면, 대상 객체는 신뢰되고, 예를 들어, 실행되는 것이 허용된다. 해시 함수들의 특정 수학적 특성들로 인해, 통상적인 화이트리스팅은 화이트리스팅된 객체들의 코드에서의 변형들을 허용하지 않는다: 2개의 객체들이 하나의 비트만큼 적게 상이하다면, 2개의 객체들의 해시들은 더 이상 부합하지 않는다. 한편, 합법 컴퓨터 파일들 및 프로세스들은 예를 들어, 컴파일러들 사이 또는 동일한 소프트웨어의 연속적 버전들 사이의 차이들로 인해 실질적 변형들을 디스플레이할 수 있다.
상술된 시스템들 및 방법들의 일부 실시예들은 안티-멀웨어 시스템이 컴파일러들 및 다른 다형들에 의해 도입되는 차이들과 같은 데이터 객체들 사이의 유순한 차이들을 처리하는 것을 허용한다. 대상 객체는 다수의 코드 블록들로 분리되고, 해시는 각각의 코드 블록 마다 계산된다. 대상 해시들의 획득된 세트는 그 다음 화이트리스팅된 객체들로부터 추출되는 코드 블록들에 상응하는 해시들의 데이터베이스에 대하여 비교된다. 대상 객체는 그것이 화이트리스팅된 객체와 마찬가지로 상당한 수의 해시들을 가진다면, 화이트리스팅된(신뢰된) 것으로 라벨링될 수 있다. 알려진 화이트리스팅된 객체들과 약간 다른 객체들은 여전히 화이트리스팅 상태를 수신할 수 있다. 개별 객체들의 해시들의 세트들 사이에 일정 정도의 부조화(mismatch)를 허용함으로써, 본 발명의 일부 실시예들은 데이터 안전의 감소를 수용하지 않고 화이트리스팅의 효율성을 증가시킨다.
코드 블록의 크기는 수 개의 기준들에 따라 결정될 수 있다. 작은 코드 블록들(예를 들어, 수 개의 프로세서 명령들 각각)은 대상 객체마다 다수의 해시들을 야기할 수 있으며, 이는 안티-멀웨어 서버의 저장 및 프로세싱 부하를 증가시키고 스캐닝을 늦출 수 있다. 반면에, 작은 코드 블록들은 상당한 정도의 유연성을 제공한다: 2개의 객체들이 단지 약간 다르다면, 차이들은 해시들의 작은 부분에 의해서만 픽업되어, 높은 유사성 스코어를 생성할 것이다. 큰 코드 블록들(예를 들어, 수백 개의 프로세서 명령들)은 대상 객체마다 평균적으로 더 적은(예를 들어, 수 개의) 해시들을 생성하므로, 저장 및 프로세싱 관점에서 유리하다. 그러나, 큰 코드 블록들은 통상적인 해싱과 동일한 단점을 겪는다: 2개의 객체들 사이의 작은 차이들은 해시들의 대다수에 의해 픽업되어, 낮은 유사성 스코어를 생성할 수 있다. 테스트는 일부 실시예들에서 5개 내지 50개의 프로세서 명령들 및 특히 약 5개 내지 15개의(예를 들어, ~10개의) 명령들의 최적의 코드 블록 크기를 보였다.
상술한 예시적인 시스템들 및 방법들은 안티-멀웨어 시스템이 공동 클라이언트-서버 스캐닝 트랜잭션을 수행하고, 대상 객체의 서버-측 스캔의 결과들에 따라 대상 객체의 멀웨어 상태를 평가하는 것을 허용한다. 원격 안티-멀웨어 서버 상에서 멀웨어 스캔의 일부를 수행하는 것은 클라이언트 컴퓨터 시스템 상에서 대상 객체들의 로컬 스캐닝보다 나은 다수의 이점들을 갖는다.
멀웨어 에이전트들 및 소프트웨어의 급증은 일반적으로 수 메가바이트들 내지 수 기가바이트들의 데이터에 이를 수 있는 화이트리스트 및 멀웨어 해시 데이터베이스들의 크기의 끊임없는 증가를 야기하였다. 상술한 예시적인 방법들 및 시스템들은 안티-멀웨어 서버 상에 해시 데이터베이스들을 저장하는 것을 허용하므로, 정기적으로 기업 서버에서 다수의 고객들로 데이터-대량의 소프트웨어 업데이트들의 전달을 회피한다.
멀웨어 스캐닝의 상당한 부분을 서버 상에 중심적으로 수행함으로써, 상술한 시스템들 및 방법들은 새롭게 검출된 멀웨어 및 새로운 합법 소프트웨어의 해시들의 적시의 통합을 허용한다. 그에 반하여, 스캐닝이 클라이언트 컴퓨터 시스템들에 대부분 분포되는 통상적인 멀웨어 검출에서는, 새로운 보안성 위협들 및 새로운 화이트리스팅된 소프트웨어에 대한 정보 수집이 간접적 방법들과 관련되어, 안티-멀웨어 소프트웨어 생산자들에게 도달하는데 상당히 더 오래 걸릴 수 있다.
상술한 클라이언트와 안티-멀웨어 서버 시스템들 사이에서 교환되는 파일들의 크기는 최소로 유지된다. 서버-측 스캐닝을 위해 클라이언트에서 서버로 전체 대상 객체들을 송신하는 것 대신에, 상술한 예시적인 방법들 및 시스템들은 대상 객체마다 수 바이트들 내지 수 킬로바이트들에 이를 수 있는 해시들을 교환하도록 구성되므로, 네트워크 트래픽을 상당히 감소시킨다.
상술한 실시예들이 본 발명의 범위를 벗어나지 않는 범위 내에서 다양한 방법으로 변형될 수 있다는 점은 통상의 기술자에게 분명할 것이다. 따라서, 본 발명의 범위는 이하의 청구항들 및 그것들의 법적 균등물들에 의해 결정될 것이다.

Claims (31)

  1. 클라이언트 컴퓨터 시스템에서, 클라이언트 컴퓨터 시스템의 복수의 대상 객체들의 초기 멀웨어 스캔을 수행하는 단계; 및
    상기 대상 객체가 악성으로 의심된다는 상기 초기 멀웨어 스캔에 의한 잠정적 판정에 응답하여:
    상기 클라이언트 컴퓨터 시스템에서, 상기 대상 객체의 복수의 대상 해시들을 생성하는 단계로서, 각각의 대상 해시가 상기 대상 객체의 개별 코드 블록을 나타내며, 각각의 개별 코드 블록이 상기 대상 객체의 프로세서 명령들의 시퀀스로 구성되는 생성하는 단계;
    상기 클라이언트 컴퓨터 시스템으로부터, 상기 복수의 대상 해시들을 광역 네트워크를 통해 상기 클라이언트 컴퓨터 시스템에 연결되는 서버 컴퓨터 시스템에 송신하는 단계; 및
    상기 클라이언트 컴퓨터 시스템에서, 상기 서버 컴퓨터 시스템으로부터 상기 대상 객체가 악성인지에 대한 서버-측 지시자를 수신하는 단계를 포함하고, 상기 서버-측 지시자는, 상기 서버 컴퓨터 시스템에 의해서:
    상기 복수의 대상 해시들 중 적어도 하나의 대상 해시에 대해, 기준 객체의 복수의 기준 해시들을 검색하는 단계로서, 상기 기준 객체는 상기 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되는 검색하는 단계, 및 상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하는 단계;
    상기 유사성 스코어가 미리 정해진 임계치를 초과할 때, 상기 대상 객체를 악성이 아닌 것으로 지정하는 단계; 및
    상기 유사성 스코어가 상기 미리 정해진 임계치를 초과하지 않을 때, 클린한 해시들의 데이터베이스에서 나타나는 모든 대상 해시들을 상기 대상 객체의 상기 복수의 대상 해시들 외로 필터링함으로써 상기 대상 객체의 대상 해시들의 필터링된 세트를 생성하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 서버 컴퓨터 시스템에 의해 상기 서버-측 지시자를 생성하는 단계는:
    상기 대상 해시들의 필터링된 세트를 멀웨어에 특정한 멀웨어-식별 해시들의 데이터베이스와 비교하는 단계를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 서버 컴퓨터 시스템에 의해 상기 서버-측 지시자를 생성하는 단계는:
    상기 대상 해시들의 필터링된 세트를 상기 서버 컴퓨터 시스템에 연결되는 복수의 개별 클라이언트 컴퓨터 시스템들에 의해 미리 정해진 최근 기간 내에 보고된 알려지지 않은 객체들에 특정한 아웃브레이크-검출 해시들의 데이터베이스와 비교하는 단계를 포함하는, 방법.
  4. 서버 컴퓨터 시스템에서, 광역 네트워크를 통해 서버 컴퓨터 시스템에 연결되는 클라이언트 컴퓨터 시스템의 대상 객체의 복수의 대상 해시들을 수신하는 단계로서, 상기 복수의 대상 해시들은 상기 대상 객체가 악성으로 의심된다는 상기 클라이언트 컴퓨터 시스템에 의한 잠정적 판정에 응답하여 상기 클라이언트 컴퓨터 시스템에서 생성되며, 상기 잠정적 판정은 상기 클라이언트 컴퓨터 시스템의 복수의 대상 객체들의 초기 멀웨어 스캔에 기인하는 단계;
    상기 서버 컴퓨터 시스템에서, 상기 대상 객체가 악성인지에 대한 서버-측 지시자를 생성하는 단계로서:
    상기 복수의 대상 해시들 중 적어도 하나의 대상 해시에 대해, 기준 객체의 복수의 기준 해시들을 검색하는 단계로서, 상기 기준 객체는 상기 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되는 검색하는 단계, 및 상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하는 단계; 및
    상기 유사성 스코어가 미리 정해진 임계치를 초과할 때, 상기 대상 객체를 악성이 아닌 것으로 지정하는 단계;
    상기 대상 객체가 악성인지에 대한 상기 서버-측 지시자를 상기 클라이언트 컴퓨터 시스템에 송신하는 단계; 및
    상기 유사성 스코어가 상기 미리 정해진 임계치를 초과하지 않을 때, 클린한 해시들의 데이터베이스에서 나타나는 모든 대상 해시들을 상기 대상 객체의 상기 복수의 대상 해시들 외로 필터링함으로써 상기 대상 객체의 대상 해시들의 필터링된 세트를 생성하는 단계를 포함하는, 방법.
  5. 제4항에 있어서,
    상기 서버 컴퓨터 시스템에 의해 상기 서버-측 지시자를 생성하는 단계는:
    상기 대상 해시들의 필터링된 세트를 멀웨어에 특정한 멀웨어-식별 해시들의 데이터베이스와 비교하는 단계를 포함하는, 방법.
  6. 제4항에 있어서,
    상기 서버 컴퓨터 시스템에 의해 상기 서버-측 지시자를 생성하는 단계는:
    상기 대상 해시들의 필터링된 세트를 상기 서버 컴퓨터 시스템에 연결되는 복수의 개별 클라이언트 컴퓨터 시스템들에 의해 미리 정해진 최근 기간 내에 보고된 알려지지 않은 객체들에 특정한 아웃브레이크-검출 해시들의 데이터베이스와 비교하는 단계를 포함하는, 방법.
  7. 서버 컴퓨터 시스템에서, 대상 객체의 복수의 대상 해시들을 수신하는 단계로서, 각각의 대상 해시는 상기 대상 객체의 개별 코드 블록을 나타내며, 각각의 개별 코드 블록은 상기 대상 객체의 프로세서 명령들의 시퀀스로 구성되는 수신하는 단계;
    상기 복수의 대상 해시들 중 적어도 하나의 대상 해시에 대해 상기 서버 컴퓨터 시스템을 채용하는 단계로서:
    기준 객체의 복수의 기준 해시들을 검색하는 단계로서, 상기 기준 객체는 상기 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되는 검색하는 단계, 및
    상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하는 단계;
    상기 유사성 스코어가 미리 정해진 임계치를 초과할 때, 상기 대상 객체를 악성이 아닌 것으로 라벨링하는 상기 서버 컴퓨터 시스템을 채용하는 단계; 및
    상기 유사성 스코어가 상기 미리 정해진 임계치를 초과하지 않을 때, 클린한 해시들의 데이터베이스에서 나타나는 모든 대상 해시들을 상기 대상 객체의 상기 복수의 대상 해시들 외로 필터링함으로써 상기 대상 객체의 대상 해시들의 필터링된 세트를 생성하는 단계를 포함하는, 방법.
  8. 제7항에 있어서,
    상기 대상 해시는 연산 코드 패턴의 해시를 포함하며, 상기 연산 코드 패턴은 명령 지시자들의 시퀀스를 포함하며, 각각의 명령 지시자는 상기 개별 코드 블록의 프로세서 명령을 나타내는, 방법.
  9. 제7항에 있어서,
    상기 프로세서 명령들의 시퀀스는 5개 내지 50개의 연속적 프로세서 명령들로 구성되는, 방법.
  10. 제9항에 있어서,
    상기 프로세서 명령들의 시퀀스는 5개 내지 15개의 연속적 프로세서 명령들로 구성되는, 방법.
  11. 제7항에 있어서,
    상기 프로세서 명령들의 시퀀스는 CALL 명령으로 시작하는, 방법.
  12. 제7항에 있어서,
    정규화된 대상 객체를 생성하기 위해 상기 대상 객체 상에서 코드 정규화 절차를 수행하는 단계로서, 각각의 개별 코드 블록은 상기 정규화된 대상 객체의 컴퓨터 명령들의 시퀀스로 구성되는 수행하는 단계; 및
    상기 대상 해시를 생성하기 위해 상기 개별 코드 블록에 해시 함수를 적용하는 단계를 더 포함하는, 방법.
  13. 제7항에 있어서,
    상기 유사성 스코어는:
    C/max(NT, NR)
    의 함수로서 결정되며, 여기서 C는 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수를 나타내는 반면에, NT 및 NR 은 각각 상기 복수의 대상 해시들의 카디널리티(cardinality) 및 상기 복수의 기준 해시들의 카디널리티를 나타내는, 방법.
  14. 제7항에 있어서,
    상기 유사성 스코어는:
    C/(NT + NR)
    의 함수로서 결정되며, 여기서 C는 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수를 나타내는 반면에, NT 및 NR 은 각각 상기 복수의 대상 해시들의 카디널리티 및 상기 복수의 기준 해시들의 카디널리티를 나타내는, 방법.
  15. 제7항에 있어서,
    상기 유사성 스코어는:
    C/NT + C/NR
    의 함수로서 결정되며, 여기서 C는 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수를 나타내는 반면에, NT 및 NR 은 각각 상기 복수의 대상 해시들의 카디널리티 및 상기 복수의 기준 해시들의 카디널리티를 나타내는, 방법.
  16. 제7항에 있어서,
    상기 대상 객체는 컴퓨터 파일을 포함하는, 방법.
  17. 제7항에 있어서,
    상기 대상 객체는 컴퓨터 프로세스를 포함하는, 방법.
  18. 컴퓨터 시스템으로서:
    복수의 대상 해시들을 수신하되, 각각의 대상 해시는 대상 객체의 개별 코드 블록을 나타내며, 각각의 개별 코드 블록은 상기 대상 객체의 프로세서 명령들의 시퀀스로 구성되고;
    상기 복수의 대상 해시들 중 적어도 하나의 대상 해시에 대해:
    기준 객체의 복수의 기준 해시들을 검색하되, 상기 기준 객체는 상기 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되고,
    상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하고;
    상기 유사성 스코어가 미리 정해진 임계치를 초과할 때, 상기 대상 객체를 악성이 아닌 것으로 라벨링하도록 프로그래밍되는 적어도 하나의 프로세서를 포함하고; 및
    상기 유사성 스코어가 상기 미리 정해진 임계치를 초과하지 않을 때, 클린한 해시들의 데이터베이스에서 나타나는 모든 대상 해시들을 상기 대상 객체의 상기 복수의 대상 해시들 외로 필터링함으로써 상기 대상 객체의 대상 해시들의 필터링된 세트를 생성하는 단계를 포함하는, 컴퓨터 시스템.
  19. 제18항에 있어서,
    상기 대상 해시는 연산 코드 패턴의 해시를 포함하며, 상기 연산 코드 패턴은 명령 지시자들의 시퀀스를 포함하며, 각각의 명령 지시자는 상기 개별 코드 블록의 프로세서 명령을 나타내는, 컴퓨터 시스템.
  20. 제18항에 있어서,
    상기 프로세서 명령들의 시퀀스는 5개 내지 50개의 연속적 프로세서 명령들로 구성되는, 컴퓨터 시스템.
  21. 제20항에 있어서,
    상기 프로세서 명령들의 시퀀스는 5개 내지 15개의 연속적 프로세서 명령들로 구성되는, 컴퓨터 시스템.
  22. 제18항에 있어서,
    상기 프로세서 명령들의 시퀀스는 CALL 명령으로 시작하는, 컴퓨터 시스템.
  23. 제18항에 있어서,
    상기 프로세서는:
    정규화된 대상 객체를 생성하기 위해 상기 대상 객체 상에서 코드 정규화 절차를 수행하되, 각각의 개별 코드 블록은 상기 정규화된 대상 객체의 컴퓨터 명령들의 시퀀스로 구성되고;
    상기 대상 해시를 생성하기 위해 상기 개별 코드 블록에 해시 함수를 적용하도록 더 프로그래밍되는, 컴퓨터 시스템.
  24. 제18항에 있어서,
    상기 유사성 스코어는:
    C/max(NT, NR)
    의 함수로서 결정되며, 여기서 C는 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수를 나타내는 반면에, NT 및 NR 은 각각 상기 복수의 대상 해시들의 카디널리티 및 상기 복수의 기준 해시들의 카디널리티를 나타내는, 컴퓨터 시스템.
  25. 제18항에 있어서,
    상기 유사성 스코어는:
    C/(NT + NR)
    의 함수로서 결정되며, 여기서 C는 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수를 나타내는 반면에, NT 및 NR 은 각각 상기 복수의 대상 해시들의 카디널리티 및 상기 복수의 기준 해시들의 카디널리티를 나타내는, 컴퓨터 시스템.
  26. 제18항에 있어서,
    상기 유사성 스코어는:
    C/NT + C/NR
    의 함수로서 결정되며, 여기서 C는 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수를 나타내는 반면에, NT 및 NR 은 각각 상기 복수의 대상 해시들의 카디널리티 및 상기 복수의 기준 해시들의 카디널리티를 나타내는, 컴퓨터 시스템.
  27. 제18항에 있어서,
    상기 대상 객체는 컴퓨터 파일을 포함하는, 컴퓨터 시스템.
  28. 제18항에 있어서,
    상기 대상 객체는 컴퓨터 프로세스를 포함하는, 컴퓨터 시스템.
  29. 복수의 대상 해시들을 수신하는 수단으로서, 각각의 대상 해시는 대상 객체의 개별 코드 블록을 나타내며, 각각의 개별 코드 블록은 상기 대상 객체의 프로세서 명령들의 시퀀스로 구성되는 수신하는 수단;
    기준 객체의 복수의 기준 해시들을 검색하는 수단으로서, 상기 기준 객체는 상기 복수의 대상 해시들의 선택된 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되는 검색하는 수단;
    상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하는 수단; 및
    상기 유사성 스코어가 미리 정해진 임계치를 초과할 때 상기 유사성 스코어에 따라 상기 대상 객체를 악성이 아닌 것으로 라벨링하고, 반면 상기 유사성 스코어가 상기 미리 정해진 임계치를 초과하지 않을 때는 클린한 해시들의 데이터베이스에서 나타나는 모든 대상 해시들을 상기 대상 객체의 상기 복수의 대상 해시들 외로 필터링함으로써 상기 대상 객체의 대상 해시들의 필터링된 세트를 생성하는 수단을 포함하는, 컴퓨터 시스템.
  30. 비일시적 컴퓨터-판독 가능한 기록 매체로서, 프로세서 상에서 실행될 때, 상기 프로세서가:
    복수의 대상 해시들을 수신하되, 각각의 대상 해시는 대상 객체의 개별 코드 블록을 나타내며, 각각의 개별 코드 블록은 상기 대상 객체의 프로세서 명령들의 시퀀스로 구성되고;
    상기 복수의 대상 해시들 중 적어도 하나의 대상 해시에 대해:
    기준 객체의 복수의 기준 해시들을 검색하되, 상기 기준 객체는 상기 대상 해시에 따라 화이트리스팅된 객체들의 세트로부터 선택되고, 및
    상기 복수의 대상 해시들이 상기 복수의 기준 해시들과 동일하지 않을 때, 상기 복수의 대상 해시들 및 상기 복수의 기준 해시들 모두에 공통된 해시들의 수에 따라 유사성 스코어를 결정하고;
    상기 유사성 스코어가 미리 정해진 임계치를 초과할 때, 상기 대상 객체를 악성이 아닌 것으로 라벨링하는 단계들을 수행하도록 하는 명령들을 인코딩하고; 및
    상기 유사성 스코어가 상기 미리 정해진 임계치를 초과하지 않을 때, 클린한 해시들의 데이터베이스에서 나타나는 모든 대상 해시들을 상기 대상 객체의 상기 복수의 대상 해시들 외로 필터링함으로써 상기 대상 객체의 대상 해시들의 필터링된 세트를 생성하는 단계를 포함하는 비일시적 컴퓨터-판독 가능한 기록 매체.
  31. 삭제
KR1020147015041A 2011-11-02 2012-09-05 퍼지 화이트리스팅 안티-멀웨어 시스템 및 방법 KR101693370B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161554859P 2011-11-02 2011-11-02
US61/554,859 2011-11-02
US13/312,686 2011-12-06
US13/312,686 US8584235B2 (en) 2011-11-02 2011-12-06 Fuzzy whitelisting anti-malware systems and methods
PCT/RO2012/000020 WO2013089576A1 (en) 2011-11-02 2012-09-05 Fuzzy whitelisting anti-malware systems and methods

Publications (2)

Publication Number Publication Date
KR20140089567A KR20140089567A (ko) 2014-07-15
KR101693370B1 true KR101693370B1 (ko) 2017-01-17

Family

ID=48173895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147015041A KR101693370B1 (ko) 2011-11-02 2012-09-05 퍼지 화이트리스팅 안티-멀웨어 시스템 및 방법

Country Status (12)

Country Link
US (3) US8584235B2 (ko)
EP (1) EP2774076B8 (ko)
JP (1) JP6188704B2 (ko)
KR (1) KR101693370B1 (ko)
CN (1) CN104025107B (ko)
AU (1) AU2012353035B2 (ko)
CA (1) CA2854433C (ko)
ES (1) ES2685662T3 (ko)
IL (1) IL232437A (ko)
RU (1) RU2607231C2 (ko)
SG (1) SG11201401975PA (ko)
WO (1) WO2013089576A1 (ko)

Families Citing this family (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8732825B2 (en) * 2008-05-28 2014-05-20 Symantec Corporation Intelligent hashes for centralized malware detection
US9955352B2 (en) 2009-02-17 2018-04-24 Lookout, Inc. Methods and systems for addressing mobile communications devices that are lost or stolen but not yet reported as such
US8640245B2 (en) * 2010-12-24 2014-01-28 Kaspersky Lab, Zao Optimization of anti-malware processing by automated correction of detection rules
CA2840992C (en) * 2011-07-08 2017-03-14 Brad WARDMAN Syntactical fingerprinting
US20150020203A1 (en) * 2011-09-19 2015-01-15 Beijing Qihoo Technology Company Limited Method and device for processing computer viruses
WO2013063474A1 (en) * 2011-10-28 2013-05-02 Scargo, Inc. Security policy deployment and enforcement system for the detection and control of polymorphic and targeted malware
US8584235B2 (en) * 2011-11-02 2013-11-12 Bitdefender IPR Management Ltd. Fuzzy whitelisting anti-malware systems and methods
KR101908944B1 (ko) * 2011-12-13 2018-10-18 삼성전자주식회사 데이터 분석 시스템에서 맬웨어를 분석하기 위한 장치 및 방법
US8997230B1 (en) * 2012-06-15 2015-03-31 Square, Inc. Hierarchical data security measures for a mobile device
US9146767B2 (en) * 2012-06-19 2015-09-29 Raytheon Company Secure cloud hypervisor monitor
US9792436B1 (en) * 2013-04-29 2017-10-17 Symantec Corporation Techniques for remediating an infected file
US9270467B1 (en) * 2013-05-16 2016-02-23 Symantec Corporation Systems and methods for trust propagation of signed files across devices
US9075989B2 (en) * 2013-07-11 2015-07-07 Symantec Corporation Identifying misuse of legitimate objects
US9843622B2 (en) * 2013-09-24 2017-12-12 Mcafee, Llc Adaptive and recursive filtering for sample submission
JP6000465B2 (ja) * 2013-09-25 2016-09-28 三菱電機株式会社 プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法
CN105556532A (zh) * 2013-09-27 2016-05-04 迈克菲股份有限公司 伴随数据行进的数字保护
US9294501B2 (en) * 2013-09-30 2016-03-22 Fireeye, Inc. Fuzzy hash of behavioral results
US10122747B2 (en) 2013-12-06 2018-11-06 Lookout, Inc. Response generation after distributed monitoring and evaluation of multiple devices
US9753796B2 (en) 2013-12-06 2017-09-05 Lookout, Inc. Distributed monitoring, evaluation, and response for multiple devices
US9756074B2 (en) * 2013-12-26 2017-09-05 Fireeye, Inc. System and method for IPS and VM-based detection of suspicious objects
US20150186649A1 (en) * 2013-12-31 2015-07-02 Cincinnati Bell, Inc. Function Fingerprinting
US20150220850A1 (en) * 2014-02-06 2015-08-06 SparkCognition, Inc. System and Method for Generation of a Heuristic
US10242185B1 (en) 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9578053B2 (en) 2014-04-10 2017-02-21 SparkCognition, Inc. Systems and methods for using cognitive fingerprints
US10084813B2 (en) 2014-06-24 2018-09-25 Fireeye, Inc. Intrusion prevention and remedy system
KR101649909B1 (ko) * 2014-09-25 2016-08-22 한국전자통신연구원 가상 머신 취약점 점검과 복구 방법 및 장치
US9361458B1 (en) * 2014-10-08 2016-06-07 Trend Micro Incorporated Locality-sensitive hash-based detection of malicious codes
US9805099B2 (en) * 2014-10-30 2017-10-31 The Johns Hopkins University Apparatus and method for efficient identification of code similarity
US9519780B1 (en) * 2014-12-15 2016-12-13 Symantec Corporation Systems and methods for identifying malware
US9838418B1 (en) * 2015-03-16 2017-12-05 Synack, Inc. Detecting malware in mixed content files
WO2016167801A1 (en) 2015-04-17 2016-10-20 Hewlett Packard Enterprise Development Lp Firmware map data
US9639715B2 (en) 2015-04-27 2017-05-02 Microsoft Technology Licensing, Llc Protecting user identifiable information in the transfer of telemetry data
US10733594B1 (en) 2015-05-11 2020-08-04 Square, Inc. Data security measures for mobile devices
US20160335432A1 (en) * 2015-05-17 2016-11-17 Bitdefender IPR Management Ltd. Cascading Classifiers For Computer Security Applications
RU2606564C1 (ru) * 2015-09-30 2017-01-10 Акционерное общество "Лаборатория Касперского" Система и способ блокировки выполнения сценариев
RU2622626C2 (ru) * 2015-09-30 2017-06-16 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения фишинговых сценариев
US9858410B2 (en) * 2015-10-26 2018-01-02 Symantec Corporation Techniques for automated application analysis
US10680893B2 (en) * 2015-10-27 2020-06-09 Alaxala Networks Corporation Communication device, system, and method
US10963565B1 (en) 2015-10-29 2021-03-30 Palo Alto Networks, Inc. Integrated application analysis and endpoint protection
SG11201804327TA (en) * 2015-12-19 2018-07-30 Bitdefender Ipr Man Ltd Dual memory introspection for securing multiple network endpoints
CA3015352A1 (en) 2016-02-23 2017-08-31 Carbon Black, Inc. Cybersecurity systems and techniques
US10289843B2 (en) * 2016-04-06 2019-05-14 Nec Corporation Extraction and comparison of hybrid program binary features
WO2017187520A1 (ja) * 2016-04-26 2017-11-02 三菱電機株式会社 侵入検知装置、侵入検知方法及び侵入検知プログラム
US10546302B2 (en) * 2016-06-30 2020-01-28 Square, Inc. Logical validation of devices against fraud and tampering
US10373167B2 (en) 2016-06-30 2019-08-06 Square, Inc. Logical validation of devices against fraud
RU2634211C1 (ru) 2016-07-06 2017-10-24 Общество с ограниченной ответственностью "Траст" Способ и система анализа протоколов взаимодействия вредоносных программ с центрами управления и выявления компьютерных атак
US10356113B2 (en) * 2016-07-11 2019-07-16 Korea Electric Power Corporation Apparatus and method for detecting abnormal behavior
RU2649793C2 (ru) 2016-08-03 2018-04-04 ООО "Группа АйБи" Способ и система выявления удаленного подключения при работе на страницах веб-ресурса
US10162967B1 (en) * 2016-08-17 2018-12-25 Trend Micro Incorporated Methods and systems for identifying legitimate computer files
US10372909B2 (en) * 2016-08-19 2019-08-06 Hewlett Packard Enterprise Development Lp Determining whether process is infected with malware
RU2634209C1 (ru) 2016-09-19 2017-10-24 Общество с ограниченной ответственностью "Группа АйБи ТДС" Система и способ автогенерации решающих правил для систем обнаружения вторжений с обратной связью
US10491627B1 (en) * 2016-09-29 2019-11-26 Fireeye, Inc. Advanced malware detection using similarity analysis
GB2555859B (en) * 2016-11-15 2020-08-05 F Secure Corp Remote malware scanning
US10721212B2 (en) * 2016-12-19 2020-07-21 General Electric Company Network policy update with operational technology
RU2637477C1 (ru) 2016-12-29 2017-12-04 Общество с ограниченной ответственностью "Траст" Система и способ обнаружения фишинговых веб-страниц
RU2671991C2 (ru) 2016-12-29 2018-11-08 Общество с ограниченной ответственностью "Траст" Система и способ сбора информации для обнаружения фишинга
US10783246B2 (en) 2017-01-31 2020-09-22 Hewlett Packard Enterprise Development Lp Comparing structural information of a snapshot of system memory
US10496993B1 (en) 2017-02-15 2019-12-03 Square, Inc. DNS-based device geolocation
CN107341169B (zh) * 2017-02-17 2020-02-11 武汉大学 一种基于信息检索的大规模软件信息站标签推荐方法
RU2662391C1 (ru) * 2017-05-05 2018-07-25 Илья Самуилович Рабинович Система и способ проверки веб-ресурсов на наличие вредоносных вставок
RU2651196C1 (ru) * 2017-06-16 2018-04-18 Акционерное общество "Лаборатория Касперского" Способ обнаружения аномальных событий по популярности свертки события
US10552308B1 (en) 2017-06-23 2020-02-04 Square, Inc. Analyzing attributes of memory mappings to identify processes running on a device
US10902124B2 (en) 2017-09-15 2021-01-26 Webroot Inc. Real-time JavaScript classifier
RU2689816C2 (ru) 2017-11-21 2019-05-29 ООО "Группа АйБи" Способ для классифицирования последовательности действий пользователя (варианты)
MX2020005598A (es) * 2017-12-01 2020-09-25 Huawei Tech Co Ltd Provision de seguridad de datos para dispositivo de cliente.
US10715536B2 (en) 2017-12-29 2020-07-14 Square, Inc. Logical validation of devices against fraud and tampering
RU2676247C1 (ru) 2018-01-17 2018-12-26 Общество С Ограниченной Ответственностью "Группа Айби" Способ и компьютерное устройство для кластеризации веб-ресурсов
RU2668710C1 (ru) 2018-01-17 2018-10-02 Общество с ограниченной ответственностью "Группа АйБи ТДС" Вычислительное устройство и способ для обнаружения вредоносных доменных имен в сетевом трафике
RU2680736C1 (ru) 2018-01-17 2019-02-26 Общество с ограниченной ответственностью "Группа АйБи ТДС" Сервер и способ для определения вредоносных файлов в сетевом трафике
RU2677361C1 (ru) 2018-01-17 2019-01-16 Общество с ограниченной ответственностью "Траст" Способ и система децентрализованной идентификации вредоносных программ
RU2677368C1 (ru) 2018-01-17 2019-01-16 Общество С Ограниченной Ответственностью "Группа Айби" Способ и система для автоматического определения нечетких дубликатов видеоконтента
RU2681699C1 (ru) 2018-02-13 2019-03-12 Общество с ограниченной ответственностью "Траст" Способ и сервер для поиска связанных сетевых ресурсов
RU2701842C1 (ru) * 2018-06-29 2019-10-01 Акционерное общество "Лаборатория Касперского" Способ формирования запроса информации о файле для осуществления антивирусной проверки и система для реализации способа (варианты)
RU2708356C1 (ru) * 2018-06-29 2019-12-05 Акционерное общество "Лаборатория Касперского" Система и способ двухэтапной классификации файлов
SG11202102264QA (en) * 2018-09-11 2021-04-29 Visa Int Service Ass System, method, and computer program product for fraud management with a shared hash map
US11507958B1 (en) 2018-09-26 2022-11-22 Block, Inc. Trust-based security for transaction payments
US11494762B1 (en) 2018-09-26 2022-11-08 Block, Inc. Device driver for contactless payments
RU2708508C1 (ru) 2018-12-17 2019-12-09 Общество с ограниченной ответственностью "Траст" Способ и вычислительное устройство для выявления подозрительных пользователей в системах обмена сообщениями
RU2701040C1 (ru) 2018-12-28 2019-09-24 Общество с ограниченной ответственностью "Траст" Способ и вычислительное устройство для информирования о вредоносных веб-ресурсах
RU2739865C2 (ru) * 2018-12-28 2020-12-29 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносного файла
SG11202101624WA (en) 2019-02-27 2021-03-30 Group Ib Ltd Method and system for user identification by keystroke dynamics
US10992703B2 (en) * 2019-03-04 2021-04-27 Malwarebytes Inc. Facet whitelisting in anomaly detection
CN110311930B (zh) * 2019-08-01 2021-09-28 杭州安恒信息技术股份有限公司 远控回连行为的识别方法、装置及电子设备
WO2021038705A1 (ja) * 2019-08-27 2021-03-04 日本電気株式会社 バックドア検査装置、バックドア検査方法、及び非一時的なコンピュータ可読媒体
US11588646B2 (en) * 2019-09-05 2023-02-21 Cisco Technology, Inc. Identity-based application and file verification
RU2728497C1 (ru) 2019-12-05 2020-07-29 Общество с ограниченной ответственностью "Группа АйБи ТДС" Способ и система определения принадлежности программного обеспечения по его машинному коду
RU2728498C1 (ru) 2019-12-05 2020-07-29 Общество с ограниченной ответственностью "Группа АйБи ТДС" Способ и система определения принадлежности программного обеспечения по его исходному коду
RU2743974C1 (ru) 2019-12-19 2021-03-01 Общество с ограниченной ответственностью "Группа АйБи ТДС" Система и способ сканирования защищенности элементов сетевой архитектуры
SG10202001963TA (en) 2020-03-04 2021-10-28 Group Ib Global Private Ltd System and method for brand protection based on the search results
US11487876B1 (en) * 2020-04-06 2022-11-01 Trend Micro Inc. Robust whitelisting of legitimate files using similarity score and suspiciousness score
US11475090B2 (en) 2020-07-15 2022-10-18 Group-Ib Global Private Limited Method and system for identifying clusters of affiliated web resources
RU2743619C1 (ru) 2020-08-06 2021-02-20 Общество с ограниченной ответственностью "Группа АйБи ТДС" Способ и система генерации списка индикаторов компрометации
US20220129417A1 (en) * 2020-10-22 2022-04-28 Google Llc Code Similarity Search
US11720674B2 (en) * 2021-01-28 2023-08-08 Northrop Grumman Systems Corporation Systems and methods for malware detection
US11947572B2 (en) 2021-03-29 2024-04-02 Group IB TDS, Ltd Method and system for clustering executable files
NL2030861B1 (en) 2021-06-01 2023-03-14 Trust Ltd System and method for external monitoring a cyberattack surface
US11531675B1 (en) * 2021-07-19 2022-12-20 Oracle International Corporation Techniques for linking data to provide improved searching capabilities
JP7494150B2 (ja) 2021-07-27 2024-06-03 Kddi株式会社 検証装置、検証方法及び検証プログラム
US12007969B2 (en) * 2022-08-11 2024-06-11 Saudi Arabian Oil Company Automatic computer data deduplication process for application whitelisting system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005202590A (ja) 2004-01-14 2005-07-28 Kddi Corp マスメイル検出方式およびメイルサーバ
US20080263669A1 (en) 2007-04-23 2008-10-23 Secure Computing Corporation Systems, apparatus, and methods for detecting malware
US20090300761A1 (en) 2008-05-28 2009-12-03 John Park Intelligent Hashes for Centralized Malware Detection
US20110093426A1 (en) 2009-06-26 2011-04-21 Michael Gregory Hoglund Fuzzy hash algorithm

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832208A (en) * 1996-09-05 1998-11-03 Cheyenne Software International Sales Corp. Anti-virus agent for use with databases and mail servers
US7367056B1 (en) 2002-06-04 2008-04-29 Symantec Corporation Countering malicious code infections to computer files that have been infected more than once
US7478431B1 (en) 2002-08-02 2009-01-13 Symantec Corporation Heuristic detection of computer viruses
US7478429B2 (en) * 2004-10-01 2009-01-13 Prolexic Technologies, Inc. Network overload detection and mitigation system and method
US10043008B2 (en) * 2004-10-29 2018-08-07 Microsoft Technology Licensing, Llc Efficient white listing of user-modifiable files
WO2006101549A2 (en) * 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
US7613701B2 (en) * 2004-12-22 2009-11-03 International Business Machines Corporation Matching of complex nested objects by multilevel hashing
US7577848B2 (en) 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
US7873947B1 (en) 2005-03-17 2011-01-18 Arun Lakhotia Phylogeny generation
US8392996B2 (en) 2006-08-08 2013-03-05 Symantec Corporation Malicious software detection
EP2080312B1 (en) * 2006-10-31 2015-07-08 TTI Inventions C LLC Virus localization using cryptographic hashing
US9021590B2 (en) 2007-02-28 2015-04-28 Microsoft Technology Licensing, Llc Spyware detection mechanism
US7854002B2 (en) 2007-04-30 2010-12-14 Microsoft Corporation Pattern matching for spyware detection
US8214895B2 (en) * 2007-09-26 2012-07-03 Microsoft Corporation Whitelist and blacklist identification data
US8353041B2 (en) * 2008-05-16 2013-01-08 Symantec Corporation Secure application streaming
US8364123B2 (en) * 2009-02-25 2013-01-29 Apple Inc. Managing notification messages
CN101350822B (zh) * 2008-09-08 2011-06-15 南开大学 一种Internet恶意代码的发现和追踪方法
US20100088745A1 (en) 2008-10-06 2010-04-08 Fujitsu Limited Method for checking the integrity of large data items rapidly
US8401309B2 (en) * 2008-12-30 2013-03-19 International Business Machines Corporation Security screening image analysis simplification through object pattern identification
JP2010217950A (ja) * 2009-03-13 2010-09-30 Nec Corp 開発支援システム、開発支援方法及び開発支援プログラム
EP2443580A1 (en) * 2009-05-26 2012-04-25 Websense, Inc. Systems and methods for efficeint detection of fingerprinted data and information
US7640589B1 (en) * 2009-06-19 2009-12-29 Kaspersky Lab, Zao Detection and minimization of false positives in anti-malware processing
GB2471716A (en) * 2009-07-10 2011-01-12 F Secure Oyj Anti-virus scan management using intermediate results
US8566943B2 (en) * 2009-10-01 2013-10-22 Kaspersky Lab, Zao Asynchronous processing of events for malware detection
US8751808B2 (en) * 2009-11-12 2014-06-10 Roy Gelbard Method and system for sharing trusted contact information
US9104872B2 (en) * 2010-01-28 2015-08-11 Bank Of America Corporation Memory whitelisting
CN101924762B (zh) * 2010-08-18 2013-02-27 北京奇虎科技有限公司 一种基于云安全的主动防御方法
US8584235B2 (en) * 2011-11-02 2013-11-12 Bitdefender IPR Management Ltd. Fuzzy whitelisting anti-malware systems and methods

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005202590A (ja) 2004-01-14 2005-07-28 Kddi Corp マスメイル検出方式およびメイルサーバ
US20080263669A1 (en) 2007-04-23 2008-10-23 Secure Computing Corporation Systems, apparatus, and methods for detecting malware
US20090300761A1 (en) 2008-05-28 2009-12-03 John Park Intelligent Hashes for Centralized Malware Detection
US20110093426A1 (en) 2009-06-26 2011-04-21 Michael Gregory Hoglund Fuzzy hash algorithm

Also Published As

Publication number Publication date
CA2854433A1 (en) 2013-06-20
RU2014121249A (ru) 2015-12-10
US20130111591A1 (en) 2013-05-02
WO2013089576A1 (en) 2013-06-20
IL232437A (en) 2016-12-29
AU2012353035A1 (en) 2014-05-29
JP2014534531A (ja) 2014-12-18
CN104025107A (zh) 2014-09-03
US8584235B2 (en) 2013-11-12
EP2774076B1 (en) 2018-06-20
CA2854433C (en) 2018-10-09
CN104025107B (zh) 2017-02-22
EP2774076A1 (en) 2014-09-10
JP6188704B2 (ja) 2017-08-30
KR20140089567A (ko) 2014-07-15
AU2012353035B2 (en) 2017-06-01
US9118703B2 (en) 2015-08-25
IL232437A0 (en) 2014-06-30
EP2774076B8 (en) 2018-08-29
ES2685662T3 (es) 2018-10-10
US20140068772A1 (en) 2014-03-06
US9479520B2 (en) 2016-10-25
SG11201401975PA (en) 2014-09-26
RU2607231C2 (ru) 2017-01-10
US20150326585A1 (en) 2015-11-12

Similar Documents

Publication Publication Date Title
KR101693370B1 (ko) 퍼지 화이트리스팅 안티-멀웨어 시스템 및 방법
EP3814961B1 (en) Analysis of malware
Bayer et al. Scalable, behavior-based malware clustering.
US9679136B2 (en) Method and system for discrete stateful behavioral analysis
EP1408393B1 (en) Selective detection of malicious computer code
EP2310974B1 (en) Intelligent hashes for centralized malware detection
US10997307B1 (en) System and method for clustering files and assigning a property based on clustering
US8813222B1 (en) Collaborative malware scanning
US8844039B2 (en) Malware image recognition
US8499167B2 (en) System and method for efficient and accurate comparison of software items
US20110041179A1 (en) Malware detection
US20100077482A1 (en) Method and system for scanning electronic data for predetermined data patterns
US8621625B1 (en) Methods and systems for detecting infected files
US11288368B1 (en) Signature generation
EP3531329B1 (en) Anomaly-based-malicious-behavior detection
WO2014082599A1 (zh) 用于恶意程序查杀的扫描设备、云端管理设备及方法和系统
US20230254326A1 (en) System and Method for Information Gain for Malware Detection
Sahoo et al. Signature based malware detection for unstructured data in Hadoop
Saleh et al. A control flow graph-based signature for packer identification
JP2016525750A (ja) 合法的オブジェクトの誤用の識別
US10606844B1 (en) Method and apparatus for identifying legitimate files using partial hash based cloud reputation
Van Hung An approach to fast malware classification with machine learning technique
US20230036599A1 (en) System context database management
US20230344838A1 (en) Detecting microsoft .net malware using machine learning on .net structure
Ravula et al. Dynamic analysis of malware using decision trees

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20190814

Year of fee payment: 4