KR20220085786A - 랜섬웨어 방지 - Google Patents

랜섬웨어 방지 Download PDF

Info

Publication number
KR20220085786A
KR20220085786A KR1020227015347A KR20227015347A KR20220085786A KR 20220085786 A KR20220085786 A KR 20220085786A KR 1020227015347 A KR1020227015347 A KR 1020227015347A KR 20227015347 A KR20227015347 A KR 20227015347A KR 20220085786 A KR20220085786 A KR 20220085786A
Authority
KR
South Korea
Prior art keywords
file
files
trusted
request
requesting
Prior art date
Application number
KR1020227015347A
Other languages
English (en)
Inventor
매튜 홀랜드
Original Assignee
필드 이펙트 소프트웨어 아이엔씨.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 필드 이펙트 소프트웨어 아이엔씨. filed Critical 필드 이펙트 소프트웨어 아이엔씨.
Publication of KR20220085786A publication Critical patent/KR20220085786A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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
    • 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/1491Countermeasures against malicious traffic using deception as countermeasure, e.g. honeypots, honeynets, decoys or entrapment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2123Dummy operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Virology (AREA)
  • Bioethics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Amplifiers (AREA)
  • Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)
  • Polysaccharides And Polysaccharide Derivatives (AREA)

Abstract

파일 액세스 요청을 모니터링하여 랜섬웨어 공격이 방지될 수 있다. 프로세스가 디렉토리 리스팅을 요청할 때, 제공된 결과는 프로세스가 신뢰되는지 여부에 기초하여 수정될 수 있다. 신뢰되는 프로세스의 경우, 제공된 결과는 실제 디렉토리 리스팅인 반면, 신뢰되지 않는 프로세스에 제공된 결과는 시딩된 파일을 포함하도록 수정될 수 있다. 시딩된 파일에 대한 액세스는 프로세스가 랜섬웨어 공격과 연관되는지를 결정하기 위해 모니터링될 수 있으며, 시도된 랜섬웨어 공격을 완화하기 위한 단계가 취해진다. 또한 랜섬웨어는 신뢰되는 프로세싱된 것만 특정 파일에 액세스하게 허용되도록 보장함으로써 방지될 수 있다. 개선된 사용자 경험을 제공하기 위해, 프로세스는 시스템 구조로부터 자동으로 결정될 수 있고, 그 신뢰 가치가 결정된다.

Description

랜섬웨어 방지
관련 출원에 대한 상호 참조
본 출원은 2019년 10월 21일자로 출원된 미국 가특허출원 제62/923,941호 및 2020년 7월 30일자로 출원된 미국 가특허출원 제63/059,151호에 대한 우선권을 주장하며, 각각의 전체 내용은 순전히 참조로 본원에 통합된다.
기술 분야
본 개시는 컴퓨터 시스템의 보안, 특히 컴퓨터 시스템에 대한 랜섬웨어 공격을 방지하는 것에 관한 것이다.
랜섬웨어 공격은 몸값이 공격자에게 지불될 때까지 공격자가 사용자 파일을 암호화함으로써 컴퓨터 시스템의 데이터 또는 컴퓨터 시스템 자체에 대한 액세스를 거부하려고 시도하는 컴퓨터 시스템에 대한 보안 위협 유형이다. 'WannaCry' 랜섬웨어 공격이라는 명칭의 사이버 공격은 서버 메시지 블록(SMB: Server Message Block) 프로토콜의 Microsoft Windows™운영 체제 구현에서 패치되지 않은 익스플로잇(unpatched exploit)을 이용하여 수백만 대의 컴퓨터 시스템을 잠재적으로 취약하게 만든다.
랜섬웨어는 랜섬웨어가 컴퓨터 시스템 상에 설치되거나 컴퓨터 시스템에 액세스하는 것을 방지하기 위해 노력하는 경우 바이러스 또는 다른 보안 위협으로 취급될 수 있지만, 최근 랜섬웨어 공격은 알려지지 않았거나 패치되지 않은 운영 체제의 보안 취약성을 이용했다. 랜섬웨어 공격의 영향은 컴퓨터 시스템의 정기적인 백업을 사용하여 추가로 완화할 수 있으며, 이는 데이터의 적어도 일부를 복원되게 할 수 있지만 최근 데이터는 검색될 수 없고 상당한 시간과 비용이 소요될 것이다.
랜섬웨어 공격을 방지하거나 완화하기 위한 추가의 대안적 및/또는 개선된 시스템이 바람직하다.
본 개시에 따르면, 랜섬웨어 공격 방지 방법이 제공되며, 본 방법은 파일 시스템에서 요청 프로세스로부터 입력/출력(IO: input/output) 요청을 수신하는 단계; 요청 프로세스가 신뢰되는 프로세스인지 여부에 기초하여 요청 프로세스의 신뢰 분류를 결정하는 단계; 요청 프로세스의 신뢰 분류에 기초하여 IO 요청의 결과를 수정하는 단계; 및 요청 프로세스가 신뢰되지 않는 신뢰 분류를 갖는 것으로 결정될 때 요청 프로세스로부터의 수정된 결과의 하나 이상의 IO 요청을 모니터링하는 단계를 포함한다.
추가 실시예에서, 본 방법은 프로세스가 수정된 결과의 하나 이상의 파일에 액세스하려고 할 때 신뢰되지 않는 프로세스의 추가 파일 액세스를 제한하는 단계; 및 요청 프로세스를 격리하는 단계 중 하나 이상을 추가로 포함한다.
본 방법의 추가 실시예에서, 추가 파일 액세스를 제한하는 단계는: 신뢰되지 않는 프로세스가 파일을 판독하는 것을 방지하는 단계; 신뢰되지 않는 프로세스가 파일을 기입하는 것을 방지하는 단계; 신뢰되지 않는 프로세스가 파일을 삭제하는 것을 방지하는 단계; 및 신뢰되지 않는 프로세스가 파일을 이동시키는 것을 방지하는 단계 중 하나 이상을 포함한다.
본 방법의 추가 실시예에서, 결과를 수정하는 단계는: 요청 프로세스가 신뢰되지 않는 경우, 요청 프로세스에 제공된 결과에 시딩(seeding)된 파일을 포함시키는 단계; 및 요청 프로세스가 신뢰되는 경우, 요청 프로세스에 제공된 결과로부터 시딩된 파일을 배제하는 단계를 포함한다.
본 방법의 추가 실시예에서, 시딩된 파일은 저장 매체 상에 저장되고, 신뢰되는 경우 요청 프로세스에 제시된 결과로부터 제거된다.
본 방법의 추가 실시예에서, 시딩된 파일은: 정의된 명명 규칙; 및 시딩된 파일 이름의 목록 중 하나 이상을 사용하여 식별된다.
본 방법의 추가 실시예에서, 시딩된 파일은 신뢰되지 않는 경우 요청 프로세스에 제시된 결과에 추가된다.
본 방법의 추가 실시예에서, 시딩된 파일만이 신뢰되지 않는 경우 요청 프로세스에 대한 결과로서 제시된다.
본 방법의 추가 실시예에서, 파일 시스템은 커널 모드에서 실행되고, 요청 프로세스는 사용자 모드 또는 커널 모드에서 실행된다.
본 방법의 추가 실시예에서, 수정된 결과의 상기 하나 이상의 IO 요청을 모니터링하는 단계는: 수정된 결과 중 하나 이상에 대한 기입 프로세스를 검출하는 단계; 기입 프로세스에 의해 기입되고 있는 컨텐츠가 암호화될 가능성이 있는지를 결정하는 단계; 및 기입되고 있는 컨텐츠가 암호화될 가능성이 있는 것으로 결정되면 기입 프로세스를 차단하는 단계를 포함한다.
본 개시에 따르면, 랜섬웨어 공격을 방지하지 위한 시스템이 추가로 제공되며, 시스템은: 명령어를 실행하기 위한 프로세서; 명령어를 저장하기 위한 메모리를 포함하고, 명령어는 프로세서에 의해 실행될 때, 파일 시스템에서 요청 프로세스로부터 입력/출력(IO) 요청을 수신하는 단계; 요청 프로세스가 신뢰되는 프로세스인지 여부에 기초하여 요청 프로세스의 신뢰 분류를 결정하는 단계; 요청 프로세스의 신뢰 분류에 기초하여 IO 요청의 결과를 수정하는 단계; 및 요청 프로세스가 신뢰되지 않는 신뢰 분류를 갖는 것으로 결정될 때 요청 프로세스로부터의 수정된 결과의 하나 이상의 IO 요청을 모니터링하는 단계를 포함하는 방법을 수행하도록 시스템을 구성한다.
본 시스템의 추가 실시예에서, 명령어에 의해 구성된 방법은: 프로세스가 수정된 결과의 하나 이상의 파일에 액세스하려고 할 때 신뢰되지 않는 프로세스의 추가 파일 액세스를 제한하는 단계; 및 요청 프로세스를 격리하는 단계 중 하나 이상을 추가로 포함한다.
본 시스템의 추가 실시예에서, 추가 파일 액세스를 제한하는 단계는: 신뢰되지 않는 프로세스가 파일을 판독하는 것을 방지하는 단계; 신뢰되지 않는 프로세스가 파일을 기입하는 것을 방지하는 단계; 신뢰되지 않는 프로세스가 파일을 삭제하는 것을 방지하는 단계; 및 신뢰되지 않는 프로세스가 파일을 이동시키는 것을 방지하는 단계 중 하나 이상을 포함한다.
본 시스템의 추가 실시예에서, 결과를 수정하는 단계는: 요청 프로세스가 신뢰되지 않는 경우, 요청 프로세스에 제공된 결과에 시딩된 파일을 포함시키는 단계; 및 요청 프로세스가 신뢰되는 경우, 요청 프로세스에 제공된 결과로부터 시딩된 파일을 배제하는 단계를 포함한다.
본 시스템의 추가 실시예에서, 시딩된 파일은 저장 매체 상에 저장되고, 신뢰되는 경우 요청 프로세스에 제시된 결과로부터 제거된다.
본 시스템의 추가 실시예에서, 시딩된 파일은: 정의된 명명 규칙; 및 시딩된 파일 이름의 목록 중 하나 이상을 사용하여 식별된다.
본 시스템의 추가 실시예에서, 시딩된 파일은 신뢰되지 않는 경우 요청 프로세스에 제시된 결과에 추가된다.
본 시스템의 추가 실시예에서, 시딩된 파일만이 신뢰되지 않는 경우 요청 프로세스에 대한 결과로서 제시된다.
본 시스템의 추가 실시예에서, 파일 시스템은 커널 모드에서 실행되고, 요청 프로세스는 사용자 모드 또는 커널 모드에서 실행된다.
본 시스템의 추가 실시예에서, 수정된 결과의 하나 이상의 IO 요청을 모니터링하는 단계는: 수정된 결과 중 하나 이상에 대한 기입 프로세스를 검출하는 단계; 기입 프로세스에 의해 기입되고 있는 컨텐츠가 암호화될 가능성이 있는지를 결정하는 단계; 및 기입되고 있는 컨텐츠가 암호화될 가능성이 있는 것으로 결정되면 기입 프로세스를 차단하는 단계를 포함한다.
본 개시에 따르면, 명령어를 저장한 비일시적 컴퓨터 판독 가능 매체가 추가로 제공되며, 명령어는 컴퓨터 시스템의 프로세서에 의해 실행될 때, 파일 시스템에서 요청 프로세스로부터 입력/출력(IO) 요청을 수신하는 단계; 요청 프로세스가 신뢰되는 프로세스인지 여부에 기초하여 요청 프로세스의 신뢰 분류를 결정하는 단계; 요청 프로세스의 신뢰 분류에 기초하여 IO 요청의 결과를 수정하는 단계; 및 요청 프로세스가 신뢰되지 않는 신뢰 분류를 갖는 것으로 결정될 때 요청 프로세스로부터의 수정된 결과의 하나 이상의 IO 요청을 모니터링하는 단계를 포함하는 방법을 수행하도록 컴퓨터 시스템을 구성한다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 명령어에 의해 구성된 방법은: 프로세스가 수정된 결과의 하나 이상의 파일에 액세스하려고 할 때 신뢰되지 않는 프로세스의 추가 파일 액세스를 제한하는 단계; 및 요청 프로세스를 격리하는 단계 중 하나 이상을 추가로 포함한다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 추가 파일 액세스를 제한하는 단계는: 신뢰되지 않는 프로세스가 파일을 판독하는 것을 방지하는 단계; 신뢰되지 않는 프로세스가 파일을 기입하는 것을 방지하는 단계; 신뢰되지 않는 프로세스가 파일을 삭제하는 것을 방지하는 단계; 및 신뢰되지 않는 프로세스가 파일들 이동시키는 것을 방지하는 단계 중 하나 이상을 포함한다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 결과를 수정하는 단계는: 요청 프로세스가 신뢰되지 않는 경우, 요청 프로세스에 제공된 결과에 시딩된 파일을 포함시키는 단계; 및 요청 프로세스가 신뢰되는 경우, 요청 프로세스에 제공된 결과로부터 시딩된 파일을 배제하는 단계를 포함한다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 시딩된 파일은 저장 매체 상에 저장되고, 신뢰되는 경우 요청 프로세스에 제시된 결과로부터 제거된다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 시딩된 파일은 정의된 명명 규칙; 및 시딩된 파일 이름의 목록 중 하나 이상을 사용하여 식별된다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 시딩된 파일은 신뢰되지 않는 경우 요청 프로세스에 제시된 결과에 추가된다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 시딩된 파일만이 신뢰되지 않는 경우 요청 프로세스에 대한 결과로서 제시된다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 파일 시스템은 커널 모드에서 실행되고, 요청 프로세스는 사용자 모드 또는 커널 모드에서 실행된다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 수정된 결과의 하나 이상의 IO 요청을 모니터링하는 단계는: 수정된 결과 중 하나 이상에 대한 기입 프로세스를 검출하는 단계; 기입 프로세스에 의해 기입되고 있는 컨텐츠가 암호화될 가능성이 있는지를 결정하는 단계; 및 기입되고 있는 컨텐츠가 암호화될 가능성이 있는 것으로 결정되면 기입 프로세스를 차단하는 단계를 포함한다.
본 개시에 따르면, 랜섬웨어 공격 방지 방법이 추가로 제공되며, 본 방법은: 복수의 파일 유형과 복수의 파일 유형 중 각각의 파일 유형에 액세스하는 데 사용되는 프로세스 간의 매핑을 프로세싱하기 위해 파일 유형을 자동으로 결정하기 위해 시스템 구조를 프로세싱하는 단계; 프로세스 매핑에 대한 파일 유형의 프로세스 각각에 대해, 프로세스의 신뢰 가치를 평가하는 단계; 파일 시스템에서 요청 프로세스로부터 입력/출력(IO) 요청을 수신하는 단계; 요청 프로세스가 신뢰되는 프로세스인지 결정하는 단계; 및 요청 프로세스가 신뢰되는지의 결정에 기초하여 IO 요청을 허용하거나 차단하는 단계를 포함한다.
추가 실시예에서, 본 방법은: 프로세스 매핑에 대한 파일 유형의 프로세스 각각에 대해, 신뢰에 대해 평가된 프로세스의 지문을 생성하는 단계; 및 요청 프로세스가 신뢰되는지 결정할 때: 요청 프로세스의 요청 프로세스 지문을 결정하는 단계; 및 요청 프로세스 지문과 신뢰에 대해 평가된 프로세스의 이전에 결정된 지문을 비교하는 단계를 추가로 포함하고, IO 요청을 허용하거나 차단하는 것은 요청 프로세스 지문과 이전에 결정된 지문의 비교에 추가로 기초한다.
본 방법의 추가 실시예에서, 요청 프로세스 지문과 이전에 결정된 지문이 매칭되지 않는 경우, 요청 프로세스의 신뢰 가치를 재평가한다.
본 방법의 추가 실시예에서, 시스템 구조는 윈도우즈(Windows) 레지스트리를 포함한다.
본 방법의 추가 실시예에서, 프로세스 매핑에 대한 파일 유형을 자동으로 결정하기 위해 윈도우즈 레지스트리를 프로세싱하는 단계는: 레지스트리의 제1 알려진 위치로부터 등록된 어플리케이션을 결정하는 단계로서, 제1 알려진 위치의 각각의 등록된 어플리케이션은 레지스트리의 각각의 제2 위치를 특정하는, 결정하는 단계; 결정된 등록 어플리케이션의 각각에 대해: 각각의 제2 위치로부터 각각의 등록된 어플리케이션과 연관된 파일 유형을 결정하는 단계로서, 파일 유형의 각각은 레지스트리의 제3 위치를 특정하는, 결정하는 단계; 및 파일 유형의 각각에 대해, 각각의 제3 위치로부터, 파일 시스템 상에 위치된 각각의 프로세스 실행자(executable)와 각각 연관된 하나 이상의 파일 액세스 명령을 결정하는 단계를 포함한다.
본 방법의 추가 실시예에서, 시스템 구조는 macOS 시스템 구조를 포함한다.
본 방법의 추가 실시예에서, 프로세스 매핑에 대한 파일 유형을 자동으로 결정하기 위해 macOS 시스템 구조를 프로세싱하는 단계는, API를 사용하여 주어진 호스트에서 복수의 UTI를 식별하는 단계; 및 UTI 매핑을 등록된 어플리케이션 또는 등록된 어플리케이션을 지원하는 번들(bundle)과 상관시키는 단계를 포함한다.
본 개시에 따르면, 랜섬웨어 공격을 방지하지 위한 시스템이 추가로 제공되며, 본 시스템은: 명령어를 실행하기 위한 프로세서; 및 명령어를 저장하기 위한 메모리를 포함하고, 명령어는 프로세서에 의해 실행될 때, 복수의 파일 유형과 복수의 파일 유형 중 각각의 파일 유형에 액세스하는 데 사용되는 프로세스 간의 매핑을 프로세싱하기 위해 파일 유형을 자동으로 결정하기 위해 시스템 구조를 프로세싱하는 단계; 프로세스 매핑에 대한 파일 유형의 프로세스 각각에 대해, 프로세스의 신뢰 가치를 평가하는 단계; 파일 시스템에서 요청 프로세스로부터 입력/출력(IO) 요청을 수신하는 단계; 요청 프로세스가 신뢰되는 프로세스인지 결정하는 단계; 및 요청 프로세스가 신뢰되는지의 결정에 기초하여 IO 요청을 허용하거나 차단하는 단계를 포함하는 방법을 수행하도록 시스템을 구성한다.
본 시스템의 추가 실시예에서, 명령어를 실행함으로써 구성된 본 방법은: 프로세스 매핑에 대한 파일 유형의 프로세스 각각에 대해, 신뢰에 대해 평가된 프로세스의 지문을 생성하는 단계; 및 요청 프로세스가 신뢰되는지 결정할 때: 요청 프로세스의 요청 프로세스 지문을 결정하는 단계; 및 요청 프로세스 지문과 신뢰에 대해 평가된 프로세스의 이전에 결정된 지문을 비교하는 단계를 추가로 포함하고, IO 요청을 허용하거나 차단하는 것은 요청 프로세스 지문과 이전에 결정된 지문의 비교에 추가로 기초한다.
본 시스템의 추가 실시예에서, 요청 프로세스 지문과 이전에 결정된 지문이 매칭되지 않는 경우, 요청 프로세스의 신뢰 가치를 재평가한다.
본 시스템의 추가 실시예에서, 시스템 구조는 윈도우즈 레지스트리를 포함한다.
본 시스템의 추가 실시예에서, 프로세스 매핑에 대한 파일 유형을 자동으로 결정하기 위해 윈도우즈 레지스트리를 프로세싱하는 단계는: 레지스트리의 제1 알려진 위치로부터 등록된 어플리케이션을 결정하는 단계로서, 제1 알려진 위치의 각각의 등록된 어플리케이션은 레지스트리의 각각의 제2 위치를 특정하는, 결정하는 단계; 결정된 등록 어플리케이션의 각각에 대해: 각각의 제2 위치로부터 각각의 등록된 어플리케이션과 연관된 파일 유형을 결정하는 단계로서, 파일 유형의 각각은 레지스트리의 제3 위치를 특정하는, 결정하는 단계; 및 파일 유형의 각각에 대해, 각각의 제3 위치로부터, 파일 시스템 상에 위치된 각각의 프로세스 실행자와 각각 연관된 하나 이상의 파일 액세스 명령을 결정하는 단계를 포함한다.
본 시스템의 추가 실시예에서, 시스템 구조는 macOS 시스템 구조를 포함한다.
본 시스템의 추가 실시예에서, 프로세스 매핑에 대해 파일 유형을 자동으로 결정하기 위해 macOS 시스템 구조를 프로세싱하는 단계는: API를 사용하여 주어진 호스트에서 복수의 UTI를 식별하는 단계; 및 UTI 매핑을 등록된 어플리케이션 또는 등록된 어플리케이션을 지원하는 번들과 상관시키는 단계를 포함한다.
본 개시에 따르면, 명령어를 저장한 비일시적 컴퓨터 판독 가능 매체가 추가로 제공되며, 명령어는 컴퓨터 시스템의 프로세서에 의해 실행될 때, 복수의 파일 유형과 복수의 파일 유형 중 각각의 파일 유형에 액세스하는 데 사용되는 프로세스 간의 매핑을 프로세싱하기 위해 파일 유형을 자동으로 결정하기 위해 시스템 구조를 프로세싱하는 단계; 프로세스 매핑에 대한 파일 유형의 프로세스 각각에 대해, 프로세스의 신뢰 가치를 평가하는 단계; 파일 시스템에서 요청 프로세스로부터 입력/출력(IO) 요청을 수신하는 단계; 요청 프로세스가 신뢰되는 프로세스인지 결정하는 단계; 및 요청 프로세스가 신뢰되는지의 결정에 기초하여 IO 요청을 허용하거나 차단하는 단계를 포함하는 방법을 수행하도록 컴퓨터 시스템을 구성한다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 명령어에 의해 구성된 방법은: 프로세스 매핑에 대한 파일 유형의 상기 프로세스 각각에 대해, 신뢰에 대해 평가된 프로세스의 지문을 생성하는 단계; 및 요청 프로세스가 신뢰되는지 결정할 때: 요청 프로세스의 요청 프로세스 지문을 결정하는 단계; 및 요청 프로세스 지문과 신뢰에 대해 평가된 프로세스의 이전에 결정된 지문을 비교하는 단계를 추가로 포함하고, IO 요청을 허용하거나 차단하는 것은 요청 프로세스 지문과 이전에 결정된 지문의 비교에 추가로 기초한다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 요청 프로세스 지문과 이전에 결정된 지문이 매칭되지 않는 경우, 요청 프로세스의 신뢰 가치를 재평가한다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 시스템 구조는 윈도우즈 레지스트리를 포함한다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 프로세스 매핑에 대해 파일 유형을 자동으로 결정하기 위해 윈도우즈 레지스트리를 프로세싱하는 단계는: 레지스트리의 제1 알려진 위치로부터 등록된 어플리케이션을 결정하는 단계로서, 제1 알려진 위치의 각각의 등록된 어플리케이션은 레지스트리의 각각의 제2 위치를 특정하는, 결정하는 단계; 결정된 등록 어플리케이션의 각각에 대해: 각각의 제2 위치로부터 각각의 등록된 어플리케이션과 연관된 파일 유형을 결정하는 단계로서, 파일 유형의 각각은 레지스트리의 제3 위치를 특정하는, 결정하는 단계; 및 파일 유형의 각각에 대해, 각각의 제3 위치로부터, 파일 시스템 상에 위치된 각각의 프로세스 실행자와 각각 연관된 하나 이상의 파일 액세스 명령을 결정하는 단계를 포함한다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 시스템 구조는 macOS 시스템 구조를 포함한다.
비일시적 컴퓨터 판독 가능 매체의 추가 실시예에서, 프로세스 매핑에 대해 파일 유형을 자동으로 결정하기 위해 macOS 시스템 구조를 프로세싱하는 단계는, API를 사용하여 주어진 호스트에서 복수의 UTI를 식별하는 단계; 및 UTI 매핑을 등록된 어플리케이션 또는 등록된 어플리케이션을 지원하는 번들과 상관시키는 단계를 포함한다.
본 개시의 추가 특징 및 이점은 첨부된 도면과 함께 취해진 다음의 상세한 설명으로부터 명백해질 것이며, 여기서:
도 1은 랜섬웨어 공격을 방지하거나 완화시키기 위한 컴퓨터 시스템을 도시한다.
도 2는 랜섬웨어 공격을 완화시키는 방법을 도시한다.
도 3a 및 도 3b는 각각 랜섬웨어 공격을 완화시키는 데 사용하기 위한 각각의 방법을 도시한다.
도 4a, 도 4b 및 도 4c는 각각 랜섬웨어 공격을 완화시키는 데 사용하기 위한 각각의 방법을 도시한다.
도 5는 랜섬웨어 공격 프로세스 및 공격 완화를 도시한다.
도 6a는 랜섬웨어 완화 기능을 구현하는 컴퓨터 시스템의 파일에 액세스하는 신뢰되는 프로세스를 도시한다.
도 6b는 랜섬웨어 완화 기능을 구현하는 컴퓨터 시스템의 파일에 액세스하는 신뢰되지 않는 프로세스를 도시한다.
도 7은 랜섬웨어 공격 프로세스 및 공격의 추가 완화를 도시한다.
도 8은 프로세스 기반 공격 완화 방법을 도시한다.
도 9는 추가의 프로세스 기반 공격 완화 방법을 도시한다.
도 10은 파일 유형과 연관된 프로세스의 신뢰를 결정하는 방법을 도시한다.
도 11은 파일 유형과 연관된 프로세스를 결정하는 데 사용되는 시스템 구조를 도시한다.
랜섬웨어 공격은 프로세스가 파일을 암호화된 컨텐츠로 덮어쓰는 것을 방지하거나 원격 위치에 복사된 파일이 직접 또는 파일 이름 변경 시맨틱(semantic)을 악용함으로써 삭제되는 것을 방지함으로써 방지 또는 완화될 수 있다. 대부분의 프로세스는 적절한 권한으로 파일 컨텐츠를 덮어쓸 수 있는 신뢰되는 프로세스이지만, 일부 프로세스는 알려지지 않은 신뢰 가치를 가질 수 있으며, 랜섬웨어 공격의 가능성이 없는 경우 데이터 덮어쓰기를 허용해야 한다. 본원에서 추가로 설명되는 바와 같이, 가능한 랜섬웨어 프로세스는 예를 들어, 디렉토리 리스팅이 요청될 때 신뢰되지 않는 프로세스에 제시될 파일을 시딩(seeding)하는 것을 포함하여 다양한 방식으로 식별될 수 있다. 그 후 시딩된 파일에 대한 액세스가 모니터링될 수 있으며 신뢰되지 않는 프로세스가 시딩된 파일에 액세스하는 경우, 추가 액세스가 차단될 수 있거나 신뢰되지 않는 프로세스를 일시 중단 또는 격리하는 것과 같은 다른 완화 조치를 취할 수 있다. 랜섬웨어 방지 기능은 시스템의 모든 입력/출력(IO) 요청을 프로세싱할 수 있는 파일 시스템 필터 또는 미니 필터로 구현될 수 있다. 파일을 시딩하면 랜섬웨어 프로세스를 검출하는 데 도움이 될 수 있지만, 신뢰되지 않는 프로세스를 결정하는 것을 시도하기보다, 신뢰되는 프로세스를 결정할 수 있다. 다양한 파일 유형에 액세스 및/또는 편집하는 데 사용될 수 있는 어플리케이션을 식별하기 위해 개인에 의한 구성 없이 다른 파일 유형에 액세스하기 위해 신뢰되는 프로세스를 결정하는 것이 어려울 수 있다. 파일을 시딩하여 가능한 랜섬웨어 공격을 식별하는 것에 대한 대안으로 또는 이에 추가하여, 아래에서 상세히 추가로 설명되는 바와 같이, 상이한 파일 유형에 액세스하여 프로세스가 신뢰되는지 결정하는 데 사용되는 프로세스를 자동으로 결정할 수 있다.
도 1은 랜섬웨어 공격을 방지하거나 완화하기 위한 컴퓨터 시스템을 도시한다. 컴퓨터 시스템은 예를 들어, 데스크탑 컴퓨터, 랩탑, 서버 또는 Windows™, macOS™, Linux™, Chrome™, Android™, iOS™, iPadOS™와 같은 운영 체제를 실행하는 다른 컴퓨팅 디바이스일 수 있다. 설명된 프로세스는 Windows™ 운영 체제에 적용할 수 있지만 랜섬웨어 공격에 취약한 운영 체제에도 적용될 수 있다. 컴퓨터 시스템(100)은 독립형 컴퓨터일 수 있거나 기업 네트워크와 같은 네트워크 환경에 위치될 수도 있거나 퍼스널 컴퓨터일 수 있다. 컴퓨터의 제조 또는 폼 팩터(form factor)에 관계없이, 다양한 기능을 제공하도록 컴퓨터 시스템(100)을 구성하기 위해 명령어를 실행하기 위한 중앙 처리 장치(CPU)(102)를 포함할 수 있다. 컴퓨터 시스템(100)은 CPU(102)에 동작 가능하게 커플링되고 CPU(102)에 의한 실행을 위한 명령어(106)를 저장하는 메모리(104)를 포함한다. 컴퓨터(100)는 하드 디스크 드라이브(108)로서 도시된 비휘발성 저장소를 추가로 포함할 수 있지만, 다른 디바이스는 예를 들어, 솔리드 스테이트 드라이브, 플래시 메모리, 광학 저장소, 네트워크 연결 저장소, 네트워크 공유 등을 포함하는 비휘발성 저장소를 제공할 수 있다. 또한, 하드 디스크 드라이브(108)가 컴퓨터(100) 내부에 있는 것으로 도시되어 있지만, 하드 드라이브 또는 다른 비휘발성 저장소는 컴퓨터(100) 외부에 있을 수 있다. 비휘발성 저장 디바이스는 다양한 파일(110)을 하나 이상의 디렉토리에 저장할 수 있다.
파일(110)은 개인, 기업 또는 다른 엔티티에 대해 가치 있거나 민감할 수 있는 파일을 포함할 수 있는 하나 이상의 디렉토리에 저장될 수 있다. 예를 들어, 파일에는 사용자 문서, 멀티미디어 파일, 금융 디렉토리에 저장된 회사의 재무 정보를 포함할 수 있으며, 이와 같이, 예를 들어 파일을 암호화하는 외부 당사자에 의해 파일에 대한 액세스가 거부된 경우, 사용자 또는 회사는 영향을 받을 수 있다. 가치 있거나 민감한 파일을 갖는 디렉토리는 랜섬웨어 공격에 취약할 수 있다. 다른 파일은 민감하지 않거나 이에 대한 액세스가 차단된 경우 쉽게 복원될 수 있다. 예를 들어, 시스템 파일은 어플리케이션이나 운영 체제를 다시 설치하여 복원될 수 있다.
저장된 명령어는 실행될 때 컴퓨터의 기본 기능을 지원하는 운영 체제(OS)를 제공하도록 컴퓨터(100)를 구성할 수 있다. OS(112)는 사용자 모드(114) 및 커널 모드(116)를 제공할 수 있다. 어플리케이션은 일반적으로 사용자 모드(114)에서 실행되는 반면, OS의 핵심 기능은 커널 모드(116)에서 실행된다. 어플리케이션은 사용자 모드에서 하나 이상의 프로세스(118)로서, 또는 하나 이상의 프로세스에 상주하는 하나 이상의 동적 라이브러리로서 실행된다. 프로세스는 어플리케이션 프로그래밍 인터페이스(API: Application Programming Interface) 또는 사용자-모드 드라이버와 같은 정의된 인터페이스를 통해 커널 모드의 기능에 액세스할 수 있다. 예를 들어, 파일 편집기 어플리케이션은 디렉토리에 있는 파일을 리스팅하기 위한 API를 사용하여 디렉토리 정보를 요청할 수 있다. OS는 입력/출력(IO) 관리자(120), 또는 어플리케이션 간의 통신 또는 어플리케이션의 프로세스를 관리하는, 파일 I/O를 관리하는 다른 운영 체제 구성 요소, 및 복수의 디바이스 드라이버에 의해 제공되는 인터페이스를 포함할 수 있다. 운영 체제와 디바이스 드라이버 간의 통신은 운영 체제 구성 요소와 드라이버 간에 송신되는 I/O 요청 패킷(IRP)을 사용하여 수행될 수 있다. 드라이버는 계층화된 모델을 사용할 수 있다. 예를 들어, 드라이버의 스택은 하드 드라이브에 저장된 파일에 액세스하는 프로세스와 연관될 수 있다.
OS(112)는 프로세스가 하나 이상의 저장 디바이스에서 파일을 생성, 판독, 리스팅, 업데이트 및 삭제할 수 있게 하는 파일 시스템(122)을 제공할 수 있다. IO 관리자(120)에서 수신된 파일 요청은 파일 시스템으로 전달될 수 있다. 파일 시스템(122)은 필터가 파일 시스템 요청에 적용되는 것을 허용할 수 있다. 예를 들어, 요청 프로세스가 요청된 파일에 액세스할 권한이 있는지를 결정하는 필터가 적용될 수 있다. 필터는 하나 이상의 파일 필터로 제공되거나, 필터 관리자(124)로 등록된 하나 이상의 미니-필터로 제공될 수 있다. 필터 관리자(124)는 IRP를 인터셉팅(intercepting)하여 필터 및 등록된 미니-필터로 특정 순서로 전달한다. 도시된 바와 같이, 복수의 미니-필터(126, 128)가 동일한 필터 관리자(124)로 등록될 수 있다. 랜섬웨어 방지 기능은 필터 관리자(124)로 등록된 미니-필터(128) 또는 레거시 파일 필터(130)로서 제공될 수 있다. 필터 및 미니-필터는 요청 및/또는 결과를 수정할 수 있다. 파일 시스템 드라이버(132)는 수정된 요청을 수신하고 이를 적절한 저장 드라이버 스택(134)으로 전달한다. 저장 드라이버 스택(134)은 하드웨어에 대한 요청을 준비하고 결과를 반환한다. 결과를 수정하기 위해 결과는 필터 및 미니-필터로 다시 전달될 수 있다. 도 1에 도시되지는 않았지만, 랜섬웨어 방지 기능은 파일 시스템 필터 드라이버로서 제공될 수 있다.
랜섬웨어 방지 기능은 악성 프로세스가 실제 파일을 식별하는 것을 어렵게 만들기 위해 파일 리스팅을 변경하여 랜섬웨어 공격을 방지할 수 있다. 또한, 변경된 파일 리스팅은 악성 프로세스를 식별하는 데 사용될 수 있다. 추가적으로 또는 대안적으로, 랜섬웨어 방지 기능은 프로세스가 신뢰되는지 여부에 기초하여 파일 액세스를 방지할 수 있다. 프로세스 결정 기능(136)은 다른 파일 유형에 액세스하기 위해 컴퓨터에 의해 어떤 프로세스가 사용되는지를 결정하는 데 사용될 수 있다. 신뢰 결정 기능(138)은 프로세스가 신뢰되는지를 결정하기 위해 프로세스 또는 프로세스의 실행자를 평가할 수 있다. 프로세스가 신뢰되는지 여부는 컴퓨팅 디바이스, 사용자, 엔티티 등에 따라 다를 수 있다. 예를 들어, 가정 사용자는 알려진 개발자 또는 다른 알려진 소스로부터의 것인 경우, 어플리케이션 또는 어플리케이션의 프로세스를 신뢰할 수 있지만, 기업 환경에서는, 사용되거나 신뢰될 수 있는 어플리케이션의 제한되거나 한정된 목록이 있을 수 있다.
아래에서 더 상세히 설명되는 바와 같이, 랜섬웨어 미니-필터(128) 또는 가능한 랜섬웨어(또는 악성 소프트웨어) 필터 기능은 프로세스로부터 디렉토리 요청 또는 요청 결과를 수신할 수 있다. 프로세스에 제공될 결과는 요청 프로세스가 신뢰되거나 알려진 프로세스로 간주되는지 여부에 기초하여 수정될 수 있다. 신뢰되는 프로세스는 디렉토리에 저장된 실제 파일을 식별하는 결과와 함께 제시되는 반면, 신뢰되지 않거나 비신뢰되는 프로세스에 제시된 결과는 실제 파일 이전에 액세스할 가능성이 더 높은 디렉토리 리스팅 내의 추가 시드 파일로 시딩된다. 프로세스가 신뢰되는지 또는 신뢰되지 않는지는 다양한 방식으로 결정될 수 있다. 예를 들어, 화이트 리스트(white list)는 신뢰되는 프로세스에 제공될 수 있으며 화이트 리스트에 없는 임의의 프로세스는 신뢰되지 않는 것으로 고려될 수 있다. 또한, 프로세스의 특성에 기초하여 프로세스의 신뢰 분류가 주기적으로 결정될 수 있다. 예를 들어, 신뢰 분류 엔진은 어플리케이션이 설치된 위치, 이름, 프로세스 실행 시간, 프로세스의 네트워크 활동, 프로세스의 파일 시스템 활동, 어드레스 공간 내에 로딩된 서명된/서명되지 않은 동적 모듈, 어드레스 공간이 있는 비귀속 실행 가능 코드 등을 포함하는 다양한 요인에 기초하여 프로세스가 신뢰되는지 또는 신뢰되지 않는지를 결정할 수 있다. 신뢰되지 않는 프로세스는 신뢰될 수 없는 합법적인 프로세스와 명시적으로 신뢰되지 않는 불법적인 프로세스 모두를 포함할 수 있다. 랜섬웨어 미니-필터(128) 기능은 프로세스가 임의의 시딩된 파일에 액세스를 시도하는지 결정하기 위해 신뢰되지 않는 프로세스로부터 파일 액세스 요청을 모니터링할 수 있다. 프로세스가 시딩된 파일에 액세스를 시도하면, 랜섬웨어 미니-필터 기능이 프로세스의 추가 파일 액세스를 제한할 수 있다. 시딩된 파일은 프로세스에 반환된 결과의 시작에 이를 배치되는 방식으로 명명될 수 있다. 예를 들어, 시드 파일은 실제 파일 앞에 알파벳 순으로 삽입될 수 있다. 시드 파일은 .DOC, .DOCK, XLA, XLSX, .PPT, .PPTX, .ODT, .RTF, .TXT, .PDF, .JPG, .MPG, .MP4 등에 한정되지 않지만 이와 같은 일반적인 파일 확장자 유형과 연관된다. 프로세스가 랜섬웨어 프로세스이거나, 프로세스가 주입된 랜섬웨어를 포함하는 경우, 프로세스는 디렉토리 목록의 첫 번째로 시작하는 파일의 암호화를 시도할 수 있지만, 랜섬웨어 기능은 디렉토리 리스팅의 시작에 시딩된 파일의 시도된 암호화를 검출할 수 있다. 랜섬웨어 미니-필터(128)의 사용은 신뢰되는 프로세스에 대한 파일 시스템의 성능에 부정적인 영향을 미치지 않으면서 랜섬웨어 공격으로부터 컴퓨터 시스템을 보호할 수 있다.
도 2는 랜섬웨어 공격을 완화하는 방법을 도시한다. 방법(200)은 커널 모드에서 실행되는 운영 체제의 파일 시스템 내에서 구현될 수 있다. 예를 들어, 랜섬웨어 방지 방법(200)은 파일 시스템의 필터 관리자로 등록하는 미니-필터로 구현될 수 있다. 방법(200)은 디렉토리 리스팅을 검색하기 위한 IO 요청을 수신한다(202). IO 요청은 결과가 검색되기 전에 수신되거나 결과와 함께 수신될 수 있다. IO 요청은 요청 프로세스와 연관되며 파일 시스템의 필터, 미니-필터 및 드라이버를 포함하는 파일 시스템 구성 요소 간에 송신될 수 있는 IRP(IO request packet)에서 제공될 수 있다. 각 구성 요소는 요청 및/또는 결과를 프로세싱할 때 IRP를 수정할 수 있다. IO 요청을 수신한 후, 요청 프로세스의 신뢰 분류가 결정된다(204). 신뢰 분류는 프로세스를 신뢰되거나 신뢰되지 않는 것으로 식별할 수 있다. 신뢰되지 않는 프로세스는 알려지지 않은 신뢰 가치를 가질 수 있다. 즉, 신뢰되지 않는 프로세스는 여전히 파일 시스템에 액세스할 수 있어야 하는 유효한 프로세스일 수 있다. 즉, 신뢰되지 않는 모든 프로세스가 안전하지 않은 것으로 고려되는 것은 아니다. 요청 프로세스의 신뢰 분류가 결정되면, 결정된 신뢰 분류에 기초하여 IO 요청의 결과를 수정하는 데 사용된다(206). 신뢰되는 것으로 결정된 요청 프로세스에는 랜섬웨어 방지 기능이 없는 것처럼 디렉토리 리스팅에 대한 IO 요청에 대한 결과가 제시된다. 대조적으로, 신뢰되지 않는 프로세스에는 하나 이상의 시딩된 파일을 포함하는 IO 요청에 대한 결과가 제시된다. 아래에서 더욱 상세히 설명하는 바와 같이, 시딩된 파일은 하드 드라이브에 저장되고 신뢰되는 프로세스에 제시된 결과에서 제거되거나, 시딩된 파일은 신뢰되지 않는 프로세스에 제시된 결과에 추가될 수 있다. 신뢰되지 않는 프로세스에 제시된 시딩된 파일은 결과 목록의 맨 위에서 시딩된 파일을 위치시키는 방식으로 명명되거나 파일이 결과 목록 전체에 걸쳐 시딩될 수 있다. 랜섬웨어 프로세스는 일반적으로 결과 목록의 맨 위에서 파일 암호화를 시작할 수 있으며, 이와 같이 디렉토리에 있는 임의의 실제 파일을 암호화하기 전에 시딩된 파일 중 하나를 암호화하려고 시도한다. 요청 비신뢰 프로세스의 추가 IO 요청은 수정된 결과의 요청에 대해 모니터링된다(208). IO 요청은 신뢰되지 않는 프로세스에 의해 시딩된 파일에 대한 파일 액세스를 검출하기 위해 모니터링될 수 있다. 시딩된 파일은 랜섬웨어 공격을 검출하기 위해 생성되므로, 신뢰되지 않는 경우에도 정상적인 프로세스는 통상적으로 시딩된 파일에 액세스하지 않는다. 아래에서 추가로 상세히 설명하는 바와 같이, 시딩된 파일을 판독하고, 시딩된 파일에 기입할 뿐만 아니라, 취할 적절한 조치를 결정하는 데 도움이 되도록 시딩된 파일에 기입 중인 컨텐츠를 가능하게는 비교하기 위해 파일 액세스가 모니터링될 수 있다. 예를 들어, 신뢰되지 않는 프로세스는 조치를 취하지 않고 시딩된 파일을 판독할 수 있는 반면, 시딩된 파일에 기입하거나 삭제를 시도하면 완화 조치를 트리거링할 수 있다. IO 요청을 모니터링한 후, 신뢰되지 않는 프로세스로부터의 추가 파일 액세스가 제한될 수 있다(210). 예를 들어, 프로세스가 시딩된 파일에 기입하려고 시도하면, 프로세스가 추가 파일 액세스로부터 차단될 수 있다. 또한, 해당 프로세스는 격리될 수 있고(212), 종료 또는 일시 중단되거나 불법 프로세스로 마킹될 수 있다.
도 3a 및 도 3b는 각각 랜섬웨어 공격을 완화시키는 데 사용하기 위한 각각의 방법을 도시한다. 도 3a는 시딩된 파일이 하드 드라이브 또는 다른 비휘발성 저장 매체에 저장되는 방법을 도시한다. 방법(300a)은 파일을 저장 매체에 시딩한다(302). 파일은 모든 디렉토리 또는 선택된 디렉토리에만 시딩될 수 있다. 파일의 시딩은 시딩된 파일의 유형이 일반적으로 디렉토리의 실제 파일 유형과 매칭되도록 수행될 수 있다. 예를 들어, 디렉토리가 절반의 워드 문서와 절반의 이미지인 파일을 갖는 경우, 시딩된 파일은 일반적으로 구성과 매칭되므로 시딩된 파일의 절반은 워드 문서이고 나머지 절반은 이미지이다. 시딩된 파일의 이름은 결과 목록 내의 다양한 위치에서 시딩된 파일을 찾는 데 사용될 수 있다. 디렉토리 리스팅의 결과는 통상적으로 알파벳 순서로 제시되며, 이와 같이 '1111seedfile.doc'라는 이름의 시드 파일이 결과에서 가장 먼저 나타날 것이다. 랜섬웨어가 결과 상단에서 파일 암호화를 시작할 가능성이 높기 때문에 결과 목록 상단에서 시딩된 파일을 찾는 것이 특히 유용한 것으로 여겨지지만, 결과 전체에서 다른 위치에서 시딩된 파일을 찾을 수 있다. 또한, 단일 파일과 같이 적은 것을 포함하여 제한된 수의 파일만 시딩할 수 있지만, 디렉토리의 각각의 실제 파일에 대해 파일을 시딩할 수 있다. 파일의 시딩은 시작에서 한 번 발생하는 것으로 도시되지만, 지속적으로 시딩된 파일을 업데이트하거나 수정할 수 있다. 파일이 시딩된 후, 디렉토리 리스팅에 대한 IO 요청의 결과가 수신된다(304). 결과는 실제 파일뿐만 아니라 시딩된 파일 모두를 포함할 것이다. 요청 프로세스의 신뢰 분류가 결정되고(306a), 요청 프로세스가 신뢰되면(306a에서 예) 시딩된 파일이 결과에서 제거된다(308a). 결과에서 시딩된 파일은 다양한 방식으로 식별될 수 있다. 예를 들어, 시딩된 파일 이름의 목록이 유지 관리되고 결과에 임의의 파일이 있는지 결정하기 위해 검사될 수 있다. 추가적으로 또는 대안적으로, 결과의 파일의 특성은 시딩된 파일을 식별하는 데 사용될 수 있다. 예를 들어, 파일 이름은 특정 명명 규칙과 비교하는 것과 같이 시딩된 파일을 식별하는 데 사용될 수 있다. 파일 크기 및/또는 생성 날짜와 같은 추가 특성이 시딩된 파일을 식별하는 데 사용될 수 있다. 일단 시딩된 파일이 결과로부터 제거되면, 결과는 요청 프로세스로 반환될 수 있다(310). 신뢰되는 프로세스에 제시된 시딩된 파일을 제거함으로써, 실제 파일만 제시될 것이다. 요청 프로세스가 신뢰되는 것으로 결정되지 않은 경우(306a에서 아니오), 시딩된 파일을 포함하는 결과가 요청 프로세스로 반환된다(310). 따라서, 신뢰되지 않는 프로세스는 실제 파일과 시딩된 파일을 모두를 수신할 것이다.
도 3b는 시딩된 파일이 하드 드라이브 또는 다른 비휘발성 저장 매체에 저장되지 않고 대신 결과에 삽입되는 방법을 도시한다. 도 3a를 참조하여 상술한 바와 같이, 시딩된 파일은 하드 드라이브에 저장된 다음 신뢰되는 프로세스에 제시된 결과에서 제거되었다. 대조적으로, 방법(300b)은 임의의 시딩된 파일을 하드 드라이브 또는 다른 비휘발성 저장 매체에 저장하지 않고, 오히려 파일을 신뢰되지 않는 프로세스에 제시된 결과에 시딩한다. 방법(300a)에서와 같이, 방법(300b)은 디렉토리 리스팅에 대한 IO 요청의 결과를 수신한다(304). 프로세스의 신뢰 분류가 결정되고(306b), 프로세스가 신뢰되지 않으면(306b에서 아니오), 결과는 파일로 시딩된다(308b). 결과에 파일을 시딩하는 것은 상술한 하드 드라이브에 파일을 시딩하는 것과 유사한 방식으로 수행될 수 있다. 예를 들어, 파일 이름이 결과 내에서 시딩된 파일을 위치시키는 데 사용될 수 있다. 시딩된 파일의 유형은 또한 디렉토리의 파일 유형 구성과 매칭되도록 선택될 수 있다. 시딩된 파일로 결과가 수정되면, 결과가 반환된다(310). 프로세스가 신뢰되지 않는 프로세스인 것으로 결정되면(306b에서 예), 임의의 시딩된 파일이 없는 결과가 반환된다(310).
상술한 바와 같이, 시드 파일은 신뢰되지 않는 것으로 결정된 프로세스에 제시될 수 있다. 파일은 다양한 방법으로 시딩될 수 있다. 예를 들어, 디렉토리는 결과 목록의 상단에 위치되도록 명명된 단일 파일로 시딩될 수 있거나, 시딩된 파일은 실제 파일 중 하나 이상의 위치에 위치되도록 명명될 수 있다. 디렉토리에 시딩된 파일은 파일이 시딩 중인 디렉토리에 기초하여 변할 수 있다. 예를 들어, 디렉토리는 파일 이름과 함께 존재하는 파일 유형을 결정하기 위해 프로파일링될 수 있다. 시딩된 파일의 프로파일이 디렉토리의 프로파일과 매칭되도록 디렉토리의 프로파일에 기초하여 파일이 시딩될 수 있다. 시딩된 파일의 이름은 원하는 위치에 시딩된 파일을 배치하기 위해 생성될 수 있다. 단일 파일이 디렉토리에 시딩될 수 있거나, 복수의 파일이 시딩될 수 있다. 시딩된 파일이 실제 파일 전에 리스팅되도록 보장하기 위해 실제 파일 이름에 비해 더 낮은 알파벳 순서를 갖는 이름의 시딩된 파일이 있는 디렉토리의 각각의 실제 컨텐츠 파일에 대해 파일을 시딩할 수 있다. 추가적으로 또는 대안적으로, 새로운 실제 컨텐츠 파일이 생성되고/생성되거나 기존 컨텐츠 파일이 제거될 때 시딩된 파일을 업데이트하기 위해 디렉토리가 모니터링될 수 있다. 시딩된 파일을 동적으로 업데이트하는 것이 랜섬웨어 공격을 방지하는 데 더욱 효과적일 수 있지만, 필요한 프로세싱은 컴퓨터 시스템의 프로세싱 능력에 따라 컴퓨터 시스템에 수용할 수 없는 프로세싱 부담을 줄 수 있다. 신뢰되지 않는 프로세스에 제시된 디렉토리 결과의 시딩 파일 외에도, 랜섬웨어 방지 기능은 또한 적절한 조치를 취하기 위해 프로세스가 시딩된 파일에 액세스를 시도하는 때를 검출하기 위해 신뢰되지 않는 프로세스로부터의 IO 요청을 모니터링한다.
상술한 바와 같이, 프로세스에 결과를 제공할 때, 요청 프로세스의 신뢰 특성이 결정될 수 있다. 프로세스의 신뢰 특성에 대한 결정은 어플리케이션 또는 프로세스가 설치된 위치, 프로세스 또는 어플리케이션이 설치된 시기, 합법적으로 로딩된 동적 라이브러리, 주입된 동적 라이브러리(있는 경우), 프로세스 또는 어플리케이션이 실행되는 방식, 어플리케이션 또는 프로세스가 일반적으로 액세스하는 파일 및 디렉토리를 포함하여 많은 요인에 기초할 수 있다. 특정 프로세스가 신뢰될 수 있지만, 신뢰되지 않는 모든 프로세스가 동등하게 신뢰될 수 없는 것은 아니다. 신뢰되지 않는 프로세스가 시딩된 파일에 액세스하거나 액세스를 시도할 때 취해야 할 적절한 조치는 예를 들어, 액세스되는 파일이 있는 특정 디렉토리, 요청 프로세스의 신뢰 가치 등을 포함하는 많은 요인에 따를 수 있다.
도 4a, 도 4b 및 도 4c는 각각 랜섬웨어 공격을 방지하는 데 사용하기 위한 각각의 방법을 도시한다. 도 4a에 도시된 바와 같이, 방법(400)은 신뢰되지 않는 프로세스로부터 시딩된 파일에 대한 파일 판독 IO 요청을 검출할 수 있다(402). 시딩된 파일의 파일 판독을 검출하면, 프로세스에 의한 임의의 추가 파일 시스템 액세스가 차단될 수 있다(404). 따라서, 프로세스가 시딩된 파일을 판독하려고 시도하면 임의의 다른 파일 시스템 작업을 수행하지 못할 수 있으며, 이와 같이 프로세스가 랜섬웨어 프로세스인 경우, 임의의 파일을 암호화할 수 없을 것이다. 추가 파일 시스템 액세스로부터 프로세스를 차단한 후, 로컬 사용자 또는 관리자에게 프로세스가 차단되어야 하는지 확인하도록 프롬프팅할 수 있다(406). 프롬프트는 로컬 컴퓨터에 있을 수 있거나 네트워크 관리자나 보안 담당자에게 적절한 조치를 취하라는 원격 통지일 수도 있다. 프롬프트 또는 통지가 로컬 또는 원격으로 제공되는지 여부에 관계없이, 프롬프트는 차단을 확인하고, 사일런트(silent) 차단에 대한 통지를 제공하고/제공하거나 관리자에게 취해진 조치에 대해 통지하는 것일 수 있다. 파일 시스템 액세스를 차단한 후 발생하는 것으로 도시되지만, 실제로 프로세스를 차단하기 전에 사용자 또는 관리자에게 해당 프로세스가 차단되어야 하는지 확인하도록 프롬프팅할 수 있다. 또한, 사용자 또는 관리자에게 프롬프팅하는 것은 예를 들어, 사용자에게 확인 박스를 표시하거나 사용자에게 차단된 프로세스 목록을 표시하는 등을 포함하는 다양한 방식으로 수행될 수 있다.
도 4b는 상술한 바와 같이 시드 파일에 대한 판독을 검출하는 것이 아니라 방법(410)은 시드 파일에 대한 기입 IO 요청을 검출한다는 점(412)을 제외하고는 방법(400)과 유사한 방법(410)을 도시한다. 시드 파일에 기입을 시도하면, 프로세스에 의한 추가 파일 시스템 액세스가 차단될 수 있다(414). 상술한 바와 같이, 프로세스에 의해 파일 시스템 액세스를 차단한 후, 사용자 또는 관리자는 도 4a와 관련하여 상술한 바와 같이 프로세스가 차단되어야 하는지를 확인하기 위해 프롬프팅될 수 있다.
도 4c는 신뢰되지 않는 프로세스에 대한 파일 액세스를 제한하는 추가 방법(420)을 도시한다. 방법(420)은 시딩된 파일을 판독하는 데 신뢰되지 않는 프로세스로부터의 IO 요청을 검출한다(422). 판독 액세스를 검출하면, 시드 파일 컨텐츠가 저장된다(424). 시드 파일이 표준 포맷 및 컨텐츠를 사용하는 경우, 시드 파일이 이미 저장되어 있을 수 있다는 점에 유의한다. 시드 파일(426)에 대한 기입을 검출하면 파일에 기입되고 있는 컨텐츠가 원본 컨텐츠(428)와 비교되어 기입 중인 파일이 암호화될 가능성이 있는지를 결정한다(430). 파일의 시작에서 컨텐츠 또는 통상적으로 매우 많이 변하지 않는 파일 위치를 비교하여 파일이 암호화되고 있는지 결정할 수 있다. 예를 들어, 파일은 파일의 컨텐츠가 변경되더라도 실질적으로 변경되지 않을 수 있는 헤더 섹션을 가질 수 있다. 프로세스가 파일 암호화를 시도할 때, 헤더도 암호화될 수 있으며, 이와 같이 원본 파일의 헤더와 비교하여 실질적으로 변경될 것이다. 기입이 파일을 암호화하지 않을 가능성이 있는 것으로 결정되면(430에서 아니오), 프로세스에 의한 추가 파일 시스템 액세스가 허용될 수 있다(432). 그러나, 파일 기입이 컨텐츠를 암호화할 가능성이 있는 것으로 결정되면(430에서 예), 프로세스에 의한 추가 파일 시스템 액세스가 차단될 수 있다(434). 사용자 또는 관리자는 도 4a와 관련하여 상술한 바와 같이 프로세스(436)에 의해 파일 시스템 액세스의 차단을 확인하도록 프롬프팅될 수 있다.
도 4a 내지 도 4c를 참조하여 상술한 바와 같이, 다양한 방식으로 프로세스에 대한 파일 시스템 액세스를 제한할 수 있다. 방법(400, 410 또는 420) 중 어느 것이 사용되는지는 컴퓨터 시스템의 데이터가 얼마나 민감한지, 신뢰되지 않는 컴퓨터에서 얼마나 많은 프로세스가 실행되는지 및/또는 다른 가능한 요인에 기초할 수 있다는 것이 이해될 것이다.
도 5는 랜섬웨어 공격 프로세스와 가능한 공격 방지를 도시한다. 먼저 랜섬웨어 프로세스를 설명한 다음 상술한 랜섬웨어 방지 기능이 이러한 랜섬웨어 공격을 어떻게 방지할 수 있는지에 대해 설명할 것이다. 프로세스(500)는 디렉토리 리스팅을 요청하는 랜섬웨어 프로세스로 시작된다(502). 랜섬웨어 프로세스는 디렉토리 리스팅 결과를 수신하고 이것이 가치 있는 디렉토리인지를 결정할 수 있다(504). 랜섬웨어가 디렉토리를 취약한 것으로 고려하는지 여부는 예를 들어, 디렉토리에 존재하는 파일 유형, 디렉토리 이름, 파일 수 등에 기초할 수 있다. 디렉토리가 취약한 것으로 고려되지 않는 경우(504에서 아니오) 사용자에게 가치 있거나 민감한 데이터를 포함하면, 랜섬웨어 프로세스가 다음 디렉토리로 진행할 수 있다(508). 디렉토리가 취약한 것으로 고려되면(504에서 예) 파일이 암호화될 수 있다(506). 암호화는 통상적으로 결과 목록의 첫 번째 파일로 시작하고 각 파일(510)에 대해 프로세스는 파일의 컨텐츠를 판독하고(512), 파일을 암호화하고(514), 암호화된 파일을 기입한 후(516), 결과 목록의 다음 파일로 진행한다(518). 상술한 바와 같이, 멀웨어(malware) 방지 기능 없이, 멀웨어 프로세스가 가치 있는 파일을 암호화하고 몸값을 추출하여 파일을 복호화할 수 있다.
상술한 멀웨어 방지 기능은 도 5에 설명된 것과 같은 멀웨어 프로세스를 임의의 파일 암호화로부터 방지하는 데 사용될 수 있다. 도 5에 도시된 바와 같이, 랜섬웨어 프로세스가 디렉토리 리스팅을 요청할 때, 멀웨어 방지 기능은 반환되는 디렉토리 목록에 시딩된 파일을 삽입한다(520). 상술한 바와 같이, 시딩된 파일은 디렉토리 목록의 상단에 위치되도록 명명될 수 있다. 랜섬웨어 프로세스가 파일 암호화를 시작하면, 첫 번째 파일 판독은 시딩된 파일이 되며 랜섬웨어 방지 기능은 액세스를 모니터링하고 파일 시스템에 대한 추가 액세스를 방지할 수 있다(522). 따라서 랜섬웨어 프로세스는 저장소로부터 또는 저장소에 더 이상 데이터를 판독하거나 기입할 수 없을 것이다. 랜섬웨어 방지가 프로세스가 파일을 판독하는 것을 허용하는 경우, 랜섬웨어 프로세스는 파일을 암호화한 다음 암호화된 컨텐츠를 파일에 기입하려고 시도할 수 있다. 랜섬웨어 방지 프로세스는 시딩된 파일에 대해 시도된 기입을 검출하고 추가 파일 시스템 액세스를 차단(524)하여 임의의 실제 파일이 암호화되는 것을 방지할 수 있다. 대안적으로, 랜섬웨어 방지 기능은 기입 중인 컨텐츠를 시딩된 파일의 원본 컨텐츠와 비교하여 파일이 암호화되고 있는지 결정하고, 암호화될 가능성이 있는 경우, 프로세스는 추가 파일 시스템 액세스로부터 차단될 수 있다.
상술한 바와 같이, 랜섬웨어 방지 기능은 신뢰되는 프로세스, 심지어 알려지지 않은 신뢰 가치를 갖는 합법적인 프로세스가 파일 시스템에 액세스하도록 허용하면서 알려지지 않은 신뢰 가치의 프로세스가 파일을 암호화하는 것을 방지할 수 있다.
도 6a는 랜섬웨어 완화 기능을 구현하는 컴퓨터 시스템의 파일에 액세스하는 신뢰되는 프로세스를 도시한다. 도시된 바와 같이, 신뢰되는 프로세스가 파일에 액세스를 시도할 때, 먼저 실제 파일의 목록(604)을 반환할 디렉토리 리스팅을 요청할 수 있다(602). 신뢰되는 프로세스는 파일 중 하나를 판독할 수 있고(606), 예를 들어, 사진(608)을 표시하는 것으로 도시된 컨텐츠를 표시하거나 다르게 사용할 수 있다. 그 후, 신뢰되는 프로세스는 파일 컨텐츠(612)를 편집 및 저장할 수 있다(610). 신뢰되는 프로세스의 경우, 시딩된 파일이 제시되지 않으며 프로세스는 디렉토리의 실제의 리얼(real) 파일 컨텐츠로만 제시될 것이다.
도 6b는 랜섬웨어 완화 기능을 구현하는 컴퓨터 시스템 상의 파일에 액세스하는 신뢰되지 않는 프로세스를 도시한다. 도시된 바와 같이, 신뢰되지 않는 프로세스는 디렉토리 리스팅을 요청할 수 있고(620) 실제 파일과 시딩된 파일 모두의 목록(622)을 수신한다. 신뢰되지 않는 프로세스가 랜섬웨어 프로세스인 경우, 프로세스는 목록의 상단에서 시작하여 파일 암호화를 시작할 가능성이 있으며, 이와 같이 시딩된 파일이 될 목록의 첫 번째 파일 판독을 시도할 것이다(624). 시딩된 파일은 체커보드 패턴(626)으로 도시된 더미(dummy) 컨텐츠를 가질 수 있거나, 다른 실제 파일로부터 복제된 컨텐츠를 가질 수 있다. 랜섬웨어 프로세스는 파일(630)을 암호화한 다음 암호화된 파일 기입을 시도할 수 있다(628). 랜섬웨어 방지 기능은 암호화된 컨텐츠를 기입하려는 시도 또는 시딩된 파일에 기입하려는 모든 시도를 검출할 수 있으며, 추가 파일 시스템 액세스로부터 랜섬웨어 프로세스를 차단할 수 있다(632). 따라서, 상술한 랜섬웨어 방지 기능은 신뢰되는 프로세스가 정상적으로 모든 파일에 액세스할 수 있게 하며, 신뢰되지 않는 악의적인 프로세스에는 하나 이상의 시딩된 파일이 제시되며, 이는 후속적으로 프로세스의 악의적인 활동을 식별하고 이를 추가 파일 시스템 액세스로부터 차단하는 데 사용될 수 있다. 신뢰되지 않는 합법적인 프로세스에는 시딩된 파일과 함께 실제 파일이 제시될 수 있다. 그러나, 합법적인 프로세스는 시딩된 파일에 기입을 시도하지 않을 가능성이 높으며, 이와 같이 정상적으로 기능할 것이다.
랜섬웨어 방지 기능은 특히 Windows 운영 체제에서 제공되는 MiniFilter를 사용하는 구현을 참조하여 상술되었다. 다른 운영 체제는 MiniFilter 또는 파일 필터를 사용하지 않을 수 있지만, 파일 시스템 액세스를 모니터링하고 제어하기 위한 유사한 기능을 제공하는 구성 요소를 포함한다는 것을 이해할 것이다. 랜섬웨어 방지 기능은 다른 운영 체제에서 파일 시스템 액세스를 관리하는 다른 파일 시스템 구성 요소에서 제공될 수 있다.
상술한 랜섬웨어 부착 방지는 가능한 랜섬웨어 프로세스에 시딩된 파일을 제시하거나 다르게 실제 파일을 숨김으로써 랜섬웨어 공격을 방지하려고 시도한다. 그러나, 아래에서 추가로 설명하는 바와 같이, 신뢰되는 프로세스만 파일에 액세스하도록 보장하여 랜섬웨어 공격을 방지할 수도 있다. 신뢰되는 프로세스만 파일에 액세스하도록 허용하는 것은 상술한 파일 시딩의 대안으로 또는 이에 추가하여 사용될 수 있다. 신뢰되는 프로세스에 대한 파일 액세스를 제한할 수 있지만, 신뢰되어야 하는 모든 프로세스를 식별하기 어려울 수 있다. 추가로 아래에서 설명하는 바와 같이, 신뢰디는 프로세스를 자동으로 식별할 수 있다.
도 7은 도 5의 랜섬웨어 공격 프로세스 및 프로세스의 신뢰에 기초한 공격의 가능한 방지를 도시한다. 상술한 바와 같이, 프로세스(500)는 디렉토리 리스팅을 요청하는 랜섬웨어 프로세스로 시작한다(502). 랜섬웨어 프로세스는 디렉토리 리스팅 결과를 수신하고 이것이 가치 있는 디렉토리인지 결정할 수 있다(504). 랜섬웨어가 디렉토리를 취약한 것으로 고려하는지 여부는 예를 들어, 디렉토리에 있는 파일 유형, 디렉토리 이름, 파일 수 등에 기초할 수 있다. 디렉토리가 취약한 것으로 고려되지 않는 경우(504에서 아니오) 사용자에게 가치 있거나 민감한 데이터를 포함하면, 랜섬웨어 프로세스가 다음 디렉토리로 진행할 수 있다(508). 디렉토리가 취약한 것으로 고려되면(504에서 예), 파일은 암호화될 수 있다(506). 암호화는 통상적으로 결과 목록의 첫 번째 파일로 시작하고 각 파일에 대해(510), 프로세스는 파일의 컨텐츠를 판독하고(512), 파일을 암호화하고(514), 암호화된 파일을 기입하고(516) 그 후 결과 목록의 다음 파일로 진행한다(518). 상술한 바와 같이, 멀웨어 방지 기능이 없으면, 멀웨어 프로세스가 가치 있는 파일을 암호화하고 몸값을 추출하여 파일을 복호화할 수 있다. 랜섬웨어 프로세스가 디렉토리 리스팅을 요청하면, 멀웨어 방지 기능이 반환되는 디렉토리 목록에 시딩된 파일을 삽입한다(520). 상술한 바와 같이, 시딩된 파일은 랜섬웨어 프로세스가 합법적인 파일에 액세스하는 것을 방지하는 데 사용될 수 있다. 그러나, 랜섬웨어 프로세스가 합법적인 파일을 어느 정도 식별할 수 있는 경우, 파일에 액세스하는 데 사용된 프로세스에 기초하여 파일 액세스를 모니터링하거나 완화하여 랜섬웨어 공격이 방지될 수 있다. 파일 액세스 모니터링/완화(722)는 프로세스가 실제 파일의 컨텐츠를 판독하려 시도할 때 수행될 수 있다. 추가적으로 또는 대안적으로, 파일 액세스 모니터링/완화(724)는 프로세스가 실제 파일의 컨텐츠를 기입하려고 시도할 때 수행될 수 있다.
도 8은 프로세스 기반 공격 완화 방법을 도시한다. 방법(800)은 하나 이상의 컴퓨팅 디바이스에 의해 구현될 수 있다. 신뢰되는 프로세스에 기초하여 파일 액세스를 허용하려면, 다양한 파일에 액세스하는 데 사용될 수 있는 프로세스 또는 실행자를 결정할 필요가 있다. 프로세스가 결정되면 프로세스의 신뢰 가치가 결정될 수 있으며, 파일에 액세스하는 프로세스가 신뢰되면 액세스가 진행할 수 있다. 방법(800)은 컴퓨팅 시스템 상의 상이한 파일 유형에 대한 프로세스 매핑에 대한 파일 유형을 생성한다(802). 매핑은 다른 파일 유형에 액세스하는 데 사용될 수 있는 실행자 또는 어플리케이션을 유지 관리하는 시스템 구조로부터 자동으로 생성될 수 있다. 예를 들어, Windows™ 운영 체제에서, 시스템 구조는 레지스트리에 의해 제공될 수 있다. 시스템 구조는 다른 파일 유형에 액세스하는 데 사용될 수 있는 실행자의 위치를 나타낼 수 있다. 예를 들어, 시스템 구조는 Microsoft™ Word를 사용하여 워드 문서를 편집하기 위한 실행자가 "C:\Program Files(x86)\Microsoft Office\Office16\WINWORD.EXE"에 위치되는지 결정하는 데 사용될 수 있다. 특정 설치 위치는 예를 들어, 다른 버전 및/또는 사용자 설정에 기초하여 변할 수 있음이 이해될 것이다. 프로세스 매핑에 대한 파일 유형이 결정되면, 각 프로세스의 신뢰 가치가 결정된다(804). WINWORD.EXE와 같은 프로세스가 신뢰되는지 여부는 예를 들어, 실행자가 신뢰되는 소스에 의해 서명되었는지 여부, 실행자가 바이러스 검사를 통과했는지 여부, 실행자가 파일 유형에 액세스하기 위한 알려진 실행자인지 여부, 실행자가 악의적인 것으로 알려져 있는지 여부, 신뢰되는 사용자가 실행자가 신뢰되는 것을 나타내었는지 여부 등을 포함하여 다양한 방식으로 결정될 수 있다. 실행자의 신뢰 가치가 결정되면, 신뢰되는 프로세스가 파일에 액세스하도록 허용될 수 있다.
프로세스의 신뢰 가치를 결정한 후, 기존 프로세스에 대한 기입과 같은 파일 액세스가 검출될 수 있다(806). 검출된 파일 기입은 기입 프로세스라고 칭하는 특정 프로세스로부터 이루어지며, 기입 프로세스 또는 기입 프로세스의 실행자가 신뢰되는지 결정된다(808). 기입 프로세스가 신뢰된다면(808에서 예) 파일 기입 또는 액세스가 진행하도록 허용된다. 기입 프로세스가 신뢰되지 않는 경우(808에서 아니오), 파일 기입 또는 액세스가 차단된다.
상이한 파일 유형에 액세스할 수 있는 실행자를 결정하기 위해 시스템 구조를 사용하면 가능한 실행자의 목록이 결정되고 그 후 신뢰 가치에 대해 평가될 수 있게 한다. 프로세스의 신뢰 가치를 자동으로 결정한 후, 정보는 파일 액세스를 제어하는 데 사용될 수 있다. 신뢰 가치가 평가된 후 프로세스가 변경되면, 이전에 신뢰했던 프로세스가 악성 프로세스로 대체되어 파일 액세스가 허용될 수 있다. 추가로 아래에서 설명하는 바와 같이, 수정된 프로세스의 신뢰는 재평가될 수 있다.
도 9는 추가 프로세스 기반 공격 완화 방법을 도시한다. 방법(900)은 프로세스 매핑에 대한 파일 유형을 생성하는 것으로 시작하며(802), 그 다음 도 8을 참조하여 상술한 바와 같이 매핑에서 프로세스의 신뢰를 결정한다(804). 프로세스의 신뢰가 결정되면, 프로세스의 지문이 결정되고 저장된다(906). 지문은 암호화 해시 또는 프로세스에 대한 수정이 검출될 수 있게 하는 다른 유사한 프로세스로서 결정될 수 있다. 프로세스의 지문이 결정되고 기입 프로세스가 검출되면(908), 기입 프로세스의 지문이 결정된 후 지문이 이전에 결정된 지문과 매칭되는지 결정된다(910). 지문이 매칭되지 않고(910에서 아니오) 파일에 액세스하려는 프로세스가 신뢰가 평가된 프로세스와 다른 경우, 프로세스의 신뢰가 재평가되고 프로세스 지문이 결정된다(912). 지문은 신뢰되지 않는 프로세스에 대한 컴퓨팅 지문을 저장하기 위해 신뢰되는 것으로 결정된 프로세스에 대해서만 결정될 수 있다. 지문이 매칭되는 경우(910에서 예) 또는 프로세스를 재평가한 후, 기입 프로세스가 신뢰되는지 결정되며(914), 신뢰되는 경우(914에서 예) 기입이 진행될 수 있다(916). 프로세스가 신뢰되지 않는 경우(914에서 아니오) 기입이 차단될 수 있다(918). 프로세스가 신뢰되는지 결정하기 전에 지문이 매칭되는지 여부를 결정하는 것으로 도시되지만, 먼저 프로세스가 신뢰되는지 결정한 다음 지문이 매칭되는지 결정할 수 있다.
상술한 바와 같이, 프로세스의 신뢰는 신뢰된 후에 프로세스가 수정되지 않도록 보장하기 위해 프로세스의 지문에 링크될 수 있다. 프로세스는 실행자(.exe, .osx, .out), 동적으로 링크된 라이브러리(.dll), 어플리케이션(.apk), 바이너리 파일(.bin), 명령 파일(.com) 등이 될 수 있다. 예를 들어, 상이한 .dll을 사용한 결과로서 프로세스가 평가된 것과 다른 경우, 프로세스는 재평가될 수 있다. 프로세스를 지문화(fingerprinting)함으로써, 프로세스의 모든 구성 요소가 신뢰가 평가되었을 때와 동일하도록 보장할 수 있다.
다른 파일 유형에 액세스하는 데 사용될 수 있는 프로세스를 결정하는 것은 컴퓨팅 디바이스의 운영 체제의 시스템 구조를 사용하여 수행될 수 있다. 시스템 구조 또는 구조들은 운영 체제마다 다를 수 있다. 예를 들어, Windows에서, 시스템 구조는 레지스트리일 수 있다. macOS에서 시스템 구조는 유니폼 유형 식별자(UTI: Uniform Type Identifier) 및 속성 목록(PLIST: Property List) 파일을 포함할 수 있다. 아래에서 추가로 설명되는 바와 같이, 시스템 구조 또는 파일은 등록된 어플리케이션, 등록된 어플리케이션과 연관된 파일 유형 및 열기, 편집, 저장, 인쇄 등과 같은 파일 작업을 위한 실행자의 위치를 식별하기 위해 프로세싱될 수 있다.
도 10은 파일 유형과 연관된 프로세스의 신뢰를 결정하는 방법을 도시한다. 방법(1000)은 특히 Windows 운영 체제 환경에서 프로세스의 신뢰를 결정하는 것을 참조하여 설명된다. Windows에서, 파일 액세스에 사용될 수 있는 프로세스를 자동으로 식별하기 위해 프로세싱될 수 있는 시스템 구조는 windows 레지스트리이다. 방법은 운영 체제에 등록된 어플리케이션에 대한 시스템 구조를 검색하는 것으로 시작한다(1002). 어플리케이션이 설치되면, 운영 체제에 등록될 수 있으며 어플리케이션에 대한 정보, 액세스하는 데 사용될 수 있는 파일 유형뿐만 아니라 상이한 파일 작업에 대한 실행자의 위치를 포함하는 어플리케이션에 대한 정보가 레지스트리에 저장된다. 등록된 어플리케이션이 레지스트리로부터 결정되면, 등록된 어플리케이션의 각각은 등록된 어플리케이션에 대한 연관된 파일 유형을 결정하기 위해(1006) 프로세싱될 수 있다(1004). 각각의 파일 유형에 대해, 상이한 파일 작업에 대한 실행자를 제공하는 시스템 구조 내의 위치가 결정된다(1008). 시스템 구조 내의 위치에서, 컴퓨터의 파일 시스템 내의 실행자 위치는 다른 파일 유형 작업에 대해 결정된다(1010). 실행자 위치가 결정되면 프로세스 목록에 추가된다(1012). 어플리케이션의 다른 파일 유형에 대한 실행자 위치가 결정되고 프로세스 목록에 추가되면, 다음 등록된 어플리케이션(1014)이 프로세싱될 수 있다. 프로세스 목록의 실행자는 그 후 프로세스가 신뢰되는지 결정하기 위해(1016) 평가될 수 있으며, 가능하게는 프로세스의 지문을 평가한다.
도 11은 파일 유형과 연관된 프로세스를 결정하는 데 사용되는 시스템 구조를 도시한다. 시스템 구조(1100)는 예를 들어, windows 레지스트리일 수 있다. 도시된 바와 같이, 제1 위치(1102)는 등록된 어플리케이션에 대한 정보를 제공할 수 있다. 도 1에는 하나의 등록된 어플리케이션만이 도시되어 있지만, 복수의 어플리케이션이 등록될 수 있음을 이해할 것이다. 각각의 등록된 어플리케이션은 시스템 구조(1106) 내의 제2 위치를 특정하는 키:값(1104) 쌍을 가질 수 있다. 제2 위치는 어플리케이션과 연관된 파일 유형에 대한 정보를 제공할 수 있다. 각각의 연관된 파일 유형은 시스템 구조(1110) 내의 제3 위치를 특정하는 키:값(1108) 쌍을 포함할 수 있다. 시스템 구조의 제3 위치는 파일 유형에 대한 하나 이상의 작업 명령을 특정할 수 있고 각 작업 명령에 대해, 파일 작업에 대한 실행자의 파일 시스템 위치를 특정하는 키:값 쌍(1112)이 있을 수 있다.
예를 들어, 등록된 어플리케이션을 특정하는 windows 레지스트리 내의 제1 위치는 레지스트리 위치를 특정하는 각각의 등록된 어플리케이션에 대한 복수의 키:값 쌍을 가질 수 있는 "\HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications"일 수 있다. 예를 들어, 하나의 키:값 쌍은 시스템 구조 내에서 추가 위치를 제공하는 "Word.Application.16: SOFTWARE\Clients\Word Processing\Microsoft Word\Capabilities"일 수 있다. 시스템 구조 위치에서 키:값 쌍은 시스템 구조 내의 어플리케이션 및 제3 위치와 연관된 각각의 파일 유형에 대해 특정될 수 있다. 예를 들어, "\HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Word Processing\Microsoft Word\Capabilities"에서 키 쌍은 ".doc:Word.Document.8"일 수 있다. 예를 들어, 위치에서 "\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.8"은 특정 파일 유형의 문서를 편집, 열기, 새로 생성하는 등의 쉘 명령을 특정할 수 있으며, 키:값 쌍으로서 특정된 명령은 명령에 대한 파일 시스템 위치를 제공한다. 예를 들어, "\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.8\shell\New\command"는 "(디폴트): 'C:\Program Files(x86)\Microsoft Office\Office16\WINWORD.EXE'/n/f '%1'"의 키:값 쌍을 가질 수 있으며, 이는 새로운 .doc 문서의 실행자 위치가 "C:\Program Files(x86)\Microsoft Office\Office16\WINWORD.EXE"에서 파일 시스템에 위치됨을 특정한다. 실행자는 프로세스 목록에 추가되어 신뢰 가치가 있는지 결정하기 위해 평가될 수 있다. 예를 들어, WINWORD.EXE는 신뢰되는 위치로부터 왔는지, 신뢰되는 엔티티에 의해 서명되었는지 등을 결정하기 위해 평가될 수 있다.
시스템 구조 내의 단일 위치에서 등록된 어플리케이션을 검색하는 것으로 상술되어 있지만, 등록된 어플리케이션은 시스템 구조의 다른 위치에 위치될 수 있다. 예를 들어 "\HKEY_LOCAL_MACHINE\SOFTWARE\WOW64Node\RegisteredApplications"를 포함하여 이러한 다른 루트 위치에 동일한 프로세스가 적용될 수 있으며, 이는 64 비트 Windows 버전의 32 비트 어플리케이션에 대한 정보뿐만 아니라 사용자 특정 소프트웨어를 포함할 수 있는 "\HKEY_USERS\< USER_GUID>\SOFTWARE\RegisteredApplications"를 포함할 수 있다.
이상에서는 Windows 레지스트리인 시스템 구조를 설명했다. 다른 운영 체제가 다른 시스템 구조에서 유사한 정보를 제공할 수 있음을 이해할 것이다. 예를 들어, Apple™ macOS뿐만 아니라 다른 Apple 운영 체제는 유니폼 유형 식별자(UTI)를 이용하여 프로그램과 연관된 엔티티를 구성할 수 있다. UTI는 본질적으로 파일, 디렉토리, 프레임워크, 번들 등과 같은 메모리 내 또는 온(on)-디스크 엔티티에 대한 추상 유형 정보를 고유하게 식별하는 CoreFoundation 스트링으로 정의된 단지 역 DNS 표기법 사양이다. UTI는 다양한 작업을 수행하는 데 사용된다. 예를 들어, 어플리케이션은 UTI를 사용하여 (Launch Services API를 통해) Launch Services와 연관을 등록하고; Pasteboard Manager는 UTI를 사용하여 보유 항목의 상관 관계를 정의하여 상이한 어플리케이션이 원하는 포맷으로 페이스트보드 항목을 검색할 수 있도록 하고; Navigation Services는 UTI를 사용하여 파일 유형을 필터링하고; QuickLook은 UTI를 사용하여 파일 미리보기를 QuickLook 생성기로 오프로드한다. UTI의 예는 "com.apple.ical.ics", "com.microsoft.word.excel.xlt" 및 "public.jpeg"를 포함한다. 이 예는 3개의 파일 유형, 즉, iCal ics 파일, Microsoft Excel xlt 파일 및 jpeg 파일의 연관을 가능하게 한다. 주어진 벤더(vendor)에 특정된 UTI는 역 DNS 명명 체계를 이용하여 이것과 그 조직, 즉, com.apple 또는 com.microsoft를 연관시키는 반면, 조직과 연관되지 않은 공개 표준은 public 도메인 식별자를 이용한다.
표준 UTI는 /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist의 코어 서비스(Core Service)에 의해 정의된다. 코어 서비스에 의해 정의된 Microsoft Excel xlt UTI를 예로 든다:
<dict>
    <key>UTTypeIconFiles</key>
    <array>
        <string>excel_20x20.png</string>
        <string>excel_20x20@2x.png</string>
        <string>excel_145x145.png</string>
        <string>excel_145x145@2x.png</string>
    </array>
    <key>UTTypeIdentifier</key>
    <string>com.microsoft.excel.xlt</string>
    <key>UTTypeDescription</key>
    <string>Microsoft Excel 97-2004 template</string>
    <key>UTTypeConformsTo</key>
    <array>
        <string>public.data</string>
        <string>public.spreadsheet</string>
    </array>
    <key>UTTypeTagSpecification</key>
    <dict>
        <key>com.apple.ostype</key>
        <string>sLS8</string>
        <key>public.mime-type</key>
        <array>
            <string>application/vnd.ms-excel</string>
            <string>application/msexcel</string>
        </array>
        <key>public.filename-extension</key>
        <string>xlt</string>
    </dict>
</dict>
macOS X 10.5에 도입된 QuickLook은 다양한 파일 유형의 Finder에서 빠른 미리보기를 가능하게 한다. 이는 시스템 전체(/System/Library/QuickLook) 또는 사용자별(~/Library/QuickLook)에 설치된 qlgenerator 플러그인 확장자(즉, 번들)에 대한 미리보기 룩-업을 오프로드한다. /System/Library/QuickLook/PDF.qlgenerator에 설치된 번들에 매핑되는 com.adobe.pdf qlgenerator 확장자를 예로 든다. 번들의 Info.plist로부터 CFBundleDocumentTypes 어레이는 특정된 UTI를 포함한다:
<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>QLGenerator</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.adobe.pdf</string>
        </array>
    </dict>
</array>
추가적으로, 번들은 .qlgenerator 확장자를 정의하는 QuickLookGeneratorPluginFactory로서 선언된다:
<key>CFPlugInFactories</key>
<dict>
    <key>0D5B252D-0B33-4E7A-88E2-C77728B9C565</key>
    <string>QuickLookGeneratorPluginFactory</string>
</dict>
Info.plist는 또한 QLNeedsToBeRunInMainThread, QLSupportsConcurrentRequests 및 QLThumbnailMinimumSize를 포함하여 플러그인별로 다른 QuickLook 설정을 선언한다. .qlgenerator 확장자는 QuickLookGeneratorPluginFactory 진입점을 구현하는 특수하게 컴파일된 프로그램이다. qlmanage 유틸리티를 통해 QuickLook 플러그인 매핑이 덤핑(dumping)될 수 있다.
UTI는 macOS X 10.3+, iOS 3.0+, tvOS 9.0+ 및 watchOS 2.0+에서 지원된다. macOS X용 ApplicationServices 프레임워크 및 iOS, tvOS 및 watchOS용 MobileCoreServices 프레임워크의 일부인 UTType을 통해 프로그래밍 방식으로 질의될 수 있다. 이 API를 사용하면 시스템 구조를 프로세싱하여 주어진 호스트에서 특정된 모든 UTI를 식별하고; 주어진 UTI에 대한 디폴트 핸들러를 식별하고; UTI 매핑을 등록된 어플리케이션 또는 이를 지원하는 번들과 상관시키고; 특정된 어플리케이션 또는 번들의 등록된 UTI를 식별할 뿐만 아니라; UTI 핸들러를 설정할 수 있다.
다음 명령을 사용하여 com.apple.ical.ics와 같은 특정된 UTI에 관한 모든 정보를 빠르게 식별할 수 있다:
% ./uti -e com.apple.ical.ics
이하를 반환한다:
identifier: com.apple.ical.ics
description: ICS File
declaration: {
    UTTypeTagSpecification = {
        public.mime-type = [
            text/calendar
        ]
        public.filename-extension = [
            ics
        ]
    }
    UTTypeConformsTo = [
        public.text
        public.item
        public.calendar-event
    ]
    UTTypeIdentifier = com.apple.ical.ics
}
위의 출력은 앞서 설명한 코어 서비스 Info.plist의 사양의 미러(mirror)라는 점에 유의한다.
com.apple.ical.ics UTI를 처리하기 위해 등록된 모든 번들을 알기를 원하는 예를 고려한다:
% ./uti -l com.apple.ical.ics
이하를 반환한다:
com.apple.CalendarFileHandler
com.apple.iCal
com.apple.TextEdit
com.apple.dt.Xcode
com.apple.Notes
com.apple.ical.ics UTI에 대한 디폴트 핸들러를 결정하기 위해:
% ./uti -d com.apple.ical.ics
이하를 반환한다:
com.apple.CalendarFileHandler
지원되는 번들 핸들러에 대한 특정 파일 확장자에 대한 디폴트 UTI 매핑을 식별하는 것도 가능하다:
% ./uti -x ics
이하를 반환한다:
CalendarFileHandler.app
/System/Library/CoreServices/CalendarFileHandler.app
com.apple.CalendarFileHandler
대안적으로, jpeg 파일의 경우:
% ./uti -x jpg
Preview.app
/System/Applications/Preview.app
com.apple.Preview
위로부터, 상이한 운영 체제는 각각의 시스템 구조를 가질 것이며, 이는 컴퓨터 시스템 상의 상이한 어플리케이션이 어플리케이션에 의해 열거나 편집될 수 있는 파일 유형과 함께 결정될 수 있도록 하는 하나 이상의 파일, 데이터베이스 등을 포함할 수 있음을 이해할 것이다. 그 후, 결정된 어플리케이션의 신뢰가 결정되고 파일 액세스가 허용되거나 차단되어야 하는지 결정하는 데 사용될 수 있다. 상술한 바와 같이, 상이한 파일 유형에 액세스하는 데 사용할 수 있는 상이한 어플리케이션/프로세스를 자동으로 결정하여 신뢰되는 프로세스에 기초하여 파일 액세스를 쉽게 차단할 수 있다.
도 1 내지 도 11에 도시된 시스템 및 구성 요소가 도면에 도시되지 않은 구성 요소를 포함할 수 있음을 본 기술 분야의 통상의 기술자는 이해할 것이다. 예시의 단순성과 명료성을 위해, 도면의 요소는 반드시 축척대로는 아니며, 단지 개략적이며 요소 구조를 제한하지 않는다. 청구항에 정의된 본 발명의 범위를 벗어나지 않고 많은 변형 및 수정이 이루어질 수 있음은 본 기술 분야의 통상의 기술자에게 자명할 것이다.
본 개시의 실시예의 각각의 요소는 하드웨어, 소프트웨어/프로그램, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어 코드의 전체 또는 일부는 컴퓨터 판독 가능 매체 또는 메모리 또는 비일시적 메모리(예를 들어, ROM, 예를 들어, 플래시 메모리, CD ROM, DVD ROM, Blu-ray™, 반도체 ROM, USB, 또는 자기 기록 매체, 예를 들어, 하드 디스크와 같은 비휘발성 메모리)에 저장될 수 있다. 프로그램은 소스 코드, 객체 코드, 부분적으로 컴파일된 형태 또는 임의의 다른 형태와 같은 코드 중간 소스 및 객체 코드의 형태일 수 있다.

Claims (51)

  1. 랜섬웨어 공격 방지 방법으로서,
    파일 시스템에서 요청 프로세스로부터 입력/출력(IO: input/output) 요청을 수신하는 단계;
    상기 요청 프로세스가 신뢰되는 프로세스인지 여부에 기초하여 상기 요청 프로세스의 신뢰 분류를 결정하는 단계;
    상기 요청 프로세스의 상기 신뢰 분류에 기초하여 상기 IO 요청의 결과들을 수정하는 단계; 및
    상기 요청 프로세스가 신뢰되지 않는 신뢰 분류를 갖는 것으로 결정될 때 상기 요청 프로세스로부터의 상기 수정된 결과들의 하나 이상의 IO 요청을 모니터링하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    프로세스가 상기 수정된 결과들의 하나 이상의 파일에 액세스하려고 할 때 신뢰되지 않는 상기 프로세스의 추가 파일 액세스를 제한하는 단계; 및
    상기 요청 프로세스를 격리하는 단계 중 하나 이상을 더 포함하는, 방법.
  3. 청구항 2에 있어서, 상기 추가 파일 액세스를 제한하는 단계는,
    상기 신뢰되지 않는 프로세스가 파일들을 판독하는 것을 방지하는 단계;
    상기 신뢰되지 않는 프로세스가 파일들을 기입하는 것을 방지하는 단계;
    상기 신뢰되지 않는 프로세스가 파일들을 삭제하는 것을 방지하는 단계; 및
    상기 신뢰되지 않는 프로세스가 파일들을 이동시키는 것을 방지하는 단계 중 하나 이상을 포함하는, 방법.
  4. 청구항 1에 있어서, 상기 결과들을 수정하는 단계는,
    상기 요청 프로세스가 신뢰되지 않는 경우, 상기 요청 프로세스에 제공된 상기 결과들에 시딩(seeding)된 파일들을 포함시키는 단계; 및
    상기 요청 프로세스가 신뢰되는 경우, 상기 요청 프로세스에 제공된 상기 결과들로부터 상기 시딩된 파일들을 배제하는 단계를 포함하는, 방법.
  5. 청구항 4에 있어서, 상기 시딩된 파일들은 저장 매체 상에 저장되고, 신뢰되는 경우 상기 요청 프로세스에 제시된 결과들로부터 제거되는, 방법.
  6. 청구항 4에 있어서, 상기 시딩된 파일들은,
    정의된 명명 규칙; 및
    시딩된 파일 이름들의 목록 중 하나 이상을 사용하여 식별되는, 방법.
  7. 청구항 4에 있어서, 상기 시딩된 파일들은 신뢰되지 않는 경우 상기 요청 프로세스에 제시된 상기 결과들에 추가되는, 방법.
  8. 청구항 7에 있어서, 상기 시딩된 파일들만이 신뢰되지 않는 경우 상기 요청 프로세스에 대한 상기 결과들로서 제시되는, 방법.
  9. 청구항 1에 있어서, 상기 파일 시스템은 커널 모드에서 실행되고, 상기 요청 프로세스는 사용자 모드 또는 커널 모드에서 실행되는, 방법.
  10. 청구항 1에 있어서, 상기 수정된 결과들의 상기 하나 이상의 IO 요청을 모니터링하는 단계는,
    상기 수정된 결과들 중 하나 이상에 대한 기입 프로세스를 검출하는 단계;
    상기 기입 프로세스에 의해 기입되고 있는 컨텐츠가 암호화될 가능성이 있는지를 결정하는 단계; 및
    상기 기입되고 있는 컨텐츠가 암호화될 가능성이 있는 것으로 결정되면 상기 기입 프로세스를 차단하는 단계를 포함하는, 방법.
  11. 랜섬웨어 공격을 방지하지 위한 시스템으로서,
    명령어들을 실행하기 위한 프로세서;
    명령어들을 저장하기 위한 메모리로서, 상기 프로세서에 의해 실행 시,
    파일 시스템에서 요청 프로세스로부터 입력/출력(IO) 요청을 수신하는 단계;
    상기 요청 프로세스가 신뢰되는 프로세스인지 여부에 기초하여 상기 요청 프로세스의 신뢰 분류를 결정하는 단계;
    상기 요청 프로세스의 상기 신뢰 분류에 기초하여 상기 IO 요청의 결과들을 수정하는 단계; 및
    상기 요청 프로세스가 신뢰되지 않는 신뢰 분류를 갖는 것으로 결정될 때 상기 요청 프로세스로부터의 상기 수정된 결과들의 하나 이상의 IO 요청을 모니터링하는 단계를 포함하는 방법을 수행하도록 상기 시스템을 구성하는, 상기 메모리를 포함하는, 시스템.
  12. 청구항 11에 있어서, 상기 명령어들에 의해 구성된 상기 방법은,
    프로세스가 상기 수정된 결과들의 하나 이상의 파일에 액세스하려고 할 때 신뢰되지 않는 상기 프로세스의 추가 파일 액세스를 제한하는 단계; 및
    상기 요청 프로세스를 격리하는 단계 중 하나 이상을 더 포함하는, 시스템.
  13. 청구항 12에 있어서, 추가 파일 액세스를 제한하는 단계는,
    상기 신뢰되지 않는 프로세스가 파일들을 판독하는 것을 방지하는 단계;
    상기 신뢰되지 않는 프로세스가 파일들을 기입하는 것을 방지하는 단계;
    상기 신뢰되지 않는 프로세스가 파일들을 삭제하는 것을 방지하는 단계; 및
    상기 신뢰되지 않는 프로세스가 파일들을 이동시키는 것을 방지하는 단계 중 하나 이상을 포함하는, 시스템.
  14. 청구항 11에 있어서, 상기 결과들을 수정하는 단계는,
    상기 요청 프로세스가 신뢰되지 않는 경우, 상기 요청 프로세스에 제공된 상기 결과들에 시딩된 파일들을 포함시키는 단계; 및
    상기 요청 프로세스가 신뢰되는 경우, 상기 요청 프로세스에 제공된 상기 결과들로부터 상기 시딩된 파일들을 배제하는 단계를 포함하는, 시스템.
  15. 청구항 14에 있어서, 상기 시딩된 파일들은 저장 매체 상에 저장되고, 신뢰되는 경우 상기 요청 프로세스에 제시된 결과들로부터 제거되는, 시스템.
  16. 청구항 14에 있어서, 상기 시딩된 파일들은,
    정의된 명명 규칙; 및
    시딩된 파일 이름들의 목록 중 하나 이상을 사용하여 식별되는, 시스템.
  17. 청구항 14에 있어서, 상기 시딩된 파일들은 신뢰되지 않는 경우 상기 요청 프로세스에 제시된 상기 결과들에 추가되는, 시스템.
  18. 청구항 17에 있어서, 상기 시딩된 파일들만이 신뢰되지 않는 경우 상기 요청 프로세스에 대한 상기 결과들로서 제시되는, 시스템.
  19. 청구항 11에 있어서, 상기 파일 시스템은 커널 모드에서 실행되고, 상기 요청 프로세스는 사용자 모드 또는 커널 모드에서 실행되는, 시스템.
  20. 청구항 11에 있어서, 상기 수정된 결과들의 상기 하나 이상의 IO 요청을 모니터링하는 단계는,
    상기 수정된 결과들 중 하나 이상에 대한 기입 프로세스를 검출하는 단계;
    상기 기입 프로세스에 의해 기입되고 있는 컨텐츠가 암호화될 가능성이 있는지를 결정하는 단계; 및
    상기 기입되고 있는 컨텐츠가 암호화될 가능성이 있는 것으로 결정되면 상기 기입 프로세스를 차단하는 단계를 포함하는, 시스템.
  21. 명령어들이 저장된 비일시적 컴퓨터 판독 가능 매체로서, 컴퓨터 시스템의 프로세서에 의해 실행 시,
    파일 시스템에서 요청 프로세스로부터 입력/출력(IO) 요청을 수신하는 단계;
    상기 요청 프로세스가 신뢰되는 프로세스인지 여부에 기초하여 상기 요청 프로세스의 신뢰 분류를 결정하는 단계;
    상기 요청 프로세스의 상기 신뢰 분류에 기초하여 상기 IO 요청의 결과들을 수정하는 단계; 및
    상기 요청 프로세스가 신뢰되지 않는 신뢰 분류를 갖는 것으로 결정될 때 상기 요청 프로세스로부터의 상기 수정된 결과들의 하나 이상의 IO 요청을 모니터링하는 단계를 포함하는 방법을 수행하도록 상기 컴퓨터 시스템을 구성하는, 비일시적 컴퓨터 판독 가능 매체.
  22. 청구항 21에 있어서, 상기 명령어들에 의해 구성된 상기 방법은,
    프로세스가 상기 수정된 결과들의 하나 이상의 파일에 액세스하려고 할 때 신뢰되지 않는 상기 프로세스의 추가 파일 액세스를 제한하는 단계; 및
    상기 요청 프로세스를 격리하는 단계 중 하나 이상을 더 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  23. 청구항 22에 있어서, 추가 파일 액세스를 제한하는 단계는,
    상기 신뢰되지 않는 프로세스가 파일들을 판독하는 것을 방지하는 단계;
    상기 신뢰되지 않는 프로세스가 파일들을 기입하는 것을 방지하는 단계;
    상기 신뢰되지 않는 프로세스가 파일들을 삭제하는 것을 방지하는 단계; 및
    상기 신뢰되지 않는 프로세스가 파일들을 이동시키는 것을 방지하는 단계 중 하나 이상을 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  24. 청구항 21에 있어서, 상기 결과들을 수정하는 단계는,
    상기 요청 프로세스가 신뢰되지 않는 경우, 상기 요청 프로세스에 제공된 상기 결과들에 시딩된 파일들을 포함시키는 단계; 및
    상기 요청 프로세스가 신뢰되는 경우, 상기 요청 프로세스에 제공된 상기 결과들로부터 상기 시딩된 파일들을 배제하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  25. 청구항 24에 있어서, 상기 시딩된 파일들은 저장 매체 상에 저장되고, 신뢰되는 경우 상기 요청 프로세스에 제시된 결과들로부터 제거되는, 비일시적 컴퓨터 판독 가능 매체.
  26. 청구항 24에 있어서, 상기 시딩된 파일들은,
    정의된 명명 규칙; 및
    시딩된 파일 이름들의 목록 중 하나 이상을 사용하여 식별되는, 비일시적 컴퓨터 판독 가능 매체.
  27. 청구항 24에 있어서, 상기 시딩된 파일들은 신뢰되지 않는 경우 상기 요청 프로세스에 제시된 상기 결과들에 추가되는, 비일시적 컴퓨터 판독 가능 매체.
  28. 청구항 27에 있어서, 상기 시딩된 파일들만이 신뢰되지 않는 경우 상기 요청 프로세스에 대한 상기 결과들로서 제시되는, 비일시적 컴퓨터 판독 가능 매체.
  29. 청구항 21에 있어서, 상기 파일 시스템은 커널 모드에서 실행되고, 상기 요청 프로세스는 사용자 모드 또는 커널 모드에서 실행되는, 비일시적 컴퓨터 판독 가능 매체.
  30. 청구항 21에 있어서, 상기 수정된 결과들의 상기 하나 이상의 IO 요청을 모니터링하는 단계는,
    상기 수정된 결과들 중 하나 이상에 대한 기입 프로세스를 검출하는 단계;
    상기 기입 프로세스에 의해 기입되고 있는 컨텐츠가 암호화될 가능성이 있는지를 결정하는 단계; 및
    상기 기입되고 있는 컨텐츠가 암호화될 가능성이 있는 것으로 결정되면 상기 기입 프로세스를 차단하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  31. 랜섬웨어 공격 방지 방법으로서,
    복수의 파일 유형과 상기 복수의 파일 유형 중 각각의 파일 유형에 액세스하는 데 사용되는 프로세스들 간의 매핑을 프로세싱하기 위해 파일 유형을 자동으로 결정하기 위해 시스템 구조를 프로세싱하는 단계;
    프로세스 매핑에 대한 상기 파일 유형의 상기 프로세스들 각각에 대해, 상기 프로세스의 신뢰 가치를 평가하는 단계;
    파일 시스템에서 요청 프로세스로부터 입력/출력(IO) 요청을 수신하는 단계;
    상기 요청 프로세스가 신뢰되는 프로세스인지 결정하는 단계; 및
    상기 요청 프로세스가 신뢰되는지 여부의 결정에 기초하여 상기 IO 요청을 허용하거나 차단하는 단계를 포함하는, 방법.
  32. 청구항 31에 있어서,
    프로세스 매핑에 대한 상기 파일 유형의 상기 프로세스들 각각에 대해, 신뢰에 대해 평가된 상기 프로세스의 지문을 생성하는 단계; 및
    상기 요청 프로세스가 신뢰되는지 결정할 때,
    상기 요청 프로세스의 요청 프로세스 지문을 결정하는 단계; 및
    상기 요청 프로세스 지문과 신뢰에 대해 평가된 상기 프로세스의 이전에 결정된 지문을 비교하는 단계를 더 포함하고,
    상기 IO 요청을 허용하거나 차단하는 것은 상기 요청 프로세스 지문과 상기 이전에 결정된 지문의 비교에 추가로 기초하는, 방법.
  33. 청구항 32에 있어서, 상기 요청 프로세스 지문과 상기 이전에 결정된 지문이 매칭되지 않는 경우, 상기 요청 프로세스의 상기 신뢰 가치를 재평가하는, 방법.
  34. 청구항 31에 있어서, 상기 시스템 구조는 윈도우즈(Windows) 레지스트리를 포함하는, 방법.
  35. 청구항 34에 있어서, 프로세스 매핑에 대한 상기 파일 유형을 자동으로 결정하기 위해 상기 윈도우즈 레지스트리를 프로세싱하는 단계는,
    상기 레지스트리의 제1 알려진 위치로부터 등록된 어플리케이션들을 결정하는 단계로서, 상기 제1 알려진 위치의 각각의 등록된 어플리케이션은 상기 레지스트리의 각각의 제2 위치를 특정하는, 상기 결정하는 단계;
    상기 결정된 등록 어플리케이션들의 각각에 대해,
    상기 각각의 제2 위치로부터 상기 각각의 등록된 어플리케이션과 연관된 파일 유형들을 결정하는 단계로서, 상기 파일 유형들의 각각은 상기 레지스트리의 제3 위치를 특정하는, 상기 결정하는 단계; 및
    상기 파일 유형들의 각각에 대해, 상기 각각의 제3 위치로부터, 상기 파일 시스템 상에 위치된 각각의 프로세스 실행자(executable)와 각각 연관된 하나 이상의 파일 액세스 명령을 결정하는 단계를 포함하는, 방법.
  36. 청구항 31에 있어서, 상기 시스템 구조는 macOS 시스템 구조를 포함하는, 방법.
  37. 청구항 36에 있어서, 프로세스 매핑에 대한 상기 파일 유형을 자동으로 결정하기 위해 macOS 시스템 구조를 프로세싱하는 단계는,
    API를 사용하여 주어진 호스트에서 복수의 UTI를 식별하는 단계; 및
    UTI 매핑들을 상기 등록된 어플리케이션들 또는 상기 등록된 어플리케이션들을 지원하는 번들(bundle)들과 상관시키는 단계를 포함하는, 방법.
  38. 랜섬웨어 공격을 방지하지 위한 시스템으로서,
    명령어들을 실행하기 위한 프로세서; 및
    명령어들을 저장하기 위한 메모리로서, 상기 프로세서에 의해 실행 시,
    복수의 파일 유형과 상기 복수의 파일 유형 중 각각의 파일 유형에 액세스하는 데 사용되는 프로세스들 간의 매핑을 프로세싱하기 위해 파일 유형을 자동으로 결정하기 위해 시스템 구조를 프로세싱하는 단계;
    프로세스 매핑에 대한 상기 파일 유형의 상기 프로세스들 각각에 대해, 상기 프로세스의 신뢰 가치를 평가하는 단계;
    파일 시스템에서 요청 프로세스로부터 입력/출력(IO) 요청을 수신하는 단계;
    상기 요청 프로세스가 신뢰되는 프로세스인지 결정하는 단계; 및
    상기 요청 프로세스가 신뢰되는지 여부의 결정에 기초하여 상기 IO 요청을 허용하거나 차단하는 단계를 포함하는 방법을 수행하도록 상기 시스템을 구성하는, 상기 메모리를 포함하는, 시스템.
  39. 청구항 38에 있어서, 상기 명령어들을 실행함으로써 구성된 상기 방법은,
    프로세스 매핑에 대한 상기 파일 유형의 상기 프로세스들 각각에 대해, 신뢰에 대해 평가된 상기 프로세스의 지문을 생성하는 단계; 및
    상기 요청 프로세스가 신뢰되는지 결정할 때,
    상기 요청 프로세스의 요청 프로세스 지문을 결정하는 단계; 및
    상기 요청 프로세스 지문과 신뢰에 대해 평가된 상기 프로세스의 이전에 결정된 지문을 비교하는 단계를 더 포함하고,
    상기 IO 요청을 허용하거나 차단하는 것은 상기 요청 프로세스 지문과 상기 이전에 결정된 지문의 비교에 추가로 기초하는, 시스템.
  40. 청구항 39에 있어서, 상기 요청 프로세스 지문과 상기 이전에 결정된 지문이 매칭되지 않는 경우, 상기 요청 프로세스의 상기 신뢰 가치를 재평가하는, 시스템.
  41. 청구항 38에 있어서, 상기 시스템 구조는 윈도우즈 레지스트리를 포함하는, 시스템.
  42. 청구항 41에 있어서, 프로세스 매핑에 대한 상기 파일 유형을 자동으로 결정하기 위해 상기 윈도우즈 레지스트리를 프로세싱하는 단계는,
    상기 레지스트리의 제1 알려진 위치로부터 등록된 어플리케이션들을 결정하는 단계로서, 상기 제1 알려진 위치의 각각의 등록된 어플리케이션은 상기 레지스트리의 각각의 제2 위치를 특정하는, 상기 결정하는 단계;
    상기 결정된 등록 어플리케이션들의 각각에 대해,
    상기 각각의 제2 위치로부터 상기 각각의 등록된 어플리케이션과 연관된 파일 유형들을 결정하는 단계로서, 상기 파일 유형들의 각각은 상기 레지스트리의 제3 위치를 특정하는, 상기 결정하는 단계; 및
    상기 파일 유형들의 각각에 대해, 상기 각각의 제3 위치로부터, 상기 파일 시스템 상에 위치된 각각의 프로세스 실행자와 각각 연관된 하나 이상의 파일 액세스 명령을 결정하는 단계를 포함하는, 시스템.
  43. 청구항 38에 있어서, 상기 시스템 구조는 macOS 시스템 구조를 포함하는, 시스템.
  44. 청구항 43에 있어서, 프로세스 매핑에 대한 상기 파일 유형을 자동으로 결정하기 위해 macOS 시스템 구조를 프로세싱하는 단계는,
    API를 사용하여 주어진 호스트에서 복수의 UTI를 식별하는 단계; 및
    UTI 매핑들을 상기 등록된 어플리케이션들 또는 상기 등록된 어플리케이션들을 지원하는 번들들과 상관시키는 단계를 포함하는, 시스템.
  45. 명령어들이 저장된 비일시적 컴퓨터 판독 가능 매체로서, 컴퓨터 시스템의 프로세서에 의해 실행 시,
    복수의 파일 유형과 상기 복수의 파일 유형 중 각각의 파일 유형에 액세스하는 데 사용되는 프로세스들 간의 매핑을 프로세싱하기 위해 파일 유형을 자동으로 결정하기 위해 시스템 구조를 프로세싱하는 단계;
    프로세스 매핑에 대한 상기 파일 유형의 상기 프로세스들 각각에 대해, 상기 프로세스의 신뢰 가치를 평가하는 단계;
    파일 시스템에서 요청 프로세스로부터 입력/출력(IO) 요청을 수신하는 단계;
    상기 요청 프로세스가 신뢰되는 프로세스인지 결정하는 단계; 및
    상기 요청 프로세스가 신뢰되는지 여부의 결정에 기초하여 상기 IO 요청을 허용하거나 차단하는 단계를 포함하는 방법을 수행하도록 상기 컴퓨터 시스템을 구성하는, 비일시적 컴퓨터 판독 가능 매체.
  46. 청구항 45에 있어서, 상기 명령어들에 의해 구성된 상기 방법은,
    프로세스 매핑에 대한 상기 파일 유형의 상기 프로세스들 각각에 대해, 신뢰에 대해 평가된 상기 프로세스의 지문을 생성하는 단계; 및
    상기 요청 프로세스가 신뢰되는지 결정할 때:
    상기 요청 프로세스의 요청 프로세스 지문을 결정하는 단계; 및
    상기 요청 프로세스 지문과 신뢰에 대해 평가된 상기 프로세스의 이전에 결정된 지문을 비교하는 단계를 더 포함하고,
    상기 IO 요청을 허용하거나 차단하는 것은 상기 요청 프로세스 지문과 상기 이전에 결정된 지문의 비교에 추가로 기초하는, 비일시적 컴퓨터 판독 가능 매체.
  47. 청구항 46에 있어서, 상기 요청 프로세스 지문과 상기 이전에 결정된 지문이 매칭되지 않는 경우, 상기 요청 프로세스의 상기 신뢰 가치를 재평가하는, 비일시적 컴퓨터 판독 가능 매체.
  48. 청구항 45에 있어서, 상기 시스템 구조는 윈도우즈 레지스트리를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  49. 청구항 48에 있어서, 프로세스 매핑에 대한 상기 파일 유형을 자동으로 결정하기 위해 상기 윈도우즈 레지스트리를 프로세싱하는 단계는,
    상기 레지스트리의 제1 알려진 위치로부터 등록된 어플리케이션들을 결정하는 단계로서, 상기 제1 알려진 위치의 각각의 등록된 어플리케이션은 상기 레지스트리의 각각의 제2 위치를 특정하는, 상기 결정하는 단계;
    상기 결정된 등록 어플리케이션들의 각각에 대해,
    상기 각각의 제2 위치로부터 상기 각각의 등록된 어플리케이션과 연관된 파일 유형들을 결정하는 단계로서, 상기 파일 유형들의 각각은 상기 레지스트리의 제3 위치를 특정하는, 상기 결정하는 단계; 및
    상기 파일 유형들의 각각에 대해, 상기 각각의 제3 위치로부터, 상기 파일 시스템 상에 위치된 각각의 프로세스 실행자와 각각 연관된 하나 이상의 파일 액세스 명령을 결정하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  50. 청구항 45에 있어서, 상기 시스템 구조는 macOS 시스템 구조를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
  51. 청구항 50에 있어서, 프로세스 매핑에 대한 상기 파일 유형을 자동으로 결정하기 위해 macOS 시스템 구조를 프로세싱하는 단계는,
    API를 사용하여 주어진 호스트에서 복수의 UTI를 식별하는 단계; 및
    UTI 매핑들을 상기 등록된 어플리케이션들 또는 상기 등록된 어플리케이션들을 지원하는 번들들과 상관시키는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
KR1020227015347A 2019-10-21 2020-10-20 랜섬웨어 방지 KR20220085786A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962923941P 2019-10-21 2019-10-21
US62/923,941 2019-10-21
US202063059151P 2020-07-30 2020-07-30
US63/059,151 2020-07-30
PCT/CA2020/051406 WO2021077212A1 (en) 2019-10-21 2020-10-20 Ransomware prevention

Publications (1)

Publication Number Publication Date
KR20220085786A true KR20220085786A (ko) 2022-06-22

Family

ID=75619510

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227015347A KR20220085786A (ko) 2019-10-21 2020-10-20 랜섬웨어 방지

Country Status (7)

Country Link
US (1) US20220292195A1 (ko)
EP (1) EP4049159A4 (ko)
JP (1) JP2022553061A (ko)
KR (1) KR20220085786A (ko)
AU (1) AU2020369984A1 (ko)
CA (2) CA3155237A1 (ko)
WO (1) WO2021077212A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190108341A1 (en) 2017-09-14 2019-04-11 Commvault Systems, Inc. Ransomware detection and data pruning management
US11574050B2 (en) 2021-03-12 2023-02-07 Commvault Systems, Inc. Media agent hardening against ransomware attacks
US20230229761A1 (en) * 2021-04-20 2023-07-20 Assured Information Security, Inc. Prevention and remediation of malware based on selective presentation of files to processes

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7613930B2 (en) * 2001-01-19 2009-11-03 Trustware International Limited Method for protecting computer programs and data from hostile code
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8966624B2 (en) * 2011-03-31 2015-02-24 Mcafee, Inc. System and method for securing an input/output path of an application against malware with a below-operating system security agent
GB2517483B (en) * 2013-08-22 2015-07-22 F Secure Corp Detecting file encrypting malware
US9208335B2 (en) * 2013-09-17 2015-12-08 Auburn University Space-time separated and jointly evolving relationship-based network access and data protection system
US20160180087A1 (en) * 2014-12-23 2016-06-23 Jonathan L. Edwards Systems and methods for malware detection and remediation
US20170206353A1 (en) * 2016-01-19 2017-07-20 Hope Bay Technologies, Inc. Method and system for preventing malicious alteration of data in computer system
US10528733B2 (en) * 2017-08-31 2020-01-07 International Business Machines Corporation Integrity, theft protection and cyber deception using a deception-based filesystem
US10193918B1 (en) * 2018-03-28 2019-01-29 Malwarebytes Inc. Behavior-based ransomware detection using decoy files
US11055444B2 (en) * 2018-06-20 2021-07-06 NortonLifeLock Inc. Systems and methods for controlling access to a peripheral device

Also Published As

Publication number Publication date
EP4049159A1 (en) 2022-08-31
JP2022553061A (ja) 2022-12-21
US20220292195A1 (en) 2022-09-15
CA3155237A1 (en) 2021-04-29
CA3214199A1 (en) 2021-04-29
AU2020369984A1 (en) 2022-05-12
EP4049159A4 (en) 2023-11-01
WO2021077212A1 (en) 2021-04-29

Similar Documents

Publication Publication Date Title
CN109923548B (zh) 通过监管进程访问加密数据实现数据保护的方法、系统及计算机程序产品
US9881013B2 (en) Method and system for providing restricted access to a storage medium
US9665708B2 (en) Secure system for allowing the execution of authorized computer program code
US8799651B2 (en) Method and system for encrypted file access
US8549313B2 (en) Method and system for integrated securing and managing of virtual machines and virtual appliances
US8281410B1 (en) Methods and systems for providing resource-access information
US20220292195A1 (en) Ransomware prevention
JP2006134307A (ja) アンチウィルスソフトウェアアプリケーションの知識基盤を統合するシステムおよび方法
Scarfone et al. Guide to storage encryption technologies for end user devices
EP2341459A1 (en) Method and device for detecting if a computer file has been copied and method and device for enabling such detection
Van Oorschot et al. Reducing unauthorized modification of digital objects
KR102227558B1 (ko) 프로그램 보호를 기반으로 한 데이터 보안 방법
Iglio Trustedbox: a kernel-level integrity checker
Griffiths et al. Fireguard-A secure browser with reduced forensic footprint
Scarfone et al. SP 800-111. Guide to Storage Encryption Technologies for End User Devices
van Oorschot Towards Reducing Unauthorized Modification of Binary Files

Legal Events

Date Code Title Description
A201 Request for examination