KR20150018626A - 소프트웨어 보호 메커니즘 - Google Patents

소프트웨어 보호 메커니즘 Download PDF

Info

Publication number
KR20150018626A
KR20150018626A KR1020157000257A KR20157000257A KR20150018626A KR 20150018626 A KR20150018626 A KR 20150018626A KR 1020157000257 A KR1020157000257 A KR 1020157000257A KR 20157000257 A KR20157000257 A KR 20157000257A KR 20150018626 A KR20150018626 A KR 20150018626A
Authority
KR
South Korea
Prior art keywords
behavior
software
binary program
monitored
analysis
Prior art date
Application number
KR1020157000257A
Other languages
English (en)
Other versions
KR101657191B1 (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 KR20150018626A publication Critical patent/KR20150018626A/ko
Application granted granted Critical
Publication of KR101657191B1 publication Critical patent/KR101657191B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Abstract

멀웨어 활동을 감지하기 위한 기법이 설명된다. 일부 예시에서, 멀웨어에 대하여 실행하는 소프트웨어를 모니터링하기 위한 방법은 실행 동안 소프트웨어의 행동을 모니터링하는 단계를 포함할 수 있다. 모니터링된 행동 및 소프트웨어의 분석으로부터 도출된 대응하는 예측된 행동의 비교에 기초하여, 미리 정해진 트리거에 따라 모니터링된 행동이 예측된 행동으로부터 벗어난다고 결정될 수 있다. 적절한 동작이 응답하여 개시될 수 있다.

Description

소프트웨어 보호 메커니즘 {SOFTWARE PROTECTION MECHANISM}
손상된 프로그램(compromised program) 및 멀웨어(malware)의 검출은 컴퓨터 시대 전반에 걸친 관심사였다. 인터넷과 같은 통신 네트워크의 성장, 데이터 상호 교환의 증가하는 양 및 클라우드 컴퓨팅의 최근 성장으로, 통신 또는 파일 교환을 통한 서버 및 컴퓨터의 감염은 점점 더 의미 있는 관심사다. 컴퓨터 및 서버의 감염은 다양한 형식을 가질 수 있지만, 보통 컴퓨터 바이러스, 인터넷 또는 기타 네트워크 웜(worm), 트로이 목마 프로그램(Trojan program) 및 다른 형식의 악성 코드에 관련된다.
악성 코드에 의한 컴퓨터의 감염은 클라우드 컴퓨팅에서 의미 있는 관심사다. 클라우드 컴퓨팅은 컴퓨팅 리소스의 공유 풀로의 온디맨드 네트워크 액세스(on-demand network access)를 가능하게 하기 위한 컴퓨팅 환경을 지칭한다. 많은 클라우드 컴퓨팅 서비스는 가상화된 리소스를 수반하며, 가상화된 리소스를 관리하는 것과 연관된 소프트웨어는 멀웨어의 좋은 타깃일 수 있다. 가상 머신 모니터(VMM)와 같은 프로그램은 클라우드 컴퓨팅 호스트 서버에서 중요한 소프트웨어 계층이며, 따라서, 게스트 가상 머신을 획득, 제어 및 조작하거나 부당한 가상 머신을 개시하려고 하는 온라인 공격자에 의한 코드 변경 및 멀웨어를 위한 좋은 타깃일 수 있다. 잠재적인 고객은 그러한 손상된 소프트웨어와 연관된 위험으로 인하여 클라우드 서비스를 이용하기를 꺼려할 수 있다. 클라우드 호스팅 소프트웨어, 특히, VMM과 같은 그 중요한 컴포넌트를 멀웨어 및 코드 변경으로부터 보다 안전하게 하기 위한 추가적인 해결책이 요구된다.
컴퓨터 멀웨어를 검출하기 위한 다양한 기법이 여기에서 개시된다. 멀웨어 활동을 검출하도록 소프트웨어 행동(behavior)을 모니터링하기 위한 방법 및 시스템이 개시된다. 그러한 방법 및 시스템은, 예컨대, 서버의 운영 체제와 상호 작용하고 잠재적 악성 행동에 대하여 모니터링 함으로써 VMM 및 클라우드 서버의 다른 소프트웨어 컴포넌트에서의 멀웨어 활동을 검출하는 데 이용될 수 있다.
일부 실시예에서, 멀웨어에 대하여 실행하는 소프트웨어를 모니터링하기 위한 방법은 실행 동안의 소프트웨어의 행동을 모니터링하는 단계를 포함할 수 있다. 모니터링된 행동 및 소프트웨어의 분석으로부터 얻어진 대응하는 예측된 행동의 비교에 기초하여, 모니터링된 행동이 미리 정해진 트리거(trigger)에 따라 예측된 행동으로부터 벗어난다고 결정될 수 있다. 적절한 동작이 응답하여 개시될 수 있다.
이상의 요약은 단순히 예시적인 것으로서 어떠한 방식으로든 제한적으로 의도된 것이 아니다. 이하의 상세한 설명과 도면을 참조함으로써, 상기 설명된 예시적인 양태들, 실시예들, 그리고 특징들에 더하여, 추가적인 양태들, 실시예들, 그리고 특징들 또한 명확해질 것이다.
본 개시의 전술한 특징 및 다른 특징은 첨부 도면과 결합하여, 다음의 설명 및 첨부된 청구범위로부터 더욱 충분히 명백해질 것이다. 이들 도면은 본 개시에 따른 단지 몇 개의 실시예를 묘사할 뿐이고, 따라서, 본 개시의 범위를 제한하는 것으로 고려되어서는 안 될 것임을 이해하면서, 본 개시는 첨부 도면의 사용을 통해 더 구체적이고 상세하게 설명될 것이다.
도 1은 본 개시의 양상이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시한다.
도 2는 본 개시의 양상이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시한다.
도 3은 멀웨어 모니터링을 위한 예시적인 시스템을 도시한다.
도 4는 실행하는 소프트웨어를 모니터링하기 위한 동작적인 절차의 예시를 도시한다.
도 5는 실행하는 소프트웨어를 모니터링하기 위한 동작적인 절차의 예시를 도시한다.
도 6은 본 개시의 양상이 구현될 수 있는 예시적인 컴퓨팅 시스템을 도시한다.
이하의 상세한 설명에서 본 개시의 일부를 이루는 첨부된 도면이 참조된다. 문맥에서 달리 지시하고 있지 않은 한, 통상적으로, 도면에서 유사한 부호는 유사한 컴포넌트를 나타낸다. 상세한 설명, 도면, 그리고 청구범위에 설명되는 예시적인 실시예는 제한적으로 여겨지지 않는다. 본 개시에서 제시되는 대상의 범위 또는 사상에서 벗어나지 않으면서도 다른 실시예가 이용되거나, 다른 변경이 이루어질 수 있다. 여기에서 일반적으로 설명되고, 도면에 도시되는 본 개시의 양태는 다양한 다른 구성으로 배열, 대체, 조합, 분리, 및 설계될 수 있음과 이 모두가 여기에서 명시적으로 고려됨이 기꺼이 이해될 것이다.
본 개시는 다양한 태양의 예시로서 의도된 본 출원에 기술된 특정 실시예들에 제한되지 않을 것이다. 당업자에게 명백할 바와 같이, 많은 수정과 변형이 그 사상과 범위를 벗어나지 않으면서 이루어질 수 있다. 여기에 열거된 것들에 더하여, 본 개시의 범위 안에서 기능적으로 균등한 방법과 장치가 위의 설명으로부터 당업자에게 명백할 것이다. 그러한 수정과 변형은 첨부된 청구항의 범위에 들어가도록 의도된 것이다. 본 개시는 첨부된 청구항의 용어에 의해서만, 그러한 청구항에 부여된 균등물의 전 범위와 함께, 제한될 것이다. 본 개시가 물론 다양할 수 있는 특정 방법, 시약, 합성 구성 또는 생물학적 시스템에 제한되지 않는 것으로 이해될 것이다. 또한, 여기에서 사용된 용어는 단지 특정 실시예들을 기술하기 위한 목적이고, 제한하는 것으로 의도되지 않음이 이해될 것이다.
예시적인 실시예에서, 여기에서 기술된 임의의 동작, 처리 등은 컴퓨터-판독가능 매체에 저장된 컴퓨터-판독가능 명령어로서 구현될 수 있다. 컴퓨터-판독가능 명령어는 모바일 유닛, 네트워크 요소, 및/또는 임의의 다른 컴퓨팅 장치의 프로세서에 의해 실행될 수 있다.
시스템 양상들의 하드웨어와 소프트웨어 구현 사이에는 구별이 거의 없다. 하드웨어 또는 소프트웨어의 사용은 일반적으로 (그러나 어떤 맥락에서 하드웨어 및 소프트웨어 사이의 선택이 중요하게 될 수 있다는 점에서 항상 그런 것은 아니지만) 비용 대비 효율의 트레이드오프(tradeoff)를 나타내는 설계상 선택(design choice)이다. 여기에서 기술된 프로세스 및/또는 시스템 및/또는 다른 기술들이 영향 받을 수 있는 다양한 수단(vehicles)(예를 들어, 하드웨어, 소프트웨어 및/또는 펌웨어)이 있으며, 선호되는 수단은 프로세스 및/또는 시스템 및/또는 다른 기술이 사용되는 맥락(context)에 따라 변경될 것이다. 예컨대, 구현자가 속도 및 정확도가 주요하다고 결정하면, 구현자는 주로 하드웨어 및/또는 펌웨어 수단을 선택할 수 있거나; 유연성이 주요하면, 구현자는 주로 소프트웨어 구현을 선택할 수 있거나; 또는 대안적으로, 구현자는 하드웨어, 소프트웨어 및/또는 펌웨어의 일부 조합을 선택할 수 있다.
당업자라면, 여기에서 기술된 이러한 및 다른 프로세스 및 방법에 대해, 프로세스 및 방법에서 수행되는 기능이 상이한 순서로 구현될 수 있음을 이해할 것이다. 또한, 개략적인 단계 및 동작은 단지 예시로서 제공된 것이고, 이러한 단계 및 동작의 일부는, 개시된 실시예의 본질을 손상시키지 않으면서, 선택적일 수 있거나, 더 적은 단계 및 동작으로 조합될 수 있거나, 추가적인 단계 및 동작으로 확장될 수 있다.
도 1은 본 개시의 양상이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시한다. 특히, 도 1 및 다음의 설명은 여기에서 설명된 실시예가 구현될 수 있는 예시적인 가상 컴퓨팅 환경의 간략하고, 일반적인 설명을 제공하도록 의도된다. 도 1을 참조하면, 컴퓨팅 시스템(100)은 컴퓨터 시스템(100)의 하드웨어로의 액세스를 제어 및 중재하도록 구성될 수 있는 하이퍼바이저(150)를 포함할 수 있다. 하이퍼바이저(150)는 예컨대, 차일드 파티션(child partition) 1 내지 차일드 파티션 N과 같은 파티션이라 불리는 실행 환경을 생성할 수 있다. 각 차일드 파티션은 하이퍼바이저(150)의 제어 하에서 하드웨어 리소스의 세트로 매핑될 수 있다. 도 1은 또한, 가상화 서비스(virtualization service)를 이용하여 차일드 파티션 1 내지 차일드 파티션 N에서 실행하는 게스트 운영 체제에 리소스를 제공하도록 구성될 수 있는 페어런트 파티션(parent partition)(110)을 도시한다. 예컨대, 장치 드라이버(155)와 함께 가상화 서비스 프로바이더(VSP)(152)는 인터페이스를 하드웨어 리소스에 멀티플렉싱하는 데 이용될 수 있다. 각각의 차일드 파티션 1 내지 N은 게스트 운영 체제(120 내지 122)가 스레드(thread)를 관리 및 스케줄링하여 거기에서 실행할 수 있는 가상 프로세서(130 내지 132)와 같은 하나 이상의 가상 프로세서를 포함할 수 있다. 일반적으로, 가상 프로세서(130 내지 132)는 물리적 프로세서의 특정 아키텍처와의 표현을 제공하는 연관된 상태 정보 및 실행가능 명령어를 포함할 수 있다. 본 예시에서의 가상 프로세서(130 내지 132)는, 가상 프로세서(130 내지 132)를 유효하게 하는 명령어가 논리적 프로세서(102) 및 저장 장치(106), 네트워크 인터페이스 카드(NIC)(114), 그래픽 처리 유닛(112) 및 랜덤 액세스 메모리(RAM)(104)과 같은 컴퓨터 시스템(100)의 다른 하드웨어 리소스에 의해 실행 및/또는 여기로 매핑될 수 있도록, 컴퓨터 시스템(100)의 논리 프로세서(102)에 매핑될 수 있다. 따라서, 이러한 예시적인 실시예에서, 복수의 가상 프로세서는 동시에 실행하는 한편, 예컨대, 다른 논리 프로세서는 가상화 시스템 명령어를 실행하고 있다. 일반적으로, 그리고 도면에 의해 도시된 바와 같이, 가상 프로세서 및 메모리의 조합이 파티션 내 가상 머신(140 내지 142)와 같은 가상 머신으로 고려될 수 있다.
일반적으로, 게스트 운영 체제(120 내지 122)는 예컨대, Microsoft
Figure pct00001
, Apple
Figure pct00002
, 공개 소스 커뮤니티 등으로부터의 운영 체제와 같은 임의의 운영 체제를 포함할 수 있다. 게스트 운영 체제는 사용자 모드 및 커널 모드(kernel mode)를 포함하는 다양한 모드에서 동작할 수 있고, 스케줄러, 메모리, 관리자 등을 포함할 수 있는 커널을 가질 수 있다. 커널 모드는 특권 프로세서 명령어 (privileged processor instruction)에 액세스하는 것을 승인하는 논리 프로세서(102)에서의 실행 모드를 포함할 수 있다. 각 게스트 운영 체제(120 내지 122)는 터미널 서버, 전자 상거래 서버, 이메일 서버 등과 같은 거기에 저장된 어플리케이션을 가질 수 있는 파일 시스템 또는 게스트 운영 체제 자신과 연관될 수 있다. 게스트 운영 체제(120 내지 122)는 가상 프로세서(130 내지 132) 상에서 실행하도록 스레드를 스케줄링 할 수 있고 그러한 어플리케이션의 인스턴스가 유효하게 될 수 있다.
도 2는 본 개시의 양상이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시한다. 특히, 도 2는 컴퓨팅 리소스를 고객에게 제공하는 데이터 센터(208)를 포함하는 운영 체제(200)를 도시한다. 데이터 센터(208)에 의해 제공된 컴퓨팅 리소스는 데이터 처리 리소스 및 데이터 저장 리소스와 같은 다양한 유형의 리소스를 포함할 수 있다. 일부 실시예에서, 데이터 처리 리소스는 도 1과 함께 상술된 가상 머신(140 또는 142)와 같은 하나 이상의 가상 머신에 의해 제공될 수 있다. 가상 머신은 어플리케이션을 실행하도록 구성될 수 있다.
데이터 센터(208)의 고객은 데이터 센터(208)에 의해 제공된 컴퓨팅 리소스를 네트워크(206)를 통하여 액세스할 수 있다. 근거리 네트워크(LAN), 인터넷 또는 데이터 센터(208)를 원격의 고객에 연결하는 기술 분야에서 알려진 임의의 다른 네트워킹 토폴로지가 이용될 수 있다는 점이 인정되어야 한다. 그러한 네트워크의 조합이 또한 이용될 수 있다는 점이 또한 인정되어야 한다.
사용자 컴퓨터(204)는 고객 또는 데이터 센터(208)의 다른 고객에 의해 이용된 컴퓨터일 수 있다. 예컨대, 사용자 컴퓨터(204)는 서버 컴퓨터, 데스크탑 또는 랩탑 개인 컴퓨터, 씬 클라이언트(thin client), 태블릿 컴퓨터, 무선 전화기, 개인 정보 단말기(PDA), 전자책(e-reader), 게임 콘솔 또는 데이터 센터(208)를 액세스할 수 있는 임의의 다른 컴퓨팅 장치일 수 있다.
클라우드 컴퓨팅은 일반적으로, 상술한 바와 같은 컴퓨팅 리소스(예컨대, 어플리케이션, 서버 및 저장 장치)의 공유 풀로의 온디맨드 네트워크 액세스를 할 수 있기 위한 컴퓨팅 환경에 관련된다. 많은 클라우드 컴퓨팅 서비스는 상술한 바와 같이 가상화된 리소스를 수반하고, 사용자가, 마치 그들이 그 자신의 컴퓨터에 국부적으로 설치된 프로그램인 것처럼, 웹 브라우저를 통하여 액세스 및 사용할 수 있는 웹 기반 툴 또는 어플리케이션의 형식을 취할 수 있다.
가상 머신 관리자 또는 가상 머신 모니터(VMM)는 복수의 게스트 운영 체제가 호스트 컴퓨터 상에서 동시에 실행하는 것을 허용하는 가상화 컴포넌트다. 보통의 VMM은 가상화 서비스를 제공하고 하나 이상의 가상 머신의 추상화(abstraction)를 제공하는 기초적인 하드웨어의 리소스를 관리할 수 있다. 가상 머신은 완전한 운영 체제 및 어플리케이션의 세트를 실행할 수 있다. 게스트 OS 및 어플리케이션을 포함하는 게스트 소프트웨어는 사용자 모드에서 실행할 수 있고, 보통 VMM 만이 특권 레벨(예컨대, 커널 모드)에서 실행할 수 있다. VMM은 하드웨어 레벨 추상화를 에뮬레이팅된 하드웨어를 이용하여 게스트 소프트웨어로 이출(export)할 수 있다. 게스트 운영 체제는, (예컨대, DMA, 명령어 내/외의) 실제 하드웨어로 할 바와 동일한 방식으로 가상 하드웨어와 상호작용할 수 있고, 이러한 상호 작용은 VMM에 의해 트랩(trap)될 수 있고 소프트웨어에서 에뮬레이팅될 수 있다. 이러한 에뮬레이션은 게스트 운영 체제가 VMM 계층에서 시스템 상의 제어를 유지하는 한편 변경(modification) 없이 실행하는 것을 허용한다.
VMM은 컴퓨터의 하드웨어를 멀티플렉싱하고 각각 개별 운영 체제 및 그 어플리케이션을 실행할 수 있는 다수의 구별되는 가상 컴퓨터의 환상(illusion)을 제공함으로써 하나의 컴퓨터 상에 다수의 OS를 지원할 수 있다. VMM은 방향 수정을 통하여 각각의 가상 컴퓨터의 리소스를 구분할 수 있다. 예컨대, VMM은 두 개의 가상 디스크를 공유 물리 디스크의 상이한 섹터에 매핑할 수 있고, VMM은 각각의 가상 머신의 물리적 메모리 공간을 실제 머신의 메모리 내 상이한 페이지에 매핑할 수 있다.
컴퓨터의 하드웨어를 멀티플렉싱하는 것에 더하여, VMM은 또한 서비스를 기존의 시스템에 부가하기 위한 플랫폼을 제공할 수 있다. 예컨대, VMM은 운영 체제 및 시스템 구성을 디버깅하는 데 이용될 수 있고, 라이브 머신(live machine)을 이송할 수 있고, 침입을 검출 또는 방지할 수 있고 코드 무결성(code integrity)을 입증할 수 있다. 이러한 가상화 시스템은 보통 게스트 외부에 구현되며 이들은 게스트에 영향 주는 것을 피하도록 제공하고 있다.
클라우드 컴퓨팅 서비스에서 호스트 서버에서 중요한 소프트웨어 계층일 수 있는 주어진 VMM은 종종 게스트 가상 머신을 획득, 제어 및 조작하거나 특정 전용의 해롭거나 사기적인 가상 머신을 개시하려는 온라인 공격자에 의한 코드 변경 및 멀웨어를 위한 타깃이 될 수 있다. VMM이 멀웨어 또는 코드 변경에 의해 손상되는 경우, 타깃이 된 시스템은, 얼마나 완전히 머신이 가상화되었느냐에 따라, 그 메모리 공간, 디스크 공간 또는 실행에 있어 차이가 적거나 없다고 볼 수 있다. 손상된 VMM은 또한 멀웨어의 상태 및 이벤트를 타깃 시스템으로부터 분리할 수 있고, 타깃 시스템 내 소프트웨어는 손상된 소프트웨어를 보거나 변경할 수 없을 수 있다. 또한, 손상된 VMM은 키 누름(keystroke), 네트워크 패킷, 디스크 상태 및 메모리 상태와 같은 타깃 시스템 내 상태 및 이벤트를 볼 수 있으며, 손상된 VMM이 운영 체제 및 어플리케이션에 나타난 가상 하드웨어를 제어할 수 있으므로, - 그 자신의 동작이 관찰되지 않으면서 - 이러한 상태 및 이벤트를 관찰하고 변경할 수 있다.
손상된 VMM은 악성 서비스를 개발하기 위한 편리한 플랫폼으로서 이용될 수 있다. 악성 서비스는 타깃 시스템에서 실행하는 침입 검출 소프트웨어에 보이지 않은 채로 남아있는 한편 개별 범용 운영 체제에서 실행하는 편의성 모두로부터 이익을 얻을 수 있다.
손상된 프로그램 또는 멀웨어의 검출은 컴퓨팅 및 컴퓨터의 시대 전반에 걸쳐 관삼사가 되어왔다. 인터넷과 같은 통신 네트워크의 성장 및 클라우드 컴퓨팅의 최근 성장을 포함하는 데이터의 상호 교환의 증가로, 통신 또는 파일 교환을 통한 컴퓨터 및 서버의 감염은 점점 더 의미 있는 고려사항이다. 감염은 다양한 형식을 취하지만, 보통 컴퓨터 바이러스, 인터넷 또는 다른 네트워크 웜, 트로이 목마 프로그램 및 악성 코드의 다른 형태에 관련된다.
인터넷 웜 및 트로이 목마를 포함하는 컴퓨터 멀웨어를 검출하기 위한 하나의 기법은 시그니처 스캐닝이다. 시그니처 스캐닝 시스템은 알려진 악성 코드로부터 추출된 샘플 코드 패턴을 이용할 수 있고 프로그램 코드 내 이러한 패턴의 발생에 대한 스캐닝을 할 수 있다. 시그니처 분석의 하나의 한계는 방법이 스캐닝 기법이며, 미션 크리티컬(mission ciritical) 또는 민감한 데이터 클라이언트에 대하여 요구될 수 있는, 실시간으로의 멀웨어의 검출을 허용하지 않을 수 있다는 점이다.
또한, 시그니처 스캐닝 방법은 멀웨어의 선행 지식을 상정하며 따라서 알려진 악성 코드의 검출만을 허용할 수 있다. 즉, 알려진 악성 코드의 저장된 샘플 시그니처와 매칭하는 코드만이 식별될 수 있다. 사전에 식별되지 않은 바이러스 또는 악성 코드 및 시그니처 데이터베이스로의 최근 업데이트 이후에 만들어진 바이러스 또는 악성 코드는 검출되지 않을 것이다. 따라서, 새로이 만들어진 바이러스는 이러한 방법에 의해 검출되지 않을 수 있다. 또한, 스캐닝 방법은 시그니처 데이터베이스에 포함되고 이전에 추출된 시그니처가 겹쳐 쓰기된 경우 악성 코드를 검출하지 않을 수 있다.
시그니처 분석 기법은 또한 시그니처가 예측된 방식으로 코드에 정렬되지 않은 경우 멀웨어의 존재를 식별하는데 실패할 수 있다. 또한, 멀웨어의 프로그래머(author)가 조작 부호 대체(op-code substitution)에 의해 또는 더미 또는 랜덤 코드를 멀웨어 코드에 삽입함으로써 바이러스의 정체를 모호하게 할 수 있다. 그 페이로드(payload)를 전파 및 전달하도록 바이러스의 기능을 약화시키지 않으면서 시그니처 스캐닝 프로그램에 의해 검출 가능하지 않은 멀웨어를 렌더링하기에 충분한 정도로 멀웨어의 시그니처를 바꾸는 넌센스 코드가 삽입될 수 있다. 또한, 시그니처 스캐닝은 악성 프로그램이 양호한 어플리케이션 프로그램과 유사한 코드 구조를 가지는 경우 실패할 수 있다. 그러한 경우에, 시그니처 스캐너는 많은 수의 긍정 오류(false positive)를 생성할 수 있거나 시그니처가 버려진 경우 악성 코드를 검출하는 데 실패할 수 있다.
다른 멀웨어 검출 전략은 무결성 검사(integrity checking)이다. 무결성 검사 시스템은 보통 알려지고 양호한 어플리케이션 프로그램 코드로부터 코드 샘플을 추출함으로써 동작한다. 코드 샘플은 실행 가능한 프로그램 헤더, 파일 길이 및 샘플의 날짜 및 시간과 같은 프로그램 파일로부터의 정보와 함께 저장된다. 프로그램 파일은 프로그램 파일이 변경되지 않았다는 것을 보장하도록 이러한 데이터 베이스에 대해 규칙적인 간격으로 검사된다. 무결성 검사 프로그램은 사용자가 컴퓨터의 운영 체제를 업그레이드하거나 어플리케이션 소프트웨어를 업그레이드하는 경우 변경된 파일의 리스트를 생성한다.
검사 기반 멀웨어 검출 시스템의 단점은 멀웨어 활동의 많은 경고가 어플리케이션 프로그램으로의 변경이 수행되는 경우 생성될 수 있다는 점이다. 이는 종종 사용자에게 경고가 컴퓨터 시스템 상의 타당한 공격을 나타내는 것이 언제인지를 결정하기 어렵게 한다. 무결성 검사 방법의 다른 결점은 악성 코드가 검출 가능하도록 다른 파일을 변경해야 한다는 점이다. 따라서, 방법은 컴퓨터 바이러스에만 동작하고 프로그램 파일을 바꾸지 않는 인터넷 웜 및 트로이 목마 프로그램과 같은 다른 유형에는 동작하지 않을 수 있다. 무결성 검사 방법의 또 다른 단점은 멀웨어(예컨대, 바이러스)가 타깃 시스템 상에서 활성화되어야 한다는 점이다. 즉, 파일에의 변경이 바이러스가 활성화된 이후에만 발생하므로 검출 가능하도록 멀웨어는 그 메모리에서 실행하고 있어야 하며 타깃 컴퓨터의 파일 상에서 그 검출 기능을 수행하고 있어야 한다.
체크섬 모니터링 시스템은 보통 각 프로그램 파일에 대한 순환 중복 검사(CRC) 값을 생성함으로써 멀웨어를 검출한다. 프로그램 파일의 변경은 그 파일에 대한 CRC 값을 변경하며 이는 프로그램 파일의 감염을 나타내는 그 변경이다. 체크섬 모니터는 악성 코드가 모니터링을 무산시키기 더 어렵다는 점에서 무결성 검사 시스템을 개선한다. 반면, 체크섬 모니터는 방법이 긍정 오류(false positive)를 생성할 수 있다는 점에서 무결성 검사와 동일한 한계를 나타낸다.
멀웨어를 검출하기 위한 다른 방법은 베이트 파일(bait file)의 이용이다. 이러한 전략은 기존 및 활성 감염(즉, 악성 코드는 타깃 컴퓨터 상에서 현재 실행하고 있고 파일을 변경하고 있음)을 검출하도록 다른 멀웨어 검출 전략과 조합하여 이용될 수 있다. 베이트 파일이 변경되는 경우 바이러스가 검출될 수 있다. 많은 바이러스는 베이트 파일을 피하도록 만들어질 수 있고 그 구조 또는 파일명에서 미리 정해진 내용을 가지기 때문에 명백히 베이트 파일이거나 너무 작은 파일은 변경하지 않는다.
다른 멀웨어 검출 방법은 샌드 박싱으로 지칭된다. 이러한 방법은 보통 프로그램이 어플리케이션 프로그램 인터페이스(API) 호출로 지칭되는 미리 정의된 입구의 세트를 통하여 운영 체제와 상호 작용하는 사실에 기초한다. 그 입구가 운영 체제에 의해 유지되고 API 테이블에 저장되는 메모리에 위치한 절차에 API 호출이 만들어진다. 그러한 API 테이블은 운영 체제 하에서 만들어진 각 프로그램 공간에 존재한다. 샌드 박싱 방법에서, API 테이블은 - 프로그램의 프로세스 공간에서만 - 이후 실제 운영 체제의 API 어드레스로의 호출을 지나가기 전에 각 API 호출을 모니터링하는 항 바이러스 보호 셸로의 포인터로 구성되는 API 테이블로 대체된다.
이러한 방법은 검출이 일어날 수 있기 전에 악성 코드가 타깃 컴퓨터의 플랫폼 상에서 활성화되어야 한다는 결점을 가진다. 이러한 방법의 다른 결점은 이는 단지 시스템의 API를 호출하는 문서화된 방식을 사용하는 프로그램들에 대해서만 동작한다는 점이다. 바이러스, 인터넷 웜 및 트로이 목마를 포함하는 악성 코드를 포함하는 많은 프로그램은 표준예를 따르지 않으며, 커널 및 다른 표준 시스템 DLL 내에 포함된 이출 테이블에 대한 운영 체제 시스템을 스캐닝함으로써 결정된 주소에서 직접적으로 운영 체제를 호출한다. 그러한 프로그램은 샌드 박스 시험 프로세스 동안 타깃 컴퓨터를 즉시 감염시킬 수 있다.
상기 위험 및 멀웨어 검출 한계는 결과적으로 고객에 의해 새로운 클라우드 프로바이더로 이동하거나 클라우드 컴퓨팅을 사용하는 것 조차도 꺼리게 할 수 있다. 클라우드 호스팅 소프트웨어 및 특히, VMM과 같은 그 중요한 컴포넌트를 멀웨어 및 코드 변경으로부터 보다 안전하게 하기 위한 추가적인 해결책이 요구된다.
다양한 실시예에서, 실행하는 소프트웨어를 모니터링하고 멀웨어 활동을 검출하도록 행동 방해(behavior interception)와 같은 기법을 이용하기 위한 방법 및 시스템이 개시된다. 그러한 방법 및 시스템은, 예컨대, 서버의 운영 체제와 상호작용하고 잠재적으로 악성 행동에 대한 모니터링을 함으로써 클라우드 서버의 다른 소프트웨어 컴포넌트 및 VMM에서의 멀웨어 활동을 검출하는 데 이용될 수 있다.
도 3은 멀웨어 모니터링에 대한 예시적인 시스템을 도시한다. 특히, 도 3은 실행하는 소프트웨어의 모니터링을 위한 시스템(300)의 예시적인 실시예를 도시한다. 일 실시예에서, 실행하는 소프트웨어의 모니터링을 위한 시스템(300)은 초기화 계층(305) 및 런타임 계층(310)의 두 계층을 포함할 수 있다. 위에서 나타낸 바와 같이, 다음의 예시는 VMM 소프트웨어를 포함하는 실시예를 설명한다. 그러나, 개시된 방법 및 시스템은 다른 유형의 소프트웨어에서의 멀웨어의 검출에 적용될 수 있다.
초기화 계층(305)은 기존 VMM의 원본 소스 또는 바이트 코드(302)를 관련 커넥터 및 데이터 구조와 함께 실행 가능한 명령의 이진 프로그램 그래프(320)로 전환하도록 구성될 수 있는 정적 파서(parser)/역 컴파일러(decompiler)(315)를 포함할 수 있다. 이진 프로그램 그래프(320)는 불린 함수 및 세트 또는 관계의 표현을 포함하는 프로그래밍 로직을 나타내는 데 이용될 수 있는 임의의 구조일 수 있다. 일 실시예에서, 이진 프로그램 그래프(320)는 각 노드가 2 개까지의 차일드 노드(child node)를 가지는 트리 데이터 구조일 수 있다.
최초 VMM이 실행 가능한 코드의 형태인 경우, 파서/디컴파일러(315)는 대응하는 소스 코드를 생성할 수 있으며, 이는 부정행동/위협 모델러(325)에 로딩될 수 있다.
부정행동/위협 모델러(325)는 코드 정보를 수신할 수 있고, 그 변수의 범위, 데이터 구조 및 타이밍 제약에 따라, 시스템 호출이 부정행동/위협 모델러(325)에 의해 생성된 소스 코드에 의해 포함되고 부정행동 (즉, 보통 또는 예측된 행동으로부터의 벗어남)를 모니터링하기에 적절하다는 점을 입증한다. 일 실시예에서, 코드 정보는 어플리케이션 프로그래밍 인터페이스(API)(327)를 통하여 코드를 검토한 프로그래머 또는 분석가로부터 수신될 수 있다. 타이밍 제약 데이터는 부정행동/위협 데이터 베이스(330)에 로딩될 수 있으며, 이진 흐름 트리는 이진 프로그램 그래프(320)에 로딩될 수 있다. 이진 흐름 그래프는 프로그램 흐름을 나타내는 데 이용될 수 있는 노드를 포함하는 임의의 데이터 구조일 수 있다. 일 실시예에서, 로딩 동작은 프로그래머/분석가 승인의 대상일 수 있다.
런타임 계층(310)은 호스트 서버 OS 및 하드웨어(350) 상에서 실행할 수 있고 이진 프로그램 그래프(320) 및 부정행동/위협 데이터 베이스(330)에 대하여 값, 데이터 구조 및 VMM 프로그램 흐름을 실시간으로 매칭할 수 있는 동적 분석기/인터프리터(335)를 포함할 수 있다. 이상 행동(즉, 보통 또는 예측된 행동으로부터 벗어남)이 검출되면, 결과는 부정행동/위협 검출기(340)에 제공될 수 있다.
VMM이 멀웨어 또는 악성 코드 변경에 의해 손상되면, VMM 프로그램의 행동이 변경될 수 있다. 예컨대, 프로그램 흐름이 변경될 수 있다. 다른 예시로서, 시스템 호출 변수의 값이 변경될 수 있으며 범위를 벗어나서 동작하여, 버퍼 오버플로우를 야기할 수 있다. 추가적으로, 가상의 하드웨어 응답은 예측보다 오래 걸릴 수 있거나 알려진 타이밍 제약보다 길 수 있다. 다른 유형의 부정행동이 검출될 수 있다.
부정행동/위협 검출기(340)는 부정행동의 검출에 응답하여 경고를 생성하고 송신할 수 있다. 예컨대, 경고는 관리자가 승인/불허 메시지(349)를 통하여 경고를 승인 또는 무시(dismiss)할 수 있도록 관리자 콘솔에 송신될 수 있다. 일부 실시예에서, 부정행동/위협 검출기(340)는 하나 이상의 동작을 작동시켜 멀웨어 위협을 방지하고/거나 그 의도된 동작을 계속할 수 있도록 VMM 프로그램을 복구하거나 수리할 수 있다. 예컨대, 실행/복구 모듈(345)은 손상된 상황을 수정하도록 이진 프로그램 그래프(320)를 재구성하거나 프로그래밍 패치를 생성하도록 구성될 수 있다. 다른 예시로서, 실행/복구 모듈(345)은 추가적인 실행으로부터 VMM을 록킹(locking)할 수 있다.
일부 경우에, 상술한 모니터링 및 복구 방법의 실행은 결과적으로 일부 성능 오버헤드가 될 수 있다. 그러나, 성능 트레이드 오프는 예컨대, 특수 보안 및 안전성 요건이 있는 민감한 데이터 클라이언트 또는 미션 크리티컬(mission critical)을 다루는 클라우드 서버에 대하여 수용 가능한 것으로 고려될 수 있다.
여기에서 개시된 방법을 구현하는 다양한 실시예는 유효한 실시간 모니터링 및 멀웨어 및 악성 코드 변경으로부터의 VMM 소프트웨어와 같은 소프트웨어의 보호를 제공할 수 있다. 또한, 클라우드 서비스 프로바이더 또는 클라우드 컴퓨팅 소프트웨어 개발자는 상술한 모니터링 특징을 추가하도록 기존의 VMM 소프트웨어를 자동적으로 또는 반 자동적으로 전환하거나 업그레이드할 수 있다. 실시예는 운영 체제 및 어플리케이션을 포함하는 클라우드 컴퓨팅 소프트웨어의 다른 컴포넌트 및 멀웨어 모니터링으로 이익을 얻을 수 있는 임의의 다른 소프트웨어 어플리케이션 상에서 구현될 수 있다.
추가적으로, 여기에서 설명된 실행하는 소프트웨어를 모니터링하는 방법은 멀웨어 외의 다른 이유로부터 발생하는 예측 밖의 프로그램 행동에 대한 모니터링에 이용될 수 있다. 예컨대, 데이터 변질(data corruption)은 시스템 고장 또는 충돌로 이어질 수 있는 결과적으로 벗어난 프로그램 행동을 일으키는 값 또는 명령에의 변경을 일으킬 수 있다. 여기에서 설명된 바와 같은 예측된 행동에 대한 프로그램 실행을 모니터링함으로써, 중요한 소프트웨어가 계속 동작할 수 있거나 잘못된 프로그램으로 인한 손상이 최소화될 수 있도록 그러한 고장이 검출되고 수정되거나 방지될 수 있다. 데이터는 정전, 험한 운용 환경, 다양한 자연 현상, 예측 밖의 데이터 입력 또는 예측 밖의 소프트웨어 행동으로 이어질 수 있는 임의의 다른 조건과 같은 다양한 이유로 변질될 수 있다. 소프트웨어 행동 모니터링 기법은 고장의 위험 및 그러한 조건으로부터 일어나는 잘못된 프로그램을 최소화하는 데 이용될 수 있다.
도 4는 동작(400, 402, 404 및 406)을 포함하는 소프트웨어를 실행하는 모니터링하기 위한 동작적인 절차의 예시를 도시한다. 도 4를 참조하면, 동작(400)은 동작적인 절차를 시작한다. 동작(400)은 동작(402)으로 이어질 수 있다. 동작(402)(실행 동안 소프트웨어의 행동을 모니터링)은 실행 동안 소프트웨어의 행동을 모니터링하는 단계를 예시한다. 동작(402)은 동작(404)으로 이어질 수 있다. 동작(404)(모니터링된 행동이 예측된 동작으로부터 벗어남?)은 모니터링된 행동이 예측된 동작으로부터 벗어나는지 여부를 결정하는 단계를 예시한다. 일 실시예에서, 결정하는 단계는 미리 정해진 트리거에 따라 수행될 수 있다. 일 실시예에서, 결정은 모니터링된 동작의 비교 및 소프트웨어의 소프트웨어의 분석으로부터 도출된 대응하는 예측된 행동에 기초할 수 있다.
일부 실시예에서, 분석은 소스 코드 또는 실행 가능 코드의 이진 프로그램 그래프로의 전환을 포함할 수 있다. 이진 프로그램 그래프는 소프트웨어 프로그램 흐름에 대응할 수 있고 데이터 구조, 커넥터 및 실행가능 명령으로의 포인트를 포함할 수 있다. 이진 프로그램 그래프는 또한 소스 코드 전환에 기초하여 생성될 수 있다. 다른 실시예에서, 분석은 소스 코드 전환에 기초하여 부정행동/위협 데이터 베이스의 생성을 포함할 수 있다. 추가적으로 및 선택적으로, 분석은 어플리케이션 프로그래밍 인터페이스(API)를 통하여 수신된 정보를 더 고려할 수 있다. 그러한 정보는, 예컨대, 프로그래머 또는 분석가로부터 수신될 수 있다.
일부 실시예에서, 모니터링된 행동 및 대응하는 예측된 행동의 비교는 이진 프로그램 그래프 및 부정행동/위협 데이터 베이스로부터 수신된 정보에 기초할 수 있다.
추가적으로 및 선택적으로, 분석은 실행가능 소프트웨어의 실행 전에 소스 코드로의 실행가능 소프트웨어의 파싱 또는 역 컴파일하는 단계를 포함할 수 있다. 분석은 모니터링된 코드의 예측된 행동을 확인하는 것을 돕기 위한 정보를 포함할 수 있다. 예컨대, 본석은 API를 통하여 수신된 정보를 포함할 수 있다. 일부 실시예에서, 소스 코드는 분석에 이용될 수 있는 실행가능 코드로부터 생성될 수 있다.
일부 실시예에서, 복수의 이진 프로그램 그래프가 생성될 수 있다. 예컨대, 일 실시예에서, 제1 이진 프로그램 그래프가 생성될 수 있다. 제1 이진 프로그램 그래프는 소프트웨어의 소프트웨어의 예측된 행동의 표현일 수 있다. 소프트웨어의 모니터링된 행동의 표현인 제2 이진 프로그램 그래프가 생성될 수 있다. 제1 이진 프로그램 그래프 및 그 연관된 데이터 구조 또는 값은 제2 이진 프로그램 그래프 및 그 연관된 데이터 구조 또는 값에 비교되어 모니터링된 행동이 예측된 행동으로부터 벗어나는지 결정할 수 있다.
미리 정해진 트리거에 따라 모니터링된 행동이 예측된 행동으로부터 벗어난다면, 동작(404)은 동작(406)으로 이어질 수 있다. 동작(406)(동작을 개시)은 결정에 응답하여 동작을 개시하는 단계를 예시한다. 일 실시예에서, 동작은 자동적으로 개시될 수 있다. 그렇지 않고, 미리 정해진 트리거에 따라 모니터링된 행동이 예측된 행동으로부터 벗어나지 않는다고 결정되면, 동작(404)은 동작(402)로 이어질 수 있다.
일 실시예에서, 예측된 행동은 시스템 호출과 대응하는 변수 범위, 데이터 구조 범위 및 타이밍 제약 간의 대응을 포함할 수 있다. 일부 실시예에서, 모니터링 행동이 예측된 행동으로부터 벗어난다는 결정은 이진 프로그램 그래프에 대한 소프트웨어 프로그램 흐름 및 연관된 데이터 구조 또는 값을 매칭하는 단계를 포함할 수 있다.
미리 정해진 트리거는 멀웨어의 가능한 존재를 결정하는 데 이용될 수 있는 하나 이상의 조건을 포함할 수 있다. 일부 실시예에서 미리 정해진 트리거는 프로그램 흐름에서의 변경을 포함할 수 있다. 다른 실시예에서, 미리 정해진 트리거는 시스템 호출 변수의 값, 범위를 벗어난 변수 값 또는 응답 타임아웃에서의 예측하지 못한 변동을 포함할 수 있다.
동작은 하나 이상의 멀웨어가 존재할 수 있다는 결정에 응답하여 소프트웨어 또는 다른 적절한 컴포넌트를 모니터링함으로써 취해지는 하나 이상의 단계를 포함할 수 있다. 일부 실시예에서, 동작은 경고를 관리자와 같은 적절한 수신자에게 송신하는 단계를 포함할 수 있다. 동작은 또한 멀웨어가 시스템 및 데이터를 해하는 것을 방지하기 위한 동작을 포함할 수 있다. 예컨대, 동작은 프로그래밍 패치를 생성하는 단계, 이진 프로그램 그래프를 재구성하는 단계 및 소프트웨어의 추가적인 실행을 차단하는 단계를 포함할 수 있다.
도 5는 동작(500, 502 및 504)을 포함하는 실행하는 소프트웨어를 모니터링하기 위한 동작적인 절차의 예시를 도시한다. 도 5를 참조하면, 동작(500)은 동작적인 절차를 시작한다. 동작(500)은 동작(502)로 이어질 수 있다. 동작(502)(소스 코드 또는 실행 가능한 코드의 예측된 런타임 행동을 결정)은 소스 코드 또는 실행 가능한 코드의 예측된 런타임 행동을 결정하는 단계를 예시한다.
동작(502)은 동작(504)로 이어질 수 있다. 동작(504)(부정행동/위협 데이터 베이스 및 이진 프로그램 그래프를 생성)은 부정행동/위협 데이터 베이스 및 이진 프로그램 그래프를 생성하는 단계를 예시한다. 부정행동/위협 데이터 베이스 및 이진 프로그램 그래프는 소스 코드 또는 실행 가능 코드의 예측된 런타임에 기초할 수 있다. 일 실시예에서, 소스 코드 또는 실행가능 코드의 모니터링된 런타임 행동이 예측된 런타임 행동으로부터 벗어난다는 표시는 부정행동/위협 데이터 베이스 및 이진 프로그램 그래프의 대응하는 모니터링된 런터임 행동과의 비교에 기초하여 생성될 수 있다.
전술한 상세한 설명은 블록도, 흐름도, 및/또는 예시의 사용을 통해 장치 및/또는 프로세스의 다양한 실시예를 설명하였다. 그러한 블록도, 흐름도, 및/또는 예시가 하나 이상의 기능 및/또는 동작을 포함하는 한, 당업자라면 그러한 블록도, 흐름도, 또는 예시 내의 각각의 기능 및/또는 동작은 하드웨어, 소프트웨어, 펌웨어, 또는 실질적으로 그들 임의의 조합의 넓은 범위에 의해 개별적으로 및/또는 집합적으로 구현될 수 있다는 것이 이해될 것이다. 일 실시예에서, 여기에서 기술된 대상의 몇몇 부분은 ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), DSP(Digital Signal Processor) 또는 다른 집적의 형태를 통해 구현될 수 있다. 그러나, 당업자라면, 여기에서 기술된 실시예의 일부 양상이, 하나 이상의 컴퓨터 상에 실행되는 하나 이상의 컴퓨터 프로그램(예를 들어, 하나 이상의 컴퓨터 시스템 상에 실행되는 하나 이상의 프로그램), 하나 이상의 프로세서 상에서 실행되는 하나 이상의 프로그램(예를 들어, 하나 이상의 마이크로프로세서 상에서 실행되는 하나 이상의 프로그램), 펌웨어 또는 실질적으로 그들의 조합으로서, 전체적으로 또는 부분적으로 균등하게 집적 회로에 구현될 수 있다는 알 수 있으며, 소프트웨어 및/또는 펌웨어를 위한 코드의 작성 및/또는 회로의 설계는 본 개시에 비추어 당업자에게 자명할 것이다. 또한, 당업자라면, 여기에서 기술된 대상의 수단(mechanism)들이 다양한 형태의 프로그램 제품으로 분포될 수 있음을 이해할 것이며, 여기에서 기술된 대상의 실시예는, 분배를 실제로 수행하는데 사용되는 신호 베어링 매체(signal bearing medium)의 특정 유형과 무관하게 적용됨을 이해할 것이다. 신호 베어링 매체의 예시는, 플로피 디스크, HDD, CD, DVD, 디지털 테이프, 컴퓨터 메모리와 같은 판독가능 유형의 매체 및 디지털 및/또는 아날로그 통신 매체(예를 들어, 섬유 광학 케이블, 웨이브가이드, 유선 통신 링크, 무선 통신 링크 등)와 같은 전송 유형 매체를 포함할 수 있으나, 이에 제한되지는 않는다.
당업자라면, 여기서 설명된 형식으로 장치 및/또는 프로세스를 기술하고, 이후, 공학 실무를 사용하여 그러한 기술된 장치 및/또는 프로세스를 데이터 처리 시스템에 통합한다는 것은 당해 분야에서는 일반적이란 것을 인식할 것이다. 즉, 여기서 기술된 장치 및/또는 방법의 적어도 일부는 합당한 실험 량을 통해 데이터 처리 시스템에 통합될 수 있다. 당업자라면, 전형적인 데이터 처리 시스템은 일반적으로 시스템 유닛 하우징, 비디오 디스플레이 장치, 휘발성 및 비휘발성 메모리 같은 메모리, 마이크로프로세서 및 디지털 신호 프로세서와 같은 프로세서, 운영 체제, 드라이버, 그래픽 사용자 인터페이스 및 애플리케이션 프로그램과 같은 컴퓨터 엔티티(computational entities), 터치 패드 또는 스크린 같은 하나 이상의 상호작용 장치, 및/또는 피드백 루프 및 제어 모터(예를 들면, 위치 및/또는 속도를 감지하기 위한 피드백; 컴포넌트 및/또는 양(quantities)을 이동하고 및/또는 조정하기 위한 제어 모터)를 포함하는 제어 시스템 중 하나 이상을 일반적으로 포함한다는 것을 인식할 것이다. 전형적인 데이터 처리 시스템은 데이터 컴퓨팅/통신 및/또는 네트워크 컴퓨팅/통신 시스템에서 전형적으로 발견되는 바와 같은 임의의 적절한 상업적으로 이용 가능한 컴포넌트를 이용하여 구현될 수 있다.
여기에서 기술된 대상은 때때로 상이한 다른 컴포넌트 내에 포함되거나 접속된 상이한 컴포넌트를 도시한다. 도시된 그러한 아키텍처는 단순히 예시적인 것이고, 사실상 동일한 기능을 달성하는 다른 많은 아키텍처가 구현될 수 있다는 것이 이해되어야 한다. 개념적으로, 동일한 기능을 달성하기 위한 컴포넌트의 임의의 배치는 원하는 기능이 달성되도록 유효하게 "연관"된다. 이에 따라, 특정 기능을 달성하기 위해 여기서 결합된 임의의 두 개의 컴포넌트는, 아키텍처 또는 중간 컴포넌트와는 무관하게, 원하는 기능이 달성되도록 서로 "연관"된 것으로 볼 수 있다. 마찬가지로, 연관된 임의의 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 접속"되거나 또는 "동작적으로 연결"되는 것으로 간주될 수 있고, 그와 같이 연관될 수 있는 임의의 두 개의 컴포넌트는 또한 원하는 기능을 달성하기 위해 서로 "동작적으로 연결가능"한 것으로 볼 수 있다. 동작적으로 연결가능하다는 것의 특정예는 물리적으로 양립가능(mateable)하고 및/또는 물리적으로 인터액팅하는 컴포넌트 및/또는 무선으로 인터액팅이 가능하고 및/또는 무선으로 인터액팅하는 컴포넌트 및/또는 논리적으로 인터액팅하고 및/또는 논리적으로 인터액팅이 가능한 컴포넌트를 포함하지만, 이에 한정되는 것은 아니다.
도 6은 본 개시의 양태가 구현될 수 있는 예시적인 컴퓨팅 시스템을 도시한다. 특히, 도 6은 본 개시에 따른 실행하는 소프트웨어를 모니터링하기 위해 배열되는 예시적인 컴퓨팅 장치(600)를 예시하는 블록도를 도시한다. 매우 기본적인 구성(602)에서, 컴퓨팅 장치(600)는 보통 하나 이상의 프로세서(604) 및 시스템 메모리(606)를 포함한다. 메모리 버스(608)는 프로세서(604) 및 시스템 메모리(606) 사이에서 통신하기 위하여 이용될 수 있다.
요구되는 구성에 따라, 프로세서(604)는 마이크로프로세서(μP), 마이크로컨트롤러(μC), 디지털 신호 프로세서(DSP) 또는 그 임의의 조합을 포함하는 임의의 유형일 수 있지만, 이에 한정되는 것은 아니다. 프로세서(604)는 레벨 1 캐시(610) 및 레벨 2 캐시(612)와 같은 하나 이상의 레벨의 캐싱, 프로세서 코어(614) 및 레지스터(616)를 포함할 수 있다. 예시적인 프로세서 코어(614)는 ALU(arithmetic logic unit), FPU(floating point unit), DSP 코어(digital signal processing core), 또는 그 임의의 조합을 포함할 수 있다. 예시적인 메모리 컨트롤러(618)는 또한 프로세서(604)와 사용될 수 있거나, 또는 몇몇 구현예에서, 메모리 컨트롤러(618)는 프로세서(604)의 내부 부품일 수 있다.
요구되는 구성에 따라, 시스템 메모리(606)는 (RAM과 같은) 휘발성 메모리, (ROM, 플래시 메모리 등과 같은) 비휘발성 메모리, 또는 그 임의의 조합을 포함할 수 있지만, 이에 한정되지 않는 임의의 유형일 수 있다. 시스템 메모리(606)는 운영 체제(620), 하나 이상의 애플리케이션(622), 및 프로그램 데이터(624)를 포함할 수 있다. 어플리케이션(622)은 예컨대, 도 4 및 5에서 설명된 프로세스에 관하여 설명된 바를 포함하는 여기에서 설명된 바와 같은 기능을 수행하도록 배열되는 소프트웨어 모니터링 방법(626)을 포함할 수 있다. 프로그램 데이터(624)는 상술한 모니터링 방법과의 동작에 유용할 수 있는 구성 데이터(628)를 포함할 수 있다. 일부 실시예에서, 어플리케이션(622)은 소프트웨어 모니터링의 구현이 여기에서 설명된 바와 같이 제공될 수 있도록 운영 체제(620) 상의 프로그램 데이터(624)와 동작하도록 배열될 수 있다. 이 설명된 기본 구성(602)은 내부 파선 내의 컴포넌트에 의해 도 6에서 도시된다.
컴퓨팅 장치(600)는 추가적인 특징 또는 기능, 및 기본 구성(602)과 임의의 요구되는 장치와 인터페이스 간 통신을 용이하게 하기 위한 추가적인 인터페이스를 가질 수 있다. 예를 들면, 버스/인터페이스 컨트롤러(630)는 저장 인터페이스 버스(634)를 통한 기본 구성(602)과 하나 이상의 데이터 저장 장치(632) 간의 통신을 용이하게 하는데 사용될 수 있다. 데이터 저장 장치(632)는 분리형 저장 장치(636), 비분리형 저장 장치(638), 또는 그들의 조합일 수 있다. 분리형 저장 장치 및 비분리형 저장 장치의 예로는, 몇 가지 말하자면, 플렉서블 디스크 드라이브 및 하드 디스크 드라이브(HDD)와 같은 자기 디스크 장치, 컴팩트 디스크(CD) 드라이브 또는 디지털 다기능 디스크(DVD) 드라이브와 같은 광 디스크 드라이브, 고체 상태 드라이브(solid state drive; SSD), 및 테이프 드라이브가 포함된다. 예시적인 컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성의, 분리형 및 비분리형 매체를 포함할 수 있다.
시스템 메모리(606), 분리형 저장 장치(636) 및 비분리형 저장 장치(638)는 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(DVD) 또는 다른 광학 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는데 사용될 수 있고 컴퓨팅 장치(600)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되는 것은 아니다. 그러한 임의의 컴퓨터 저장 매체는 컴퓨팅 장치(600)의 일부일 수 있다.
컴퓨팅 장치(600)는 버스/인터페이스 컨트롤러(630)를 통한 다양한 인터페이스 장치(예를 들면, 출력 장치(642), 주변 인터페이스(644) 및 통신 장치(646))로부터 기본 구성(602)으로의 통신을 용이하게 하기 위한 인터페이스 버스(640)도 포함할 수 있다. 예시적인 출력 장치(642)는 그래픽 처리 유닛(648) 및 오디오 처리 유닛(650)을 포함하며, 이는 하나 이상의 A/V 포트(652)를 통해 디스플레이 또는 스피커와 같은 다양한 외부 장치로 통신하도록 구성될 수 있다. 예시적인 주변 인터페이스(644)는 직렬 인터페이스 컨트롤러(654) 또는 병렬 인터페이스 컨트롤러(656)를 포함하며, 이는 하나 이상의 I/O 포트(658)를 통해 입력 장치(예를 들면, 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등) 또는 다른 주변 장치(예를 들면, 프린터, 스캐너 등)와 같은 외부 장치와 통신하도록 구성될 수 있다. 예시적인 통신 장치(646)는 네트워크 컨트롤러(660)를 포함하며, 이는 하나 이상의 통신 포트(664)를 통해 네트워크 통신 링크 상에서의 하나 이상의 다른 컴퓨팅 장치(662)와의 통신을 용이하게 하도록 배치될 수 있다.
네트워크 통신 링크는 통신 매체의 일 예시일 수 있다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파 또는 다른 전송 메커니즘 같은 변조된 데이터 신호 내의 다른 데이터에 의해 구현될 수 있고, 임의의 정보 전달 매체를 포함할 수 있다. "변조된 데이터 신호"는 신호 내에 정보를 인코딩하기 위한 방식으로 설정되거나 변경된 특성 중 하나 이상을 갖는 신호일 수 있다. 제한적인지 않은 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음파, 무선 주파수(RF), 마이크로웨이브, 적외선(IR) 및 다른 무선 매체와 같은 무선 매체를 포함할 수 있다. 여기서 사용되는 컴퓨터 판독가능 매체라는 용어는 저장 매체 및 통신 매체 둘 다를 포함할 수 있다.
컴퓨팅 장치(600)는, 휴대 전화, PDA(personal data assistant), 개인용 미디어 플레이어 장치, 무선 웹-워치(web-watch) 장치, 개인용 헤드셋 장치, 특수 용도 장치, 또는 위 기능 중 임의의 것을 포함하는 하이브리드 장치 같은 소형 폼 팩터(small-form factor)의 휴대용(또는 모바일) 전자 장치의 일부로서 구현될 수 있다. 컴퓨팅 장치(600)는 또한 랩톱 컴퓨터 및 랩톱이 아닌 컴퓨터 구성을 모두 포함하는 개인용 컴퓨터로서 구현될 수 있다.
여기에서 실질적으로 임의의 복수 및/또는 단수의 용어의 사용에 대하여, 당업자는 맥락 및/또는 응용에 적절하도록, 복수를 단수로 및/또는 단수를 복수로 해석할 수 있다. 다양한 단수/복수의 치환은 명확성을 위해 여기에서 명시적으로 기재될 수 있다.
당업자라면, 일반적으로 본 개시에 사용되며 특히 첨부된 청구범위(예를 들어, 첨부된 청구범위)에 사용된 용어들이 일반적으로 "개방적(open)" 용어(예를 들어, 용어 "포함하는"은 "포함하지만 이에 제한되지 않는"으로, 용어 "갖는"는 "적어도 갖는"으로, 용어 "포함하다"는 "포함하지만 이에 한정되지 않는" 등으로 해석되어야 함)로 의도되었음을 이해할 것이다. 또한, 당업자라면, 도입된 청구항의 기재사항의 특정 수가 의도된 경우, 그러한 의도가 청구항에 명시적으로 기재될 것이며, 그러한 기재사항이 없는 경우, 그러한 의도가 없음을 또한 이해할 것이다. 예를 들어, 이해를 돕기 위해, 이하의 첨부 청구범위는 "적어도 하나" 및 "하나 이상" 등의 도입 구절의 사용을 포함하여 청구항 기재사항을 도입할 수 있다. 그러나, 그러한 구절의 사용이, 부정관사 "하나"("a" 또는 "an")에 의한 청구항 기재사항의 도입이, 그러한 하나의 기재사항을 포함하는 실시예들로, 그러한 도입된 청구항 기재사항을 포함하는 특정 청구항을 제한함을 암시하는 것으로 해석되어서는 안되며, 동일한 청구항이 도입 구절인 "하나 이상" 또는 "적어도 하나" 및 "하나"("a" 또는 "an")과 같은 부정관사(예를 들어, "하나"는 "적어도 하나" 또는 "하나 이상"을 의미하는 것으로 해석되어야 함)를 포함하는 경우에도 마찬가지로 해석되어야 한다. 이는 청구항 기재사항을 도입하기 위해 사용된 정관사의 경우에도 적용된다. 또한, 도입된 청구항 기재사항의 특정 수가 명시적으로 기재되는 경우에도, 당업자라면 그러한 기재가 적어도 기재된 수(예를 들어, 다른 수식어가 없는 "두개의 기재사항"을 단순히 기재한 것은, 적어도 두 개의 기재사항 또는 두 개 이상의 기재사항을 의미함)를 의미하도록 해석되어야 함을 이해할 것이다. 또한, "A, B 및 C 등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 및 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, 및/또는 A, B, 및 C를 함께 갖는 시스템 등을 포함하지만 이에 제한되지 않음). "A, B 또는 C 등 중의 적어도 하나"와 유사한 규칙이 사용된 경우에는, 일반적으로 그러한 해석은 당업자가 그 규칙을 이해할 것이라는 전제가 의도된 것이다(예를 들어, "A, B 또는 C 중의 적어도 하나를 갖는 시스템"은, A만을 갖거나, B만을 갖거나, C만을 갖거나, A 및 B를 함께 갖거나, A 및 C를 함께 갖거나, B 및 C를 함께 갖거나, 및/또는 A, B, 및 C를 함께 갖는 시스템 등을 포함하지만 이에 제한되지 않음). 또한 당업자라면, 실질적으로 임의의 이접 접속어(disjunctive word) 및/또는 두 개 이상의 대안적인 용어들을 나타내는 구절은, 그것이 상세한 설명, 청구범위 또는 도면에 있는지와 상관없이, 그 용어들 중의 하나, 그 용어들 중의 어느 하나, 또는 그 용어들 두 개 모두를 포함하는 가능성을 고려했음을 이해할 것이다. 예를 들어, "A 또는 B"라는 구절은 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해될 것이다.
추가적으로, 개시의 특징 또는 양태가 마쿠시(Markush) 그룹으로 기술되는 경우, 개시는 마쿠시 그룹의 임의의 개별 요소 또는 요소들의 하위 그룹 역시 포함하고 있다는 것을 당업자는 인식할 것이다.
당업자에게 이해될 것과 같이, 임의의 그리고 모든 목적에서든, 기술 내용을 제공하는 것 등에 있어서, 여기에 개시되어 있는 모든 범위는 임의의 그리고 모든 가능한 하위범위와 그러한 하위범위의 조합을 또한 포함한다. 임의의 열거된 범위는 적어도 1/2, 1/3, 1/4, 1/5, 1/10 등으로 나누어지는 동일한 범위를 충분히 설명하고 실시가능하게 하는 것으로서 쉽게 인식될 수 있다. 제한하지 않는 예시로서, 여기서 논의되는 각각의 범위는 하위 1/3, 중앙 1/3, 상위 1/3 등으로 나누어질 수 있다. 또한, "까지", "적어도" 등과 같은 언어는 기재된 수를 포함하며, 전술한 하위범위로 후속적으로 나누어질 수 있는 범위를 지칭함이 당업자에게 이해되어야 한다. 마지막으로, 범위는 각각의 개별 요소를 포함함이 이해되어야 한다. 따라서, 예를 들어, 1-3개의 셀을 갖는 그룹은 1, 2 또는 3개의 셀을 갖는 그룹들을 의미한다. 유사하게, 1-5개의 셀을 갖는 그룹은 1, 2, 3, 4 또는 5개의 셀을 갖는 그룹을 의미한다.
앞서 말한 바로부터, 본 개시의 다양한 실시예가 예시의 목적을 위해 여기에서 기술되었고, 다양한 수정이 본 개시의 사상과 범위를 벗어나지 않으면서 이루어질 수 있음이 이해될 것이다. 따라서, 여기에서 개시된 다양한 실시예는 제한하려고 의도된 것이 아니며, 진정한 범위와 사상은 이하 청구범위에서 나타난다.

Claims (23)

  1. 실행하는 소프트웨어를 모니터링하기 위한 방법으로서,
    실행 동안 소프트웨어의 행동(behavior)을 모니터링하는 단계;
    상기 모니터링된 행동 및 상기 소프트웨어의 분석으로부터 도출된 대응하는 예측된 행동의 비교에 기초하여, 상기 모니터링된 행동이 미리 정해진 트리거(trigger)에 따라 상기 예측된 행동으로부터 벗어난다고 결정하는 단계; 및
    상기 결정하는 단계에 응답하여 동작(action)을 자동적으로 개시하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 분석은 실행 가능한 소프트웨어의 소스 코드로의 역 컴파일을 포함하는, 방법.
  3. 제1항에 있어서,
    상기 분석은 API(Application Programming Interface)를 통하여 수신된 정보의 처리를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 분석은 상기 소프트웨어의 실행 이전의 소스 코드의 파싱(parsing)을 포함하는, 방법.
  5. 제1항에 있어서,
    상기 분석은 API를 통하여 수신된 정보 및 소스 코드 전환에 기초한 부정 행동(misbehavior)/위협 데이터 베이스의 생성을 포함하는, 방법.
  6. 제3항에 있어서,
    상기 분석은 소스 코드 전환 및 상기 수신된 정보에 기초한 이진 프로그램 그래프의 생성을 포함하는, 방법.
  7. 제6항에 있어서,
    상기 이진 프로그램 그래프는 소프트웨어 프로그램 흐름에 대응하고, 데이터 구조, 커넥터(connector) 및 실행 가능 머신 명령으로의 포인터를 포함하는, 방법.
  8. 제6항에 있어서,
    상기 비교는 상기 이진 프로그램 그래프 및 부정 행동/위협 데이터 베이스로부터 수신된 정보에 기초하는, 방법.
  9. 제1항에 있어서,
    상기 분석은 상기 예측된 행동을 나타내는 제1 이진 프로그램 그래프의 생성을 포함하고, 상기 결정하는 단계는 상기 모니터링된 행동을 나타내는 제2 이진 프로그램 그래프를 생성하는 단계를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 결정하는 단계는 상기 제1 이진 프로그램 그래프 및 그 연관된 데이터 구조 또는 값을 상기 제2 이진 프로그램 그래프 및 그 연관된 데이터 구조 또는 값과 비교하는 단계를 포함하는, 방법.
  11. 제1항에 있어서,
    상기 예측된 행동은 시스템 또는 다른 프로그램 호출과 대응하는 변수 범위, 데이터 구조 범위 및 타이밍 제약 간의 상호작용을 포함하는, 방법.
  12. 제6항에 있어서,
    상기 결정하는 단계는 상기 이진 프로그램 그래프에 대하여 소프트웨어 프로그램 흐름 및 연관된 데이터 구조 또는 값을 매칭하는 단계를 포함하는, 방법.
  13. 제1항에 있어서,
    상기 미리 정해진 트리거는 상기 프로그램 흐름에서의 변화를 포함하는, 방법.
  14. 제1항에 있어서,
    상기 미리 정해진 트리거는 시스템 호출 변수의 값에서의 예측 밖의 변동을 포함하는, 방법.
  15. 제1항에 있어서,
    상기 미리 정해진 트리거는 범위 밖인 변수 값을 포함하는, 방법.
  16. 제1항에 있어서,
    상기 미리 정해진 트리거는 응답 타임 아웃(timeout)을 포함하는, 방법.
  17. 제1항에 있어서,
    상기 동작은 경고를 송신하는 것을 포함하는, 방법.
  18. 제1항에 있어서,
    상기 동작은 프로그래밍 패치를 생성하는 단계 및 상기 프로그래밍 패치를 상기 소프트웨어에 삽입하는 단계를 포함하는, 방법.
  19. 제6항에 있어서,
    상기 동작은 상기 이진 프로그램 그래프를 재구성하는 단계를 포함하는, 방법.
  20. 제1항에 있어서,
    상기 동작은 상기 소프트웨어의 추가 실행을 차단하는 단계를 포함하는 방법.
  21. 제1항에 있어서,
    상기 소프트웨어는 가상 머신 관리자(VMM)를 구현하는, 방법.
  22. 컴퓨팅 시스템으로서,
    적어도 하나의 프로세서를 포함하는 컴퓨팅 장치; 및
    상기 컴퓨팅 시스템이 동작하는 경우 상기 프로세서에 통신적으로 결합된 메모리
    를 포함하고,
    상기 메모리는 저장된 컴퓨터 명령어를 가지고 상기 컴퓨터 명령어는 상기 적어도 하나의 프로세서에 의하여 실행되면,
    실행 중에 소프트웨어의 행동(behavior)을 모니터링하고;
    상기 모니터링된 행동 및 상기 소프트웨의 분석으로부터 도출된 대응하는 모델링된 행동의 비교에 기초하여, 상기 모니터링된 행동이상기 모델링된 행동으로부터 벗어난다고 결정하고; 그리고
    상기 결정에 기초하여 응답을 개시하도록 하는, 컴퓨팅 시스템.
  23. 실행하는 소프트웨어를 모니터링하기 위한 컴퓨터 실행 가능 명령어를 저장하는 컴퓨터 판독 가능 저장 매체로서,
    소스 코드 또는 실행 가능 코드의 예측된 런타임 행동(runtime behavior)을 결정하기 위한 명령어; 및
    상기 결정하는 것에 기초하여 부정행동(misbehavior)/위협 데이터 베이스 및 이진 프로그램 그래프를 생성하기 위한 명령어를 포함하고,
    상기 소스 코드 또는 실행 가능 코드의 모니터링된 런타임 행동이 상기 예측된 런타임 행동으로부터 벗어난다는 표시가 상기 부정행동/위협 데이터 베이스 및 이진 프로그램 그래프와 대응하는 모니터링된 런타임 행동의 비교에 기초하여 생성될 수 있는, 컴퓨터 판독 가능 저장 매체.
KR1020157000257A 2012-06-06 2012-06-06 소프트웨어 보호 메커니즘 KR101657191B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2012/041065 WO2013184108A1 (en) 2012-06-06 2012-06-06 Software protection mechanism

Publications (2)

Publication Number Publication Date
KR20150018626A true KR20150018626A (ko) 2015-02-23
KR101657191B1 KR101657191B1 (ko) 2016-09-19

Family

ID=49712369

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157000257A KR101657191B1 (ko) 2012-06-06 2012-06-06 소프트웨어 보호 메커니즘

Country Status (3)

Country Link
US (1) US9405899B2 (ko)
KR (1) KR101657191B1 (ko)
WO (1) WO2013184108A1 (ko)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223962B1 (en) * 2012-07-03 2015-12-29 Bromium, Inc. Micro-virtual machine forensics and detection
US10607007B2 (en) 2012-07-03 2020-03-31 Hewlett-Packard Development Company, L.P. Micro-virtual machine forensics and detection
US9922192B1 (en) 2012-12-07 2018-03-20 Bromium, Inc. Micro-virtual machine forensics and detection
US20140259171A1 (en) * 2013-03-11 2014-09-11 Spikes, Inc. Tunable intrusion prevention with forensic analysis
WO2014195890A1 (en) 2013-06-06 2014-12-11 Topspin Security Ltd. Methods and devices for identifying the presence of malware in a network
US9058488B2 (en) * 2013-08-14 2015-06-16 Bank Of America Corporation Malware detection and computer monitoring methods
US10571873B2 (en) 2013-11-15 2020-02-25 Apple Inc. Aggregating automated-environment information across a neighborhood
US10496050B2 (en) 2013-11-15 2019-12-03 Apple Inc. Modification of automated environment behavior based on user routine
US10416625B2 (en) 2013-11-15 2019-09-17 Apple Inc. Aggregating user routines in an automated environment
US10719122B2 (en) 2013-11-15 2020-07-21 Apple Inc. Automated environment providing feedback based on user routine
US10177933B2 (en) 2014-02-05 2019-01-08 Apple Inc. Controller networks for an accessory management system
US10454783B2 (en) 2014-02-05 2019-10-22 Apple Inc. Accessory management system using environment model
US10416205B2 (en) 2013-11-15 2019-09-17 Apple Inc. Monitoring of resource consumption patterns in an automated environment including detecting variance in resource consumption
CN103714456B (zh) * 2014-01-06 2015-08-19 同济大学 软件行为监控验证系统
US9740857B2 (en) 2014-01-16 2017-08-22 Fireeye, Inc. Threat-aware microvisor
US10430614B2 (en) 2014-01-31 2019-10-01 Bromium, Inc. Automatic initiation of execution analysis
CN108259159B (zh) 2014-02-05 2021-02-05 苹果公司 用于在控制器和附件之间进行配对的方法和系统
KR20150092890A (ko) * 2014-02-06 2015-08-17 한국전자통신연구원 가상화 기반 보안 강화 장치 및 그 방법
WO2015188247A1 (en) * 2014-06-09 2015-12-17 Royal Canadian Mint/Monnaie Royale Canadienne Keep-alive system and method for cloud-based database systems
WO2016053625A1 (en) 2014-09-30 2016-04-07 Apple Inc. Modification of automated environment behavior based on user routine
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US10206170B2 (en) 2015-02-05 2019-02-12 Apple Inc. Dynamic connection path detection and selection for wireless controllers and accessories
US9912681B1 (en) 2015-03-31 2018-03-06 Fireeye, Inc. Injection of content processing delay in an endpoint
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
CN104850783B (zh) * 2015-04-30 2018-07-13 中国人民解放军国防科学技术大学 一种基于哈希特征矩阵的恶意软件云检测方法及系统
US10650142B1 (en) * 2015-06-24 2020-05-12 Ca, Inc. Systems and methods for detecting potentially malicious hardware-related anomalies
CN108064384A (zh) * 2015-06-27 2018-05-22 迈克菲有限责任公司 恶意软件的减轻
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10395029B1 (en) * 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US10216927B1 (en) 2015-06-30 2019-02-26 Fireeye, Inc. System and method for protecting memory pages associated with a process using a virtualization layer
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
CN105205395B (zh) * 2015-08-31 2019-01-15 广州市优普计算机有限公司 恶意软件自动化检测方法
US10033759B1 (en) 2015-09-28 2018-07-24 Fireeye, Inc. System and method of threat detection under hypervisor control
US10228988B2 (en) * 2015-11-04 2019-03-12 International Business Machines Corporation Detecting anomalies in program execution
US10210325B2 (en) * 2015-11-23 2019-02-19 Armor Defense Inc. Extracting and detecting malicious instructions on a virtual machine
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US9524205B1 (en) * 2016-01-04 2016-12-20 International Business Machines Corporation Code fingerprint-based processor malfunction detection
GB2547272B (en) * 2016-02-15 2020-07-15 F Secure Corp Improving security of computer resources
US10191861B1 (en) 2016-09-06 2019-01-29 Fireeye, Inc. Technique for implementing memory views using a layered virtualization architecture
US10496508B2 (en) 2017-06-02 2019-12-03 Apple Inc. Accessory communication control
US20190012459A1 (en) * 2017-07-10 2019-01-10 Electronics And Telecommunications Research Institute Ransomware detection apparatus and operating method thereof
US10595073B2 (en) 2018-06-03 2020-03-17 Apple Inc. Techniques for authorizing controller devices
US11805009B2 (en) 2018-06-03 2023-10-31 Apple Inc. Configuring accessory network connections
US11244050B2 (en) * 2018-12-03 2022-02-08 Mayachitra, Inc. Malware classification and detection using audio descriptors
US11599639B2 (en) 2019-08-15 2023-03-07 Blackberry Limited Methods and systems for identifying a compromised device through its unmanaged profile
US11632377B2 (en) * 2019-08-15 2023-04-18 Blackberry Limited Methods and systems to identify a compromised device through active testing
US11347500B2 (en) 2020-06-17 2022-05-31 Bank Of America Corporation Software code converter for resolving conflicts during code development
US11573775B2 (en) 2020-06-17 2023-02-07 Bank Of America Corporation Software code converter for resolving redundancy during code development
US11782685B2 (en) 2020-06-17 2023-10-10 Bank Of America Corporation Software code vectorization converter

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060259967A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Proactively protecting computers in a networking environment from malware
KR101027928B1 (ko) * 2008-07-23 2011-04-12 한국전자통신연구원 난독화된 악성 웹페이지 탐지 방법 및 장치
KR101057432B1 (ko) * 2010-02-23 2011-08-22 주식회사 이세정보 프로세스의 행위 분석을 통한 유해 프로그램을 실시간으로 탐지하고 차단하는 시스템, 방법, 프로그램 및 기록매체
US20120079596A1 (en) * 2010-08-26 2012-03-29 Verisign, Inc. Method and system for automatic detection and analysis of malware

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5581696A (en) * 1995-05-09 1996-12-03 Parasoft Corporation Method using a computer for automatically instrumenting a computer program for dynamic debugging
CN1260055A (zh) 1997-06-09 2000-07-12 联信公司 用于提高软件安全性的模糊技术
US7975305B2 (en) * 1997-11-06 2011-07-05 Finjan, Inc. Method and system for adaptive rule-based content scanners for desktop computers
US20020100022A1 (en) * 2000-05-08 2002-07-25 Holzmann Gerard J. Method and apparatus for automatic verification of properties of a concurrent software system
US7581103B2 (en) 2001-06-13 2009-08-25 Intertrust Technologies Corporation Software self-checking systems and methods
AU2002316479A1 (en) * 2001-07-03 2003-01-21 Altaworks Corporation System and methods for monitoring performance metrics
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
CN100386740C (zh) 2002-12-12 2008-05-07 有限状态机实验室公司 用于检测计算机系统中的安全漏洞的系统和方法
US20060130016A1 (en) * 2003-03-17 2006-06-15 Wagner John R Method of kernal-mode instruction interception and apparatus therefor
US7240332B2 (en) * 2003-04-18 2007-07-03 Ounce Labs, Inc. Method and system for detecting vulnerabilities in source code
US20050010895A1 (en) * 2003-07-09 2005-01-13 Mr. Parama Reddappagari Software Specification Processing System
US20060020923A1 (en) * 2004-06-15 2006-01-26 K5 Systems Inc. System and method for monitoring performance of arbitrary groupings of network infrastructure and applications
US7627538B2 (en) 2004-12-07 2009-12-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Swarm autonomic agents with self-destruct capability
TWI252976B (en) 2004-12-27 2006-04-11 Ind Tech Res Inst Detecting method and architecture thereof for malicious codes
US20070169028A1 (en) * 2005-12-15 2007-07-19 Glenn Kasten Partitioning of non-volatile memories for vectorization
US20080148061A1 (en) 2006-12-19 2008-06-19 Hongxia Jin Method for effective tamper resistance
US7802299B2 (en) * 2007-04-09 2010-09-21 Microsoft Corporation Binary function database system
US20100031353A1 (en) 2008-02-04 2010-02-04 Microsoft Corporation Malware Detection Using Code Analysis and Behavior Monitoring
US8429633B2 (en) * 2008-11-21 2013-04-23 International Business Machines Corporation Managing memory to support large-scale interprocedural static analysis for security problems
US8321942B1 (en) * 2009-03-12 2012-11-27 Symantec Corporation Selecting malware signatures based on malware diversity
KR101566409B1 (ko) 2009-04-14 2015-11-05 삼성전자주식회사 프로그램 데이터 공격 검출방법
US8370934B2 (en) * 2009-06-25 2013-02-05 Check Point Software Technologies Ltd. Methods for detecting malicious programs using a multilayered heuristics approach
US9785909B2 (en) 2009-08-27 2017-10-10 International Business Machines Corporation Preventing propagation of malicious content in a virtual universe
US20110219449A1 (en) 2010-03-04 2011-09-08 St Neitzel Michael Malware detection method, system and computer program product
US8566944B2 (en) 2010-04-27 2013-10-22 Microsoft Corporation Malware investigation by analyzing computer memory
US9733934B2 (en) * 2011-03-08 2017-08-15 Google Inc. Detecting application similarity
US8997233B2 (en) * 2011-04-13 2015-03-31 Microsoft Technology Licensing, Llc Detecting script-based malware using emulation and heuristics
US8918881B2 (en) * 2012-02-24 2014-12-23 Appthority, Inc. Off-device anti-malware protection for mobile devices
US8819772B2 (en) * 2012-06-25 2014-08-26 Appthority, Inc. In-line filtering of insecure or unwanted mobile device software components or communications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060259967A1 (en) * 2005-05-13 2006-11-16 Microsoft Corporation Proactively protecting computers in a networking environment from malware
KR101027928B1 (ko) * 2008-07-23 2011-04-12 한국전자통신연구원 난독화된 악성 웹페이지 탐지 방법 및 장치
KR101057432B1 (ko) * 2010-02-23 2011-08-22 주식회사 이세정보 프로세스의 행위 분석을 통한 유해 프로그램을 실시간으로 탐지하고 차단하는 시스템, 방법, 프로그램 및 기록매체
US20120079596A1 (en) * 2010-08-26 2012-03-29 Verisign, Inc. Method and system for automatic detection and analysis of malware

Also Published As

Publication number Publication date
US9405899B2 (en) 2016-08-02
WO2013184108A1 (en) 2013-12-12
KR101657191B1 (ko) 2016-09-19
US20130333033A1 (en) 2013-12-12

Similar Documents

Publication Publication Date Title
KR101657191B1 (ko) 소프트웨어 보호 메커니즘
US11736530B2 (en) Framework for coordination between endpoint security and network security services
JP6706273B2 (ja) インタープリタ仮想マシンを用いた挙動マルウェア検出
EP3738058B1 (en) Defending against speculative execution exploits
US9825908B2 (en) System and method to monitor and manage imperfect or compromised software
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
US20200372129A1 (en) Defending Against Speculative Execution Exploits
US11238154B2 (en) Multi-lateral process trees for malware remediation
US20170090929A1 (en) Hardware-assisted software verification and secure execution
US10678922B2 (en) Detecting arbitrary code execution using a hypervisor
US9870466B2 (en) Hardware-enforced code paths
US10713357B2 (en) Detecting lateral movement using a hypervisor
US10339305B2 (en) Sub-execution environment controller
Baliga et al. Automated containment of rootkits attacks
JP2019061636A (ja) ファイルのウイルス対策スキャン実行のため仮想マシン上にログを生成するシステム及び方法
Otterstad et al. Low-level exploitation mitigation by diverse microservices
US11960598B2 (en) Runtime memory protection (RMP) engine
Di Pietro et al. CloRExPa: Cloud resilience via execution path analysis
Mahapatra et al. An online cross view difference and behavior based kernel rootkit detector
Lombardi et al. Heterogeneous architectures: Malware and countermeasures
PR-BRAZIL MARCUS FELIPE BOTACIN
Yin Malware detection and analysis via layered annotative execution
de Oliveira Virtual machine based mechanisms and tools for cyber attack prevention, analysis, and recovery
JP2016081348A (ja) 情報処理システム、情報処理装置、制御サーバ、生成サーバ、動作制御方法及び動作制御プログラム

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