|
1 | | -# :simple-owasp: Contact |
| 1 | +# :simple-owasp: ContactRecord |
2 | 2 |
|
3 | | -The **Contact** entity, which holds assets such as `Email`, `Location`, and `Phone`, is a critical component of comprehensive **Attack Surface Intelligence**. By organizing these assets alongside discovered attributes and relationships, the [Open Asset Model](https://github.com/owasp-amass/open-asset-model) reveals connections across diverse resources, enabling a holistic understanding of the asset landscape. |
| 3 | +The **ContactRecord** asset serves as a connective entity that maintains a reliable audit trail of where contact information was discovered during the *attack surface intelligence* collection process. It plays a critical role in ensuring both flexibility and consistency within the [Open Asset Model](https://github.com/owasp-amass/open-asset-model), as it is uniformly applied wherever contact details are identified—regardless of the specific type of contact information uncovered. Because such information is often found in varied groupings, it's important to preserve the context in which each piece was associated. The **ContactRecord** makes this possible by capturing and storing the discovered contact data alongside its source location, maintaining their relationship within the model. |
4 | 4 |
|
| 5 | +## :material-contacts: ContactRecord Attributes |
5 | 6 |
|
6 | | -Mirroring the adversary's perspective, the **Amass Engine** traces discovery paths, contextualizes insights at each contact point, and identifies exposures to strengthen situational awareness. |
7 | | - |
8 | | ---- |
9 | | - |
10 | | -## :material-hexagon-multiple: Collection |
11 | | - |
12 | | -- **Complete Contact Coverage:** Provides a centralized view of standardized contact asset intelligence across **email**, **location**, and **phone**. |
13 | | -- **Email Insights:** Tracks email connections to link addresses to specific **personnel and operational functions**, offering visibility into business process maturity. |
14 | | -- **Location Details:** Includes specific location information, from physical addresses and building details to region and locality, for **complete geographic context**. |
15 | | -- **Phone Numbers:** Captures the relationships between country codes, extensions, and subscriber **numbers with individuals and organizational** structures. |
16 | | -- **Connected Data:** Traces the contact collection's discovery path to clarify its **origin, validity, and relevance** in investigative and data privacy contexts. |
17 | | - |
18 | | ---- |
19 | | - |
20 | | -!!! Info annotate "OAM Taxonomy" |
21 | | - The diagrams and data tables below outline the properties and incoming relationships for each `Contact Asset` type: `Email`, `Location`, and `Phone`. # (1)! |
22 | | - |
23 | | -1. :material-check-decagram: Required fields are denoted in the data tables. |
24 | | - |
25 | | ---- |
26 | | - |
27 | | -## :material-email: Email Address |
28 | | - |
29 | | -Email characteristics offer valuable intelligence for profiling and mapping an organization’s internal structure, operational contacts, and network ownership. Analyzing relationships among contact points makes it possible to trace domain ownership, uncover technical support channels, and reveal security response capabilities. This structured email data enriches the understanding of organizational roles and personnel responsibilities, providing a comprehensive view of the asset landscape through an offensive lens. |
30 | | - |
31 | | ---- |
32 | | - |
33 | | -!!! Danger "Email Requirements" |
34 | | - A full email `address`, formatted as a `string`, is required for mapping the related relationships. |
| 7 | +| Attributes | Type | Required | Description | |
| 8 | +| -------- | ---- | :--------: | ----------- | |
| 9 | +| `discovered_at` | string | :material-check-decagram: | Unique URL or path to the contact information | |
35 | 10 |
|
36 | | ---- |
| 11 | +## :material-contacts: ContactRecord Outgoing Relations |
37 | 12 |
|
38 | | -``` mermaid |
| 13 | +```mermaid |
39 | 14 | graph TD |
40 | | -Contact[("Contact Assets")] |
41 | | -Email("Email |
42 | | -Properties") |
43 | | -
|
44 | | -Email ==> Contact |
45 | | -
|
46 | | -Person["Person"] |
47 | | -Organization["Organization"] |
48 | | -TLSCertificate["Fingerprint"] |
49 | | -Registration["Registration"] |
50 | | -
|
51 | | -registrationEmail@{ shape: braces, label: "admin_email |
52 | | -tech_email |
53 | | -billing_email |
54 | | -registrant_email |
55 | | -abuse_email"} |
56 | | -
|
57 | | -personEmail@{ shape: braces, label: "email"} |
58 | | -tlsEmail@{ shape: braces, label: "subject_email_address"} |
59 | | -
|
60 | | -registrationEmail --> Email |
61 | | -Registration --o registrationEmail |
62 | | -
|
63 | | -personEmail --> Email |
64 | | -Person --o personEmail |
65 | | -Organization --o personEmail |
66 | | -
|
67 | | -tlsEmail --> Email |
68 | | -TLSCertificate --o tlsEmail |
| 15 | +contact["ContactRecord"] |
| 16 | +fqdn["FQDN"] |
| 17 | +
|
| 18 | +simple1@{ shape: braces, label: "fqdn"} |
| 19 | +contact --o simple1 |
| 20 | +simple1 --> fqdn |
| 21 | +
|
| 22 | +id["Identifier"] |
| 23 | +simple2@{ shape: braces, label: "id"} |
| 24 | +contact --o simple2 |
| 25 | +simple2 --> id |
| 26 | +
|
| 27 | +org["Organization"] |
| 28 | +simple3@{ shape: braces, label: "organization"} |
| 29 | +contact --o simple3 |
| 30 | +simple3 --> org |
| 31 | +
|
| 32 | +person["Person"] |
| 33 | +simple4@{ shape: braces, label: "person"} |
| 34 | +contact --o simple4 |
| 35 | +simple4 --> person |
| 36 | +
|
| 37 | +phone["Phone"] |
| 38 | +simple5@{ shape: braces, label: "phone"} |
| 39 | +contact --o simple5 |
| 40 | +simple5 --> phone |
| 41 | +
|
| 42 | +url["URL"] |
| 43 | +simple6@{ shape: braces, label: "url"} |
| 44 | +contact --o simple6 |
| 45 | +simple6 --> url |
69 | 46 | ``` |
70 | 47 |
|
71 | 48 | --- |
72 | 49 |
|
73 | | - |
74 | | -### :material-email: Email Properties |
75 | | - |
76 | | -| Property | Type | Required | Description | |
77 | | -| -------- | ---- | :--------: | ----------- | |
78 | | -| `address` | string | :material-check-decagram: | The full email address | |
79 | | -| `local` | string | - | The local part of the email address | |
80 | | -| `domain` | string | - | The part of the address after the @ symbol | |
81 | | - |
82 | | - |
83 | | -#### Incoming Relationships |
84 | | - |
85 | | -| Relationship | Type | |
86 | | -| ------------ | ---- | |
87 | | -| `admin_email` | [`Whois`](#whois) | |
88 | | -| `tech_email` | [`Whois`](#whois) | |
89 | | -| `billing_email` | [`Whois`](#whois) | |
90 | | -| `registrant_email` | [`Whois`](#whois) | |
91 | | -| `email` | [`Person`](#person) | |
92 | | -| `email` | [`Organization`](#organization) | |
93 | | -| `abuse_email` | [`Registrar`](#registrar) | |
94 | | -| `subject_email_address` | [`TLSCertificate`](#tls-certificate) | |
95 | | - |
96 | | ---- |
97 | | - |
98 | | -## :material-map-marker: Location |
99 | | - |
100 | | -| Property | Type | Required | Description | |
101 | | -| -------- | ---- | :--------: | ----------- | |
102 | | -| `formatted_address` | string | - | The formatted address | |
103 | | -| `building_number` | string | - | the number of the building at the location | |
104 | | -| `street_name` | string | - | the name of the street at the location | |
105 | | -| `unit` | string | - | the unit number at the location | |
106 | | -| `building` | string | - | the name of the building at the location | |
107 | | -| `town` | string | - | the name town or city at the location | |
108 | | -| `locality` | string | - | the locality at the location | |
109 | | -| `region` | string | - | the name of the region or state at the location | |
110 | | -| `country_code` | string | - | the ISO 3166-1 alpha-2 country code | |
111 | | -| `postal_code` | string | - | the postal code at the location | |
112 | | - |
113 | | - |
114 | | -#### Incoming Relationships |
115 | | - |
116 | | -| Relationship | Type | |
117 | | -| ------------ | ---- | |
118 | | -| `admin_location` | [`Whois`](#whois) | |
119 | | -| `tech_location` | [`Whois`](#whois) | |
120 | | -| `billing_location` | [`Whois`](#whois) | |
121 | | -| `registrant_location` | [`Whois`](#whois) | |
122 | | -| `location` | [`Person`](#person) | |
123 | | -| `location` | [`Organization`](#organization) | |
124 | | -| `subject_state_or_province` | [`TLSCertificate`](#tls-certificate) | |
125 | | -| `subject_locality` | [`TLSCertificate`](#tls-certificate) | |
126 | | - |
127 | | ---- |
128 | | - |
129 | | -## :material-phone: Phone |
130 | | - |
131 | | -| Property | Type | Required | Description | |
132 | | -| -------- | ---- | :--------: | ----------- | |
133 | | -| `type` | string | - | The type of phone number | |
134 | | -| `raw` | string | :material-check-decagram: | The raw phone number | |
135 | | -| `e164` | string | - | The E.164 formatted phone number | |
136 | | -| `country_abbrev` | string | - | The ISO 3166-1 alpha-2 country code | |
137 | | -| `country_code` | string | - | The ISO 3166-1 numeric country code | |
138 | | -| `subscriber_number` | string | - | The subscriber number | |
139 | | -| `ext` | string | - | The extension of the phone number | |
140 | | - |
141 | | - |
142 | | -#### Incoming Relationships |
143 | | - |
144 | | -| Relationship | Type | |
145 | | -| ------------ | ---- | |
146 | | -| `admin_phone` | [`Whois`](#whois) | |
147 | | -| `tech_phone` | [`Whois`](#whois) | |
148 | | -| `billing_phone` | [`Whois`](#whois) | |
149 | | -| `registrant_phone` | [`Whois`](#whois) | |
150 | | -| `phone_number` | [`Person`](#person) | |
151 | | -| `phone_number` | [`Organization`](#organization) | |
152 | | -| `abuse_phone` | [`Registrar`](#registrar) | |
| 50 | +| Relation Label | Relation Type | Assets | Description | |
| 51 | +| :--------------: | :---------------: | :--------------: | :------------ | |
| 52 | +| `fqdn` | [`SimpleRelation`](#simple_relation) | [`FQDN`](#fqdn) | Represents a FQDN discovered in the contact information | |
| 53 | +| `id` | [`SimpleRelation`](#simple_relation) | [`Identifier`](#identifer) | Represents an ID (e.g. email address) in the contact information | |
| 54 | +| `organization` | [`SimpleRelation`](#simple_relation) | [`Organization`](#organization) | Represents an organization name in the contact information | |
| 55 | +| `person` | [`SimpleRelation`](#simple_relation) | [`Person`](#person) | Represents a person's name discovered with the contact information | |
| 56 | +| `phone` | [`SimpleRelation`](#simple_relation) | [`Phone`](#phone) | Represents a phone number in the contact information | |
| 57 | +| `url` | [`SimpleRelation`](#simple_relation) | [`URL`](#url) | Represents an URL discovered in the contact information | |
0 commit comments