KR102132501B1 - 매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어 - Google Patents

매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어 Download PDF

Info

Publication number
KR102132501B1
KR102132501B1 KR1020147025726A KR20147025726A KR102132501B1 KR 102132501 B1 KR102132501 B1 KR 102132501B1 KR 1020147025726 A KR1020147025726 A KR 1020147025726A KR 20147025726 A KR20147025726 A KR 20147025726A KR 102132501 B1 KR102132501 B1 KR 102132501B1
Authority
KR
South Korea
Prior art keywords
code
embedded device
embedded
program instructions
buried
Prior art date
Application number
KR1020147025726A
Other languages
English (en)
Other versions
KR20140125860A (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 KR20140125860A publication Critical patent/KR20140125860A/ko
Application granted granted Critical
Publication of KR102132501B1 publication Critical patent/KR102132501B1/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/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bioethics (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

매립 디바이스에 대한 공격을 금지하는 방법, 시스템 및 미디어가 제공된다. 일부 실시형태에 있어서, 매립 디바이스에 대한 공격을 금지하는 시스템이 제공되고, 이 시스템은 통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고; 상기 매립 디바이스와 관련된 제1 펌웨어를 수신하고; 상기 제1 펌웨어 내의 미사용 코드를 결정하고, 제2 펌웨어 내의 미사용 코드를 제거하며, 상기 제1 펌웨어의 나머지 코드 부분을 상기 제2 펌웨어 내에서 재구성함으로써 상기 제1 펌웨어와 기능적으로 등가인 상기 제2 펌웨어를 생성하고; 상기 제2 펌웨어를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함한다.

Description

매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어{METHODS, SYSTEMS, AND MEDIA FOR INHIBITING ATTACKS ON EMBEDDED DEVICES}
관련 출원에 대한 교차 참조
이 출원은 2012년 2월 15일자 출원한 미국 가특허 출원 제61/599,377호, 2012년 2월 22일자 출원한 미국 가특허 출원 제61/602,061호, 및 2013년 2월 15일자 출원한 미국 가특허 출원 제61/765,646호를 우선권 주장하며, 상기 우선권 출원들은 여기에서의 인용에 의해 그 전체 내용이 본원에 통합된다.
이 출원은 2010년 4월 22일자 출원한 미국 특허 출원 제12/765,814호와 관련이 있으며, 상기 미국 출원은 여기에서의 인용에 의해 그 전체 내용이 본원에 통합된다.
연방정부 지원 연구 개발에 관한 성명서
본 발명은 미 공군 연구소(Air Force Research Laboratory)가 수여한 허가 제FA8750-09-1-0075호, 미국 방위 고등 연구 계획국(Defense Advanced Research Projects Agency, DARPA)의 탄력 적응적 보안 호스트의 클린 슬레이트 설계(Clean-Slate Design of Resilient, Adaptive, Secure Hosts, CRASH) 프로그램에 의해 수여된 허가 제FA8750-10-2-0253호, 및 국가 정보 국장실(Office of the Director of National Intelligence, ODNI)의 정보 고등 연구 계획 활동(Intelligence Advanced Research Projects Activity, IARPA)에 의해 수여된 허가 제ONR FA8650-10-C77024호로 정부 지원을 받아 이루어진 것이다. 정부는 본 발명에 대해 소정의 권리를 갖는다.
기술 분야
본 발명은 매립 디바이스(embedded device)에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어에 관한 것이다.
공격자는 악성 코드를 주입하기 위해 컴퓨터 시스템의 취약점을 정기적으로 탐색한다. 예를 들면, 공격자는 스파이웨어 또는 루트킷(rootkit)을 이용하여 내부 네트워크에 접근할 수 있다. 그러한 소프트웨어는 물리적 또는 디지털 미디어(예를 들면, 이메일, 다운로드 등)로부터 컴퓨터 시스템에 쉽게 설치될 수 있고, 민감한 데이터를 수집하는 능력과 함께 기계(machine)에 대한 관리자 또는 "루트" 접근(access)을 상기 공격자에게 제공할 수 있다. 특히, 공격자는 컴퓨터 또는 네트워크에서 기웃거리기(snoop) 또는 엿듣기를 하고, 데이터를 다운로드하고 도망가기, 자산 및 정보 훔치기, 중요한 자산 및 정보 파괴하기, 및/또는 정보 변경하기 등을 할 수 있다. 루트킷은 특히 루트킷이 이전에 알려지지 않은 경우, 제로데이 공격(zero-day attack)에 의한 경우와 같이, 자신을 숨기고 탐지를 피하는 능력을 갖고 있다.
매립 디바이스, 예를 들면 라우터, 스위치, VOIP(voice over IP) 어댑터, 가상 사설망(Virtual Private Network, VPN) 장치, 및 방화벽 등은 글로벌 IT 환경 및 중요한 통신 기반구조 내에 다수 존재한다. 사실, 이러한 매립 디바이스들은 프린터, 무선 접근점, 인터넷 프로토콜(IP) 폰과 같은 특수 용도 기기, 및 이제는 현대의 가정 및 사무실에서 평범한 것이 된 다른 유사한 기기를 포함할 수 있다. 이들 디바이스는 전형적으로 스토크 컴포넌트(stock component)를 이용한 범용의 실시간 매립 운영체제를 구비하고 범용 컴퓨터와 상호작용할 수 있다. 가끔은 매립 디바이스 하드웨어 및 펌웨어의 다양한 개별 특성이 이러한 디바이스의 보안 취약점의 효과적인 광범위한 이용에 대한 방해를 생성하는 것으로 생각된다. 이와 관련하여, 대부분의 부품에 대한 매립 디바이스 제조자는 해킹 시도 및 다른 보안 파괴의 저항에 대한 불명료성에 피동적으로 의존한다.
그럼에도 불구하고, 공격자는 이러한 매립 디바이스를 공격하는 능력을 갖고 있다. 악성 코드에 감염된 컴퓨터의 네트워크는, 각각의 감염된 컴퓨터가 감염 컴퓨터의 소유자가 알지 못하게 가끔 공격자에 의해 통제될 수 있는 경우에, 일반적으로 봇넷(botnet)이라고 부르고, 이러한 네트워크 매립 디바이스가 봇넷에서 사용될 수 있다. 예를 들면, 네트워크 매립 디바이스는 틀에서 벗어난 디폴트 패스워드를 이용하여 타협할 수 있고 봇넷에서 사용될 수 있으며, 이때, 많은 경우에, 매립 디바이스는 네트워크 시스템의 핵심 통신 컴포넌트이다. 또한, 이러한 공격자들은 매립 디바이스에서 동작하는 펌웨어에 대한 정보를 갖고 있을 가능성이 높고, 따라서 대응하는 루트킷 및 다른 멀웨어(malware)를 고안하도록 설비될 수 있다.
이러한 위협에 대응하여, 많은 컴퓨터는 안티바이러스 소프트웨어 및/또는 방화벽에 의해 보호되고 있다. 그러나, 이러한 예방책이 항상 적절한 것은 아니다. 특히, 전통적인 안티바이러스 소프트웨어는 매립 디바이스에 대하여 작용하지 못하고, 일반적으로 말해서 이러한 매립 디바이스들은 보안성을 염두에 두고 설치되지 않는다. 더욱이, 이러한 매립 디바이스에서의 코드 또는 펌웨어는 가끔 사유재산이고 제3자에게 공개되지 않는다. 따라서, 다른 매립 디바이스에 대한 디바이스 펌웨어를 갱신 및 수정하는 것은 어려운 일이다.
그러므로, 매립 디바이스에 대한 공격을 금지할 필요가 있다.
각종 실시형태에 따라서, 매립 디바이스에 대한 공격을 금지하는 메카니즘이 제공된다.
일부 실시형태에 있어서, 라우터, 접근점, 모뎀, 웹캠, 프린터, 회의용 유닛(conferencing unit), VOIP 어댑터, VPN 디바이스, 군사용 무기 체계, 감독 제어 및 데이터 획득(supervisory control and data acquisition, SCADA) 제어 및/또는 관리 시스템, 프로그래머블 로직 컨트롤러(PLC) 시스템 및/또는 임의의 다른 적당한 디바이스와 같은 매립 디바이스에 고급 프로그래밍 언어로 작성된 코드를 주입하는 메카니즘이 제공된다. 일단 매립 디바이스에 코드가 주입되면, 주입된 코드는 매립 디바이스의 코드(예를 들면, 펌웨어)를 분석 및 수정하여 주입 코드에 대한 실행 환경을 만든다. 펌웨어 또는 코드는 자동 이진 축소 및/또는 이진 구조 무작위화법에 의해 강화(fortify)될 수 있다.
이러한 메카니즘은 소스 코드에 의존하지 않고 매립 디바이스의 코드 또는 펌웨어를 수정한다는 점에 주목하여야 한다. 예를 들면, 매립 디바이스의 코드는 매립 디바이스의 기능 입력 지점 또는 다른 메모리 정보에 대한 사전 지식 없이 주입 및 수정된다. 이러한 메카니즘은 매립 디바이스의 행동을 변경하지 않고 매립 디바이스의 코드를 수정한다는 점도 또한 주목해야 한다. 예를 들면, 일부 실시형태에 있어서, 수정된 또는 강화된 펌웨어는 호스트 프로그램과 함께 동작할 수 있고, 이 경우 매립 디바이스의 연산 자원들이 호스트 프로그램 및 강화 펌웨어(예를 들면, 그 침입 검출 메카니즘을 포함함)를 실행하도록 할당될 수 있다.
매립 디바이스에 대한 공격을 금지하는 방법, 시스템 및 미디어가 제공된다. 일부 실시형태에 있어서, 매립 디바이스에 대한 공격을 금지하는 시스템이 제공되고, 이 시스템은 통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고; 상기 매립 디바이스와 관련된 제1 펌웨어를 수신하고; 상기 제1 펌웨어 내의 미사용 코드를 결정하고, 제2 펌웨어 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 펌웨어로부터의 나머지 프로그램 명령어를 상기 제2 펌웨어 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써 상기 제1 펌웨어와 기능적으로 등가인 상기 제2 펌웨어를 생성하고; 상기 제2 펌웨어를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함한다.
일부 실시형태에 있어서, 매립 디바이스에 대한 공격을 금지하는 방법이 제공된다. 이 방법은 통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와; 상기 매립 디바이스와 관련된 제1 펌웨어를 수신하는 단계와; 상기 제1 펌웨어 내의 미사용 코드를 결정하고, 제2 펌웨어 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 펌웨어로부터의 나머지 프로그램 명령어를 상기 제2 펌웨어 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써 상기 제1 펌웨어와 기능적으로 등가인 상기 제2 펌웨어를 생성하는 단계와; 상기 제2 펌웨어를 상기 매립 디바이스에 주입하는 단계를 포함한다.
일부 실시형태에 있어서, 프로세서에 의해 실행될 때 상기 프로세서로 하여금 매립 디바이스에 대한 공격을 금지하는 방법을 수행하게 하는 컴퓨터 실행가능 명령어를 내포한 비일시적 컴퓨터 판독 가능한 매체가 제공된다. 상기 방법은 통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와; 상기 매립 디바이스와 관련된 제1 펌웨어를 수신하는 단계와; 상기 제1 펌웨어 내의 미사용 코드를 결정하고, 제2 펌웨어 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 펌웨어로부터의 나머지 프로그램 명령어를 상기 제2 펌웨어 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써 상기 제1 펌웨어와 기능적으로 등가인 상기 제2 펌웨어를 생성하는 단계와; 상기 제2 펌웨어를 상기 매립 디바이스에 주입하는 단계를 포함한다.
도 1a는 본 발명의 일부 실시형태에 따른, 매립 디바이스에 대한 공격을 금지하는 메카니즘의 구현에 적합한 예시적인 시스템을 보인 개략도이다.
도 1b는 본 발명의 일부 실시형태에 따른, 매립 디바이스에 대한 공격을 금지하는 메카니즘의 구현에 사용될 수 있는 관리자 컴퓨터의 구체적인 예를 보인 도이다.
도 2는 본 발명의 일부 실시형태에 따른, 범용 컴퓨터의 예 및 매립 디바이스의 예를 보인 도이다.
도 3은 본 발명의 일부 실시형태에 따른, 매립 디바이스와 관련된 최초 펌웨어의 예 및 강화 펌웨어의 예를 보인 도이다.
도 4는 본 발명의 일부 실시형태에 따른, 도 2의 매립 디바이스의 메모리 콘텐츠의 예를 보인 도이다.
도 5는 본 발명의 일부 실시형태에 따른, 매립 디바이스에서 강화 펌웨어를 생성 및 구성하는 예시적인 프로세스의 흐름도이다.
도 6a는 본 발명의 일부 실시형태에 따른, 매립 디바이스에서 강화 펌웨어를 생성하는 예시적인 프로세스의 흐름도이다.
도 6b는 본 발명의 일부 실시형태에 따른, 매립 디바이스와 관련된 최초 펌웨어의 예 및 도 3의 강화 펌웨어의 예를 보인 도이다.
도 7a는 본 발명의 일부 실시형태에 따른, 이진 분할 및/또는 이진 구조 무작위화법에 대한 예시적인 프로세스의 흐름도이다.
도 7b는 본 발명의 일부 실시형태에 따른, 매립 디바이스와 관련된 최초 펌웨어의 예 및 재배치 코드를 포함한 강화 펌웨어의 예를 보인 도이다.
도 8은 본 발명의 일부 실시형태에 따른, 최초 펌웨어와 기능적으로 등가인 강화 펌웨어를 생성하는 예시적인 프로세스의 흐름도이다.
도 9a는 본 발명의 일부 실시형태에 따른, 제어 인터셉트를 이용하여 강화 펌웨어를 주입하는 예시적인 프로세스의 흐름도이다.
도 9b 내지 도 9d는 본 발명의 일부 실시형태에 따른, 강화 펌웨어의 일부일 수 있는 모니터링 장치의 예를 보인 개략도이다.
도 10은 본 발명의 일부 실시형태에 따른, 주입된 페이로드의 실행을 관리하는 예시적인 프로세스의 흐름도이다.
도 11a는 본 발명의 일부 실시형태에 따른, 복수의 모니터링 장치를 구현하는 예시적인 프로세스의 흐름도이다.
도 11b는 본 발명의 일부 실시형태에 따른, 매립 디바이스에 설치된 복수의 모니터링 장치의 예를 보인 개략도이다.
도 12는 본 발명의 일부 실시형태에 따른, 침입의 검출에 관한 알람을 트리거하는 예시적인 프로세스의 흐름도이다.
일부 실시형태에 따라서, 매립 디바이스에 대한 공격을 금지하는 메카니즘이 제공된다. 여기에서 사용되는 바와 같이, 매립 디바이스는 라우터, 접근점, 모뎀, 웹캠, 프린터, 회의용 유닛(conferencing unit), VOIP 어댑터, VPN 디바이스, IP 폰, 가정용 기기, 텔레비전 세트, 스트리밍 플레이어, 및/또는 임의의 다른 적당한 디바이스를 포함할 수 있다. 예를 들면, 매립 디바이스는 군사용 무기 체계, 감독 제어 및 데이터 획득(SCADA) 제어 및/또는 관리 시스템, 프로그래머블 로직 컨트롤러(PLC) 시스템을 또한 포함할 수 있다. 이들 메카니즘은 일반적으로 호스트 기반 방어물을 매립 디바이스에서 동작하는 임의의 호스트 프로그램에 주입하는 것을 포함할 수 있다. 주입된 호스트 기반 방어물을 포함한 매립 디바이스는 여기에서 "공생(symbiotec) 매립 디바이스", "공생 매립 기계", "심비오트"(symbiote), "기생 매립 디바이스" 또는 "모니터링 장치"라고 부른다.
일부 실시형태에 있어서, 주입된 호스트 기반 방어물은 매립 디바이스와 관련된 펌웨어 또는 호스트 프로그램과 나란히 실행할 수 있다. 예를 들면, 주입된 침입 검출 애플리케이션은 펌웨어를 모니터링하고 매립 디바이스와 관련된 펌웨어의 권한 없는 수정을 검출할 수 있다. 다른 예로서, 주입된 침입 검출 애플리케이션은 권한 없는 제3자가 매립 디바이스와 관련된 펌웨어를 디스에이블하거나 방해하거나 또는 다른 방식으로 수정하려고 시도하는 것을 판단할 수 있다. 또한, 주입된 침입 검출 애플리케이션은 권한 없는 제3자가 주입된 호스트 기반 방어물을 디스에이블하거나 방해하거나 또는 다른 방식으로 수정하려고 시도하는 것을 판단할 수 있다. 펌웨어 또는 호스트 프로그램의 실행 및 완전성을 모니터링함으로써, 주입된 침입 검출 애플리케이션은 매립 디바이스를 이용하지 못하도록 강화할 수 있다.
일부 실시형태에 있어서, 매립 디바이스의 호스트 프로그램 및/또는 주입된 침입 검출 애플리케이션에 대하여 적응법, 무작위화법 및/또는 다형 변이법을 적용할 수 있다. 예를 들면, 일부 실시형태에 있어서, 임의의 실행가능 이미지 또는 펌웨어 이미지를 입력으로서 획득한 것에 응답하여, 펌웨어 이미지의 수정본이 생성될 수 있다. 더 구체적인 예로서, 펌웨어 이미지의 수정본은 최초 펌웨어 이미지의 강화되고 기능적으로 등가인 변체일 수 있다. 이것은 예를 들면 잠재적으로 취약한 공격면을 감소시키기 위해 미사용 코드 부분(예를 들면, 매립 디바이스의 특수한 구성 상태에 의해 결정됨)을 결정 및 제거하는 것을 포함할 수 있다. 이 자유 공간을 이용함으로써, 펌웨어 이미지의 나머지 실행가능한 부분은 무작위화되고 기능적으로 등가인 이진 이미지로 재구성될 수 있다. 추가적으로 또는 대안적으로, 무작위화 동작은 최초 펌웨어의 코드의 기본 블록들을 분해하여 이들을 결과적인 강화 펌웨어 이미지 내의 무작위 선택 위치에 재배치함으로써 수행될 수 있다.
일부 실시형태에 있어서, 매립 디바이스에 주입된 강화 펌웨어는 모니터링 장치를 포함할 수 있다. 모니터링 장치는 침입 검출 및/또는 방지 특징을 포함할 수 있다. 그러한 모니터링 장치를 주입하는 것은 최초 펌웨어의 코드를 수정하여 주입 코드에 대한 실행 환경을 생성하는 것을 수반할 수 있다. 예를 들면, 모니터링 장치 또는 임의의 다른 적당한 컴포넌트는 기능 입력 지점, 복귀 명령어, 프로그램 명령어 위치 및/또는 코드 내의 다른 위치를 결정 및 선택하고 시스템 자원(예를 들면, 처리 및/또는 기억 자원)을 재배치하여 모니터링 장치가 매립 디바이스의 코드와 동시에 시간 공유 방식으로 실행하게 할 수 있다. 이것은 예를 들면 매립 디바이스의 행동을 다른 방식으로 변경하지 않고 모니터링 장치의 반복 실행을 촉진할 수 있다. 모니터링 장치가 제3자 코드(예를 들면, 펌웨어 코드, 운영체제 코드, 및/또는 매립 디바이스의 제조자가 제공하는 다른 코드)를 사용하지 않을 때 모니터링 장치가 운영 환경과 관련하여 인지불능(agnostic)으로 될 수 있다는 점에 주목하여야 한다.
일부 실시형태에 있어서, 방어 메카니즘은 호스트 프로그램에 주입되는 자기 내장형 실행 환경일 수 있다는 점에 주목하여야 한다. 일부 실시형태에 있어서, 방어 메카니즘은 권한 없는 제3자에 의해 온라인 또는 오프라인 공격을 통하여 수정 또는 디스에이블될 수 없다는 점에 또한 주목하여야 한다. 일부 실시형태에 있어서, 방어 메카니즘은 호스트 프로그램의 코드 및 실행 상태에 대하여 가시성을 가질 수 있고, 관측된 이벤트에 대하여 피동적으로 모니터링하거나 적극적으로 반응할 수 있다는 점에 또한 주목하여야 한다(예를 들면, 매립 디바이스의 펌웨어를 수정하려고 시도하는 악성 코드는 방어 메카니즘을 검출할 수 없지만, 방어 메카니즘은 악성 코드를 검출할 수 있다).
이러한 메카니즘은 다양한 응용에서 사용될 수 있다. 예를 들면, 이러한 메카니즘은 보안 특징을 가진 전개된 또는 기존의 디바이스(각각 다른 펌웨어를 갖는 것)를 업그레이드 및 증대시키는 기회를 제공하여 그러한 디바이스가 나쁜 목적으로 설계된 공격으로부터 보호되게 한다. 다른 예로서, 이러한 메카니즘은 검출 및/또는 보안 애플리케이션(예를 들면, 안티바이러스 애플리케이션, 침입 검출 시스템 등)을 구비한 다양한 매립 디바이스를 개조하기 위해 사용될 수 있다. 더 특수한 예로서, 루트킷 검출기를 라우터에 주입할 수 있고, 이 경우 상기 검출기는 라우터의 동작 코드의 완전성을 계속적으로 검증한다.
도 1a를 참조하면, 펌웨어 강화 메카니즘이 구현될 수 있는 시스템(100)의 예가 도시되어 있다. 도시된 것처럼, 시스템(100)은 복수의 협력 컴퓨터 시스템(102, 104, 106), 통신 네트워크(108), 네트워크 매립 디바이스(110), 통신 링크(122), 공격자 컴퓨터(124) 및 관리자 컴퓨터(126)를 포함한다.
협력 시스템(102, 104, 106)은 대학교, 기업체, 정부, 비영리 단체, 가족, 개인, 및/또는 임의의 다른 적당한 사람 및/또는 엔티티에 의해 소유, 운용 및/또는 사용되는 시스템일 수 있다. 협력 시스템(102, 104, 106)은 임의 수의 사용자 컴퓨터, 서버, 방화벽, 라우터, 스위치, 게이트웨이, 무선 네트워크, 유선 네트워크, 침입 검출 시스템, 및 임의의 다른 적당한 디바이스를 포함할 수 있다. 또한, 협력 시스템(102, 104, 106)은 범용 컴퓨터, 특수 용도 컴퓨터, 디지털 처리 장치, 서버, 워크스테이션, 및/또는 각종의 다른 적당한 장치와 같은 하나 이상의 프로세서를 포함할 수 있다. 협력 시스템(102, 104, 106)은 운영체제(OS), 소프트웨어 애플리케이션, 기능 및/또는 절차의 라이브러리, 배경 데몬 프로세스 등의 프로그램, 및/또는 각종의 다른 적당한 프로그램을 동작시킬 수 있다. 일부 실시형태에 있어서, 협력 시스템(102, 104, 106)은 하나 이상의 가상 머신을 지원할 수 있다. 네트워크(100)에는 임의 수(1개를 포함함)의 협력 시스템(102, 104, 106)이 존재할 수 있고, 협력 시스템(102, 104, 106)은 서로 같을 수도 있고 다를 수도 있다. 예를 들면 협력 시스템(102, 104 및/또는 106)은 네트워크형 매립 디바이스(110, 112, 114)에 접속될 수 있다.
여기에서 사용되는 것처럼, 매립 디바이스(110, 112, 114)는 임의 수의 라우터, 스위치, 게이트웨이, 웹캠, 게이밍 시스템, 입력 장치, 촬상 장치, 회의용 유닛, 통신 장치, VPN 디바이스, VOIP 어댑터, 프린터, 군사용 무기 체계, 감독 제어 및 데이터 획득(SCADA) 제어 및/또는 관리 시스템, 프로그래머블 로직 컨트롤러(PLC) 시스템뿐만 아니라 임의의 다른 적당한 유형의 디바이스일 수 있다. 더 구체적인 예로서, 매립 디바이스(110)는 인터록 파이프라인 스테이지 없는 마이크로프로세서(Microprocessor without Interlocked Pipeline Stages, MIPS) 기반 매립 디바이스, 파워PC 기반 매립 디바이스, 또는 ARM 기반 매립 디바이스, 예를 들면 시스코 시스템 라우터 또는 링크시스(Linksys) 라우터일 수 있다. 네트워크(100)에는 임의 수의 매립 디바이스가 존재할 수 있지만, 도 1에서는 도면의 복잡성을 피하기 위해 3개만 도시하였다는 점에 주목하여야 한다. 각각의 매립 디바이스(110, 112, 114)는 각각의 매립 디바이스(110, 112, 114)에서 동작하는 펌웨어와 같은 코드를 포함할 수 있다는 점에 또한 주목하여야 한다. 일부 실시형태에 있어서, 매립 디바이스(110, 112 및/또는 114) 상의 코드는 매립 디바이스(110) 내의 기능 입력 지점, 기능 또는 라이브러리 루틴 복귀 명령어 위치, 기억 위치 등이 알려지지 않은 사유재산일 수 있다. 매립 디바이스의 코드는 예컨대 매립 디바이스의 제조자, 매립 디바이스의 종류, 매립 디바이스의 모델 등에 따라 다른 매립 디바이스의 코드와 다를 수 있다는 점에 또한 주목하여야 한다.
통신 네트워크(108)는 컴퓨터, 서버, 매립 디바이스 등의 사이에서 통신을 촉진하기 위한 임의의 적당한 네트워크일 수 있다. 예를 들면, 통신 네트워크(108)는 개인용 컴퓨터 네트워크, 공개 컴퓨터 네트워크(예를 들면, 인터넷), 전화 통신 시스템, 케이블 통신 시스템, 위성 통신 시스템, 무선 통신 시스템, 임의의 다른 적당한 네트워크 또는 시스템, 및/또는 상기 네트워크 및/또는 시스템의 임의 조합을 포함할 수 있다. 일부 실시형태에 있어서, 공격자 컴퓨터(124)를 사용하는 공격자는 내부 네트워크 접근을 획득할 수 있다. 예를 들면, 공격자는, 스파이웨어 또는 루트킷을 이용하여, 매립 디바이스(110, 112, 114)와 같은 네트워크 상의 매립 디바이스에 난입함으로써 통신 네트워크(108)에 접근할 수 있다. 그러한 소프트웨어는 매립 디바이스에 쉽게 설치되어 네트워크 상의 다른 장치에 대한 접근 능력뿐만 아니라 민감한 데이터를 수집하는 능력을 공격자에게 제공할 수 있다. 일반적으로, 매립 디바이스의 소유자는 자신의 매립 디바이스의 상태를 면밀히 감시하지 않고, 따라서 매립 디바이스에 대한 성공적인 해킹 공격이 검출되지 않고 쉽게 이루어질 수 있다.
통신 링크(122)는 협력 시스템(102, 104 및/또는 106), 매립 디바이스(110, 112 및/또는 114) 및 공격용 컴퓨터 시스템(124)을 통신 네트워크(108)에 접속하는 임의의 적당한 메카니즘일 수 있다. 통신 링크(122)는 T1 또는 T3 접속, 케이블 모뎀 접속, 디지털 가입자 선 접속, 와이파이(Wi-Fi) 또는 802.11(a),(b),(g) 또는 (n) 접속, 다이얼업 접속 등과 같은 임의의 적당한 유선 또는 무선 통신 링크, 및/또는 임의의 다른 적당한 통신 링크일 수 있다. 대안적으로, 통신 링크(122)는 일부 경우에 네트워크(100)로부터 제거될 수 있고, 그 경우에, 협력 시스템(102, 104 및/또는 106)과 매립 디바이스(110, 112 및/또는 114)는 통신 네트워크(108)에 직접 접속될 수 있다.
관리자 컴퓨터(126)는 데스크톱 컴퓨터, 랩톱, 태블릿, 스마트폰, 셀폰 또는 임의의 다른 적당한 컴퓨팅 장치일 수 있다. 특히, 도 1b는 관리자 컴퓨터(126)의 예시적인 구조도이다. 도시된 것처럼, 관리자 컴퓨터(126)는 하드웨어 프로세서(132)(마이크로프로세서, 디지털 신호 프로세서, 컨트롤러 등일 수 있음), 메모리(134), 통신 인터페이스(136), 디스플레이 인터페이스 및 디스플레이(138), 사용자 입력 장치(140), 데이터베이스 및/또는 스토리지(142), 통신 버스(144) 등과 같은 임의의 적당한 컴포넌트들을 포함할 수 있다.
일부 실시형태에 있어서, 관리자 컴퓨터(126) 또는 프로세서(132)는 공격 또는 약탈에 대하여 적어도 하나의 매립 디바이스(110, 112 및/또는 114)를 보호할 수 있는 강화 펌웨어를 생성하도록 구성될 수 있다. 추가적으로 또는 대안적으로, 관리자 컴퓨터(112) 또는 프로세서(132)는 매립 디바이스(110, 112, 114) 중 하나에 대한 침입의 표시를 수신하도록 구성될 수 있다. 그러한 표시는 악성 코드가 매립 디바이스의 특수한 메모리 어드레스를 덮어쓰기하려고 시도할 때, 또는 그 매립 디바이스에 설치되어 있는 강화 펌웨어의 일부인 침입 검출 소프트웨어(예를 들면, 모니터링 장치)를 디스에이블하려고 할 때 생성될 수 있다. 예로서, 관리자 컴퓨터는 도 5에 도시된 프로세스(500)와 관련하여 설명하는 하나 이상의 단계를 수행할 수 있다.
도 2는 본 발명의 일부 실시형태에 따른 범용 컴퓨터(210) 및 매립 디바이스(110)의 예를 보인 도이다. 범용 컴퓨터(210)는 랩톱 또는 데스크톱과 같은 임의의 범용 컴퓨터일 수 있다. 범용 컴퓨터는 협력 시스템(102, 104, 106) 중 임의의 하나의 일부일 수 있고, 네트워크(108)와 같은 하나 이상의 통신 네트워크를 통하여 매립 디바이스(110)에 접속될 수 있다. 범용 컴퓨터(210)는 하드웨어 프로세서(211)(마이크로프로세서, 디지털 신호 프로세서, 컨트롤러 등일 수 있음), 메모리(212), 통신 인터페이스(213), 디스플레이 인터페이스 및 디스플레이(214), 사용자 입력 장치(215), 데이터베이스 및/또는 스토리지(216), 통신 버스(217) 등과 같은 임의의 적당한 컴포넌트들을 포함할 수 있다.
더욱이, 일부 실시형태에 있어서, 여기에서 설명하는 프로세스를 수행하기 위한 명령어를 저장하는 임의의 적당한 컴퓨터 판독 가능한 매체를 사용할 수 있다. 예를 들면, 일부 실시형태에 있어서, 컴퓨터 판독 가능한 매체는 일시적인 것 또는 비일시적인 것일 수 있다. 예를 들면, 비일시적 컴퓨터 판독 가능한 매체는 자기 매체(하드 디스크, 플로피 디스크 등), 광학 매체(콤팩트 디스크, 디지털 비디오 디스크, 블루레이 디스크 등), 반도체 매체(플래시 메모리, 전기적 프로그래머블 판독 전용 메모리(EPROM), 전기적으로 소거가능한 프로그래머블 판독 전용 메모리(EPROM) 등), 전송중에 임의의 영속성의 외형이 결여되거나 휘발되지 않는 임의의 적당한 매체, 및/또는 임의의 적당한 형체 있는 매체와 같은 매체를 포함할 수 있다. 다른 예로서, 일시적 컴퓨터 판독 가능한 매체는 네트워크, 유선, 도체, 광섬유 및 회로 상의 신호, 전송중에 임의의 영속성의 외형이 결여되고 휘발되는 임의의 적당한 매체, 및/또는 임의의 적당한 형체 없는 매체를 포함할 수 있다.
전술한 바와 같이, 일부 실시형태에 있어서, 매립 디바이스(110)는 스마트 서모스탯, 냉장고, TV 세트, DVD 플레이어, 스트리밍 플레이어, 디지털 카메라와 같은 소비자 기기, 또는 다른 적당한 장치일 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에 있어서, 매립 디바이스는 적어도 부분적으로 범용 컴퓨터(210)에 서비스를 제공하도록 구성된 임의의 적당한 매립 디바이스일 수 있다. 예를 들면, 매립 디바이스는 스위치, 라우터, 네트워크 스위치, 게이트웨이와 같은 임의의 적당한 네트워크 기반구조 컴포넌트, 또는 적어도 부분적으로 범용 컴퓨터(210)에게 네트워크 접속을 제공하는 다른 적당한 네트워크 컴포넌트일 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에 있어서, 매립 디바이스는 웹캠, 스캐너, 프린터와 같은 입출력(I/O) 장치, 또는 다른 적당한 주변 장치일 수 있다.
일부 실시형태에 있어서, 매립 디바이스(110)는 네트워크 가능형일 수 있다. 즉, 매립 디바이스(110)는 매립 디바이스(110)를 근거리 통신망, 인터넷 또는 임의의 적당한 유형의 통신망에 접속시킬 수 있는 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 도 2의 예에 도시된 것처럼, 매립 디바이스(110)는 네트워크 가능형 프린터이다.
역시 도 2에 도시된 것처럼, 매립 디바이스(110)는 통신 인터페이스(220), 프린팅 하드웨어(230), 프린터 엔진 컨트롤러(240) 및 포맷터 보드(250)와 같은 임의의 적당한 컴포넌트를 포함할 수 있다. 통신 인터페이스(220)는 USB 인터페이스, 직렬 인터페이스, 와이파이 인터페이스, 이더넷 인터페이스, 3G 인터페이스, 블루투스 인터페이스, 또는 임의의 다른 적당한 인터페이스를 포함할 수 있다. 프린팅 하드웨어(230)는 롤러, 액추에이터, 용지 트레이, 드럼, 정착기(fuser), 및/또는 일반적으로 프린터에 구비되어 있는 다른 기계적 또는 전기기계적 컴포넌트를 포함할 수 있다. 프린터 엔진 컨트롤러(240)는 프린팅 하드웨어(230)의 동작을 제어하기 위한 집적회로(예를 들면, 칩, 메모리 또는 프로세서 상의 시스템) 및/또는 소프트웨어를 포함할 수 있다. 따라서, 일부 실시형태에 있어서, 프린터 엔진 컨트롤러(240)는 프린팅 하드웨어(230)의 롤러, 드럼 및 정착기를 온 및 오프로 전환할 수 있는 로레벨 로직을 구현할 수 있다. 포맷터 보드(250)는 프린터 엔진 컨트롤러(240)에 의해 제어되지 않는 매립 디바이스(110)의 동작의 모든 다른 양태를 제어하기 위한 하드웨어 및/또는 소프트웨어를 포함할 수 있고, 프로세서(260), 스토리지 메모리(270) 및 펌웨어 메모리(280)와 같은 임의의 적당한 컴포넌트를 포함할 수 있다. 비록 이 예에서는 포맷터 보드(250)가 매립 디바이스(210)를 통한 제어를 프린터 엔진 컨트롤러(240)와 공유하지만, 다른 예에서는 포맷터 보드(250)가 매립 디바이스의 모든 동작 양태에 대한 완전한 제어를 가질 수 있다. 그러한 예에 있어서, 매립 디바이스는 프린팅 상황 및 프린터에 특유한 프린터 엔진 컨트롤러 또는 다른 하드웨어를 갖지 않을 수 있다.
프로세서(260)는 MIPS, 파워PC 또는 ARM과 같은 하나 이상의 일반 용도 또는 특수 용도 하드웨어 프로세서를 포함할 수 있다. 스토리지 메모리(270)는 RAM, 플래시 메모리, 하드 드라이브, 또는 임의의 다른 적당한 유형의 메모리를 포함할 수 있다. 펌웨어 메모리(280)는 플래시 ROM 칩 또는 다른 유사한 장치일 수 있다. 펌웨어 메모리(280)는 매립 디바이스(110)의 펌웨어를 저장하는데 사용할 수 있다. 펌웨어는 실행된 때 매립 디바이스(110)로 하여금 그 핵심 기능(예를 들면, 이 예에서는 프린팅, 매립 디바이스가 카메라 장치인 경우에는 사진찍기, 매립 디바이스(110)가 미디어 플레이어 또는 텔레비전 장치인 경우에는 미디어 콘텐츠 재생하기, 매립 디바이스(110)가 라우터인 경우에는 네트워크 패킷을 라우팅하기 등)을 수행하게 하는 프로세서 실행가능 명령어를 포함할 수 있다. 비록 이 예에서는 스토리지 메모리(270) 및 펌웨어 메모리(280)가 별도의 요소로서 도시되어 있지만, 다른 예에서는 이들이 동일한 하드웨어 모듈에 위치되고 논리적으로 분리될 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에 있어서, 매립 디바이스(110)는 매립 디바이스의 펌웨어를 비롯해서 매립 디바이스에 의해 활용되는 모든 유형의 데이터를 저장하기 위해 사용될 수 있는 한가지 유형만의 메모리를 포함할 수 있다.
일부 실시형태에 있어서, 매립 디바이스(110)는 펌웨어 메모리(280)의 콘텐츠가 디바이스의 사용자에게 접근 불가능하게 되는 방식으로 구성될 수 있다. 스토리지 메모리(270)와는 달리, 펌웨어 메모리(280)는 디바이스의 정상 동작 중에 수정할 수 없게 될 수 있다. 그러한 실시형태에 있어서, 펌웨어 메모리(280)의 콘텐츠는 펌웨어 갱신 절차를 이용하여 갱신될 수 있다. 이러한 절차 중에, 펌웨어 메모리(280)의 콘텐츠는 소거되거나 새로운 펌웨어 이미지로 덮어쓰기될 수 있다. 일부 실시형태에 있어서, 펌웨어 이미지는 펌웨어 메모리(280)의 각 섹터(예를 들면, 기록된 섹터만, 또는 기록된 섹터와 빈 섹터 모두)로 구성된 아카이브 파일(archive file)일 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에 있어서, 펌웨어 이미지는 펌웨어 메모리(280)의 덮어쓰기의 기초로서 사용될 수 있는 임의의 적당한 펌웨어 갱신 파일일 수 있다. 펌웨어 및 펌웨어 이미지는 상호 교환적으로 사용될 수 있다는 점에 주목하여야 한다.
매립 디바이스(110)는 펌웨어 치환 공격을 받기 쉬울 수 있다. 그러한 공격은 매립 디바이스(110)의 최초 펌웨어가 악성 코드에 감염된 펌웨어로 치환되는 결과를 가져올 수 있다. 악성 코드는 해커가 네트워크(108)에 접근하거나 매립 디바이스(110)에 의해 프린트되는 정보에 접근할 수 있게 한다. 펌웨어 치환 공격의 유일한 징후는 공격이 수행되고 있을 때 특정 시간 동안(예를 들면, 1분) 디바이스가 이용불능으로 되는 것일 수 있다. 이와 관련하여, 및 매립 디바이스가 가끔 시스템 관리자에 의해 주의 깊게 모니터링되지 않기 때문에, 펌웨어 치환 공격은 탐지되지 않고 매우 쉽게 이루어질 수 있다. 그러한 공격을 방지하기 위해, 매립 디바이스(110)의 최초 펌웨어는 여기에서 설명하는 하나 이상의 방법을 이용하여 강화될 수 있다. 펌웨어를 강화시키는 것은 최초 펌웨어와는 다르지만 기능적으로는 최초 펌웨어와 등가인 강화 펌웨어 이미지를 생성하는 단계를 포함할 수 있다. 전술한 바와 같이, 강화된 펌웨어는 최초 펌웨어에 비하여 해킹 공격을 받을 가능성이 더 적다.
도 3은 본 발명의 일부 실시형태에 따른, 매립 디바이스(110)의 최초 펌웨어의 예 및 강화된 펌웨어의 예를 포함하고 있다. 최초 펌웨어(310)와 강화 펌웨어(320)는 둘 다 기계어 명령어와 같은 명령어를 포함하고 있는 펌웨어 이미지일 수 있다. 도시된 것처럼, 최초 펌웨어는 원격 펌웨어 갱신(remote firmware update, RFU) 모듈(312), 네트워크 접속 모듈(314), 프린팅 모듈(316) 및 공유 라이브러리(318)을 포함할 수 있다. RFU 모듈(312)은 매립 디바이스(110)의 펌웨어를 원격에서 갱신하기 위한 복수의 명령어를 포함할 수 있고, 이 명령어들은, 프로세서(260)에 의해 실행된 때, 프로세서가 네트워크(108)로부터 수신한 펌웨어 갱신 명령어를 수신하여 실행할 수 있게 한다. 더 구체적으로, RFU 모듈(312)은 공격자(예를 들면, 공격자 컴퓨터(124))가 펌웨어 치환 공격을 탑재하기 위해 사용될 수 있다. 네트워크 접속 모듈(314)은, 프로세서(260)에 의해 실행된 때, 프로세서가 네트워크(212)를 통하여 메시지(예를 들면, 프린트 작업, 갱신 요청, 핑(ping) 등)를 수신할 수 있게 하는 명령어를 포함할 수 있다. 프린팅 모듈(316)은, 프로세서(260)에 의해 실행된 때, 프로세서(260)가 프린터 엔진 컨트롤러(240)에 대하여 프린트되는 정보를 공급하게 하는 명령어를 포함할 수 있다. 이 예에서, 모듈(312, 314, 316)은 어떠한 코드도 공유하지 않는다. 이와 대조적으로, 공유 라이브러리(318)는 네트워크 접속 모듈(314) 및 프린팅 모듈(316) 양자에 의해 잠재적으로 호출될 수 있는 프로세서 실행가능 명령어를 포함할 수 있다.
최초 펌웨어(310)와 유사하게, 강화 펌웨어(320)도 또한 네트워크 접속 모듈(314)과 프린팅 모듈(316)을 포함할 수 있다. 그러나, RFU 모듈(312)은 강화 펌웨어(320)에 포함되지 않도록 설계될 수 있다. 그 이유는, 전술한 것처럼, RFU 모듈(312)이 매립 디바이스(110)에 펌웨어 치환 공격을 탑재하기 위해 사용될 수 있기 때문이다. 또한, 강화 펌웨어(320)에서는 공유 라이브러리(318)가 공유 라이브러리(318)의 카피(318a, 318b)로 교체될 수 있다. 일부 실시형태에 있어서, 공유 라이브러리(318)의 카피(318a)는 네트워크 접속 모듈(314)에 지정되고 카피(318b)는 프린팅 모듈(316)에 지정될 수 있다. 따라서, 공유 라이브러리(318)와는 달리, 공유 라이브러리의 카피(318a, 318b)는 매립 디바이스의 복수의 모듈에게 공유되지 않는다. 또한, 강화 펌웨어(320)는 모니터링 장치(330)를 포함할 수 있다. 모니터링 장치(330)는 매립 디바이스(110)에서의 악성 코드의 실행을 금지 또는 검출하도록 구성될 수 있다. 도 4에 도시한 것처럼, 강화 펌웨어(320)가 매립 디바이스에 설치된 경우, 모니터링 장치(330)는 최초 펌웨어(310)가 매립 디바이스에서 사용되는 경우에는 비어 있는 펌웨어 메모리(380)의 부분(410)을 점유할 수 있다. 더 구체적으로, 매립 디바이스에 주입된 코드는 매립 디바이스의 미사용 메모리의 작은 부분(예를 들면, 도 4에서 메모리의 미사용 부분(410))이 할당될 수 있다. 미사용 메모리의 이 부분 내에서, 페이로드 실행 코드는 페이로드 실행 환경 및 타겟 코드 양자를 메모리 부분(420) 내에 매립할 수 있다. 미사용 메모리의 나머지 부분은 주입된 페이로드의 실행 콘텍스트를 저장하기 위해 사용될 수 있다.
도 5는 본 발명의 일부 실시형태에 따른 매립 디바이스(110)를 구성하는 프로세스(500)의 예를 보인 것이다. 단계 510에서, 네트워크(100) 내의 하나 이상의 취약점 있는 매립 디바이스가 식별될 수 있다. 일부 실시형태에 있어서, 상기 하나 이상의 디바이스를 식별하는 과정은 프로세스(500)를 실행하는 프로세서에 의해 상기 디바이스의 식별자를 메모리로부터 검색하는 단계 및/또는 식별자를 사용자 입력으로서 수신하는 단계를 포함할 수 있다. 추가적으로 또는 대안적으로, 디바이스는 관리자 컴퓨터(126)를 이용하여 네트워크(108)를 스캔하고 네트워크에서 발견되는 각종 매립 디바이스를 핑거프린팅함으로써 자동으로 식별될 수 있다. 매립 디바이스의 핑거프린팅은 매립 디바이스에게 메시지를 전송하는 단계와, 메시지에 대한 응답을 수신하는 단계와, 상기 응답을 처리하여 하나 이상의 장치 특성, 예를 들면 각 장치의 종류(예를 들면, 라우터, 프린터, 스캐너, 미디어 재생 장치, 전화 장치 등), 장치에서 실행되는 운영체제(예를 들면, iOS, 브이웨어(Vware) 등), 각 장치에서 사용되는 프로세서의 종류, 또는 임의의 다른 적당한 특성을 결정하는 단계를 수반할 수 있다. 일부 실시형태에 있어서, 네트워크(100) 내의 복수의 장치가 핑커프린팅되면, 핑거프린팅의 결과로서 획득된 정보가 취약점이 있는 것으로 알려진 장치의 리스트와 비교되고, 이것에 의해 잠재적으로 해킹 공격의 위협을 받고 있는 상기 핑거프린팅된 장치를 식별할 수 있다. 이 예에서, 매립 디바이스(110)는 취약점 있는 매립 디바이스로서 식별된다.
단계 520에서, 매립 디바이스(110)의 최초 펌웨어(310)가 메모리로부터 검색된다. 비록 여기에서 설명하는 실시형태가 침입 검출 메카니즘 및 코드 변경 검출 메카니즘과 같이, 일반적으로 매립 디바이스와 관련된 최초 펌웨어를 획득하고 그 펌웨어를 보안 특징으로 강화하는 것과 관련이 있지만, 이것은 단순히 예시하는 것이라는 점에 주목하여야 한다. 예를 들면, 매립 디바이스와 관련된 복수의 실행 파일이 검색되고 보안 특징을 통합하도록 수정될 수 있다.
단계 530에서, 최초의 펌웨어는 강화된 펌웨어(320)를 생성하도록 수정된다. 최초 펌웨어(310)의 수정은 하기의 단계 중 하나 이상을 포함할 수 있다:
M1: 최초 펌웨어(310)에서 코드를 삭제하는 단계;
M2: 최초 펌웨어(310)를 변이시키는 단계;
M3: 최초 펌웨어(310)를 부풀리는 단계;
M4: 모니터링 장치(MM)를 최초 펌웨어(310)에 주입하는 단계; 및
M5: 상기 M1, M2, M3 및 M4의 임의의 적당한 조합.
최초 펌웨어(310)에서의 소정의 루트킷 공격은 최초 펌웨어(310)의 특정 명령어를 임시 교정(patching)하여 펌웨어에서 은닉 백도어(backdoor)를 생성하는 단계를 수반할 수 있다. 이와 관련하여, 수정 M1 및/또는 M2를 실행함으로써 최초 펌웨어(310)의 구조 및/또는 토폴로지를 변경할 수 있고, 이것에 의해 임시 교정될 수 있는 메모리 어드레스를 해커가 알아내는 것이 점차적으로 어려워진다. 유사하게, 수정 M3는 매립 디바이스의 펌웨어의 사이즈를 증가시키고, 이것에 의해 악성 코드가 저장될 수 있는 미사용 메모리 또는 임의의 빈 공간을 펌웨어가 점유하게 할 수 있다. 수정 M4는 그러한 공격을 검출하기 위한 능동적 방어책을 매립 디바이스(110)의 소프트웨어 환경에 도입할 수 있다. 뒤에서 자세히 설명하는 것처럼, 수정 M4의 일부로서 설치되는 모니터링 장치는 특정 기억 위치가 루트킷에 의해 덮어쓰기된 때를 검출하여 알람 또는 임의의 다른 적당한 경보를 발생할 수 있다.
단계 540에서, 강화 펌웨어(320)가 매립 디바이스(110)에서 설치되거나 다른 방식으로 실행될 수 있다. 일부 실시형태에 있어서, 강화 펌웨어(320)의 설치는 펌웨어 메모리(280)를 플래싱(flashing)하는 단계를 포함할 수 있다. 일부 실시형태에 있어서, 강화 펌웨어(320)는 매립 디바이스(110)에 존재하는 원격 펌웨어 갱신 특징을 이용하여 매립 디바이스(110)에 설치될 수 있다. 단계 550에서, 처리 대상으로 남아있는, 단계 510에서 식별된 다른 디바이스가 있는지에 대한 판정이 이루어질 수 있다. 만일 다른 디바이스가 있으면, 프로세스(500)는 단계 520으로 복귀하고, 취약점 있는 다른 매립 디바이스에 대하여 상기 단계 520, 530 및 540을 실행할 수 있다.
일부 실시형태에 있어서, 관리자 컴퓨터(126), 더 구체적으로는 관리자 컴퓨터의 프로세서(132)는 상기 단계 510, 520, 530, 540 및/또는 550 중 적어도 하나를 수행할 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에 있어서, 프로세스(500)의 상기 단계 510, 520, 530, 540 및/또는 550 중 적어도 하나는 매립 디바이스(110)에 의해, 더 구체적으로는 매립 디바이스의 프로세서(260)에 의해 수행될 수 있다. 특히, 상기 단계 520, 530 및/또는 540 중 하나 이상이 매립 디바이스(110)에 의해 수행될 수 있다. 예를 들면, 수정 M1-M5 중 하나 이상이 실행 시간(runtime)에 매립 디바이스(110)에 의해 수행될 수 있다. 그러한 실시형태에 있어서, 수정 M1-M4는 매립 디바이스(110)가 부팅될 때마다 또는 매립 디바이스(110)가 n회 부팅될 때마다와 같이 미리 정해진 스케줄에 따라 수행될 수 있다. 이와 관련하여, 수정 M1-M4를 반복적으로 수행함으로써, 매립 디바이스(110)는 악성 코드 설계자 및 다른 잠재적 공격자에 대하여 자신을 이동하는 타겟으로 전환할 수 있다.
도 6a는 프로세스(500)의 단계 530에 의해 특정된, 최초 펌웨어(310)로부터 코드의 적어도 일부를 제거하는 프로세스(600)를 보인 것이다. 단계 610에서, 펌웨어의 하나 이상의 특징을 식별하는 최초 펌웨어(310)와 관련된 파일이 획득될 수 있다. 식별된 각 특징은 펌웨어(310)의 상이한 능력(예를 들면, 원격 펌웨어 갱신, 네트워크 접속 등)을 나타낼 수 있다. 일부 실시형태에 있어서, 획득된 파일은 최초 펌웨어(310)의 일부인 구성 파일일 수 있다. 구성 파일은, 일부 예에서, 최초 펌웨어(310)의 상이한 특징들이 인에이블되는지 디스에이블되는지를 표시할 수 있다. 단계 620에서, 구성 파일에서 참조되는 최초 펌웨어(310)의 하나 이상의 특징을 식별하는 리스트가 생성될 수 있다. 단계 630에서, 상기 리스트를 시험하여 미리 정해진 기준에 부합하는 관심 있는 특징을 식별할 수 있다. 예를 들면, 관심 있는 특징은 하기의 것 중 하나 이상을 결정함으로써 식별될 수 있다:
F1: 약탈에 대한 취약점이 있는 것으로 생각되는 특징(예를 들면, 원격 펌웨어 갱신 능력);
F2: 최초 펌웨어(310)에서 비활성화 또는 디스에이블될 수 없는 특징(예를 들면, 최초 펌웨어(310)가 관리자로부터 입력을 수신한 것에 응답하여 디스에이블되는 설비 또는 능력을 갖지 않는 특징);
F3: 매립 디바이스(110)에 의해 사용되지 않는 특징(예를 들면, 매립 디바이스(110)와 동일한 펌웨어를 공유하는 다른 프린터 모델 또는 다른 디바이스 모델이 사용하는 것으로 의도된 특징); 및
F4: 관리자가 불필요한 것으로 판단한 특징.
단계 640에서, 최초 펌웨어(310)에 대하여 정적 및/또는 동적 분석을 수행하여 관심 대상 특징을 구현하는 하나 이상의 코드 세그멘트를 식별할 수 있다. 식별된 각각의 코드 세그멘트는 기능 입력 지점, 기능 또는 라이브러리 루틴 복귀 명령어 위치, 임의의 다른 적당한 프로그램 명령어 또는 기억 위치, 및/또는 상기의 것들의 임의의 적당한 조합과 같은 하나 이상의 명령어 라인을 포함할 수 있다. 상기 분석은 라이브 코드 또는 실행 시간에 동작할 확률이 높은 코드의 영역을 결정하기 위해 최초 호스트 프로그램에서 수행될 수 있다. 이 예에서는 RFU 모듈(312)을 구현하는 코드 세그멘트(605)가 식별된다(도 6b에 도시됨). 단계 650에서, 관심 대상 특징을 구현하는 하나 이상의 코드 세그멘트를 최초 펌웨어(310)로부터 제거하여 강화 펌웨어(320)를 생성할 수 있다. 이 예에서는 코드 세그멘트(605)가 삭제된다. 관심 대상 특징의 코드를 제거하면, 예컨대 강화 펌웨어(320)의 잠재적으로 취약성 있는 공격 표면을 줄일 수 있다.
도 7a는 프로세스(500)의 단계 530에 의해 특정된, 최초 펌웨어(310)를 변이시키는 프로세스(700)를 보인 것이다. 단계 710에서, 최초 펌웨어(310)의 일부인 하나 이상의 공유 라이브러리가 분할될 수 있다. 더 구체적으로, 이 예에서는 공유 라이브러리(318)가 분할된다. 일부 실시형태에 있어서, 라이브러리의 분할은 공유 라이브러리의 동일하거나 유사한 카피(예를 들면, 도 3의 카피(318a, 318b))를 생성하고, 공유 라이브러리를 상기 카피로 교체하는 단계를 수반할 수 있다. 또한, 일부 실시형태에 있어서, 네트워크 접속 모듈(314) 및 프린팅 모듈(316)을 구현하는 코드 세그멘트와 같은 상이한 코드 세그멘트의 분기(branch) 명령어는 각 모듈의 명령어가 단지 하나의 카피로 분기하고 다른 카피로는 분기하지 않도록 수정될 수 있다.
단계 720에서, 최초 펌웨어(310)의 하나 이상의 코드 세그멘트가 식별될 수 있다. 각 코드 세그멘트는 하나 이상의 명령어를 포함할 수 있다. 일부 실시형태에 있어서, 하나 이상의 코드 세그멘트는 공유 라이브러리(318) 또는 그 카피(318a, 318b) 중 하나와 같이, 최초 펌웨어(310)의 공유 라이브러리의 일부일 수 있다. 일부 실시형태에 있어서, 단계 710에서 공유 라이브러리의 복수의 카피를 만들면, 최초 펌웨어(310)의 제어 흐름이 보존되게 함으로써 라이브러리의 무작위화를 촉진할 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에 있어서, 단계 720에서 식별된 하나 이상의 코드 세그멘트는 분기 명령어를 포함할 수 있다. 이 예에서는 도 7B에 도시된 코드 세그멘트(705, 715)가 식별된다.
단계 730에서, 최초 펌웨어(310)의 적어도 하나의 코드 세그멘트의 위치를 수정하여 강화 펌웨어(320)를 생성할 수 있다. 도 7B에 도시된 것처럼, 세그멘트 705 및 세그멘트 715를 형성하는 명령어가 강화 펌웨어(320) 내의 각종 위치로 이동할 수 있다. 비록 도 7B의 예에서는 2개의 코드 세그멘트의 위치가 교환되지만, 이것은 단순히 예를 보인 것이다. 예를 들면, 코드 세그멘트가 강화 펌웨어(320)에서 이동하는 위치는 임의로 선택할 수 있다. 또한, 일부 실시형태에 있어서, 악성 코드의 다형 변체를 생성하기 위해 사용되는 것과 같은 다른 적당한 기술을 이용하여 최초 펌웨어(310)의 무작위화 및/또는 다양화를 행할 수 있다는 점에 주목하여야 한다.
이진 구조 무작위화는 코드의 블록들을 분해하여 이들을 이용가능한 메모리 공간 내의 무작위로 선택된 위치에 재배치하는 단계를 수반할 수 있다는 점에 주목하여야 한다. 또한, 일부 실시형태에 있어서, 강화 펌웨어 이미지는 매립 디바이스 또는 시스템이 펌웨어를 실행하기 전에 오프라인에서 생성될 수 있다는 점도 주목해야 한다. 따라서, 계산 및 수정이 매립 디바이스의 부팅시마다 수행될 수 있기 때문에, 이것은 실행 시간에 성능 충격의 감소를 가져올 수 있다.
대안적으로, 무작위화 또는 임의의 다른 변이 특징은 매립 디바이스에서 실행 시간에 수행될 수 있다(예를 들면, 주문에 의해, 펌웨어 갱신이 매립 디바이스에서 발생하도록 스케줄된 때 등). 또한, 그러한 무작위화 및/또는 다른 변이 특징은 매립 디바이스 펌웨어를 실행할 때 계속될 수 있고, 이것에 의해 최초의 펌웨어 이미지와 기능적으로 등가인 변이 코드의 생성을 계속할 수 있다.
도 8은 프로세스(500)의 단계 530에서 특정되는 최초 펌웨어(310)를 부풀리는 프로세스(800)를 보인 것이다. 여기에서 설명하는 것처럼, 펌웨어 부풀리기는 펌웨어에 새로운 기능을 추가하지 않고 펌웨어 사이즈를 증가시키는 단계를 포함할 수 있다. 단계 810에서, 패딩이 최초 펌웨어(310)의 끝에 삽입될 수 있다. 예를 들면, 하나 이상의 미리 정해진 문자열(string)이 최초 펌웨어(310)에 첨부되어 펌웨어 이미지의 총 사이즈를 미리 정해진 값, 예를 들면 매립 디바이스(110)에서 이용가능한 메모리의 양(예를 들면, 펌웨어 메모리(280)의 사이즈)으로 되게 할 수 있다. 단계 820에서, 필러가 최초 펌웨어(310)에 삽입될 수 있다. 필러는 예를 들면 코멘트, 호출될 수 있지만 아무 일도 하지 못하는 명령어(예를 들면, NOP 기계 명령어) 등을 포함할 수 있다. 단계 830에서, 코드 세그멘트가 선택될 수 있다. 코드 세그멘트는 하나 이상의 코드 라인을 포함할 수 있다. 단계 840에서, 코드의 기능적 등가 버전이 수동으로 또는 자동으로 생성될 수 있고, 단계 850에서, 선택된 코드 세그멘트가 그 기능적 등가 버전으로 교체될 수 있다.
호스트 프로그램 및 강화 펌웨어는 최초 호스트 프로그램의 독특한 사례(instantiation)로 분석, 무작위화, 및/또는 변이될 수 있다. 전술한 바와 같이, 강화 펌웨어는 최초 호스트 프로그램과 기능적으로 등가일 수 있다. 따라서, 어드레스 공간 무작위화 및 다형 변이법을 이용하여 강화 펌웨어에 통합된 호스트 프로그램 및 방어 메카니즘의 무작위성 및 다양성을 증가시킬 수 있다.
도 9a는 프로세스(500)의 단계 530에서 특정되는 모니터링 장치를 펌웨어(310)에 주입하는 프로세스(900)를 보인 것이다. 예를 들면, 모니터링 장치 또는 모니터링 엔진은 타겟 코드를 방어 능력으로 증강시키기 위해 임의의 실행 코드에 주입될 수 있다.
단계 910에서, 모니터링 장치(330)의 하나 이상의 컴포넌트가 획득될 수 있다. 이 예에서는 모니터링 장치(330)가 도 9b, 9C 및 9D에 도시된 관리자(915) 및 페이로드(925)를 포함한 이중 모듈러(bi-modular) 구조를 갖는다.
대안적으로, 도 9E에 도시된 모니터링 장치(330)는 코드가 호스트 프로그램에 매립되는 법 및 호스트 프로그램에 의한 직렬식(tandem) 실행이 달성되는 법을 지시하는 스터브(stub)(930), 호스트 프로그램과 함께 직렬식으로 실행되는 방어 메카니즘(예를 들면, 코드 완전성 검사기, 증거 운반 코드, 변칙(anomaly) 검출기 등)을 포함한 페이로드(925), 호스트 프로그램과 관련된 정적 및 실행시간 정보를 획득 및 조직하는 모니터링 엔진(935), 및 리소스(예를 들면, 코드 및 호스트 프로그램이 프로세서에서 언제 어떻게 실행되는지)를 관리하는 실행 관리자(915)를 포함한다. 모니터링 장치(330)는 강화를 위한 하나 이상의 규칙 또는 폴리시(policy)(940)를 또한 통합할 수 있다는 점에 주목하여야 한다. 이러한 폴리시는 사용자 규정 폴리시, 화이트리스트, 자동으로 도출된 폴리시 등을 포함할 수 있다.
관리자(915)는 원래 최초 펌웨어(310)의 일부이었던 코드로부터 호출되는 하나 이상의 프로세서 실행가능 명령어를 포함할 수 있다. 관리자(915)는 매립 디바이스(110)의 콘텍스트를 저장 및 복원하는 것과 같은 콘텍스트 관리 기능을 수행할 수 있다. 추가적으로 또는 대안적으로, 관리자(915)는 페이로드(925)의 실행을 실행 및/또는 스케줄하도록 구성될 수 있다. 예를 들면, 관리자(915)는 프로세서를 제어하고 페이로드(925)(예를 들면, 체크섬 메카니즘, 변칙 검출 메카니즘, 서명 기반 안티바이러스 메카니즘 등)의 실행을 위해 소정 수의 사이클을 할당할 수 있다. 이것에 응답하여, 페이로드(925)는 그 실행 버스트(burst)를 종료하고 프로세서의 제어가 관리자(915)에게 복귀되며, 관리자(915)는 그 다음에 호스트 프로그램의 실행을 재개한다. 페이로드(925)는 침입 검출 메카니즘을 구현하는 하나 이상의 프로세서 실행가능 명령어를 포함할 수 있다. 관리자(915) 및 페이로드(925)의 동작에 대해서는 도 10, 도 11a 및 도 11b를 참조하여 추가로 설명한다. 일부 실시형태에 있어서, 관리자(915)와 페이로드(925) 중 적어도 하나는 완전하게 자기 내포형일 수 있다. 예를 들면, 관리자(915) 및/또는 페이로드(925)는 최초 펌웨어(310)에 의해 제공되는 임의의 코드 설비에 의존하지 않을 수 있다.
일부 실시형태에 있어서, 관리자(915)는 페이로드(925)와 호스트 프로그램 간의 리소스 분포를 결정할 수 있다. 단계 920에서, 페이로드(925)가 관리자(915)에 의해 실행될 수 있는 기간의 길이가 미리 정해진 규칙에 따라 설정된다. 그러한 규칙의 예로는 하기의 것들이 있다:
R1: 고정된 시간 동안(예를 들면, 페이로드(925)가 실행될 때마다 2초 동안) 페이로드(925)를 실행한다;
R2: 페이로드(925)의 최종 실행 후 경과된 기간에 따르는 시간 동안 페이로드(925)를 실행한다(예를 들면, 기간이 길수록 버스트 길이가 커진다);
R3: 매립 디바이스(110)의 프로세서(260)의 처리력 양에 따르는 시간 동안 페이로드(925)를 실행한다(예를 들면, 프로세서가 저속일수록 버스트 길이가 짧다); 및
R4: 작업(job)이 매립 디바이스(110)에 도달하는 속도에 따르는 시간 동안 페이로드(925)를 실행한다(예를 들면, 길이가 길수록 버스트 길이가 짧다).
일부 실시형태에 있어서, 관리자(915)의 일부인 하나 이상의 명령어가 상기 규칙 R1-R4와 같은 규칙을 구현하기 위해 수정될 수 있다.
페이로드(925)와 호스트 프로그램 간의 리소스 분포를 결정하기 위해 임의의 적당한 스케줄링 방법을 이용할 수 있다는 점에 주목하여야 한다. 일반적으로 말해서, 관리자(915)가 수행하는 스케줄링 방법은 적어도 부분적으로 콘텍스트 전환의 빈도 및 페이로드(925)의 실행 버스트의 지속기간에 기초를 둘 수 있다. 예를 들면, 관리자(915)는 콘텍스트 전환의 빈도 및 페이로드(925)의 실행 버스트의 지속기간 양자를 조화시키기 위해 스케줄링 방법을 최적화할 수 있다. 더 특수한 예로서, 페이로드(925)는 메모리의 정적 영역을 통한 체크섬을 계산함으로써 권한 없는 코드 수정을 검출할 수 있다. 다른 더 특수한 예로서, 페이로드(925)는 매립 디바이스에 대하여 보안을 제공하는 변칙 검출기를 구현할 수 있다(예를 들면, 변칙 기반 필터, 서명 기반 필터 등을 이용해서). 따라서, 코드 수정의 시간과 그 검출의 사이에는 지연이 존재하고, 이것은 가끔 검출 대기시간(detection latency)이라고 부른다. 그래서, 페이로드(925)에게 유용되는 처리 리소스의 양은 검출 대기시간에 역비례하고 검출 메카니즘의 성능에 정비례하도록 구성될 수 있다. 예를 들면, 관리자(915)는 페이로드(925)의 짧은 실행 버스트가 호스트 프로그램의 실행과 인터리브되는 것을 결정할 수 있고, 이것에 의해 페이로드(925)가 매립 디바이스의 실시간 특성(예를 들면, 라우터에 의한 패킷의 라우팅)에 대한 영향을 최소화하면서 특정의 속도로 경쟁할 수 있게 한다.
단계 930에서, 복수의 제어 인터셉트(intercept)(905)(도 9b-9D에 도시됨)가 최초 펌웨어(310)의 본체(body) 전반에 걸쳐 분포될 수 있다. 각각의 제어 인터셉트는 최초 펌웨어(310)에서 발견되는 코드 세그멘트(예를 들면, 모듈(314. 316, 318a 또는 318b))로부터 모니터링 장치(330)로 매립 디바이스(110)의 제어 흐름을 재지향시킬 수 있는 하나 이상의 명령어(예를 들면, 분기 명령어)를 포함할 수 있다. 예를 들면, 도 9b에 도시된 것처럼, 제어 코드 및 그 실행된 페이로드는 블록 할당 지정에 의해 생성된 미사용 메모리의 이진수 이용 갭을 통하여 분산된다. 다른 예로서, 제어 흐름 인터셉트가 호스트 프로그램 이진수에 주입되어 피보호 호스트 프로그램을 산출할 수 있다. 즉, 이 제어 인터셉트들은 페이로드(925)를 실행하는 매립 디바이스의 프로세서 사이클의 일부를 재유용(re-divert)하는 방법을 제공한다. 이것은 최초의 운영체제와 나란히 그 페이로드를 실행하는 동안 모니터링 장치가 운영체제 특성에 대한 인지불능성을 유지할 수 있게 한다. 더욱이, 페이로드(925)는 최초 운영체제의 내부에 대한 접근권을 갖지만 이것에 의해 구속되지 않는다. 단계 940에서, 모니터링 장치(330)는 최초 펌웨어(310)에 주입될 수 있다. 일부 실시형태에 있어서, 모니터링 장치(330)는 관리자(915)와 페이로드(925)(도 9b-9D에 도시됨)를 포함할 수 있다. 이와 관련하여, 모니터링 장치(330)를 최초 펌웨어(310)에 주입하는 과정은 단계 930에서 삽입된 제어 흐름 인터셉트가 관리자(915)를 지시하게 하는 방식으로 관리자(915) 및/또는 페이로드(925)를 최초 펌웨어에 삽입 또는 첨부하는 단계를 포함할 수 있다.
도 9b 내지 도 9d는 본 발명의 일부 실시형태에 따른, 모니터링 장치(330)를 최초 펌웨어(310)에 삽입하는 방법을 보인 것이다. 도시된 것처럼, 인터셉트(905a-h)는 최초 펌웨어(310)의 각종 인터셉트 포인트에 삽입될 수 있다. 일부 실시형태에 있어서, 인터셉트가 삽입되는 위치는 펌웨어(310) 내의 후보 라이브 코드 세그멘트로부터 선정될 수 있다. 코드 세그멘트가 라이브로서 분류되는 방식뿐만 아니라 각 영역(예를 들면, 모듈)으로부터 선정된 인터셉트의 수는 주입된 모니터링 장치가 실행되는 빈도에 영향을 줄 수 있다. 선택사양으로, 상이한 코드 세그멘트가 미리 정해진 시구간 동안 실행될 가능성을 추정하기 위해, 프로세스(500)를 실행하는 시스템에 의해, 정적 및 동적 분석 모두가 최초 펌웨어(310)에 대하여 수행될 수 있다. 일부 실시형태에 있어서, 만일 그 확률이 미리 정해진 역치와 부합하면(예를 들면, 동일하거나 초과하면), 코드 세그멘트는 라이브 코드로서 분류될 수 있다. 도 9d에 도시된 것처럼, 최초 펌웨어(310)에 속하는 코드가 실행되고 인터셉트 포인트 중 하나에 도달된 때, 그 포인트에 배치된 제어 인터셉트는 매립 디바이스(110)의 제어 흐름을 관리자(915)에게로 재지향시킨다. 관리자(915)는 그 다음에 매립 디바이스(110)의 제어 흐름을 페이로드(925)에게 재지향시킬 수 있다. 페이로드(925) 및 관리자(915)의 실행이 완료된 때, 매립 디바이스(110)의 제어 흐름은 최초 펌웨어(310)에 속하는 코드의 실행이 정지되었던 포인트로 복귀하여 관리자(915) 및 페이로드(925)를 실행할 수 있다. 최초 펌웨어(310)에 속하는 코드의 실행은 다른 인터셉트 포인트 또는 동일한 인터셉트 포인트가 다시 한번 도달될 때까지 계속될 수 있다. 관리자(915) 및 페이로드(925)의 동작은 도 10 및 도 11a 내지 도 11c를 참조하여 더 자세히 설명한다.
도 10은 본 발명의 일부 실시형태에 따른, 관리자(915)가 수행할 수 있는 프로세스(1000)를 보인 도이다. 단계 1010에서, 관리자(915)는 강화된 펌웨어(320)의 코드의 콘텍스트를 스토리지 메모리(270) 및/또는 펌웨어 메모리(280)에 저장할 수 있다. 콘텍스트가 저장되는 코드는 최초 펌웨어(310)로부터 강화 펌웨어(320)에 포함되었던 코드이다. 단계 1020에서, 관리자(915)는 페이로드(925)의 콘텍스트를 프로세서(260)의 레지스터에 로드할 수 있다.
단계 1030에서, 관리자(915)는 페이로드(925)가 실행되어야 하는 시구간을 결정할 수 있다. 그 지속기간은 관리자(915)가 페이로드(925)의 실행을 그만둔 때와 같은 제로로부터 임의의 적당한 값까지의 범위일 수 있다. 일부 실시형태에 있어서, 관리자(915)는 매번 페이로드(925)가 실행될 때와 동일한 지속기간 동안 페이로드(925)를 실행할 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에 있어서, 관리자(915)는 역적응법을 이용할 수 있고, 이 경우 페이로드(925)가 실행되는 시구간의 지속기간은 페이로드(925)가 최종으로 실행된 후의 경과 시간에 기초를 둘 수 있다. 예를 들면, 경과 시간이 길수록 페이로드(925)가 실행되는 기간이 더 길다. 비록 여기에서 설명하는 실시형태가 리소스 할당을 위한 스케줄을 제공하지만, 이것은 단순히 예를 보인 것이라는 점에 주목하여야 한다. 임의의 특수한 스케줄링법이 사용될 수 있고, 페이로드(925)가 실행되어야 하는 시구간의 지속기간은 매립 디바이스(110)에의 로딩(예를 들면, 프린트 작업의 도달 속도, 또는 매립 디바이스(110)가 스위치인 경우에는 패킷) 또는 매립 디바이스(110)의 프로세서(260)에의 로딩과 같은 매립 디바이스(110)의 상태의 임의의 적당한 특성에 의존할 수 있다. 일부 실시형태에 있어서, 관리자(915)는 정해진 시간이 만료되었을 때 트리거되도록 구성된 타이머 인터럽트를 설정할 수 있다. 또한, 관리자(915)는 자신을 상기 타이머 인터럽트의 취급자로서 식별하도록 매립 디바이스(110)에서 인터럽트 벡터 테이블을 수정할 수 있다.
단계 1040에서, 페이로드(925)는 미리 정해진 시구간 동안 실행될 수 있다. 단계 1050에서, 페이로드(925)의 콘텍스트가 스토리지 메모리(270) 또는 펌웨어 메모리(280) 중 하나에 저장될 수 있고, 단계 1010에서 저장된 펌웨어 코드의 콘텍스트가 복원될 수 있다.
도 11a는 본 발명의 일부 실시형태에 따른, 페이로드(925)와 같은 페이로드에 의해 수행되는 프로세스(1100)를 보인 것이다. 더 특수한 실시형태에 있어서, 페이로드는 메모리의 정적 영역에 대한 체크섬의 결정을 통해 권한 없는 코드 수정을 검출하기 위해 사용될 수 있다. 다른 더 특수한 실시형태에 있어서, 페이로드는 변칙 검출기(예를 들면, 변칙 기반 필터 및/또는 서명 기반 필터를 구비한 것)를 통하여 권한 없는 코드 수정을 검출하기 위해 사용될 수 있다.
일부 실시형태에 있어서, 페이로드는 복귀 지향 프로그래밍(return-oriented programming, ROP) 기술을 이용하여 또한 구현될 수 있다. 이 예에서는 페이로드(925)와 같은 페이로드가 해커에 의해 강화 펌웨어를 식별하는 것을 어렵게 하는 ROP 프로그램으로서 구현될 수 있다. 특수한 명령어 또는 동작(가끔은 "가제트"(gadget)라고 부름)을 구현하는 최초의 호스트 프로그램 명령어의 시퀀스를 식별한 때, 가제트의 시퀀스는 페이로드가 호스트 프로그램과 유사하게 나타나게 하는 프로그램으로 구성될 수 있다.
단계 1110에서, 매립 디바이스(110)의 기억 영역에 대한 제1 서명이 결정될 수 있다. 일부 실시형태에 있어서, 기억 영역은 의미론적으로 정적인 것일 수 있다. 일부 실시형태에 있어서, 기억 영역은 잠재적으로 실행가능한 것일 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에 있어서, 기억 위치는 매립 디바이스(110)의 일부인 임의의 비휘발성 메모리일 수 있다. 비휘발성 메모리는 네트워크 컨트롤러 카드(예를 들면, 통신 인터페이스(220)), 주 포맷터 보드(예를 들면, 포맷터 보드(250)), 매립 디바이스(110)의 일부인 프린터 엔진 컨트롤러(240) 또는 다른 SoC 디바이스, 부트 플래시, 다른 컴팩트 플래시 장치, 및 보드 스태커 또는 스태플러 유닛과 같은 매립 디바이스(110)의 임의의 컴포넌트의 일부일 수 있다. 따라서, 일부 실시형태에 있어서, 제1 서명이 계산되는 기억 영역은 매립 디바이스(110)가 지정되는 기능(예를 들면, 프린팅, 스캐닝, 미디어 콘텐츠 제공, 패킷 라우팅, 패킷을 하나의 프로토콜로부터 다른 프로토콜로 변환하는 것 등)에 대하여 용도 특정된 컴포넌트 또는 컴포넌트부에 위치될 수 있다. 일부 양태에 있어서, 네트워크 프린터와 같이 매립 디바이스에서의 완전성 검증은 악성 코드가 숨겨질 수 있는 코드 실행이 가능한 다수의 NVRAM형 디바이스를 상기 디바이스들이 포함할 수 있기 때문에 특히 난제가 될 수 있다.
서명이 결정될 수 있는 기억 영역은 임의의 적당한 길이를 가질 수 있다는 점에 주목하여야 한다. 예를 들면, 상기 길이는 하나의 메모리 어드레스에서 연장하거나, 연속적 또는 불연속적인 복수의 메모리 어드레스에서 연장할 수 있다. 제1 서명은 암호적으로 안전한 해시와 같은 임의의 적당한 서명일 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에 있어서, 상기 제1 서명은 체크섬 서명일 수 있다.
단계 1120에서, 제2 서명이 동일한 기억 영역에 대하여 계산될 수 있다. 제2 서명은 예를 들면 제1 서명이 계산된 후에 계산될 수 있고 제1 서명과 같은 제1 유형의 것일 수 있다. 일부 실시형태에 있어서, 제2 서명 및 제1 서명은 페이로드(925)의 상이한 실행 중에 계산될 수 있다. 단계 1130에서, 미리 정해진 위치에 있는 강화 펌웨어(320)의 코드가 변경되게 할 수 있는 강화 펌웨어(320)에 대한 정적 갱신을 위하여 제3 서명이 획득될 수 있다. 제3 서명은 단계 1130의 실행 전에 관리자 컴퓨터(126)에 의해 네트워크(108)를 통하여 계산 및 전송되는 승인된 정적 갱신용의 서명일 수 있다. 제3 서명은 갱신이 식별된 후에 기억 영역에 저장될 것으로 기대되는 콘텐츠를 표시할 수 있다.
단계 1140에서, 제1 서명은 제2 서명 및 제3 서명 중 적어도 하나와 비교될 수 있다. 일부 실시형태에 있어서, 제2 서명은 제1 서명과 비교될 수 있다. 단계 1150에서, 제1 서명이 단계 1140에서의 비교 결과에 기초하여 적어도 하나의 다른 서명과 일치하는지가 결정될 수 있다. 만일 제1 서명이 임의의 서명과 일치하면, 단계 1160에서 제1 임계 조건이 등록될 수 있다. 제1 임계 조건의 등록은 불일치의 표시를 네트워크(108)를 통해 관리자 컴퓨터(126)(도 11b-11C 참조)에 전송하는 단계, 또는 그 표시를 매립 디바이스(110)의 디스플레이 화면에 디스플레이하는 단계를 포함할 수 있다. 일부 실시형태에 있어서, 다른 시간에 계산된 동일한 기억 영역의 서명들을 비교함으로써, 페이로드(925)는 매립 디바이스(110)의 메모리를 임시교정하고 악성 코드를 설치하려고 하는 해커 또는 공격자에 의한 시도를 검출할 수 있다. 더 나아가, 일부 실시형태에 있어서, 기억 영역의 서명을 펌웨어 갱신용의 서명과 비교함으로써 업데이트가 설치된 때 잘못된 알람이 페이로드(925)에 의해 발생 또는 활성화되는 것을 금지할 수 있다.
제1 서명이 다른 서명 중 하나와 일치한다고 결정한 것에 응답하여, 프로세스(1100)의 실행은 단계 1170으로 건너뛸 수 있다. 단계 1170에서는 제2 모니터링 장치가 디스에이블되었는지 결정될 수 있다. 제2 모니터링 장치는 매립 디바이스(110) 또는 네트워크(108) 내의 다른 매립 디바이스(예를 들면, 다른 네트워크 프린터, 라우터 등)에서 실행할 수 있다. 일부 실시형태에 있어서, 상기 결정은 매립 디바이스(110)가 핵심 신호(heartbeat signal) 또는 임의의 다른 적당한 신호를 제2 모니터링 장치로부터 수신하는 것에 실패한 경우에 행하여질 수 있다. 추가적으로 또는 대안적으로, 일부 실시형태에 있어서, 상기 결정은 상기 제2 모니터링 장치가 페이로드(925) 또는 임의의 다른 적당한 컴포넌트에 의해 전송된 상태 요청에 대한 응답에 실패한 경우에 행하여질 수 있다. 제2 디바이스가 이용불능으로 되었다고 결정된 때, 단계 1180에서 제2 임계 조건이 등록될 수 있다. 제2 임계 조건의 등록은 다른 모니터링 장치가 이용불능으로 되었다는 표시를 네트워크(108)를 통해 관리자 컴퓨터(126)에 전송하는 단계, 또는 그 표시를 매립 디바이스(110)의 디스플레이 화면에 디스플레이하는 단계를 포함할 수 있다.
도 11b에 도시한 바와 같이, 일부 실시형태에 있어서, 모니터링 장치(1115, 1125)가 최초 펌웨어(310)에 또한 주입될 수 있고, 그에 따라서 매립 디바이스(110)가 복수의 모니터링 장치(330, 1115, 1125)를 실행하게 할 수 있다. 주입되었으면, 각각의 모니터링 장치는 상기 단계 1170과 관련하여 설명한 방식으로 하나 이상의 다른 장치의 상태를 추적하고, 하나 이상의 다른 모니터링 장치가 이용불능으로 된 때 관리자 컴퓨터(126)에게 경보를 전송할 수 있다. 예를 들면, 각각의 모니터링 장치(330, 1115 및 1125 중 하나)는 매립 디바이스 또는 매립 디바이스 내의 특수 조건을 모니터링하고, 네트워크 내의 다른 모니터링 장치의 동작 상태 또는 임의의 다른 적당한 조건을 모니터링할 수 있다. 이와 관련하여, 모니터링 장치의 센서 그리드가 매립 디바이스(110) 내에서 구현되어 디바이스에서 실행되는 하나의 모니터링 장치에 대한 공격 시도를 검출할 수 있다.
일부 실시형태에 있어서, 모니터링 장치(예를 들면, 모니터링 장치 330, 1115 및 1125)가 동시에 비활성화 또는 다른 방식으로 디스에이블되었다고 검출한 것에 응답하여, 외부 센서가 알람을 트리거할 수 있다(예를 들면, 잠복 채널을 통해서).
비록 여기에서 일반적으로 설명하는 실시형태가 동일한 매립 디바이스 내에서 실행하는 모니터링 장치에 관한 것이지만, 이것은 단순히 예를 보인 것이라는 점에 주목하여야 한다. 예를 들면, 모니터링 장치는 하나 이상의 네트워크와 관련된 복수의 매립 디바이스에 주입될 수 있다.
도 12는 본 발명의 일부 실시형태에 따른, 관리자 컴퓨터(126)에 의해 수행될 수 있는 경보를 제공하는 프로세스(1200)를 보인 것이다. 단계 1210에서, 관리자 컴퓨터(126)는 매립 디바이스(110, 112, 114) 중 하나에의 침입 표시를 수신할 수 있다. 상기 표시는 매립 디바이스 중 하나에 설치된 모니터링 장치(330)와 같은 모니터링 장치에 의해 전송될 수 있다. 일부 실시형태에 있어서, 상기 표시는 매립 디바이스 중 하나의 특정 기억 위치가 덮어쓰기 또는 수정되었음을 표시할 수 있다. 추가적으로 또는 대안적으로, 상기 표시는 상기 표시를 전송하는 것이 아닌 모니터링 장치가 비활성화 또는 디스에이블되었음을 표시할 수 있다. 일부 실시형태에 있어서, 상기 표시는 디바이스의 종류(예를 들면, 프린터, 라우터, 스캐너 등)와 같은, 침입된 주변 장치의 식별자 또는 관련 정보를 포함할 수 있다. 단계 1220에서, 상기 표시는 사용자에게 제공하기 위해 출력될 수 있다. 예를 들면, 관리자 컴퓨터(126)는 텍스트 또는 이미지를 디스플레이함으로써, 음향을 연주함으로써, 촉각 피드백 장치를 활성화시킴으로써, 또는 임의의 다른 적당한 방법으로 알람을 트리거할 수 있다. 더 특수한 예에 있어서, 알람 표시자는 관리자 유저에게 전송 및 디스플레이될 수 있다.
비록 여기에서 설명하는 실시형태가 일반적으로 강화 펌웨어를 매립 디바이스(예를 들면, 특정 프린터, 라우터, 전화기 등)에 직접 주입하는 것과 관련된 것이지만, 이것은 단순히 예를 보인 것이라는 점에 주목하여야 한다. 강화 펌웨어가 매립 디바이스에 직접 주입된 경우, 페이로드는 매립 디바이스의 하드웨어에서 최초 펌웨어와 나란히 실행할 수 있다. 이러한 고유의 구현은 예를 들면 에뮬레이션이 가능하지 않은 매립 시스템(예를 들면, 비문서화 하드웨어 및/또는 사설 하드웨어의 사용으로 인하여 소프트웨어에 의해 에뮬레이트될 수 없는 매립 디바이스)에서 사용될 수 있다. 매립 디바이스의 하드웨어에서 강화 펌웨어를 구동시키는 대신에, 강화 펌웨어는 처리 장치(예를 들면, 매립 디바이스 외부의 처리 장치 또는 매립 디바이스를 관리하거나 매립 디바이스에 접속된 관리용 컴퓨팅 장치를 포함함)에서 에뮬레이트될 수 있다. 예를 들면, 페이로드가 알람을 발생한 것 또는 트리거한 것에 응답하여, 에뮬레이터는 매립 디바이스의 프로세서를 중지시키고 그 매립 디바이스의 메모리 상태를 포착할 수 있다. 더 특수한 예로서, 에뮬레이터는 구성가능한 빈도로 매립 디바이스의 메모리 상태를 계속적으로 덤프(dump)할 수 있다(예를 들면, 메모리 상태가 분석을 위해 기록될 수 있는 경우에). 이 에뮬레이트 구현예는 예를 들면 에뮬레이트 환경에서의 디버깅을 위해서 및 매립 디바이스의 프로세서 또는 다른 하드웨어보다 더 큰 계산 용량을 제공하기 위해서 사용될 수 있다.
대안적으로, 새도우 센서(shadow sensor)가 구현될 수 있다. 예를 들면, 매립 디바이스가 라우터인 경우, 라우터에 입력되는 네트워크 트래픽은 매립 디바이스로부터 강화 펌웨어가 주입된 새도우 디바이스에게 반영될 수 있다. 강화 펌웨어는 새도우 디바이스를 모니터링할 수 있고, 불법 활동의 검출에 응답하여 경보를 트리거 및 발생할 수 있다.
도 5, 6a, 7a, 8, 9a, 10, 11a 및 12의 흐름도의 전술한 단계들은 도면에 도시 및 묘사된 순서 및 시퀀스로 제한되지 않고 임의의 순서 또는 시퀀스로 실행 또는 수행될 수 있다. 예를 들면, 도 6a의 단계 610과 620은 생략될 수 있고, 관심 있는 하나 이상의 특징들이 사용자 입력을 통해서 또는 상기 특징들의 표시를 프로세스(600)를 실행하는 시스템(예를 들면, 관리자 컴퓨터(126) 또는 매립 디바이스(110))에 하드코딩함으로써 식별될 수 있다. 또한, 도 5, 6a, 7a, 8, 9a, 10, 11a 및 12의 흐름도의 전술한 단계들의 일부는 만일 적당하다면 실질적으로 동시에 또는 병행하여 실행 또는 수행함으로써 대기시간 및 처리 시간을 감소시킬 수 있다.
이에 따라서 매립 디바이스에 대한 공격을 금지시키는 방법, 시스템 및 미디어가 제공된다.
비록 본 발명을 전술한 예시적인 실시형태에 따라 설명 및 예시하였지만, 전술한 설명은 단순히 예를 든 것이고, 첨부된 특허 청구범위에 의해서만 제한되는 본 발명의 정신 및 범위로부터 벗어나지 않고 본 발명의 구현 예의 세부에 대한 다양한 변경이 이루어질 수 있다. 개시된 실시형태의 특징들은 다양한 방법으로 결합 및 재배열될 수 있다.

Claims (29)

  1. 삭제
  2. 삭제
  3. 매립 디바이스에 대한 공격을 금지하는 시스템에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고,
    상기 매립 디바이스와 관련된 제1 코드를 수신하고,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하고;
    상기 제2 코드를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함하고,
    상기 프로세서는 또한 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하도록 구성되고,
    상기 프로세서는 또한 제1 시구간에서 상기 매립 디바이스의 메모리부의 제1 체크섬을 결정하고, 제2 시구간에서 상기 매립 디바이스의 메모리부의 제2 체크섬을 결정하며, 상기 제1 체크섬과 상기 제2 체크섬을 비교함으로써 상기 침입을 검출하도록 구성된 것인 공격 금지 시스템.
  4. 매립 디바이스에 대한 공격을 금지하는 시스템에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고,
    상기 매립 디바이스와 관련된 제1 코드를 수신하고,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하고;
    상기 제2 코드를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함하고,
    상기 프로세서는 또한 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하도록 구성되고,
    상기 적어도 하나의 방어 페이로드는 변칙(anomaly) 검출기를 포함하고, 상기 프로세서는 또한 상기 변칙 검출기를 실행함으로써 상기 침입을 검출하도록 구성된 것인 공격 금지 시스템.
  5. 제4항에 있어서, 상기 변칙 검출기는 변칙 기반 필터와 서명 기반 필터 중 적어도 하나를 포함한 것인 공격 금지 시스템.
  6. 매립 디바이스에 대한 공격을 금지하는 시스템에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고,
    상기 매립 디바이스와 관련된 제1 코드를 수신하고,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하고;
    상기 제2 코드를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함하고,
    상기 프로세서는 또한 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하도록 구성되고,
    상기 프로세서는 또한 상기 매립 디바이스가 제1 시구간 동안 상기 제1 코드와 관련된 프로그램 명령어를 실행하고 제2 시구간 동안 상기 제2 코드와 관련된 프로그램 명령어를 실행하게 하도록 구성된 것인 공격 금지 시스템.
  7. 매립 디바이스에 대한 공격을 금지하는 시스템에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고,
    상기 매립 디바이스와 관련된 제1 코드를 수신하고,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하고;
    상기 제2 코드를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함하고,
    상기 프로세서는 또한 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하도록 구성되고,
    상기 프로세서는 또한 상기 매립 디바이스에의 침입의 표시를 수신하도록 구성된 것인 공격 금지 시스템.
  8. 매립 디바이스에 대한 공격을 금지하는 시스템에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고,
    상기 매립 디바이스와 관련된 제1 코드를 수신하고,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하고;
    상기 제2 코드를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함하고,
    상기 프로세서는 또한 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하도록 구성되고,
    상기 프로세서는 또한 상기 제1 코드와 기능적으로 등가인 제2 코드를 상기 매립 디바이스 외부에 위치된 제2 프로세서로부터 수신하도록 구성된 것인 공격 금지 시스템.
  9. 제8항에 있어서, 상기 프로세서는 또한 상기 매립 디바이스의 부팅을 검출한 것 및 상기 제2 코드에 대한 요청을 상기 제2 프로세서에 전송한 것 중 적어도 하나에 응답하여 상기 제2 코드를 수신하도록 구성된 것인 공격 금지 시스템.
  10. 매립 디바이스에 대한 공격을 금지하는 시스템에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고,
    상기 매립 디바이스와 관련된 제1 코드를 수신하고,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하고;
    상기 제2 코드를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함하고,
    상기 프로세서는 또한 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하도록 구성되고,
    상기 프로세서는 또한 제1 코드 내의 어떤 프로그램 명령어가 활성인지를 결정하고, 상기 제1 코드로부터의 프로그램 명령어가 활성이 아니라는 결정에 응답하여 상기 제1 코드로부터 상기 프로그램 명령어를 제거함으로써 상기 제2 코드를 생성하도록 구성된 것인 공격 금지 시스템.
  11. 매립 디바이스에 대한 공격을 금지하는 시스템에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고,
    상기 매립 디바이스와 관련된 제1 코드를 수신하고,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하고;
    상기 제2 코드를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함하고,
    상기 프로세서는 또한 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하도록 구성되고,
    상기 프로세서는 또한 상기 제1 코드의 프로그램 명령어가 라이브러리를 공유한다고 결정하고 상기 라이브러리의 카피를 생성하도록 구성되며, 각각의 프로그램 명령어는 상기 라이브러리의 카피 중 하나에 링크된 것인 공격 금지 시스템.
  12. 매립 디바이스에 대한 공격을 금지하는 시스템에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고,
    상기 매립 디바이스와 관련된 제1 코드를 수신하고,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하고;
    상기 제2 코드를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함하고,
    상기 프로세서는 또한 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하도록 구성되고,
    상기 프로세서는 또한 프로그램 명령어를 제1 기억 위치로부터 제2 기억 위치로 재배치함으로써 상기 제1 코드 내의 프로그램 명령어를 변이시키도록 구성된 것인 공격 금지 시스템.
  13. 매립 디바이스에 대한 공격을 금지하는 시스템에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고,
    상기 매립 디바이스와 관련된 제1 코드를 수신하고,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하고;
    상기 제2 코드를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함하고,
    상기 프로세서는 또한 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하도록 구성되고,
    상기 프로세서는 또한,
    상기 매립 디바이스에의 침입을 검출하기 위한 프로그램 명령어를 포함한 페이로드를 주입하고,
    상기 매립 디바이스에서 실행하는 운영체제의 시스템 실행 콘텍스트를 저장하고,
    적어도 부분적으로 상기 매립 디바이스와 관련된 처리 리소스에 기초하여 상기 페이로드의 실행을 위한 시구간을 결정하고,
    상기 시구간 동안 상기 페이로드를 실행하고,
    상기 시구간이 경과되었다는 결정에 응답하여 상기 페이로드의 페이로드 실행 콘텍스트를 저장하며,
    상기 매립 디바이스의 동작을 계속하기 위해 상기 운영체제의 시스템 실행 콘텍스트를 로드하도록 구성된 것인 공격 금지 시스템.
  14. 매립 디바이스에 대한 공격을 금지하는 시스템에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하고,
    상기 매립 디바이스와 관련된 제1 코드를 수신하고,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하고;
    상기 제2 코드를 상기 매립 디바이스에 주입하도록 구성된 프로세서를 포함하고,
    상기 프로세서는 또한 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하도록 구성되고,
    상기 프로세서는 또한,
    침입 조건을 모니터링하도록 각각 지정되는 복수의 코드 이미지를 생성하고,
    상기 매립 디바이스에서 실행되는 다른 코드 이미지와 관련된 동작 상태를 모니터링하도록 각각 추가로 지정되는 복수의 코드 이미지를 상기 매립 디바이스에 주입하며,
    상기 복수의 코드 이미지 중 하나가 디스에이블되었음을 표시하는 동작 상태 및 상기 침입 조건 중 적어도 하나를 상기 복수의 코드 이미지 중 하나로부터 수신한 것에 응답하여 경보를 수신하도록 구성된 것인 공격 금지 시스템.
  15. 삭제
  16. 삭제
  17. 매립 디바이스에 대한 공격을 금지하는 방법에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계와,
    제1 시구간에서 상기 매립 디바이스의 메모리부의 제1 체크섬을 결정하고, 제2 시구간에서 상기 매립 디바이스의 메모리부의 제2 체크섬을 결정하며, 상기 제1 체크섬과 상기 제2 체크섬을 비교함으로써 상기 침입을 검출하는 단계
    를 포함하는 공격 금지 방법.
  18. 매립 디바이스에 대한 공격을 금지하는 방법에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계
    를 포함하고,
    상기 적어도 하나의 방어 페이로드는 변칙 검출기를 포함하고, 상기 방법은 상기 변칙 검출기를 실행함으로써 상기 침입을 검출하는 단계를 더 포함하는 것인 공격 금지 방법.
  19. 제18항에 있어서, 상기 변칙 검출기는 변칙 기반 필터와 서명 기반 필터 중 적어도 하나를 포함한 것인 공격 금지 방법.
  20. 매립 디바이스에 대한 공격을 금지하는 방법에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계와,
    상기 매립 디바이스가 제1 시구간 동안 상기 제1 코드와 관련된 프로그램 명령어를 실행하고 제2 시구간 동안 상기 제2 코드와 관련된 프로그램 명령어를 실행하게 하는 단계
    를 포함하는 공격 금지 방법.
  21. 매립 디바이스에 대한 공격을 금지하는 방법에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계와,
    상기 매립 디바이스에의 침입의 표시를 수신하는 단계
    를 포함하는 공격 금지 방법.
  22. 매립 디바이스에 대한 공격을 금지하는 방법에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계와,
    상기 제1 코드 내의 어떤 프로그램 명령어가 활성인지를 결정하는 단계와,
    상기 제1 코드로부터의 프로그램 명령어가 활성이 아니라는 결정에 응답하여 상기 제1 코드로부터 상기 프로그램 명령어를 제거하는 단계
    를 포함하는 공격 금지 방법.
  23. 매립 디바이스에 대한 공격을 금지하는 방법에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계와,
    상기 제1 코드와 기능적으로 등가인 제2 코드를 상기 매립 디바이스 외부에 위치된 제2 프로세서로부터 수신하는 단계
    를 포함하는 공격 금지 방법.
  24. 제23항에 있어서, 상기 매립 디바이스의 부팅을 검출한 것 및 상기 제2 코드에 대한 요청을 상기 제2 프로세서에 전송한 것 중 적어도 하나에 응답하여 상기 제2 코드를 수신하는 단계를 더 포함한 공격 금지 방법.
  25. 매립 디바이스에 대한 공격을 금지하는 방법에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계와,
    상기 제1 코드의 프로그램 명령어가 라이브러리를 공유하는지 결정하는 단계와,
    상기 라이브러리의 카피를 생성하는 단계
    를 포함하고,
    각각의 프로그램 명령어는 상기 라이브러리의 카피 중 하나에 링크된 것인 공격 금지 방법.
  26. 매립 디바이스에 대한 공격을 금지하는 방법에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계와,
    프로그램 명령어를 제1 기억 위치로부터 제2 기억 위치로 재배치함으로써 상기 제1 코드 내의 프로그램 명령어를 변이시키는 단계
    를 포함하는 공격 금지 방법.
  27. 매립 디바이스에 대한 공격을 금지하는 방법에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계와,
    상기 매립 디바이스에의 침입을 검출하기 위한 프로그램 명령어를 포함한 페이로드를 주입하는 단계와,
    상기 매립 디바이스에서 실행하는 운영체제의 시스템 실행 콘텍스트를 저장하는 단계와,
    적어도 부분적으로 상기 매립 디바이스와 관련된 처리 리소스에 기초하여 상기 페이로드의 실행을 위한 시구간을 결정하는 단계와,
    상기 시구간 동안 상기 페이로드를 실행하는 단계와,
    상기 시구간이 경과되었다는 결정에 응답하여 상기 페이로드의 페이로드 실행 콘텍스트를 저장하는 단계와,
    상기 매립 디바이스의 동작을 계속하기 위해 상기 운영체제의 시스템 실행 콘텍스트를 로드하는 단계
    를 포함하는 공격 금지 방법.
  28. 매립 디바이스에 대한 공격을 금지하는 방법에 있어서,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계와,
    침입 조건을 모니터링하도록 각각 지정되는 복수의 코드 이미지를 생성하는 단계와,
    상기 매립 디바이스에서 실행되는 다른 코드 이미지와 관련된 동작 상태를 모니터링하도록 각각 추가로 지정되는 복수의 코드 이미지를 상기 매립 디바이스에 주입하는 단계와,
    상기 복수의 코드 이미지 중 하나가 디스에이블되었음을 표시하는 동작 상태 및 상기 침입 조건 중 적어도 하나를 상기 복수의 코드 이미지 중 하나로부터 수신한 것에 응답하여 경보를 수신하는 단계
    를 포함하는 공격 금지 방법.
  29. 프로세서에 의해 실행될 때 상기 프로세서로 하여금 매립 디바이스에 대한 공격을 금지하는 방법을 수행하게 하는 컴퓨터 실행가능 명령어를 내포한 비일시적 컴퓨터 판독 가능한 매체에 있어서,
    상기 방법은,
    통신 네트워크 내의 하나 이상의 디지털 처리 장치에게 하나 이상의 서비스를 제공하도록 구성된 매립 디바이스를 식별하는 단계와,
    상기 매립 디바이스와 관련된 제1 코드를 수신하는 단계와,
    상기 제1 코드 내의 미사용 코드를 결정하고, 제2 코드 내의 미사용 코드를 제거하여 자유 기억 위치를 생성하고, 상기 자유 기억 위치를 이용하여 상기 제1 코드로부터의 나머지 프로그램 명령어를 상기 제2 코드 내의 기억 위치에서 재구성하여 적어도 하나의 방어 페이로드 및 적어도 하나의 폴리시를 삽입함으로써, 상기 제1 코드와 기능적으로 등가인 상기 제2 코드를 생성하는 단계와,
    상기 제2 코드를 상기 매립 디바이스에 주입하는 단계와,
    상기 매립 디바이스에 의해 실행될 때 상기 매립 디바이스에의 침입을 검출하는 하나 이상의 프로그램 명령어를 추가하여 상기 제2 코드를 생성하는 단계와,
    제1 시구간에서 상기 매립 디바이스의 메모리부의 제1 체크섬을 결정하고, 제2 시구간에서 상기 매립 디바이스의 메모리부의 제2 체크섬을 결정하며, 상기 제1 체크섬과 상기 제2 체크섬을 비교함으로써 상기 침입을 검출하는 단계
    를 포함하는 것인 비일시적 컴퓨터 판독 가능한 매체.
KR1020147025726A 2012-02-15 2013-02-15 매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어 KR102132501B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261599377P 2012-02-15 2012-02-15
US61/599,377 2012-02-15
US201261602061P 2012-02-22 2012-02-22
US61/602,061 2012-02-22
US201361765646P 2013-02-15 2013-02-15
PCT/US2013/026529 WO2013176711A2 (en) 2012-02-15 2013-02-15 Methods, systems, and media for inhibiting attacks on embedded devices
US61/765,646 2013-02-15

Publications (2)

Publication Number Publication Date
KR20140125860A KR20140125860A (ko) 2014-10-29
KR102132501B1 true KR102132501B1 (ko) 2020-07-09

Family

ID=49624475

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147025726A KR102132501B1 (ko) 2012-02-15 2013-02-15 매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어

Country Status (3)

Country Link
US (1) US10887340B2 (ko)
KR (1) KR102132501B1 (ko)
WO (1) WO2013176711A2 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10055251B1 (en) 2009-04-22 2018-08-21 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for injecting code into embedded devices
US9628507B2 (en) * 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
CA2982867A1 (en) * 2015-04-07 2016-10-13 RunSafe Security, Inc. System and method of obfuscation through binary and memory diversity
US10698752B2 (en) * 2017-10-26 2020-06-30 Bank Of America Corporation Preventing unauthorized access to secure enterprise information systems using a multi-intercept system
US10977367B1 (en) * 2018-02-06 2021-04-13 Facebook, Inc. Detecting malicious firmware modification
CN109831443B (zh) * 2019-02-26 2021-06-04 武汉科技大学 工业控制网络攻防实验平台及半实物仿真方法
US11347860B2 (en) * 2019-06-28 2022-05-31 Seagate Technology Llc Randomizing firmware loaded to a processor memory
CN110445770B (zh) * 2019-07-18 2022-07-22 平安科技(深圳)有限公司 网络攻击源定位及防护方法、电子设备及计算机存储介质
US11281472B2 (en) * 2020-02-03 2022-03-22 Dell Products L.P. System and method for securing compromised information handling systems
DE102020108070A1 (de) * 2020-03-24 2021-09-30 Basler Aktiengesellschaft Robuste Überwachung von Computersystemen und/oder Steuerungssystemen

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020013938A1 (en) * 2000-02-09 2002-01-31 Evelyn Duesterwald Fast runtime scheme for removing dead code across linked fragments
US20110219452A1 (en) 2008-10-31 2011-09-08 Hewlett-Packard Development Company, L.P. Method and Apparatus for Network Intrusion Detection

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6253317B1 (en) 1997-01-09 2001-06-26 Sun Microsystems, Inc. Method and apparatus for providing and handling traps
US6052778A (en) * 1997-01-13 2000-04-18 International Business Machines Corporation Embedded system having dynamically linked dynamic loader and method for linking dynamic loader shared libraries and application programs
US7137105B2 (en) 1999-05-12 2006-11-14 Wind River Systems, Inc. Dynamic software code instrumentation method and system
US6874087B1 (en) 1999-07-13 2005-03-29 International Business Machines Corporation Integrity checking an executable module and associated protected service provider module
US6718543B2 (en) 1999-11-08 2004-04-06 Hewlett-Packard Development Company, L.P. Method and apparatus for optimization of the performance of an application program in a computer system while preserving the system behavior
US7111280B2 (en) 2000-02-25 2006-09-19 Wind River Systems, Inc. System and method for implementing a project facility
US8010469B2 (en) * 2000-09-25 2011-08-30 Crossbeam Systems, Inc. Systems and methods for processing data flows
US20020166059A1 (en) * 2001-05-01 2002-11-07 Rickey Albert E. Methods and apparatus for protecting against viruses on partitionable media
US7047521B2 (en) 2001-06-07 2006-05-16 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
US7581103B2 (en) 2001-06-13 2009-08-25 Intertrust Technologies Corporation Software self-checking systems and methods
EP1410181A1 (en) 2001-07-16 2004-04-21 Yuqing Ren Embedded software update system
US20030056115A1 (en) * 2001-09-20 2003-03-20 Andreas Falkenberg System for and method of protecting data in firmware modules of embedded systems
US6996814B2 (en) * 2001-11-14 2006-02-07 Sun Microsystems, Inc. Method and apparatus for dynamically compiling byte codes into native code
US7086049B2 (en) 2002-02-26 2006-08-01 International Business Machines Corporation Background code update for embedded systems
US7386839B1 (en) 2002-11-06 2008-06-10 Valery Golender System and method for troubleshooting software configuration problems using application tracing
JP2004220070A (ja) 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
TWI220962B (en) * 2003-01-20 2004-09-11 Mediatek Inc Firmware updating method and related apparatus for checking content of replacing firmware before firmware updating
US8225293B2 (en) 2003-02-13 2012-07-17 Accurate Technologies Inc. Method for supporting calibration parameters in an ECU
US20040168157A1 (en) 2003-02-18 2004-08-26 Robert Hundt System and method for creating a process invocation tree
US20050108562A1 (en) 2003-06-18 2005-05-19 Khazan Roger I. Technique for detecting executable malicious code using a combination of static and dynamic analyses
US7596721B1 (en) 2004-01-09 2009-09-29 Maxtor Corporation Methods and structure for patching embedded firmware
US8286125B2 (en) * 2004-08-13 2012-10-09 Cypress Semiconductor Corporation Model for a hardware device-independent method of defining embedded firmware for programmable systems
US8161453B2 (en) 2004-11-16 2012-04-17 Rabih Chrabieh Method and apparatus for implementing task management of computer operations
US7735138B2 (en) 2005-01-14 2010-06-08 Trend Micro Incorporated Method and apparatus for performing antivirus tasks in a mobile wireless device
US20060174226A1 (en) 2005-02-03 2006-08-03 Sytex, Inc. Methods, Test Systems And Computer-Readable Medium For Dynamically Modifying Flow Of Executable Code
CN101278260B (zh) 2005-06-07 2012-07-18 威睿公司 使软件程序免于弱点和攻击的约束注入方法
US8327448B2 (en) * 2005-06-22 2012-12-04 Intel Corporation Protected clock management based upon a non-trusted persistent time source
US7647636B2 (en) 2005-08-24 2010-01-12 Microsoft Corporation Generic RootKit detector
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US7873952B2 (en) 2006-03-09 2011-01-18 Oracle America, Inc. Code transformation to optimize fragments that implement constant loading
US7469329B2 (en) * 2006-03-30 2008-12-23 International Business Machines Corporation Methods for dynamically resizing memory pools
WO2007117582A2 (en) * 2006-04-06 2007-10-18 Smobile Systems Inc. Malware detection system and method for mobile platforms
US7962798B2 (en) 2006-04-17 2011-06-14 The Trustees Of Columbia University In The City Of New York Methods, systems and media for software self-healing
US20070274230A1 (en) 2006-05-23 2007-11-29 Werber Ryan A System and method for modifying router firmware
US8286238B2 (en) 2006-09-29 2012-10-09 Intel Corporation Method and apparatus for run-time in-memory patching of code from a service processor
JP4294059B2 (ja) * 2007-03-22 2009-07-08 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
US8001596B2 (en) 2007-05-03 2011-08-16 Microsoft Corporation Software protection injection at load time
US7966660B2 (en) * 2007-05-23 2011-06-21 Honeywell International Inc. Apparatus and method for deploying a wireless network intrusion detection system to resource-constrained devices
US8239836B1 (en) 2008-03-07 2012-08-07 The Regents Of The University Of California Multi-variant parallel program execution to detect malicious code injection
US8793662B2 (en) 2008-03-25 2014-07-29 Microsoft Corporation Runtime code hooking for print driver and functionality testing
CN101247416A (zh) * 2008-03-25 2008-08-20 中兴通讯股份有限公司 基于ota的固件下载方法、预处理方法、完整性验证方法
GB0806284D0 (en) 2008-04-07 2008-05-14 Metaforic Ltd Profile-guided tamper-proofing
US8266597B2 (en) 2008-06-16 2012-09-11 International Business Machines Corporation Dynamically patching computer code using breakpoints
US10055251B1 (en) 2009-04-22 2018-08-21 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for injecting code into embedded devices
US10656931B2 (en) * 2009-05-26 2020-05-19 Comcast Cable Communications, Llc Network event triggered software updates
US9047450B2 (en) * 2009-06-19 2015-06-02 Deviceauthority, Inc. Identification of embedded system devices
WO2011119985A2 (en) * 2010-03-26 2011-09-29 Maxlinear, Inc. Firmware authentication and deciphering for secure tv receiver
US9392017B2 (en) 2010-04-22 2016-07-12 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for inhibiting attacks on embedded devices
US8370689B2 (en) 2010-05-06 2013-02-05 Utc Fire & Security Americas Corporation, Inc. Methods and system for verifying memory device integrity
EP2453352A1 (en) * 2010-11-08 2012-05-16 Gemalto SA Software updating process for an embedded device
TW201301039A (zh) * 2011-06-24 2013-01-01 Hon Hai Prec Ind Co Ltd 韌體燒錄方法
US8954747B2 (en) * 2011-07-01 2015-02-10 Intel Corporation Protecting keystrokes received from a keyboard in a platform containing embedded controllers
US8971144B2 (en) 2012-01-19 2015-03-03 Quixant Plc Hardware write-protection

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020013938A1 (en) * 2000-02-09 2002-01-31 Evelyn Duesterwald Fast runtime scheme for removing dead code across linked fragments
US20110219452A1 (en) 2008-10-31 2011-09-08 Hewlett-Packard Development Company, L.P. Method and Apparatus for Network Intrusion Detection

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Ang Cui 외1,"Defending Embedded Systems with Software Symbiotes", International Workshop on Recent Advances in Intrusion Detection RAID 2011: Recent Advances in Intrusion Detection, pp.358-377
O’Sullivan 외5,"Retrofitting Security in COTS Software with Binary Rewriting",SEC 2011,IFIP AICT 354, pp.154-172

Also Published As

Publication number Publication date
WO2013176711A3 (en) 2015-06-18
KR20140125860A (ko) 2014-10-29
WO2013176711A2 (en) 2013-11-28
US10887340B2 (en) 2021-01-05
US20200014705A1 (en) 2020-01-09

Similar Documents

Publication Publication Date Title
US10341378B2 (en) Methods, systems, and media for inhibiting attacks on embedded devices
US10887340B2 (en) Methods, systems, and media for inhibiting attacks on embedded devices
US11853414B2 (en) Mitigation of return-oriented programming attacks
US11157300B2 (en) Managing virtual machine security resources
CN110121876B (zh) 用于通过使用行为分析检测恶意设备的系统和方法
EP3474176B1 (en) System and method of detecting a malicious file
US9898340B2 (en) Computing platform security methods and apparatus
JP6370747B2 (ja) バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法
CN107851155B (zh) 用于跨越多个软件实体跟踪恶意行为的系统及方法
JP5967107B2 (ja) マルウェアに対処するための方法及び装置
JP6055574B2 (ja) セキュアなオペレーティングシステム環境へのコンテキストベースのスイッチング
US20200120130A1 (en) Self-healing architecture for resilient computing services
US11288090B1 (en) Methods, systems, and media for injecting code into embedded devices
US11409868B2 (en) Ransomware detection and mitigation
Alzahrani et al. An analysis of conti ransomware leaked source codes
GB2570543A (en) Detecting triggering events for distributed denial of service attacks
Sharp An introduction to malware
US11314859B1 (en) Cyber-security system and method for detecting escalation of privileges within an access token
EP2815350B1 (en) Methods, systems, and media for inhibiting attacks on embedded devices
CH716699B1 (it) Metodo per contrastare la rimozione di informazioni di scienza digitale forense da parte di software dannosi.
Akter et al. Securing app distribution process of iOS exploiting the notion of authentic update
Rabaiotti Counter intrusion software: Malware detection using structural and behavioural features and machine learning
Bridges Studying a virtual testbed for unverified data

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right