KR20220098247A - 그래프 데이터 구조들을 사용한 애셋 검색 및 발견 시스템 - Google Patents
그래프 데이터 구조들을 사용한 애셋 검색 및 발견 시스템 Download PDFInfo
- Publication number
- KR20220098247A KR20220098247A KR1020227020499A KR20227020499A KR20220098247A KR 20220098247 A KR20220098247 A KR 20220098247A KR 1020227020499 A KR1020227020499 A KR 1020227020499A KR 20227020499 A KR20227020499 A KR 20227020499A KR 20220098247 A KR20220098247 A KR 20220098247A
- Authority
- KR
- South Korea
- Prior art keywords
- graph
- asset
- domain
- data structure
- assets
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9038—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9538—Presentation of query results
-
- 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/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3015—Name registration, generation or assignment
- H04L61/3025—Domain name generation or assignment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5007—Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5076—Update or notification mechanisms, e.g. DynDNS
-
- 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/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L67/125—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/30—Types of network names
- H04L2101/37—E-mail addresses
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Radar Systems Or Details Thereof (AREA)
- Measurement Of The Respiration, Hearing Ability, Form, And Blood Characteristics Of Living Organisms (AREA)
- Computer And Data Communications (AREA)
Abstract
검색 및 데이터베이스 시스템에서, 그래프 생성기는 노드들 및 에지들을 포함하는 그래프를 구축하고 그 그래프를 데이터베이스 또는 다른 데이터 구조에 저장하고 반복된 확장 및 컬링 프로세스(culling process)를 사용하여 그래프를 구축한다. 그 저장장치로부터, 그래프는 그래프에 관해 학습하고/하거나 해당 그래프 데이터에 대한 질의들 등을 수행하는 데 관심이 있는 사용자들을 위한 디스플레이들을 생성하는 데 사용될 수 있다.
Description
본 출원은 2020년 5월 15일에 출원된 미국 가출원 번호 63/025,900호, 2019년 11월 19일에 출원된 미국 가출원 번호 62/937,432호, 및 2020년 6월 2일에 출원된 미국 가출원 번호 16/890,995호에 대한 우선권을 주장하고, 이로써 그 개시내용은 그 전체가 참조로 본원에 명시적으로 포함된다.
본 개시내용은 일반적으로 분산 컴퓨팅 환경에서 애셋(asset)을 관리하는 것에 관한 것이다. 본 개시내용은 보다 구체적으로 엔티티의 제어하에 있는 애셋을 식별하기 위해 네트워크-연결 애셋들의 검색들을 수행하기 위한 장치 및 기법들에 관한 것이다.
네트워크 연결을 갖는 조직들의 컴퓨터 및 디지털 애셋들을 보호, 제어 및 액세스하는 것은 종종 이러한 애셋들 추적 및 인벤토리작성 능력을 요구한다. 애셋들은 컴퓨터 시스템들, 데이터베이스들 및 도메인 이름들, 호스트들, 주소들 등과 같은 논리적 애셋들을 포함할 수 있다. 종종 조직은 다른 조직을 인수할 수 있지만 소유 및/또는 제어하는 애셋들에 대한 전체 그림을 갖고 있지 않을 수 있다.
소유되거나 제어되는 애셋들에 관한 정보의 부족은 보안 위험들을 제시할 수 있다. 예를 들어, 서버는 특정 웹 주소로 향하는 요청들에 응답할 수 있다. 해당 서버가 안전하지 않으면, 해커들이 소유자의 나머지 네트워크 인프라구조에 침투할 수 있는 여지를 제공할 수 있다. 소유자가 애셋을 소유하고 있다는 사실을 인식하지 못하는 경우, 애셋을 안전하게 보호하거나, 네트워크 리소스들에서 제거하기 위해 노력을 기울이지 않을 수 있다.
결과적으로, 네트워크-연결 환경에서 제어되는 애셋들을 식별할 수 있는 것이 바람직하다.
검색 및 데이터베이스 시스템의 일 실시예에서, 그래프 생성기는 노드들 및 에지들을 포함하는 그래프를 구축하고 그 그래프를 데이터베이스 또는 다른 데이터 구조에 저장하고 반복된 확장 및 컬링 프로세스(culling process)를 사용하여 그래프를 구축한다. 그 저장장치로부터, 그래프는 그래프에 관해 학습하고/하거나 해당 그래프 데이터에 대한 질의들 등을 수행하는 데 관심이 있는 사용자들을 위한 디스플레이들을 생성하는 데 사용될 수 있다.
일부 실시예들에서, 그래프는 인터넷-연결 애셋들의 인벤토리를 나타내고 그래프 구축은 노드들의 초기 세트에서 더 큰 그래프로의 발견 프로세스에 의해 수행된다. 검색 프로세스는 데이터를 평가하고 에지들 및 노드들을 그래프에 추가하는 애셋들에 관한 데이터뿐 아니라, 이들 에지들 및 노드들에 관한 데이터에 액세스할 수 있는 컴퓨터 또는 서버에서 실행되는 소프트웨어와 같은 컴퓨터 시스템을 포함할 수 있다. 이 그래프의 일부 용도는 그래프에 있는 애셋들을 식별, 인벤토리작성, 디스플레이, 관리 등을 수행하는 것이다.
애셋들이 한 사람 또는 엔티티에 의해 소유될 수 있거나, 애셋이 한 사람, 엔티티 또는 조직에 의해 제어될 수 있다. 본원에 설명된 방법들 및 시스템들의 목적들을 위해, 애셋에 대한 법적 소유권이 실제로 누구 또는 무엇인지는 중요하지 않을 수 있고 그래프는, 개인, 엔티티 또는 조직이 애셋들을 소유하거나, 애셋들을 보유하고 있거나, 애셋들을 관리하는 임무를 부여받거나, 애셋의 가치를 보존하기 위해 애셋들을 확보하는 데 관심이 있거나 임무를 부여받거나, 애셋들을 유지해야 하는 점 등에서 개인, 엔티티 또는 조직에 의해 제어되는 애셋들을 가진다는 것을 결정하는 것으로 충분하다. 따라서, 애셋의 "소유자"와 "제어기"가 상이한 맥락에서 사용될 수 있고 달리 표시되지 않는 한 상호교환될 수 있다.
특정 실시예에서, 초기 노드는 알려진 소유자와 애셋을 나타내고, 여기서 소유자는 해당 애셋을 제어할 법적 권리 및/또는 해당 애셋을 자체적으로 또는 다른 것을 대신하여, 제어하는 기술적 능력을 갖는 개인, 엔티티 또는 조직을 지칭한다. 그 특정 실시예에서, 그래프 발견 컴퓨터 또는 컴퓨터 프로세스는 초기 노드로부터 그래프를 확장하여 그 알려진 소유자가 소유한 애셋들의 더 큰 그래프를 식별한다. 결과적으로 더 큰 그래프는 해당 소유자 애셋의 인벤토리를 나타낼 수 있다. 이 그래프는 그래프로 표현되거나, 애셋들의 목록으로 표현될 수 있다.
인벤토리가 생성되면, 소유자는 이들 애셋들을 유지할 수 있다. 전체 인벤토리가 없으면, 일부 애셋들은 간과될 수 있다. 예를 들어, 소유자가 호스트이름이나 도메인 이름을 소유하고 있지만 알지 못할 수 있으므로, 호스트이름이 더 이상 IP 주소로 이해되지 않을 수 있다. 소유자가 대규모 조직인 경우들에서, 아마도 다른 엔티티들을 인수한 후, 소유자가 소유한 애셋들에 대한 중앙 기록이 없을 수 있다.
특정 실시예에서, 예상 애셋 인벤토리 그래프를 나타내는 그래프 데이터 구조를 구성하기 위한 컴퓨터-구현 방법이 제공되고, 그래프 데이터 구조는 각각이 네트워크의 애셋을 나타내는 노드들, 및 노드들과, 그래프 데이터 구조에 표현된 가중치들을 갖고 그래프 데이터 구조에 표현된 애셋들의 공통 제어를 나타내는 적어도 일부 에지 사이의 연결을 각각 나타내는 적어도 일부 에지들 사이의 연결을 각각 나타내는 에지들을 포함한다. 방법은 그래프 데이터 구조에 적어도 하나의 시드 애셋의 표현을 저장하는 단계, 추가 노드가 예측 애셋 인벤토리 그래프 상에 이미 있는 노드와 추가 노드 사이의 매칭을 나타내는 매칭 기준에 기반하여 공통 제어하에 있는 것으로 추정되는 것을 나타내는 매칭 기준에 기반하여 추가 노드를 포함하도록 예상 애셋 인벤토리 그래프를 확장하는 단계, 추가 노드와 예상 애셋 인벤토리 그래프에 아직 표현되지 않은 제3 애셋을 나타내는 제3 노드 사이의 매칭 기준을 재귀적으로 적용하는 단계, 공통 제어를 나타내는 표시 임계치 미만의 가중치들을 갖는 에지들의 식별에 기반하여 예상 애셋 인벤토리 그래프의 분기들을 컬링하는 단계, 및 확장 및 컬링에 기반하여 그래프 데이터 구조를 업데이트하는 단계를 포함한다.
재귀는 자동 재귀 또는 사용자-정의 재귀일 수 있다. 사용자-정의 재귀의 경우, 사용자 또는 시스템은 선택적 깊이, 신뢰도, 설정들, 또는 다른 기준에 따라 이용가능한 링킹 방법들의 서브세트만을 사용하도록 선정할 수 있다. 선택은 방법들을 포함하고/하거나 방법들을 제외하는 선택일 수 있다.
확장은 예상 애셋 인벤토리 그래프에 이미 있는 애셋들의 세트를 포함하는 알려진 애셋들에 대한 메타데이터를 식별하기 위해 예상 애셋 인벤토리 그래프를 판독, 알려진 애셋들에 관해 미리결정된 메타데이터를 선택, 메타데이터를 정규화, 정규화된 메타데이터와 매칭을 위해 애셋 데이터베이스를 검색, 메타데이터가 소유권이나 제어의 표시가 아니라 등록 프로세스의 아티팩트일 가능성이 있는 애셋들에 대한 노드들을 필터링, 및 나머지 매칭에 대해, 해당 애셋을 예상 애셋 인벤토리 그래프에 추가하는 것을 포함할 수 있다.
예상 애셋 인벤토리 그래프의 에지의 가중치는 개별 매칭 가중치의 합일 수 있고, 이에 따라 더 많은 수의 매칭들에 대해 가중치가 증가된다. 노드들은 신뢰 레벨들이 할당될 수 있고, 여기서 노드의 신뢰 레벨은 노드의 애셋이 일반적으로 제어되는 애셋일 가능성에 해당한다. 추가 노드들은 DNS(Domain Naming System) 데이터베이스, 이력 DNS 데이터베이스들 및/또는 WHOIS 데이터베이스에서 파생될 수 있고, 그래프 확장은 DNS(Domain Naming System) 데이터베이스, 이력 DNS 데이터베이스들 및/또는 매칭 기준을 충족하는 노드들을 식별하기 위한 WHOIS 데이터베이스를 검색하는 것을 포함한다. 컬링은 사람의 입력을 반영하는 수동 입력들을 획득하는 것을 포함할 수 있다. 추가 노드는 IP 주소, DNS 유형(예를 들어, A, AAAA, MX, NS, SOA 등), DNS 등록 데이터(예를 들어, 이메일 주소, 우편 주소, 전화 번호, 회사 이름, 등) 및/또는 IP 주소의 ASN 정보로부터 파생될 수 있다.
이 방법은 예상 애셋 인벤토리 그래프의 표현을 디스플레이 포맷으로 포맷팅하고, 디스플레이 포맷을 디스플레이에 제시하는 것을 포함할 수 있다.
예상 애셋 인벤토리 그래프의 애셋들에 관한 메타데이터는 호스트 이름, 취약성들의 목록, 사용된 개방 포트들의 목록, 애셋의 추정된 지리위치, 애셋에 사용된 운영 체제, 애셋의 서비스 배너들, 및/또는 애셋의 TLS 인증서 세부사항들 중 하나 이상을 포함할 수 있다. 네트워크의 애셋들은 도메인, 인터넷-연결 애셋, 서브도메인, IP 주소, 가상 호스트, 웹 서버, 이름 서버, IoT 디바이스, 데스크톱 컴퓨터, 네트워크 프린터, 메일 서버 또는 인터넷이나 내부 네트워크에 연결된 디바이스 중 하나 이상을 포함할 수 있다. 다른 애셋들은 콘텐츠 전송 네트워크들, 프록시들, 웹 애플리케이션 방화벽들, 침입 검출 시스템들, 방화벽들, 라우터들, 스위치들 또는 네트워크 트래픽을 허용할 수 있는 임의의 디바이스를 포함할 수 있다.
특정 실시예에서, 제1 애셋은 제1 도메인이고, 제2 애셋은 제2 도메인이고, 제1 애셋은 예상 애셋 인벤토리 그래프에 있고, 매칭 기준은 제2 도메인이 제1 도메인과 공통 등록 이메일 주소를 공유하는지에 여부에 대한 제1 테스트, 제2 도메인이 제1 도메인과 공통 등록 이메일 주소 도메인을 공유하는지 여부에 대한 제2 테스트, 제2 도메인이 제1 도메인의 이메일 도메인과 매칭하는 이메일 도메인을 갖는 이메일 주소를 사용하여 등록되었는지 여부에 대한 제3 테스트, 제2 도메인과 제1 도메인이 공통 IP 주소를 공유하는지 여부에 대한 제4 테스트, 제2 도메인과 제1 도메인이 공통으로 WHOIS 필드를 공유하는지 여부에 대한 제5 테스트, 제2 도메인과 제1 도메인이 공통으로 CIDR 블록을 공유하는지 여부에 대한 제6 테스트, 제2 도메인과 제1 도메인이 공통으로 CIDR 기능을 공유하는지 여부에 대한 제7 테스트, 제2 도메인과 제1 도메인 둘 모두가 공통 호스트를 다시 참조하는 호스팅된 콘텐츠를 포함하는지 여부에 대한 제8 테스트, 및 제2 도메인과 제1 도메인 둘 모두가 공통 인증 기관을 사용하는지 여부에 대한 제9 테스트 중 하나 이상을 포함한다. 일부 테스트는 이력 데이터를 사용하여 수행될 수 있다. 예를 들어, 일부 테스트는 더 이상 공통 IP 주소를 공유하지 않는 경우에 관계없이 2개의 도메인들이 특정 시점에 공통 IP 주소를 공유했는지 여부를 테스트하는 것과 같이 공통 시점에 존재했던 데이터 요소들의 비교를 포함할 수 있다.
첨부된 도면들과 함께 다음의 상세한 설명은 본 실시예들의 특성 및 장점들의 더 나은 이해를 제공할 것이다.
도 1은 일 실시예에 따른 애셋 그래프들을 프로세싱하기 위한 그래프 프로세싱 시스템을 예시한다.
도 2는 일 실시예에 따른 그래프 프로세서를 예시한다.
도 3은 일 실시예에 따른 그래프 프로세서의 일부로서 사용되는 요소들을 예시한다.
도 4는 애셋들의 공통 제어를 나타낼 수 있는 데이터 포인트들에 적용될 수 있는 가중치의 예를 예시한다.
도 5는 예시적인 그래프 구축 프로세스의 흐름도이다.
도 6은 그래프 검색 및 그래프 제한을 예시한다.
도 7은 추가적인 실시예를 예시한다.
도 2는 일 실시예에 따른 그래프 프로세서를 예시한다.
도 3은 일 실시예에 따른 그래프 프로세서의 일부로서 사용되는 요소들을 예시한다.
도 4는 애셋들의 공통 제어를 나타낼 수 있는 데이터 포인트들에 적용될 수 있는 가중치의 예를 예시한다.
도 5는 예시적인 그래프 구축 프로세스의 흐름도이다.
도 6은 그래프 검색 및 그래프 제한을 예시한다.
도 7은 추가적인 실시예를 예시한다.
이하의 설명에서, 다양한 실시예들이 설명될 것이다. 설명의 목적들을 위해, 특정 구성들 및 세부사항들은 실시예들의 완전한 이해를 제공하기 위해 설명된다. 그러나, 또한 이들 특정 세부사항들 없이 실시예들이 실시될 수 있다는 것이 통상의 기술자들에게 명백할 것이다. 또한, 잘-알려진 특징들은 설명된 실시예를 모호하게 하지 않도록 생략 또는 단순화될 수 있다.
본원에 설명 및 제안된 기법들은 때때로 확장 및 컬링 프로세스를 사용하여 애셋들의 그래프들을 구축하는 것을 포함한다.
개요
검색 및 데이터베이스 시스템이 설명된다. 일 실시예에서, 시스템은 노드들 및 에지들을 포함하는 그래프를 구축하고, 그 그래프를 데이터베이스 또는 다른 데이터 구조에 저장하고 반복된 확장 및 컬링 프로세스를 사용하여 그래프를 구축하는 그래프 생성기이다. 그 저장장치로부터, 그래프는 그래프에 관해 학습하고/하거나 해당 그래프 데이터에 대한 질의들 등을 수행하는 데 관심이 있는 사용자들을 위한 디스플레이들을 생성하는 데 사용될 수 있다.
일부 실시예들에서, 그래프는 인터넷-연결 애셋들의 인벤토리를 나타내고 그래프 구축은 노드들의 초기 세트에서 더 큰 그래프로의 발견 프로세스에 의해 수행된다. 검색 프로세스는 데이터를 평가하고 에지들 및 노드들을 그래프에 추가하는 애셋들에 관한 데이터뿐 아니라, 이들 에지들 및 노드들에 관한 데이터에 액세스할 수 있는 컴퓨터 또는 서버에서 실행되는 소프트웨어와 같은 컴퓨터 시스템을 포함할 수 있다. 이 그래프의 일부 용도는 그래프에 있는 애셋들을 식별, 인벤토리작성, 디스플레이, 관리 등을 수행하는 것이다.
애셋들이 한 사람 또는 엔티티에 의해 소유될 수 있거나, 애셋이 한 사람, 엔티티 또는 조직에 의해 제어될 수 있다. 본원에 설명된 방법들 및 시스템들의 목적들을 위해, 애셋에 대한 법적 소유권이 실제로 누구 또는 무엇인지는 중요하지 않을 수 있고 그래프는, 개인, 엔티티 또는 조직이 애셋들을 소유하거나, 애셋들을 보유하고 있거나, 애셋들을 관리하는 임무를 부여받거나, 애셋의 가치를 보존하기 위해 애셋들을 확보하는 데 관심이 있거나 임무를 부여받거나, 애셋들을 유지해야 하는 점 등에서 개인, 엔티티 또는 조직에 의해 제어되는 애셋들을 가진다는 것을 결정하는 것으로 충분하다. 따라서, 애셋의 "소유자"와 "제어기"가 상이한 맥락에서 사용될 수 있고 달리 표시되지 않는 한 상호교환될 수 있다.
특정 실시예에서, 초기 노드는 알려진 소유자와 애셋을 나타내고, 여기서 소유자는 해당 애셋을 제어할 법적 권리 및/또는 해당 애셋을 자체적으로 또는 다른 것을 대신하여, 제어하는 기술적 능력을 갖는 개인, 엔티티 또는 조직을 지칭한다. 그 특정 실시예에서, 그래프 발견 컴퓨터 또는 컴퓨터 프로세스는 초기 노드로부터 그래프를 확장하여 그 알려진 소유자가 소유한 애셋들의 더 큰 그래프를 식별한다. 결과적으로 더 큰 그래프는 해당 소유자 애셋의 인벤토리를 나타낼 수 있다. 이 그래프는 그래프로 표현되거나, 애셋들의 목록으로 표현될 수 있다.
인벤토리가 생성되면, 소유자는 이들 애셋들을 유지할 수 있다. 전체 인벤토리가 없으면, 일부 애셋들은 간과될 수 있다. 예를 들어, 소유자가 호스트이름이나 도메인 이름을 소유하고 있지만 알지 못할 수 있으므로, 호스트이름이 더 이상 IP 주소로 이해되지 않을 수 있다. 소유자가 대규모 조직인 경우들에서, 아마도 다른 엔티티들을 인수한 후, 소유자가 소유한 애셋들에 대한 중앙 기록이 없을 수 있다. 일부 경우들에서, 제어와 소유권이 공존하지만, 다른 경우들에서, 그렇지 않을 수도 있다. 일반적인 경우, 소유권 결정과 관련된 프로세스들은 소유권, 제어 또는 둘 모두에 사용될 수 있다.
도메인을 참조하는 URL에 의해 식별될 수 있는 인터넷-연결 애셋이 많이 있고 일반적으로 도메인에 의해 식별되는 애셋들이 공통 소유권 또는 제어하에 있기 때문에, 공통 애셋은 도메인이고, 이러한 소유권 또는 제어는 도저히 쉽게 명백하지 않다. 그러나, 애셋들은 그렇게 제한될 필요는 없다. 인터넷-연결 또는 인터넷-관련 애셋들은 도메인들(도메인 이름들로 식별가능), 서브도메인들(예를 들어, 호스트이름이 추가된 도메인 이름, 때로는 전체 주소 도메인 이름, 또는 FQDN으로 더 정확하게 설명됨), IP 주소들, 가상 호스트들, 및/또는 이들의 조합 같은 지정자들을 포함할 수 있고, 또한 이들 지정자들을 사용하는 인터넷 또는 내부 네트워크에 연결된 디바이스들은 또한 이러한 지정자 애셋들 소유자의 애셋들일 수 있다. 인터넷-연결 애셋들은 공용 네트워크들, 라우팅-불가능 또는 내부 네트워크들 등에 있을 수 있다.
애셋들은 웹 서버들, 이름 서버들, IoT 디바이스들, 데스크톱 컴퓨터들, 네트워크 프린터들, 메일 서버들, 다른 서버들, 호스트들 등을 포함할 수 있다. 애셋 인벤토리는 애셋들 및 각 애셋의 메타데이터를 나타내는 관계형 데이터베이스와 같은 데이터 구조로 표현될 수 있다. 애셋 관리 시스템은 애셋 인벤토리의 애셋들을 제어하는 애셋 소유자를 제공할 수 있다. 애셋들의 관리는 해당 애셋들을 다른 사람들에게 전송하고, 해당 애셋들을 제어하고, 해당 애셋들을 구성하고, 해당 애셋들을 유지관리하고, 해당 애셋을 보호하기 위한 네트워크 보안을 설정하는 것 등을 포함할 수 있다.
애셋 인벤토리의 애셋들에 관한 메타데이터는 호스트이름들, 취약성들의 세부사항들, 사용된 개방 포트들 등을 포함할 수 있고 애셋들을 보호할 때 중요할 수 있다. 다른 메타데이터는 지리위치, 운영 체제, 서비스 배너들, TLS 인증서 세부사항들 등을 포함할 수 있다. 그래프 데이터 구조는 노드별, 에지별, 이들의 일부 조합, 또는 일부 다른 기반에 대한 메타데이터를 가질 수 있다.
예상 애셋 인벤토리 그래프 구축
애셋 인벤토리를 구축하는 발견 프로세스의 특정 실시예에서, 발견 프로세스는 가능한 일부 미리결정된 에지들을 가진 하나 이상의 초기 노드들에서 예상 애셋 인벤토리로 처리될 수 있는 더 큰 그래프로 그래프를 확장한다. 예상 애셋 인벤토리는 실제로 다른 노드들과 공통으로 소유되지 않은 노드들을 가질 수 있지만, 해당 애셋들이 실제로 애셋들 소유자에 의해 소유되고 있는지 여부를 평가하기 위한 추가 인적 또는 컴퓨터 검토를 위한 초기 가이드 역할을 할 수 있다.
도 1은 일 실시예에 따른 애셋 그래프들을 프로세싱하기 위한 그래프 프로세싱 시스템(100)을 예시한다. 본원에 예시된 바와 같이, 그래프 프로세서(102)는 데이터 및 기록들을 획득하기 위해 다양한 공공 또는 개인 데이터베이스들(104)에 질의를 하고 다양한 애셋들(106)과 상호작용하여 이러한 애셋들로부터 데이터를 획득한다. 획득된 데이터 및 기록들은 본원에 설명된 것과 같을 수 있다. 그래프 프로세서(102)는 인터넷과 같은 통신 네트워크(110)를 통해 다른 시스템(112)에 연결될 수 있다. 사용자 인터페이스(114)가 제공될 수 있고 본원에 설명된 바와 같이 그래프 구성을 위한 피드백을 컬링, 조정 및/또는 제공하기 위해 사용될 수 있다. 그래프 저장장치(120)는 구성된 그래프를 저장하기 위해 제공될 수 있고 도시되지 않은 다른 프로세스들에 이용가능하게 될 수 있다. 그래프 프로세서(102)는 일부 프로세싱 방법들을 사용하여 데이터베이스들 및 애셋들 자체의 데이터로부터 그래프를 구축하여 그래프를 생성할 수 있다.
도 2는 버스 서브시스템(204)을 통해 다수의 주변 서브시스템들과 통신하도록 구성될 수 있고 이에 동작가능하게 결합되는 하나 이상의 컴퓨터 시스템들 및 하나 이상의 프로세서들(202)을 포함할 수 있는 그래프 프로세서(102)의 더 많은 세부사항들을 예시한다. 이들 주변 서브시스템들은 메모리 서브시스템(208) 및 파일 저장 서브시스템(210)을 포함하는 저장 서브시스템(206), 하나 이상의 사용자 인터페이스 입력 디바이스들(212), 사용자 인터페이스 출력 디바이스들(214), 및 네트워크 인터페이스 서브시스템(216)을 포함할 수 있다.
버스 서브시스템(204)은 컴퓨터 시스템(200)의 다양한 구성요소들 및 서브시스템들이 의도한 대로 서로 통신할 수 있게 하는 메커니즘을 제공할 수 있다. 버스 서브시스템(204)이 단일 버스로서 개략적으로 도시되어 있지만, 버스 서브시스템의 대안적인 실시예들은 다중 버스들을 활용할 수 있다.
네트워크 인터페이스 서브시스템(216)은 다른 컴퓨터 시스템들 및 네트워크들에 인터페이스(222)를 제공할 수 있다. 네트워크 인터페이스 서브시스템(216)은 그래프 데이터 또는 사용자 피드백을 획득하기 위해 다른 시스템들로부터 데이터를 수신하고 다른 시스템으로 데이터를 송신하기 위한 인터페이스의 역할을 할 수 있다.
사용자 인터페이스 입력 디바이스들(212)은 키보드, 포인팅 디바이스들, 및 다른 유형들의 입력 디바이스들을 포함할 수 있다. 사용자 인터페이스 출력 디바이스들(214)은 디스플레이 서브시스템, 프린터, 비시각적 디스플레이들(예를 들어, 오디오 및/또는 촉각 출력 디바이스들), 또는 다른 그러한 디스플레이 디바이스들을 포함할 수 있다. 일반적으로, "출력 디바이스"라는 용어의 사용은 정보를 출력하기 위한 모든 가능한 유형들의 디바이스들 및 메커니즘들을 포함하기 위한 것이다. 사용자 인터페이스 출력 디바이스들(214)은, 예를 들어, 사용자 상호작용이 적절할 때, 본원에 설명된 프로세스들 및 그 변형들을 수행하는 애플리케이션들과의 그러한 상호작용을 용이하게 하기 위해 사용자 인터페이스들을 생성 및/또는 제시하는 데 사용될 수 있다.
저장 서브시스템(206)은 그래프 프로세서의 기능을 제공하는 프로그래밍 및 데이터 구성들을 저장하기 위한 컴퓨터-판독가능 저장 매체를 제공할 수 있다. 하나 이상의 프로세서들(202)에 의해 실행될 때 본원에 설명된 실시예들의 기능을 제공할 수 있는 소프트웨어(프로그램들, 코드 모듈들, 명령들)는 저장 서브시스템(206)에 저장될 수 있다. 저장 서브시스템(206)은 또한 그래프 프로세싱에 사용되는 데이터를 저장하기 위한 저장소를 제공할 수 있다. 예시적인 소프트웨어는 컬링, 필터링, 조정, 검색 및 본원에 설명된 다른 기능들을 구현하기 위한 프로그램 코드를 포함할 수 있다.
메모리 서브시스템(208)은 예를 들어 프로그램 실행 동안 명령들 및 데이터의 저장을 위한 랜덤 액세스 메모리(RAM)(218) 및 고정 명령들이 저장될 수 있는 판독-전용 메모리(ROM)(220)를 포함하는 다수의 메모리 디바이스들을 포함할 수 있다. 파일 저장 서브시스템(210)은 프로그램 및 데이터 파일들을 위한 비일시적 영구(비휘발성) 저장을 제공할 수 있고, 하드 디스크 드라이브, 및 다른 저장 매체를 포함할 수 있다.
그래프 프로세서(102)는 다양한 유형들의 컴퓨터들을 포함할 수 있고 다양한 운영 환경들에서 구현될 수 있고, 일부 경우들에서, 다양한 운영 환경들은 다수의 애플리케이션들 중 임의의 것을 동작하는 데 사용될 수 있는 하나 이상의 사용자 컴퓨터들, 컴퓨팅 디바이스들 또는 프로세싱 디바이스들을 포함할 수 있다. 사용자 또는 클라이언트 디바이스들은 표준 운영 체제를 실행하는 데스크톱, 랩톱 또는 태블릿 컴퓨터들과 같은 다수의 범용 개인용 컴퓨터들, 및 모바일 소프트웨어를 실행하고 아마도 인터페이스의 사용자 선택에 따라 다수의 네트워킹 및 메시징 프로토콜들을 지원할 수 있는 셀룰러, 무선 및 핸드헬드 디바이스들을 중 임의의 것을 포함할 수 있다. 다양한 실시예들은 전송 제어 프로토콜/인터넷 프로토콜("TCP/IP"), 사용자 데이터그램 프로토콜("UDP"), 개방형 시스템 상호 연결("OSI") 모델의 다양한 계층들에서 동작하는 프로토콜들, 파일 전송 프로토콜("FTP") 등과 같은 상업적으로 이용가능한 다양한 프로토콜들 중 임의의 것을 사용하여 통신들을 지원하기 위해 통상의 기술자들에게 친숙한 적어도 하나의 네트워크를 사용할 수 있다. 코드 또는 코드의 일부를 포함하기 위한 저장 매체 및 컴퓨터-판독가능 매체는 저장 매체 및 통신 매체를 포함하여, 컴퓨터-판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터 같은 정보의 저장 및/또는 송신을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 제거가능 및 비제거가능 매체 같은(그러나 이에 제한되지 않음) 기술 분야에 알려지거나 사용되는 적절한 매체를 포함할 수 있다.
도 3은 일 실시예에 따른 그래프 프로세서의 일부로서 사용되는 요소들을 예시한다. 도 3은 또한 본원에 설명된 실시예들의 요소들을 구현하기 위해 프로세서에 의해 사용될 수 있는 메모리 요소들의 예를 예시한다. 예를 들어, 기능 블록이 참조되는 경우, 기능 블록은 메모리에 저장된 프로그램 코드로 구현될 수 있다. 도 3은 제어 하에 애셋들 관리 시 애셋 그래프를 사용하는 그래프 프로세서 및/또는 컴퓨터 시스템의 일부일 수 있는 컴퓨터 시스템의 프로세서에 의해 액세스 및 실행될 수 있는 애플리케이션을 갖는 저장 디바이스(348)의 단순화된 기능 블록도이다. 애플리케이션은 서버들, 클라이언트들 또는 다른 플랫폼들 또는 디바이스들에서 실행되는 본원에 설명된 애플리케이션들 중 하나 이상일 수 있고 다른 곳에 예시된 클라이언트들 및/또는 서버들 중 하나의 메모리를 나타낼 수 있다. 저장 디바이스(348)는 프로세서에 의해 액세스될 수 있는 하나 이상의 메모리 디바이스일 수 있고, 저장 디바이스(348)는 하나 이상의 프로세서 판독가능 명령들을 저장하도록 구성될 수 있는 애플리케이션 코드(350)를 저장할 수 있다. 애플리케이션 코드(350)는 애플리케이션 로직(352), 라이브러리 기능들(354), 및 애플리케이션과 연관된 파일 I/O 기능들(356)을 포함할 수 있다.
저장 디바이스(348)는 또한 애플리케이션 변수들(362)을 수신하도록 구성된 하나 이상의 저장 위치들을 포함할 수 있는 애플리케이션 변수들(362)을 포함할 수 있다. 애플리케이션 변수들(362)은 애플리케이션에 의해 생성되거나 그렇지 않으면 애플리케이션에 로컬인 변수들을 포함할 수 있다. 애플리케이션 변수들(362)은 예를 들어 사용자 또는 외부 디바이스 또는 애플리케이션과 같은 외부 소스로부터 검색된 데이터로부터 생성될 수 있다. 프로세서는 애플리케이션 코드(350)를 실행하여 저장 디바이스(348)에 제공된 애플리케이션 변수들(362)을 생성할 수 있다.
하나 이상의 메모리 위치들은 디바이스 데이터(366)를 저장하도록 구성될 수 있다. 디바이스 데이터(366)는 사용자 또는 외부 디바이스와 같은 외부 소스에 의해 소싱되는 데이터를 포함할 수 있다. 디바이스 데이터(366)는 예를 들어, 송신되기 전 또는 수신된 후에 서버들 사이에서 전달되는 기록들을 포함할 수 있다. 다른 데이터(368)가 또한 제공될 수 있다.
저장 디바이스(348)는 또한 애플리케이션의 결과들 또는 애플리케이션에 제공된 입력들을 저장하도록 구성된 하나 이상의 저장 위치들(384)을 갖는 로그 파일(380)을 포함할 수 있다. 예를 들어, 로그 파일(380)은 행동의 이력을 저장하도록 구성될 수 있다.
도 3의 메모리 요소들은 사용자와 인터페이스하고, 그래프들을 생성하고, 본원에 설명된 프로세스의 다른 양태들을 관리하는 서버 또는 컴퓨터에 사용될 수 있다.
본원에 설명된 프로세스들의 동작들은 본원에 달리 나타내지 않거나 문맥상 명백히 모순되지 않는 한 임의의 적합한 순서로 수행될 수 있다. 본원에 설명된 프로세스들(또는 이들의 변형 및/또는 조합)은 실행 가능한 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에 수행될 수 있고 하드웨어 또는 이들의 조합에 의해 하나 이상의 프로세서에서 집합적으로 실행되는 코드(예를 들어, 실행가능 명령들, 하나 이상의 컴퓨터 프로그램들 또는 하나 이상의 애플리케이션들)로 구현될 수 있다. 코드는 예를 들어, 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로 컴퓨터-판독가능 저장 매체에 저장될 수 있다. 컴퓨터-판독가능 저장 매체는 비일시적일 수 있다.
그래프 구축
일부 실시예들에서, 그래프들이 구축되고 다른 실시예들에서 그래프들은 외부 소스들로부터 획득된다. 이제 예상 애셋 인벤토리 그래프를 구축하기 위한 프로세스가 설명될 것이다. 프로세스는 입력들, 메모리, 출력들 및 인터넷과 같은 네트워크에 대한 액세스하는 컴퓨터 시스템에서 동작할 수 있고 DNS(Domain Naming System) 데이터베이스, 이력 DNS 데이터베이스들, WHOIS 데이터베이스들 등과 같은 관심 데이터베이스들에 액세스할 수 있다.
예상 애셋 인벤토리 그래프를 구축하기 위한 이러한 프로세스에서, 아래에 설명된 다수의 단계들은 그래프의 노드들 및 에지들 및/또는 이들 에지들 및 노드들에 관한 메타데이터에 기반하여 예상 애셋 인벤토리 그래프에 노드 및/또는 에지를 추가하는 데 사용될 수 있다.
일부 프로세스들에서, 그래프는 노드로 시작하고, 다른 노드들은, 다른 애셋들이 기존 노드들에 대한 일부 관계(및 아마도 기존 노드와 새로운 노드 사이의 그래프 에지에 대해 표시된 일부 가중치)가 발견될 때 추가되지만, 또한 프로세스는 나중에 그래프와 덜 연관되는 것으로 보이는 컬링 노드들을 포함한다. 컬링은 또한 수동 입력들을 포함할 수 있다. 예를 들어, 그래프는 example.com, example1.com, example-inc.com 및 example-inc-sucks.com을 포함하도록 구축될 수 있고 수동 검토는 수동 검토자가, 해당 도메인이 실제로 다른 애셋들과 공통으로 소유 또는 제어되지 않거나, 그렇지 않을 가능성이 있다고 결정할 때 그래프로부터 example-inc-sucks.com을 컬링할 것이다.
그래프 디스플레이를 관찰한 후 사용자 피드백을 포함하여 일부 피드백을 사용하여, 프로세스는 그래프의 다른 노드들 또는 컬 분기들을 추가할 수 있다.
도메인 추가
일부 경우들에서, 도메인들이 도메인 등록에 사용된 동일한 이메일 주소 또는 동일한 전화 번호와 같이 예상 애셋 인벤토리 그래프에 이미 있는 도메인들과 공통적으로 일부 메타데이터를 갖는 경우 도메인들은 예상 애셋 인벤토리 그래프에 추가된다. 일반적으로, 매칭 프로세스에서, 필드에 따라, 데이터의 정규화는 매칭 단계 전에 수행될 수 있다(예를 들어, 모든 문자열들을 소문자로 만들기, 전화번호들에서 구두점, 대시들 및 공백 제거, 공통 호모글리프(homoglyph)들 - 0이 문자 "O"와 동일하게 취급됨, 등).
매칭 프로세스는 (a) 예상 애셋 인벤토리 그래프에 이미 있는 도메인들 세트(알려진 도메인)에 대한 메타데이터를 식별하기 위해 예상 애셋 인벤토리 그래프를 판독하는 단계, (b) 알려진 도메인들에 관한 특정 메타데이터를 선택하는 단계, c) 해당 메타데이터를 정규화하는 단계, (d) 해당 정규화된 메타데이터와 매칭하는 도메인 데이터베이스(예를 들어, DNA 데이터베이스, WHOIS 데이터베이스 등)를 검색하고, (e) 메타데이터가 소유권의 표시가 아닌 등록 프로세스의 아티팩트일 가능성이 있는 도메인들을 선택적으로 필터링하는 단계(예를 들어, 등록을 위해 "whoisguard"-유형 이메일 주소, 소유자 및 다른 많은 관련 없는 당사자들에게 서비스를 제공하는 대규모 클라우드 서비스를 가리키는 IP 주소, 소유자 자신의 도메인 이름이 아닌 이메일 서비스 제공자의 이메일 도메인 이름 등의 사용), (f) 각 나머지 매칭에 대해, 해당 도메인을 예상 애셋 인벤토리 그래프에 추가하는 단계, (g) 원하는 대로 반복하는 단계(예를 들어, 새로운 도메인들이 추가되지 않거나, 일부 미리결정된 수의 반복들이 수행될 때까지)를 포함할 수 있다.
정규화에 추가하거나 정규화 대신에, 정규식들과 같은 와일드카드 식이 사용될 수 있다. 예를 들어, WHOIS 데이터베이스를 검색할 때, 검색어는 "example.*\.com"일 수 있고 WHOIS 데이터베이스에서 whois/zone="example.*\.com"인 모든 도메인들을 반환한다.
검색에 사용되는 데이터베이스들은 현재 데이터베이스들 또는 이력 데이터베이스들일 수 있다. 예를 들어, 도메인이 회사 이메일 주소를 등록 주소 또는 기술 연락처 주소로 사용하여 등록되었지만, 나중에 등록 주소 또는 기술 연락처 주소가 레지스트라(registrar)의 주소들인 개인 등록으로 변경된 경우, 이력 DNS 데이터베이스 또는 이력 WHOIS 데이터베이스에 대한 참조는 더 많은 연결들을 제공하고 특정 소유자의 애셋들을 더 잘 식별할 수 있다. 다른 예로서, 소유자가 클라우드 제공자의 서브넷(예를 들어, Cloudflare, Incapsula, DoSArrest, Akamai 등)으로 전환하는 경우, 매칭 프로세스는 이력 데이터베이스를 스캔하여 소유자의 도메인이 이러한 서브넷을 사용하지 않은 시간을 찾고, 그 당시의 IP 주소를 보고 어떤 다른 도메인들이 그 당시 동일한 IP를 가리키는지를 찾을 수 있다. 이어서, 오늘로 빨리 감기하고 어느 것이 여전히 같은 위치에 있는지 본다. 이것은 공유 호스팅 및 다른 이유들로 인해 많은 긍정 오류들을 갖는 매칭 프로세스를 제공할 수 있다. 데이터베이스 자체 외에도, 이진 트리, 파일들의 조각 세트, 룩업 테이블 및/또는 mtbl 데이터 구조 중 하나 이상과 같은 다른 데이터 구조들이 검색될 수 있다. 보다 일반적으로, 효율적인 룩업들을 허용하는 데이터 구조는 직접 통합, API를 통해 액세스, 플랫 파일 반복, 메모리 내 포인터들 또는 캐시들 사용 또는 다른 방법으로 사용될 수 있다.
그래프 프로세서가 액세스하는 데이터베이스들은 공개적으로 이용가능한 DNS 서버들과 같은 공개 데이터베이스이거나, 이력 WHOIS 데이터베이스들과 같이 구독에 의해 유지 및 제공되는 개인 데이터베이스들이거나, 그래프 프로세서 운영자에 의해 내부적으로 유지관리되는 개인 데이터베이스일 수 있다.
컬링
일부 실시예들에서, 애셋들의 그래프 또는 데이터베이스는 이미 알려져 있지만 소유권이나 제어에 대한 어떤 표시를 가지지 않을 수 있다. 다른 경우들에서, 이 그래프 또는 데이터베이스는 생성될 필요가 없도록 질의들을 위해 구성되거나 액세스가능할 수 있고, 이어서 이는 공통 소유권 하에 있지 않는 것으로 보이는 애셋들을 필터링하고/하거나 공통 소유권 하에 있지 않는 것으로 보이는 그래프의 분기들을 컬링함으로써 공통 소유권 하에 있는 애셋들의 그래프를 결정하는 프로세스에 사용될 수 있다. 공통 소유권 또는 그 반대를 나타내는 일부 데이터는 노이즈 데이터일 수 있다. 복수의 표시기들을 사용하여, 공통 소유권에 대한 보다 강건한 그래프가 구성될 수 있다. 그래프가 분할되거나 다중 그래프들이 조합될 수 있는 위치에 대한 인간의 피드백을 취함으로써 공통 소유권의 그래프가 더 개선될 수 있다. 그래프의 충실도를 개선하기 위해 그래프 에지 가중치를 조정하기 위해 추가 표시기들이 프로세싱될 수 있다. 그래프는 모든 공통적으로 소유된 애셋들을 정확하게 도시하지 않고 공통적으로 소유하지 않은 애셋들은 도시하지 않을 수 있지만, 그럼에도 불구하고 그러한 그래프는 애셋들의 소유권에 대한 귀중한 정보를 제공하는 데 여전히 유용할 수 있다. 하나의 예는 애셋에 네트워크 제어를 배치하고, 패치들로 업데이트하고, 사용하지 않는 애셋들을 폐기하는 등에 의해 애셋들을 보호하려는 엔티티이다. 우수한 그래프를 사용하면, 엔티티는, 때때로 그래프가 실제로 엔티티에 의해 소유되지 않은 애셋을 제안하고 실제로 엔티티에 의해 소유된 일부 애셋들을 놓칠 수 있더라도 엔티티가 소유한 애셋들을 추적 및 서비스할 수 있다. 따라서, 그래프는 완벽할 필요는 없지만, 애셋 검토 작업들이 관리가능하도록 일부 필터링을 제공해야 한다.
일 실시예에서, 애셋 평가 시스템은 네트워크-연결 애셋들의 그래프 또는 데이터베이스를 프로세싱하거나, 액세스하고 애셋들 중 어느 것이 특정 소유 엔티티와 연관되거나 연관되지 않을 것인지를 결정하기 위해 일련의 평가들을 실행할 수 있다. 따라서, 일부 평가들은 긍정적인 지표들을 갖고, 일부 평가들은 부정적인 지표들을 갖는다.
아마도 그래프의 검토하거나 검토하지 않은 후, 추가 표시기들은 인간 입력으로부터 올 수 있다. 일부 실시예들에서, 인간 입력은 데이터를 수정하는 데 사용될 뿐만 아니라 그래프 프로세서가 찾은 데이터를 프로세싱하는 데 사용되는 규칙들에 사용될 수 있다. 예를 들어, 사용자는 그래프 프로세서가 애셋 공통 소유권을 평가할 때 임의의 URL 유사성들을 건너뛰거나 고려하지 않도록 하는 옵션을 선택할 수 있다.
가중치 에지들
일부 경우들에서, 가중치는 에지에 할당될 수 있다. 예를 들어, 예상 애셋 인벤토리 그래프에 있는 제1 도메인이 예상 애셋 인벤토리 그래프에 없는 제2 도메인과 공통으로 소유되는 것으로 확실히 알려진 경우, 제2 도메인은 제1 도메인과 제2 도메인을 연결하는 에지와 가중치 1.0을 갖는 에지를 갖는 그래프에서 노드로서 추가될 수 있다. 새로운 노드를 추가하기 위해 수행된 특정 검색 단계가 더 추측적일 수 있는 경우, 에지는 더 낮은 가중치가 할당될 수 있다. 예를 들어, 도메인 <companyname1.com>이 이미 예상 애셋 인벤토리 그래프의 노드이고 정규화를 통해 도메인 <companynameI.com>이 예상 애셋 인벤토리 그래프의 새로운 노드로 추가를 위해 고려되는 경우, 에지는 <companyname1.com>에 대한 노드와 <companynameI.com>에 대한 노드 사이의 예상 애셋 인벤토리 그래프에 추가될 수 있고 2개의 도메인들이 공통으로 소유되는지 여부에 대한 가능한 불확실성을 반영하기 위해 가중치 0.6을 나타내는 기록된 해당 에지에 대한 메타데이터가 추가될 수 있다. 따라서, 일부 검색 단계들은 연결 가중치 외에, 도메인 또는 다른 노드 세부사항을 반환할 수 있다.
애셋 그래프의 표현을 제시할 때, 가중치의 일부 표시는 제시될 수 있고 신뢰 등급으로 제시될 수 있다. 가능한 소유자에 의해 소유된 애셋에 대한 하나의 노드의 신뢰도가 노드들의 체인에 기반하는 경우, 신뢰 등급은 그에 따라 조정될 수 있다. 예를 들어, 예상 애셋 인벤토리 그래프가 확실히 소유자(O)가 도메인 "owner-o.tld"를 소유하고 있고 도메인 "owner-oh.tld"도 소유할 확률이 40%이고 발견 프로세스가 "owners-of-oh.tld" 도메인이 "owner-oh.tld" 도메인과 공통으로 소유될 확률이 50%인 경우, 검색 프로세스는 도메인 "owner-oh.tld"에 대한 예상 애셋 인벤토리 그래프에 노드를 추가하고 해당 확률들을 나타내는 신뢰 값 또는 가중치를 제공하는 것을 포함한다. 이것은 40% * 50% = 20% 또는 가중치들을 결합하는 일부 다른 방식일 수 있다.
가중치들은 추가될 수 있다. 예를 들어, 한 검색이, 2개의 도메인들이 공통 등록 이메일 주소를 갖는 것을 도시되는 경우, 해당 2개의 도메인들 사이의 에지들은 W1의 가중치가 할당될 수 있고 다른 검색이, 2개의 도메인들이 인증 기관을 공유하고 공유 그 자체가 W2의 가중치를 가질 가치가 있는 경우, 이들 2개의 도메인들에 대한 노드들 간의 예상 애셋 인벤토리 그래프에 사용된 가중치는 W1+W2의 가중치이거나 적어도 W1 및 W2 중 더 큰 것보다 큰 가중치일 수 있다.
하나의 노드가 소유자의 애셋을 나타내고 다른 노드가 또한 소유자의 애셋일 가능성이 있는 상대적 신뢰도를 나타낼 수 있는 에지들의 가중치 외에도, 노드 자체들은 신뢰 레벨을 나타내는 메타데이터를 가질 수 있다. 후자는 존재할 수 있는 다른 노드들 및 에지들과 무관하게, 주어진 노드가 주어진 소유자에 의해 소유된다는 신뢰 레벨일 것이다. 노드에 대한 신뢰 레벨은 해당 노드에 연결된 에지들의 신뢰 레벨들의 함수일 수 있지만, 일부 다른 방식으로 계산될 수 있다.
도 4는 추가된 데이터에 너무 많은 노이즈를 도입하는 것을 피하기 위해 사용될 수 있는 애셋들의 공통 제어를 나타낼 수 있는 데이터 포인트들에 적용될 수 있는 가중치의 예를 예시한다. 본원에 예시된 대로, 일부 더 관련성이 높은 표시는 높은 순위로 지정되고, 노이즈 표시는 더 낮은 순위로 지정된다. 그래프 프로세서는 영역(402)에 속하는 표시가 데이터의 자동화된 수용을 허용하기에 충분한 품질을 갖는 것으로 간주되는 반면, 영역(404)에 속하는 표시가 사람의 개입을 위해 플래그가 지정되고, 영역(406)에 속하는 표시가 고려되지 않거나, 보기에서 숨겨지도록 프로그래밍될 수 있다.
도메인 매칭 규칙들의 예들
공통 제어를 갖는 예상 애셋 인벤토리 그래프에 도메인이 추가되도록 하는 도메인 매칭들의 일부 예들은 다음을 포함할 수 있다:
1. 2개(또는 그 이상)의 도메인들은 공통 등록 이메일 주소를 공유한다: 그래프에 있는 도메인들의 경우, WHOIS 데이터베이스는 질의되어 기술 담당자, 관리 담당자 등 도메인 등록 시 공급된 담당자들의 이메일 주소를 식별할 수 있다. 이어서, 이러한 이메일 주소들은 예상 애셋 인벤토리 그래프에 이미 있는 도메인의 등록 이메일 주소와 매칭하는 등록 이메일 주소를 가진 도메인들의 기록들을 찾기 위한 질의 입력으로 사용될 수 있다. 이 서브-프로세스에 대한 논리식은 다음과 같을 수 있다:
(domain1.registration_email_address ===
domain2.registration_email_address).
2. 2개(또는 그 이상)의 도메인들은 공통 등록 이메일 주소 도메인을 공유한다: #1과 유사하지만, 등록 이메일 주소의 사용자 이름이 매칭할 필요가 없는 경우, 이메일 도메인만 선택적으로 애셋들에 대한 공통 제어 가능성을 나타내지 않는 대량 공유 도메인들을 필터링한다. (예를 들어, username1@gmail.com 및 username2@gmail.com을 사용한 등록은, gmail.com이 관련 없는 많은 사용자들 사이에서 공유되기 때문에 반드시 공통 제어를 나타내지 않을 것이다). 이 서브-프로세스에 대한 논리식은 다음과 같을 수 있다:
(hostname(domain1.registration_email_address) ===
hostname(domain2.registration_email_address)
3. 그래프에서 기존 도메인의 도메인과 이메일 주소를 사용하여 등록한 도메인: 그래프에 이미 있는 각 도메인들의 도메인 이름들은 그래프에서 절의될 수 있다. 이어서, WHOIS 데이터베이스는 검색되어 연락처 정보 이메일 주소를 갖는 다른 도메인을 찾을 수 있고, 여기서 해당 주소들은 그래프에 있는 도메인들을 포함한다. 예를 들어, example.com이 그래프에 있는 경우, 이 매칭 단계는 user@example.com 형식의 연락처 정보 이메일 주소를 갖는 WHOIS 데이터베이스의 다른 도메인들을 식별할 것이다. 필터는 공통 이메일 서비스들에서 호스팅된 연락처 정보 이메일 주소들을 갖는 도메인들을 캡처하지 않도록 시행될 수 있다. 그러나, 이 필터는, 그래프가 공통 이메일 서비스들을 참조하는 이들 도메인들을 애셋들로 포함하지 않을 가능성이 있는 경우 필요하지 않을 수 있다(예를 들어, gmail.com의 제어기 이외를 위해 구축된 그래프는 gmail.com을 사용자 애셋들 중 하나로 포함하지 않을 그래프임). 이 서브-프로세스에 대한 논리식은 다음과 같을 수 있다:
(domain1 === domain2.registration_email_address.domain).
4. 2개(또는 그 이상)의 도메인들은 공통 IP 주소를 공유한다: 그래프에 있는 도메인들의 경우, DNS 룩업은, 기존 도메인 각각에 대해 해당 도메인이 호스팅되는 IP 주소를 식별하기 위해 행해질 수 있다. 이어서, 동일한 IP 주소에서 또한 호스팅되는 다른 도메인들과 그래프에 추가된 다른 도메인들에 대한 DNS 데이터가 검색될 수 있다. 필터는 IP 주소가 클라우드 호스팅 서비스와 연관된 도메인들에 추가하는 것을 방지하기 위해 제공될 수 있고 - 그렇지 않으면 일반적인 최종-사용자 제어하에 있지 않은 클라우드 호스팅 서비스 고객들의 관련 없는 다수의 도메인들은 그래프에 추가될 것이다. 이 서브-프로세스에 대한 논리식은 다음과 같을 수 있다:
(domain1.ip_address === domain2.ip_address).
5. 2개(또는 그 이상)의 도메인들은 공통적으로 다른 WHOIS 필드를 공유한다: 그래프에 있는 도메인들의 경우, WHOIS 데이터베이스는 질의되어 연락처 이메일 주소들 이외의 WHOIS 필드들을 식별할 수 있고 이어서 해당 필드들은 질의 입력으로 사용되어 공통적으로 이들 필드들을 또한 갖는 다른 도메인들의 기록들을 발견할 수 있고, 이는 공통 제어를 나타낼 수 있다. 예들은 다음을 포함한다:
a. 하기와 같은 전화번호#:
(domain1.phone_number === domain2.phone_number)
b. CIDR 블록
c. 도메인이 등록된 개인 또는 엔티티의 IP 주소(남용-모니터링 데이터베이스 서비스에서 획득될 수 있음).
6. 매칭하는 콘텐츠 상호-참조들: 제1 호스트의 일부 호스팅된 콘텐츠는 다른 호스트의 콘텐츠를 참조할 수 있고/있거나 2개의 호스트들의 호스팅된 콘텐츠는 둘 모두 다른 호스트를 다시 참조할 수 있고, 이는 제1 호스트와 제2 호스트가 동일한 엔티티에 의해 제어되는 애셋들인 표시일 수 있다. 이 경우, 제1 호스트가 그래프에 있고 제2 호스트가 없는 경우, 제2 호스트는 제1 호스트와 제2 호스트 사이의 에지를 가진 그래프에 추가될 수 있고, 에지는 상호-참조들에 기반하여 결정된 가중치를 갖는다. 이러한 상호-참조의 일 예는 다른 블로그를 관리하는 소프트웨어가 그에 따라 업데이트할 수 있도록 하나의 블로그의 업데이트들 및 다른 이벤트들에 대해 블로그들 간에 신호를 보내는 블로깅 사이트들에서 사용되는 트랙백(trackback)들이다. 트랙백들은 콘텐츠에 내장된 트랙백 URL들로 표현될 수 있다.
트랙백 URL들의 하나의 특정 예는 WordPress 블로그들에 사용되고, WordPress 콘텐츠는 트랙백 URL들을 포함할 수 있다. 이 서브-프로세스에 대한 논리식은 다음과 같을 수 있다:
(domain1.html.wordpress_trackback ===
domain2.html.wordpress_trackback).
다른 예는 콜백(callback)이다. 그래프에 있는 제1 호스트의 요청, 예를 들어, HTTP 요청을 만드는 프로그램 코드가 트리거될 수 있다. HTTP 요청을 발행하는 기계는 응답으로 콜백을 수신할 수 있다. 해당 콜백은 그래프에 없는 제2 호스트에서 올 수 있다. 요청 수신자와 해당 요청에 대한 콜백 발행자가 일반적으로 제어되는 애셋들일 가능성에 따라 도메인 이름, IP 주소 및/또는 콜백 반환 URL이 그래프에 추가될 수 있다.
7. 2개(또는 그 이상)의 애셋들은 CIDR 블록을 공유한다: CIDR(Classless Inter-Domain Routing) 블록은 일반적으로 제어될 수 있는 IP 주소들 범위를 나타낼 수 있다. 일부 애셋들은 특정 CIDR 블록들에 매핑될 수 있다. 예를 들어, 검색 프로세스는 제1 서브도메인인 제1 애셋과 연관된 제1 IP 주소 및 제2 서브도메인인 제2 애셋과 연관된 제2 IP 주소를 찾기 위해 로컬 DNS 시스템에 질의할 수 있다. 제1 IP 주소와 제2 IP 주소가 동일한 CIDR 블록에 있고 제1 애셋이 그래프에 있고 제2 애셋이 없는 경우, 제2 애셋은 공통적으로 할당된 CIDR 블록을 가리키는 이들 둘 모두에 기반하여 그래프에 추가될 수 있다.
일반적으로, 하나의 엔티티가 전체 CIDR 블록(IP 주소 레지스트리 또는 배정 데이터베이스를 통해 결정될 수 있음)이 할당된 경우, 해당 CIDR 블록의 IP 주소들을 가리키는 서브도메인들이 일반적으로 해당 엔티티에 의해 제어될 수 있다. 그래프에 애셋을 추가하기로 한 결정은 IP 주소가 클라우드 호스팅 서비스 또는 SaaS(Software-as-a-Service) 서비스와 연관된 애셋들을 추가하지 못하도록 필터링될 수 있다 - 그렇지 않으면, 일반적인 최종 사용자 제어 하에 있지 않은 서비스들의 고객들의 관련 없는 다수의 애셋들이 그래프에 추가된다.
그래프에 이미 있는 애셋과 함께 공통으로 CIDR 블록을 갖는 것에 기반하여 애셋이 추가되면, 애셋들 간의 에지는 CIDR 블록에 의지하는 애셋의 연결 강도 표시에 해당하는 가중치로 그래프에 추가될 수 있다.
그러한 노드들 추가의 적용가능성, 또는 사용된 가중치들은 아마도 인간 사용자들로부터 획득된 피드백에서 저장된 데이터에 따를 수 있다. 예를 들어, 다른 사용자가, 공통 CIDR의 애셋들이 공통으로 제어되지 않는다고 표시한 경우, 나중 매칭들의 가중치를 낮출 수 있다.
공통 CIDR 블록들에 기반하는 노드들 추가 단계는 애셋이 그래프에 추가되기 전에 5개 또는 10개의 애셋들과 같이 공통 CIDR 블록에 1개 초과의 제어된 애셋이 존재하는 임계치를 가질 수 있다.
8. 2개(또는 그 이상)의 애셋들은 다른 애셋들에 의해 정의된 공통 IP 범위를 공유한다: 제1 애셋과 제2 애셋이 그래프에 나열되고 고유한 IP 주소들을 갖는 경우, 해당 IP 주소들은 IP 주소들의 범위를 정의한다. 그래프에 없는 애셋들인 연관된 IP 주소들을 갖는 다른 애셋들을 고려할 때, 다른 애셋들은 이를 기반으로 그래프에 추가될 수 있다. 이는 다중 IP 주소들의 애셋들이 단일 엔티티에 의해 제어되는 경우, 해당 단일 엔티티가 알려진 IP 주소들 사이의 IP 주소들을 또한 제어할 수 있다는 가정에서 파생될 수 있다. 그래프에 애셋을 추가하기로 한 결정은 IP 주소가 클라우드 호스팅 서비스 또는 SaaS(Software-as-a-Service) 서비스와 연관된 애셋들을 추가하지 못하도록 필터링될 수 있다 - 그렇지 않으면, 일반적인 최종 사용자 제어 하에 있지 않은 서비스들의 고객들의 관련 없는 다수의 애셋들이 그래프에 추가된다.
그래프에 이미 있는 애셋들의 IP 주소들 사이의 범위에 있는 IP 주소들에 기반하여 애셋이 추가되는 경우, 애셋들 간의 에지는 IP 주소 범위에 의지하는 애셋들 강도 표시에 해당하는 가중치로 그래프에 추가될 수 있다.
그러한 노드들 추가의 적용가능성, 또는 사용된 가중치들은 아마도 인간 사용자들로부터 획득된 피드백에서 저장된 데이터에 따를 수 있다. 예를 들어, 다른 사용자들이 IP 주소 범위의 애셋들이 일반적으로 제어되지 않는다고 표시한 경우, 이는 나중 매칭들을 항목의 가중치를 낮출 수 있다.
9. 2개(또는 그 이상)의 애셋들은 다른 CIDR 차단 피처들을 공유한다: 하나의 애셋이 그래프에 있고 다른 애셋이 공통적으로 피처를 갖고 그래프에 없는 경우, 제2 애셋이 추가될 수 있다. 공통 피처의 예는 도메인들이 유사하게 보이는 도메인들의 모든 도메인들에 대한 IP 공간을 둘러싼 "example.*\.com" 도메인과 같은 공통 피처들 가진다는 것이다. RIR 존 파일들에서 취해진 최소/가장 제한된 CIDR 블록으로 범위를 좁힌다.
10. 2개(또는 그 이상)의 애셋들은 ASN 상관을 갖는다: 그래프에 있는 제1 도메인의 ASN 정보가 그래프에 없는 제2 호스트의 ASN 정보와 매칭하는 경우, 제2 호스트는 제1 호스트와 제2 호스트 사이의 에지를 사용하여 그래프에 추가될 수 있다. 공통 ASN 정보를 갖는 도메인들은 모두 동일한 공간을 가리킬 가능성이 있다 - 특히 동일한 IP 공간을 가리키는 2개 이상의 도메인들 간에 오버랩이 큰 경우에 그러하다. ASN은 자율 시스템을 고유하고 전역적으로 식별하는 자율 시스템 번호일 수 있다. 자율 시스템은 연결된 IP 라우팅 접두사들을 사용하고 특정 관리 엔티티 또는 도메인에 의해 제어되거나, ISP(인터넷 서비스 공급자)에 의해 제어되는 호스트들로 구성될 수 있다. ASN들은 전역 레지스트리에 등록될 수 있다.
11. 인증 기관(CA) 상관: 프로세스는 이용가능한 경우 CA들 도메인이 사용하는 노드 메타데이터에서 추출된다. 이어서, 사용 중인 CA 목록은 CA 데이터베이스 또는 트리를 검색하기 위한 검색 입력으로 사용되어 그래프에 없는 다른 도메인을 식별하고, 여기서 이러한 도메인들은 그래프에 있는 도메인들과 공통된 CA를 갖는다. 이것은 CA를 공유하는 애셋들을 캐치하고, 이는 공통으로 소유 가능성을 나타낼 수 있다. 이는 CA가 얼마나 큰가에 기반하여 가중될 수 있다 - 더 큰 CA를 공유하는 2개의 도메인들은 더 작은 CA를 공유하는 2개의 도메인들보다 공통으로 소유할 가능성이 낮다.
12. 이력 DNS 및 WHOIS 엔트리들 분석: 현재 시간 DNS 데이터베이스 또는 WHOIS 데이터베이스 성능을 시험하는 것 외에, 위 단계들 중 일부는 그래프의 추가 노드들을 식별하기 위해 DNS 데이터베이스 또는 WHOIS 데이터베이스의 이력 또는 보관된 버전들에서 수행될 수 있다. 이력 검색을 통해 추가된 노드 에지들의 가중치들은 기록이 얼마나 오래된 지에 기반하여 가중될 수 있다. 예를 들어, 제1 도메인이 그래프에 있고 제2 도메인과 제3 도메인이 없지만, 제2 도메인과 제3 도메인이 제1 도메인과 공통으로 등록 이메일 주소를 갖거나 모두 과거에 공통 IP 주소와 연관되는 경우, 제2 도메인 및 제3 도메인은 그래프에 추가될 수 있다. 제1 도메인과 제2 도메인 사이의 연결이 제1 도메인과 제3 도메인 사이의 연결보다 이력 데이터에서 훨씬 더 최신인 경우, 아마도 제1 도메인과 제2 도메인 사이의 에지는 제1 도메인과 제3 도메인 사이의 에지보다 더 높은 가중치가 할당될 것이다.
웹페이지 콘텐츠에 기반한 도메인 또는 웹페이지 추가
다른 프로세스에서, 도메인 이름, 웹페이지 등과 같은 애셋의 잠정 소유권은 웹페이지들의 콘텐츠를 프로세싱함으로써 행해진다. 이러한 콘텐츠를 고려하여, 자동화된 프로세스는 예상 애셋 인벤토리 그래프에 애셋을 추가할지 여부를 결정할 수 있다. 정규화가 여기에 또한 사용될 수 있다.
매칭 프로세스는 소유권 표시 역할을 할 수 있는 문자열들 또는 다른 메타데이터를 식별하기 위해 예상 애셋 인벤토리 그래프를 판독하는 단계를 포함할 수 있다. 예를 들어, 웹 페이지는 저작권 표시와 회사 이름, 또는 HTML 코드에 내장된 회사 이름을 포함할 수 있다. 이어서, 해당 표시는 웹 페이지들, 검색 엔진 색인들 등과 같은 다른 콘텐츠에서 검색된다. 검색에서 찾은 매칭들은 예상 애셋 인벤토리 그래프에 추가될 수 있다. 알려진 긍정 오류에 대한 필터링이 또한 수행할 수 있다. 애셋들이 추가될 때 반복이 수행될 수 있고, 원하는 대로 새로-추가된 애셋들을 반복할 수 있다(예를 들어, 새로운 도메인들이 추가되지 않을 때까지, 또는 미리결정된 반복 횟수들이 수행될 때까지).
이러한 표시의 예들은 다음을 포함할 수 있다:
1. 광고 시스템 키워드들(예를 들어, Google Analytics 키 또는 Google Adwords 키): 특정 키워드에 대한 콘텐츠를 검색하고, 해당 키워드를 포함한 도메인들 또는 다른 애셋들을 식별하여 그래프에 추가한다.
2. 링크 태그들: rel 유형을 포함하는 링크 태그들을 검색하여 2개 이상의 사이트들이 동일한 사이트/페이지라고 주장하는 경우를 식별한다. 정규화가 사용될 수도 있거나, 사용하지 않을 수 있다.
3. 상이한 HTML 페이지들의 고유 문자열들: 다른 사이트들(예를 들어, Copyright 20xx, Company Inc.)에 대한 다른 HTML과 매칭하는 회사 이름 및 저작권 표시들을 찾는다. 이름들은 약간의 철자 오류와 변형들이 동일한 것으로 처리되도록 정규화될 수 있다.
다른 예들
1) 수행될 수 있는 하나의 테스트는 사이트(S)가 특정 다른 사이트들에 대한 링크를 포함하는 페이지들을 갖는 여부를 조사하여, 가능한 상관들을 나타내는 것이다. 일부 과도하게 공통 링크된 사이트들은 대규모 검색 엔진 사이트들 및 대규모 소셜 미디어 사이트들과 같이 관련이 없지만 공통 사이트들과의 상관을 추론하는 것을 피하기 위해 제외될 수 있다. 이들 상관들은 계산되어 히스토그램들로 제시되거나, 블랙리스트들로 저장되거나, 사용자 피드백을 사용하여 객체가 애셋이 아님을 나타내는 기계 학습 출력과 같은 긍정 오류들을 나타낼 수 있다. 예를 들어, 그래프의 데이터는 네트워킹, 인터넷 프로토콜들 및 서비스 제공자들에 익숙한 사용자에게 제공될 수 있고, 이어서 사용자는 공통 제어하에 있는 것으로 플래그 지정된 연결을 쉽게 발견할 수 있지만 소정 서비스 제공자들이 관련 없는 고객 애셋들보다 해당 연결을 사용한다는 것을 알고 있을 수 있다. 이어서, 이러한 연결들은 긍정 오류들로 라벨링될 수 있다.
2) 다른 테스트는 시스템이 URL들의 근접성 테스트를 수행하도록 하는 것이다. 예를 들어 "example.com"을 포함하는 URL은 "example-test.com"을 포함하는 다른 URL과 상관되는 것으로 간주될 수 있다. 사용자 피드백, 또는 컴퓨터 프로세스는 공통 제어하에 있는 것으로 보이는 일부 URL들이 있을 수 있지만, 기본 애셋은 그렇지 않다고 결정할 수 있다. 예를 들어, URL들이 콘텐츠 전송 네트워크 또는 클라우드 서비스 제공자에 의해 관련되지 않은 다수의 고객들에게 생성되는 반면, 객체들이 asset1.<CDN-TLD>.com 및 asset2.<CDN>.com과 같이 유사하고 관련된 URL들을 가질 수 있는 경우, 그 유사성은 반드시 해당 애셋들의 공통 제어에서 비롯되는 것은 아니다.
3) 또 다른 테스트에서, 사이트 X에서 시작하는 링크들을 따라가다가 사이트 Y가 발견되고 사이트 Y가 사이트 X의 페이지들에 대한 링크들을 포함하는 경우, 이는 X와 Y의 상관인 것으로 간주될 수 있다.
4) 사이트 X와 사이트 Z가 둘 모두 사이트 인벤토리에 저장되어 있고 사이트 Y의 페이지들에 대한 링크와 사이트 Y의 페이지들에 대한 링크들이 X 또는 Z를 가리키는 것으로 발견되면, 이는 상관 표시로 사용할 수 있다.
5) 내부-사용 주소들 필터링: 일부 실시예들에서, 예를 들어, 그 내부 네트워크들에 대해 상관없는 파티들에 의해 사용되는 것으로 알려진 주소들(10.x.x.x 및 192.168.x.x) 같은, 예를 들어 관련되어 있는 것으로 보이지만 이러한 IP 주소들이 내부-용도인 IP 주소들에 기반하여 상관이 가정되는 경우 플래그 지정하는 것이 유용할 수 있다. 이는 일반적인 전역 사용 이외의 용도로 예약된 것으로 알려진 주소 범위들에 또한 적용될 수 있다.
6) 반드시 상관되지 않는 공통적으로 사용되는 TLD에 대한 필터링: 예를 들어, 둘 모두 .arpa TLD를 갖는 호스트이름들에 대한 PTR 기록들을 갖는 2개 이상의 IP들은, 많은 관련 없는 IPv4 및 IPv6 주소들의 경우일 수 있기 때문에, 임의의 상관으로 인한 것이 아닐 수 있다.
7) 효과적인 TLD 필터링: 일부 실시예들에서, 고려된 상관들은 "유효" TLD들에 기반하는 경우 무시된다. 예를 들어 *.co.uk 도메인들은 *.example.com 도메인들의 경우처럼 상관되지 않는다. 오히려, "example.co.uk" 및 "example2.co.uk"가 상이한 서브도메인들이 아닌 상이한 도메인들로 취급되는 것과 같이 효과적인 도메인에서 상관되어야 한다. 변형에서, 시스템은 효과적인 TLD들 또는 TLD들을 상관되는 것으로 취급하지만 효과적인 TLD들에 대한 상관의 사소한 또는 조정가능한 측정으로 취급한다. 예를 들어 <company>.<tld> 또는 .<company>는 모두 단일 엔티티에 의해 소유된 것으로 알려진 경우 상관될 수 있다.
상관 조정들: 시스템은 내부 RFC 1918 유형 주소들, RFC 4193 유형 주소들, RFC 6890 유형 주소들, RFC 3927 유형 주소들, 루프백 주소들, 로컬 링크 주소들, 브로드캐스트 주소들, 캐리어 등급 NAT 프로세스들, 고유한 로컬 주소들, 2개의 관련 없는 엔티티들이 동일한 라우팅-불가능 IP에 대해 상이한 DNS 참조들을 갖고 있음을 나타낼 수 있는 다른 라우팅-불가능 인터넷 프로토콜 주소들 같은 주소 공간들의 비정상적인 사용들에 기반하여 상관이 초기에 결정되는지 여부와 같은 요인들에 따라 상관들의 가중치를 증가하거나 낮출 수 있다. 보다 일반적으로, 주소 공간들은 관련되지 않은 복수의 엔티티들에서 재사용되는 것일 수 있으므로 2개의 애셋들은 동일한 주소 공간에 있을 수 있지만, 반드시 하나의 엔티티와 연관된 주소 공간일 필요는 없으므로 상관은 애셋들의 긍정 오류 연관을 초래한다.
시스템이 수행할 수 있는 다른 상관 조정은 공유 호스팅 제공자들, 클라우드 기반 WAF들, CDN들 및 가상 호스팅 제공자들과 같이 IP 공간을 공유하는 알려진 제공자들 간의 링크 확률에 대한 가중치들을 제거하거나 심각하게 줄이는 것이다.
시스템이 수행할 수 있는 다른 상관 조정은 발견된 링크가 도메인 프록시 서비스들, 도메인 프라이버시 서비스들, 비어 있거나 정의되지 않은 whois 결과들, 알 수 없거나 숨겨져 있음을 나타내는 플레이스홀더 결과(placeholder result)들, 수동/비-자동 단계들이 언커버될 것을 요구하는 플레이스홀더 결과들, 또는 임의의 종류의 프라이버시 프록시 기업을 포함하지만, 이에 제한되지 않는 개인 서비스인 것으로 알려질 때 whois 또는 임의의 알려진 파생된 회사 주소들을 포함하지만, 이에 제한되지 않는 이메일 주소(들), 전화번호(들) 및 물리적 주소(들)를 통한 링크 확률에 대한 가중치들을 제거하거나 심각하게 줄이는 것이다.
도 5는 예시적인 그래프 구축 프로세스의 흐름도이다. 본원에 예시된 바와 같이, 단계(501)에서, 그래프 프로세서는 소스들을 갖는 인벤토리를 획득할 수 있다. 단계(502)에서, 그래프 프로세서는 새로운 또는 알려진 가중치들에 기반하여 도메인 제안 프로세스를 시작한다. 단계(503)에서, 그래프 프로세서는 긍정 오류들을 제공하는 것으로 알려진 소스들을 제거할 수 있다. 단계(504)에서, 그래프 프로세서는 아마도 경로의 길이에 대한 제한을 겪는 나머지 소스들에서 링크들을 찾을 수 있다. 단계(505)에서, 그래프 프로세서는 알려진 긍정 오류들을 제거할 수 있다. 단계(506)에서, 그래프 프로세서는 아마도 도 4에 도시된 것과 같은 메트릭들에 기반하여 인벤토리에 소스들을 자동으로 추가할지 여부를 테스트할 수 있다. 단계(507)에서, 그래프 프로세서는 도 4의 영역(404) 내에 속하는 표시에서와 같이 수동 검토를 요청할 수 있고 단계(508)에서 가능성이 낮은 에지들을 숨기거나 드롭할 수 있다. 단계(506)에서, 프로세스는 다시 단계(502)로 흐를 수 있다. 단계(507)에서, 프로세스는 사용자 입력에 기반하여 가중치들을 조정하기 위해 단계(509)로 흐를 수 있고, 이어서 사용자가 동의-소스들을 인벤토리에 추가하기 위해 단계(510)로 흐를 수 있고, 프로세스는 다시 단계(502)로 흐를 수 있다.
구현 예들
일부 실시예들에서, 그래프 프로세싱은 입력 데이터로부터, 가능하게는 다양한 정도의 확실성 또는 확률로, 공통 제어하에 있는 것으로 간주되는 애셋 세트들을 나타내는 그래프 또는 다른 데이터 구조를 결정하기 위해 수행된다. 애셋들의 세트는 네트워크-연결 디바이스들, 서비스들, 논리적 객체들, 상표들, 이름들, 참조들 등일 수 있다. 하나의 접근법에서, 결과 데이터를 개선하기 위한 결과 조정들의 다른 표시 또는 긍정 오류에 대한 인간 사용자 피드백에 기반하여 확장 검색이 수행된 후 축소된다. 일부 경우들에서, 그래프는 애셋들 및 다른 애셋들에 대한 연결을 나타내는 연결된 그래프이다. 다른 실시예들에서, 결과 그래프는 단지 모든 애셋들을 다른 애셋들 또는 심지어 일부 애셋들에 반드시 연결하지 않아도 되는 데이터 구조일 수 있다.
일부 실시예들에서, 상이한 표시는 상이한 가중치들을 가질 수 있고 애셋들에 대한 제어의 공통성은 개별 표시의 가중 합들에 의해 결정될 수 있다. 가중치들은 사람의 입력, 기계 학습, 피드백 또는 다른 방법들에서 파생될 수 있다. 가중치들은 양수 및/또는 음수일 수 있고, 예를 들어, 표시기에 대한 양의 가중치는 해당 표시기가 공통 제어하에 있는 애셋을 암시하거나 결정한다는 것을 의미할 수 있고, 표시기에 대한 음의 가중치는 표시기가 공통 제어 하에 있지 않은 애셋들을 암시하거나 결정한다는 것을 의미할 수 있다.
일부 실시예들에서, 기계 규칙들 및/또는 인간 입력은 로그-테일 연결을 줄이는 데 사용될 수 있다. 예를 들어, 그래프 프로세서는 애셋 A와 애셋 B가 공통으로 소유되고, 애셋 B와 애셋 C가 공통으로 소유되어, 애셋 A와 애셋 C가 공통으로 소유된다는 결정을 할 수 있다. 그래프 프로세서는 확장들의 수를 제한하도록 프로그래밍될 수 있어서, 예를 들어, 위에서 설명된 바와 같이, 순차적으로 각 애셋들 A, B, C, ..., J, K, L이 다음 애셋과 공통으로 소유될 가능성이 있는 것으로 밝혀지고, 8개 단계들의 그래프 경로가 있는 경우, 애셋들 A 내지 H는 공통 소유로 간주될 수 있지만, 개별 단계들에서 애셋 A 내지 애셋 L까지의 경로가 있기 때문에 애셋 I 내지 L는 공통 소유로 간주되지 않는다.
일부 실시예들에서, 초기 그래프는 해당 팀의 조직에 의한 제어하에 있는 것으로 알려진 애셋들을 나열하는 운영 팀에 의해 유지관리되는 쉼표로 구분된 파일들 또는 스프레드시트와 같은 사용자 도구를 사용하여 업로드된다. 이로부터, 그래프 프로세서는 목록에 없는 애셋들을 추정할 수 있다.
도 6은 그래프 검색 및 그래프 제한을 예시한다. 예시된 바와 같이, 그래프 프로세서(602)는 애셋 A를 엔트리들 중 하나로 포함하는 애셋 인벤토리(604)를 판독한다. 그래프 프로세서(602)는 애셋 A에 관한 더 많은 데이터를 식별하기 위해 애셋 A에 질의하고, 애셋 A가 여전히 존재하고 응답하는지 등을 조사한다. 그래프 프로세서(602)는 애셋 인벤토리(604)에 이미 있는 다른 애셋에 대해 이를 수행할 수 있다. 애셋 A가 하나 이상의 표시에 따라 애셋 B 및 애셋 C와 상관하고 있음을 주목하면, 그래프 프로세서(602)는 애셋 B 및 애셋 C에 유사하게 질의하여 그들에 관한 더 많은 데이터를 식별하고 이들이 여전히 존재하고 응답하는지 조사할 수 있다. 그래프 프로세서(602)는 애셋 A에 대한 링크에 기반하여 애셋 C를 방문하고, 애셋 C와 애셋 D 사이의 상관을 찾을 수 있다. 이 예에서 애셋 D는 고려하기에 너무 먼 것으로 간주되어, 방문되지 않는다.
도 7은 추가적인 실시예를 예시한다.
일 실시예에 따르면, 본원에 설명된 기법들은 펌웨어, 메모리, 다른 저장장치, 또는 조합의 프로그램 명령들에 따라 기법들을 수행하도록 프로그래밍된 하나 또는 일반화된 컴퓨팅 시스템에 의해 구현된다. 데스크톱 컴퓨터 시스템들, 휴대용 컴퓨터 시스템들, 핸드헬드 디바이스들, 네트워킹 디바이스들 또는 기법들을 구현하기 위해 유선 및/또는 프로그램 로직을 통합하는 임의의 다른 디바이스와 같은 특수 목적 컴퓨팅 디바이스들이 사용될 수 있다.
본원에 설명된 프로세스들의 동작들은 본원에 달리 나타내지 않거나 문맥상 명백히 모순되지 않는 한 임의의 적합한 순서로 수행될 수 있다. 본원에 설명된 프로세스들(또는 이들의 변형 및/또는 조합)은 실행 가능한 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에 수행될 수 있고 하드웨어 또는 이들의 조합에 의해 하나 이상의 프로세서에서 집합적으로 실행되는 코드(예를 들어, 실행가능 명령들, 하나 이상의 컴퓨터 프로그램들 또는 하나 이상의 애플리케이션들)로 구현될 수 있다. 코드는 예를 들어, 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로 컴퓨터-판독가능 저장 매체에 저장될 수 있다. 컴퓨터-판독가능 저장 매체는 비일시적일 수 있다.
"A, B, C 중 적어도 하나" 또는 "A, B 및 C 중 적어도 하나" 형식의 구와 같은 접속 언어는 달리 구체적으로 명시되지 않거나 달리 문맥상 명백하게 모순되지 않고, 달리 항목, 용어 등을 제시하기 위해 일반적으로 사용되는 문맥으로 이해되지 않으면, A 또는 B 또는 C, 또는 A 및 B 및 C 세트의 임의의 비어 있지 않은 서브세트일 수 있다. 예를 들어 3개의 멤버들을 갖는 세트의 예시적인 예에서, 접속구들 "A, B, 및 C 중 적어도 하나" 및 "A, B 및 C 중 적어도 하나"는 다음 세트들 중 임의의 것을 지칭한다: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. 따라서, 그러한 접속 언어는 일반적으로 소정 실시예들 A 중 적어도 하나, B 중 적어도 하나 및 C 중 적어도 하나가 각각 존재해야 한다는 것을 의미하도록 의도되지 않는다.
본원에 제공된 임의의 그리고 모든 예들, 또는 예시적인 언어(예를 들어, "이를테면")의 사용은 단지 본 발명의 실시예를 더 잘 설명하기 위해 의도되고 달리 청구되지 않는 한 본 발명의 범위를 제한하지 않는다. 명세서의 어떤 언어도 임의의 주장되지 않은 요소를 본 발명의 실행에 필수적인 것으로 나타내는 것으로 해석되어서는 안 된다.
전술한 명세서에서, 본 발명의 실시예들은 구현마다 다를 수 있는 다수의 특정 세부사항들을 참조하여 설명되었다. 따라서, 본 명세서 및 도면들은 제한적 의미보다 예시적인 의미로 간주되어야 한다. 본 발명의 범위의 유일하고 배타적인 표시기, 및 출원인들에 의해 본 발명의 범위인 것으로 의도된 것은 임의의 후속 수정을 포함하여, 청구범위들이 발행하는 특정 형태에서, 본 출원에서 발행한 청구범위 세트의 문자 그대로 동등한 범위이다.
본 개시 내용을 읽은 후 통상의 기술자는 추가 실시예를 구상할 수 있다. 다른 실시예들에서, 전술한 발명의 조합들 또는 서브조합들은 유리하게 이루어질 수 있다. 구성요소들의 예시적인 배열들은 예시의 목적들로 도시되며 조합들, 추가들, 재배열들 등이 본 발명의 대안적인 실시예들에서 고려되는 것으로 이해되어야 한다. 따라서, 본 발명이 예시적인 실시예들에 관하여 설명되었지만, 통상의 기술자는 다수의 수정들이 가능하다는 것을 인식할 것이다.
예를 들어, 본원에 설명된 프로세스들은 하드웨어 구성요소들, 소프트웨어 구성요소들, 및/또는 이들의 임의의 조합을 사용하여 구현될 수 있다. 따라서, 본 명세서 및 도면들은 제한적 의미보다 예시적인 의미로 간주되어야 한다. 그러나, 청구범위에 기재된 본 발명의 보다 넓은 사상 및 범위를 벗어나지 않고 다양한 수정들 및 변경들이 이루어질 수 있고 본 발명이 이하의 청구범위의 범위 내에서 모든 수정들 및 균등물을 포함하도록 의도됨이 명백할 것이다.
본원에 인용된 공개물들, 특허 출원들 및 특허들을 포함한 모든 참고 문헌들은 마치 각 참고 문헌이 개별적으로 그리고 구체적으로 참조로 통합되는 것으로 표시되고 그 전체가 본원에 기재된 것처럼 동일한 정도로 참조로 포함된다.
Claims (39)
- 예상 애셋 인벤토리 그래프를 나타내는 그래프 데이터 구조를 구성하는 방법으로서, 상기 그래프 데이터 구조는 각각이 네트워크의 애셋을 나타내는 노드들, 및 상기 노드들과, 상기 그래프 데이터 구조에 표현된 가중치들을 갖고 상기 그래프 데이터 구조에 표현된 애셋들의 공통 제어를 나타내는 적어도 일부 에지들 사이의 연결을 각각 나타내는 에지들을 포함하는, 상기 그래프 데이터 구조를 구성하는 방법에 있어서,
상기 그래프 데이터 구조에 적어도 하나의 시드 애셋(seed asset)의 표현을 저장하는 단계:
추가 노드가 상기 예측 애셋 인벤토리 그래프 상에 이미 있는 노드와 상기 추가 노드 사이의 매칭을 나타내는 매칭 기준에 기반하여 상기 애셋들의 공통 제어하에 있는 것으로 추정되는 것을 나타내는 상기 매칭 기준에 기반하여 상기 추가 노드를 포함하도록 상기 예상 애셋 인벤토리 그래프를 확장하는 단계;
상기 추가 노드와 상기 예상 애셋 인벤토리 그래프에 아직 표현되지 않은 제3 애셋을 나타내는 제3 노드 사이의 상기 매칭 기준을 재귀적으로 적용하는 단계;
공통 제어를 나타내는 표시 임계치 미만의 가중치들을 갖는 에지들의 식별에 기반하여 상기 예상 애셋 인벤토리 그래프의 분기들을 컬링(culling)하는 단계; 및
상기 확장 및 컬링에 기반하여 상기 그래프 데이터 구조를 업데이트하는 단계를 포함하는, 그래프 데이터 구조를 구성하는 방법. - 제 1 항에 있어서, 상기 확장하는 단계는:
상기 예상 애셋 인벤토리 그래프에 이미 있는 애셋들의 세트를 포함하는 알려진 애셋들에 대한 메타데이터를 식별하기 위해 상기 예상 애셋 인벤토리 그래프를 판독하는 단계;
상기 알려진 애셋들에 관한 미리결정된 메타데이터를 선택하는 단계;
정규화된 메타데이터를 형성하기 위해 상기 미리결정된 메타데이터를 정규화하는 단계;
정규화된 메타데이터와 매칭하는 애셋 데이터베이스를 검색하는 단계;
메타데이터가 소유권 또는 제어의 표시가 아닌 등록 프로세스의 아티팩트일 가능성이 있는 애셋들에 대한 노드들을 필터링하는 단계; 및
각 나머지 매칭에 대해, 해당 애셋을 상기 예상 애셋 인벤토리 그래프에 추가하는 단계를 포함하는, 그래프 데이터 구조를 구성하는 방법. - 제 1 항에 있어서, 상기 예상 애셋 인벤토리 그래프의 에지의 가중치는 개별 매칭 가중치들의 합이고, 이에 의해 더 많은 수의 매칭들에 대해 상기 에지의 가중치가 증가되는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 노드들은 신뢰 레벨들이 할당되고, 노드의 신뢰 레벨은 상기 노드의 애셋이 공통으로 제어되는 애셋일 가능성에 해당하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 추가 노드들은 애셋 소유권 또는 애셋 관계를 나타내는 데이터 구조로부터 파생되는, 그래프 데이터 구조를 구성하는 방법.
- 제 5 항에 있어서, 상기 데이터 구조는 DNS(Domain Naming System) 데이터베이스, ASN 레지스트리, 이력 DNS 데이터베이스, 기업 소유권 문서 데이터베이스, 이력 룩업 데이터베이스, 및/또는 WHOIS 데이터베이스 중 하나 이상을 포함하고, 상기 그래프 데이터 구조를 확장하는 것은 매칭 기준을 충족하는 노드들을 식별하기 위해 상기 DNS(Domain Naming System) 데이터베이스, 상기 이력 DNS 데이터베이스 및/또는 상기 WHOIS 데이터베이스를 검색하는 것을 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 5 항에 있어서, 상기 데이터 구조는 이진 트리, 파일들의 조각 세트, 룩업 테이블, API, 및/또는 mtbl 중 하나 이상을 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 상기 컬링하는 단계는 인간 입력, 블랙리스트들, 및/또는 공통으로 제어된 애셋이 아닌 객체를 나타내는 기계 학습 출력을 반영하는 수동 입력들을 획득하는 단계를 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 상기 매칭 기준을 재귀적으로 적용하는 단계는 자동으로 수행되고 선택들은 선택적 깊이, 신뢰도, 설정들 또는 다른 기준에 기반하여 이용가능한 링킹 방법들의 서브세트를 포함하고, 선택은 방법들을 포함하고/하거나 방법들을 제외하는 것을 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 상기 매칭 기준을 재귀적으로 적용하는 단계는 사용자-정의 재귀에 따라 수행되고 선택들은 선택적 깊이, 신뢰도, 설정들 또는 다른 기준에 기반하여 이용가능한 링킹 방법들의 서브세트를 포함하고, 선택은 방법들을 포함하고/하거나 방법들을 제외하는 것을 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서,
상기 예상 애셋 인벤토리 그래프의 표현을 디스플레이 포맷으로 포맷팅하는 단계; 및
상기 디스플레이 포맷을 디스플레이에 제시하는 단계를 더 포함하는, 그래프 데이터 구조를 구성하는 방법. - 제 1 항에 있어서, 상기 예상 애셋 인벤토리 그래프 상의 애셋들에 관한 메타데이터는 호스트이름, 취약성들 목록, 사용된 개방 포트들 목록, 상기 애셋의 추정된 지리위치, 상기 애셋에 사용된 운영 체제, 상기 애셋의 서비스 배너들, 상기 애셋의 TLS 인증서 세부사항들, IP 주소, DNS 유형 표시기, DNS 등록 데이터 및/또는 IP 주소의 ASN 정보 중 하나 이상을 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 12 항에 있어서, 메타데이터는 웹 애플리케이션의 언어, 상기 웹 애플리케이션의 API, 및/또는 소셜 신호들을 포함하는 HTTP 링크들 중 하나 이상을 나타내는 기술 스택의 콘텐츠를 더 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 상기 네트워크의 애셋들은 도메인, 인터넷-연결 애셋, 서브도메인, IP 주소, 가상 호스트, 웹 서버, 이름 서버, IoT 디바이스, 데스크톱 컴퓨터, 네트워크 프린터, 메일 서버, 인터넷 또는 내부 네트워크에 연결된 디바이스, 콘텐츠 전송 네트워크, 프록시, 방화벽, 침입 검출 시스템, 라우터 및/또는 스위치 중 하나 이상을 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 상기 네트워크의 애셋들은 네트워크 트래픽을 수용할 수 있는 하나 이상의 디바이스를 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 제1 애셋은 제1 도메인이고, 제2 애셋은 제2 도메인이고, 상기 제1 애셋은 상기 예상 애셋 인벤토리 그래프에 있고, 상기 매칭 기준은:
상기 제2 도메인이 상기 제1 도메인과 공통 등록 이메일 주소를 공유하는지 여부에 대한 제1 테스트;
상기 제2 도메인이 상기 제1 도메인과 공통 등록 이메일 주소 도메인을 공유하는지 여부에 대한 제2 테스트;
제2 도메인이 상기 제1 도메인의 이메일 도메인과 매칭하는 이메일 도메인을 갖는 이메일 주소를 사용하여 등록되었는지 여부에 대한 제3 테스트;
상기 제2 도메인과 상기 제1 도메인이 공통으로 WHOIS 필드를 공유하는지 여부에 대한 제4 테스트;
상기 제2 도메인과 상기 제1 도메인 둘 모두가 공통 호스트를 다시 참조하는 호스팅된 콘텐츠를 포함하는지 여부에 대한 제5 테스트; 및
상기 제2 도메인과 상기 제1 도메인 둘 모두가 공통 인증 기관을 사용하는지 여부에 대한 제6 테스트 중 하나 이상을 포함하는, 그래프 데이터 구조를 구성하는 방법. - 제 16 항에 있어서, 적어도 하나의 테스트는 이력 데이터를 사용하여 수행되는, 그래프 데이터 구조를 구성하는 방법.
- 제 16 항에 있어서, 적어도 하나의 도메인은 서브도메인인, 그래프 데이터 구조를 구성하는 방법.
- 제 16 항에 있어서, 적어도 하나의 테스트는 특정 시간의 상태에 대해 수행되는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 상기 매칭 기준은 사이트가, 미리결정된 공통의 링크된 사이트들 세트를 제외하고, 특정 다른 사이트들에 대한 링크들을 포함하는 페이지를 갖는지 여부를 조사하는 테스트를 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 상기 매칭 기준은 제1 사이트와 제2 사이트 사이의 상관 테스트 및/또는 상기 제1 사이트와 상기 제2 사이트 둘 모두에서 발견되는 공통 링크들을 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 재사용가능한 내부 주소들의 미리결정된 목록 상의 주소들을 필터링하는 단계를 더 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 공통적으로 재사용되는 TLD들의 미리결정된 목록에 있는 TLD들 또는 TLD들의 공통적으로 재사용되는 부분들의 미리결정된 목록에 있는 TLD들의 부분들을 필터링하는 단계를 더 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 상관이 초기에 주소 공간들의 사용들에 기반하여 결정되는지 여부에 기반하여 상관들을 조정하는 단계를 더 포함하고, 최종 주소들은 복수의 관련 없는 엔티티들에 걸쳐 재사용가능한 중첩 주소 범위들에 의해 차단되는, 그래프 데이터 구조를 구성하는 방법.
- 제 24 항에 있어서, 주소 공간들의 사용들은 내부 RFC 1918 주소들, RFC 4193 주소들, RFC 6890 주소들, RFC 3927 주소들, 루프백 주소들, 로컬 링크 주소들, 브로드캐스트 주소들, 캐리어 등급 NAT, 고유 로컬 주소지정 및/또는 라우팅-불가능 인터넷 프로토콜 주소들 중 하나 이상을 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 주소 공간을 공유하는 알려진 제공자들 사이의 미리결정된 링크 목록에 기반하여 상관들을 조정하는 단계를 더 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 미리결정된 프라이버시 서비스 목록에 기반하여 상관들을 조정하는 단계를 더 포함하고, 이에 의해 주어진 프라이버시 서비스를 사용하는 비관련 파티들에 대한 상관들은 관련 파티들인 경우보다 덜 상관되는 것으로 간주되는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 제1 애셋은 제1 서브도메인이고, 제2 애셋은 제2 서브도메인이고, 상기 제1 애셋은 상기 예상 애셋 인벤토리 그래프에 있고, 상기 매칭 기준은:
상기 제2 서브도메인과 상기 제1 서브도메인이 공통 IP 주소를 공유하는지 여부에 대한 제1 테스트;
상기 제2 서브도메인과 상기 제1 서브도메인이 공통으로 CIDR 블록을 공유하는지 여부에 대한 제2 테스트; 및
제2 서브도메인과 제1 서브도메인이 공통으로 CIDR 피처(feature)를 공유하는지 여부에 대한 제3 테스트 중 하나 이상을 포함하는, 그래프 데이터 구조를 구성하는 방법. - 제 1 항에 있어서, 복수의 관련 없는 파티들에 의해 사용되는 프라이버시 서비스를 통해 IP 공간을 공유하는 알려진 제공자들에 의해 야기되는 링크 확률을 감소시키는 단계를 더 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 29 항에 있어서, 공유는 이메일 주소, 전화번호, 물리적 주소, whois 엔트리, 및/또는 회사 주소 중 하나 이상을 갖는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 도메인 프록시 서비스, 도메인 프라이버시 서비스, 공백 또는 정의되지 않은 whois 결과들, 및/또는 플레이스홀더 결과(placeholder result)들 중 하나 이상의 공유에 의해 야기되는 링크 확률을 감소시키는 단계를 더 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 사용자-정의 재귀를 더 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 2개 이상의 IP들 둘 모두가 공유된 최상위 도메인에 대한 호스트이름들에 대한 PTR 기록들을 갖는지 여부에 기반하여 프로세싱하는 단계를 더 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 관련 없는 엔티티들에 대해 사용되는 최상위 도메인들에 의해 야기되는 링크 확률을 감소시키는 단계를 더 포함하는, 그래프 데이터 구조를 구성하는 방법.
- 제 34 항에 있어서, 유효 TLD들 또는 TLD들은 미리결정된 조정가능한 상관 가중치와 상관되는 것으로 취급되는, 그래프 데이터 구조를 구성하는 방법.
- 제 1 항에 있어서, 예비 또는 비공개로 지정된 ASN들은 상관되지 않는 것으로 간주되는, 그래프 데이터 구조를 구성하는 방법.
- 예상 애셋 인벤토리 그래프를 나타내는 그래프 데이터 구조를 프로세싱하는 방법으로서, 상기 그래프 데이터 구조는 각각이 네트워크의 애셋을 나타내는 노드들, 및 상기 노드들과, 상기 그래프 데이터 구조에 표현된 가중치들을 갖고 상기 그래프 데이터 구조에 표현된 애셋들의 공통 제어를 나타내는 적어도 일부 에지들 사이의 연결을 각각 나타내는 에지들을 포함하는, 상기 그래프 데이터 구조를 프로세싱하는 방법에 있어서,
상기 그래프 데이터 구조의 표현을 획득하는 단계;
제1 노드와 제2 노드 사이에서 상기 애셋들의 공통 제어를 나타내는 매칭 기준을 획득하는 단계;
공통 제어의 가능한 긍정 오류 표시(false positive indication)들에 해당하는 규칙 세트를 획득하는 단계; 및
상기 규칙 세트의 규칙이, 상기 매칭 기준이 긍정 오류 표시로 이어지는 조건을 나타낸다는 것을 나타낼 때 상기 제1 노드와 상기 제2 노드 사이의 제1 가중치를 감소시키기 위해 상기 그래프 데이터 구조에 상기 규칙 세트를 적용하는 단계를 포함하는, 그래프 데이터 구조를 프로세싱하는 방법. - 제 37 항에 있어서, 상기 제1 가중치를 감소시키기 위해 상기 그래프 데이터 구조에 상기 규칙 세트를 적용하는 단계는 각각이 가능한 긍정 오류 공통 제어 표시를 나타내는 상기 규칙 세트의 복수의 규칙들을 프로세싱하는 단계를 포함하는, 그래프 데이터 구조를 프로세싱하는 방법.
- 제 37 항에 있어서, 상기 제1 가중치를 감소시키기 위해 긍정 오류들을 나타내는 수동 피드백을 적용하는 단계를 더 포함하는, 그래프 데이터 구조를 프로세싱하는 방법.
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962937432P | 2019-11-19 | 2019-11-19 | |
US62/937,432 | 2019-11-19 | ||
US202063025900P | 2020-05-15 | 2020-05-15 | |
US63/025,900 | 2020-05-15 | ||
US16/890,995 | 2020-06-02 | ||
US16/890,995 US11347797B2 (en) | 2019-11-19 | 2020-06-02 | Asset search and discovery system using graph data structures |
PCT/US2020/059918 WO2021101764A1 (en) | 2019-11-19 | 2020-11-11 | Asset search and discovery system using graph data structures |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220098247A true KR20220098247A (ko) | 2022-07-11 |
Family
ID=75909479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227020499A KR20220098247A (ko) | 2019-11-19 | 2020-11-11 | 그래프 데이터 구조들을 사용한 애셋 검색 및 발견 시스템 |
Country Status (9)
Country | Link |
---|---|
US (2) | US11347797B2 (ko) |
EP (1) | EP4062290A4 (ko) |
JP (1) | JP2022551763A (ko) |
KR (1) | KR20220098247A (ko) |
CN (1) | CN114846462A (ko) |
AU (1) | AU2020386847B2 (ko) |
CA (1) | CA3154804A1 (ko) |
IL (1) | IL292776B2 (ko) |
WO (1) | WO2021101764A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102522634B1 (ko) * | 2023-01-12 | 2023-04-18 | (주)이수정보기술 | 네트워크 장비의 유지 보수 운용 자동화 방법, 장치 및 시스템 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11201897B1 (en) * | 2019-09-03 | 2021-12-14 | Rapid7, Inc. | Secure multiplexed routing |
US11347797B2 (en) * | 2019-11-19 | 2022-05-31 | Bit Discovery Inc. | Asset search and discovery system using graph data structures |
US20220174092A1 (en) * | 2020-12-01 | 2022-06-02 | Mimecast Israel Ltd. | Detection of impersonated web pages and other impersonation methods for web-based cyber threats |
US20230094208A1 (en) * | 2021-09-29 | 2023-03-30 | Bit Discovery Inc. | Asset Inventorying System with In-Context Asset Valuation Prioritization |
US20230162180A1 (en) * | 2021-11-22 | 2023-05-25 | Meta Platforms, Inc. | Techniques for transactions associated with non-fungible tokens (nft) using artificial intelligence (ai) and machine learning (ml) |
US20230205826A1 (en) * | 2021-12-29 | 2023-06-29 | Fima Leshinsky | Systems and Method for Domain Mapping |
US12019698B2 (en) * | 2022-06-20 | 2024-06-25 | The Boeing Company | Flight data object realization with graph database |
CN114793204B (zh) * | 2022-06-27 | 2022-09-02 | 山东林天信息科技有限责任公司 | 一种网络资产探测方法 |
CN115396467B (zh) * | 2022-07-27 | 2024-02-27 | 重庆大学 | 一种开放物流体系使能系统构建方法、系统、存储介质及设备 |
US20240223467A1 (en) * | 2022-12-29 | 2024-07-04 | Juniper Networks, Inc. | Query mechanism for a network management system |
CN116975007B (zh) * | 2023-07-29 | 2024-03-22 | 上海螣龙科技有限公司 | 一种网络资产存储、展示的方法、系统、设备及介质 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6509898B2 (en) * | 1998-04-17 | 2003-01-21 | Xerox Corporation | Usage based methods of traversing and displaying generalized graph structures |
US6615166B1 (en) | 1999-05-27 | 2003-09-02 | Accenture Llp | Prioritizing components of a network framework required for implementation of technology |
US6765571B2 (en) * | 1999-09-24 | 2004-07-20 | Sun Microsystems, Inc. | Using a master controller to manage threads and resources for scene-based rendering |
US7061486B2 (en) * | 1999-09-24 | 2006-06-13 | Sun Microsystems, Inc. | Using messaging to manage scene-based rendering |
EP2122571B1 (en) | 2006-12-19 | 2018-02-21 | Koninklijke Philips N.V. | Apparatus and method for indicating likely computer-detected false positives in medical imaging data |
US8169434B2 (en) * | 2008-09-29 | 2012-05-01 | Microsoft Corporation | Octree construction on graphics processing units |
US20130076773A1 (en) * | 2011-09-22 | 2013-03-28 | National Tsing Hua University | Nonlinear revision control system and method for images |
US9461876B2 (en) * | 2012-08-29 | 2016-10-04 | Loci | System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction |
US9105062B2 (en) | 2012-12-13 | 2015-08-11 | Addepar, Inc. | Transaction effects |
US8978010B1 (en) | 2013-12-18 | 2015-03-10 | Sap Ag | Pruning compilation dependency graphs |
US10171318B2 (en) * | 2014-10-21 | 2019-01-01 | RiskIQ, Inc. | System and method of identifying internet-facing assets |
US9210185B1 (en) | 2014-12-05 | 2015-12-08 | Lookingglass Cyber Solutions, Inc. | Cyber threat monitor and control apparatuses, methods and systems |
US10417056B2 (en) * | 2015-08-04 | 2019-09-17 | Oracle International Corporation | Systems and methods for performing concurrency restriction and throttling over contended locks |
IL244937A (en) * | 2016-04-05 | 2017-07-31 | Musman Lior | Global optimization and network load balancing |
US10657163B2 (en) * | 2017-02-22 | 2020-05-19 | Open Text Sa Ulc | Systems and methods for tracking assets across a distributed network environment |
US10454774B2 (en) | 2017-05-04 | 2019-10-22 | Servicenow, Inc. | Automated inventory for IoT devices |
WO2019005098A1 (en) * | 2017-06-30 | 2019-01-03 | Go Logic Decision Time, Llc | METHODS AND SYSTEMS FOR PROJECTIVE ASSERTION SIMULATION |
US20200364088A1 (en) * | 2019-05-16 | 2020-11-19 | Nvidia Corporation | Resource sharing by two or more heterogeneous processing cores |
US11663498B2 (en) * | 2019-05-21 | 2023-05-30 | Sisense Ltd. | System and method for generating organizational memory using semantic knowledge graphs |
US11727058B2 (en) * | 2019-09-17 | 2023-08-15 | Intuit Inc. | Unsupervised automatic taxonomy graph construction using search queries |
US11347797B2 (en) * | 2019-11-19 | 2022-05-31 | Bit Discovery Inc. | Asset search and discovery system using graph data structures |
-
2020
- 2020-06-02 US US16/890,995 patent/US11347797B2/en active Active
- 2020-11-11 JP JP2022528320A patent/JP2022551763A/ja active Pending
- 2020-11-11 CA CA3154804A patent/CA3154804A1/en active Pending
- 2020-11-11 WO PCT/US2020/059918 patent/WO2021101764A1/en unknown
- 2020-11-11 KR KR1020227020499A patent/KR20220098247A/ko not_active Application Discontinuation
- 2020-11-11 CN CN202080080047.7A patent/CN114846462A/zh active Pending
- 2020-11-11 EP EP20891001.8A patent/EP4062290A4/en not_active Withdrawn
- 2020-11-11 IL IL292776A patent/IL292776B2/en unknown
- 2020-11-11 AU AU2020386847A patent/AU2020386847B2/en active Active
-
2022
- 2022-05-02 US US17/734,864 patent/US11816161B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102522634B1 (ko) * | 2023-01-12 | 2023-04-18 | (주)이수정보기술 | 네트워크 장비의 유지 보수 운용 자동화 방법, 장치 및 시스템 |
Also Published As
Publication number | Publication date |
---|---|
US20210149957A1 (en) | 2021-05-20 |
US20220277047A1 (en) | 2022-09-01 |
WO2021101764A1 (en) | 2021-05-27 |
CA3154804A1 (en) | 2021-05-27 |
CN114846462A (zh) | 2022-08-02 |
EP4062290A4 (en) | 2023-01-11 |
JP2022551763A (ja) | 2022-12-13 |
IL292776B2 (en) | 2023-06-01 |
EP4062290A1 (en) | 2022-09-28 |
AU2020386847B2 (en) | 2023-04-20 |
US11347797B2 (en) | 2022-05-31 |
AU2020386847A1 (en) | 2022-05-26 |
IL292776A (en) | 2022-07-01 |
US11816161B2 (en) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20220098247A (ko) | 그래프 데이터 구조들을 사용한 애셋 검색 및 발견 시스템 | |
US10742591B2 (en) | System for domain reputation scoring | |
US11310132B2 (en) | System and method of identifying internet-facing assets | |
US8229930B2 (en) | URL reputation system | |
US8707429B2 (en) | DNS resolution, policies, and views for large volume systems | |
US7756987B2 (en) | Cybersquatter patrol | |
US8856360B2 (en) | Automatically identifying dynamic internet protocol addresses | |
US10693834B2 (en) | Client subnet efficiency by equivalence class aggregation | |
US11743194B2 (en) | Asset ranking and classification systems and methods | |
US11516232B1 (en) | Attack surface identification | |
US10897483B2 (en) | Intrusion detection system for automated determination of IP addresses | |
WO2017052643A1 (en) | Associations among data records in a security information sharing platform | |
JP2015076892A (ja) | 権威ネームサーバの変化に基づくドメイン名の特徴付け | |
EP3311555A1 (en) | Advanced security for domain names | |
US11356484B2 (en) | Strength of associations among data records in a security information sharing platform | |
Hassan et al. | Technical footprinting | |
JP3873975B2 (ja) | ドメイン名別ビューアクセス制御方法及びdnsサーバシステム装置及びドメイン名別ビューアクセス制御プログラム及びドメイン名別ビューアクセス制御プログラムを格納した記憶媒体 | |
Zou et al. | Detecting malware based on expired command-and-control traffic | |
Foley | Essential Data Sources for Discovering Assets Exposed on the Internet |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITB | Written withdrawal of application |