KR102368170B1 - 멀웨어의 자동화된 런타임 검출 - Google Patents
멀웨어의 자동화된 런타임 검출 Download PDFInfo
- Publication number
- KR102368170B1 KR102368170B1 KR1020167009506A KR20167009506A KR102368170B1 KR 102368170 B1 KR102368170 B1 KR 102368170B1 KR 1020167009506 A KR1020167009506 A KR 1020167009506A KR 20167009506 A KR20167009506 A KR 20167009506A KR 102368170 B1 KR102368170 B1 KR 102368170B1
- Authority
- KR
- South Korea
- Prior art keywords
- computer application
- model
- data
- security events
- runtime
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/565—Static detection by checking file integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
일 예시적인 방법 및 대응하는 장치는 로딩 시간 동안 컴퓨터 애플리케이션의 모델을 추출하고 데이터베이스 내에 컴퓨터 애플리케이션의 모델을 저장한다. 이러한 예시적인 방법 및 대응하는 장치는 또한 런타임에 데이터를 수집하도록 컴퓨터 애플리케이션 내에 인스트럭션들을 삽입한다. 이어서 이 예시적인 방법 및 대응하는 장치는 하나 이상의 보안 이벤트들을 검출하기 위해 컴퓨터 애플리케이션의 저장된 모델에 대해 런타임에 수집된 데이터를 분석하고 상태 머신을 사용하여 하나 이상의 보안 이벤트들을 추적한다.
Description
관련 출원
본 출원은 2013년 9월 12일 출원된 미국 가 출원번호 제 61/960,209 호의 이익을 주장한다. 상기 출원의 전체 교시는 본 명세서에 참조로서 인용된다.
날이 갈수록, 사이버 공격들은 점점 복잡해진다. 다수의 공격들은 특정한 애플리케이션들의 특정한 취약점들을 이용하도록 타깃팅된다. 이들 공격들은 공공연하게 악의적인 것으로 보이는 네트워크 액티비티를 트리거하지는 않기 때문에 네트워크층에서 인식가능하지 않다. 이들 타깃팅된 공격들을 다루기 위해, 다수의 벤더들은, 애플리케이션의 거동을 추적하는 것을 시도하는 차세대 방화벽들 또는 샌드박스 내에서 의심 코드를 실행하고 의심 코드가 악성 액티비티를 수행하는 것을 대기하는 것을 시도하는 샌드박싱 기술들과 같은 제품들을 전개하였다. 그러나, 이들 시나리오들에서, 멀웨어 (malware) 는 자신의 거동을 약간 조정하거나 악성 의도를 수행하기를 보다 긴 시간 기간 동안 대기한다. 거동에서의 이들 변화들은 공격의 거동을 인식하는 이들 제품들의 능력을 방해하고, 따라서 멀웨어를 검출하는 능력은 상당히 약화된다.
이로 제한되는 것은 아니지만 단일 및 다계층, 폐쇄되고 분산되고, 독립형, 웹-기반, 및 클라우드-기반 컴퓨터 애플리케이션들을 포함하는, 컴퓨터 애플리케이션들은 멀웨어 공격들에 취약하다. 현재 컴퓨터 애플리케이션들의 가장 많은 수의 멀웨어 공격들은 컴퓨터 애플리케이션의 프로세스 실행시 악성 콘텐트를 주입하고 나중에 실행하려는 악성 행위자의 능력으로부터 발생한다. 이러한 악성 콘텐트를 주입하는 프로세스는 부적절한 입력 검증을 수행하는 조잡하게 설계된 코드를 식별하고 이용하는 것을 수반한다. 현재 사이버 보안 기술들은 애플리케이션 내 악성 콘텐트를 관찰하거나 애플리케이션의 거동을 추적하거나 샌드박스 내 의심 코드의 거동을 스크리닝하려고 한다. 이들 기술들은 악성 콘텐트의 주입을 나타내는 이벤트들을 신뢰성 있게 검출하기 위해 충분히 낮은 입도로 실시간으로 컴퓨터 애플리케이션들을 검토할 역량을 갖지 않는다. 부가적으로, 이들 기술들은 멀웨어가 자신의 악의적인 계획을 성공적으로 수행하기 전에 이들 멀웨어 공격들을 정확하게 식별하기 위해 시간에 따라 이러한 이벤트들을 추적하고 상관시킬 역량을 갖지 않는다.
일 예시적인 방법 및 대응하는 장치는 로딩 시간에 컴퓨터 애플리케이션의 모델을 추출하고 저장한다. 이 예시적인 방법 및 대응하는 장치는 또한 런타임에 데이터를 수집하기 위해 로딩 시간에 컴퓨터 애플리케이션 내로 인스트럭션들을 삽입한다. 런타임에 수집된 데이터는 하나 이상의 보안 이벤트들을 검출하기 위해 컴퓨터 애플리케이션의 저장된 모델에 대해 분석된다. 이 예시적인 방법 및 대응하는 장치는 상태 머신을 사용하여 공격자에 의해 트리거된 하나 이상의 보안 이벤트들을 추적한다.
일부 실시예들에서, 방법 및 대응하는 장치는 컴퓨터 애플리케이션 데이터의 모델의 일부로서, 트랜지션 맵핑 데이터, 메모리 맵핑 데이터, 약점 데이터, 및/또는 컴퓨터 애플리케이션에 의해 참조된 액세스 승인들 및 특권들에 영향을 주는 OS 기능들 또는 시스템 호출들 중 하나 이상을 추출할 수도 있다. 이러한 정보는 모델 데이터베이스에 저장될 수도 있다. 게다가, 방법 및 대응하는 장치는 코드 디스어셈블러를 사용하여 적어도 부분적으로 컴퓨터 애플리케이션의 모델을 추출할 수도 있다. 추출되는 컴퓨터 애플리케이션은 바이너리 포맷 또는 인터프리팅된 포맷 (interpreted format) 을 포함하는 다양한 포맷들일 수도 있다.
예시적인 실시예들에서, 방법 및 대응하는 장치는 로딩 시간 동안 컴퓨터 애플리케이션 무결성을 체크할 수도 있다. 방법 및 대응하는 장치는 코드의 MD5 해시와 같은 체크섬을 계산함으로써 또는 신뢰할 수 있는 체크섬 검증 서비스를 사용함으로써 컴퓨터 애플리케이션 무결성을 체크할 수도 있다.
일부 실시예들에서, 모델 데이터베이스는 컴퓨터 애플리케이션을 모델링하기 위한 하나 이상의 테이블들을 포함한다. 게다가, 모델 데이터베이스는 로컬 시스템 상 또는 원격 시스템 상에 있을 수도 있다. 모델 데이터베이스가 원격 시스템 상에 있으면, 방법 및 대응하는 장치는 데이터베이스 내 저장을 위해 원격 시스템으로의 송신을 위해 컴퓨터 애플리케이션의 모델을 패키징할 수도 있다. 데이터베이스의 패키징된 모델은 TCP/IP 또는 UDP와 같은 전송 프로토콜 기반 표준들을 사용하여 송신될 수도 있다.
예시적인 실시예들에서, 방법 및 대응하는 장치는 로딩 시간에 동적 바이너리 분석 엔진 또는 바이트 코드 인스트루먼테이션 엔진 (byte code instrumentation engine) 을 사용하여 인스트루먼테이션 인스트럭션들을 컴퓨터 애플리케이션 내에 삽입한다. 인스트루먼팅된 애플리케이션이 실행될 때, 런타임에 수집된 데이터는 분석을 위해 또 다른 프로세스로의 송신을 위해 패키징될 수도 있다. 이 분석을 위한 다른 프로세스는 로컬 시스템 상 또는 원격 시스템 상에 있을 수도 있다. 게다가, 런타임에 수집된 데이터는 컴퓨터 애플리케이션의 하나 이상의 쓰레드들에 대한 데이터를 포함할 수도 있다.
일부 실시예들에서, 컴퓨터 애플리케이션의 저장된 모델에 대해 런타임에 수집된 데이터를 분석할 때, 방법 및 대응하는 장치는, 트랜지션 데이터, 액세스 승인들 및 특권들에 영향을 주는 중요 OS 기능들 및 시스템 호출들, 메모리 기록들, 힙 (heap) 할당 또는 할당 해제, 및/또는 약점 데이터 중 하나 이상을 분석할 수도 있다.
예시적인 실시예들에서, 상태 머신을 사용하여 하나 이상의 보안 이벤트들을 추적하는 것은 미리 규정된 시퀀스에 기초하여 이벤트들을 상관시키는 단계를 포함한다. 하나 이상의 보안 이벤트들을 추적하는 것은 이벤트들에 대한 포렌식 (forensic) 데이터를 캡처하는 것을 포함할 수도 있다. 일 실시예에서, 하나 이상의 보안 이벤트들은 심각도 레벨들을 사용하여 추적될 수도 있다. 게다가, 하나 이상의 액션들은 하나 이상의 보안 이벤트들의 발생에 응답하여 취해질 수도 있다. 일 예시적인 실시예에서, 이벤트에 응답하여 하나 이상의 액션들이 시스템에 의해 자동으로 취해지고, 또 다른 예시적인 실시예에서, 하나 이상의 액션들은 사용자에 의한 수동 개입 후에 취해질 수 있다. 일부 실시예들에서, 하나 이상의 액션들은 컴퓨터 애플리케이션의 하나 이상의 쓰레드들을 종료시키는 액션, 컴퓨터 애플리케이션의 하나 이상의 쓰레드들의 통신 소켓을 폐쇄하는 액션, 애플리케이션을 종료하는 액션, 이벤트를 레코딩하는 액션, 및/또는 하나 이상의 보안 이벤트들에 응답하여 경보들을 발생시키는 액션 중 하나 이상을 포함할 수도 있다.
전술한 바는, 유사한 참조 번호들이 상이한 도면들에 걸쳐 동일한 부분들을 참조하는 첨부된 도면들에 예시된 바와 같이, 이하의 본 발명의 예시적인 실시예들의 보다 구체적인 기술로부터 명백해질 것이다. 도면들은 본 발명의 실시예들을 예시할 때 축척대로 도시될 필요는 없고, 대신 강조된다.
도 1은 진보된 끈질긴 멀웨어 위협의 예시적인 구성을 도시한다.
도 2는 코드 실행 스타일 공격을 나타내는 예시적인 불변의 이벤트들의 체인을 도시한다.
도 3은 클라이언트에 의해 실행된 로딩 시간 동작들의 예시적인 흐름도를 도시한다.
도 4는 클라이언트와 분석 엔진 간의 데이터 송신에 사용된 예시적인 PDU (protocol data unit) 를 도시한다.
도 5는 런타임에 수집된 데이터에 기초하여 이벤트들을 발생시키도록 분석 엔진에 의해 사용된 프로세스의 예시적인 흐름도를 도시한다.
도 6은 발생된 이벤트들을 추적하기 위해 사용된 예시적인 이벤트 체인 상태 머신 (Event Chain State Machine) 을 도시한다.
도 7은 클라이언트와 분석 엔진의 예시적인 블록도를 도시한다.
도 8은 본 발명의 실시예들이 구현될 수도 있는 컴퓨터 네트워크 또는 유사한 디지털 프로세싱 환경을 예시한다.
도 9는 도 8의 컴퓨터 시스템에서 컴퓨터의 예시적인 내부 구조 (예를 들어, 클라이언트 프로세서/디바이스 또는 서버 컴퓨터들) 의 도면이다.
도 1은 진보된 끈질긴 멀웨어 위협의 예시적인 구성을 도시한다.
도 2는 코드 실행 스타일 공격을 나타내는 예시적인 불변의 이벤트들의 체인을 도시한다.
도 3은 클라이언트에 의해 실행된 로딩 시간 동작들의 예시적인 흐름도를 도시한다.
도 4는 클라이언트와 분석 엔진 간의 데이터 송신에 사용된 예시적인 PDU (protocol data unit) 를 도시한다.
도 5는 런타임에 수집된 데이터에 기초하여 이벤트들을 발생시키도록 분석 엔진에 의해 사용된 프로세스의 예시적인 흐름도를 도시한다.
도 6은 발생된 이벤트들을 추적하기 위해 사용된 예시적인 이벤트 체인 상태 머신 (Event Chain State Machine) 을 도시한다.
도 7은 클라이언트와 분석 엔진의 예시적인 블록도를 도시한다.
도 8은 본 발명의 실시예들이 구현될 수도 있는 컴퓨터 네트워크 또는 유사한 디지털 프로세싱 환경을 예시한다.
도 9는 도 8의 컴퓨터 시스템에서 컴퓨터의 예시적인 내부 구조 (예를 들어, 클라이언트 프로세서/디바이스 또는 서버 컴퓨터들) 의 도면이다.
본 발명의 예시적인 실시예들의 기술이 이어진다.
본 명세서에 참조된 모든 특허들, 공개된 출원들 및 참조 문헌들의 교시들은 전체가 참조로서 본 명세서에 인용된다.
도 1은 앞선 끈질긴 멀웨어 위협의 예를 나타낸다. 이 시나리오에서, 행위자 소유의 인프라스트럭처 (102) 로부터의 악성 행위자 (또는 해커) 는 nmap (104) 과 같은 스캐닝 툴들을 사용하여 기업의 인프라스트럭처 (108) 를 대면하는 웹을 원격으로 스캐닝한다. 스캐닝이 공지의 취약성 또는 공개되지 않은 취약성을 갖는 서버를 발견한다면, 행위자는 원격 기업 서버 (110) 의 제어를 획득하고 기업 네트워크에 액세스하기 위해 쉘 코드 (106) 를 설치한다. 네트워크 내부에서, 악성 행위자는 부가적인 툴들 (104) 을 한번 로딩한다. 이들 툴들은 포트 스캐너들, 암호 크랙킹 툴들, ftp 클라이언트, 압축 툴들, 해싱, 및/또는 암호화 및 복호화 툴들을 포함할 수도 있다.
이어서 행위자는, 사용자의 액세스 증명서들을 폐기하고 보다 많은 해킹 툴들에 대한 홈 (home) 을 발견할 목적으로, 높은 특권의 사용자들이 데이터베이스들 및 파일 저장소들과 같은 중요한 타깃들에 로그인하는 머신 (114 또는 116) 을 찾기 위해 기업 인프라스트럭처에 액세스한다. 취약한 애플리케이션들을 갖는 머신 (114 또는 116) 의 발견시, 악성 행위자는 증명서들을 폐기하고, 잠입하고 이어서 타깃 (118) 에 액세스할 수 있다. 일단 타깃이 액세스되면, 부가적인 트레이드 툴들이 타깃 (104) 상으로 로딩된다. 멀웨어는 또한 머신들이 커피숍, 공항, 및 호텔과 같은 보호되지 않은 네트워크들에 연결되게 할 때 특권 사용자들의 스마트폰들 및 랩탑들과 같은 모바일 디바이스들에 들어갈 수 있다. 또 다른 시나리오에서, 내부 사용자가 타깃 머신들을 감염시킬 수도 있다.
복잡한 암호 크랙킹 툴들을 사용함으로써 또는 인트라넷 트래픽을 스누핑 (snooping) 함으로써, 멀웨어는 관리 사용자 (administrative user) (116) 의 증명서들을 획득할 수 있다. 증명서들을 획득한 후, 악성 행위자는 처벌받지 않고 데이터베이스들 및 파일 저장소들 (118) 에 연결할 수 있고, 실명, 집 주소, 사회 보장 연금, 운전 면허, 생일, 의료 기록, 신용/직불 카드들과 같은 금융 정보, 전화 번호, 이메일 어드레서, 사용자 명 및 암호, 및 보험 정보와 같은 중요한 정보를 추출할 수 있다. 악성 행위자는 이 정보를 선택가능하게 압축하고 암호화할 수 있고, 기업 보안 분석가들의 주의를 끌지 않도록 작은 청크들로 해커 명령 제어 센터 (Hacker Command Control Center) (112) 에 이를 업로드할 수 있다. 이 목적을 달성하기 위해, 악성 행위자는 해커 명령 제어 센터 (112) 의 IP 어드레스들을 매일 변경하거나 기업의 침입 검출 시스템들이 패턴을 확립하지 못하도록 프록시들을 사용한다. 기업은 통상적으로 매일 10 GB가 넘는 데이터를 전송 및 수신하고, 따라서, 짧은 버스트들에 상대적으로 적은 양의 데이터를 업로드하는 것은 종종 눈에 띄지 않는다 (unnoticed).
이러한 타입의 시나리오에 대한 이벤트들의 체인을 신뢰할 수 있게 검출하고 차단할 수 있는 것이 이러한 진보된 끈질긴 위협들을 좌절시키는 키이다. 현재의 사이버 보안 툴들은 4가지 중요한 단점들을 겪는다. 첫째, 이들 툴들은 충분히 낮은 입도의 애플리케이션은 검토하지 않는다. 이 능력이 없으면, 공격들의 많은 사인들이 신뢰성 있게 파악될 수 없다. 다음에, 이들 툴들은 시간에 따라 공격을 추적하는 능력을 갖지 않는다. 통상적인 SIEM (security information and event management) 시스템들만이 통상적으로 24시간 동안 (매우 높은 입도의) 이벤트들을 상관시킨다. 멀웨어는 검출을 모면하기 위해 충분한 시간 기간 동안 단순히 휴면 상태에 있을 수 있다. 시간에 따라 공격을 신뢰성 있게 추적하는 능력이 없이, 공격에 기여하는 개별적인 악성 이벤트들은 해체된 비상관 이벤트들로서 나타난다.
부가적으로, 이들 사이버 보안 툴들은 공격을 의미하는 이벤트들의 문턱값을 설정하기 위해 보안 분석가들에 의존한다. 예를 들어, 일 보안 분석가는 시간 당 몇 번의 포트 스캔들 및 로그인 시도들이 정상적인 일상 동안 발생할 것이라는 것을 내면화할 수도 있다. 경보가 트리거되기 전에, 시간 당 소스 당 얼마나 많은 포트 스캔 시도들이 불필요한가가 문제가 된다. 경보가 너무 빨리 발생되면, 분석가는 합법적인 사용자들에 의한 실패한 로그인들 또는 악성 의도 없이 포트 스캔들을 조사할 수도 있다. 경보가 너무 늦게 발생되면, 그 때 멀웨어 공격은 이미 성공했을 수도 있다. 게다가, 이들 툴들은 공격을 효과적으로 검출하기에 불완전한 지식 기반을 갖는다. 정말로 진짜의 경보들을 발생시키기 위한 능력은 양성 이벤트들과 악성 이벤트들을 신뢰성 있게 구별하는 툴들을 필요로 한다. 악성 행위자는 동일한 시그니처들 또는 공지의 의심스러운 네트워크 또는 애플리케이션 거동들을 알아차릴 것이다. 따라서, 악성 행위자는 데이터를 인코딩하기 위해 암호화를 사용하거나, IP 및 포트 조합들을 변경하거나, 지식 베이스에 명시된 거동에 기초하여 검출을 회피하도록 공격을 늦춤으로써와 같이, 공격의 거동을 비틀 수 있다.
도 2는 공격 실행 코드을 도시하는 불변의 이벤트들의 체인을 도시한다. 공격 실행 코드들과 같은 다양한 멀웨어 공격들에 대해, 멀웨어 공격의 대응하는 이벤트 체인은 일련의 불변의 이벤트들의 체인으로 나타낼 수 있다. 이들 이벤트들은 특정한 멀웨어 공격들을 추적하기 위해 컴퓨터의 프로세스 메모리에 저장될 수 있다. 다음의 시나리오는 공격 실행 코드의 202 내지 216의 일련의 불변의 이벤트들의 체인으로 나타낸 거동을 기술한다.
공격 실행 코드 실행시, 일단 악성 행위자가 패치되지 않은 애플리케이션 또는 소위 공개되지 않은 취약성을 위치시키면, 행위자는 기형 (malformed) 콘텐트의 특수하게 가공된 페이로드를 구성할 수 있다. 이어서 이 페이로드는 컴퓨터 애플리케이션의 인스트럭션들을 호출하는 것으로부터 CPU (central processing unit) 를 방향 전환하도록 컴퓨터 시스템의 CPU 상에서 실행하는 202에서 타깃 프로세스로 바로 전송되거나 네트워크를 통해 전송되고, 대신 악성 페이로드의 명령을 따라 인스트럭션들을 호출한다. 이 특수하게 가공된 페이로드는 타깃팅되는 애플리케이션에 따라, 다수의 메커니즘들을 통해, 예컨대 네트워크 소켓을 통해, 키보드를 통해, 또는 심지어 파일을 통해 애플리케이션 내로 주입될 수 있다.
206에서의 공격 동안 주입된 악성 페이로드를 활성화하기 위해, 멀웨어는 다수의 공격 벡터들 중 하나를 강화할 수 있다 (leverage). 공격 실행 코드의 경우, 멀웨어는 204에서 버퍼 에러 또는 사용자 순진함 (naivety) 을 이용한다. 공격 벡터들의 다른 예들은 가장 단순한 스택 스매싱 (Stack Smashing) 어프로치, 포맷 지정자 (format specifiers) 사용, 의사 랜덤 스택 카나리아 발견, 예외 처리 테이블들 (exception handler tables) 의 오버런 (over running), 또는 ROP (Return Oriented Programming) 가젯들 뿐만 아니라 다수의 부가적인 벡터들을 포함한다.
완전히 진행된 악성 액티비티를 시작하기 전에, 검출 기법들이 전복될 수 있도록 멀웨어는 충분히 긴 시간 기간 동안 칩거 (hibernate) 할 수 있다. 예를 들어 의심스러운 액티비티에 대해 이메일들을 검사하는 샌드박스 기법들은 결국 포기되어야 하고 이메일을 수신인에게 전달한다. 얼마 후에, 멀웨어는 212에서, 계획을 실행하는 것을 시작하기 위해 기존의 애플리케이션 쓰레드를 사용하거나 하나 이상의 새로운 쓰레드들을 스핀할 수 있다. 일부 경우들에서, 기존의 쓰레드를 사용하는 것은 사용자 주의를 끌 수도 있고 새로운 쓰레드들을 스피닝하는 것은 눈에 띄지 않고 항상 진행된다. 이는 대부분의 보안 솔루션들이 새로운 쓰레드를 스피닝하는 것이 악성 액티비티인지 또는 양성 액티비티인지 결정할 능력이 없기 때문이다. 이제 애플리케이션 내에 웨지 (wedge) 가 생성되면, 멀웨어는 210에서 악성 행위자의 C&C (Command Control Center) 와 접속성을 확립한다. 일단 기업 방화벽 내부로부터 접속성이 확립되면, 쓰레드에서 멀웨어는 208에서 파일 블랙리스트 솔루션의 주의를 끌지 않도록 암호 크랙킹 툴들, 포트 스캐닝 툴들, 암호화 툴들, 등과 같은 보다 많은 멀웨어를 부분적으로 다운로드할 수 있다.
일단 툴들이 다운로드되면, 멀웨어는 감염된 머신 및 감염된 머신으로부터 도달가능한 모든 다른 머신들로부터 유용한 콘텐트를 추출할 것이다. 도 2의 공격 실행 코드에서, 멀웨어는 높은 특권들을 가진 사용자를 발견할 때까지 기업을 탐색하는 것을 계속할 수도 있다. 대안적으로, 기업 내에서 특권이 있는 사용자들의 사용자 명들 및 로그인 증명서들을 발견하기 위해, SMB/NETBIOS/CIFS 트래픽과 같은 트래픽을 알아 챌 수 있다. 대안적으로, 멀웨어는 암호 크랙킹 툴들을 사용하거나 단순히 암호 파일들의 콘텐트들과 추정 암호의 해시를 비교할 것이다. 현재의 프로세싱 전력을 사용하면, 8 글자 길이의 암호는 몇 시간 안에 크랙킹될 수 있다.
특권이 있는 사용자의 증명서들이 추출된 후, 멀웨어는 적절하게 보강되고 (armed), 감염된 머신 및 감염된 머신들로부터 도달가능한 모든 다른 머신들로부터 유용한 콘텐트를 추출하는 비지니스에 착수할 수 있다. 도달가능한 머신들의 리스트는 데이터베이스 서버들, 코드 저장소들, 또는 중요한 설계 문서들을 갖는 CAD 머신들을 포함할 수도 있다. 일단 중요한 콘텐트가 추출되면, 멀웨어는 공격이 끝나기 전에 216에서 데이터를 암호화하거나 명령 제어 센터로 데이터를 업로드할 수도 있다. 데이터가 암호화되면, 악성 행위자는 랜섬 요청 (ransom request) 으로 타깃과 콘택트할 수도 있다.
도 3은 본 개시의 원리들에 따라, 해결 클라이언트로 본 명세서에서 참조되는 예시적인 클라이언트가 로딩 시간에 멀웨어 액티비티를 검출하기 위해 준비하도록 수행하는 동작들을 도시한다. Path Validation Engine은, 멀웨어가 실행하기 시작하는 지점으로부터 마이크로초 이내에 멀웨어 액티비티를 신뢰성 있게 검출할 수 있는 해결 클라이언트의 일부이다. 해결 클라이언트는 먼저 무결성을 증명하고, 이어서 애플리케이션의 모델을 추출하기 위해 애플리케이션의 모듈 각각을 분석한다. 애플리케이션의 모델은 다음의 테이블들: 코드 테이블 (Code Table), 익스포트 (Export Table), V 테이블 (V Table), 기타 테이블 (Other Table), 기본 블록 테이블 (Basic 블록 Table), 약점 테이블 (Soft Spot Table), 메모리 오퍼랜드 테이블 (Memory Operand Table), 트랜지션 테이블 (트랜지션 Table), 디스어셈블리 테이블 (Disassembly Table), 및 중대 OS 기능들 테이블 (Critical OS Functions Table) 을 포함할 수도 있는 애플리케이션 맵 데이터베이스 (애플리케이션 Map Database) 내에 저장된다. 도 3의 실시예에서, 애플리케이션 맵 데이터베이스는 해결 클라이언트로부터 원격 시스템 상에 위치된다. 다른 실시예들에서, 애플리케이션 맵 데이터베이스는 애플리케이션이 실행되는 동일한 하드웨어 또는 해결 클라이언트 및 분석 엔진 양자 외부의 하드웨어에 저장될 수 있다. 해결 클라이언트는 분석 시스템 상의 애플리케이션 맵 데이터베이스 내에 저장될 데이터를 디스패치하기 (dispatch) 위해 해결 PDU들 (Protocol Data Units) 내로 추출된 애플리케이션의 모델을 패키징하도록 스트리밍 엔진을 사용한다. PDU 구조는 도 4에 도시된다.
해결 클라이언트가 302에서 로딩 시간에 애플리케이션을 프로세싱하기 시작한 후에, 동일한 동작들이 304 및 306에서 컴퓨터 애플리케이션의 모듈 각각에 대한 루프에서 수행된다. 애플리케이션의 모듈 각각이 메모리 내로 로딩되기 때문에, 해결 클라이언트는 머신 코드 또는 바이트 코드 디스어셈블러와 같은 디스어셈블러를 사용하여 주어진 모듈의 라이브러리들 및 실행 파일들을 모두 검토한다. 애플리케이션 파일의 모듈들은, ELF (Executable and Linkable Format) 또는 COFF (Common Object File Format) 와 같은, 표준 파일 포맷이다. 이 포맷에서, 애플리케이션의 모듈들은 코드 섹션, 익스포트 데이터 섹션, v-테이블 섹션, 및 다른 부가적인 섹션들을 포함하는 섹션들로 조직된다. 애플리케이션의 모듈 각각이 메모리 내로 로딩되기 때문에, 해결 클라이언트는 이들 데이터 섹션들을 애플리케이션의 모델의 일부로서 추출한다. 모듈의 코드 섹션의 한계들 및 액세스 속성들이 디스패치되고 314에서 코드 테이블의 애플리케이션 맵 데이터베이스에 저장된다. 이 테이블의 레코드 각각은 {시작 어드레스, 종료 어드레스}의 형태이다. 모듈의 코드 섹션의 기본 블록 각각의 인스트럭션들의 한계들 및 수가 디스패치되고 330에서 기본 블록 테이블의 애플리케이션 맵 데이터베이스에 저장된다. 이 테이블의 레코드 각각은 {시작 어드레스, 종료 어드레스, 스트럭션들의 수}의 형태이다. 모듈의 익스포트 데이터 섹션의 한계들 및 액세스 속성들은 318에서 익스포트 테이블의 애플리케이션 맵 데이터베이스에 저장된다. 이 테이블의 레코드 각각은 {시작 어드레스, 종료 어드레스}의 형태이다. 모듈의 (만약 있다면) v-테이블 섹션의 한계들 및 액세스 속성들은 디스패치되고 322에서 V 테이블의 애플리케이션 맵 데이터베이스에 저장된다. 이 테이블의 레코드 각각은 {시작 어드레스, 종료 어드레스}의 형태이다. 모듈의 모든 다른 섹션들의 한계들 및 액세스 속성들은 디스패치되고 326에서 기타 테이블의 애플리케이션 맵 데이터베이스에 저장된다. 이 테이블의 레코드 각각은 {시작 어드레스, 종료 어드레스, 보호 속성들}의 형태이다.
모듈 각각이 메모리 내로 로딩되기 때문에, 해결 클라이언트는 또한 애플리케이션의 모듈들로부터 기타 메모리 맵핑 데이터 및 약점 데이터를 추출한다. 메모리 맵핑 데이터는 메모리 할당, 메모리 할당 취소 (de-allocation), 및 메모리의 중요 세그먼트들로의 메모리 기록을 위한 인스트럭션들을 포함한다. 약점 데이터는 (REP 스타일 동작 코드들을 갖는 인스트럭션들과 같은) 루프들을 실행하는 인스트럭션들을 포함하는 대형 메모리 버퍼들 (스팟 스팟들) 을 조작하기 위한 인스트럭션들을 포함한다. 약점 인스트럭션들의 어드레스 및 메모리 기록 각각의 사이즈는 디스패치되고 334에서 약점 테이블의 애플리케이션 맵 데이터베이스에 저장된다. 이 테이블의 레코드 각각은 {어드레스, 기록 사이즈}의 형태이다. 어드레스 및 기록 사이즈는 목적지가 메모리 오퍼랜드인 메모리 기록 인스트럭션들 동안 저장될 것이다. 이 데이터는 340에서 메모리 오퍼랜드 기록 테이블의 애플리케이션 맵 데이터베이스 내에 저장된다. 이 테이블의 레코드 각각은 {소스 어드레스, 메모리 기록 사이즈}의 형태이다.
애플리케이션의 모듈 각각이 메모리 내로 로딩되기 때문에, 해결 클라이언트는 또한 모듈로부터 트랜지션 맵핑 데이터 (브랜치 이송 또는 트랜지션 데이터) 를 추출한다. 트랜지션 맵핑 데이터는 타깃 어드레스에 대한 트랜지션 인스트럭션들이 지금 결정될 수 있는 직접 트랜지션 맵핑에 관한 것이거나 타깃 어드레스에 대한 트랜지션 인스트럭션들이 런타임까지 이들 인스트럭션들이 완전히 결정되는 것을 방지하는 런타임 의존성을 갖는 간접 메모리 맵핑에 관한 것일 수 있다. 간접 트랜지션이 발생하는 인스트럭션들의 완전한 디스어셈블리는 디스패치되고 324에서 디스어셈블리 테이블의 애플리케이션 맵 데이터베이스에 저장된다. 모든 추출된 트랜지션 맵핑들이 또한 디스패치되고 324 및 332에서 트랜지션 테이블의 애플리케이션 맵 데이터베이스에 저장된다. 이 테이블의 레코드 각각은 {소스 어드레스, 목적지 어드레스}의 형태이다. 부가적으로, 오퍼레이터는 320에서 런타임에 앞서 트랜지션 맵핑 데이터를 맵 트랜지션 테이블에 수동으로 추가할 수 있다. 레코드들을 맵 트랜지션 테이블에 수동으로 추가하기 위해, 오퍼레이터는 멀웨어에 의한 트랜지션 테이블의 가능한 탬퍼링 (tampering) 을 제거하기 위해 2-인자 인증 프로세스를 사용하여 스스로를 인증할 것을 요구할 수도 있다.
트랜지션 맵핑은 멀웨어가 실행되기 시작하는 지점으로부터 마이크로초 이내에 멀웨어 액티비티를 신뢰성 있게 검출하기 위해 경로 검증 엔진 (Path Validation Engine) 의 능력의 중심이다. 트랜지션 맵핑의 개념은 소스 코드의 검토에 의해 보다 완전히 이해될 수 있다. 이하의 샘플 소스 코드에서, 함수 main() 는 라이브러리 내에 규정된 함수 printf() 를 호출하지만, 함수 notCalled() 는 호출하지 않는다. 컴파일러 또는 링커가 이 코드를 실행하고 생성된 바이너리가 검토된 후, 함수들 main(), printf() 및 notCalled() 간의 연관성 (inter-relationship) 또는 연관성의 결여가 보존된다. 함수 main() 는 함수 printf() 로 "트랜지션"된다고 하고, {Address SRC -> Address DST}로 표현되고, 여기서 Address SRC는 함수 main() 에서 함수 printf() 가 호출되는 인스트럭션의 어드레스이고, Address DST는 함수 printf()의 어드레스이다. 소스 및 타깃은 시스템 호출 또는 예외 처리기일 수 있다. 상기와 같은 레코드는 애플리케이션의 트랜지션 맵 테이블의 단일 레코드이다.
//C hello world example
#include <stdio.h>
int main()
{
printf("Hello world\n");
return 0;
}
int notCalled()
{
printf("Feeling lonely !\n");
return 0;
}
상기 예는 컴파일링 언어인 C/C++로 작성되었지만, 소스 코드의 트랜지션들 간의 유사성은, 인터프리팅되거나 JIT 컴파일링 코드를 포함하는 임의의 다른 언어로 작성된 코드에서 상상될 수 있다. 동일한 예가 이하에 제시된 Java와 같은 인터프리팅 언어로 제시된다.
/*
Java Hello World example.
*/
public class HelloWorldExample {
public static void main(String args[]){
System.out.println("Hello World !");
}
public static void notCalled() {
System.out.println("Feeling lonely !");
}
}
애플리케이션의 모듈 각각이 메모리 내로 로딩되기 때문에, 해결 클라이언트는 또한 308에서 애플리케이션 무결성을 체크한다. 일 실시예에서, 이는, 코드가 로딩되고, 체크섬 데이터베이스에 저장된 대응하는 공지의 우수한 체크섬에 대해 비교될 때 코드의 MD5 해시와 같은 체크섬을 계산함으로써 달성된다. 대안적으로, 신뢰할 수 있는 체크섬 검증 서비스가 또한 강화될 수 있다. 이는 현재 로딩 모듈이 코드가 멀웨어에 의해 아직 변질되지 않았다는 것을 보장한다. 해결 클라이언트는 310에서 무결성 체크가 실패하면 알람을 발생하도록 구성될 수도 있다.
로딩 시간에, 액세스 승인 및 특권들에 영향을 주는 특정한 OS 기능들 및 시스템 호출들이 또한 식별되고 이들의 어드레스들은 디스패치되고 312 및 316에서 중요 OS 기능들 테이블에 저장된다. 해결 클라이언트에 의해 디스패치된 특정한 OS 기능들 및 시스템 호출들은 실행가능한 실행 경로에 대해 장거리 도달 효과들을 갖는다. 이들 관리 및 중요 OS 기능들 및 시스템 호출들은 메모리 세그먼트들의 액세스 승인을 변경하거나, 액세스 특권들을 범프 업하거나 (bump up), 무-실행 폴리시를 변경하거나, 구조화된 예외 처리 보호 (Structured Exception Handler protection) 를 변경하거나, 어드레스 공간 레이아웃 랜덤화 폴리시를 셧다운하거나, 메모리를 할당하고 할당해제하거나, 새로운 프로세스를 생성하거나, 새로운 쓰레드를 생성하거나, 암호화 및 복호화 데이터에 수반된다.
애플리케이션의 모듈 각각이 메모리 내로 로딩되기 때문에, 해결 클라이언트는 부가적으로 런타임에 데이터를 수집하도록 애플리케이션의 모듈 내로 삽입된 인스트럭션들을 인스트루먼팅한다. 인스트루먼팅된 코드는 동적 바이너리 분석 엔진 및/또는 바이트 코드 인스트루먼테이션 엔진을 사용하여 애플리케이션 모듈들 내로 삽입된다. 338에서 런타임에 멀웨어가 공격하려고 하는 모듈 내의 영역들에서 액티비티들을 추적하기 위해 데이터를 수집하도록 루프들을 실행하는, 약점 인스트럭션들은 이들 영역들에서 인스트루먼팅된다. 직접 및 간접 트랜지션 맵핑 인스트럭션들은 328에서 런타임에 트랜지션 맵핑들을 수반하는 액티비티들을 추적하기 위해 데이터를 수집하도록 모듈들 내에서 인스트루먼팅된다. 메모리 오퍼랜드 레코딩 인스트럭션들은 336에서 런타임에 메모리 기록 액티비티들에 대한 데이터를 수집하도록 모듈들 내에서 인스트루먼팅된다. 자가-수정 코드의 존재시, 기본 블록들은 런타임에 변경될 수도 있다. 부가적으로, 인스트럭션들은 312 및 316에서 중요 OS 기능 테이블에 저장된 OS 기능들 및 시스템 호출들을 수반하는 액티비티들에 대한 데이터를 수집하도록 애플리케이션에서 인스트루먼팅된다.
로딩 시간에 삽입된 인스트루먼테이션의 결과, 중요 정보는 런타임에 발생되고 분석을 위해 수집된다. 트랜지션 맵핑 데이터와 관련된 인스투루먼테이션이 액세스되고, 해결 클라이언트는 쓰레드 ID, 현재 인스트럭션 어드레스, 목적지 인스트럭션 어드레스, 및 선택가능하게 범용 레지스터 각각에 포함된 데이터를 수집한다. 약점 인스트루먼테이션이 인스트럭션이 실행되기 전에 액세스될 때, 해결 클라이언트는 적절한 레지스터를 통해 쓰레드 ID 및 스택의 한계들을 캡처한다. 약점 인스트루먼테이션이 인스트럭션이 완료될 때, 해결 클라이언트는 쓰레드 ID를 캡처하고 몇몇 범용 레지스터들은 쓰레드 ID로 하여금 이 기록 동작에 의해 업데이트된 메모리의 영역을 추정하게 한다. 중요 API 또는 OS 호출 인스트루먼테이션이 호출이 실행되기 전에 액세스될 때, 해결 클라이언트는 쓰레드 ID, API 명 또는 시스템 호출 번호 및 입력 파라미터들을 캡처한다. 중요 API 또는 OS 호출 인스트루먼테이션이 호출이 실행된 후에 액세스될 때, 해결 클라이언트는 쓰레드 ID, API 명 또는 시스템 호출 번호 및 리턴 값을 캡처한다. 현재 다양한 힙 (heap) 애플리케이션에 수반된 메모리의 영역들을 추적하는 것을 돕는 메모리를 할당하거나 할당해제하는 OS 기능들 또는 시스템 호출들에서의 인스트루먼테이션이 생성됐을 수도 있다. 이 메모리 인벨롭은, 멀웨어가 힙 내에서 제어 구조들을 오버런하기를 원하는지 알아내기 위해 간접 메모리 기록 런타임의 타깃을 추적하도록 강화된다. 부가적으로, 캐시를 사용하여 기본 블록들의 한계들을 추적함으로써, 분석 엔진은 기본 블록이 변경되었는지 결정할 수 있다. 결정이 긍정적이면, 모델 데이터베이스 내 기본 블록 테이블은 업데이트될 수 있다.
이 예시적인 실시예에서, 이어서 해결 클라이언트는 분석 엔진으로의 송신을 위해 PDU 내로 패키징될 스트리밍 엔진에 대해 캡처된 정보를 디스패치한다. 스트리밍 엔진은, 인스트루먼팅된 프로세스가 동작의 정상적인 코스를 계속할 수 있도록, 다양한 인스트루먼테이션에 의해 발생된 데이터를 또 다른 프로세스로 이동시키기 위해 파이프들 또는 로컬 절차 호출들과 같은 매우 낮은 오버헤드 OS 아티팩트들을 사용한다. 이 예시적인 실시예에서, 스트리밍 엔진은 또한 전송 프로토콜에 기초한 적절한 표준들을 사용하는 분석 엔진으로의 추가 송신을 위해 인스트루먼테이션으로부터 수집된 정보를 해결 PDU 내로 패키징할 수 있다. 일 실시예에서, 전송 프로토콜은 TCP/IP일 수도 있다. 또 다른 실시예에서, 전송 프로토콜은 UDP일 수도 있다. 또 다른 실시예에서, 전송 프로토콜은 파이프들 또는 로컬 절차 호출들과 같은 공유된 메모리 기술들을 사용하는 것을 수반할 수도 있다.
도 4는 해결 PDU를 도시한다. 해결 클라이언트 및 분석 엔진이 서로 효과적으로 작동하기 위해, 이들은 해결 PDU를 사용하여 서로 통신한다. 해결 PDU는 분석 엔진으로의 송신을 위해 추출된 애플리케이션의 모델 및/또는 수집된 런타임 데이터를 패키징하기 위해 해결 클라이언트에 의해 특히 사용될 수 있다. 해결 PDU는 해결 클라이언트와 분석 엔진 사이에서 송신될 정보의 타입 각각에 대한 필드들을 포함한다. 해결 PDU는 애플리케이션 제공된 데이터 섹션 (Application Provided Data Section), HW/CAE 발생된 데이터된 데이터, 및 콘텐트 분석 엔진 또는 로 데이터 (Raw Data) 섹션들로 분할된다.
애플리케이션 제공된 데이터 섹션은, 다양한 레지스터들 뿐만 아니라 이 섹션의 다양한 필드들에 위치된 소스 및 타깃 어드레스들로부터의 데이터를 포함한다. 프로토콜 버전은 해결 PDU 의 버전 번호를 포함한다 (402). 해결 프로토콜 버트랜지션 시간에 따라 변함에 따라, 소스 및 목적지는 서로 통신하는 것을 계속할 수 있어야 한다. 8 bit 필드는 소스 엔티티에 의해 발생된 해결 패킷의 버전 번호를 기술한다. 현재 사용되지 않은 예약된 필드 (404) 가 프로토콜 버전 필들에 이어진다.
애플리케이션 제공된 데이터 섹션의 다음 필드는, 도 7에 도시된 바와 같이 분석 엔진 인프라스트럭처 내에서 트래픽을 교환하도록 사용된, 메시지 소스/목적지 식별자 (406, 408, 및 410) 이다. 때때로, 도 7에 도시된 다양한 엔티티들은 이들 사이에서 트래픽을 교환한다. 모든 이들 디바이스들이 IP 어드레스들을 갖거나 필요로 하지 않고, 따라서, 2 (하드웨어 및 호스트) 개의 쿼리 라우터 엔진들 (Query Router Engines) 이 트래픽을 내부적으로 라우팅하기 위해 메시지 소스 필드 및 목적지 필드를 사용한다. 일부 메시지들은 분석 엔진의 엔티티들로 네트워크를 가로질러 가야 한다. 이 목적을 위해, 엔티티들에 다음 ID들이 할당된다. 주어진 분석 엔진 어플라이언스는 2개 이상의 가속기 카드를 가질 수도 있다. 카드 각각은 고유 IP 어드레스를 가질 것이고, 따라서, 다양한 엔티티들이 고유 ID를 가질 것이다. 전술한 인프라스트럭처는 2개 이상의 애플리케이션을 실행할 수도 있다. 애플리케이션 서버 각각이 고유 IP 어드레스를 가질 것이기 때문에, 대응하는 해결 클라이언트 측 엔티티 또한 고유 ID를 가질 것이다.
해결 클라이언트 측 엔티티들
1. 해결 GUI
2. 인스트루먼테이션 및 분석 엔진
3. 클라이언트 메시지 라우터 (Client Message Router)
4. 스트리밍 엔진 (Streaming Engine)
5. 클라이언트 측 데몬 (Client Side Daemon)
6. CLI 엔진
7. 클라이언트 워치독 (Client Watchdog)
8. 클라이언트 압축 블록
9. 클라이언트 iWarp 이더넷 드라이버 (Client iWarp Ethernet Driver) (100 Mb/1Gb/10Gb)
PCI
카드 당 엔티티들
(시작 어드레스 = 20 + n*20)
20. Securalyzer TOE 블록
21. Securalyzer PCI 브리지
22. 압축해제 블록
23. 메시지 검증 블록
24. 패킷 해시 블록
25. 타임 스탬프 블록
26. 메시지 타임아웃 타이머 블록
27. 통계 카운터 블록
28. Securalyzer 쿼리 라우터 엔진
29. Securalyzer 어시스트
Securalyzer
호스트 엔티티들
200. Securalyzer PCIe 드라이버
201. 호스트 라우팅 엔진
201. 콘텐트 분석 엔진
203. 로그 관리자
204. 데몬 (Daemon)
205. 웹 서비스 엔진
206. 워치독 (Watchdog)
207. IPC 메시징 버스
208. 구성 데이터베이스
209. 로그 데이터베이스
SIEM
커넥터들
220. SIEM 커넥터 1 - Virsec 대시보드
221. SIEM 커넥터 2 - HP ArcSight
222. SIEM 커넥터 3 - IBM QRadar
223. SIEM 커넥터 4 - Alien Vault USM
Securalyzer
인프라스트럭처
엔티티들
230. Virsec 대시보드
231. SMTP 서버
232. LDAP 서버
233. SMS 서버
234. 자격 서버
235. 데이터베이스 백업 서버
236. OTP 클라이언트
237. OTP 서버
238. 체크섬 서버
239. 티켓팅 서버
240. Virsec 규칙 서버
241. Virsec 업데이트 서버
모든 사용자 애플리케이션들
255. 사용자 애플리케이션들 - 애플리케이션 PID는 쿼리를 발행하는 애플리케이션을 식별하도록 사용된다.
애플리케이션 제공된 데이터 섹션의 또 다른 필드는 송신될 데이터의 타입을 나타내는 메시지 타입 필드 (412) 이다. 최고 레벨에서, 다양한 로컬 해결 클라이언트 측 엔티티들 간, 분석 엔진 어플라이언스 측 엔티티들 간 그리고 클라이언트 측 엔티티들과 어플라이언스 측 엔티티들 간에 흐르는 3가지 구별된 타입들의 메시지들이 있다. 게다가, 네트워크를 통해 이동해야 하는 메시지들은 OSI 모델 또는 다른 프로토콜들을 준수해야 한다.
애플리케이션 제공된 데이터 섹션의 다음 필드는 패킷에 대한 시퀀스 식별자를 포함하는 패킷 시퀀스 번호 필드 (414) 이다. 스트리밍 엔진은 손실된 패킷들에 대한 에러 복구를 수행할 것이다. 이 목적을 위해, 패킷을 고유하게 식별해야 한다. 증가하는 부호화된 (signed) 64 bit 패킷 시퀀스 번호는 스트리밍 엔진에 의해 삽입되고 단순히 남아 있는 분석 엔진 인프라스트럭처를 통과한다. 시퀀스 번호가 64 bit 바운더리를 감추면 (wrap), 시퀀스 번호는 0에서 재시작할 수도 있다. 심장박동 또는 로그 메시지 등과 같은 비-애플리케이션 패킷들의 경우, 패킷 시퀀스 번호는 -1일 수도 있다.
애플리케이션 제공된 데이터 섹션은 또한 암호화 목적을 위해 사용된 카나리아를 포함하는 해결 카나리아 메시지 필드 (422) 를 포함한다. 해결 클라이언트 및 분석 엔진은, 애플리케이션 런칭 시간, PID, 라이센스 스트링, 및 공인된 사용자 명과 같은 새로운 특성이 아닌 일부 공통 정보로부터 카나리아를 계산하는 방법을 안다.
애플리케이션 제공된 데이터 섹션은 모든 메시지들에서 사용된 포괄적인 필드들을 부가적으로 포함한다. 애플리케이션 소스 인스트럭션 어드레스 (458), 애플리케이션 목적지 인스트럭션 어드레스 (416), 메모리 시작 어드레스 포인터 (418), 메모리 종료 어드레스 포인터 (420), 애플리케이션 PID (424), 쓰레드 ID (426), 분석 엔진 도착 타임스탬프 (428), 및 분석 엔진 출발 타임스탬프 (430) 필드들이 일반적인 애플리케이션 데이터를 홀딩한다.
해결 PDU는 또한 HW/CAE 발생된 데이터 섹션을 포함한다. 분석을 용이하게 하고 고정된 시간 예산을 유지하기 위해, 분석 엔진은 소스 및 목적지 어드레스 필드들을 해시하고, 프로세싱 전에 해결 PDU를 업데이트한다. 해결 PDU의 HW/CAE 발생된 데이터 섹션은 해시된 데이터가 나중의 사용을 위해 위치되는 곳이다. 이 섹션은 해시된 애플리케이션 소스 인스트럭션 어드레서 (432), 해시 애플리케이션 목적지 인스트럭션 어드레스 (434), 해시된 메모리 시작 어드레스 (436), 및 해시된 메모리 종료 어드레스 (438) 필드들을 포함한다. HW/CAW 발생 섹션은, 모든 해결 PDU 패킷들 내에 존재하는 하드코딩된 콘텐트 시작 매직 헤더, API 명칭 매직 헤더, 호출 콘텍스트 매직 헤더 및 호출 로 데이터 매직 헤더를 포함하는, 해결 카나리아 (442) 와 관련된 다른 필드들을 부가적으로 포함한다.
HW/CAW 발생 섹션은 또한 결과, 구성 비트들, 동작 모드, 에러 코드, 및 동작 모드 데이터를 포함하는 다른 구성 및 에러 데이터를 식별하도록 필드 (440) 를 포함한다. 필드의 결과 부분은 상이한 분석 엔진 쿼리들 - 트랜지션 플레이북, 코드 레이아웃, 메모리 (스택 또는 힙) 오버런, 및 심층 검사 쿼리들 - 에 대한 Boolean 결과들을 리턴하도록 세그먼트화된다. 필드의 구성 비트 부분은 압축 플래그, 데모 플래그, 또는 공존 (Co-located) 플래그가 설정될 때를 나타낸다. 이 필드 내 플래그의 존재는 패킷이 압축 모드로 리턴되어야 하는지 여부를 분석 엔진에 나타낸다. 데모 플래그는 시스템에 대해 유효 라이센스가 없기 때문에 시스템이 데모 모드에 있다는 것을 나타낸다. 이 모드에서, 로그들 및 이벤트들은 이들 전체에서 이용가능하지 않을 것이다. 공존 플래그는, 호스트 쿼리 라우터 엔진이 애플리케이션으로 리턴되어야 할 패킷들을 어디로 전송할지를 결정할 수 있도록 애플리케이션이 분석 엔진 내에서 실행된다는 것을 나타낸다. 이 플래그가 설정되면, 패킷들은 PCI 브리지를 통해 전송되고, 그렇지 않으면 패킷들은 PCI 카드 상의 이더넷 인터페이스를 통해 전송된다. 필드의 동작 모드 부분은 시스템이 파라노이드 (Paranoid), 모니터 (Monitor), 또는 학습 (Learn) 모드에 있는지 여부를 나타낸다. 이들 모드들은 이 섹션에서 나중에 보다 상세히 논의될 것이다. 마지막으로, 필드의 에러 코드 부분은 시스템의 에러를 나타낸다. 에러 코드의 처음 8 비트들은 메시지 소스에 대응할 것이다. 나머지 12 비트들은 서브시스템 각각에 의해 보고된 실제 에러에 대응할 것이다.
해결 PDU는 또한 콘텐트 분석 엔진 또는 로 데이터를 포함한다. OS 라이브러리 호출들 및 시스템 호출들의 인수들 (arguments) 및 리턴 값과 같은 모든 다양한 데이터가 해결 PDU의 이 섹션 내에 위치된다. 이 섹션의 데이터는 애플리케이션으로부터 수집된 데이터의 콘텐트를 포함하고 주로 콘텐트 분석 엔진에 타깃팅된다. 가변 크기 API 명 또는 번호 (444), 호출 콘텐트 매직 헤더 (446), 가변 크기 호출 콘텐트 (450), 호출 로 데이터 매직 헤더 (452), 가변 크기 로 데이터 콘텐트들 (456), 및 2개의 예약된 필드들 (448 및 454) 을 포함한다. 게다가, 이들 필드들은 관리 메시지들을 위해 오버로딩될 수 있다.
도 5는 런타임에서 보안 이벤트들을 검출하도록 분석 엔진에 의해 사용된 프로세스를 도시한다. 이 예시적인 실시예에서, 분석 엔진은 해결 클라이언트에 대해 동일하거나 상이한 하드웨어에서 실행되는 별도의 프로세스이다. 데이터 분석 부분으로부터 데이터 콜렉션들을 분리함으로써, 인스트루먼테이션 프로세스에 의해 생성된 정보의 분석과 연관된 프로세싱 오버헤드들은 실질적으로 감소된다. 이는 분석 엔진으로 하여금 복수의 애플리케이션들에 대한 런타임 분석을 동시에 수행하게 한다.
런타임 동안, 코드에 대한 인스트루먼테이션은 쓰레드 ID, 스택 시작 어드레스 및 기준 어드레스, 범용 레지스터들, 소스 어드레스들, 및 목적지 어드레스들과 같은 적절한 콘텍스트를 검토할 기회를 제공한다. 콘텐트를 검토하기 위한 동작들의 시퀀스는 특정한 순서를 갖지 않고, 상호교환가능하고, 심지어 분석 엔진의 복수의 쓰레드들에 의해 동시에 수행될 수 있다. 도 5에 도시된 프로세스를 사용하여, 보안 엔진은 실시간으로 공격의 진행을 추적하기 위해 특정하고 개별적인 이벤트 체인 상태 머신에 대해 수집될 수 있는 애플리케이션의 쓰레드 각각에 대해 개별 이벤트들을 발생시킬 것이다. 분석 엔진에 의해 발생된 이벤트들은 SYSLOG와 같은 표준 기반 이벤트 포맷을 따른다. 이는 직접적으로 또는 커넥터를 통해 CEF (Common Event Format) 와 같은, 표준 타깃 포맷으로 SYSLOG를 변환하는 해결 클라이언트에 의해 발생된 이벤트들을 사용하도록 표준 기반 이벤트 관리 시스템을 인에이블한다. 분석 엔진은 모든 테이블들을 사용하여 이전에 저장된 애플리케이션 맵에 액세스하고, 수행된 트랜지션 인스트럭션이 이의 콘텍스트를 보고할 때, 분석 엔진은 타깃 어드레스가 유효 목적지인지 여부를 나타내는 데이터를 포함하는 추출된 애플리케이션의 모델에 액세스한다.
502에서 프로세스가 시작된 후, 504에서 새로운 런타임 정보가 해결 클라이언트로부터 해결 PDU 패킷으로 수신된다. 508에서 버퍼에 패킷을 저장하기 전에, 분석 엔진은 506에서 포함된 카나리아 및 타임스탬프를 검증한다. 해결 PDU가 여전히 버퍼링되는 동안, 510에서 분석 엔진은 어드레스 필드들을 해시하고 해시된 데이터를 해결 PDU의 HW/CAE 섹션에 넣는다. 이어서 패킷은 512에서 프로세싱을 위한 패킷 버퍼링으로부터 풀링 (pull) 될 수 있다. 패킷의 프로세싱이 완료될 때, 이어서 프로세스는 554에서 다음 패킷을 기다린다.
분석 엔지니어에 의해 사용된 프로세스는 트랜지션 맵핑 데이터를 검토한다. 520에서 트랜지션 타입 인스트럭션에 의해 보고된 런타임 정보가 직접 트랜지션으로부터의 정보이고 528에서 타깃 어드레스가 트랜지션 맵 테이블에서 발견되지 않으면, 분석 엔진은 544에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다. 522에서 트랜지션 타입 인스트럭션에 의해 보고된 런타임 정보가 간접 트랜지션으로부터의 정보이고, 530에서 타깃 어드레스가 코드 테이블 내, 그리고 548에서 기본 블록 내에 있으면, 분석 엔진은 550에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다. 522에서 트랜지션 타입 인스트럭션에 의해 보고된 런타임 정보가 간접 트랜지션으로부터의 정보이고, 530 및 548에서 타깃 어드레스가 힙 메모리와 연관된 영역 내에 있으면, 분석 엔진은 550에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다. 522에서 트랜지션 타입 인스트럭션에 의해 보고된 런타임 정보가 간접 트랜지션으로부터의 정보이고, 552에서 타깃 어드레스가 메모리의 비-임포트-영역, 비-코드 내에 있으면, 분석 엔진은 556에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다.
분석 엔진에 의해 사용된 프로세스는 516에서 메모리 기록 데이터를 검토한다. 런타임 정보가 메모리 기록 인스트럭션으로부터 보고되고 524에서 기록 타깃 어드레스가 V 테이블의 메모리 영역 내에 있으면, 분석 엔진은 536에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다. 런타임 정보가 메모리 기록 인스트럭션으로부터 보고되고 524에서 기록 타깃 어드레스가 익스포트 테이블의 메모리 영역 내에 있으면, 분석 엔진은 536에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다. 런타임 정보가 메모리 기록 인스트럭션으로부터 보고되고 기록 타깃 어드레스 538에서 힙 메모리 영역의 타깃 제어 섹션에 있으면, 분석 엔진은 536에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다. 런타임 정보가 메모리 기록 인스트럭션으로부터 보고되고 532에서 기록 타깃 어드레스가 스택 메모리 영역의 타깃 제어 섹션에 있으면, 분석 엔진은 536에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다.
분석 엔진에 의해 사용된 프로세스는 514에서 약점 데이터를 검토한다. 인스트럭션이 약점 인스트럭션이고 524에서 기록 타깃 어드레스가 V 테이블의 메모리 영역 내에 있으면, 분석 엔진은 536에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다. 인스트럭션이 약점 인스트럭션이고 524에서 기록 타깃 어드레스가 익스포트 테이블의 메모리 영역 내에 있으면, 분석 엔진은 536에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다. 인스트럭션이 약점 인스트럭션이고 538에서 기록 타깃 어드레스가 힙 메모리 영역의 타깃 제어 섹션에 있으면, 분석 엔진은 536에서 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다. 인스트럭션이 약점 인스트럭션이고 532에서 기록 타깃 어드레스가 기준 포인터 아래의 메모리 위치에서 스택의 제어 영역에 저장된 인스트럭션 포인터를 오버라이팅 (overwrite) 하면, 분석 엔진은 536에서 이러한 이벤트가 발생된 쓰레드의 상세들을 갖는 이벤트를 발생한다.
분석 엔진에 의해 사용된 프로세스는 518에서 OS 기능들 및 시스템 호출들을 검토한다. 542에서의 무효 OS 기능 또는 시스템 호출때문에, 중요 OS 기능 또는 시스템 호출의 입력 지점과 연관된 인스트루먼테이션이 호출되면, 분석 엔진은 544에서 중요 OS 기능 테이블에서 액티비티들이 발생할 때 이벤트가 발생하는 쓰레드의 상세들을 갖는 이벤트들을 발생한다. 이는 메모리 액세스 승인들을 변경하는 코드에 대한 호출들이 무효로 선언되거나, 특권 레벨들을 변경하는 코드에 대한 호출들이 잠재적으로 무효로 선언되거나, WAN 기반 사용자에게 서비스하는 쓰레드 상에서 발생하는 특권 증대가 상승되거나, 비-실행 폴리시에 대한 변경들이 무효로 선언되거나, ASLR (Address Space Layout Randomization) 폴리시에 대한 변경들이 무효로 선언되거나, SEH (Safe Exception Handling) 폴리시에 대한 변경들이 무효로 선언되거나, 관리자 명시 함수들에 대한 호출들이 특정한 함수 호출과 연관된 이벤트에 따라 처리되지 않거나, 관리자 명시 시스템 호출들에 대한 호출들이 특정 시스템 호출과 연관된 이벤트에 따라 처리되지 않도록, 이벤트가 발생되게 한다. 부가적으로, 534에서의 힙 메모리 동작들에 대한 526에서 중요 시스템 호출 동작들이 540에서 힙 메모리 인벨롭을 업데이트하도록 사용된다. 할당과 관련된 메모리의 이들 영역들은 메모리 인벨롭 크기를 증가시키는 반면, 할당해제와 관련된 영역들은 타깃된 영역을 풀어준다 (free up).
도 6은 검출된 보안 이벤트들을 추적하도록 사용된 이벤트 체인 상태 머신을 도시한다. 경로 검증 엔진은 도시된 이벤트 체인 상태 머신에 따라 이벤트들을 발생시키고 이벤트들의 상태를 추적한다. 이벤트 체인 상태 머신은 이들 이벤트들을 추적하도록 트랜지션 플레이북 데이터베이스 내에 저장된 레코딩들을 사용한다. 새로운 쓰레드가 시작할 때, 이벤트 체인 상태 머신은 602에서 시작 상태로 초기화된다. 이벤트 관리 엔진은, 일 쓰레드 상의 이벤트들의 세트가 적절한 쓰레드에 대한 상태 머신에 대해 업데이트되도록 이벤트들을 직렬화한다. 트랜지션들이 쓰레드 상에서 발생하기 때문에, 상태 머신은 타깃 어드레스를 레코딩하지만 시작 상태에 머문다. 경로 검증 엔진이 중간 또는 높은 보안 이벤트를 발생시키면, 이벤트 체인 상태 머신은 604에서 다음 상태 Ei로 진행한다. 이 새로운 상태는 트랜지션들이 발생함에 따라 트랜지션들의 타깃 어드레스를 레코딩하도록 계속된다. 중간 및 높은 보안 이벤트들에 대해 새로운 상태로 업데이트하고 트랜지션 이벤트들을 레코딩하는 상태 머신의 이 프로세스는, 쓰레드가 612의 종료 상태에 도달할 때까지, 606, 608, 및 610으로 계속된다. 보안 분석가들은 가장 높은 보안 레벨 이벤트가 트리거될 때를 인지하고 공격이 발생할 때 이벤트 체인 상태 머신이 포렌식들을 캡처한다.
시스템의 모드들에 따라, 이벤트들에 응답하여 취해질 수 있는 다양한 치유 액션들이 (remedial actions) 있다. 취해진 치유 액션들은 실시간으로 수행된다. 일 치유 액션은 애플리케이션을 셧다운하는 것으로 구성될 수도 있다. 다른 보충 동작들은 위협이 발생한 쓰레드들과 연관되고, 위협이 발생한 쓰레드를 종료하고/하거나 위협을 초래한 사용자를 블랙리스트에 추가하는 소켓(들)을 결합해제하거나 릴리즈할 수도 있다. 또 다른 치유 액션은 애플리케이션 서버의 소켓(들)과 연관된 모든 소켓들을 차단해제할 것이다. 이는 이때 접속된 모든 사용자들을 차단할 것이다. 또 다른 치유 액션은 공격을 무시하는 것일 수도 있다. 이는 분석가가 공격을 주요한 결과로 간주하지 않기 때문일 수도 있다. 주어진 이벤트에 대해 가장 적절한 치유 액션들은, 보안 분석가가 분석 엔진이 자동 모드에서 동작하도록 선택하였다면, 치유 액션이 자동으로 발생하도록, 사전 프로그래밍된다.
분석 엔진의 경로 검증 엔진은 3가지 모드들: 모니터, 또는 파라노이드, 또는 학습 모드에서 실행될 수 있다. 이들 모드들 간의 차이는 애플리케이션의 주어진 쓰레드에서 수신된 이벤트(들)와 연관된 치유 액션들이 실시되는 방법 및 시기이다. 모니터 모드에서, 런타임 정보가 도달하고 분석 엔진에 의해 분석될 때, 분석 엔진은 지정된 보안 분석가들로 지향된 통지들을 발생시킨다. 이어서, 중재하고 가장 적절한 보충 동작을 선택하는 것이 보안 분석가의 직업이다. 보안 분석가는 심지어 쓰레드가 종료 상태에 도달하기 전에 보다 높은 효과의 치유 액션으로 "무시" 타입 사전 프로그래밍된 치유 액션을 변경하도록 결정할 수도 있다. 치유 액션을 마무리할 때, 분석 엔진은 기업의 적절한 권위자가 주어진 쓰레드에 대해 제안된 치유 액션을 클리어할 때 치유 액션을 구현한다.
파라노이드 모드에서, 프로그래밍된 (디폴트 또는 사용자 구성) 치유 액션이 보안 분석가로부터 어떠한 수동 개입 없이 자동으로 실행된다. 어느 모드에서든, 일단 치유 액션이 수행될 준비가 되면, 분석 엔진은 해결 클라이언트에게 어떤 치유 액션이 수행될지 알려준다. 이어서 해결 클라이언트는 애플리케이션에서 치유 액션과 연관된 액션을 수행한다. 일단 치유 액션이 완료되면, 해결 클라이언트는 확인 메시지를 분석 엔진으로 다시 전송한다. 수신응답 (acknowledgement) 의 수신시, 분석 엔진은 보안 분석가를 업데이트하는 것을 포함하는 하우스키핑 (housekeeping) 을 수행한다.
학습 모드에서, 분석 엔진은 모든 이벤트들 및 치유 액션들을 무시한다. 이 모드에서, 애플리케이션은 원시 (pristine) 환경에서 실행되고 모든 이벤트들 및 이벤트 체인들을 레코딩한다. 보안 분석가는 이벤트가 일어나야 할 때 및 어떤 치유 액션이 이 이벤트와 연관되어야 하는지에 대한 기준을 구축하기 위해 이 정보를 사용한다.
도 7은 예시적인 해결 클라이언트 및 분석 엔진 인프라스트럭처의 고레벨 블록도를 도시한다. 이 인프라스트럭처는 스마트폰, 태블릿, 랩탑부터 하이엔드 서버들에 이르는 컴퓨팅 디바이스들을 포함하는 다양한 하드웨어로 구성될 수도 있다. 이 도면에 도시된 바와 같이, 해결 클라이언트에 의해 수행된 데이터 수집은 애플리케이션 퍼포먼스를 개선하기 위해 분석 엔진에 의해 수행된 분석과 구별될 수도 있다. 인프라스트럭처는 해커들이 멀웨어 공격들에 대한 보호를 전복시키는 것을 방지하기 위한 높은 유효성을 제공한다. 해결 클라이언트는 로딩 시간 및 런타임 데이터를 수집하기 위해 애플리케이션과 상호작용한다. 애플리케이션 (701) 의 인프라스트럭처는 프로세스 메모리 (703), 제 3 자 라이브러리들 (704), 커널 서비스들 (706), 및 인스트럭션 파이프라인 (707) 을 포함한다. 해결 클라이언트 (702) 의 인프라스트럭처는 IAE (Instrumentation & Analysis Engine) (705), GUI (graphical user interface) (711), 클라이언트 데몬 (708), 구성 데이터베이스 (709), 및 스트리밍 및 압축 엔진 (710), 및 CPU (central processing unit) (736) 를 포함한다. 애플리케이션 (701) 의 로컬 사용자들 또는 원격 사용자들 (702) 은 키보드, 마우스, 또는 유사한 I/O 디바이스들을 통해 또는 파이프들, 공유된 메모리 또는 소켓들에 의해 확립될 수도 있는 통신 채널을 통해 네트워크 상에서 애플리케이션과 상호작용한다. 애플리케이션에 응답하여, 프로세스 메모리 (703) 는 실행을 위해 인스트럭션 파이프라인 (707) 으로 적절한 인스트럭션들의 세트들을 디스패치한다. 애플리케이션은 또한 libc.so (Linux) 또는 msvcrtxx.dll (Windows) 과 같은 자신의 라이브러리 또는 제 3 자 라이브러리들 (704) 을 강화할 수도 있다. 이들 라이브러리들로부터의 기능들이 적용됨에 따라, 이들 라이브러리들로부터의 적절한 인스트럭션들이 또한 실행을 위해 인스트럭션 파이프라인 (707) 으로 삽입된다. 부가적으로 애플리케이션은 메모리, 파일 I/O 등과 같은 시스템 리소스들을 커널 (706) 로부터 강화할 수도 있다. 시간 순으로 정렬된 시퀀스에 넣어진 애플리케이션으로부터 이들 인스트럭션들의 시퀀스들, 라이브러리들 및 커널은 주어진 사용자에 의해 목표된 애플리케이션 기능을 전달한다.
애플리케이션의 코드가 메모리 내로 로딩되기 시작할 때, IAE (705) 는 몇몇 상이한 로딩 시간 액션들을 수행한다. 일단 모든 모듈들이 로딩되면, 애플리케이션의 인스트루먼팅된 인스트럭션들은 런타임 데이터를 발생한다. 클라이언트 데몬 (708) 은 구성 데이터베이스 (709) 로부터 하나 이상의 구성 파일들을 판독함으로써 CPU (736) 에서 IAE (705), 스트리밍 엔진 (710) 및 GUI (711) 프로세스들을 초기화한다. 클라이언트 데몬은 또한 IAE, 스트리밍 엔진, GUI, 분석 엔진과 자신 사이의 상호 통신 파이프들을 초기화한다. 클라이언트 데몬은 또한 클라이언트 데몬을 포함하는 임의의 해결 클라이언트 프로세스가 반응이 없거나 죽으면 (die), 재생될 것이라는 것을 보장한다. 이는 해결 클라이언트가 높은 유효성 기업 등급 제품이라는 것을 보장한다.
IAE는 애플리케이션으로부터 수집된 로딩 시간 및 런타임 데이터를 스트리밍 엔진 내로 푸시한다. 스트리밍 엔진은 해결 클라이언트로부터의 로 데이터를 해결 PDU 내에 패키징한다. 이어서, 스트리밍 엔진은 해결 PDU를 고 대역폭, 저 레이턴시 통신 채널 (712) 을 통해 분석 엔진 (711) 으로 푸시한다. 클라이언트 및 분석기가 동일한 머신 상에 위치되면, 이 채널은 메모리 버스일 수 있다. 이들 엔티티들이 상이한 하드웨어 상에 위치되지만 동일하게 물리적으로 가깝다면, 채널은 원격 접속이 전송 로드로의 엔티티들과 인터넷에 걸쳐 런타임 데이터 사이에 확립되게 하는 이더넷 또는 광섬유기반 전송일 수 있다.
분석 엔진의 인프라스트럭처는 NIC (Network Interface Card) (713), 패킷 풀 (714), 타임스탬프 엔진 (715), 프로세서 패브릭 (716), 해싱 엔진 (717), TCAM 엔진 (718), 애플리케이션 맵 데이터베이스 (719), 및 쓰레드 콘텍스트 데이터베이스 (720) 를 포함한다. 분석 엔진의 인프라스트럭처는 콘텐트 분석 엔진 (721), 이벤트들 및 이벤트 체인들 (722), 이벤트 관리 엔진 (723), 이벤트 로그 (724), 애플리케이션 데몬 (725), 분석 엔진 구성 데이터베이스 (726), 네트워크 인터페이스 (727), 대시보드 (728), SMS/SMTP 서버 (729), OTP 서버 (730), 업그레이드 클라이언트 (731), 소프트웨어 업그레이드 서버 (732), 소프트웨어 이미지들 (733), 이벤트 업데이트 클라이언트 (734), 및 이벤트 업그레이드 서버 (735) 를 더 포함한다.
프로토콜 헤더들과 함께 해결 PDU는, 해결 PDU가 풀링되고 패킷 풀 (714) 내로 넣어지는 네트워크 인터페이스 카드 (713) 에서 인터셉트된다. 해결 PDU의 타임스탬프 필드들은 타임스탬프 엔진 (715) 에 의해 채워진다. 이는 어떠한 패킷도 지나치게 긴 시간 동안 패킷 풀 버퍼로 스트라이크하지 않는다는 것을 보장하게 한다.
프로세서 패브릭 (716) 은 패킷 버퍼로부터 패킷들을 풀링하고, 어드레스 필드들은 해싱되고 패킷의 적절한 위치에서 대체된다. 이 동작은 해싱 엔진 (717) 에 의해 수행된다. 이어서, 프로세서 패브릭은 패킷 버퍼로부터 패킷이 도착하는 순서로 패킷들을 제거하기 시작한다. 로딩 시간 페이즈로부터의 정보를 갖는 패킷들은 관련 데이터가 추출되고 애플리케이션 맵 데이터베이스 (719) 내에 저장되도록 프로세싱된다. 런타임 페이즈로부터의 정보를 갖는 패킷들은 도 5에 따라 프로세싱된다. 분석 엔진의 효율성은 프로세서 패브릭 내의 프로세서들의 수에 기초하여 증가되거나 감소될 수 있다.
트랜지션 타깃 데이터는, 쓰레드 각각에 대한 테이블을 갖는 쓰레드 콘텍스트 데이터베이스 (720) 에 저장된다. 프로세서 패브릭은 또한 트랜지션 및 메모리 영역 검색들을 수행하기 위해 TCAM 엔진 (718) 을 강화한다. 프로세서 패브릭이 해시들을 이용한 검색을 수행하기 때문에, 실제 이용된 시간은 예측가능하고 매우 짧다. 패브릭 내의 프로세서들의 수를 신중하게 선택함으로써, 패킷 당 쓰루풋이 적합하게 변경될 수 있다.
분석 엔진이 검색을 수행할 때, 때때로, 무효 트랜지션, 또는 중요/관리자 기능들 또는 시스템 호출들의 무효 동작을 발견하거나, 또는 바람직하지 않은 위치들에 메모리 기록을 발견할 수도 있다. 이들 경우들 각각에서, 분석 엔진은 이벤트들 및 이벤트 체인 데이터베이스 (722) 에 저장된 폴리시에 의해 기술된 바와 같이 프로그래밍된 심각도의 이벤트를 이벤트 관리 엔진 (723) 에 디스패치한다. 로 이벤트 로그가 이벤트 로그 데이터베이스 (724) 에 저장된다. 대시보드는 또한 이벤트 로그에 액세스할 수 있고 애플리케이션 상태를 디스플레이할 수 있다.
치유 액션은 또한 이벤트들 및 이벤트 체인 데이터베이스 (722) 의 모든 이벤트와 연관된다. 사용자는 일 극단의 이벤트를 무시하는 것으로부터 다른 극단의 액션들을 종료하는 것까지의 액션들의 범위로부터 치유 액션을 설정할 수 있다. 권장된 치유 액션은 이벤트 업데이트 클라이언트 (734) 및 이벤트 업그레이드 서버 (735) 를 사용하는 분석가에게 권장될 수 있다. 전술한 권장된 액션을 변경하기 위해, 분석가는 상응하게 대시보드 (728) 를 사용할 수 있다. 대시보드는 모니터링된 애플리케이션 각각의 상태를 디스플레이하고 보안 분석가로 하여금 애플리케이션을 시작하고 종료하는 것과 같은, 애플리케이션에 대한 일정한 제어를 갖게 하는 GUI 인터페이스를 제공한다. 이벤트가 발생될 때, 이벤트 체인은 정상 상태로부터 후속하는 상태로 진행한다. 새로운 상태와 연관된 치유 액션이 취해질 수 있다. 치유 액션이 무시할 수 없는 액션을 수반한다면, SMS 또는 SMTP 서버 (729) 를 사용하여 보안 분석가에게 통지가 전송된다. 보안 분석가의 SMS/SMTP 어드레스는 LDAP 또는 다른 디렉토리 프로토콜을 사용하여 결정될 수 있다. 대시보드로부터 애플리케이션을 시작하거나 종료하는 프로세스는 상승된 특권을 요구하고, 따라서 보안 분석가는 OTP 서버 (730) 를 사용하여 인증되어야 한다.
새로운 이벤트들이 또한 생성되고 분석가에게 권장된 치유 액션 및 심각도를 갖는 이벤트들 및 이벤트 체인 데이터베이스 (722) 내로 링크될 수 있다. 이는 일 설치에서 새로운 공격에 대해 고유한 이벤트들 및 이벤트 체인들로 하여금 다른 설치들에 대해 디스패치되게 한다. 이 목적을 위해, 모든 새로운 이벤트들 및 이벤트 체인들은 이벤트 업그레이드 서버 (735) 로 로딩된다. 이벤트 업데이트 클라이언트 (734) 는 새로운 이벤트들 및 이벤트 체인들을 검색하기 위해 이벤트 업그레이드 서버에 주기적으로 접속하고 인증된다. 이어서 이벤트 업데이트 클라이언트는 이들 새로운 이벤트들 및 이벤트 체인들을 이벤트들 및 이벤트 체인 데이터베이스 (722) 로 로딩한다. 콘텐트 분석 엔진 (721) 은 새로운 이벤트 체인들로 캡슐화된 새로운 공격들에 대해 애플리케이션 추적을 시작할 수 있다.
단지 클라이언트 데몬을 사용하는 것과 같이, 어플라이언스 데몬 (725) 은 분석 엔진 상에서 실행하는 다양한 프로세스들을 시작할 책임이 있다. 이 목적을 위해, 어플라이언스 데몬은 분석 엔진 구성 데이터베이스 (726) 로부터 구성 정보를 판독해야 한다. 데몬은 또한 분석 엔진에서의 모든 프로세스들에 대해 하트비트 폴 (heartbeat poll) 을 실행할 책임이 있다. 이는 분석 엔진 에코 시스템의 모든 디바이스들이 항상 최상의 동작 조건에 있다는 것을 보장한다. 3개의 연속한 하트비트들의 손실은 타깃팅된 프로세스가 응답하지 않는다는 것을 암시한다. 임의의 프로세스가 조급하게 종료되면, 데몬은 이 프로세스가 데몬을 포함한다는 것을 수신할 것이다.
때때로, 소프트웨어는, 소프트웨어의 에러들을 고치는 것과 같은 목적들을 위해 어플라이언스 호스트에서, 또는 분석 엔진의 소프트웨어 또는 클라이언트의 소프트웨어가 업그레드되어야 할 수도 있다. 이 목적을 위해, 업그레이드 클라이언트 (731) 는 최신 소프트웨어가 이용가능한 소프트웨어 업그레이드 서버 (732) 를 끊임없이 체크한다. 클라이언트가 분석 엔진 또는 클라이언트 내의 엔티티들이 오래된 이미지를 실행하는 것을 발견하면, 클라이언트는 분석가들로 하여금 오래된 이미지를 소프트웨어 업그레이드 서버 (732) 로부터의 새로운 이미지로 업그레이드하게 한다. 새로운 이미지들은 시스템 이미지 (733) 로서 함께 번들된다. 이는 테스트된 호환가능한 이미지들을 어플라이언스 또는 호스트에게 제공할 수 있게 한다. 분석 엔진 또는 해결 클라이언트의 서브시스템의 이미지들 중 하나가 시스템 이미지의 동일한 컴포넌트에 대한 이미지와 매칭하지 않는다면, 그러면 모든 이미지들이 이전의 공지된 양호한 시스템 이미지로 돌아가게 할 것이다.
도 8은 본 발명의 실시예들이 구현될 수도 있는 컴퓨터 네트워크 또는 유사한 디지털 프로세싱 환경을 예시한다.
클라이언트 컴퓨터(들)/디바이스들 (50) 및 서버 컴퓨터(들) (60) 는 애플리케이션 프로그램들 등을 실행하는 프로세싱, 저장 및 입력/출력 디바이스들을 제공한다. 클라이언트 컴퓨터(들)/디바이스들 (50) 은 또한 통신 네트워크 (70) 를 통해, 클라이언트 디바이스들/프로세스들 (50) 및 서버 컴퓨터(들) (60) 을 포함하는 다른 컴퓨팅 디바이스들과 링크될 수 있다. 통신 네트워크 (70) 는 원격 액세스 네트워크, 글로벌 네트워크, (예를 들어, 인터넷), 전세계적인 컴퓨터들의 모임, LAN 또는 WAN, 및 서로 통신하기 위해 현재 각각의 프로토콜들 (TCP/IP, Bluetooth®, 등) 을 사용하는 게이트웨이들의 일부일 수 있다. 다른 전자 디바이스/컴퓨터 네트워크 아키텍처들이 적합하다.
도 9는 도 8의 컴퓨터 시스템의 컴퓨터 (예를 들어, 클라이언트 프로세서/디바이스 (50) 또는 서버 컴퓨터들 (60)) 의 예시적인 내부 구조의 도면이다. 컴퓨터 (50, 60) 각각은 시스템 버스 (79) 를 포함하고, 버스는 컴퓨터 또는 프로세싱 시스템의 컴포넌트들 사이에서 데이터 전송을 위해 사용된 하드웨어 라인들의 세트이다. 시스템 버스 (79) 는 본질적으로, 엘리먼트들 간 정보 전송을 인에이블하는 컴퓨터 시스템들의 상이한 엘리먼트들 (예를 들어, 프로세서, 디스크 스토리지, 메모리, 입력 포트들/출력 포트들, 네트워크 포트들, 등) 을 연결하는 공유된 도관이다. 컴퓨터 (50, 60) 에 다양한 입력 디바이스들 및 출력 디바이스들 (예를 들어, 키보드, 마우스, 디스플레이들, 프린터들, 스피커들, 등) 을 연결하기 위한 I/O 디바이스 인터페이스 (82) 가 시스템 버스 (79) 에 부착된다. 네트워크 인터페이스 (86) 는 컴퓨터로 하여금 네트워크 (예를 들어, 도 9의 네트워크 (70)) 에 부착된 다양한 다른 디바이스들에 연결되게 한다. 메모리 (90) 는 본 발명의 실시예 (예를 들어, 본 명세서게 기술된 해결 클라이언트 및 분석 엔진 엘리먼트들) 를 구현하기 위해 사용된 컴퓨터 소프트웨어 인스트럭션들 (92) 및 데이터 (94) 를 위한 휘발성 스토리지를 제공한다. 디스크 스토리지 (95) 는 본 발명의 실시예를 구현하도록 사용된 컴퓨터 소프트웨어 인스트럭션들 (92) 및 데이터 (94) 를 위한 비휘발성 스토리지를 제공한다. CPU (84) 는 또한 시스템 버스 (79) 에 부착되고 컴퓨터 인스트럭션들의 실행을 제공한다.
본 발명이 예시적인 실시예들을 참조하여 구체적으로 도시되고 기술되었지만, 형태 및 상세들의 다양한 변경들이 첨부된 청구항들에 의해 포괄된 본 발명의 범위를 벗어나지 않고 이루어질 수도 있다는 것이 당업자에 의해 이해될 것이다.
Claims (115)
- 로딩 시간 동안 컴퓨터 애플리케이션의 모델을 추출하는 단계로서, 상기 모델을 추출하는 단계는,
인스트럭션 어드레스들을 타깃 어드레스들 각각에 매핑하는 어드레스 트랜지션들을 식별하는 단계; 및
식별된 간접 어드레스 트랜지션을 상기 모델에 추가하는 단계―상기 식별된 간접 어드레스 트랜지션은 런타임까지 결정될 수 없는 타깃 어드레스 각각을 가짐―, 및 상기 타깃 어드레스 각각이 결정될 수 있는 경우 상기 모델에 상기 타깃 어드레스 각각을 추가하는 단계를 포함하는, 상기 모델을 추출하는 단계;
상기 컴퓨터 애플리케이션의 상기 모델을 저장하는 단계;
런타임에 데이터를 수집하도록, 상기 추출된 모델의 결정가능한 타깃 어드레스 각각 및 상기 인스트럭션 어드레스들에 하나 이상의 수집 인스트럭션들을 삽입하는 단계를 포함하는, 상기 컴퓨터 애플리케이션에 상기 하나 이상의 수집 인스트럭션들을 삽입하는 단계;
하나 이상의 보안 이벤트들을 검출하도록, 상기 어드레스 트랜지션들 및 상기 타깃 어드레스들을 포함하는, 상기 컴퓨터 애플리케이션의 상기 저장된 모델에 대한 상기 런타임에 수집된 데이터를 분석하는 단계; 및
상태 머신을 사용하여 상기 하나 이상의 보안 이벤트들을 추적하는 단계를 포함하는, 컴퓨터 구현된 방법. - 제 1 항에 있어서,
상기 런타임에 수집된 데이터는 상기 컴퓨터 애플리케이션의 하나 이상의 쓰레드들에 대한 데이터를 포함하는, 컴퓨터 구현된 방법. - 제 1 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 단계는 상기 보안 이벤트들에 대한 포렌식 (forensic) 데이터를 캡처하는 단계를 포함하는, 컴퓨터 구현된 방법. - 제 1 항에 있어서,
상기 하나 이상의 보안 이벤트들은 보안 레벨들을 사용하여 추적되는, 컴퓨터 구현된 방법. - 로딩 시간 동안 컴퓨터 애플리케이션의 모델을 추출하는 단계로서, 상기 모델을 추출하는 단계는,
인스트럭션 어드레스들을 타깃 어드레스들 각각에 매핑하는 어드레스 트랜지션들을 식별하는 단계; 및
식별된 간접 어드레스 트랜지션을 상기 모델에 추가하는 단계―상기 식별된 간접 어드레스 트랜지션은 런타임까지 결정될 수 없는 타깃 어드레스 각각을 가짐― 및, 상기 타깃 어드레스 각각이 결정될 수 있는 경우 상기 모델에 상기 타깃 어드레스 각각을 추가하는 단계를 포함하는, 상기 모델을 추출하는 단계;
상기 컴퓨터 애플리케이션의 상기 모델을 저장하는 단계; 및
런타임에 데이터를 수집하도록, 상기 추출된 모델의 결정가능한 타깃 어드레스 각각 및 상기 인스트럭션 어드레스들에 하나 이상의 수집 인스트럭션들을 삽입하는 단계를 포함하는, 상기 컴퓨터 애플리케이션에 상기 하나 이상의 수집 인스트럭션들을 삽입하는 단계를 포함하는, 컴퓨터 구현된 방법. - 제 1 항 또는 제 5 항에 있어서,
상기 컴퓨터 애플리케이션의 상기 모델을 추출하는 단계는, 상기 컴퓨터 애플리케이션으로부터 메모리 맵핑 데이터를 추출하는 단계, 상기 컴퓨터 애플리케이션으로부터 약점 데이터를 추출하는 단계, 및 상기 컴퓨터 애플리케이션에 의해 참조된 OS 기능들 및 시스템 호출들을 추출하는 단계 중 하나 이상을 포함하는, 컴퓨터 구현된 방법. - 제 1 항 또는 제 5 항에 있어서,
상기 컴퓨터 애플리케이션의 상기 모델을 추출하는 단계는 코드 디스어셈블러를 사용하여 적어도 부분적으로 달성되는, 컴퓨터 구현된 방법. - 제 1 항 또는 제 5 항에 있어서,
상기 컴퓨터 애플리케이션은 바이너리 포맷 또는 인터프리팅된 포맷인, 컴퓨터 구현된 방법. - 제 1 항 또는 제 5 항에 있어서,
로딩 시간 동안 상기 컴퓨터 애플리케이션의 무결성을 체크하는 단계를 더 포함하는, 컴퓨터 구현된 방법. - 제 9 항에 있어서,
상기 컴퓨터 애플리케이션의 무결성을 체크하는 단계는 체크섬을 계산하는 단계를 포함하는, 컴퓨터 구현된 방법. - 제 1 항 또는 제 5 항에 있어서,
상기 모델을 저장하는 단계는 상기 컴퓨터 애플리케이션을 모델링하기 위해 하나 이상의 테이블들을 포함하는 데이터베이스 내에 상기 모델을 저장하는 단계를 포함하는, 컴퓨터 구현된 방법. - 제 1 항 또는 제 5 항에 있어서,
상기 모델을 저장하는 단계는 원격 시스템 상의 데이터베이스 내에 상기 모델을 저장하는 단계를 포함하는, 컴퓨터 구현된 방법. - 제 1 항에 있어서,
송신을 위해 상기 컴퓨터 애플리케이션의 상기 모델을 패키징하는 단계를 더 포함하는, 컴퓨터 구현된 방법. - 제 1 항 또는 제 5 항에 있어서,
상기 컴퓨터 애플리케이션 내에 인스트럭션들을 삽입하는 단계는 동적 바이너리 분석 엔진 또는 BCI 엔진을 사용하여 적어도 부분적으로 달성되는, 컴퓨터 구현된 방법. - 제 5 항에 있어서,
하나 이상의 프로세스들로의 송신을 위해 상기 런타임에 수집된 데이터를 패키징하는 단계를 더 포함하는, 컴퓨터 구현된 방법. - 제 15 항에 있어서,
상기 하나 이상의 프로세스들은 원격 시스템 상의 프로세스들인, 컴퓨터 구현된 방법. - 제 13 항 또는 제 15 항에 있어서,
상기 송신을 보장하기 위해 상기 송신 내에 카나리아를 위치시키는 단계를 더 포함하는, 컴퓨터 구현된 방법. - 제 5 항에 있어서,
상기 런타임에 수집된 데이터는 상기 컴퓨터 애플리케이션의 쓰레드 각각에 대한 데이터를 포함하는, 컴퓨터 구현된 방법. - 하나 이상의 보안 이벤트들을 검출하기 위해 컴퓨터 애플리케이션의 저장된 모델에 대한 상기 컴퓨터 애플리케이션의 런타임에 수집된 데이터를 분석하는 단계로서, 상기 저장된 모델은 (i) 인스트럭션 어드레스들을 타깃 어드레스들 각각에 매핑하는 간접 어드레스 트랜지션들―상기 간접 어드레스 트랜지션들은 런타임까지 결정 수 없는 타깃 어드레스들 각각을 가짐―, 및 (ii) 상기 타깃 어드레스들 각각이 결정될 수 있는 경우 상기 타깃 어드레스들 각각을 포함하는, 상기 데이터를 분석하는 단계; 및
상태 머신을 사용하여 상기 하나 이상의 보안 이벤트들을 추적하는 단계를 포함하는, 컴퓨터 구현된 방법. - 제 19 항에 있어서,
원격 시스템 상에서의 프로세스로부터 상기 런타임에 수집된 데이터를 수신하는 단계를 더 포함하는, 컴퓨터 구현된 방법. - 제 19 항에 있어서,
원격 시스템 상에서의 프로세스로부터 상기 컴퓨터 애플리케이션의 상기 저장된 모델을 수신하는 단계를 더 포함하는, 컴퓨터 구현된 방법. - 제 1 항 또는 제 19 항에 있어서,
상기 컴퓨터 애플리케이션의 상기 저장된 모델에 대하여 런타임에 대해 수집된 상기 데이터를 분석하는 단계는 OS 기능들을 분석하는 단계, 시스템 호출들을 분석하는 단계, 메모리 기록들을 분석하는 단계, 및 약점 데이터를 분석하는 단계 중 하나 이상을 포함하는, 컴퓨터 구현된 방법. - 제 1 항 또는 제 19 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 단계는 미리 규정된 시퀀스에 기초하여 상기 하나 이상의 보안 이벤트들을 상관시키는 단계를 포함하는, 컴퓨터 구현된 방법. - 제 23 항에 있어서,
상기 미리 규정된 시퀀스는 불변의 체인에 기초하는, 컴퓨터 구현된 방법. - 제 19 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 단계는 포렌식 데이터를 캡처하는 단계를 포함하는, 컴퓨터 구현된 방법. - 제 19 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 단계는 보안 레벨들의 이용을 포함하는, 컴퓨터 구현된 방법. - 제 1 항 또는 제 19 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 단계에 응답하여 하나 이상의 액션들을 취하는 단계를 더 포함하는, 컴퓨터 구현된 방법. - 제 27 항에 있어서,
상기 하나 이상의 액션들은 시스템에 의해 자동으로 취해지는, 컴퓨터 구현된 방법. - 제 27 항에 있어서,
상기 하나 이상의 액션들은 사용자에 의해 취해지는, 컴퓨터 구현된 방법. - 제 27 항에 있어서,
상기 하나 이상의 액션들은 임의의 상기 컴퓨터 애플리케이션을 종료하는 단계, 상기 컴퓨터 애플리케이션의 하나 이상의 쓰레드들을 종료하는 단계, 상기 컴퓨터 애플리케이션의 하나 이상의 쓰레드들 상의 소켓을 폐쇄하는 단계, 및 상기 하나 이상의 보안 이벤트들에 응답하여 경보를 발생시키는 단계 중 하나를 포함하는, 컴퓨터 구현된 방법. - 제 27 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 단계에 응답하여 취해진 상기 하나 이상의 액션들은 조정가능한, 컴퓨터 구현된 방법. - 로딩 시간 동안 컴퓨터 애플리케이션의 모델을 추출하도록 구성된 클라이언트로서, 상기 추출은 상기 클라이언트가,
인스트럭션 어드레스들을 타깃 어드레스들 각각에 매핑하는 어드레스 트랜지션들을 식별하는 구성; 및
식별된 간접 어드레스 트랜지션을 상기 모델에 추가하는 구성―상기 식별된 간접 어드레스 트랜지션은 런타임까지 결정될 수 없는 타깃 어드레스 각각을 가짐―, 및 상기 타깃 어드레스 각각이 결정될 수 있는 경우 상기 모델에 상기 타깃 어드레스 각각을 추가하는 구성을 포함하고,
상기 클라이언트는, 상기 컴퓨터 애플리케이션의 상기 모델을 저장하도록 더 구성되고;
상기 클라이언트는, 런타임에 데이터를 수집하기 위해, 상기 추출된 모델의 결정가능한 타깃 어드레스들 각각 및 상기 인스트럭션 어드레스들에 하나 이상의 수집 인스트럭션들을 삽입하는 구성을 포함하는, 상기 컴퓨터 애플리케이션 내에 상기 하나 이상의 수집 인스트럭션들을 삽입하도록 더 구성되는, 상기 클라이언트; 및
하나 이상의 보안 이벤트들을 검출하도록, 상기 어드레스 트랜지션들 및 상기 타깃 어드레스들을 포함하는, 상기 컴퓨터 애플리케이션의 상기 저장된 모델에 대해 런타임에 수집된 데이터를 분석하도록 구성된 분석 엔진으로서, 상태 머신을 사용하여 상기 하나 이상의 보안 이벤트들을 추적하도록 구성되는, 상기 분석 엔진을 포함하는, 시스템. - 제 32 항에 있어서,
상기 컴퓨터 애플리케이션의 상기 모델을 추출하는 것은 상기 컴퓨터 애플리케이션으로부터 메모리 맵핑 데이터를 추출하는 것, 상기 컴퓨터 애플리케이션으로부터 약점 데이터를 추출하는 것, 및 상기 컴퓨터 애플리케이션에 의해 참조된 OS 기능들 및 시스템 호출들을 추출하는 것 중 하나 이상을 포함하는, 시스템. - 제 32 항에 있어서,
상기 컴퓨터 애플리케이션의 상기 모델을 추출하는 것은 코드 디스어셈블러를 사용하여 적어도 부분적으로 달성되는, 시스템. - 제 32 항에 있어서,
상기 컴퓨터 애플리케이션은 바이너리 포맷 또는 인터프리팅된 포맷인, 시스템. - 제 32 항에 있어서,
로딩 시간 동안 상기 컴퓨터 애플리케이션의 무결성을 체크하도록 더 구성된 클라이언트를 더 포함하는, 시스템. - 제 36 항에 있어서,
상기 컴퓨터 애플리케이션의 무결성을 체크하는 것은 체크섬을 계산하는 것을 포함하는, 시스템. - 제 32 항에 있어서,
상기 모델을 저장하는 것은 상기 컴퓨터 애플리케이션을 모델링하기 위해 하나 이상의 테이블들을 포함하는 데이터베이스 내에 상기 모델을 저장하는 것을 포함하는, 시스템. - 제 38 항에 있어서,
상기 모델을 저장하는 것은 원격 시스템 상의 데이터베이스 내에 상기 모델을 저장하는 것을 포함하는, 시스템. - 제 39 항에 있어서,
상기 클라이언트는 상기 데이터베이스 내에 저장하기 위해 상기 원격 시스템으로의 송신을 위해 상기 컴퓨터 애플리케이션의 상기 모델을 패키징하도록 더 구성되는, 시스템. - 제 32 항에 있어서,
상기 컴퓨터 애플리케이션 내에 인스트럭션들을 삽입하는 것은 동적 바이너리 분석 엔진 또는 BCI 엔진을 사용하여 적어도 부분적으로 달성되는, 시스템. - 제 32 항에 있어서,
상기 클라이언트는 상기 분석 엔진으로의 송신을 위해 상기 런타임에 수집된 데이터를 패키징하도록 더 구성되는, 시스템. - 제 40 항 또는 제 42 항에 있어서,
상기 클라이언트는 상기 송신을 보장하기 위해 상기 송신 내에 카나리아를 위치시키도록 더 구성되는, 시스템. - 제 42 항에 있어서,
상기 분석 엔진으로의 상기 송신은 상기 클라이언트와 상기 분석 엔진 간의 이송 채널 상에서 수집된 상기 데이터를 전송하는 것을 포함하는, 시스템. - 제 32 항에 있어서,
상기 런타임에 수집된 데이터는 상기 컴퓨터 애플리케이션의 하나 이상의 쓰레드들에 대한 데이터를 포함하는, 시스템. - 제 32 항에 있어서,
상기 컴퓨터 애플리케이션의 상기 저장된 모델에 대해 상기 런타임에 수집된 데이터를 분석하는 것은 시스템 호출들을 분석하는 것, 메모리 기록들을 분석하는 것, 및 약점 데이터를 분석하는 것 중 하나 이상을 포함하는, 시스템. - 제 32 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 것은 미리 규정된 시퀀스에 기초하여 상기 하나 이상의 보안 이벤트들을 상관시키는 것을 포함하는, 시스템. - 제 47 항에 있어서,
상기 미리 규정된 시퀀스는 불변의 체인에 기초하는, 시스템. - 제 32 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 것은 상기 보안 이벤트들에 대한 포렌식 데이터를 캡처하는 것을 포함하는, 시스템. - 제 32 항에 있어서,
상기 하나 이상의 보안 이벤트들은 보안 레벨들을 사용하여 추적되는, 시스템. - 제 32 항에 있어서,
상기 클라이언트는 상기 하나 이상의 보안 이벤트들을 추적하는 것에 응답하여 하나 이상의 액션들을 취하도록 더 구성되는, 시스템. - 제 51 항에 있어서,
상기 하나 이상의 액션들은 자동으로 취해지는, 시스템. - 제 51 항에 있어서,
상기 하나 이상의 액션들은 사용자에 의해 취해지는, 시스템. - 제 51 항에 있어서,
상기 하나 이상의 액션들은 임의의 상기 컴퓨터 애플리케이션을 종료하는 것, 상기 컴퓨터 애플리케이션의 하나 이상의 쓰레드들을 종료하는 것, 상기 컴퓨터 애플리케이션의 하나 이상의 쓰레드들 상의 소켓을 폐쇄하는 것, 및 상기 하나 이상의 보안 이벤트들에 응답하여 경보를 발생시키는 것 중 하나을 포함하는, 시스템. - 제 51 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 것에 응답하여 취해진 상기 하나 이상의 액션들은 조정가능한, 시스템. - 제 32 항에 있어서,
상기 클라이언트 및 상기 분석 엔진 중 적어도 하나는 스마트폰, 태블릿, 랩탑, 데스크탑들, 및 하이엔드 서버 중 어느 하나 상에서 실행되도록 구성되는, 시스템. - 제 32 항에 있어서,
상기 분석 엔진은 하나 이상의 프로세서들을 포함하는 프로세서 패브릭 (processor fabric) 을 포함하는, 시스템. - 제 32 항에 있어서,
상기 클라이언트는 상기 하나 이상의 프로세스들이 사망하거나 무반응이 되면 상기 클라이언트의 하나 이상의 프로세스들을 재시작하도록 구성된 클라이언트 데몬 (client daemon) 을 포함하는, 시스템. - 제 32 항에 있어서,
상기 분석 엔진은 상기 하나 이상의 프로세스들이 사망하거나 무반응이 되면 분석 엔진의 하나 이상의 프로세스들을 재시작하도록 구성된 애플리케이션 데몬을 포함하는, 시스템. - 제 32 항에 있어서,
상기 분석 엔진은 상기 컴퓨터 애플리케이션의 상태를 디스플레이하도록 구성된 대시보드를 포함하는, 시스템. - 제 1 프로세스 및 제 2 프로세스를 실행하도록 구성된 프로세서를 포함하고,
상기 제 1 프로세스는 로딩 시간 동안 컴퓨터 애플리케이션의 모델을 추출하도록 구성되고, 상기 추출은 상기 제 1 프로세스가,
인스트럭션 어드레스들을 타깃 어드레스들 각각에 매핑하는 어드레스 트랜지션들을 식별하고; 그리고
식별된 간접 어드레스 트랜지션을 상기 모델에 추가하고―상기 식별된 간접 어드레스 트랜지션은 런타임까지 결정될 수 없는 타깃 어드레스 각각을 가짐―, 그리고 상기 타깃 어드레스 각각이 결정될 수 있는 경우 상기 모델에 상기 타깃 어드레스 각각을 추가하는 구성을 포함하고,
상기 제 1 프로세스는 상기 컴퓨터 애플리케이션의 상기 모델을 저장하도록 더 구성되고, 그리고
상기 제 2 프로세스는 런타임에 데이터를 수집하도록, 상기 추출된 모델의 결정가능한 타깃 어드레스들 각각 및 상기 인스트럭션 어드레스들에 하나 이상의 수집 인스트럭션들을 삽입하는 구성을 포함하는, 상기 컴퓨터 애플리케이션 내에 상기 하나 이상의 수집 인스트럭션들을 삽입하도록 구성되는, 장치. - 제 61 항에 있어서,
상기 컴퓨터 애플리케이션의 상기 모델을 추출하는 것은 상기 컴퓨터 애플리케이션으로부터 메모리 맵핑 데이터를 추출하는 것, 상기 컴퓨터 애플리케이션으로부터 약점 데이터를 추출하는 것, 및 상기 컴퓨터 애플리케이션에 의해 참조된 OS 기능들 및 시스템 호출들을 추출하는 것 중 하나 이상을 포함하는, 장치. - 제 61 항에 있어서,
상기 컴퓨터 애플리케이션의 상기 모델을 추출하는 것은 코드 디스어셈블러를 사용하여 적어도 부분적으로 달성되는, 장치. - 제 61 항에 있어서,
상기 컴퓨터 애플리케이션은 바이너리 포맷 또는 인터프리팅된 포맷인, 장치. - 제 61 항에 있어서,
로딩 시간 동안 상기 컴퓨터 애플리케이션의 무결성을 체크하도록 구성된 제 3 프로세스를 더 포함하는, 장치. - 제 65 항에 있어서,
상기 컴퓨터 애플리케이션의 무결성을 체크하는 것은 체크섬을 계산하는 것을 포함하는, 장치. - 제 61 항에 있어서,
상기 모델을 저장하는 구성은 상기 모델을, 상기 컴퓨터 애플리케이션을 모델링하기 위해 하나 이상의 테이블들을 포함하는 데이터베이스에 저장하는 구성을 포함하는, 장치. - 제 67 항에 있어서,
데이터베이스는 원격 시스템 상에 있는, 장치. - 제 68 항에 있어서,
상기 데이터베이스 내에 저장하기 위해 상기 원격 시스템으로의 송신을 위해 상기 컴퓨터 애플리케이션의 상기 모델을 패키징하는 상기 제 1 프로세스를 더 포함하는, 장치. - 제 69 항에 있어서,
상기 제 1 프로세스는 상기 송신을 보장하기 위해 상기 송신 내에 카나리아를 위치시키도록 더 구성되는, 장치. - 제 61 항에 있어서,
상기 컴퓨터 애플리케이션 내에 인스트럭션들을 삽입하는 것은 동적 바이너리 분석 엔진 또는 BCI 엔진을 사용하여 적어도 부분적으로 달성되는, 장치. - 제 61 항에 있어서,
하나 이상의 프로세스들로의 송신 동안 상기 런타임에 수집된 데이터를 패키징하도록 구성된 제 3 프로세스를 더 포함하는, 장치. - 제 72 항에 있어서,
상기 하나 이상의 프로세스들은 원격 시스템 상에 있는, 장치. - 제 72 항에 있어서,
상기 제 3 프로세스는 상기 송신을 보장하도록 상기 송신 내로 카나리아를 위치시키도록 더 구성되는, 장치. - 제 61 항에 있어서,
상기 런타임에 수집된 데이터는 상기 컴퓨터 애플리케이션의 쓰레드 각각에 대한 데이터를 포함하는, 장치. - 제 1 프로세스 및 제 2 프로세스를 실행하도록 구성된 프로세서를 포함하고,
상기 제 1 프로세스는 하나 이상의 보안 이벤트들을 검출하도록 컴퓨터 애플리케이션의 저장된 모델에 대해 상기 컴퓨터 애플리케이션의 런타임에서 수집된 데이터를 분석하도록 구성되고, 상기 저장된 모델은 (i) 인스트럭션 어드레스들을 타깃 어드레스들 각각에 매핑하는 간접 어드레스 트랜지션들―상기 간접 어드레스 트랜지션들은 런타임까지 결정 수 없는 타깃 어드레스들 각각을 가짐―, 및 (ii) 상기 타깃 어드레스들 각각이 결정될 수 있는 경우 상기 타깃 어드레스들 각각을 포함하며, 그리고
상기 제 2 프로세스는 상태 머신을 사용하여 상기 하나 이상의 보안 이벤트들을 추적하도록 구성되는, 장치. - 제 76 항에 있어서,
상기 런타임에 수집된 데이터는 원격 시스템 상의 프로세스로부터 수신되는, 장치. - 제 76 항에 있어서,
상기 컴퓨터 애플리케이션의 상기 저장된 모델은 원격 시스템 상의 프로세스로부터 수신되는, 장치. - 제 76 항에 있어서,
상기 컴퓨터 애플리케이션의 상기 저장된 모델에 대해 상기 런타임에 수집된 데이터를 분석하는 것은 OS 기능들을 분석하는 것, 시스템 호출들을 분석하는 것, 메모리 기록들을 분석하는 것, 및 약점 데이터를 분석하는 것 중 하나 이상을 포함하는, 장치. - 제 76 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 것은 미리 규정된 시퀀스에 기초하여 상기 하나 이상의 보안 이벤트들을 상관시키는 것을 포함하는, 장치. - 제 80 항에 있어서,
상기 미리 규정된 시퀀스는 불변의 체인에 기초하는, 장치. - 제 76 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 것은 포렌식 데이터를 캡처하는 것을 포함하는, 장치. - 제 76 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 것은 보안 레벨들의 사용을 포함하는, 장치. - 제 76 항에 있어서,
상기 프로세서는 상기 하나 이상의 보안 이벤트들을 추적하는 것에 응답하여 하나 이상의 액션들을 취하도록 구성된 제 3 프로세스를 실행하도록 더 구성되는, 장치. - 제 84 항에 있어서,
상기 하나 이상의 액션들은 자동으로 취해지는, 장치. - 제 84 항에 있어서,
상기 하나 이상의 액션들은 사용자에 의해 취해지는, 장치. - 제 84 항에 있어서,
상기 하나 이상의 액션들은 임의의 상기 컴퓨터 애플리케이션을 종료하는 것, 상기 컴퓨터 애플리케이션의 하나 이상의 쓰레드들을 종료하는 것, 상기 컴퓨터 애플리케이션의 하나 이상의 쓰레드들 상의 소켓을 폐쇄하는 것, 및 상기 하나 이상의 보안 이벤트들에 응답하여 경보를 발생하는 것 중 하나를 포함하는, 장치. - 제 84 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 것에 응답하여 취해진 상기 하나 이상의 액션들은 조정가능한, 장치. - 제 1 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 단계는 심각도와 연관된 하나 이상의 새로운 보안 이벤트들 및 상기 상태 머신을 사용하여 추적하기 위한 액션들을 부가하는 단계를 더 포함하는, 컴퓨터 구현된 방법. - 제 19 항에 있어서,
상기 하나 이상의 보안 이벤트들을 추적하는 단계는 심각도와 연관된 하나 이상의 새로운 보안 이벤트들 및 상기 상태 머신을 사용하여 추적하기 위한 액션들을 부가하는 단계를 더 포함하는, 컴퓨터 구현된 방법. - 제 32 항에 있어서,
상기 클라이언트는 심각도와 연관된 하나 이상의 새로운 보안 이벤트들 및 상기 상태 머신을 사용하여 추적하기 위한 액션들을 부가하도록 더 구성되는, 시스템. - 제 76 항에 있어서,
상기 제 2 프로세스는 심각도와 연관된 하나 이상의 새로운 보안 이벤트들 및 상기 상태 머신을 사용하여 추적하기 위한 액션들을 부가하도록 더 구성되는, 장치. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361960209P | 2013-09-12 | 2013-09-12 | |
US61/960,209 | 2013-09-12 | ||
PCT/US2014/055469 WO2015038944A1 (en) | 2013-09-12 | 2014-09-12 | Automated runtime detection of malware |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160114037A KR20160114037A (ko) | 2016-10-04 |
KR102368170B1 true KR102368170B1 (ko) | 2022-02-25 |
Family
ID=51619322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167009506A KR102368170B1 (ko) | 2013-09-12 | 2014-09-12 | 멀웨어의 자동화된 런타임 검출 |
Country Status (7)
Country | Link |
---|---|
US (2) | US10079841B2 (ko) |
EP (1) | EP3044719B1 (ko) |
JP (2) | JP2016534479A (ko) |
KR (1) | KR102368170B1 (ko) |
AU (3) | AU2014318585B2 (ko) |
CA (1) | CA2923231C (ko) |
WO (1) | WO2015038944A1 (ko) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510596B1 (en) | 2006-02-09 | 2013-08-13 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
JP2016534479A (ja) | 2013-09-12 | 2016-11-04 | ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. | マルウェアのランタイム中の自動検出 |
WO2015200508A1 (en) | 2014-06-24 | 2015-12-30 | Virsec Systems, Inc | Automated root cause analysis of single or n-tiered applications |
WO2015200511A1 (en) | 2014-06-24 | 2015-12-30 | Virsec Systems, Inc. | System and methods for automated detection of input and output validation and resource management vulnerability |
US10073972B2 (en) | 2014-10-25 | 2018-09-11 | Mcafee, Llc | Computing platform security methods and apparatus |
US9690928B2 (en) * | 2014-10-25 | 2017-06-27 | Mcafee, Inc. | Computing platform security methods and apparatus |
US9516055B1 (en) | 2015-05-29 | 2016-12-06 | Trend Micro Incorporated | Automatic malware signature extraction from runtime information |
US10783241B2 (en) * | 2015-10-28 | 2020-09-22 | Qomplx, Inc. | System and methods for sandboxed malware analysis and automated patch development, deployment and validation |
US10108798B1 (en) * | 2016-01-04 | 2018-10-23 | Smart Information Flow Technologies LLC | Methods and systems for defending against cyber-attacks |
CA3027728A1 (en) | 2016-06-16 | 2017-12-21 | Virsec Systems, Inc. | Systems and methods for remediating memory corruption in a computer application |
CN107545178B (zh) | 2016-06-23 | 2021-01-15 | 华为技术有限公司 | 一种云应用的检测方法及云应用检测装置 |
US10289847B2 (en) * | 2016-07-29 | 2019-05-14 | Qualcomm Incorporated | Updating virtual memory addresses of target application functionalities for an updated version of application binary code |
US10372909B2 (en) * | 2016-08-19 | 2019-08-06 | Hewlett Packard Enterprise Development Lp | Determining whether process is infected with malware |
US10346625B2 (en) | 2016-10-31 | 2019-07-09 | International Business Machines Corporation | Automated mechanism to analyze elevated authority usage and capability |
US9928365B1 (en) | 2016-10-31 | 2018-03-27 | International Business Machines Corporation | Automated mechanism to obtain detailed forensic analysis of file access |
US10599845B2 (en) * | 2016-12-13 | 2020-03-24 | Npcore, Inc. | Malicious code deactivating apparatus and method of operating the same |
US10303861B2 (en) * | 2017-01-26 | 2019-05-28 | Immunant, Inc. | Software diversification in external contexts |
US10225273B2 (en) | 2017-01-27 | 2019-03-05 | International Business Machines Corporation | Secured event monitoring leveraging blockchain |
US10783246B2 (en) | 2017-01-31 | 2020-09-22 | Hewlett Packard Enterprise Development Lp | Comparing structural information of a snapshot of system memory |
US10650156B2 (en) | 2017-04-26 | 2020-05-12 | International Business Machines Corporation | Environmental security controls to prevent unauthorized access to files, programs, and objects |
US10523694B2 (en) * | 2017-05-11 | 2019-12-31 | Bitdam Ltd | System and method for interception of malicious files |
US11615338B2 (en) * | 2017-07-24 | 2023-03-28 | Bitdam Ltd. | System and method for generating a file execution record of address tuples |
US10621348B1 (en) * | 2017-08-15 | 2020-04-14 | Ca, Inc. | Detecting a malicious application executing in an emulator based on a check made by the malicious application after making an API call |
WO2019039617A1 (ko) * | 2017-08-21 | 2019-02-28 | 주식회사 스패로우 | 웹 애플리케이션의 동적 분석을 위한 api 호출 정보 제공 방법 및 장치 |
US10990975B2 (en) * | 2017-11-08 | 2021-04-27 | Paypal, Inc. | Detecting malware by monitoring client-side memory stacks |
KR101976992B1 (ko) | 2017-11-16 | 2019-05-10 | 숭실대학교산학협력단 | 시그니처 추출을 이용한 분석회피기법 자동 인식 장치 및 그 방법 |
CN107967328B (zh) * | 2017-11-24 | 2021-04-02 | 四川长虹电器股份有限公司 | 解决Hessian导致hibernate不兼容的方法 |
US11157611B2 (en) * | 2018-01-02 | 2021-10-26 | Blackberry Limited | Binary image stack cookie protection |
US11392686B2 (en) * | 2018-01-02 | 2022-07-19 | Blackberry Limited | Detecting stack cookie utilization in a binary software component using binary static analysis |
CN108768648B (zh) * | 2018-03-15 | 2021-03-23 | 兴业数字金融服务(上海)股份有限公司 | 一种层层加密的区块链事件链安全存证实现方法及系统 |
US11416612B2 (en) * | 2018-03-16 | 2022-08-16 | Acronis International Gmbh | Protecting against malware code injections in trusted processes |
US11494491B2 (en) * | 2018-03-16 | 2022-11-08 | Acronis International Gmbh | Systems and methods for protecting against malware code injections in trusted processes by a multi-target injector |
US10984110B2 (en) | 2018-03-20 | 2021-04-20 | ReFirm Labs, Inc. | Evaluation of security of firmware |
US10943015B2 (en) * | 2018-03-22 | 2021-03-09 | ReFirm Labs, Inc. | Continuous monitoring for detecting firmware threats |
US11962606B2 (en) * | 2018-04-04 | 2024-04-16 | Twistlock Ltd. | Protecting serverless applications |
US11146590B2 (en) * | 2018-04-19 | 2021-10-12 | Ncr Corporation | Omni-channel end-point security |
US10735262B1 (en) * | 2018-04-26 | 2020-08-04 | Intuit Inc. | System and method for self-orchestrated canary release deployment within an API gateway architecture |
US10740457B2 (en) * | 2018-06-20 | 2020-08-11 | International Business Machines Corporation | System for preventing malicious operator placement in streaming applications |
US10897483B2 (en) * | 2018-08-10 | 2021-01-19 | International Business Machines Corporation | Intrusion detection system for automated determination of IP addresses |
US10929536B2 (en) * | 2018-09-14 | 2021-02-23 | Infocyte, Inc. | Detecting malware based on address ranges |
US11231948B2 (en) | 2018-10-18 | 2022-01-25 | Sternum Ltd. | Applying security mitigation measures for stack corruption exploitation in intermediate code files |
EP3864545A4 (en) | 2018-10-29 | 2022-06-15 | Sternum Ltd. | DYNAMIC MEMORY PROTECTION |
US10705814B2 (en) * | 2018-11-30 | 2020-07-07 | Grammatech, Inc. | Systems and/or methods for generating reassemblable disassemblies of binaries using declarative logic |
US20200293654A1 (en) * | 2019-03-12 | 2020-09-17 | Universal City Studios Llc | Security appliance extension |
CN110046504B (zh) * | 2019-04-22 | 2021-04-06 | 北京智游网安科技有限公司 | 基于Linker的SO文件隐藏方法、储存介质及装置 |
US11108790B1 (en) * | 2019-04-30 | 2021-08-31 | Rapid7, Inc. | Attack signature generation |
US11770388B1 (en) * | 2019-12-09 | 2023-09-26 | Target Brands, Inc. | Network infrastructure detection |
US12093414B1 (en) * | 2019-12-09 | 2024-09-17 | Amazon Technologies, Inc. | Efficient detection of in-memory data accesses and context information |
KR20210112923A (ko) | 2020-03-06 | 2021-09-15 | 삼성전자주식회사 | 시스템 온 칩 및 이의 동작 방법 |
US11768933B2 (en) * | 2020-08-11 | 2023-09-26 | Saudi Arabian Oil Company | System and method for protecting against ransomware without the use of signatures or updates |
WO2022133474A1 (en) | 2020-12-16 | 2022-06-23 | Virsec Systems, Inc. | Software build system protection engine |
US11455388B1 (en) * | 2021-04-26 | 2022-09-27 | Weeve.Network | System and method for end-to-end data trust management with real-time attestation |
US20220366048A1 (en) * | 2021-04-29 | 2022-11-17 | Dipankar Dasgupta | Ai-powered advanced malware detection system |
US20220358222A1 (en) * | 2021-05-10 | 2022-11-10 | Insyde Software Corp. | System And Method For Firmware Security Event Mitigation |
LU500189B1 (en) * | 2021-05-21 | 2022-11-21 | Microsoft Technology Licensing Llc | Using entropy to prevent inclusion of payload data in code execution log data |
CN114338806B (zh) * | 2022-02-28 | 2022-06-21 | 湖南云畅网络科技有限公司 | 一种同步消息处理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003330736A (ja) * | 2002-05-08 | 2003-11-21 | Nippon Telegr & Teleph Corp <Ntt> | 不正リソース利用防止システム及びその方法並びにプログラム |
JP2005276185A (ja) * | 2004-02-24 | 2005-10-06 | Microsoft Corp | ソフトウェアの脆弱性の悪用を防止するように通信をフィルタ処理するための方法およびシステム |
JP2008129714A (ja) * | 2006-11-17 | 2008-06-05 | Univ Of Tsukuba | 異常検知方法、異常検知装置及び異常検知用プログラム並びに学習モデル生成方法 |
WO2010067703A1 (ja) * | 2008-12-08 | 2010-06-17 | 日本電気株式会社 | データ依存関係解析装置、情報処理装置、データ依存関係解析方法、及びプログラム |
JP2011059930A (ja) * | 2009-09-09 | 2011-03-24 | Nec Computertechno Ltd | 電源ユニット |
Family Cites Families (214)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4215406A (en) | 1972-08-22 | 1980-07-29 | Westinghouse Electric Corp. | Digital computer monitored and/or operated system or process which is structured for operation with an improved automatic programming process and system |
US4080650A (en) | 1976-07-28 | 1978-03-21 | Bell Telephone Laboratories, Incorporated | Facilitating return from an on-line debugging program to a target program breakpoint |
US4466077A (en) | 1981-09-25 | 1984-08-14 | International Business Machines Corporation | Method and apparatus for division employing associative memory |
JPS59216249A (ja) | 1983-05-23 | 1984-12-06 | Toshiba Corp | 集積回路装置 |
GB8511995D0 (en) | 1985-05-11 | 1985-06-19 | Ross S R | Software protection |
US4803720A (en) | 1986-09-22 | 1989-02-07 | International Business Machines Corporation | Dual plane cross point switch architecture for a micro-PBX |
US5224160A (en) * | 1987-02-23 | 1993-06-29 | Siemens Nixdorf Informationssysteme Ag | Process for securing and for checking the integrity of the secured programs |
US5222220A (en) | 1989-11-16 | 1993-06-22 | Mehta Hemang S | Microprocessor stack built-in guards |
JP2839201B2 (ja) | 1990-07-30 | 1998-12-16 | 株式会社日立製作所 | 仮想計算機システム |
US5235551A (en) | 1991-01-08 | 1993-08-10 | Pacific Data Products, Inc. | Memory addressing scheme |
US5297274A (en) | 1991-04-15 | 1994-03-22 | International Business Machines Corporation | Performance analysis of program in multithread OS by creating concurrently running thread generating breakpoint interrupts to active tracing monitor |
US5321828A (en) | 1991-06-07 | 1994-06-14 | Step Engineering | High speed microcomputer in-circuit emulator |
US5359659A (en) | 1992-06-19 | 1994-10-25 | Doren Rosenthal | Method for securing software against corruption by computer viruses |
US5440723A (en) * | 1993-01-19 | 1995-08-08 | International Business Machines Corporation | Automatic immune system for computers and computer networks |
US5784552A (en) | 1993-07-28 | 1998-07-21 | Digital Equipment Corporation | Debugging a computer program by simulating execution forwards and backwards in a main history log and alternative history logs |
US5611043A (en) | 1994-03-18 | 1997-03-11 | Borland International, Inc. | Debugger system and method for controlling child processes |
US5630048A (en) | 1994-05-19 | 1997-05-13 | La Joie; Leslie T. | Diagnostic system for run-time monitoring of computer operations |
JP3360933B2 (ja) | 1994-06-01 | 2003-01-07 | 富士通株式会社 | 情報処理システムにおける記憶制御方法および記憶制御装置 |
US5826012A (en) | 1995-04-21 | 1998-10-20 | Lettvin; Jonathan D. | Boot-time anti-virus and maintenance facility |
US5684948A (en) | 1995-09-01 | 1997-11-04 | National Semiconductor Corporation | Memory management circuit which provides simulated privilege levels |
US6151618A (en) | 1995-12-04 | 2000-11-21 | Microsoft Corporation | Safe general purpose virtual machine computing system |
US5909580A (en) | 1996-02-08 | 1999-06-01 | Inprise Corporation | Development system and methods with direct compiler support for detecting invalid use and management of resources and memory at runtime |
US6119206A (en) | 1996-02-12 | 2000-09-12 | Sun Microsystems, Inc. | Design of tags for lookup of non-volatile registers |
EP0814404B1 (en) | 1996-06-19 | 2001-01-31 | Matsushita Electric Industrial Co., Ltd. | Debugging apparatus for debugging a program |
US5850559A (en) | 1996-08-07 | 1998-12-15 | Compaq Computer Corporation | Method and apparatus for secure execution of software prior to a computer system being powered down or entering a low energy consumption mode |
US6314558B1 (en) | 1996-08-27 | 2001-11-06 | Compuware Corporation | Byte code instrumentation |
GB9626401D0 (en) | 1996-12-19 | 1997-02-05 | Sgs Thomson Microelectronics | Diagnostic procedures in an integrated circuit device |
US5873124A (en) | 1997-02-06 | 1999-02-16 | Microsoft Corporation | Virtual memory scratch pages |
US5890005A (en) | 1997-06-02 | 1999-03-30 | Nokia Mobile Phones Limited | Low power, low interconnect complexity microprocessor and memory interface |
US6240501B1 (en) | 1997-09-05 | 2001-05-29 | Sun Microsystems, Inc. | Cache-less address translation |
US5983348A (en) * | 1997-09-10 | 1999-11-09 | Trend Micro Incorporated | Computer network malicious code scanner |
US6237137B1 (en) | 1997-10-15 | 2001-05-22 | Dell Usa, L.P. | Method and system for preventing unauthorized access to a computer program |
US6263489B1 (en) | 1998-04-30 | 2001-07-17 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code |
US6077312A (en) | 1998-05-06 | 2000-06-20 | International Business Machines Corporation | Apparatus, program product and method of debugging utilizing a context sensitive breakpoint |
US6178522B1 (en) | 1998-06-02 | 2001-01-23 | Alliedsignal Inc. | Method and apparatus for managing redundant computer-based systems for fault tolerant computing |
US6553429B1 (en) | 1998-06-05 | 2003-04-22 | Microsoft Corporation | Fast conditional thunk utility |
US6275893B1 (en) | 1998-09-14 | 2001-08-14 | Compaq Computer Corporation | Method and apparatus for providing seamless hooking and intercepting of selected kernel and HAL exported entry points in an operating system |
US6665316B1 (en) | 1998-09-29 | 2003-12-16 | Agilent Technologies, Inc. | Organization of time synchronization in a distributed system |
EP0992906B1 (en) | 1998-10-06 | 2005-08-03 | Texas Instruments Inc. | Apparatus and method for software breakpoint in a delay slot |
US7380245B1 (en) | 1998-11-23 | 2008-05-27 | Samsung Electronics Co., Ltd. | Technique for detecting corruption associated with a stack in a storage device |
US6782478B1 (en) | 1999-04-28 | 2004-08-24 | Thomas Probert | Techniques for encoding information in computer code |
US6981176B2 (en) | 1999-05-10 | 2005-12-27 | Delphi Technologies, Inc. | Secured microcontroller architecture |
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
WO2001022228A1 (en) | 1999-09-17 | 2001-03-29 | Nortel Networks Limited | System and method for producing a verification system for verifying procedure interfaces |
US6745160B1 (en) | 1999-10-08 | 2004-06-01 | Nec Corporation | Verification of scheduling in the presence of loops using uninterpreted symbolic simulation |
US20020009198A1 (en) | 2000-01-18 | 2002-01-24 | Lipton Richard J. | Method and systems for data security |
JP3552627B2 (ja) | 2000-02-04 | 2004-08-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体 |
US7376820B2 (en) | 2000-03-16 | 2008-05-20 | Fujitsu Limited | Information processing unit, and exception processing method for specific application-purpose operation instruction |
US6775780B1 (en) | 2000-03-16 | 2004-08-10 | Networks Associates Technology, Inc. | Detecting malicious software by analyzing patterns of system calls generated during emulation |
US6973577B1 (en) | 2000-05-26 | 2005-12-06 | Mcafee, Inc. | System and method for dynamically detecting computer viruses through associative behavioral analysis of runtime state |
US7539875B1 (en) | 2000-06-27 | 2009-05-26 | Microsoft Corporation | Secure repository with layers of tamper resistance and system and method for providing same |
US6895508B1 (en) | 2000-09-07 | 2005-05-17 | International Business Machines Corporation | Stack memory protection |
US6832373B2 (en) | 2000-11-17 | 2004-12-14 | Bitfone Corporation | System and method for updating and distributing information |
US7260845B2 (en) | 2001-01-09 | 2007-08-21 | Gabriel Kedma | Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems |
US6848044B2 (en) | 2001-03-08 | 2005-01-25 | International Business Machines Corporation | Circuits and methods for recovering link stack data upon branch instruction mis-speculation |
US20020138554A1 (en) | 2001-03-26 | 2002-09-26 | Motorola, Inc. | Method for remotely verifying software integrity |
US6993751B2 (en) | 2001-05-14 | 2006-01-31 | Microsoft Corporation | Placing exception throwing instructions in compiled code |
JP3702815B2 (ja) | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | プロセッサ間レジスタ継承方法及びその装置 |
US20030014667A1 (en) | 2001-07-16 | 2003-01-16 | Andrei Kolichtchak | Buffer overflow attack detection and suppression |
US7421587B2 (en) | 2001-07-26 | 2008-09-02 | Mcafee, Inc. | Detecting computer programs within packed computer files |
US20030188160A1 (en) | 2001-08-02 | 2003-10-02 | Singam Sunder | Method and system to securely update files via a network |
US7257763B1 (en) | 2001-08-03 | 2007-08-14 | Netlogic Microsystems, Inc. | Content addressable memory with error signaling |
GB2378778B (en) | 2001-08-13 | 2005-03-23 | Ibm | Computer system with heap and card table |
EP1246033A1 (de) | 2001-08-23 | 2002-10-02 | Siemens Aktiengesellschaft | Verfahren zur Überwachung konsistenter Speicherinhalte in redundanten Systemen |
US7853803B2 (en) | 2001-09-28 | 2010-12-14 | Verizon Corporate Services Group Inc. | System and method for thwarting buffer overflow attacks using encrypted process pointers |
US7526654B2 (en) | 2001-10-16 | 2009-04-28 | Marc Charbonneau | Method and system for detecting a secure state of a computer system |
US20030079158A1 (en) | 2001-10-23 | 2003-04-24 | Tower James Brian | Secured digital systems and a method and software for operating the same |
US6832302B1 (en) | 2001-10-24 | 2004-12-14 | At&T Corp. | Methods and apparatus for detecting heap smashing |
US6668313B2 (en) | 2001-12-21 | 2003-12-23 | Agere Systems, Inc. | Memory system for increased bandwidth |
US7076629B2 (en) | 2001-12-26 | 2006-07-11 | Bonola Thomas J | Method for providing concurrent non-blocking heap memory management for fixed sized blocks |
US7168008B2 (en) | 2002-01-18 | 2007-01-23 | Mobitv, Inc. | Method and system for isolating and protecting software components |
ES2218484T3 (es) | 2002-03-26 | 2004-11-16 | Soteres Gmbh | Un metodo de proteger la integridad de un programa de ordenador. |
US7228426B2 (en) | 2002-04-03 | 2007-06-05 | Microsoft Corporation | Integrity ordainment and ascertainment of computer-executable instructions with consideration for execution context |
US6948091B2 (en) | 2002-05-02 | 2005-09-20 | Honeywell International Inc. | High integrity recovery from multi-bit data failures |
GB2383444B (en) | 2002-05-08 | 2003-12-03 | Gfi Software Ltd | System and method for detecting a potentially malicious executable file |
US7007159B2 (en) | 2002-05-10 | 2006-02-28 | Intel Corporation | System and method for loading and integrating a firmware extension onto executable base system firmware during initialization |
US7086088B2 (en) | 2002-05-15 | 2006-08-01 | Nokia, Inc. | Preventing stack buffer overflow attacks |
US7000095B2 (en) | 2002-09-06 | 2006-02-14 | Mips Technologies, Inc. | Method and apparatus for clearing hazards using jump instructions |
US7386839B1 (en) | 2002-11-06 | 2008-06-10 | Valery Golender | System and method for troubleshooting software configuration problems using application tracing |
US6996677B2 (en) | 2002-11-25 | 2006-02-07 | Nortel Networks Limited | Method and apparatus for protecting memory stacks |
US20040157639A1 (en) | 2002-11-27 | 2004-08-12 | Morris Roy D. | Systems and methods of mobile restore |
US20040168078A1 (en) | 2002-12-04 | 2004-08-26 | Brodley Carla E. | Apparatus, system and method for protecting function return address |
US7058838B2 (en) | 2002-12-17 | 2006-06-06 | Hewlett-Packard Development Company, L.P. | System and method for synchronizing a plurality of processors in a multiprocessor computer platform employing a global clock counter |
US7594111B2 (en) | 2002-12-19 | 2009-09-22 | Massachusetts Institute Of Technology | Secure execution of a computer program |
US7603704B2 (en) | 2002-12-19 | 2009-10-13 | Massachusetts Institute Of Technology | Secure execution of a computer program using a code cache |
US9503470B2 (en) | 2002-12-24 | 2016-11-22 | Fred Herz Patents, LLC | Distributed agent based model for security monitoring and response |
US7237172B2 (en) | 2002-12-24 | 2007-06-26 | Micron Technology, Inc. | Error detection and correction in a CAM |
US7043509B2 (en) | 2003-02-19 | 2006-05-09 | Sun Microsystems, Inc. | Parallel non-contiguous allocation and card parsing |
JP4547861B2 (ja) | 2003-03-20 | 2010-09-22 | 日本電気株式会社 | 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム |
CA2426619A1 (en) | 2003-04-25 | 2004-10-25 | Ibm Canada Limited - Ibm Canada Limitee | Defensive heap memory management |
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 |
US7480919B2 (en) | 2003-06-24 | 2009-01-20 | Microsoft Corporation | Safe exceptions |
US8250565B2 (en) | 2003-06-27 | 2012-08-21 | Hewlett-Packard Development Company, L.P. | System and method for downloading update packages into a mobile handset in a carrier network |
US7322027B2 (en) | 2003-06-27 | 2008-01-22 | Microsoft Corporation | Detecting termination and providing information related to termination of a computer system process |
US20040268095A1 (en) | 2003-06-30 | 2004-12-30 | Tatiana Shpeisman | Efficient implementation of null reference check |
US7707548B2 (en) | 2003-07-22 | 2010-04-27 | Verizon Business Global Llc | Integration of information distribution systems |
US7137038B2 (en) | 2003-07-29 | 2006-11-14 | Hitachi Global Storage Technologies Netherlands, B.V. | System and method for autonomous data scrubbing in a hard disk drive |
US7530103B2 (en) | 2003-08-07 | 2009-05-05 | Microsoft Corporation | Projection of trustworthiness from a trusted environment to an untrusted environment |
WO2005015370A1 (en) | 2003-08-11 | 2005-02-17 | Telecom Italia S.P.A. | Method and system for detecting unauthorised use of a communication network |
US20070169075A1 (en) | 2003-09-05 | 2007-07-19 | David Lill | Synchronizing and controlling software downloads, such as for utility meter-reading data collection and processing |
US7467202B2 (en) | 2003-09-10 | 2008-12-16 | Fidelis Security Systems | High-performance network content analysis platform |
US7644441B2 (en) | 2003-09-26 | 2010-01-05 | Cigital, Inc. | Methods for identifying malicious software |
US7360097B2 (en) | 2003-09-30 | 2008-04-15 | Check Point Software Technologies, Inc. | System providing methodology for securing interfaces of executable files |
US7290253B1 (en) | 2003-09-30 | 2007-10-30 | Vmware, Inc. | Prediction mechanism for subroutine returns in binary translation sub-systems of computers |
JPWO2005036831A1 (ja) | 2003-10-07 | 2006-12-28 | 富士通株式会社 | フレーム中継装置 |
US7500245B2 (en) | 2005-07-08 | 2009-03-03 | Microsoft Corporation | Changing code execution path using kernel mode redirection |
US7526755B2 (en) | 2003-10-08 | 2009-04-28 | Microsoft Corporation | Plug-in pre- and postconditions for static program analysis |
US7237267B2 (en) | 2003-10-16 | 2007-06-26 | Cisco Technology, Inc. | Policy-based network security management |
CN100391180C (zh) | 2003-10-30 | 2008-05-28 | 华为技术有限公司 | 一种以太网二层交换设备绑定硬件地址和端口的方法 |
US8151117B2 (en) | 2003-11-05 | 2012-04-03 | Vocalcomm Group, Llc | Detection of items stored in a computer system |
US7451375B2 (en) | 2003-11-20 | 2008-11-11 | Fujitsu Limited | Directed falsification of a circuit |
US7529979B2 (en) | 2003-12-12 | 2009-05-05 | International Business Machines Corporation | Hardware/software based indirect time stamping methodology for proactive hardware/software event detection and control |
US7549042B2 (en) * | 2003-12-16 | 2009-06-16 | Microsoft Corporation | Applying custom software image updates to non-volatile storage in a failsafe manner |
US20050138409A1 (en) | 2003-12-22 | 2005-06-23 | Tayib Sheriff | Securing an electronic device |
US7716495B2 (en) * | 2003-12-31 | 2010-05-11 | Microsoft Corporation | Protection against runtime function attacks |
US20100005531A1 (en) | 2004-12-23 | 2010-01-07 | Kenneth Largman | Isolated multiplexed multi-dimensional processing in a virtual processing space having virus, spyware, and hacker protection features |
US7284276B2 (en) | 2004-01-22 | 2007-10-16 | Symantec Corporation | Return-to-LIBC attack detection using branch trace records system and method |
US7730530B2 (en) | 2004-01-30 | 2010-06-01 | Microsoft Corporation | System and method for gathering exhibited behaviors on a .NET executable module in a secure manner |
US7693975B2 (en) | 2004-03-02 | 2010-04-06 | Hewlett-Packard Development Company, L.P. | Network device applying kalman filter |
US7328323B1 (en) | 2004-03-08 | 2008-02-05 | Symantec Corporation | Heap buffer overflow exploitation prevention system and method |
JP2005258498A (ja) | 2004-03-09 | 2005-09-22 | Hitachi Ltd | サーバ回復方法 |
US7272748B1 (en) | 2004-03-17 | 2007-09-18 | Symantec Corporation | Method and apparatus to detect and recover from a stack frame corruption |
US7530093B2 (en) | 2004-04-30 | 2009-05-05 | Microsoft Corporation | Securing applications and operating systems |
WO2005114955A1 (en) | 2004-05-21 | 2005-12-01 | Computer Associates Think, Inc. | Systems and methods of computer security |
US7490268B2 (en) | 2004-06-01 | 2009-02-10 | The Trustees Of Columbia University In The City Of New York | Methods and systems for repairing applications |
US7207065B2 (en) | 2004-06-04 | 2007-04-17 | Fortify Software, Inc. | Apparatus and method for developing secure software |
US7761863B2 (en) | 2004-06-08 | 2010-07-20 | Covia Labs, Inc. | Method system and data structure for content renditioning adaptation and interoperability segmentation model |
US7860096B2 (en) | 2004-06-08 | 2010-12-28 | Oracle America, Inc. | Switching method and apparatus for use in a communications network |
US7526810B2 (en) | 2004-06-21 | 2009-04-28 | Ebay Inc. | Method and system to verify data received, at a server system, for access and/or publication via the server system |
US20050283601A1 (en) * | 2004-06-22 | 2005-12-22 | Sun Microsystems, Inc. | Systems and methods for securing a computer boot |
WO2006014554A2 (en) | 2004-07-07 | 2006-02-09 | University Of Maryland | Method and system for monitoring system memory integrity |
US7971255B1 (en) | 2004-07-15 | 2011-06-28 | The Trustees Of Columbia University In The City Of New York | Detecting and preventing malcode execution |
US7634812B2 (en) | 2004-07-21 | 2009-12-15 | Microsoft Corporation | Filter generation |
FR2873466A1 (fr) | 2004-07-21 | 2006-01-27 | St Microelectronics Sa | Procede de programmation d'un controleur de dma dans un systeme sur puce et systeme sur puce associe |
US7603715B2 (en) | 2004-07-21 | 2009-10-13 | Microsoft Corporation | Containment of worms |
EP1619572A1 (en) | 2004-07-23 | 2006-01-25 | Texas Instruments Incorporated | System and method of identifying and preventing security violations within a computing system |
JP4643201B2 (ja) | 2004-08-12 | 2011-03-02 | 日本電信電話株式会社 | バッファオーバーフロー脆弱性分析方法、データ処理装置、分析情報提供装置、分析情報抽出処理用プログラムおよび分析情報提供処理用プログラム |
GB2417579A (en) | 2004-08-26 | 2006-03-01 | Hewlett Packard Development Co | Method for dynamically inserting code into a process by enabling taken branch traps to intercept a branch during the execution of the process |
US7430683B2 (en) | 2004-09-23 | 2008-09-30 | Intel Corporation | Method and apparatus for enabling run-time recovery of a failed platform |
CN101065716A (zh) | 2004-11-22 | 2007-10-31 | 诺基亚公司 | 用于验证电子设备的平台软件的完整性的方法和设备 |
US7484239B1 (en) | 2004-11-30 | 2009-01-27 | Symantec Corporation | Detecting heap and stack execution in the operating system using regions |
KR100675836B1 (ko) | 2004-12-10 | 2007-01-29 | 한국전자통신연구원 | Epon 구간내에서의 링크 보안을 위한 인증 방법 |
US20060126799A1 (en) | 2004-12-15 | 2006-06-15 | Microsoft Corporation | Fault injection |
US7613954B2 (en) | 2004-12-21 | 2009-11-03 | National Instruments Corporation | Test executive with stack corruption detection |
TWI252976B (en) | 2004-12-27 | 2006-04-11 | Ind Tech Res Inst | Detecting method and architecture thereof for malicious codes |
US7774787B2 (en) | 2005-01-11 | 2010-08-10 | Microsoft Corporation | Method for specifying and verifying multi-threaded object-oriented programs with invariants |
US7315871B2 (en) | 2005-01-19 | 2008-01-01 | International Business Machines Inc. Corporation | Method, system and program product for interning invariant data objects in dynamic space constrained systems |
JP4549303B2 (ja) * | 2005-02-07 | 2010-09-22 | 株式会社ソニー・コンピュータエンタテインメント | パイプラインを用いてメッセージ認証コードを提供する方法および装置 |
JP2006259869A (ja) | 2005-03-15 | 2006-09-28 | Fujitsu Ltd | マルチプロセッサシステム |
US7290230B2 (en) | 2005-03-17 | 2007-10-30 | Fujitsu Limited | System and method for verifying a digital design using dynamic abstraction |
ES2745045T3 (es) | 2005-04-22 | 2020-02-27 | Audinate Pty Ltd | Red, dispositivo y método para transportar medios digitales |
US7493602B2 (en) | 2005-05-02 | 2009-02-17 | International Business Machines Corporation | Methods and arrangements for unified program analysis |
US7912877B2 (en) | 2005-05-20 | 2011-03-22 | Microsoft Corporation | Leveraging garbage collection to dynamically infer heap invariants |
US7752381B2 (en) | 2005-05-24 | 2010-07-06 | Micron Technology, Inc. | Version based non-volatile memory translation layer |
US7730536B2 (en) | 2005-06-08 | 2010-06-01 | Verizon Business Global Llc | Security perimeters |
GB0513375D0 (en) | 2005-06-30 | 2005-08-03 | Retento Ltd | Computer security |
US7895651B2 (en) | 2005-07-29 | 2011-02-22 | Bit 9, Inc. | Content tracking in a network security system |
US20070027815A1 (en) | 2005-07-29 | 2007-02-01 | Symantec Corporation | Systems and methods for centralized subscription and license management in a small networking environment |
EP1758021A2 (en) | 2005-08-25 | 2007-02-28 | International Business Machines Corporation | Method or apparatus for managing a server process in a computer system |
US20070050848A1 (en) | 2005-08-31 | 2007-03-01 | Microsoft Corporation | Preventing malware from accessing operating system services |
US20070067359A1 (en) | 2005-09-21 | 2007-03-22 | Lenovo (Singapore) Pte. Ltd. | Centralized system for versioned data synchronization |
US20070118646A1 (en) | 2005-10-04 | 2007-05-24 | Computer Associates Think, Inc. | Preventing the installation of rootkits on a standalone computer |
US7809670B2 (en) * | 2005-12-09 | 2010-10-05 | Microsoft Corporation | Classification of malware using clustering that orders events in accordance with the time of occurance |
US9390031B2 (en) | 2005-12-30 | 2016-07-12 | Intel Corporation | Page coloring to associate memory pages with programs |
US8108840B2 (en) | 2006-01-12 | 2012-01-31 | International Business Machines Corporation | Method for enhancing debugger performance of hardware assisted breakpoints |
US20070174549A1 (en) | 2006-01-24 | 2007-07-26 | Yevgen Gyl | Method for utilizing a memory interface to control partitioning of a memory module |
US7845005B2 (en) | 2006-02-07 | 2010-11-30 | International Business Machines Corporation | Method for preventing malicious software installation on an internet-connected computer |
US8510596B1 (en) | 2006-02-09 | 2013-08-13 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
US20080016339A1 (en) * | 2006-06-29 | 2008-01-17 | Jayant Shukla | Application Sandbox to Detect, Remove, and Prevent Malware |
US7643812B2 (en) | 2006-09-18 | 2010-01-05 | Agere Systems Inc. | Method and apparatus for a single-path enhanced-algorithm digital automatic gain control integrated receiver with power management and XM interference enhancement |
WO2008055156A2 (en) | 2006-10-30 | 2008-05-08 | The Trustees Of Columbia University In The City Of New York | Methods, media, and systems for detecting an anomalous sequence of function calls |
IL181426A (en) | 2007-02-19 | 2011-06-30 | Deutsche Telekom Ag | Automatic removal of signatures for malware |
US20080215925A1 (en) | 2007-03-02 | 2008-09-04 | International Business Machines Corporation | Distributed fault injection mechanism |
CN101689111A (zh) | 2007-04-03 | 2010-03-31 | Ldra技术公司 | 软件需求验证的自动化管理 |
US8336102B2 (en) | 2007-06-01 | 2012-12-18 | Microsoft Corporation | Delivering malformed data for fuzz testing to software applications |
JP4938576B2 (ja) * | 2007-07-24 | 2012-05-23 | 日本電信電話株式会社 | 情報収集システムおよび情報収集方法 |
CN101154258A (zh) | 2007-08-14 | 2008-04-02 | 电子科技大学 | 恶意程序动态行为自动化分析系统与方法 |
US7971044B2 (en) | 2007-10-05 | 2011-06-28 | Qualcomm Incorporated | Link stack repair of erroneous speculative update |
US8627287B2 (en) | 2007-11-29 | 2014-01-07 | Microsoft Corporation | Prioritizing quality improvements to source code |
US7453910B1 (en) | 2007-12-18 | 2008-11-18 | International Business Machines Corporation | Synchronization of independent clocks |
US8434151B1 (en) | 2008-01-04 | 2013-04-30 | International Business Machines Corporation | Detecting malicious software |
US8261326B2 (en) | 2008-04-25 | 2012-09-04 | International Business Machines Corporation | Network intrusion blocking security overlay |
US8307191B1 (en) | 2008-05-09 | 2012-11-06 | Vmware, Inc. | Page fault handling in a virtualized computer system |
JP2009282180A (ja) | 2008-05-21 | 2009-12-03 | Olympus Imaging Corp | 観察光学系及びそれを用いた撮像装置 |
US8407523B2 (en) | 2008-06-06 | 2013-03-26 | Iti Scotland Limited | Method for protecting software programs |
US9280466B2 (en) | 2008-09-09 | 2016-03-08 | Kabushiki Kaisha Toshiba | Information processing device including memory management device managing access from processor to memory and memory management method |
JP2010257150A (ja) | 2009-04-23 | 2010-11-11 | Ntt Docomo Inc | 不正処理検知装置、不正処理検知方法及びプログラム |
KR101269549B1 (ko) | 2009-05-08 | 2013-06-04 | 한국전자통신연구원 | 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법 |
US9230455B2 (en) | 2009-12-11 | 2016-01-05 | Digital Immunity Llc | Steganographic embedding of executable code |
KR101798672B1 (ko) | 2009-12-11 | 2017-11-16 | 토마스 에이치 프로버트 | 코드 불변식을 이용한 스테가노그래픽 메시징 시스템 |
JP5499805B2 (ja) | 2010-03-19 | 2014-05-21 | 日本電気株式会社 | 情報処理装置、情報処理システム、情報処理方法並びに情報処理プログラム |
CN102012987B (zh) | 2010-12-02 | 2013-03-13 | 李清宝 | 自动二进制恶意代码行为分析系统 |
US8464102B2 (en) | 2010-12-23 | 2013-06-11 | GM Global Technology Operations LLC | Methods and systems for diagnosing hardware and software faults using time-stamped events |
US8595610B2 (en) | 2011-01-25 | 2013-11-26 | Infineon Technologies Ag | Method, software and computer system for manipulating aggregated data |
US8615640B2 (en) | 2011-03-17 | 2013-12-24 | Lsi Corporation | System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller |
US8495581B2 (en) | 2011-05-05 | 2013-07-23 | International Business Machines Corporation | Code evaluation based on failure prediction |
JP5941149B2 (ja) * | 2011-09-09 | 2016-06-29 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | 基準ベースラインに基づき、イベントシーケンス中の時間的位置に従ってイベントを評価するシステム及び方法 |
US8788627B2 (en) | 2011-09-30 | 2014-07-22 | Apple Inc. | Interactive web application framework |
US8984478B2 (en) * | 2011-10-03 | 2015-03-17 | Cisco Technology, Inc. | Reorganization of virtualized computer programs |
WO2013063474A1 (en) | 2011-10-28 | 2013-05-02 | Scargo, Inc. | Security policy deployment and enforcement system for the detection and control of polymorphic and targeted malware |
BR112014011612B1 (pt) | 2011-11-15 | 2021-08-31 | Japan Science And Technology Agency | Sistema de provisão de serviço de análise/verificação de dados, método de controlar o mesmo e meio de armazenamento legível por computador |
US9372991B2 (en) * | 2012-03-06 | 2016-06-21 | International Business Machines Corporation | Detecting malicious computer code in an executing program module |
US8792498B2 (en) | 2012-03-23 | 2014-07-29 | Wind River Systems, Inc. | System and method for enhanced updating layer-2 bridge address table on asymmetric multiprocessing systems |
US9043903B2 (en) | 2012-06-08 | 2015-05-26 | Crowdstrike, Inc. | Kernel-level security agent |
US9507933B2 (en) | 2012-08-01 | 2016-11-29 | Mitsubishi Electric Corporation | Program execution apparatus and program analysis apparatus |
US9201720B2 (en) | 2012-08-13 | 2015-12-01 | Nxp B.V. | FlexRay network runtime error detection and containment |
US9882984B2 (en) | 2013-08-02 | 2018-01-30 | International Business Machines Corporation | Cache migration management in a virtualized distributed computing system |
JP2016534479A (ja) | 2013-09-12 | 2016-11-04 | ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. | マルウェアのランタイム中の自動検出 |
GB2520987B (en) | 2013-12-06 | 2016-06-01 | Cyberlytic Ltd | Using fuzzy logic to assign a risk level profile to a potential cyber threat |
WO2015200508A1 (en) | 2014-06-24 | 2015-12-30 | Virsec Systems, Inc | Automated root cause analysis of single or n-tiered applications |
WO2015200511A1 (en) | 2014-06-24 | 2015-12-30 | Virsec Systems, Inc. | System and methods for automated detection of input and output validation and resource management vulnerability |
US10019569B2 (en) | 2014-06-27 | 2018-07-10 | Qualcomm Incorporated | Dynamic patching for diversity-based software security |
US9699205B2 (en) | 2015-08-31 | 2017-07-04 | Splunk Inc. | Network security system |
CA3027728A1 (en) | 2016-06-16 | 2017-12-21 | Virsec Systems, Inc. | Systems and methods for remediating memory corruption in a computer application |
-
2014
- 2014-09-12 JP JP2016542827A patent/JP2016534479A/ja active Pending
- 2014-09-12 AU AU2014318585A patent/AU2014318585B2/en active Active
- 2014-09-12 EP EP14772544.4A patent/EP3044719B1/en active Active
- 2014-09-12 WO PCT/US2014/055469 patent/WO2015038944A1/en active Application Filing
- 2014-09-12 CA CA2923231A patent/CA2923231C/en active Active
- 2014-09-12 US US14/916,066 patent/US10079841B2/en active Active
- 2014-09-12 KR KR1020167009506A patent/KR102368170B1/ko active IP Right Grant
-
2018
- 2018-04-03 AU AU2018202323A patent/AU2018202323A1/en not_active Abandoned
- 2018-07-19 US US16/040,021 patent/US11146572B2/en active Active
-
2020
- 2020-03-18 JP JP2020048093A patent/JP7046111B2/ja active Active
- 2020-05-28 AU AU2020203503A patent/AU2020203503B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003330736A (ja) * | 2002-05-08 | 2003-11-21 | Nippon Telegr & Teleph Corp <Ntt> | 不正リソース利用防止システム及びその方法並びにプログラム |
JP2005276185A (ja) * | 2004-02-24 | 2005-10-06 | Microsoft Corp | ソフトウェアの脆弱性の悪用を防止するように通信をフィルタ処理するための方法およびシステム |
JP2008129714A (ja) * | 2006-11-17 | 2008-06-05 | Univ Of Tsukuba | 異常検知方法、異常検知装置及び異常検知用プログラム並びに学習モデル生成方法 |
WO2010067703A1 (ja) * | 2008-12-08 | 2010-06-17 | 日本電気株式会社 | データ依存関係解析装置、情報処理装置、データ依存関係解析方法、及びプログラム |
JP2011059930A (ja) * | 2009-09-09 | 2011-03-24 | Nec Computertechno Ltd | 電源ユニット |
Also Published As
Publication number | Publication date |
---|---|
US20180324195A1 (en) | 2018-11-08 |
US10079841B2 (en) | 2018-09-18 |
WO2015038944A1 (en) | 2015-03-19 |
JP2020095753A (ja) | 2020-06-18 |
EP3044719A1 (en) | 2016-07-20 |
JP2016534479A (ja) | 2016-11-04 |
CA2923231A1 (en) | 2015-03-19 |
AU2018202323A1 (en) | 2018-04-26 |
AU2020203503B2 (en) | 2021-12-09 |
AU2014318585A1 (en) | 2016-03-17 |
US11146572B2 (en) | 2021-10-12 |
CA2923231C (en) | 2020-06-02 |
US20160212159A1 (en) | 2016-07-21 |
JP7046111B2 (ja) | 2022-04-01 |
EP3044719B1 (en) | 2019-08-28 |
AU2020203503A1 (en) | 2020-06-18 |
KR20160114037A (ko) | 2016-10-04 |
AU2014318585B2 (en) | 2018-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2020203503B2 (en) | Automated runtime detection of malware | |
AU2018204262B2 (en) | Automated code lockdown to reduce attack surface for software | |
AU2017210221B2 (en) | Pattern matching based dataset extraction | |
EP3295359B1 (en) | Detection of sql injection attacks | |
EP3472746B1 (en) | Systems and methods for remediating memory corruption in a computer application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |