KR20160077168A - 빈도-기반 평판도 - Google Patents

빈도-기반 평판도 Download PDF

Info

Publication number
KR20160077168A
KR20160077168A KR1020167014082A KR20167014082A KR20160077168A KR 20160077168 A KR20160077168 A KR 20160077168A KR 1020167014082 A KR1020167014082 A KR 1020167014082A KR 20167014082 A KR20167014082 A KR 20167014082A KR 20160077168 A KR20160077168 A KR 20160077168A
Authority
KR
South Korea
Prior art keywords
reputation
subroutine
score
subroutines
flatness
Prior art date
Application number
KR1020167014082A
Other languages
English (en)
Other versions
KR101846757B1 (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 KR20160077168A publication Critical patent/KR20160077168A/ko
Application granted granted Critical
Publication of KR101846757B1 publication Critical patent/KR101846757B1/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
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • 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
    • H04L63/1425Traffic logging, e.g. anomaly 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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

일 예시적인 실시예에서, 서브루틴 레벨에서 애플리케이션들 및 다른 실행가능한 오브젝트들을 분석하는 안티-멀웨어 시스템 및 방법이 개시된다. 각 서브루틴에는 실행 빈도 점수가 할당되며, 이 점수는 격리된 환경 내에서 또는 실제 세계의 동작 조건들 상에서 또는 정적 분석 상에서 시뮬레이션된 실행에 기초할 수 있다. 각 서브루틴에는 해당 서브루틴이 얼마나 자주 실행되는 지에 기초하여서 실행 빈도 점수가 할당될 수 있다. 이 점수에 기초하여서, 각 서브루틴에는 또한 평판도 점수가 할당될 수 있다. 다른 애플리케이션들 내의 동일한 서브루틴의 출현들을 상호 참조하는 것을 돕기 위해서, 서브루틴에는 또한 슈도-고유 식별자, 예를 들어서, 퍼지 핑거프린트가 할당될 수 있다.

Description

빈도-기반 평판도{FREQUENCY-BASED REPUTATION}
본원은 컴퓨터 네트워크 보안에 관한 것이며, 특히 오브젝트(object)의 빈도-기반 평판도를 컴퓨팅하기 위한 시스템, 장치, 및 방법에 관한 것이다.
본 명세서 전반에 걸쳐서 사용되는 바와 같이, 악성 소프트웨어("멀웨어(malware)")는 임의의 바이러스, Trojan, 보트(bot), 좀비(zombie), 루트키트(rootkit), 백도어(backdoor), 웜(worm), 스파이웨어(spyware), 애드웨어(adware), 랜솜웨어(ransomware), 다이얼러(dialer), 페이로드, 악성 브라우저 헬퍼 오브젝트, 쿠기(cookie), 로거(logger), 또는 잠재적으로 원치 않은 조치를 취하도록 설계된 유사한 바들을 포함하며, 이러한 원치 않은 조치들은 비한정적으로 말하자면, 데이터 파괴, 비밀 데이터 수집(covert data collection), 브라우저 하이젝킹, 네트워크 프록시 또는 리다이렉션(redirection), 은밀 추적, 데이터 로깅, 키로깅, 제거할 수 없게 과도하게 또는 의도적으로 장벽을 설치, 연락처 무단획득, 및 허가되지 않은 자가-전파를 포함한다. 본 명세서에서 안티-멀웨어 시스템들로서 지칭되는 특정 시스템들은 애플리케이션 또는 파일 레벨에서 멀웨어를 식별 및 퇴치하는 것에 초점을 둔다. "실행가능한 오브젝트"는 임의의 파일, 프로그램, 매크로, 스크립, 문서, 기록사항, 또는 프로그램을 실행하기 위한 코드를 포함하는 유사한 것들을 포함한다. 독립형 프로그램들로서 동작하도록 개발된 것과는 별도로, 멀웨어는 또한 다른 소프트웨어 내에 추가되거나 주입되는 악성 코드의 형태를 취할 수도 있다. 이러한 형태의 일 실례는 악성 코드가 기생 복제 컴퓨터 바이러스에 의해서 도입되는 "감염된 파일"일 수 있다. 악성 코드는 또한 수동으로 주입되거나, 컴파일링 후에 실행가능한 오브젝트의 일부가 되도록 소프트웨어의 소스들에 추가되거나, 스크립트들에 추가되어서 해석될 수 있으며, 이 때에는 컴파일링될 수도 있고 그렇지 않을 수도 있다. 특정 안티-멀웨어 솔루션들은 감염된 파일들을 식별하고 이들을 제거, 격리 또는 이와 달리 차단하는데 초점을 둔다.
본 발명은 첨부 도면들과 함께 독해되는 때에 다음의 상세한 설명으로부터 최상으로 이해된다. 산업상에서의 표준 관례에 따라서, 다양한 특징부들은 실제 크기대로 도시되지 않으며 오직 예시적 설명을 위해서만 사용된다는 것이 강조된다. 실제로, 다양한 특징부들의 치수들은 설명의 명료성을 위해서 임의적으로 커지거나 작아질 수 있다.
도 1은 본 명세서의 하나 이상의 실례들에 따른 분산형 평판도 환경의 네트워크-레벨 도면이다.
도 2는 본 명세서의 하나 이상의 실례들에 따른, 공통 서브루틴들을 포함하는, 복수의 서브루틴들을 포함하는 복수의 실행가능한 오브젝트들의 블록도이다.
도 3은 본 명세서의 하나 이상의 실례들에 따른, 클라이언트 디바이스의 블록도이다.
도 4는 본 명세서의 하나 이상의 실례들에 따른, 평판도 클라이언트에 의해서 수행되는 예시적인 프로세스의 플로우도이다.
도 5는 본 명세서의 하나 이상의 실례들에 따른, 평판도 서버의 블록도이다.
도 6은 본 명세서의 하나 이상의 실례들에 따른, 평판도 서버를 제공하기 위한 방법의 플로우도이다.
개요
일 실례에서, 서브루틴 레벨(subroutine level)에서 애플리케이션들 및 다른 실행가능한 오브젝트들을 분석하는 안티-멀웨어 시스템 및 방법이 개시된다. 각 서브루틴에는 실행 빈도 점수가 할당될 수 있으며, 이 실행 빈도 점수는 격리된 환경에서 시뮬레이션된 실행에 기초하거나, 실제 세계의 동작 상태들에 기초하거나, 정적 분석에 기초할 수 있다. 각 서브루틴에는 이 서브루틴이 얼마나 빈번하게 실행되는지에 기초하여서 실행 빈도 점수가 할당될 수 있다. 이 점수에 기초하여서, 각 서브루틴에는 또한 평판도 점수가 할당될 수 있다. 동일한 서브루틴이 다른 애플리케이션들에서 발생하는 것을 상호 참조하는 것을 보조하기 위해서, 서브루틴에는 또한 퍼지 핑거프린트(fuzzy fingerprint)와 같은 슈도-고유 식별자(pseudo-unique identifier)가 할당될 수 있다.
본 발명의 실시예들
일부 소프트웨어 생태계는 Google Play, Apple Store 및 Microsoft Store와 같은 "애플리케이션 스토어"로부터 배포되는 애플리케이션들 및 다른 실행가능한 오브젝트들의 모델로 이동하였다. 이러한 환경에서, 멀웨어 제작자들은 애플리케이션 스토어들의 차단 동작으로부터 악성 기능들을 은폐시킴으로써 이러한 환경에 적응할 수 있다. 일부 안티-멀웨어 솔루션들을 사용하여서 검출하기 어려울 수도 있는 한가지 잠재적 방법은 게임과 같은 유용하거나 바람직한 프로그램을 제작하여서 이러한 프로그램 내에 오직 특정한 상대적으로-빈도가 낮은 조건들 하에서만 활성화되는 악성 서브루틴을 삽입하는 것인데, 예를 들어서, 상대적으로 작지만 바람직한 사용자들의 부류를 타겟으로 삼는 것이다(이러한 종류의 악성 서브루틴 삽입은 때로 "이스터 에그(Easter egg)"로서 지칭된다). 이러한 시나리오에서, 수많은 사용자들은 상기 애플리케이션이 예상된 바운더리 내에서 동작하고 유용하고 즐길만 하다고 깨달을 것이다. 이러한 사용자들은 이 애플리케이션에 양호한 평판도를 주며, 이로써 은폐된 멀웨어의 전파를 가속화시킨다.
이와 유사하게, 악성 코드는 개발자들을 매수하거나 소스 제어 시스템으로의 허가되지 않은 액세스를 함으로써, 예를 들어서, 소스 코드 보관소로의 "기록" 액세스를 하는 개인의 컴퓨터를 조작한(compromising) 후에, 적법한 소프트웨어 내로 주입될 수 있다. 이러한 은폐된 멀웨어 배포는 정부가 지원하는 공격을 포함하여서, 대량 공격 및 목표형 공격을 위해서 사용될 수 있다.
따라서, 멀웨어 식별을 실행가능한 오브젝트 레벨로만 제한하는 것을 일부 경우들에서는 적합하지 않을 수 있다. 이보다는, 현재 출현하고 있는 위험들은 예를 들어서 다음과 같은 공격들을 포함하는 새로운 공격 방법들에 초점을 둘 수 있다:
리버스 엔지니어링(reverse engineering)에 의해서 감염된 파일들을 생성하거나, 이와 달리 말웨어 루틴들을 주입하도록 기존의 실행가능한 오브젝트들을 변경하여서 이 변경된 실행가능한 오브젝트들을 애플리케이션 스토어에 제공하는 방식;
애플리케이션 스토어를 통해서 배포될 대부분은 적법한 실행가능한 오브젝트를 생성하여서 이 오브젝트 내에 드물게 실행되는 멀웨어 루틴들을 삽입하고, 이 실행가능한 오브젝트가 멀웨어로서 식별되는 것을 어렵게 하는 방식.
이러한 공격방식들은 대형 개발 팀들 및 제3자 소프트웨어 애드-온들의 사용에 의해서 더 심해질 수 있다. 일 예시적인 공격에서는, 멀웨어 제작자는 오브젝트 코드 포맷으로 유용한 제3자 라이브러리를 제공한다. 이 라이브러리는 대부분의 적법한 기능들을 포함하고 이에 추가하여서 오직 드물게만 실행되는 멀웨어 페이로드를 포함한다. 이러한 빈번하지 않은 실행은 이 라이브러리의 멀웨어 특성을 은폐하는 것을 도울 수 있다. 예를 들어서, 라이브러리는 금융 거래들을 기록하고 사용자가 가용한 자금으로 $100,000 이상을 갖는 은행 계좌에 액세스할때에만 활성화되며, 이로써 이 계좌로부터 돈이 빠져나게 된다. 다른 실례에서는, 멀웨어 페이로드가 시장 개체들로 판매할 사용자로부터 개인용 데이터를 수집하지만, 오직 GPS 신호가 존재하고 유용한 데이터를 제공하기에는 충분하게 크지만 멀웨어 페이로드가 오직 드물게 실행되는 것을 보장하기에는 충분하게 작도록 구성된 리스트로부터 선택된 우편번호 위치 내에 사용자가 존재하는 것으로 발견된 때에만, 데이터를 수집한다.
이렇게 실행 빈도가 작은 것은 멀웨어 라이브러리가 용이하게 검출되지 않도록 보장하는 것을 도울 수 있다. 이 멀웨어 라이브러리가 흔하게 사용되거나 매우 유용한 기능을 제공하는 경우에 그리고 자유로운 라이센싱 계약 하에서 무료로 제공되거나 저렴하게 제공되는 경우에는, 급한 기한들을 맞추어야 하는 막판 스퍼트를 내는 개발자들은 이러한 라이브러리를 사용하고자 하는 유혹을 받을 수 있다. 따라서, 멀웨어 라이브러리는 수많은 여러 애플리케이션들 내에 포함되어서 수많은 여러 디바이스들에 배포될 수 있다. 이렇게 광범위하면서 여러 종류로 배포되면, 악성 페이로드가 발견된 후에도 조차, 멀웨어 라이브러리의 인스턴스들 전체를 식별하는 것이 어렵게 될 수 있다. 예를 들어서, 악성 페이로드가 제 1 실행가능한 오브젝트 내에서 식별되며, 이로써 이 제 1 실행가능한 오브젝트는 적절하게 격리되거나, 제거되거나 이 페이로드가 없는 재-배치될 수 있다. 그러나, 이러한 라이브러리를 사용한 모든 벤더들을 알 수 없어서, 모든 감염된 파일을 식별하는 것은 용이하지 않다. 또한, 이 라이브러리는 비한정적으로 말하자면, 외부 소스로부터 공급된 코드, 예를 들어서, 웹 페이지로부터의 스크립트 또는 인스트럭션들 또는 네트워크 접속을 통해서 수신된 명령들을 실행 또는 해석할 수 있는 능력을 가질 수도 있다. 일부 경우들에서는 "보트(bot)", "백도어", 또는 "원격 쉘(remote shell)" 기능들과 균등한 원격 제어가 수행되기 이전에, 일부 경우들에서는, 정적 및 동적 분석도 공격자의 정확한 의도를 검사할 수 없다.
제 2 예시적인 공격 시나리오에서, 멀웨어 제작자는 애플리케이션과 같은 공중이 입수가능한 실행가능한 오브젝트의 카피 및 리버스 엔지니어들을 찾거나 이와 달리 멀웨어 거동을 삽입시키도록 애플리케이션을 수정한다. 멀웨어 제작자는 예를 들어서, 사용자들이 선택사양적으로 선택할 수 있는 비인증된 제3자 애플리케이션 보관소에 애플리케이션를 배포할 수도 있다 이러한 경우에, 최종 사용자는 인기있는 유료 애플리케이션이 이러한 제3자 애플리케이션 보관소에서는 무료로 입수가능하며 원하는 애플리케이션의 본래의 기능들 모두를 가질 수 있다는 것을 알 수 있다. 이러한 멀웨어 페이로드는 특정 조건들 하에서만 활성화되기 때문에, 수많은 사용자들이 악영향을 받지 않을 수 있다. 이 경우에는, 애플리케이션의 모든 카피들이 멀웨어로서 식별될 필요는 없다. 이보다는, 오직 변경된 것들만이 알려질 필요가 있다.
제 3 예시적인 공격 시나리오에서, 멀웨어 제작자가 애플리케이션들과 같은 실행가능한 오브젝트들의 이와 달리 합법적인 개발자에 의해서 합법적으로 고용될 수 있다. 이러한 경우에, 멀웨어 제작자는 멀웨어 거동을 이와 달리 합법적인 애플리케이션들 내로 은밀하게 삽입하여서 오직 특정 조건들 하에서만 상기 거동이 활성화되도록 멀웨어 페이로드를 구성함으로써 상기 멀웨어 거동의 존재를 은폐할 수 있다. 이러한 경우에, 어느 애플리케이션들을 멀웨어 제작자가 조작하였거나 액세스하였는지가 명확하지 않을 수 있기 때문에, 어느 애플리케이션들이 영향을 받았는지를 식별하기가 어려울 수 있다.
전술한 바들은 본 명세서의 시스템 및 방법이 유용하게 전개될 수 있는 비한정적 실례들로 해서 제안된 것이다.
본 명세서의 일 실례에 따라서, 합법적일 수 있는(하지만 그럴 필요가 없을 수도 있는) 실행가능한 오브젝트 내에서 멀웨어 페이로드를 식별하기 위한 시스템 및 방법이 제공된다. 일 실례에서, 평판도 클라이언트(reputation client)는 실행가능한 오브젝트를 식별가능한 서브루틴들로 파싱하고(parsing), 각 서브루틴에 슈도-고유 식별자, 예를 들어서, 퍼지 핑거프린트를 할당한다. 본 명세서에서, "서브루틴"는 임의의 프로그래밍 서브루틴, 루틴, 프로시저, 함수, 방법, 클래스, 오브젝트, 모듈, 또는 실행가능한 인스트럭션들을 포함하는 코드의 유사한 식별가능한 부분을 포함할 수 있다. 서브루틴은 반드시 명확하게 규정된 도입 지점 및 종료 지점을 한정 프로시저에서와 같이 가질 필요는 없을 수 있다는 것이 주목되어야 한다. 멀웨어 제작자는 본 명세서의 발명을 구현하는 시스템을 피해가기 위해서 드물게-실행되는 악성 코드를 빈번하게-실행되는 프로시저 내에 숨기고자 할 수 있다. 따라서, 일부 경우들에서, 명확하게-규정된 프로시저의 개별 브랜치들이 그들의 실행 빈도가 개별적으로 평가될 수 있도록 프로시저로서 개별적으로 식별될 수 있다는 것이 예상된다.
일단 각 서브루틴이 식별되고 식별자가 부여되면, 평판도 클라이언트는 실행가능한 오브젝트를 평판도 서버(reputation server)로 전송하거나 로컬 분석을 수행하며, 이러한 분석에서는 실행가능한 오브젝트는 능동적으로 또는 수동적으로 분석된다. 이러한 분석결과는 중앙 보관소 내에 존재하거나 수많은 실제 세계의 사용 경우들 간에 배포될 수 있다. 유리하게는, 미세(granular) 서브루틴-레벨 코드 실행에 대한 데이터들이 복수의 개별 클라이언트들로부터 취합될 수 있다. 서브루틴들에는 등급 또는 점수가 이들이 얼마나 빈번하게 실행되는지에 기초하여서 부여된다. 서브루틴이 인지 가능한 악영향을 주지 않거나 사용자로부터의 불만사항들 없이 빈번하게 실행되면, 이 서브루틴은 덜 의심이 가는 것으로서 표시될 수 있다. 서브루틴 드물게 실행되고, 특히 이 실행이 "이상한" 거동이라는 보고사항들 또는 사용자 불만사항들이 동반되면, 이 서브루틴은 의심이 가는 것으로서 표시될 수 있다. 의심이 가는 서브루틴들은 격리되거나 제거되거나 일부 경우들에서는 추가 세부 분석, 예를 들어서, 인간 오퍼레이터에 의한 디컴파일링(decompilation) 및 심화 분석을 받을 수 있다. 유리하게는, 서브루틴은 자신의 식별자에 의해서 임의의 실행가능한 오브젝트 내에서 식별될 수 있다. 이로써, 멀웨어 및 멀웨어 거동 식별은 특정 실행가능한 오브젝트 식별과는 분리될 수 있다.
도 1은 본 명세서의 하나 이상의 실례들에 따른 분산형 평판도 환경(distributed reputation environment)의 네트워크-레벨 도면이다. 본 실례에서, 복수의 사용자들(132)은 복수의 클라이언트 디바이스들(130)을 운용한다. 각 클라이언트 디바이스는 네트워크(120), 예를 들어서, 인터넷, 인트라넷, WAN, LAN, 기업체 네트워크, 보안 네트워크, 또는 유사한 네트워크에 접속될 수 있다는 것이 주목되어야 한다. 멀웨어 제작자(170)도 역시 클라이언트 디바이스(130-4)를 통해서 네트워크(120)에 접속될 수 있다. 애플리케이션 스토어(180)가 제공되며 네트워크(120)에 통신가능하게 접속된다. 평판도 서버(110)도 네트워크(120)에 접속되며 평판도 데이터베이스(140)에 통신가능하게 접속된다. 본 실시예에서, 평판도 데이터베이스(140)는 평판도 서버(110)에 직접적으로 접속되는 것으로서 개시되지만, 다른 구성들로 가능하다는 것이 인정될 것이며, 이러한 다른 구성에서는, 평판도 데이터베이스(140)가 제3자에 의해서 제공되거나, 다수의 디바이스들 간에 분포되어 있으면서 예를 들어서, 애플리케이션 프로그래밍 인터페이스(API)를 통해서 액세스될 수 있다.
일 실례에서, 사용자들(132)은 클라이언트 디바이스들(130)을 운용한다. "클라이언트 디바이스"는 임의의 타입의 노드, 사용자 디바이스를 포함하며, 이러한 디바이스는 비한정적으로 말하자면, 컴퓨터, PDA(personal digital assistant), 랩탑 또는 전자 노트북, 셀룰러 전화, IP 전화, iPhone™, iPad™, Microsoft Surface™, Android™ 폰, Google Nexus™, 또는 인스트럭션들을 실행시킬 수 있는 임의의 다른 디바이스, 컴포넌트, 요소, 또는 오브젝트를 포함할 수 있다. "사용자"는 클라이언트 디바이스를 운용, 사용하거나 이와 달리 이와 인터페이싱할 수 있는 임의의 개인, 개체, 소프트웨어, 또는 디바이스를 포함할 수 있다. 일부 클라이언트 디바이스들(130)은 예를 들어서, 원격으로 제어되는 디바이스들, 센서들, 또는 내장형 시스템들의 경우에, 인간 사용자 상호작용 없이 동작할 수 있도록 본 명세서에서 명확하게 예상된다. 예를 들어서, 클라이언트 디바이스는 내장형 시스템, 원격 센서, 네트워크 제어기, 또는 인간 사용자에 의해서 정상적으로는 동작되지 않은 다른 디바이스일 수 있다. 클라이언트 디바이스(130-5)의 경우에, 사용자(132)는 클라이언트 디바이스(130-5)에 의해서 제어되거나, 클라이언트 디바이스(130-5)로 데이터를 전송하거나, 클라이언트 디바이스(130-5)로부터 데이터를 수신하는 내장형 운영 체제 또는 외부 시스템일 수 있다.
일부 경우들에서, 복수의 평판도 서버들(110)을 갖거나, 복수의 종들의 클라이언트 디바이스들(130)을 개별적으로 다루도록 평판도 서버(110)를 구성하는 것이 유리할 수 있다. 예를 들어서, Microsoft Windows 7 상에서 실행가능한 멀웨어 페이로드는 위에서 열거된 다른 디바이스들 중 임의의 것 상에서 실행되지 않을 수 있다. 이보다는, 멀웨어 페이로드들은 특정 아키텍처들을 특정하게 목표로 하도록 조작되어야 할 수도 있다. 그러나, 본 명세서는 단일 멀웨어 페이로드가 복수의 클라이언트 디바이스(130) 플랫폼들을 목표로 할 수 있는 상황을 명시적으로 예상한다. 예를 들어서, 멀웨어 페이로드는 교차-플랫폼 언어, 예를 들어서, Java로 구현될 수 있으며 복수의 플랫폼들에 대해서 공통적인 보안 약점사항을 이용할 수 있다.
일 실례에서, 사용자(132-1)는 Android 폰일 수 있는 클라이언트 디바이스(130-1)를 운용한다. 본 실례에서, 많은 다수의 다른 사용자들도 역시 유사하게 구성된 Android 폰들을 운용할 수 있으며 애플리케이션 스토어(180)에 액세스하여서 이로부터 실행가능한 오브젝트들을 수신할 수 있다. 멀웨어 제작자(170)는 Android 폰들을 목표물로 하는 멀웨어를 생성하고자 할 수 있으며 예시적인 상술한 방법들 중 하나에 의해서 또는 임의의 다른 적합한 방법에 의해서 그렇게 할 수 있다.
평판도 서버(110)는 예를 들어서, 애플리케이션 스토어(180)의 오퍼레이터 또는 제3자 보안 제공자에 의해서 운용될 수 있다. 또한, 평판도 데이터베이스는 평판도 서버(110)의 오퍼레이터에 의해서 운용되거나 제3자에 의해서 제공될 수 있다. 일반적으로, 본 명세서에서 개시된 개체들은 특정 구성에 따라서 개별 개체들이거나 그러지 않을 수도 있다.
평판도 서버(110)는 애플리케이션 스토어(180)를 통해서 배포된 실행가능한 오브젝트들 또는 임의의 적합한 수단에 의해서 배포된 다른 실행가능한 오브젝트들에 대한 평판도들(reputations)을 제공하도록 구성될 수 있다. 본 명세서 전반에 걸쳐서, "평판도"는 실행가능한 오브젝트 또는 서브루틴이 멀웨어이거나 멀웨어를 포함하는지의 여부를 결정하는것과 관련된 신뢰도 레벨을 개별적으로 또는 집합적으로 나타내는 임의의 데이터 또는 데이터들을 포함할 수 있다. 또한, 본 명세서의 맥락에서, 평판도는 전체 실행가능한 오브젝트에 할당되기보다는 서브루틴 또는 서브루틴들의 그룹에 할당될 수 있다.
도 2는 본 명세서의 하나 이상의 실례들에 따른, 공통 서브루틴들을 포함하는 복수의 서브루틴들을 포함하는 복수의 실행가능한 오브젝트들의 블록도이다. 본 실례에서, 실행가능한 오브젝트들(210, 220, 및 230) 각각은 복수의 서브루틴들을 포함한다. 본 실례에서, 실행가능한 오브젝트(210)는 서브루틴들(A, B, C, D, E, F, G, 및 H)을 포함한다. 그래프가 아래에서 표시하는 바와 같이, 서브루틴(C)는 빈번하게 실행된다. 서브루틴들(E, F, 및 H)은 중간 정도로 빈번하게 실행된다. 서브루틴(B)는 작은 빈도 내지 중간 정도의 빈도로 실행된다. 서브루틴들(A 및 G)은 드물게 실행된다.
실행가능한 오브젝트(220)에서, 서브루틴들(I, J, K, C, D, L, F, M, 및 N)이 발견된다. 주목할만하게는, 서브루틴들(C 및 D)은 실행가능한 오브젝트(210)에서와 공통적으로 있다. 실행가능한 오브젝트(210)에서와 같이, 서브루틴(C)는 빈번하게 실행된다. 서브루틴들(I, J, F, 및 M)은 중간 정도로 빈번하게 실행된다. 서브루틴(N)은 드물게 실행된다. 서브루틴(L)은 실행되지 않는다.
실행가능한 오브젝트(230)에서, 서브루틴들(O, P, Q, F, C, R, 및 S)이 발견된다. 여기에서도 다시, 서브루틴(C)는 매우 빈번하게 실행된다. 서브루틴(F)는 여기에서도 역시 중간 정도로 빈번하게 실행되며, 이는 서브루틴(S)도 그러하다. 서브루틴들(O, P, 및 Q)은 드물게 실행된다. 서브루틴(R)은 실행되지 않는다.
전술한 실례에서, 서브루틴(C)은 상대적으로 높은 신뢰도를 갖는 높은 평판도(이는 이 서브루틴이 합법적인 것임을 잠재적으로 표시함)를 받을 수 있는데, 이는 이 서브루틴이 빈번하게 실행되고 수많은 애플리케이션들에서 나타나기 때문이다. 서브루틴(F)도 역시 상대적으로 높은 평판도를 받을 수 있는데, 그 이유는 이 서브루틴이 수 많은 애플리케이션들에서 나타나고 중간 정도로 빈번하게 실행되기 때문이다. 본 명세서의 맥락에서, "높은 평판도"는 실행가능한 오브젝트 또는 서브루틴이 합법적이고/이거나 멀웨어를 포함하지 않는다는 것을 높은 신뢰 수준으로 나타내는 임의의 평판도를 포함할 수 있다. "낮은 평판도"는 실행가능한 오브젝트 또는 서브루틴이 합법적이고/이거나 멀웨어를 포함하지 않는다는 것을 낮은 신뢰도로 표시하거나, 이와 달리, 실행가능한 오브젝트 또는 서브루틴이 멀웨어에 의해 감염된 것을 높은 신뢰도로 표시한다. "높은 평판도" 및 "낮은 평판도"의 개념은 본 명세서에서 하나 이상의 평판도 수치들 상의 적어도 2 개의 반대편 지점들을 나타내기 위해서 개시된 것이며, 본 명세서에서 명시적으로 진술되지 않은 이상, 간단한 이진 평판도 분류(binary reputation classification)를 암시하고자 한 것은 아니다.
서브루틴(D)은, 서브루틴(C)과 대조되게, 상대적으로 의심이 갈 수 있는데, 그 이유는 이 서브루틴이 드물게 실행되어서 2 개 이상의 애플리케이션에서 나타나기 때문이다. 이로써, 서브루틴(D)은 인간 오퍼레이터에 의한 추가 분석이 되도록 표시될 수 있다. 이 추가 분석은 예를 들어서, 디컴파일링, 시뮬레이션 및 다른 심화 분석을 수반할 수 있다. 심화 분석 이후에, 서브루틴(D)이 드물게 필요한 기능을 갖는 합법적인 서브루틴이라고 판정되면, 서브루틴(D)을 실행가능한 오브젝트의 일부로서 만나는 다른 클라이언트 디바이스들이 이 오브젝트가 안전하게 실행될 수 있다는 것을 파악하도록 이 서브루틴(D)에는 높은 평판도가 수동으로 할당될 수 있다.
결코 실행되지 않은 서브루틴들(L 및 R)은 또한 상대적으로 낮은 평판도가 할당될 수 있으며 후속 심화 또는 인간 분석을 받게 표시될 수 있다. 후속 분석 시에, 서브루틴(L)이 멀웨어를 포함하고 서브루틴(R)은 유지되지 않거나 더 이상 유용하지 않는 "데드(dead)" 코드를 포함하다고 파악될 수 있다. 이 경우에, 양 서브루틴들은 낮은 평판도 점수를 받을 수 있으며, 평판도에 대한 보다 세밀한 조절 제어가 가능한 일부 실시예들에서는, 이 서브루틴들은 상이한 종류들의 평판도 점수들(예를 들어서, 서브루틴(R)에는 "배제됨"이라는 라벨이 부여될 수 있음)을 받을 수 있다. 예를 들어서, 서브루틴 L은 악성 코드로서 표시될 수 있다. 서브루틴 R은 이 서브루틴이 악성은 아니지만 여전히 잠재적 보안 위험을 갖는 것으로서 표시하는 상이한 플래그를 받을 수 있는데, 그 이유는 사용되지 않거나 유지되지 않는 코드는 멀웨어 제작자들을 위한 공격 벡터들을 포함할 수 있기 때문이다. 따라서, 서브루틴(R)로부터 클라이언트들을 격리시키거나, 서브루틴(R)을 디스에이블하거나, 서브루틴(R)을(예를 들어서, 소프트웨어 취약성의 잠재적 소스로서)보고하거나 이와 달리 서브루틴(R)로부터 클라이언트들을 보호하는 것이 또한 바람직할 수 있다.
다른 실례에서, 실행가능한 오브젝트(210)는 매우 높은 전반적 평판도를 가질 수 있는데, 그 이유는 예를 들어서, 실행가능한 오브젝트(210)가 평판이 있는 소프트웨어 벤더에 의해서 제공된 광범위하게 사용되는 소프트웨어이고 실질적인 멀웨어-관련 사용자 불만사항들 없이 상당한 시간 동안에 사용되어 왔기 때문일 수 있다. 이러한 경우에, 서브루틴들(A 내지 H) 모두는 실행가능한 오브젝트(210)로부터 높은 평판도를 물려 받을 수 있다. 이러한 높은 평판도를 이러한 서브루틴들은 다른 실행가능한 오브젝트들, 예를 들어서, 오브젝트들(220 및 230) 내에서도 가질 수 있으며, 이러한 바는 이러한 서브루틴들이 드물게 실행되어도(예를 들어서, 실행가능한 오브젝트(220) 내에서 서브루틴(D)가 드물게 실행되어도)그러하다. 따라서, 본 실례에서, 서브루틴(D)은 멀웨어 거동을 적극적으로 표시하기 시작하지 않는 한 높은 평판도를 계속 가질 것이다.
도 3은 본 명세서의 하나 이상의 실례들에 따른 클라이언트 디바이스(130)의 블록도이다. 클라이언트 디바이스(130)는 프로세서(310)에 의해서 제어되며, 이 프로세서는 메모리 요소(320)에 통신가능하게 연결된다. 일 실례에서, 프로세서(310)는 버스(370)를 통해서 다른 시스템 요소들에 통신가능하게 연결된다. 이러한 요소들은, 비한정적으로 말하자면, 네트워크 인터페이스(340), 및 일부 경우들에서 메모리 요소(320)의 종류일 수 있는 저장부(350), 및 사용자 인터페이스(360)를 포함할 수 있다. 위의 요소들 중 임의의 것은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다는 것이 명시적으로 의도된다.
프로세서(310)는 클라이언트 디바이스(130)를, 예를 들어서, 실행가능한 소프트웨어 또는 펌웨어 인스트럭션들을 통해서 제어하도록 구성된다. "프로세서"는 프로그램가능한 로직을 제공하는 하드웨어, 소프트웨어, 또는 펌웨어의 임의의 조합을 포함할 수 있으며, 비한정적으로 말하자면, 마이크로프로세서, 디지털 신호 프로세서, FPGA(field-programmable gate array), 프로그램가능한 로직 어레이, ASIC(application-specific integrated circuit), 또는 가상 머신 프로세서를 포함할 수 있다.
메모리(320)는 일부 실시예들에서 상대적으로 낮은-레이턴시를 갖는 휘발성 메모리일 수 있으며, 메인 메모리, 캐시, 온-칩 메모리, LI 메모리, L2 메모리, 또는 유사한 것들을 포함할 수 있다. 본 실시예에서, 프로세서(310)가 메모리(320)에 직접적으로 액세스되는 구성으로 도시되었지만, 다른 실시예에서, 메모리(320)는 시스템 버스(370)를 통해서, 일부 다른 버스를 통해서, 또는 일부 다른 수단을 통해서 프로세서(310)와 통신할 수도 있다는 것이 주목된다. 또한, 메모리(320) 및 저장부(350)는 본 실례에서 물리적으로 또는 개념적으로 개별적인 디바이스들로서 도시되었지만, 일부 실시예들에서, 메모리(320) 및 저장부(350)는 개별 메모리 영역으로 분할되거나 분할되지 않을 수도 있는 물리적 디바이스를 공유할 수도 있다는 것이 인정되어야 한다. 따라서, 본 명세서에서 개시된 구성들은 오직 예시적일 뿐이며 비한정적이다는 것이 인정되어야 한다. 이보다는, 메모리 및 저장부가 개별적이라고 기술되는 경우에서도, 메모리 및 저장부는 단일 물리적 또는 논리적 디바이스로 구현될 수 있다는 것이 이와 달리 명시적으로 기술되지 않은 이상, 명시적으로 의도된다.
본 실례에서, 네트워크 인터페이스(340)는 아날로그 신호이든, 디지털 신호이든 또는 혼합된 신호이든 상관없이, 클라이언트 디바이스(130)를 다른 컴퓨팅 디바이스들로 통신가능하게 연결하도록 구성된 임의의 통신 매체를 포함한다. 네트워크 인터페이스(340)는 비한정적으로 말하자면, Wi-Fi, Ethernet, Firewire, 광섬유, USB, 직렬 인터페이스, 적외선, 셀룰러 네트워크, 디지털 PCS 네트워크들, 2G 데이터 네트워크, 3G 데이터 네트워크, 4G WiMAX, 또는 4G LTE 데이터 네트워크들을 포함할 수 있다.
일부 실시예들에서, 사용자 인터페이스(360)는 클라이언트 디바이스(130)와 상호작용할 시에 사용자를 보고하기 위해서 제공될 수 있다. "사용자 인터페이스"는 사용자로 하여금 실시간 방식이든 아니든 클라이언트 디바이스(130)와 상호작용하게 하도록 구성된 하드웨어, 소프트웨어, 및 펌웨어의 임의의 조합을 포함할 수 있다. 일 실례에서, 사용자 인터페이스(360)는 비한정적으로 말하자면, 키보드, 마우스, 디스플레이 모니터, 스피커, 마이크로폰, 입출력 디바이스로서 겸용될 수 있는 터치 감지 디스플레이, 및 카메라를 포함할 수 있다. 사용자 인터페이스(360)는 소프트웨어 서비스들, 예를 들어서, 사용자로부터 입력 또는 확인을 구하는 실시간 다이얼로그 박스들을 포함하여 그래픽 사용자 인터페이스를 포함할 수 있다.
저장부(350)는 메모리(320)의 종류들일 수 있는 비휘발성 메모리 매체의 실례로서 개시된다. 일부 실시예들에서, 메모리(320) 및 저장부(350)는 개별 디바이스들일 수 있으며, 메모리(320)는 상대적으로 낮은-레이턴시를 갖는 휘발성 메모리 디바이스일 수 있으며, 저장부(350)는 상대적으로 높은-레이턴시를 갖는 비-휘발성 메모리 디바이스일 수 있다. 저장부(350)는 또한 다른 디바이스, 예를 들어서, 하드 드라이버, 고체상 드라이브, 외부 저장부, RAID(redundant array of independent disks), 네트워크-어태치형 저장부(network-attached storage), 광학적 저장부, 테이프 드라이브, 백업 시스템, 또는 전술한 바들의 임의의 조합일 수 있다. 수많은 다른 구성들이 또한 가능하며, 본 명세서의 넓은 범위 내에 포함되도록 의도된다.
일 실례에서, 메모리(320)는 그 내부에 본 명세서에서 기술된 바와 같은 평판도 클라이언트(322)를 제공하도록 동작가능한 실행가능한 인스트럭션들을 저장한다. 메모리(320)는 또한 실행 상태에 있는 실행가능한 오브젝트들, 예를 들어서, 실행중인 애플리케이션들(324)을 가질 수 있다. 저장부(350)는 또한 무활동 또는 정적 상태로 있을 수 있는 실행가능한 오브젝트들을 포함할 수도 있다. 평판도 클라이언트 엔진(322)은 본 명세서에서 기술된 방법들에 따라서 실행 중인 애플리케이션들(324)(메모리(320) 내에 있음) 및 저장된 애플리케이션들(352)(저장부(350) 내에서 휴지 상태로 있는 데이터) 양자를 분석하도록 구성될 수 있다. 일부 실시예들에서, 평판도 클라이언트 엔진(322)은 실행을 위해서 저장부(350)로부터 (예를 들어서, 저장된 애플리케이션들(352)의 일부로서) 메모리(320) 내로 로딩되는 실행가능한 인스트럭션들에 의해서 제공될 수 있다. 인스트럭션들은 예를 들어서, 도 4의 방법을 수행함으로써, 본 명세서에서 개시된 바와 같은 클라이언트 평판도 서비스들을 제공하도록 프로세서(310)에게 지시하도록 구성될 수 있다. 또 다른 실시예들에서, 평판도 클라이언트 엔진(322)은 하이퍼바이저 내에서, 가상 머신 상에서 또는 다른 적합한 가상화 플랫폼 상에서 또는 적합한 방법, 예를 들어서, 도 4의 방법을 실행하도록 구성된 전용 또는 특정 목적용의 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 조합으로서 제공될 수 있다. 동일하거나 다른 실시예에서, 평판도 클라이언트 엔진(322)은 전용 메모리 내에서 동작하고 개별 프로세서 또는 다른 신뢰받은 실행 환경 상에서 실행되어서, 클라이언트 디바이스(130)의 나머지 부분으로부터의 보다 양호한 격리를 제공할 수 있다. 이는 멀웨어 또는 소프트웨어가 평판도 클라이언트(322)에 대해서 악성의 우발적인 조작을 하는 것을 방지하는 것을 도울 수 있다.
도 4는 본 명세서의 하나 이상의 실례들에 따른 평판도 클라이언트 엔진을 제공하는 예시적인 방법의 플로우도이다. 평판도 클라이언트(322)는 클라이언트 디바이스(130) 상에서 실행되는 것과 같이 도 3에서 개시되지만, 평판도 클라이언트는 평판도 서버(110) 상에서, 또는 임의의 다른 디바이스 상에서 실행될 수 있다는 것이 주목되어야 한다. 본 명세서에서 개시된 단계들은 특정 실시예들에서 다수의 디바이스들 간에 분할될 수도 있다. 예를 들어서, 본 명세서에서 개시된 단계들 중 일부는 클라이언트 디바이스(130) 상에서 수행되고, 다른 단계들은 평판도 서버(110) 상에서 수행됨으로 부담이 줄어들어서 클라이언트 디바이스(130) 상의 배터리 또는 프로세싱 전력을 보존할 수 있다.
본 실례에서, 평판도 클라이언트(322)는 클라이언트 디바이스(130) 상에서 실행되며, 이는 "반응형" 스크리닝 모델을 나타낸다. 이러한 모델에서는, 실행가능한 오브젝트들이 기존의 평판도 없이 복수의 클라이언트 디바이스들(130)에 전개될 수 있다. 이 실행가능한 오브젝트들이 클라이언트 디바이스들(130) 상에 실행되면, 실행 프로파일들이 구축되어서 이 실행가능한 오브젝트의 평판도를 업데이트한다. 다른 실시예들에서는, 평판도 서버(110) 및 클라이언트 디바이스(130)양자가 도 4의 방법을 수행할 수 있으며, 이 경우에 평판도 서버(110)는 기준 식별사항을 제공하도록 정적 분석을 수행하고, 클라이언트 디바이스(130)는 동적 분석을 수행하여서 평판도를 할당할 수 있다.
수많은 다른 조합들이 본 기술 분야의 당업자에게 가능할 것이며, 이러한 조합들은 본 명세서의 넓은 범위 내에 포함되는 것이 의도된다. 또한, 도 4의 방법의 단계들 및 본 명세서에서의 다른 방법들의 단계들은 오직 예시적으로 특정 순서로 개시되며 취해진 단계들의 순서는, 달리 명시적으로 진술되지 않은 이상 또는 해당 개시의 문맥이 일 단계가 다른 단계에 후행해야 한다는 것을 모호하지 않게 명확하게 한 이상, 임의적으로 재배열될 수 있다는 것이 주목되어야 한다. 또한, 일 단계가 다른 단계를 명시적으로 또는 필수적으로 따르는 경우에는, 두 번째 단계가 첫번째 단계 이후에 즉시 또는 첫번째 단계 이후에 바로 발생해야만 한다는 것, 또는 중간의 단계들이 발생해야만 한다는 것, 또는 두번째 단계가 첫번째 단계의 직접적이면서 즉각적이면서 어떠한 개입도 받지 않은 결과여야 한다는 것, 또는 두번째 단계가 첫번째 단계 없이는 발생할 수 없다는 것을 암시하는 것으로서 해석되어서는 안된다.
본 실례에서, 블록(410)에서, 평판도 클라이언트(322)는 먼저, 클라이언트 디바이스(130) 상에서 분석되도록 가용한 예를 들어서, 애플리케이션들을 포함하는 모든 실행가능한 오브젝트들을 선택할 수 있다. 이 선택 단계(410)는 또한 적어도 하나의 특성, 이벤트 또는 컨텍스트에 기초하여서 적어도 하나의 실행가능한 오브젝트를 선택하는 것(예를 들어서, 다운로드된 애플리케이션이 설치되기 이전에 이 다운로드된 애플리케이션을 선택하는 것)을 포함할 수도 있다. 이러한 오브젝트들은 실행 중인 애플리케이션들(324), 저장된 애플리케이션들(352), 또는 저장부(350) 내에 사용자가 저장하기를 소망하는 임의의 실행가능한 오브젝트 중 하나 또는 전부를 포함할 수 있다. 선택하는 동작은 또한 예를 들어서, 상주형 애플리케이션들의 데이터베이스를 생성 또는 업데이트하는 것을 포함할 수 있으며, 이는 각 실행가능한 오브젝트에 대한 초기의 전반적 평판도를 포함할 수 있다. 초기 평판도들은 일 실례에서는 "제로" 상태로 초기화되거나, 다른 비한정적 실례에서는 평판도 서버(110)로부터 수신될 수 있다. 카달로깅(cataloging)은 또한 개별 서브루틴들에 대한 애플리케이션들 평판도들을 생성하고 이와 연관시키기 위한 메모리 공간 및 구조를 제공하는 것을 포함할 수도 있다.
블록(420)에서, 각 실행가능한 오브젝트는 개별 서브루틴들로 파싱된다(parsed). 예를 들어서, 이러한 파싱은 비한정적으로 말하자면, 함수들의 도입 지점들을 후킹(hooking)함으로써, 모든 EIP들이 기록된 완성된 실행 트레이스를 통해서 또는 메모리 페이지들로의 액세스를 기록함으로써 실행가능한 오브젝트의 실행 프로파일을 나타내는 필드 텔레메트리(field telemetry)를 수집하는 것을 포함할 수 있다. 후자는 일 실례에서는 TMSL(Intel trusted memory services layer)에 의해서 또는 DeepSAFE 또는 DeepDefender를 포함하여 McAfee, Inc.로부터 입수가능한 상업용 제품들에 의해서 제공될 수 있다. 개별 서브루틴들을 파싱하는 동작은 2 회 이상 발견된 코드 섹션들을, 함수들의 표준 컴파일러 스켈레톤들(standard compiler skeletons)을 통해서, 디컴파일링 후의 호출-플로우 그래프(call-flow graph) 분석을 통해서 또는 다른 적합한 방법들을 통해서 식별하는 것을 더 포함할 수 있다.
파싱의 정적 방식은 예를 들어서, PUSH BP 및 이를 따르는 MOV BP,SP와 같은, 서브루틴의 도입 지점에서 흔하게 실행되는 인스트럭션들을 식별하는 것을 포함할 수 있다. 마찬가지로, 서브루틴의 종료지점이 예를 들어서, POP BP 및 이를 따르는 RET와 같은, 서브루틴의 종료지점에서 흔하게 발견되는 인스트럭션들을 통해서 식별될 수 있다. 다른 실례에서, 평판도 클라이언트(322)는 실행가능한 오브젝트를 디컴파일링하고 플로우 그래프를 재구성할 수 있다.
다른 동적 방식들은 CPU 브랜칭(branching)(CALL, RET, JMP 인스트럭션들)을 모니터링하는 것 또는 리턴 어드레스들에 대한 스택을 모니터링하는 것을 포함할 수 있다. 또한, 예를 들어서, Intel 프로세서들과 같은 특정 프로세서들 내로 구축된 호출 플로우들을 재구성하는 것을 돕기 위해서 브랜치 트레이싱(branch tracing) 및 브레이크포인트들(breakpoints)(하드웨어 및 소프트웨어)와 같은 메카니즘들이 존재하기도 한다. 그러나, 전술한 바들은 모두가 오직 비한정적인 실례들로서 개시되었으며, 본 명세서의 넓은 범위 내에 포함되도록 의도된, 서브루틴들을 파싱하고 식별하기 위한 수많은 다른 가능한 방법들이 존재한다는 것이 인식되어야 한다.
파싱은 또한 분석을 할 실행가능한 오브젝트의 수정된 카피를 생성하는 것을 수반할 수 있다. 이러한 경우에, 특정 서브루틴들은 서브루틴이 실행될 때마다 업데이트되는 빈도 카운터들(또는 카운팅을 수행하는 루틴들에 대한 호출들)을 삽입하도록 수정될 수 있다.
일단 각 서브루틴이 식별되었으면, 블록(430)에서, 각 서브루틴이 핑거프린트되는데, 이는 각 서브루틴에 상술한 바와 같은 슈도-고유 식별자가 할당되는 것을 의미한다. 이는 예를 들어서, 각 서브루틴의 암호 해시(cryptographic hash)를 컴퓨팅하는 것을 포함할 수 있다. 주목할 만한 것은, 이 암호 해시는 오직 서브루틴들이 정확하게 동일할 때에만 일치할 것이며, 동일한 컴파일러 옵션들을 사용하여서 컴파일링된 공통 코드의 수많은 유닛들이 그러할 수 있다는 것이다. 최신의 해시들, 예를 들어서, SHA2 또는 SHA3는 대부분의 충돌들을 피하는데 적합하며, 이는 해시 방식에 맞는 고유성이라는 슈도-고유 성질에 보탬이 될 것이다. 이로써, 본 명세서에서 사용되는 바와 같이, "슈도-고유" 식별자는 이 식별자가 사용되는 용도를 위해서는 충분하게 실질적으로(nearly) 고유하되, 전적으로(truly) 고유하거나 또는 통계적으로 지극히 낮은 충돌 확률을 특징으로 할 필요는 없지만 그러할 수도 있는 식별자를 말한다.
그러나, 강한 해시들도, 상이한 컴파일러 옵션들을 사용하여서 동일한 소스 코드를 간단하게 컴파일링하는 것을 포함하는, 사소한 수정사항들을 제외하고는 동일한 코드를 식별하지는 않을 것이다. 일 실례에서, 실질적으로 동일하지만 근소하게 상이한 서브루틴들의 매칭(matching)을 개선하기 위해서, "퍼지 해싱(fuzzy hashing)" 또는 "퍼지 핑거프린팅"이 사용될 수 있다. 예를 들어서, 텍스트 형태의 스트링들(textual strings)을 보다 양호하게 매칭시키기 위해서, 이러한 스트링들은 모두가 대문자들 또는 소문자들로 변환될 수 있다. Intel/AMD x32/x64 코드를 매칭시키기 위해서, 메모리 레퍼런스들(references)이 제거되고 예를 들어서, 제로들로 또는 순차적 숫자들로 교체될 수 있으며, 이로써 오직 CPU 연산코드들(opcodes)만이 해싱되게 될 수 있다. 예를 들어서, MOV AX,[1234] 및 이를 따르는 ADD AX,[2345] 대신에, 퍼지 핑거프린트는 MOV AX,[0] 및 이를 따르는 ADD AX,[1]을 해싱할 것이다. 이러한 방식들 및 유사한 방식들은 근소하게 수정된 코드 부분들을 매칭시키는 것을 개선시킬 수 있다.
다른 퍼지 해싱 기법들이 또한 사용될 수 있는데, 예를 들어서, CTPH(context-triggered piecewise hashes)를 사용하는 SSDEEP가 사용될 수 있다. 상이한 서브루틴들에서 발견되는 공통 서브스트링들의 사전이 또한 구축될 수 있으며 서브루틴들은 공통 서브스트링들의 크기 및 빈도에 기초하여서 매칭될 수 있다.
서브루틴들을 식별하는 것을 보다 강하게 하기 위해서, 해당 프로세스를 멀웨어가 적극적으로 간섭할 가능성을 막도록 무조작 핑거프린팅(tamper-free fingerprinting)을 수행하는 것이 유리할 수 있다. 이러한 바는 예를 들어서, 하이퍼바이저 또는 OS 커널과 같은 TEE(trusted execution environment) 내측에서, 또는 Intel Secure Guard Extension SGX 내측에서 또는 Intel vPro 내측에서 보안 요소로 또는 펌웨어로 해싱 또는 핑거프린팅을 실행함으로써 달성되는데, 이러한 것들은 오직 비한정적으로 예를 든 것이다. 해싱 단계를 강화시키기 위한 다른 방식은 해싱을 할 오브젝트를 보안 네트워크 접속을 통해서 다른 신뢰를 받는 컴퓨터, 예를 들어서, 평판도 서버(110)로 전송하는 것을 포함할 수 있다. 일부 실시예들에서, 전체 평판도 클라이언트(322)가 TEE 내로 배치될 수 있다.
본 명세서에서 기술된 이러한 핑거프린팅 기법들은 오직 비한정적 실례들로서 주어졌다는 것이 주목되어야 하고, 서브루틴들을 핑거프린팅하기 위한 임의의 적합한 기법이 본 명세서의 넓은 범위 내에 포함되어야 한다는 것도 의도된다.
블록(440)에서, 평판도 클라이언트는 알려진 평판도들을 다룬다. 이러한 알려진 평판도들은 본 방법의 이전 반복동작들의 결과이거나, 평판도 서버(110)로부터 수신될 수 있다. 알려진 평판도들을 다루는 것은 비한정적으로 말하자면, 알려지거나 이전에 컴퓨팅된 평판도 점수들을 특정 서브루틴들 또는 실행가능한 오브젝트들에 할당하는 것을 포함할 수 있다. 멀웨어로서 식별된 실행가능한 오브젝트들에 대해서는, 이 오브젝트는 격리되거나 삭제되거나 디스에이블되거나 이와 달리 교정될 수 있다. 멀웨어를 포함하는 이와 달리 합법적인 실행가능한 오브젝트들에 대해서는, 교정 단계들(remedial steps)이 취해질 수 있는데, 이러한 교정 단계들은 예를 들어서, 공격적인 서브루틴을 실행가능한 오브젝트로부터 분리시키는 것, 민감한 자원들로의 블록 액세스에 대한 허가를 재구성하는 것, 상기 서브루틴을 악성 거동이 제거된 서브루틴인 "제거된(scrubbed)" 버전으로 교체하는 것, 상기 서브루틴이 실행되는 것을 방지하도록 시뮬레이션된 데이터를 상기 서브루틴에 제공하는 것, 또는 이와 달리 상기 서브루틴이 해로운 행위들을 하지 못하게 하는 것을 포함할 수 있다. 예를 들어서, 상기 서브루틴이 사용자가 특정 우편 번호 주소 내에 있다고 알려질 때에만 활성화되는 경우에는, 이 서브루틴에는 리스트 내에 없는 가짜 우편 번호들이 일정하게 제공될 수 있다. 본 방법이 충분한 세밀성(sufficient granularity)을 가지고 실행된다면, 사용자를 위해서 바람직한 기능들을 수행하기 위해서 상기 실행가능한 오브젝트가 합법적인 GPS 데이터로 액세스할 필요가 있는 경우에도, 본 방법은 수행될 수 있다. 이러한 경우에는, 가짜 지형학적 데이터가 전체로서의 실행가능한 오브젝트에 삽입되는 것이 아니라, 영향을 받은 서브루틴에만 삽입될 수 있다.
블록(450)에서, 빈도 점수들이 식별된 서브루틴들에 할당된다. 빈도는 사용 동안에 서브루틴이 실행되는 회수를 포함할 수 있으며, 또한 실행가능한 오브젝트 내의 서브루틴에 대한 호출의 회수들에 대한 정적 분석치를 포함할 수도 있다. 이로써, 빈도는 복수의 인자들(factors)을 포함할 수 있으며 이러한 복수의 인자들의 조합으로부터 도출될 수 있다는 것이 본 명세서에서 명시적으로 예상된다. 또한, 평판도는 상이한 빈도 인자들에 대해서 가중치를 포함할 수 있다는 것도 예상된다. 예를 들어서, 서브루틴이 실제로 실행되는 회수가 서브루틴으로의 정적 호출들의 회수보다 상대적으로 중요하다. 따라서, 일 예시적인 평판도 알고리즘은 실제 실행되는 총 회수 및 총 정적 호출 회수에 가중치 처리된 평균치를 할당하는 것을 포함할 수 있다. 다른 예시적인 평판도 알고리즘에서, 이 2 개의 인자들은 개별적을 추적될 수 있으며, 신뢰도 레벨은 1 개 또는 2 개의 인자들이 각각의 임계치를 초과하는지 아니면 미만인지의 여부에 기초할 수 있다. 또 다른 실례에서, 해당 서브루틴이 출현하는 상이한 애플리케이션들의 개수가 해당 서브루틴에 대한 다른 신뢰도 지수를 제공할 수 있다. 예를 들어서, 해당 서브루틴이 수많은 상이한 애플리케이션들에서 출현하되 모든 애플리케이션들에 걸쳐서 매우 드물게 실행되는 경우에는, 이 서브루틴은 의심이 가는 서브루틴으로서 표시되어서 추가적으로 인간의 분석을 받을 수 있다. 다른 실례에서, 수많은 상이한 애플리케이션들에서 출현하며 모든 애플리케이션들에 걸쳐서 빈번하게 실행되는 서브루틴은 의심이 덜 가는 평판도를 받을 수 있다. 사용자 불만사항의 빈도 및 심각도는, 특히 특정 서브루틴들의 실행과 상관되는 경우에, 본 명세서에서 또한 빈도 인자로서 고려될 수 있다. 특정 실시예들에서, 평판도 클라이언트(322)는 오직 미가공된 빈도 점수들만을 제공하는 반면, 다른 실시예들에서, 평판도 클라이언트(322)는 빈도 점수들에 기초하여서 평판도 점수들을 계산할 수 있다.
빈도 점수를 계산하는 동작은 또한 일부 실시예들에서 특정 장비 또는 도구를 수반할 수 있다. 예를 들어서, 특정 디바이스들에는 프로세서 또는 메모리 모니터링을 위한 적합한 하드웨어 지원부가 구비될 수 있으며, 이러한 지원부는 예를 들어서, Intel TMSL 라이브러리, 브레이크포인트들(breakpoints) 또는 CPU 브랜칭 히스토리(history)를 포함할 수 있다. 다른 실례에서, 빈도 데이터가 코드 커버리지 텔레메트리를 통해서 수집된다. 본 실례에서, 빈도 데이터는 클라이언트 디바이스들(130)로부터 수집되거나, 비한정적으로 말하자면, 가상화된 환경을 포함하는 격리된 환경에서, 샌드박스 또는 하이퍼바이저 내측에서 또는 에뮬레이터 내측에서 사전-스크리닝 프로세스(pre-screening process) 동안에 수집될 수 있다. 이는 타겟 시스템으로부터 실행가능한 오브젝트를 격리시키리 수 있으며, 이러한 바는 실행가능한 오브젝트가 평판도 점수를 아직 가지지 않을 경우에 특이 유용할 수 있다. 일 실시예에서, 격리된 환경은 평판도 서버(110)에 직접적으로 연결될 수 있으며 미지의 애플리케이션들에 대한 분석을 수행하여서 이 애플리케이션들에 대한 평판도들을 생성할 있다. 이러한 격리된 환경에서의 실행은 멀웨어 거동을 식별하는데 도움이 될 수 있는 시뮬레이션된 프라이빗(simulated private) 사용자 데이터 또는 사용자 입력들을 제공함으로써 개선될 수 있다. 이러한 시뮬레이션들의 실례는 2012년 12월 21일자에 출원된 공동 계류 중인 미국 특허 출원 13/723,495 "User-Driven Emulation of Applications"에서 제공되며, 이 특허 문헌은 본 명세서에서 참조로서 인용된다. 예를 들어서, 격리된 환경에 있을 동안에는, 실행가능한 오브젝트에는 위치 데이터, 연락처 리스트, 키스트로크, 또는 개인의 세부사항들을 포함하는 시뮬레이션된 프라이빗 사용자 데이터가 제공될 수 있다. 이러한 시뮬레이션된 프라이빗 사용자 데이터는 또한 실행가능한 오브젝트가 캐내려고 할 수 있는 시뮬레이션된 백그라운드 태스크들, 예를 들어서, 액세스하는 은행, 금융, 의료, 또는 쇼셜 네트워킹 사이트들 또는 자원들을 포함할 수 있다.
이동 디바이스들 상의 배터리 전력을 보존하기 위해서, 빈도 계산은 해당 디바이스가 외부 전력 소스에 플러그될 때로 한정될 수 있다.
또 다른 실례에서, 빈도 점수들은 코드의 다수의 리브부들(leaves portions)에 추가하여서(또는 리브부들 대신에) 호출-플로우 그래프의 선택된 브랜치들(보다 상위 레벨의 서브루틴으로부터 호출된(invoked) 리브들의 집합)과 연관될 수 있다. 이는 모 루틴(parent routine) 및 이 모 루틴의 자 루틴들(children) 모두에 대한 추가적인 계층적 빈도 추적을 제공할 수 있다. 이는 동적 링크 라이브러리들을 대한 호출을 행하는 실행가능한 파일 또는 공유형 오브젝트 파일들과 같은, 다수의 컴포넌트들을 포함하는 소프트웨어에 대한 평판도들을 계산하는데 도움이 될 수 있다. 일 실례에서, 실행가능한 오브젝트 및 모든 라이브러리들 및 그들의 함수들 및 익스포트들(exports)이 빈도들에 있어서 고려될 수 있다.
블록(460)에서, 빈도 점수들이 평판도 서버(110)에 제공된다. 하지만, 미가공 빈도 점수들의 제공은 오직 비한정적 실례로서 본 명세서에서 개시되고, 일부 실시예들에서, 블록(450)은 실제 평판도 점수들의 계산을 포함할 수 있으며, 이러한 경우에, 평판도들은 내부적으로 엄격하게 사용되거나 평판도 서버(110)에 전송하기 위해서 컴퓨팅될 수 있다는 것이 주목되어야 한다.
블록(460)에서, 컴퓨팅된 빈도 점수들(또는 평판도 점수들)은 다른 디바이스들로부터 수신된 다른 점수들과 수집되도록 평판도 서버(110)에 제공될 수 있다.
특정 실시예들에서, 본 방법은 블록(410)으로 돌아가서 추가적인 실행가능한 오브젝트들을 선택하거나, 기존의 실행가능한 오브젝트들에 대해서 수집된 데이터들의 추가 세밀화를 할 수 있다.
도 5는 본 명세서의 하나 이상의 실례들에 따른 평판도 서버(110)의 블록도이다. 본 실례에서, 평판도 서버(110)는 프로세서(510)에 의해서 제어된다. 메모리(520)가 프로세서(510)에 통신가능하게 연결된다. 평판도 서버(110)의 다른 시스템 컴포넌트들이 시스템 버스(570)를 통해서 프로세서(510)에 연결될 수 있다. 평판도 서버(110)는 또한 저장부(550) 및 네트워크 인터페이스(540)를 포함할 수 있다. 프로세서(510)는 도 3의 프로세서(310)와 유사할 수 있다. 마찬가지로, 메모리(520)도 메모리(320)와 유사할 수 있으며, 저장부(550)도 저장부(350)와 유사할 수 있으며, 네트워크 인터페이스(540)도 네트워크 인터페이스(340)와 유사할 수 있다.
본 실례에서, 네트워크 인터페이스(540)는 평판도 서버(110)를 네트워크(120)에 통신가능하게 연결시키도록 구성될 수 있다. 일부 경우들에서, 저장부(550)는 평판도 데이터베이스(140)를 포함할 수 있는 한편, 다른 경우들에서는, 평판도 데이터베이스(140)는 개별적으로 제공될 수 있다.
메모리(520)는 그 내에 평판도 서버 소프트웨어(522)를 저장할 수 있다. 일부 실시예들에서, 평판도 서버 엔진(522)은 실행을 위해서 저장부(550)로부터 메모리(520) 내로 로딩된 실행가능한 인스트럭션들에 의해서 제공될 수 있다. 인스트럭션들은 예를 들어서, 도 6의 방법을 수행함으로써, 본 명세서에서 기술된 바와 같은 클라이언트 서버 서비스들을 제공하도록 프로세서(510)에게 지시하도록 구성될 수 있다. 또 다른 실시예들에서, 평판도 서버 엔진(522)은 하이퍼바이저 내측에서, 가상 머신 상에서 또는 다른 적합한 가상화 플랫폼 상에서 또는 적합한 방법, 예를 들어서, 도 6의 방법을 실행하도록 구성된 전용 또는 특정 목적의 하드웨어, 소프트웨어, 및/또는 펌웨어의 임의의 조합으로서 제공될 수 있다. 동일하거나 다른 실시예에서, 평판도 서버 엔진(522)은 전용 메모리 내에서 동작하고 개별 프로세서 또는 다른 신뢰받은 실행 환경 상에서 실행되어서, 평판도 서버(110)의 나머지 부분으로부터의 보다 양호한 격리를 제공할 수 있다.
도 6은 본 명세서의 하나 이상의 실례들에 따른 평판도 서버 엔진을 제공하는 방법의 흐름도이다. 본 실례에 따라서, 블록(610)에서, 평판도 서버(110)는 데이터 하나 이상의 클라이언트 디바이스들(130)로부터 수신한다. 데이터는 예를 들어서, 실행가능한 오브젝트들 및 서브루틴들에 대한 빈도 점수들 또는 평판도 점수들을 포함할 수 있다.
블록(620)에서, 예를 들어서, 평판도 데이터베이스(140) 내에 포함되는 바와 같은, 마스터 카탈로그(master catalog)(이는 일 실례에서 전체 실행가능한 오브젝트들 및 서브루틴들 모두를 포함할 수 있음)가 업데이트될 수 있다. 이러한 업데이트 동작은 상기 마스터 애플리케이션 카탈로그에서 이전에 발견되지 않은 애플리케이션들 또는 서브루틴들을 추가하거나, 이와 달리 클라이언트 디바이스들(130)로부터 수신된 실행가능한 오브젝트들 및 서브루틴들에 대한 데이터를 유지하도록 상기 마스터 카탈로그를 준비시키는 동작을 포함할 수 있다.
블록(630)에서, 실행가능한 오브젝트들 및 서브루틴들이 평판도 데이터베이스(140) 내에 기존에 존재하는 실행가능한 오브젝트들 및 서브루틴들과 상호 참조되어서, 이들을 서로 매칭하는 것들로서 식별되게 할 수 있다. 블록(640)에서, 평판도 점수들이 빈도에 기초하여서 컴퓨팅되며, 평판도 데이터베이스(140)가 새로운 평판도 점수로 업데이트될 수 있다. 상술한 바와 같이, 일부 경우들에서, 클라이언트 디바이스(130)는 국부적으로 평판도 점수를 컴퓨팅할 수 있다. 이러한 경우에, "전반적(global)" 평판도 점수는 클라이언트 디바이스들에 의해서 제공된 평판도 점수에 기초하여서 컴퓨팅될 수 있다. 다른 실시예들에서, 클라이언트 디바이스들(130)에 의해서 제공된 평판도 점수들은 평판도 서버(110)에 의해서 컴퓨팅된 전반적 평판도 점수가 선호되므로 폐기될 수 있다. 수많은 알고리즘들이 평판도 서버(110) 상에서 평판도 점수를 컴퓨팅하기 위해서 가능하며, 첨부된 청구항들을 포함하는 본 명세서의 범위는 명시적으로 진술되지 않은 이상 임의의 특정 알고리즘으로 한정되지 않도록 되어야 해석되어야 한다는 것이 인정되어야 한다.
일부 실시예들, 평판도 점수는 또한 해당 개발자 또는 팀의 평판도를 고려할 수 있다. 예를 들어서, 회사를 떠났거나, 의심이 가거나, 체포되었거나, 악성 소프트웨어 조직들과 연루되었음이 알려졌거나, 이와 달리 의심이 가는 개인적 평판을 갖고 있는 개발자가 자신이 개발한 코드에 대한 추가적 검사를 보장할 수 있다. 일부 경우들에서, 소프트웨어 개발 회사들로부터의 협력이 유리할 수 있다. 유사한 고려사항들이 제3자 코스 소스들, 예를 들어서, 비한정적으로 말하자면, 외부 라이브러리들, 하청업자들, 및 오픈-소스 프로젝트들에 적용될 수 있다. 예를 들어서, CVS(concurrent versioning system)로부터의 위임 기록사항들이 사용되어서 어느 개발자에게 어느 서브루틴들이 위임되었는지가 결정될 수 있다. 빈도 및 평판도 데이터는 또한 API를 통해서 소프트웨어 개발 회사들에 다시 제공될 수 있으며, 이는 이 회사들이 그들의 개발 프로세스를 개선하는 것을 도우며 그들의 개발 프로세스들에 대한 보다 위대한 통찰을 얻는 것을 도울 수 있다.
블록(650)에서, 특정 부류의 서브루틴들 또는 실행가능한 오브젝트들은, 예를 들어서, 낮은 빈도-기반 평판도 점수를 갖는다는 것에 기초하여서 "의심이 가는 것"으로서 지정될 수 있다. 이러한 서브루틴들 또는 실행가능한 오브젝트들은 예를 들어서, 인간 오퍼레이터에 의한 후속 심화 분석을 받도록 지정될 수 있다. 인간 오퍼레이터에 의한 후속 심화 분석 결과를 통해서 이러한 서브루틴들 및 실행가능한 오브젝트들이 악성 코드를 포함하는 것으로서 드러나면, 이들은 멀웨어로서 표시될 수 있으며 교정 단계들이 취해질 수 있다.
블록(660)에서, 알려진 오브젝트들에 대한 평판도 데이터가 클라이언트 디바이스들(130)에 다시 분배될 수 있다. 평판도 정보는 또한 API를 통해서 제공될 수 있으며 네트워크를 통해서 서비스로서 제공될 수 있다. 일부 실시예들에서, 본 방법은 블록(610)으로 돌아가서 추가적인 서브루틴들 및 실행가능한 오브젝트들을 프로세싱할 수 있다.
전술한 바들은 본 기술 분야의 당업자가 본 개시의 양태들을 보다 양호하게 이해할 수 있도록 몇몇 실시예들의 특징들을 개략적으로 기술하였다. 본 기술 분야의 당업자는 본 명세서에서 도입된 실시예들의 목적들과 동일한 목적들을 실행하고/하거나 장점들과 동일한 장점들을 달성하기 위한 다른 프로세스들 및 구조들을 설계 또는 수정하기 위한 기초로서 본 개시를 용이하게 사용할 수 있다는 것을 인정해야 한다. 본 기술 분야의 당업자는 또한 이러한 균등한 구성사항들은 본 개시의 사상 및 범위를 벗어나지 않으며 당업자가 본 개시의 사상 및 범위를 벗어나지 않으면서 본 명세서에서의 다양한 변경, 치환 및 수정을 할 수 있다는 것도 이해해야 한다.
본 개시의 특정 실시예들은 시스템 온 칩(SOC) 중앙 처리 유닛(central processing unit: CPU) 패키지를 용이하게 포함할 수 있다. SOC는 컴퓨터 또는 다른 전자 시스템의 컴포넌트들을 단일 칩 내로 집적시킨 집적 회로(IC)를 나타낸다. SOC는 디지털 신호, 아날로그 신호, 이들의 혼합 신호, 및 무선 빈도 함수들을 포함할 수 있다: 이들 모두는 단일 칩 기판 상에 제공될 수 있다. 다른 실시예들은 다중-칩-모듈(MCM)을 포함할 수 있는데, 이 경우에는 복수의 칩들이 단일 전자 패키지 내에 위치하며 전자 패키지를 통해서 서로 긴밀하게 상호작용하도록 구성된다. 다양한 다른 실시예들에서, 디지털 신호 프로세싱 기능들이 애플리케이션 특정 집적 회로들(ASICs), FPGA들(Field Programmable Gate Arrays), 및 다른 반도체 칩들 내의 하나 이상의 실리콘 코어들로 구현될 수 있다.
예시적인 구현예들에서, 본 명세서에서 개략된 프로세싱 동작들 중 적어도 일부 부분들은 또한 소프트웨어로 구현될 수 있다. 일부 실시예들에서, 이러한 특징부들 중 하나 이상은 개시된 도면들의 요소들이 외부에서 제공되는 하드웨어로 구현되거나, 의도된 기능들을 달성하는 임의의 적합한 방식으로 통합된 하드웨어로 구현될 수 있다. 다양한 컴포넌트들은 본 명세서에서 개략된 바와 같은 동작들을 달성하기 위해서 조율될 수 있는 소프트웨어(또는 상호보완 소프트웨어)를 포함할 수 있다. 또 다른 실시예들에서, 이러한 요소들은 이들의 동작들을 실현하는 임의의 적합한 알고리즘들, 하드웨어, 소프트웨어, 컴포넌트들, 모듈들, 인터페이스들, 또는 오브젝트들을 포함할 수 있다.
또한, 마이크로프로세서들과 연관된 컴포넌트들 중 일부는 제거되거나, 이와 달리, 통합될 수 있다. 일반적으로 말하자면, 도면들에서 도시된 구성들은 그들의 표현 상에 있어서 보다 논리적일 수 있는 한편, 물리적 아키텍처는 이러한 요소들의 다양한 치환들, 조합들 및/또는 혼합들을 포함할 수 있다. 셀 수 없는 가능한 설계 구성들이 본 명세서에서 개략된 작용상의 목적들을 달성하기 위해서 사용될 수 있다는 것이 주목되어야 한다. 따라서, 관련 인프라스트럭처도 셀 수 없는 치환 구성, 설계 선택사항, 디바이스 실시사항, 하드웨어 구성사항, 소프트웨어 구현사항, 장비 옵션들 등을 갖는다.
임의의 적합하게-구성된 프로세서 컴포넌트는 본 명세서에서 상세하게 설명된 동작들을 달성하기 위해서 데이터와 연관된 임의의 타입의 인스트럭션들을 실행할 수 있다. 본 명세서에서 개시된 임의의 프로세서는 요소 또는 물체(예를 들어서, 데이터)를 하나의 상태 또는 사물을 다른 상태 또는 사물로 변환시킬 수 있다. 다른 실례에서, 본 명세서에서 개략된 일부 활동들은 고정된 로직 또는 프로그램가능한 로직(예를 들어서, 프로세서에 의해서 실행되는 소프트웨어 및/또는 컴퓨터 인스트럭션들)으로 구현될 수 있으며, 본 명세서에서 식별된 요소들은 일부 타입의 프로그램가능한 프로세서, 프로그램가능한 디지털 로직(예를 들어서, 필드 프로그램가능한 게이트 어레이(FPGA), 소거가능한 프로그램가능한 판독 전용 메모리(EPROM), 전기적으로 소거가능한 프로그램가능한 판독 전용 메모리(EEPROM)), 디지털 로직, 소프트웨어, 코드, 전자적 인스트럭션들, 플래시 메모리, 광학 디스크, CD-ROM, DVD ROM, 자기 또는 광학 카드를 포함하는 ASIC, 전자적 인스트럭션들을 저장하기 위한 다른 타입들의 머신-판독가능한 매체들 적합한 또는 이들의 임의의 적합한 조합일 수 있다. 동작 시에, 프로세서들은 정보를 임의의 적합한 타입의 비일시적 저장부 매체(예를 들어서, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 필드 프로그램가능한 게이트 어레이(FPGA), 소거가능한 프로그램가능한 판독 전용 메모리(EPROM), 전기적으로 소거가능한 프로그램가능한 ROM(EEPROM), 등), 소프트웨어, 하드웨어, 내에 저장하거나, 특정 필요사항들에 기초하여서 적합한 경우에는 임의의 다른 적합한 컴포넌트, 디바이스, 요소, 또는 오브젝트 내에 저장할 수 있다. 또한, 프로세서에서 추적, 송신, 수신 또는 저장된 정보는 특정 필요사항들 및 구현사항들에 기초하여서, 임의의 데이터베이스, 레지스터, 테이블, 캐시, 큐, 제어 리스트(control list), 또는 저장 구조체 내에 제공될 수 있으며, 이들 모두는 임의의 적합한 시간대에 참조될 수 있다. 본 명세서에서 논의된 기억 아이템들(memoroy items) 중 임의의 것도 넓은 범위의 용어인 '메모리" 내에 포함되는 것으로서 해석되어야 한다. 마찬가지로, 본 명세서에서 기술된 잠재적 프로세싱 요소들, 모듈들, 및 머신들 중 임의의 것도 넓은 범위의 용어인 '마이크로프로세서' 또는 '프로세서' 내에 포함되는 것으로서 해석되어야 한다.
본 명세서에서 기술된 기능들 일부 또는 전부를 구현하는 컴퓨터 프로그램 로직은 다양한 형태들로 구현될 수 있는데, 이러한 형태들은 다음으로 한정되지는 않지만 소스 코드 형태, 컴퓨터 실행가능한 형태, 및 다양한 중간 형태들(예를 들어서, 어셈블러, 컴파일러, 링커 또는 로케이터에 의해서 생성된 형태들)을 포함한다. 일 실례에서, 소스 코드는 다양한 프로그래밍 언어들, 예를 들어서, 오브젝트 코드, 어셈블리 언어, 또는 상위 레벨 언어, 예를 들어서, 다양한 운영 체제들 또는 운영 환경들과 함께 사용되는 OpenCL, Fortran, C, C++, JAVA, Python, Perl, JavaScript 또는 HTML으로 구현되는 일련의 컴퓨터 프로그램 인스트럭션들을 포함한다. 소스 코드는 다양한 데이터 구조들 및 통신 메시지들을 규정 및 사용할 수 있다. 소스 코드는 (예를 들어서, 인터프리터를 통해서) 컴퓨터 실행가능한 형태로 존재하거나, 또는 소스 코드는 (예를 들어서, 변환기, 어셈블러, 또는 컴파일러를 통해서) 컴퓨터 실행가능한 형태로 변환될 수 있다.
위의 실시예들을 논의할 시에, 커패시터들, 버퍼들, 그래픽 요소들, 상호접속 보드들, 클록들, DDR들, 카메라 센서들, 디바이더들(dividers), 인턱터들, 저항기들, 증폭기들, 스위치들, 디지털 코어, 트랜지스터들 및/또는 다른 컴포넌트들은 특정 회로 요구사항들을 만족시키기 위해서 용이하게 대체, 치환 또는 이와 달리 변경될 수 있다. 또한, 상보적 전자적 디바이스들, 하드웨어, 비일시적 소프트웨어, 등의 사용은 본 개시의 교시사항들을 구현하기 위한 균등하게 구현 가능한 옵션을 제공한다는 것이 주목되어야 한다.
일 실례에서, 도면들의 임의의 개수의 전기 회로들이 관련 전자 디바이스의 보드 상에서 구현될 수 있다. 이러한 보드는 전자 디바이스의 내부 전자 시스템의 다양한 컴포넌트들을 유지하고, 또한 다른 주변장치들을 위한 커넥터들을 제공할 수 있는 일반적 회로 보드일 수 있다. 보다 구체적으로, 이 보드는 전기적 접속들을 제공할 수 있으며 이러한 접속들을 통해서 시스템의 다른 컴포넌트들이 전기적으로 통신할 수 있다. 임의의 적합한 프로세서들(디지털 신호 프로세서들, 마이크로프로세서들, 지원 칩셋들, 등을 포함함), 메모리 요소들, 등은 특정 구성 필요사항, 프로세싱 요구사항, 컴퓨터 설계, 등에 기초하여서 보드에 적합하게 연결될 수 있다. 다른 컴포넌트들, 예를 들어서, 외부 저장부, 추가 센서들, 오디오/비디오 표시를 위한 제어기들, 및 주변 디바이스들이 플러그-인 카드로서, 케이블을 통해서 보드에 부착되거나 보드 자체 내부로 통합될 수도 있다. 다른 실례에서, 도면들의 전기 회로들은 독립형 모듈들(예를 들어서, 특정 애플리케이션 또는 기능을 수행하도록 구성된 관련 컴포넌트들 및 회로들을 갖는 디바이스)로 구현되거나, 전자 디바이스들의 애플리케이션 특정 하드웨어 내로의 플러그-인 모듈들로서 구현될 수도 있다.
본 명세서에서 제공된 다양한 실례들에 있어서, 상호작용은 2 개, 3 개, 4 개 또는 그 이상의 전기적 컴포넌트들의 측면에서 기술될 수 있다는 것이 주목된다. 하지만, 이는 명료성을 위해서 그리고 오직 실례로서 이루어진 것뿐이다. 시스템은 임의의 적합한 방식으로 통합될 수 있다는 것이 인정되어야 한다. 유사한 설계 상의 다른 대안들을 따라서, 도면들 상의 예시된 컴포넌트들, 모듈들, 및 요소들 중 임의의 것들은 다양한 가능한 구성들로 조합될 수 있으며, 이러한 구성들 모두는 명백하게 본 명세서의 넓은 범위 내에 존재한다. 특정 경우들에서, 오직 한정된 개수의 전기 요소들을 참조함으로써 소정의 플로우 세트들의 기능들 중 하나 이상을 기술하는 것이 보다 용이할 수 있다. 도면들 상의 전기 회로들 및 그의 교시사항들은 용이하게 스케일링가능하며 많은 수의 컴포넌트들을 수용할 수 있으며 보다 복잡하고/정교한 배열들 및 구성들을 수용할 수 있다는 것도 인정되어야 한다. 따라서, 제공된 실례들은 셀 수 없는 다른 아키텍처들에 잠재적으로 적용되는 바와 같은 전기 회로들의 범위를 한정하거나 넓은 교시사항들을 막아서는 안된다.
수많은 변경사항들, 치환사항들, 변형사항들, 변화사항들 및 수정사항들이 본 기술 분야의 당업자에게 알려질 수 있으며, 본 개시는 이러한 모든 변경사항들, 치환사항들, 변형사항들, 변화사항들 및 수정사항들을 첨부된 청구항들의 범위 내에 포함되는 것와 같이 포함할 수 있다는 것이 의도된다. 미국 특허청(USPTO) 및, 추가적으로, 본원에 대해서 발행되는 임의의 특허의 임의의 독자들이 본원에 첨부된 청구항들을 해석하는 것을 돕기 위해서, 출원인은 (a) 첨부된 청구항들 중 어느 것도 이의 출원 일자에 존재하는 바와 같이, "기능식 청구항" 형태가 특정 청구항들에서 특정하게 사용되지 않은 이상, 35 U.S.C. 섹션 112의 단락(6)이 적용되어서는 안 되며; 그리고, (b) 본 명세서에서의 임의의 서술에 의해서, 첨부된 청구항들에서 상기 서술과 달리 반영되지 않은 임의의 방식으로 본 개시를 제한해서도 안 된다는 것을 언급하고자 한다.
예시적인 실시예 구현
비한정적으로 말하자면, 실행가능한 오브젝트들에 대하여 빈도-기반 분류(frequency-based classification)를 수행하는 장치로서, 상기 장치는 메모리에 통신가능하게 연결된 프로세서; 네트워크 인터페이스; 및 상기 프로세서에 통신가능하게 연결된 평판도 클라이언트 엔진(reputation client engine)을 포함하며, 상기 평판도 클라이언트 엔진은, 실행가능한 오브젝트를 복수의 서브루틴들로 파싱(parsing)하고, 실행 빈도 점수를 각 서브루틴에 할당하도록 동작가능한, 장치가 실례 1로서 본 명세서에서 개시된다.
상기 평판도 클라이언트 엔진은, 상기 네트워크 인터페이스를 통해서 실행 빈도 점수들을 제공하고, 상기 네트워크 인터페이스를 통해서 상기 실행가능한 오브젝트에 대한 평판도 점수를 수신하도록 더 동작가능한, 실례 1의 평판도 클라이언트가 실례 2로서 본 명세서에서 개시된다.
상기 실행 빈도 점수를 각 서브루틴에 할당하는 것은 상기 실행가능한 오브젝트를 실행하고 상기 서브루틴들에 대한 호출들을 집계하는 것을 더 포함하는, 실례 1 또는 실례 2의 평판도 클라이언트가 실례 3으로서 본 명세서에서 개시된다.
상기 평판도 클라이언트 엔진은 격리된 환경(insulated environment)에서 상기 실행가능한 오브젝트를 실행하도록 더 동작가능한, 실례 1 내지 실례 3 중 어느 하나의 실례의 평판도 클라이언트가 실례 4로서 본 명세서에서 개시된다.
상기 실행가능한 오브젝트를 상기 복수의 서브루틴들로 파싱하는 것은 빈도 카운터들이 상기 서브루틴들 내에 삽입되게 상기 실행가능한 오브젝트의 카피를 수정하는 것을 더 포함하는, 실례 1 내지 실례 4 중 어느 하나의 실례의 평판도 클라이언트가 실례 5로서 본 명세서에서 개시된다.
하나 이상의 비일시적 컴퓨터-판독가능한 매체로서, 상기 매체는 상기 매체 상에 실행가능한 인스트럭션들을 저장하며, 상기 실행가능한 인스트럭션들은 프로세서가 실례 1 내지 실례 5 중 어느 하나의 실례의 평판도 클라이언트 엔진을 제공하도록 상기 프로세서에게 명령하도록 구성된, 비일시적 컴퓨터-판독가능한 매체가 실례 6으로서 본 명세서에서 개시된다.
메모리에 통신가능하게 연결된 프로세서; 네트워크 인터페이스; 및 상기 프로세서에 통신가능하게 연결된 평판도 서버 엔진을 포함하며, 상기 평판도 서버 엔진은, 실행가능한 오브젝트를 복수의 서브루틴들로 파싱하고, 평판도 점수를 각 서브루틴에 할당하도록 동작가능한, 평판도 서버가 실례 7로서 본 명세서에서 개시된다.
상기 평판도 서버 엔진은, 상기 복수의 서브루틴들에 대한 평판도 점수들에 적어도 부분적으로 기초하여서 상기 실행가능한 오브젝트에 대한 평판도 점수를 컴퓨팅하고, 상기 평판도 점수들 중 적어도 하나를 상기 네트워크 인터페이스를 통해서 복수의 평판도 클라이언트들에 분배하도록 더 동작가능한, 실례 7의 평판도 서버가 실례 8로서 본 명세서에서 개시된다.
상기 평판도 점수를 각 서브루틴에 할당하는 것은 실행 빈도 점수를 각 서브루틴에 할당하는 것을 더 포함하는, 실례 8의 평판도 서버가 실례 9로서 본 명세서에서 개시된다.
상기 실행가능한 오브젝트를 상기 복수의 서브루틴들로 파싱하는 것은 상기 복수의 서브루틴들에 대한 데이터를 평판도 클라이언트로부터 수신하는 것을 더 포함하는, 실례 8 또는 실례 9의 평판도 서버가 실례 10으로서 본 명세서에서 개시된다.
상기 평판도 점수를 각 서브루틴에 할당하는 것은 각 서브루틴에 대한 실행 빈도 점수를 평판도 클라이언트로부터 수신하는 것을 더 포함하는, 실례 8 내지 실례 10 중 어느 하나의 실례의 평판도 서버가 실례 11로서 본 명세서에서 개시된다.
상기 평판도 점수를 각 서브루틴에 할당하는 것은, 각 서브루틴에 슈도-고유 핑거프린트(pseudo-unique fingerprint)를 할당하는 것; 및 상기 슈도-고유 핑거프린트를 사용하여서 이와 매칭하는(matching) 서브루틴에 대한 빈도 또는 평판도 점수를 평판도 데이터베이스에게 질의하는 것을 더 포함하는, 실례 8 내지 실례 11 중 어느 하나의 실례의 평판도 서버가 실례 12로서 본 명세서에서 개시된다.
상기 평판도 점수를 각 서브루틴에 할당하는 것은 해당 서브루틴에 대한 실행 빈도 점수를 수신하는 것을 더 포함하며, 상기 실행 빈도 점수는 복수의 실행가능한 오브젝트들에 걸친 실행 빈도를 포함하는, 실례 8 내지 실례 12 중 어느 하나의 실례의 평판도 서버가 실례 13으로서 본 명세서에서 개시된다.
상기 평판도 서버 엔진은, 격리된 환경에서 상기 실행가능한 오브젝트를 실행시키고; 서브루틴들의 실행 빈도들에 기초하여서 해당 서브루틴들에 빈도 점수들을 할당하도록 더 동작가능한, 실례 8 내지 실례 13 중 어느 하나의 실례의 평판도 서버가 실례 14로서 본 명세서에서 개시된다.
상기 평판도 점수를 각 서브루틴에 할당하는 것은 상기 실행가능한 오브젝트를 정적으로 분석하는 것을 더 포함하는, 실례 8 내지 실례 14 중 어느 하나의 실례의 평판도 서버가 실례 15로서 본 명세서에서 개시된다.
상기 평판도 서버 엔진은 낮은 평판도 점수를 갖는 실행가능한 오브젝트들은 추가 심화 분석을 받게 표시하도록 더 동작가능한, 실례 8 내지 실례 15 중 어느 하나의 실례의 평판도 서버가 실례 16으로서 본 명세서에서 개시된다.
상기 실행가능한 오브젝트에 대한 평판도는 상기 복수의 서브루틴들의 평판도들에 적어도 부분적으로 기초하는, 실례 8 내지 실례 16 중 어느 하나의 실례의 평판도 서버가 실례 17로서 본 명세서에서 개시된다.
상기 평판도 서버 엔진은, 상기 실행가능한 오브젝트가 높은 평판도 점수를 갖는다고 판정하고, 상기 복수의 서브루틴들에 높은 평판도 점수를 할당하도록 더 동작가능한, 실례 8 내지 실례 17 중 어느 하나의 실례의 평판도 서버가 실례 18로서 본 명세서에서 개시된다.
상기 평판도 서버 엔진은, 슈도-고유 핑거프린트를 적어도 하나의 서브루틴에 할당하고, 해당 서브루틴에 대한 실행 빈도 점수를 복수의 실행가능한 오브젝트들에 걸쳐서 컴퓨팅하고; 상기 평판도 점수를 상기 실행 빈도 점수와 상관시키도록 더 동작가능한, 실례 8 내지 실례 18 중 어느 하나의 실례의 평판도 서버가 실례 19로서 본 명세서에서 개시된다.
상기 슈도-고유 핑거프린트를 상기 서브루틴에 할당하는 것은 퍼지 핑거프린트(fuzzy fingerprint)를 컴퓨팅하는 것을 포함하는, 실례 19의 평판도 서버가 실례 20로서 본 명세서에서 개시된다.
상기 평판도 서버 엔진은 실행 빈도 점수가 제로인 서브루틴들을 보안 위험요소들로서 식별하도록 더 동작가능한, 실례 8 내지 실례 20 중 어느 하나의 실례의 평판도 서버가 실례 21로서 본 명세서에서 개시된다.
상기 평판도 서버 엔진은 낮은 실행 빈도 점수들을 갖는 서브루틴들을 의심이 가는 요소로서 식별하도록 더 동작가능한, 실례 8 내지 실례 21 중 어느 하나의 실례의 평판도 서버가 실례 22로서 본 명세서에서 개시된다.
적어도 하나의 비일시적 컴퓨터-판독가능한 저장 매체로서, 상기 저장 매체는 상기 매체 상에 실행가능한 인스트럭션들을 저장하며, 상기 실행가능한 인스트럭션들은 실례 8 내지 실례 22 중 어느 하나의 실례의 평판도 서버 엔진을 제공하도록 구성된, 비일시적 컴퓨터-판독가능한 저장 매체가 실례 23으로서 본 명세서에서 개시된다.
실행가능한 오브젝트의 평판도를 컴퓨팅하기 위한 방법으로서, 상기 방법은 컴퓨팅 디바이스 상에서 실행가능하며, 상기 방법은, 실행가능한 오브젝트를 복수의 서브루틴들로 파싱하는 단계; 각 서브루틴에 실행 빈도 점수를 할당하는 단계; 상기 실행 빈도 점수에 적어도 부분적으로 기초하여서 각 서브루틴에 평판도 점수를 할당하는 단계; 및 상기 서브루틴들의 평판도 점수들에 적어도 부분적으로 기초하여서 상기 실행가능한 오브젝트에 평판도 점수를 할당하는 단계를 포함하는, 방법이 실례 24로서 본 명세서에서 개시된다.
상기 실행가능한 오브젝트에 평판도 점수를 할당하는 단계는, 슈도-고유 식별자를 서브루틴에 할당하는 단계; 이전에 계산된 실행 빈도들을 갖는 슈도-고유 식별자와 동일한 슈도-고유 식별자를 갖는 서브루틴들을 찾는 단계; 및 상기 서브루틴의 실행 빈도들을 취합하는 단계를 더 포함하는, 실례 24의 방법이 실례 25로서 본 명세서에서 개시된다.
평판도 서버 엔진을 제공하는 방법으로서, 실행가능한 오브젝트를 복수의 서브루틴들로 파싱하는 단계; 및 평판도 점수를 각 서브루틴에 할당하는 단계를 포함하는, 방법이 실례 26으로서 본 명세서에서 개시된다.
상기 실행가능한 오브젝트에 평판도를 할당하는 단계를 더 포함하며, 상기 실행가능한 오브젝트에 대한 평판도는 상기 서브루틴들의 평판도들에 적어도 부분적으로 기초하는, 실례 26의 방법이 실례 27로서 본 명세서에서 개시된다.
낮은 평판도 점수들을 갖는 실행가능한 오브젝트들은 추가 심화 분석을 받도록 표시하는(flagging)단계를 더 포함하는, 실례 26 또는 실례 27의 방법이 실례 28로서 본 명세서에서 개시된다.
상기 평판도 점수를 각 서브루틴에 할당하는 단계는 실행 빈도 점수를 각 서브루틴에 할당하는 단계를 포함하는, 실례 26 내지 실례 28 중 어느 하나의 실례의 방법이 실례 29로서 본 명세서에서 개시된다.
평판도 점수를 각 서브루틴에 할당하도록 구성된 인스트럭션들은, 상기 실행가능한 오브젝트가 높은 평판도 점수를 갖는다고 판정하고, 상기 서브루틴들에 높은 평판도 점수를 할당하도록 더 구성된, 실례 26 내지 실례 29 중 어느 하나의 실례의 방법이 실례 30으로서 본 명세서에서 개시된다.
평판도 점수를 각 서브루틴에 할당하도록 구성된 인스트럭션들은, 슈도-고유 핑거프린트를 서브루틴에 할당하고, 상기 서브루틴에 대한 실행 빈도 점수를 복수의 실행가능한 오브젝트들에 걸쳐서 컴퓨팅하고, 평판도 점수를 실행 빈도 점수와 상관시키도록 더 구성된, 실례 26 내지 실례 30 중 어느 하나의 실례의 방법이 실례 31로서 본 명세서에서 개시된다.
상기 슈도-고유 핑거프린트를 상기 서브루틴에 할당하는 단계는 퍼지 핑거프린트를 컴퓨팅하는 단계를 포함하는, 실례 31의 방법이 실례 32로서 본 명세서에서 개시된다.
낮은 평판도 점수들을 갖는 서브루틴들은 추가 심화 분석을 받도록 표시하는(flagging)단계를 더 포함하는, 실례 26 내지 실례 32 중 어느 하나의 실례의 방법이 실례 33로서 본 명세서에서 개시된다.
실행 빈도 점수를 각 서브루틴에 할당하는 단계; 및 실행 빈도 점수들이 제로인 서브루틴들을 보안 위험 요소들로서 식별하는 단계를 더 포함하는, 실례 26 내지 실례 33 중 어느 하나의 실례의 방법이 실례 34로서 본 명세서에서 개시된다.
낮은 실행 빈도 점수들을 갖는 서브루틴들을 의심이 가는 요소로서 식별하는 단계를 더 포함하는, 실례 34의 방법이 실례 35로서 본 명세서에서 개시된다.
격리된 환경에서 상기 실행가능한 오브젝트를 실행하는 단계를 더 포함하는, 실례 26 내지 실례 34 중 어느 하나의 실례의 방법이 실례 36으로서 본 명세서에서 개시된다.
실례 26 내지 실례 36 중 어느 하나의 실례의 방법을 수행하기 위한 수단을 포함하는 장치가 실례 37로서 본 명세서에서 개시된다.
상기 수단은 프로세서 및 메모리를 포함하는, 실례 37의 장치가 실례 38로서 본 명세서에서 개시된다.
상기 메모리는 머신-판독가능한 인스트럭션들을 포함하며, 상기 머신-판독가능한 인스트럭션들은 실행되어서 상기 장치로 하여금 실례 26 내지 실례 36 중 어느 하나의 실례의 방법을 수행하게 하는, 실례 37 또는 실례 38의 장치가 실례 39로서 본 명세서에서 개시된다.
상기 장치는 컴퓨팅 시스템인, 실례 37 내지 실례 39 중 어느 하나의 실례의 장치가 실례 40으로서 본 명세서에서 개시된다.
하나 이상의 비일시적 컴퓨터-판독가능한 매체로서, 상기 매체는 상기 매체 상에 실행가능한 인스트럭션들을 가지며, 상기 실행가능한 인스트럭션들은 프로세서가 실례 26 내지 실례 36 중 어느 하나의 실례의 방법을 수행하도록 상기 프로세서에게 명령을 하도록 구성된, 비일시적 컴퓨터-판독가능한 매체가 실례 41로서 본 명세서에서 개시된다.
컴퓨팅 디바이스로서, 실행가능한 오브젝트를 복수의 서브루틴들로 파싱하는 수단; 각 서브루틴에 실행 빈도 점수를 할당하는 수단; 상기 실행 빈도 점수에 적어도 부분적으로 기초하여서 각 서브루틴에 평판도 점수를 할당하는 수단; 및 상기 서브루틴들의 평판도 점수들에 적어도 부분적으로 기초하여서 상기 실행가능한 오브젝트에 평판도 점수를 할당하는 수단을 포함하는, 컴퓨팅 디바이스가 실례 42로서 본 명세서에서 개시된다.
상기 실행가능한 오브젝트에 평판도 점수를 할당하는 수단은, 슈도-고유 식별자를 서브루틴에 할당하는 수단; 이전에 계산된 실행 빈도들을 갖는 슈도-고유 식별자와 동일한 슈도-고유 식별자를 갖는 서브루틴들을 찾는 수단; 및 상기 서브루틴의 실행 빈도들을 취합하는 수단을 더 포함하는, 실례 42의 컴퓨팅 디바이스가 실례 43으로서 본 명세서에서 개시된다.
상기 수단들 각각은 비일시적 컴퓨터-판독가능한 매체 상에 저장된 실행가능한 인스트럭션들을 포함하는, 실례 42 또는 실례 43의 컴퓨팅 디바이스가 실례 44로서 본 명세서에서 개시된다.

Claims (44)

  1. 실행가능한 오브젝트들에 대하여 빈도-기반 분류(frequency-based classification)를 수행하는 장치로서,
    메모리에 통신가능하게 연결된 프로세서와,
    네트워크 인터페이스와,
    상기 프로세서에 통신가능하게 연결된 평판도 클라이언트 엔진(reputation client engine)을 포함하되,
    상기 평판도 클라이언트 엔진은,
    실행가능한 오브젝트를 복수의 서브루틴들로 파싱(parsing)하고,
    실행 빈도 점수를 각 서브루틴에 할당하도록 동작가능한
    빈도-기반 분류 수행 장치.
  2. 제 1 항에 있어서,
    상기 평판도 클라이언트 엔진은,
    상기 네트워크 인터페이스를 통해서 상기 실행 빈도 점수를 제공하고,
    상기 네트워크 인터페이스를 통해서 상기 실행가능한 오브젝트에 대한 평판도 점수를 수신하도록 더 동작가능한
    평판도 클라이언트.
  3. 제 1 항에 있어서,
    상기 실행 빈도 점수를 각 서브루틴에 할당하는 것은 상기 실행가능한 오브젝트를 실행하고 상기 서브루틴들에 대한 호출들을 집계(tallying)하는 것을 더 포함하는
    평판도 클라이언트.
  4. 제 1 항에 있어서,
    상기 평판도 클라이언트 엔진은 격리된 환경(insulated environment)에서 상기 실행가능한 오브젝트를 실행하도록 더 동작가능한
    평판도 클라이언트.
  5. 제 1 항에 있어서,
    상기 실행가능한 오브젝트를 상기 복수의 서브루틴들로 파싱하는 것은 빈도 카운터들이 상기 서브루틴들 내에 삽입되도록 상기 실행가능한 오브젝트의 카피를 수정하는 것을 더 포함하는
    평판도 클라이언트.
  6. 실행가능한 인스트럭션들이 저장된 하나 이상의 비일시적 컴퓨터-판독가능한 매체로서,
    상기 실행가능한 인스트럭션들은 제 1 항 내지 제 5 중 어느 한 항의 평판도 클라이언트 엔진을 제공하도록 프로세서에 명령하도록 구성된
    비일시적 컴퓨터-판독가능한 매체.
  7. 평판도 서버로서,
    메모리에 통신가능하게 연결된 프로세서와,
    네트워크 인터페이스와,
    상기 프로세서에 통신가능하게 연결된 평판도 서버 엔진을 포함하며,
    상기 평판도 서버 엔진은,
    실행가능한 오브젝트를 복수의 서브루틴들로 파싱하고,
    평판도 점수를 각 서브루틴에 할당하도록 동작가능한
    평판도 서버.
  8. 제 7 항에 있어서,
    상기 평판도 서버 엔진은,
    상기 복수의 서브루틴들에 대한 평판도 점수들에 적어도 부분적으로 기초하여서 상기 실행가능한 오브젝트에 대한 평판도 점수를 컴퓨팅하고,
    상기 평판도 점수들 중 적어도 하나를 상기 네트워크 인터페이스를 통해서 복수의 평판도 클라이언트들에 분배하도록 더 동작가능한
    평판도 서버.
  9. 제 8 항에 있어서,
    상기 평판도 점수를 각 서브루틴에 할당하는 것은 실행 빈도 점수를 각 서브루틴에 할당하는 것을 더 포함하는
    평판도 서버.
  10. 제 8 항에 있어서,
    상기 실행가능한 오브젝트를 복수의 서브루틴들로 파싱하는 것은 상기 복수의 서브루틴들에 대한 데이터를 평판도 클라이언트로부터 수신하는 것을 더 포함하는
    평판도 서버.
  11. 제 8 항에 있어서,
    상기 평판도 점수를 각 서브루틴에 할당하는 것은 각 서브루틴에 대한 실행 빈도 점수를 평판도 클라이언트로부터 수신하는 것을 더 포함하는
    평판도 서버.
  12. 제 8 항에 있어서,
    상기 평판도 점수를 각 서브루틴에 할당하는 것은,
    각 서브루틴에 슈도-고유 핑거프린트(pseudo-unique fingerprint)를 할당하는 것과,
    상기 슈도-고유 핑거프린트를 사용하여 이와 매칭하는(matching) 서브루틴에 대한 빈도 또는 평판도 점수를 평판도 데이터베이스에게 질의하는 것을 더 포함하는
    평판도 서버.
  13. 제 8 항에 있어서,
    상기 평판도 점수를 각 서브루틴에 할당하는 것은 해당 서브루틴에 대한 실행 빈도 점수를 수신하는 것을 더 포함하며,
    상기 실행 빈도 점수는 복수의 실행가능한 오브젝트들에 걸친 실행 빈도를 포함하는
    평판도 서버.
  14. 제 8 항에 있어서,
    상기 평판도 서버 엔진은,
    격리된 환경에서 상기 실행가능한 오브젝트를 실행시키고,
    서브루틴들의 실행 빈도들에 기초하여 해당 서브루틴들에 빈도 점수들을 할당하도록 더 동작가능한
    평판도 서버.
  15. 제 8 항에 있어서,
    상기 평판도 점수를 각 서브루틴에 할당하는 것은 상기 실행가능한 오브젝트를 정적으로 분석하는 것을 더 포함하는
    평판도 서버.
  16. 제 8 항에 있어서,
    상기 평판도 서버 엔진은 낮은 평판도 점수를 갖는 실행가능한 오브젝트들은 추가 심화 분석을 받게 표시(flag)하도록 더 동작가능한
    평판도 서버.
  17. 제 8 항에 있어서,
    상기 실행가능한 오브젝트에 대한 평판도는 상기 복수의 서브루틴들의 평판도들에 적어도 부분적으로 기초하는
    평판도 서버.
  18. 제 8 항에 있어서,
    상기 평판도 서버 엔진은,
    상기 실행가능한 오브젝트가 높은 평판도 점수를 갖는다고 판정하고,
    상기 복수의 서브루틴들에 높은 평판도 점수를 할당하도록 더 동작가능한
    평판도 서버.
  19. 제 8 항에 있어서,
    상기 평판도 서버 엔진은,
    슈도-고유 핑거프린트를 적어도 하나의 서브루틴에 할당하고,
    해당 서브루틴에 대한 실행 빈도 점수를 복수의 실행가능한 오브젝트들에 걸쳐서 컴퓨팅하고,
    상기 평판도 점수를 상기 실행 빈도 점수와 상관시키도록 더 동작가능한
    평판도 서버.
  20. 제 19 항에 있어서,
    상기 슈도-고유 핑거프린트를 상기 서브루틴에 할당하는 것은 퍼지 핑거프린트(fuzzy fingerprint)를 컴퓨팅하는 것을 포함하는
    평판도 서버.
  21. 제 8 항에 있어서,
    상기 평판도 서버 엔진은 실행 빈도 점수가 제로인 서브루틴들을 보안 위험요소들로서 식별하도록 더 동작가능한
    평판도 서버.
  22. 제 8 항에 있어서,
    상기 평판도 서버 엔진은 낮은 실행 빈도 점수들을 갖는 서브루틴들을 의심이 가는 요소로서 식별하도록 더 동작가능한
    평판도 서버.
  23. 실행가능한 인스트럭션들이 저장된 적어도 하나의 비일시적 컴퓨터-판독가능한 저장 매체로서,
    상기 실행가능한 인스트럭션들은 제 8 항 내지 제 22 항 중 어느 한 항의 평판도 서버 엔진을 제공하도록 구성된
    비일시적 컴퓨터-판독가능한 저장 매체.
  24. 실행가능한 오브젝트의 평판도를 컴퓨팅하기 위한 방법으로서,
    상기 방법은 컴퓨팅 디바이스 상에서 실행가능하며,
    상기 방법은,
    실행가능한 오브젝트를 복수의 서브루틴들로 파싱하는 단계와,
    각 서브루틴에 실행 빈도 점수를 할당하는 단계와,
    상기 실행 빈도 점수에 적어도 부분적으로 기초하여 각 서브루틴에 평판도 점수를 할당하는 단계와,
    상기 서브루틴들의 평판도 점수들에 적어도 부분적으로 기초하여 상기 실행가능한 오브젝트에 평판도 점수를 할당하는 단계를 포함하는
    평판도 컴퓨팅 방법.
  25. 제 24 항에 있어서,
    상기 실행가능한 오브젝트에 평판도 점수를 할당하는 단계는,
    슈도-고유 식별자를 서브루틴에 할당하는 단계와,
    이전에 계산된 실행 빈도들을 갖는 슈도-고유 식별자와 동일한 슈도-고유 식별자를 갖는 서브루틴들을 찾는 단계와,
    상기 서브루틴의 실행 빈도들을 취합하는 단계를 더 포함하는
    평판도 컴퓨팅 방법.
  26. 평판도 서버 엔진을 제공하는 방법으로서,
    실행가능한 오브젝트를 복수의 서브루틴들로 파싱하는 단계와,
    평판도 점수를 각 서브루틴에 할당하는 단계를 포함하는
    평판도 서버 엔진을 제공하는 방법.
  27. 제 26 항에 있어서,
    상기 실행가능한 오브젝트에 평판도를 할당하는 단계를 더 포함하며,
    상기 실행가능한 오브젝트에 대한 평판도는 상기 서브루틴들의 평판도들에 적어도 부분적으로 기초하는
    평판도 서버 엔진을 제공하는 방법.
  28. 제 27 항에 있어서,
    낮은 평판도 점수들을 갖는 실행가능한 오브젝트들은 추가 심화 분석을 받도록 표시하는(flagging) 단계를 더 포함하는
    평판도 서버 엔진을 제공하는 방법.
  29. 제 26 항에 있어서,
    상기 평판도 점수를 각 서브루틴에 할당하는 단계는 실행 빈도 점수를 각 서브루틴에 할당하는 단계를 포함하는
    평판도 서버 엔진을 제공하는 방법.
  30. 제 26 항에 있어서,
    평판도 점수를 각 서브루틴에 할당하도록 구성된 인스트럭션들은,
    상기 실행가능한 오브젝트가 높은 평판도 점수를 갖는다고 판정하고,
    상기 서브루틴들에 높은 평판도 점수를 할당하도록 더 구성된
    평판도 서버 엔진을 제공하는 방법.
  31. 제 26 항에 있어서,
    평판도 점수를 각 서브루틴에 할당하도록 구성된 인스트럭션들은,
    슈도-고유 핑거프린트를 서브루틴에 할당하고,
    상기 서브루틴에 대한 실행 빈도 점수를 복수의 실행가능한 오브젝트들에 걸쳐서 컴퓨팅하고,
    평판도 점수를 실행 빈도 점수와 상관시키도록 더 구성된
    평판도 서버 엔진을 제공하는 방법.
  32. 제 31 항에 있어서,
    상기 슈도-고유 핑거프린트를 상기 서브루틴에 할당하는 단계는 퍼지 핑거프린트를 컴퓨팅하는 단계를 포함하는
    평판도 서버 엔진을 제공하는 방법.
  33. 제 26 항에 있어서,
    낮은 평판도 점수들을 갖는 서브루틴들은 추가 심화 분석을 받도록 표시하는 단계를 더 포함하는
    평판도 서버 엔진을 제공하는 방법.
  34. 제 26 항에 있어서,
    실행 빈도 점수를 각 서브루틴에 할당하는 단계와,
    실행 빈도 점수들이 제로인 서브루틴들을 보안 위험 요소들로서 식별하는 단계를 더 포함하는
    평판도 서버 엔진을 제공하는 방법.
  35. 제 34 항에 있어서,
    낮은 실행 빈도 점수들을 갖는 서브루틴들을 의심이 가는 요소로서 식별하는 단계를 더 포함하는
    평판도 서버 엔진을 제공하는 방법.
  36. 제 26 항에 있어서,
    격리된 환경에서 상기 실행가능한 오브젝트를 실행하는 단계를 더 포함하는
    평판도 서버 엔진을 제공하는 방법.
  37. 제 26 항 내지 제 36 항 중 어느 한 항에 따른 방법을 수행하기 위한 수단을 포함하는 장치.
  38. 제 37 항에 있어서,
    상기 수단은 프로세서 및 메모리를 포함하는
    장치.
  39. 제 38 항에 있어서,
    상기 메모리는 머신-판독가능한 인스트럭션들을 포함하며,
    상기 머신-판독가능한 인스트럭션들은 실행될 때 상기 장치로 하여금 제 26 항 내지 제 36 항 중 어느 한 항에 따른 방법을 수행하게 하는
    장치.
  40. 제 38 항에 있어서,
    상기 장치는 컴퓨팅 시스템인
    장치.
  41. 실행가능한 인스트럭션들이 저장된 하나 이상의 비일시적 컴퓨터-판독가능한 매체로서,
    상기 실행가능한 인스트럭션들은 프로세서가 제 26 항 내지 제 36 항 중 어느 한 항에 따른 방법을 수행하도록 상기 프로세서에 명령을 하도록 구성된
    비일시적 컴퓨터-판독가능한 매체.
  42. 컴퓨팅 디바이스로서,
    실행가능한 오브젝트를 복수의 서브루틴들로 파싱하는 수단과,
    각 서브루틴에 실행 빈도 점수를 할당하는 수단과,
    상기 실행 빈도 점수에 적어도 부분적으로 기초하여 각 서브루틴에 평판도 점수를 할당하는 수단과,
    상기 서브루틴들의 평판도 점수들에 적어도 부분적으로 기초하여 상기 실행가능한 오브젝트에 평판도 점수를 할당하는 수단을 포함하는
    컴퓨팅 디바이스.
  43. 제 42 항에 있어서,
    상기 실행가능한 오브젝트에 평판도 점수를 할당하는 수단은,
    슈도-고유 식별자를 서브루틴에 할당하는 수단과,
    이전에 계산된 실행 빈도들을 갖는 슈도-고유 식별자와 동일한 슈도-고유 식별자를 갖는 서브루틴들을 찾는 수단과,
    상기 서브루틴의 실행 빈도들을 취합하는 수단을 더 포함하는
    컴퓨팅 디바이스.
  44. 제 42 항 또는 제 43 항에 있어서,
    상기 수단들 각각은 비일시적 컴퓨터-판독가능한 매체 상에 저장된 실행가능한 인스트럭션들을 포함하는
    컴퓨팅 디바이스.
KR1020167014082A 2013-12-27 2013-12-27 빈도-기반 평판도 KR101846757B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/077935 WO2015099756A1 (en) 2013-12-27 2013-12-27 Frequency-based reputation

Publications (2)

Publication Number Publication Date
KR20160077168A true KR20160077168A (ko) 2016-07-01
KR101846757B1 KR101846757B1 (ko) 2018-05-28

Family

ID=53479414

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167014082A KR101846757B1 (ko) 2013-12-27 2013-12-27 빈도-기반 평판도

Country Status (6)

Country Link
US (1) US10044739B2 (ko)
EP (1) EP3087525B1 (ko)
JP (1) JP6326502B2 (ko)
KR (1) KR101846757B1 (ko)
CN (1) CN105793863A (ko)
WO (1) WO2015099756A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015099756A1 (en) 2013-12-27 2015-07-02 Mcafee, Inc. Frequency-based reputation
US10503897B1 (en) * 2016-07-13 2019-12-10 Cybereason Detecting and stopping ransomware
US10372909B2 (en) * 2016-08-19 2019-08-06 Hewlett Packard Enterprise Development Lp Determining whether process is infected with malware
CN106411871A (zh) * 2016-09-20 2017-02-15 东软集团股份有限公司 构建应用信誉库的方法及装置
US10783246B2 (en) * 2017-01-31 2020-09-22 Hewlett Packard Enterprise Development Lp Comparing structural information of a snapshot of system memory
US11487868B2 (en) * 2017-08-01 2022-11-01 Pc Matic, Inc. System, method, and apparatus for computer security
US10873588B2 (en) * 2017-08-01 2020-12-22 Pc Matic, Inc. System, method, and apparatus for computer security
US10867039B2 (en) * 2017-10-19 2020-12-15 AO Kaspersky Lab System and method of detecting a malicious file
US10992701B2 (en) * 2018-11-20 2021-04-27 Bank Of America Corporation Systems and methods for dynamic targeting of secure repurposed cross-channel electronic communications
US11381597B2 (en) * 2019-07-19 2022-07-05 Mcafee, Llc Expedition of web phishing detection for suspicious sites
WO2021024476A1 (ja) * 2019-08-08 2021-02-11 日本電気株式会社 ソフトウェア解析装置、ソフトウェア解析方法及びコンピュータ可読媒体
US11411992B2 (en) 2019-11-07 2022-08-09 Mcafee, Llc Visual detection of phishing websites via headless browser
US20240037215A1 (en) * 2020-08-19 2024-02-01 Nec Corporation Program analysis device, program analysis method, and computer-readable medium

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073142A (en) 1997-06-23 2000-06-06 Park City Group Automated post office based rule analysis of e-mail messages and other data objects for controlled distribution in network environments
US5987610A (en) 1998-02-12 1999-11-16 Ameritech Corporation Computer virus screening methods and systems
US6460050B1 (en) 1999-12-22 2002-10-01 Mark Raymond Pace Distributed content identification system
US6901519B1 (en) 2000-06-22 2005-05-31 Infobahn, Inc. E-mail virus protection system and method
JP3992136B2 (ja) 2001-12-17 2007-10-17 学校法人金沢工業大学 ウイルス検出方法および装置
GB2396227B (en) * 2002-12-12 2006-02-08 Messagelabs Ltd Method of and system for heuristically detecting viruses in executable code
US8010685B2 (en) * 2004-11-09 2011-08-30 Cisco Technology, Inc. Method and apparatus for content classification
US8312536B2 (en) * 2006-12-29 2012-11-13 Symantec Corporation Hygiene-based computer security
US8219980B2 (en) * 2007-01-10 2012-07-10 International Business Machines Corporation Identifying a potential breakpoint location in a code path in a computer program based upon the frequency of execution of the code path as identified in collected profile data
US8185930B2 (en) * 2007-11-06 2012-05-22 Mcafee, Inc. Adjusting filter or classification control settings
US8301605B2 (en) * 2007-12-17 2012-10-30 International Business Machines Corporation Managing maintenance tasks for computer programs
US8732825B2 (en) * 2008-05-28 2014-05-20 Symantec Corporation Intelligent hashes for centralized malware detection
US8413239B2 (en) * 2009-02-22 2013-04-02 Zscaler, Inc. Web security via response injection
JP5585303B2 (ja) 2010-08-25 2014-09-10 日本電気株式会社 ライブラリ実行管理システム、ライブラリ実行管理方法およびプログラム
US9235586B2 (en) 2010-09-13 2016-01-12 Microsoft Technology Licensing, Llc Reputation checking obtained files
KR101060639B1 (ko) 2010-12-21 2011-08-31 한국인터넷진흥원 자바스크립트 난독화 강도 분석을 통한 악성 의심 웹사이트 탐지 시스템 및 그 탐지방법
US8332415B1 (en) * 2011-03-16 2012-12-11 Google Inc. Determining spam in information collected by a source
US20130097659A1 (en) * 2011-10-17 2013-04-18 Mcafee, Inc. System and method for whitelisting applications in a mobile network environment
US9058486B2 (en) 2011-10-18 2015-06-16 Mcafee, Inc. User behavioral risk assessment
US20130304900A1 (en) * 2012-05-14 2013-11-14 Sap Ag Reputation management using evolving reputation scores
US20140095778A1 (en) * 2012-09-28 2014-04-03 Jaewoong Chung Methods, systems and apparatus to cache code in non-volatile memory
WO2015099756A1 (en) 2013-12-27 2015-07-02 Mcafee, Inc. Frequency-based reputation

Also Published As

Publication number Publication date
JP2017505947A (ja) 2017-02-23
KR101846757B1 (ko) 2018-05-28
WO2015099756A1 (en) 2015-07-02
US10044739B2 (en) 2018-08-07
EP3087525B1 (en) 2020-07-15
JP6326502B2 (ja) 2018-05-16
EP3087525A4 (en) 2017-05-17
CN105793863A (zh) 2016-07-20
EP3087525A1 (en) 2016-11-02
US20170006049A1 (en) 2017-01-05

Similar Documents

Publication Publication Date Title
KR101846757B1 (ko) 빈도-기반 평판도
Or-Meir et al. Dynamic malware analysis in the modern era—A state of the art survey
US20240098097A1 (en) Secure over-the-air updates
Abawajy et al. Identifying cyber threats to mobile-IoT applications in edge computing paradigm
US11089038B2 (en) Safe sharing of sensitive data
US10050993B2 (en) Non-invasive whitelisting
US10193927B2 (en) Method of instruction location randomization (ILR) and related system
JP6122555B2 (ja) 危殆化されている秘密鍵を識別するためのシステム及び方法
CN107408176A (zh) 恶意对象的执行剖析检测
EP3198505B1 (en) Cross-view malware detection
Wang et al. Beyond the virus: A first look at coronavirus-themed mobile malware
Akram et al. How to build a vulnerability benchmark to overcome cyber security attacks
Wang et al. Beyond the virus: a first look at coronavirus-themed Android malware
CN111177720A (zh) 基于大数据生成威胁情报的方法、装置及可读存储介质
CN106687978B (zh) 用于对栈破坏利用的抑制的计算设备和方法
Nappa et al. Scramblesuit: An effective timing side-channels framework for malware sandbox evasion 1
Olowoyeye Evaluating Open Source Malware Sandboxes with Linux malware
Namanya A Heuristic Featured Based Quantification Framework for Efficient Malware Detection. Measuring the Malicious intent of a file using anomaly probabilistic scoring and evidence combinational theory with fuzzy hashing for malware detection in Portable Executable files

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant