Expanse Deprecated
Deprecated. Use the Expanse v2 integration instead. The Expanse App for Demisto leverages the Expander API to retrieve network exposures and risky flows to create incidents in Demisto. This application also allows for IP, Domain, Certificate, Behavior, and Exposure enrichment, retrieving assets and exposures information drawn from Expanse’s unparalleled view of the Internet.
Data Enrichment & Threat Intelligence · Expanse (Deprecated)
Details
| ID | Expanse |
|---|---|
| Provider | Palo Alto Networks |
| Category | Data Enrichment & Threat Intelligence |
| From Version | 5.0.0 |
| Docker Image | demisto/python3:3.9.5.21272 |
README
Overview
The Expanse App for Cortex XSOAR leverages the Expander API to retrieve network exposures and create incidents in Cortex XSOAR. This application also allows for IP, Domain, Certificate, and Behavior enrichment, retrieving assets and exposures information drawn from Expanse’s unparalleled view of the Internet.
This integration was integrated and tested with Expanse Events API v1, Assets API v2, and Behavior API v1.
Configure Expanse on Cortex XSOAR
- Navigate to Settings > Integrations > Servers & Services.
- Search for Expanse.
- Click Add instance to create and configure a new integration instance.
- Name: a textual name for the integration instance.
- API Key
- Fetch incidents
- Include Behavior data in incidents
- Trust any certificate (not secure)
- Use system proxy settings
- How many events to pull from Expander per run
- How many days to pull past events on first run
- Minimum severity of Expanse Exposure to create an incident for
- Click Test to validate the URLs, token, and connection.
Fetched Incidents Data
{
'eventType': 'ON_PREM_EXPOSURE_APPEARANCE',
'eventTime': '2020-02-05T00:00:00Z',
'businessUnit': {
'id': 'a1f0f39b-f358-3c8c-947b-926887871b88',
'name': 'VanDelay Import-Export'
},
'payload': {
'_type': 'ExposurePayload',
'id': 'b0acfbc5-4d55-3fdb-9155-4927eab91218',
'exposureType': 'NTP_SERVER',
'ip': '203.215.173.113',
'port': 123,
'portProtocol': 'UDP',
'exposureId': '6bedf636-5b6a-3b47-82a5-92b511c0649b',
'domainName': None,
'scanned': '2020-02-05T00:00:00Z',
'geolocation': {
'latitude': 33.7,
'longitude': 73.17,
'city': 'ISLAMABAD',
'regionCode': '',
'countryCode':
'PK'
},
'configuration': {
'_type': 'NtpServerConfiguration',
'response': {
'ntp': {
'leapIndicator': 0,
'mode': 4,
'poll': 4,
'precision': -19,
'stratum': 5,
'delay': 0,
'dispersion': 22,
'version': 4,
'originateTime': '2004-11-24T15:12:11.444Z',
'receiveTime': '2020-02-05T14:25:08.963Z',
'updateTime': '2020-02-05T14:25:01.597Z',
'transmitTime': '2020-02-05T14:25:08.963Z',
'reference': {
'ref_ip': {
'reference': {
'ipv4': '127.127.1.1'
}
}
},
'extentionData': None,
'keyIdentifier': None,
'messageDigest': None
}
}
},
'severity': 'ROUTINE',
'tags': {
'ipRange': ['untagged']
},
'providers': ['InternallyHosted'],
'certificatePem': None,
'remediationStatuses': []
},
'id': 'b4a1e2e6-165a-31a5-9e6a-af286adc3dcd'
}
Fetched Behavior Incident Data
{
"id": "c9704240-5021-321e-a82b-32865e07d541",
"tenantBusinessUnitId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5",
"businessUnit": {
"id": "6b73ef6c-b230-3797-b321-c4a340169eb7",
"name": "Acme Latex Supply"
},
"riskRule": {
"id": "02b6c647-65f4-4b69-b4b0-64af34fd1b29",
"name": "Connections to and from countries on block list",
"description": "Connections to and from countries on block list (Belarus, Côte d'Ivoire, Cuba, Democratic Republic of the Congo, Iran, Iraq, Liberia, North Korea, South Sudan, Sudan, Syria, Zimbabwe)",
"additionalDataFields": "[]"
},
"internalAddress": "184.174.38.51",
"internalPort": 35125,
"externalAddress": "217.218.108.188",
"externalPort": 443,
"flowDirection": "OUTBOUND",
"acked": true,
"protocol": "TCP",
"externalCountryCodes": [
"IR"
],
"internalCountryCodes": [
"US"
],
"externalCountryCode": "IR",
"internalCountryCode": "US",
"internalExposureTypes": [],
"internalDomains": [],
"internalTags": {
"ipRange": []
},
"observationTimestamp": "2020-03-23T14:59:04.211Z",
"created": "2020-03-24T02:45:28.450131Z"
}
Commands
You can execute these commands from the Cortex XSOAR CLI, as part of an automation, or in a playbook.
After you successfully execute a command, a DBot message appears in the War Room with the command details.
- ip
- domain
- expanse-get-certificate
- expanse-get-behavior
- expanse-get-exposures
- expanse-get-domains-for-certificate
1. ip
ip command
Required Permissions
none
Base Command
ip
Input
| Argument Name | Description | Required |
|---|---|---|
| ip | ip address | Required |
Context Output
| Path | Type | Description |
|---|---|---|
| IP.Address | String | Internet Protocol Address |
| IP.Geo.Location | String | The geolocation where the IP address is located, in the format: latitude:longitude |
| IP.Geo.Country | String | The country in which the IP address is located. |
| IP.Geo.Description | String | Additional information about the location |
| Expanse.IP.Address | String | Internet Protocol Address |
| Expanse.IP.Version | String | Internet Protocol Address Version |
| Expanse.IP.BusinessUnits | String | Expanse Business Units this IP belongs to |
| Expanse.IP.IPRange.StartAdress | String | First IP address in IP Network this IP address belongs to |
| Expanse.IP.IPRange.EndAddress | String | Last IP address in IP Network this IP address belongs to |
| Expanse.IP.IPRange.RangeSize | Number | Number of IP addresses in IP Network this IP address belongs to |
| Expanse.IP.IPRange.ResponsiveIPCount | Number | Number of responsive IP addresses in IP Network this IP address belongs to |
| Expanse.IP.IPRange.RangeIntroduced | Date | Date the IP network this IP address belongs to was introduced to Expanse |
| Expanse.IP.IPRange.AttributionReasons | String | The reason why this IP belongs to the IP Range |
| Expanse.IP.Geo.Latitude | String | Geo coordinates: Latitude of IP address |
| Expanse.IP.Geo.Longitude | String | Geo coordinates: Longitude of IP address |
| Expanse.IP.Geo.City | String | Geo coordinates city for this IP address |
| Expanse.IP.Geo.RegionCode | String | Geo coordinates Region Code for this IP address |
| Expanse.IP.Geo.CountryCode | String | Geo coordinates Country Code for this IP address |
| Expanse.IP.Annotations.Tags | String | Customer defined Tags from Expanse related to this IP Range |
| Expanse.IP.Annotations.AdditionalNotes | String | Customer defined Notes from Expanse related to this IP Range |
| Expanse.IP.Annotations.PointsOfContact | String | Customer defined Points of Contact from Expanse related to this IP Range |
| Expanse.IP.SeverityCounts.CRITICAL | Number | Count of CRITICAL Events for this IP address |
| Expanse.IP.SeverityCounts.ROUTINE | Number | Count of ROUTINE Events for this IP address |
| Expanse.IP.SeverityCounts.WARNING | Number | Count of WARNING Events for this IP address |
| Expanse.IP.Geo.Description | String | Additional information about the location |
| Expanse.IP.Geo.Country | String | The country in which the IP address is located. |
Command Example
!ip ip=74.142.119.130
Context Example
{
"IP": {
"Geo": {
"Country": "US",
"Description": "AKRON",
"Location": "41.0433:-81.5239"
},
"Address": "74.142.119.130"
},
"DBotScore": {
"Vendor": "Expanse",
"Indicator": "74.142.119.130",
"Score": 0,
"Type": "ip"
},
"Expanse.IP": {
"Version": "4",
"Annotations": {
"AdditionalNotes": "",
"Tags": [],
"PointsOfContact": []
},
"BusinessUnits": [
"Acme Latex Supply"
],
"SeverityCounts": {
"CRITICAL": 2,
"WARNING": 4,
"ROUTINE": 2
},
"Address": "74.142.119.130",
"Geo": {
"City": "AKRON",
"Description": "AKRON",
"CountryCode": "US",
"Longitude": -81.5239,
"RegionCode": "OH",
"Location": "41.0433:-81.5239",
"Latitude": 41.0433
},
"IPRange": {
"AttributionReasons": [
"This parent range is attributed via IP network registration records for 74.142.119.128\u201374.142.119.135"
],
"ResponsiveIPCount": 1,
"EndAddress": "74.142.119.135",
"RangeIntroduced": "2019-08-02",
"StartAddress": "74.142.119.128",
"RangeSize": 8
}
}
}
Human Readable Output
IP information for: 74.142.119.130
| Address | Annotations | BusinessUnits | Geo | IPRange | SeverityCounts | Version |
|---|---|---|---|---|---|---|
| 74.142.119.130 | AdditionalNotes: null PointsOfContact: null Tags: null |
Acme Latex Supply | Description: AKRON Latitude: 41.0433 Longitude: -81.5239 City: AKRON RegionCode: OH CountryCode: US Location: 41.0433:-81.5239 |
StartAddress: 74.142.119.128 EndAddress: 74.142.119.135 RangeSize: 8 ResponsiveIPCount: 2 RangeIntroduced: 2019-08-02 AttributionReasons: This parent range is attributed via IP network registration records for 74.142.119.128–74.142.119.135 |
CRITICAL: 1 ROUTINE: 4 WARNING: 2 |
4 |
2. domain
domain command
Required Permissions
none
Base Command
domain
Input
| Argument Name | Description | Required |
|---|---|---|
| domain | domain to search | Required |
Context Output
| Path | Type | Description |
|---|---|---|
| Domain.Name | String | The domain name, for example: “google.com |
| Domain.DNS | String | A list of IP objects resolved by DNS |
| Domain.CreationDate | Date | The date that the domain was created |
| Domain.DomainStatus | String | The status of the domain |
| Domain.ExpirationDate | Date | The expiration date of the domain |
| Domain.NameServers | String | Name servers of the domain |
| Domain.Organization | String | The organization of the domain |
| Domain.Admin.Country | String | The country of the domain administrator |
| Domain.Admin.Email | String | The email of the domain administrator |
| Domain.Admin.Name | String | The name of the domain administrator |
| Domain.Admin.Phone | String | The phone of the domain administrator |
| Domain.Registrant.Country | String | The country of the registrant |
| Domain.Registrant.Email | String | The email of the registrant |
| Domain.Registrant.Name | String | The name of the registrant |
| Domain.Registrant.Phone | String | The phone of the registrant |
| Domain.WHOIS.DomainStatus | String | The status of the domain |
| Domain.WHOIS.NameServers | String | A list of name servers, for example: “ns1.bla.com, ns2.bla.com” |
| Domain.WHOIS.CreationDate | Date | The date that the domain was created |
| Domain.WHOIS.UpdatedDate | Date | The date that the domain was last updated |
| Domain.WHOIS.ExpirationDate | Date | The date that the domain expires |
| Domain.WHOIS.Registrant.Email | String | The email address of the registrant |
| Domain.WHOIS.Registrant.Name | String | The name of the registrant |
| Domain.WHOIS.Registrant.Phone | String | The phone of the registrant |
| Domain.WHOIS.Registrar.Name | String | The name of the registrar, for example: “GoDaddy” |
| Domain.WHOIS.Registrar.AbuseEmail | String | The email address of the contact for reporting abuse |
| Domain.WHOIS.Registrar.AbusePhone | Unknown | The phone number of contact for reporting abuse |
| Domain.WHOIS.Admin.Name | String | The name of the domain administrator |
| Domain.WHOIS.Admin.Email | String | The email address of the domain administrator |
| Domain.WHOIS.Admin.Phone | Unknown | The phone number of the domain administrator |
| Expanse.Domain.Name | String | The domain name, for example: “google.com |
| Expanse.Domain.DateAdded | Date | Date the domain was added to Expanse |
| Expanse.Domain.FirstObserved | Date | Date Expanse first observed the domain |
| Expanse.Domain.LastObserved | Date | Date Expanse last observed the domain |
| Expanse.Domain.HasLinkedCloudResources | Boolean | Does this domain have linked cloud resources ? |
| Expanse.Domain.SourceDomain | String | Top level domain |
| Expanse.Domain.Tenant | String | Customer defined Tenant from Expanse |
| Expanse.Domain.BusinessUnits | String | Customer defined Business Units from Expanse |
| Expanse.Domain.DNSSEC | String | DNSSEC info |
| Expanse.Domain.RecentIPs | String | Any recent IP addresses Expanse has seen for this domain |
| Expanse.Domain.CloudResources | String | Any Cloud Resources Expanse has seen for this domain |
| Expanse.Domain.LastSubdomainMetadata | String | Any recent subdomain metadata Expanse has seen for this domain |
| Expanse.Domain.ServiceStatus | String | Service Status Expanse sees for this domain |
| Expanse.Domain.LastSampledIP | String | Last seen IP address for this domain |
| Expanse.Domain.DNS | String | A list of IP objects resolved by DNS |
| Expanse.Domain.CreationDate | Date | The date that the domain was created |
| Expanse.Domain.DomainStatus | String | The status of the domain |
| Expanse.Domain.ExpirationDate | Date | The expiration date of the domain |
| Expanse.Domain.NameServers | String | Name servers of the domain |
| Expanse.Domain.Organization | String | The organization of the domain |
| Expanse.Domain.Admin.Country | String | The country of the domain administrator |
| Expanse.Domain.Admin.Email | String | The email address of the domain administrator |
| Expanse.Domain.Admin.Name | String | The name of the domain administrator |
| Expanse.Domain.Admin.Phone | String | The phone number of the domain administrator |
| Expanse.Domain.Registrant.Country | String | The country of the registrant |
| Expanse.Domain.Registrant.Email | String | The email address of the registrant |
| Expanse.Domain.Registrant.Name | String | The name of the registrant |
| Expanse.Domain.Registrant.Phone | String | The phone number for receiving abuse reports |
| Expanse.Domain.WHOIS.DomainStatus | String | The status of the domain |
| Expanse.Domain.WHOIS.NameServers | String | A list of name servers, for example: “ns1.bla.com, ns2.bla.com” |
| Expanse.Domain.WHOIS.CreationDate | Date | The date that the domain was created |
| Expanse.Domain.WHOIS.UpdatedDate | String | The date that the domain was last updated |
| Expanse.Domain.WHOIS.ExpirationDate | String | The date that the domain expires |
| Expanse.Domain.WHOIS.Registrant.Email | String | The email address of the registrant |
| Expanse.Domain.WHOIS.Registrant.Name | String | The name of the registrant |
| Expanse.Domain.WHOIS.Registrant.Phone | String | The phone number of the registrant |
| Expanse.Domain.WHOIS.Registrar.Name | String | The name of the registrar, for example: “GoDaddy” |
| Expanse.Domain.WHOIS.Registrar.AbuseEmail | String | The email address of the contact for reporting abuse |
| Expanse.Domain.WHOIS.Registrar.AbusePhone | String | The phone number of contact for reporting abuse |
| Expanse.Domain.WHOIS.Admin.Name | String | The name of the domain administrator |
| Expanse.Domain.WHOIS.Admin.Email | String | The email address of the domain administrator |
| Expanse.Domain.WHOIS.Admin.Phone | String | The phone number of the domain administrator |
Command Example
!domain domain=atlas.enron.com
Context Example
{
"Domain": {
"Name": "atlas.enron.com",
"Admin": {
"Phone": "14806242599",
"Country": "UNITED STATES",
"Email": "ENRON.COM@domainsbyproxy.com",
"Name": "Registration Private"
},
"DomainStatus": [
"HAS_DNS_RESOLUTION"
],
"NameServers": [
"NS73.DOMAINCONTROL.COM",
"NS74.DOMAINCONTROL.COM"
],
"ExpirationDate": "2019-10-10T04:00:00Z",
"DNS": [],
"Organization": "Domains By Proxy, LLC",
"CreationDate": "1995-10-10T04:00:00Z",
"Registrant": {
"Phone": "14806242599",
"Country": "UNITED STATES",
"Email": "ENRON.COM@domainsbyproxy.com",
"Name": "Registration Private"
},
"WHOIS": {
"Admin": {
"Phone": "14806242599",
"Email": "ENRON.COM@domainsbyproxy.com",
"Name": "Registration Private"
},
"DomainStatus": [
"clientDeleteProhibited clientRenewProhibited clientTransferProhibited clientUpdateProhibited"
],
"NameServers": [
"NS73.DOMAINCONTROL.COM",
"NS74.DOMAINCONTROL.COM"
],
"UpdatedDate": "2015-07-29T16:20:56Z",
"Registrar": {
"AbuseEmail": null,
"AbusePhone": null,
"Name": "GoDaddy.com, LLC"
},
"ExpirationDate": "2019-10-10T04:00:00Z",
"CreationDate": "1995-10-10T04:00:00Z",
"Registrant": {
"Phone": "14806242599",
"Email": "ENRON.COM@domainsbyproxy.com",
"Name": "Registration Private"
}
}
},
"Expanse.Domain": {
"LastSubdomainMetadata": null,
"WHOIS": {
"Admin": {
"Phone": "14806242599",
"Email": "ENRON.COM@domainsbyproxy.com",
"Name": "Registration Private"
},
"DomainStatus": [
"clientDeleteProhibited clientRenewProhibited clientTransferProhibited clientUpdateProhibited"
],
"NameServers": [
"NS73.DOMAINCONTROL.COM",
"NS74.DOMAINCONTROL.COM"
],
"UpdatedDate": "2015-07-29T16:20:56Z",
"Registrar": {
"AbuseEmail": null,
"AbusePhone": null,
"Name": "GoDaddy.com, LLC"
},
"ExpirationDate": "2019-10-10T04:00:00Z",
"CreationDate": "1995-10-10T04:00:00Z",
"Registrant": {
"Phone": "14806242599",
"Email": "ENRON.COM@domainsbyproxy.com",
"Name": "Registration Private"
}
},
"DNSSEC": null,
"DomainStatus": [
"HAS_DNS_RESOLUTION"
],
"HasLinkedCloudResources": false,
"SourceDomain": "enron.com",
"LastObserved": "2020-01-02T09:30:00.374Z",
"ExpirationDate": "2019-10-10T04:00:00Z",
"CloudResources": [],
"Tenant": "VanDelay Industries",
"Name": "atlas.enron.com",
"Admin": {
"Phone": "14806242599",
"Country": "UNITED STATES",
"Email": "ENRON.COM@domainsbyproxy.com",
"Name": "Registration Private"
},
"LastSampledIP": "192.64.147.150",
"BusinessUnits": [
"VanDelay Industries"
],
"DNS": [],
"RecentIPs": [],
"Organization": "Domains By Proxy, LLC",
"DateAdded": "2020-01-04T04:57:48.580Z",
"NameServers": [
"NS73.DOMAINCONTROL.COM",
"NS74.DOMAINCONTROL.COM"
],
"FirstObserved": "2020-01-02T09:30:00.374Z",
"ServiceStatus": [
"NO_ACTIVE_SERVICE",
"NO_ACTIVE_CLOUD_SERVICE",
"NO_ACTIVE_ON_PREM_SERVICE"
],
"CreationDate": "1995-10-10T04:00:00Z",
"Registrant": {
"Phone": "14806242599",
"Country": "UNITED STATES",
"Email": "ENRON.COM@domainsbyproxy.com",
"Name": "Registration Private"
}
},
"DBotScore": {
"Vendor": "Expanse",
"Indicator": "atlas.enron.com",
"Score": 0,
"Type": "url"
}
}
Human Readable Output
Domain information for: atlas.enron.com
| Admin | BusinessUnits | CloudResources | CreationDate | DNS | DNSSEC | DateAdded | DomainStatus | ExpirationDate | FirstObserved | HasLinkedCloudResources | LastObserved | LastSampledIP | LastSubdomainMetadata | Name | NameServers | Organization | RecentIPs | Registrant | ServiceStatus | SourceDomain | Tenant | WHOIS |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Country: UNITED STATES Email: ENRON.COM@domainsbyproxy.com Name: Registration Private Phone: 14806242599 |
VanDelay Industries | 1995-10-10T04:00:00Z | 2020-01-04T04:57:48.580Z | HAS_DNS_RESOLUTION | 2019-10-10T04:00:00Z | 2020-01-02T09:30:00.374Z | false | 2020-01-02T09:30:00.374Z | 192.64.147.150 | atlas.enron.com | NS73.DOMAINCONTROL.COM, NS74.DOMAINCONTROL.COM |
Domains By Proxy, LLC | Country: UNITED STATES Email: ENRON.COM@domainsbyproxy.com Name: Registration Private Phone: 14806242599 |
NO_ACTIVE_SERVICE, NO_ACTIVE_CLOUD_SERVICE, NO_ACTIVE_ON_PREM_SERVICE |
enron.com | VanDelay Industries | DomainStatus: clientDeleteProhibited clientRenewProhibited clientTransferProhibited clientUpdateProhibited NameServers: NS73.DOMAINCONTROL.COM, NS74.DOMAINCONTROL.COM CreationDate: 1995-10-10T04:00:00Z UpdatedDate: 2015-07-29T16:20:56Z ExpirationDate: 2019-10-10T04:00:00Z Registrant: {“Email”: “ENRON.COM@domainsbyproxy.com”, “Name”: “Registration Private”, “Phone”: “14806242599”} Registrar: {“Name”: “GoDaddy.com, LLC”, “AbuseEmail”: null, “AbusePhone”: null} Admin: {“Name”: “Registration Private”, “Email”: “ENRON.COM@domainsbyproxy.com”, “Phone”: “14806242599”} |
3. expanse-get-certificate
expanse-get-certificate command
Required Permissions
none
Base Command
expanse-get-certificate
Input
| Argument Name | Description | Required |
|---|---|---|
| common_name | domain to search | Required |
Context Output
| Path | Type | Description |
|---|---|---|
| Expanse.Certificate.SearchTerm | string | The common name searched for |
| Expanse.Certificate.CommonName | string | The certificate common name |
| Expanse.Certificate.FirstObserved | date | Certificate first observation date |
| Expanse.Certificate.LastObserved | date | Certificate last observation date |
| Expanse.Certificate.DateAdded | date | Date certificate was added to Expanse |
| Expanse.Certificate.Provider | string | The certificate provider |
| Expanse.Certificate.NotValidBefore | date | Certificate not-valid-before date |
| Expanse.Certificate.NotValidAfter | date | Certificate not-valid-after date |
| Expanse.Certificate.Properties | string | Certificate properties |
| Expanse.Certificate.MD5Hash | string | Certificate MD5 Hash |
| Expanse.Certificate.PublicKeyAlgorithm | string | Certificate public key algorithm used |
| Expanse.Certificate.PublicKeyBits | number | Public key size |
| Expanse.Certificate.BusinessUnits | string | Business Unit for certificate |
| Expanse.Certificate.CertificateAdvertisementStatus | string | Is Certificate advertised |
| Expanse.Certificate.ServiceStatus | string | Any detected services for the certificate |
| Expanse.Certificate.RecentIPs | string | Any recent IPs the certificate was detected on |
| Expanse.Certificate.CloudResources | string | Any cloud resources returning the certificate |
| Expanse.Certificate.PemSha1 | string | SHA1 hash of the certificate PEM |
| Expanse.Certificate.PemSha256 | string | SHA256 hash of the certificate PEM |
| Expanse.Certificate.Issuer.Name | string | Certificate Issuer name |
| Expanse.Certificate.Issuer.Email | string | Certificate Issuer email |
| Expanse.Certificate.Issuer.Country | string | Certificate Issuer country |
| Expanse.Certificate.Issuer.Org | string | Certificate Issuer Org |
| Expanse.Certificate.Issuer.Unit | string | Certificate Issuer Unit |
| Expanse.Certificate.Issuer.AltNames | string | Certificate Issuer alternative names |
| Expanse.Certificate.Issuer.Raw | string | Certificate Issuer raw details |
| Expanse.Certificate.Subject.Name | string | Certificate Subject name |
| Expanse.Certificate.Subject.Email | string | Certificate Subject email |
| Expanse.Certificate.Subject.Country | string | Certificate Subject country |
| Expanse.Certificate.Subject.Org | string | Certificate Subject Org |
| Expanse.Certificate.Subject.Unit | string | Certificate Subject Unit |
| Expanse.Certificate.Subject.AltNames | string | Certificate Subject alternative names |
| Expanse.Certificate.Subject.Raw | string | Certificate Subject raw details |
Command Example
!expanse-get-certificate common_name=atlas.enron.com
Context Example
{
"Expanse.Certificate": {
"BusinessUnits": "VanDelay Industries",
"CertificateAdvertisementStatus": "NO_CERTIFICATE_ADVERTISEMENT",
"CloudResources": "",
"CommonName": "atlas.enron.com",
"DateAdded": "2019-11-21T09:14:27.308679Z",
"FirstObserved": "2019-11-21T09:14:27.308679Z",
"Issuer": {
"AltNames": "",
"Country": "US",
"Email": null,
"Name": "Let's Encrypt Authority X3",
"Org": "Let's Encrypt",
"Raw": "C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3",
"Unit": null
},
"LastObserved": ""2019-12-19T09:13:47.208679Z",
"MD5Hash": "VEwAbJfmIFAVcZ_x4lm42g==",
"NotValidAfter": "2019-03-31T00:27:46Z",
"NotValidBefore": "2018-12-31T00:27:46Z",
"PemSha1": "3LAYlmV3xtn4ONJ3C9JN_ogz0u8=",
"PemSha256": "kyERnydF-dzOuCCpG4jDnkGr4fI2a--lBZQz2hyhb30=",
"Properties": "EXPIRED",
"Provider": "None",
"PublicKeyAlgorithm": "RSA",
"PublicKeyBits": 2048,
"RecentIPs": "",
"SearchTerm": "atlas.enron.com",
"ServiceStatus": "NO_ACTIVE_SERVICE,NO_ACTIVE_ON_PREM_SERVICE,NO_ACTIVE_CLOUD_SERVICE",
"Subject": {
"AltNames": "atlas.enron.com",
"Country": "US",
"Email": "ENRON.COM@domainsbyproxy.com",
"Name": "atlas.enron.com",
"Org": "ENRON",
"Raw": "CN=api-dev.radioshack.com",
"Unit": null
}
}
}
Human Readable Output
Certificate information for: atlas.enron.com
| BusinessUnits | CertificateAdvertisementStatus | CloudResources | CommonName | DateAdded | FirstObserved | Issuer | LastObserved | MD5Hash | NotValidAfter | NotValidBefore | PemSha1 | PemSha256 | Properties | Provider | PublicKeyAlgorithm | PublicKeyBits | RecentIPs | SearchTerm | ServiceStatus | Subject |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| VanDelay Industries | NO_CERTIFICATE_ADVERTISEMENT | atlas.enron.com | 2019-11-21T09:14:27.308679Z | Name: Let’s Encrypt Authority X3 Email: null Country: US Org: Let’s Encrypt Unit: null AltNames: Raw: C=US,O=Let’s Encrypt,CN=Let’s Encrypt Authority X3 |
VEwAbJfmIFAVcZ_x4lm42g== | 2019-03-31T00:27:46Z | 2018-12-31T00:27:46Z | 3LAYlmV3xtn4ONJ3C9JN_ogz0u8= | kyERnydF-dzOuCCpG4jDnkGr4fI2a–lBZQz2hyhb30= | EXPIRED | None | RSA | 2048 | atlas.enron.com | NO_ACTIVE_SERVICE,NO_ACTIVE_ON_PREM_SERVICE,NO_ACTIVE_CLOUD_SERVICE | Name: atlas.enron.com Email: ENRON.COM@domainsbyproxy.com Country: US Org: null Unit: null AltNames: atlas.enron.com Raw: CN=atlas.enron.com |
4. expanse-get-behavior
expanse-get-behavior command
Required Permissions
none
Base Command
expanse-get-behavior
Input
| Argument Name | Description | Required |
|---|---|---|
| ip | ip to search | Required |
| start_time | ISO-8601 UTC timestamp denoting the earliest behavior data to fetch | Required |
Context Output
| Path | Type | Description |
|---|---|---|
| Expanse.Behavior.SearchTerm | string | IP used to search |
| Expanse.Behavior.InternalAddress | string | IP internal to Organization |
| Expanse.Behavior.InternalCountryCode | string | Internal IP Country Geolocation country |
| Expanse.Behavior.BusinessUnit | string | Buisness unit of IP |
| Expanse.Behavior.InternalDomains | string | Known domains associated with IP |
| Expanse.Behavior.InternalIPRanges | string | Known Internal IP ranges containing IP |
| Expanse.Behavior.InternalExposureTypes | string | Known Exposures for IP |
| Expanse.Behavior.ExternalAddresses | string | External IP addresses with known communication to IP |
| Expanse.Behavior.FlowSummaries | string | Summaries of most recents risky flows for IP |
| Expanse.Behavior.Flows | string | Array of Flow Objects |
| Expanse.Behavior.Flows.InternalAddress | string | Internal IP address for flow |
| Expanse.Behavior.Flows.InternalPort | number | Internal Port for flow |
| Expanse.Behavior.Flows.InternalCountryCode | string | Internal country code for flow |
| Expanse.Behavior.Flows.ExternalAddress | string | External IP address for flow |
| Expanse.Behavior.Flows.ExternalPort | number | External Port for flow |
| Expanse.Behavior.Flows.ExternalCountryCode | string | External country code for flow |
| Expanse.Behavior.Flows.Timestamp | date | Timestamp of flow |
| Expanse.Behavior.Flows.Protocol | string | Protocol of flow (UDP, TCP) |
| Expanse.Behavior.Flows.Direction | string | Direction of flow |
| Expanse.Behavior.Flows.RiskRule | string | Risk rule violated by flow |
Command Example
!expanse-get-behavior ip=74.142.119.130 start_time=7
Context Example
{
"BusinessUnit": "VanDelay Industries",
"ExternalAddresses": "66.110.49.36,66.110.49.72",
"FlowSummaries": "74.142.119.130:57475 (US) -\u003e 66.110.49.72:443 (CA) TCP violates Outbound Flows from Servers at 2020-04-05T21:18:56.889Z\n74.142.119.130:61694 (US) -\u003e 66.110.49.36:443 (CA) TCP violates Outbound Flows from Servers at 2020-04-05T21:03:50.867Z\n",
"Flows": [
{
"Direction": "OUTBOUND",
"ExternalAddress": "66.110.49.72",
"ExternalCountryCode": "CA",
"ExternalPort": 443,
"InternalAddress": "74.142.119.130",
"InternalCountryCode": "US",
"InternalPort": 57475,
"Protocol": "TCP",
"RiskRule": "Outbound Flows from Servers",
"Timestamp": "2020-04-05T21:18:56.889Z"
},
{
"Direction": "OUTBOUND",
"ExternalAddress": "66.110.49.36",
"ExternalCountryCode": "CA",
"ExternalPort": 443,
"InternalAddress": "74.142.119.130",
"InternalCountryCode": "US",
"InternalPort": 61694,
"Protocol": "TCP",
"RiskRule": "Outbound Flows from Servers",
"Timestamp": "2020-04-05T21:03:50.867Z"
}
],
"InternalAddress": "74.142.119.130",
"InternalCountryCode": "US",
"InternalDomains": "",
"InternalExposureTypes": "HttpServer",
"InternalIPRanges": "",
"SearchTerm": "74.142.119.130"
}
Human Readable Output
Expanse Behavior information for: 74.142.119.130
| BusinessUnit | ExternalAddresses | FlowSummaries | InternalAddress | InternalCountryCode | InternalDomains | InternalExposureTypes | InternalIPRanges | SearchTerm |
|---|---|---|---|---|---|---|---|---|
| VanDelay Industries | 66.110.49.36,66.110.49.72 | 74.142.119.130:57475 (US) -> 66.110.49.72:443 (CA) TCP violates Outbound Flows from Servers at 2020-04-05T21:18:56.889Z 74.142.119.130:61694 (US) -> 66.110.49.36:443 (CA) TCP violates Outbound Flows from Servers at 2020-04-05T21:03:50.867Z |
74.142.119.130 | US | HttpServer | 74.142.119.130 |
4. expanse-get-exposures
expanse-get-exposures command
Required Permissions
none
Base Command
expanse-get-exposures
Input
| Argument Name | Description | Required |
|---|---|---|
| ip | ip to search | Required |
Context Output
| Path | Type | Description |
|---|---|---|
| Expanse.Exposures.SearchTerm | string | IP used to search |
| Expanse.Exposures.TotalExposureCount | number | The total count of exposures for the IP |
| Expanse.Exposures.CriticalExposureCount | number | The total count of CRITICAL exposures for the IP |
| Expanse.Exposures.WarningExposureCount | number | The total count of WARNING exposures for the IP |
| Expanse.Exposures.RoutineExposureCount | number | The total count of ROUTINE exposures for the IP |
| Expanse.Exposures.UnknownExposureCount | number | The total count of UNKNOWN exposures for the IP |
| Expanse.Exposures.ExposureSummaries | string | Summaries of exposures for the IP address |
| Expanse.Exposures.Exposures | unknown | Array of Exposures for the IP address |
| Expanse.Exposures.Exposures.ExposureType | string | Exposure type of the Exposure |
| Expanse.Exposures.Exposures.BusinessUnit | string | Business Unit of the Exposure |
| Expanse.Exposures.Exposures.Ip | string | IP Address the Exposure was found on |
| Expanse.Exposures.Exposures.Port | string | Port the Exposure was found on |
| Expanse.Exposures.Exposures.Severity | string | Severity of the Exposure |
| Expanse.Exposures.Exposures.Certificate | unknown | Certificate details associated with Exposure |
| Expanse.Exposures.Exposures.FirstObservsation | unknown | First Observation of the Exposure |
| Expanse.Exposures.Exposures.LastObservsation | unknown | Last Observation of the Exposure |
| Expanse.Exposures.Exposures.Status | unknown | Status details of the Exposure |
| Expanse.Exposures.Exposures.Provider | unknown | Provider details of the Exposure |
Command Example
!expanse-get-exposures ip=33.2.243.123
Context Example
{
"CriticalExposureCount": 0,
"ExposureSummaries": "NTP_SERVER exposure on 33.2.243.123:UDP123",
"Exposures": [
{
"BusinessUnit": "VanDelay Industries",
"Certificate": null,
"ExposureType": "NTP_SERVER",
"FirstObservsation": {
"configuration": {
"certificate": null,
"response": {
"ntp": {
"delay": 0,
"dispersion": 65537,
"extentionData": null,
"keyIdentifier": null,
"leapIndicator": 3,
"messageDigest": null,
"mode": 4,
"originateTime": "2004-11-24T15:12:11.444Z",
"poll": 4,
"precision": -18,
"receiveTime": "2019-02-01T00:32:17.693Z",
"reference": {
"ref_str": {
"reference": ""
}
},
"stratum": 0,
"transmitTime": "2019-02-01T00:32:17.693Z",
"updateTime": "2036-02-07T06:28:16Z",
"version": 4
}
}
},
"geolocation": {
"city": "VICTOR",
"countryCode": "US",
"latitude": 42.982,
"longitude": -77.4245,
"regionCode": "NY"
},
"hostname": null,
"id": "2d349139-1111-3c92-a168-557d34729bf8",
"ip": "33.2.243.123",
"portNumber": 123,
"portProtocol": "UDP",
"qrispTaskId": 21716146,
"scanned": "2019-02-01T00:19:16Z"
},
"Ip": "33.2.243.123",
"LastObservsation": {
"configuration": {
"certificate": null,
"response": {
"ntp": {
"delay": 0,
"dispersion": 65537,
"extentionData": null,
"keyIdentifier": null,
"leapIndicator": 3,
"messageDigest": null,
"mode": 4,
"originateTime": "2004-11-24T15:12:11.444Z",
"poll": 4,
"precision": -18,
"receiveTime": "2020-05-05T16:05:36.606Z",
"reference": {
"ref_str": {
"reference": ""
}
},
"stratum": 0,
"transmitTime": "2020-05-05T16:05:36.606Z",
"updateTime": "2036-02-07T06:28:16Z",
"version": 4
}
}
},
"geolocation": {
"city": "VICTOR",
"countryCode": "US",
"latitude": 42.982,
"longitude": -77.4245,
"regionCode": "NY"
},
"hostname": null,
"id": "69a0159b-facc-3c55-b71d-3e6b8ae9252b",
"ip": "33.2.243.123",
"portNumber": 123,
"portProtocol": "UDP",
"qrispTaskId": 41755001,
"scanned": "2020-05-05T16:03:30Z"
},
"Port": "UDP123",
"Provider": null,
"Severity": "ROUTINE",
"Status": {
"remediation": [],
"snooze": []
}
}
],
"RoutineExposureCount": 1,
"SearchTerm": "33.2.243.123",
"TotalExposureCount": 1,
"UnknownExposureCount": 0,
"WarningExposureCount": 0
}
Human Readable Output
Expanse Exposure information for: 33.2.243.123
| CriticalExposureCount | ExposureSummaries | RoutineExposureCount | SearchTerm | TotalExposureCount | UnknownExposureCount | WarningExposureCount |
|---|---|---|---|---|---|---|
| 0 | NTP_SERVER exposure on 33.2.243.123:UDP123 | 1 | 33.2.243.123 | 1 | 0 | 0 |
4. expanse-get-domains-for-certificate
expanse-get-domains-for-certificate command
Required Permissions
none
Base Command
expanse-get-domains-for-certificate
Input
| Argument Name | Description | Required |
|---|---|---|
| common_name | The certificate common name | Required |
Context Output
| Path | Type | Description |
|---|---|---|
| Expanse.IPDomains.SearchTerm | string | The common name that was searched |
| Expanse.IPDomains.TotalDomainCount | number | The number of domains found matching the specified certificate |
| Expanse.IPDomains.FlatDomainList | number | An array of all domain names found. This is truncated at 50 |
| Expanse.IPDomains.DomainList | number | An array of domain objects. This is truncated at 50 |
Command Example
!expanse-get-domains-for-certificate common_name="*.us.expanse.co"
Context Example
{
"SearchTerm": "*.us.expanse.co",
"TotalDomainCount": 2,
"FlatDomainList": ["california.us.expanse.co", "dc.us.expanse.co"]
"DomainList": [
{
"ip": "33.2.243.123",
"domain": "california.us.expanse.co",
"type": "DOMAIN_RESOLUTION",
"assetType": "DOMAIN",
"assetKey": "california.us.expanse.co",
"provider": {
"id": "AWS",
"name": "Amazon Web Services"
},
"lastObserved": "2020-06-22T05:20:32.883Z",
"tenant": {
"id": "4b7efca7-c595-408e-b4d1-634080e48367",
"name": "Palo Alto Networks",
"tenantId": "4b7efca7-c595-408e-b4d1-634080e48367"
},
"businessUnits": [
{
"id": "a1f0f39b-f358-3c8c-947b-926887871b88",
"name": "VanDelay Import-Export"
"tenantId": "a1f0f39b-f358-3c8c-947b-926887871b88"
}
],
"commonName": null
},
{
"ip": "33.2.243.123",
"domain": "dc.us.expanse.co",
"type": "DOMAIN_RESOLUTION",
"assetType": "DOMAIN",
"assetKey": "dc.us.expanse.co",
"provider": {
"id": "AWS",
"name": "Amazon Web Services"
},
"lastObserved": "2020-06-21T07:20:32.883Z",
"tenant": {
"id": "4b7efca7-c595-408e-b4d1-634080e48367",
"name": "Palo Alto Networks",
"tenantId": "4b7efca7-c595-408e-b4d1-634080e48367"
},
"businessUnits": [
{
"id": "a1f0f39b-f358-3c8c-947b-926887871b88",
"name": "VanDelay Import-Export"
"tenantId": "a1f0f39b-f358-3c8c-947b-926887871b88"
}
],
"commonName": null
}
]
}
Human Readable Output
Expanse Domains matching Certificate Common Name: *.us.expanse.co
| FlatDomainList | SearchTerm | TotalDomainCount |
|---|---|---|
| california.us.expanse.co, dc.us.expanse.co | *.us.expanse.co | 2 |
Contact Details
For Product Support, please contact your Technical Account Manager or email help@expanseinc.com
Configuration parameters
api_key— API Key (required)isFetch— Fetch incidentsincidentType— Incident typeinsecure— Trust any certificate (not secure)proxy— Use system proxy settingsbehavior— Include Behavior data in incidentspage_limit— How many events to pull from Expander per runfirst_run— How many days to pull past events on first runminimum_severity— Minimum severity of Expanse Exposure to create an incident for
Commands (6)
-
domainSubmits a domain to check.
-
expanse-get-behaviorReturns Risky Flows for the specified IP address. The maximum number of results is 20.
-
expanse-get-certificateReturns information about the domain certificate.
-
expanse-get-domains-for-certificateReturns all domains which have been seen with the specified certificate.
-
expanse-get-exposuresDeprecated command by Expanse. Returns exposure information about the ip.
-
ipSubmits an IP address to check.
import Expanse import demistomock as demisto import json TEST_IP = "12.4.49.74" TEST_API_KEY = "123456789123456789" TEST_DOMAIN = "base2.pets.com" TEST_PAGE_LIMIT = 1 def http_request_mock(method, endpoint, params=None, token=False): ''' make api call ''' if endpoint == 'IdToken': r = MOCK_TOKEN_RESPONSE elif endpoint == 'assets/domains': r = MOCK_DOMAIN_RESPONSE elif endpoint == 'ip-range': r = MOCK_IP_RESPONSE elif endpoint == 'events': r = MOCK_EVENTS elif endpoint == 'behavior/risky-flows': r = MOCK_BEHAVIOR elif endpoint == 'assets/certificates': r = MOCK_CERTIFICATE_RESPONSE elif endpoint == 'exposures/ip-ports': r = MOCK_EXPOSURES_RESPONSE elif endpoint == 'assets/certificates/Jr8RiLR4OfFslz9VmELI9g==': r = MOCK_CERTIFICATE_DETAIL_RESPONSE elif endpoint == 'assets/ips': r = MOCK_IPS_RESONSE return r def http_request_mock_missing(method, endpoint, params=None, token=False): if endpoint == 'ip-range': r = MOCK_IP_EMPTY_RESPONSE return r def test_fetch_incidents(mocker): mocker.patch.object(demisto, 'params', return_value={ 'api_key': TEST_API_KEY, 'first_run': '7' }) mocker.patch('Expanse.http_request', side_effect=http_request_mock) mocker.patch.object(demisto, 'command', return_value='fetch-incidents') mocker.patch.object(demisto, 'results') Expanse.main() results = demisto.results.call_args[0] r = json.loads(results[0]['Contents']) assert r[0]['name'] == "NTP_SERVER on 203.215.173.113:123/UDP" assert r[0]['severity'] == 2 def test_fetch_incidents_with_behavior(mocker): mocker.patch.object(demisto, 'params', return_value={ 'api_key': TEST_API_KEY, 'first_run': '7', 'behavior': True }) mocker.patch('Expanse.http_request', side_effect=http_request_mock) mocker.patch.object(demisto, 'command', return_value='fetch-incidents') mocker.patch.object(demisto, 'results') Expanse.main() results = demisto.results.call_args[0] r = json.loads(results[0]['Contents']) assert r[0]['name'] == "NTP_SERVER on 203.215.173.113:123/UDP" assert r[0]['severity'] == 2 def test_ip(mocker): mocker.patch.object(demisto, 'params', return_value={'api_key': TEST_API_KEY}) mocker.patch.object(demisto, 'args', return_value={'ip': TEST_IP}) mocker.patch('Expanse.http_request', side_effect=http_request_mock) mocker.patch.object(demisto, 'command', return_value='ip') mocker.patch.object(demisto, 'results') Expanse.main() results = demisto.results.call_args[0] assert results[0]['Contents']['search'] == TEST_IP assert results[0]['EntryContext']['DBotScore']['Type'] == 'ip' assert results[0]['EntryContext']['IP(val.Address == obj.Address)']['Address'] == TEST_IP assert results[0]['EntryContext']['IP(val.Address == obj.Address)']['Geo']['Location'] == "41.0433:-81.5239" def test_ip_missing_values(mocker): mocker.patch.object(demisto, 'params', return_value={'api_key': TEST_API_KEY}) mocker.patch.object(demisto, 'args', return_value={'ip': TEST_IP}) mocker.patch('Expanse.http_request', side_effect=http_request_mock_missing) mocker.patch.object(demisto, 'command', return_value='ip') mocker.patch.object(demisto, 'results') Expanse.main() results = demisto.results.call_args[0] assert results[0]['EntryContext']['IP(val.Address == obj.Address)']['Geo'].get('Location') is None def test_domain(mocker): mocker.patch.object(demisto, 'args', return_value={'domain': TEST_DOMAIN}) mocker.patch('Expanse.http_request', side_effect=http_request_mock) mocker.patch.object(demisto, 'command', return_value='domain') mocker.patch.object(demisto, 'results') Expanse.main() results = demisto.results.call_args[0] assert results[0]['Contents']['domain'] == TEST_DOMAIN assert results[0]['EntryContext']['DBotScore']['Type'] == 'url' assert results[0]['EntryContext']['Domain(val.Name == obj.Name)']['Name'] == TEST_DOMAIN def test_certificate(mocker): mocker.patch.object(demisto, 'args', return_value={'common_name': TEST_DOMAIN}) mocker.patch('Expanse.http_request', side_effect=http_request_mock) mocker.patch.object(demisto, 'command', return_value='expanse-get-certificate') mocker.patch.object(demisto, 'results') Expanse.main() results = demisto.results.call_args[0] assert results[0]['EntryContext']['Expanse.Certificate(val.SearchTerm == obj.SearchTerm)']['CommonName'] == TEST_DOMAIN def test_behavior(mocker): mocker.patch.object(demisto, 'args', return_value={'ip': TEST_IP, 'start_time': '2020-03-28T00:00:00.000Z'}) mocker.patch('Expanse.http_request', side_effect=http_request_mock) mocker.patch.object(demisto, 'command', return_value='expanse-get-behavior') mocker.patch.object(demisto, 'results') Expanse.main() results = demisto.results.call_args[0] assert results[0]['EntryContext']['Expanse.Behavior(val.SearchTerm == obj.SearchTerm)']['SearchTerm'] == TEST_IP assert results[0]['EntryContext']['Expanse.Behavior(val.SearchTerm == obj.SearchTerm)']['ExternalAddresses'] \ == '169.255.204.27' def test_exposures(mocker): mocker.patch.object(demisto, 'args', return_value={'ip': TEST_IP}) mocker.patch('Expanse.http_request', side_effect=http_request_mock) mocker.patch.object(demisto, 'command', return_value='expanse-get-exposures') mocker.patch.object(demisto, 'results') Expanse.main() results = demisto.results.call_args[0] assert results[0]['EntryContext']['Expanse.Exposures(val.SearchTerm == obj.SearchTerm)']['SearchTerm'] == TEST_IP assert results[0]['EntryContext']['Expanse.Exposures(val.SearchTerm == obj.SearchTerm)']['WarningExposureCount'] \ == 1 def test_domains_by_certificate(mocker): mocker.patch.object(demisto, 'args', return_value={'common_name': TEST_DOMAIN}) mocker.patch('Expanse.http_request', side_effect=http_request_mock) mocker.patch.object(demisto, 'command', return_value='expanse-get-domains-for-certificate') mocker.patch.object(demisto, 'results') Expanse.main() results = demisto.results.call_args[0] assert results[0]['EntryContext']['Expanse.IPDomains(val.SearchTerm == obj.SearchTerm)']['TotalDomainCount'] == 1 def test_fetch_incidents_command_cache(mocker): mocker.patch("Expanse.PAGE_LIMIT", TEST_PAGE_LIMIT) mocker.patch('Expanse.do_auth') mocker.patch.object(demisto, 'getLastRun', return_value={}) mocker.patch.object(demisto, 'getIntegrationContext', return_value={"incidents": [MOCK_INCIDENT]}) mocker.patch.object(demisto, 'setIntegrationContext') mocker.patch.object(demisto, 'setLastRun') mocker.patch.object(demisto, 'results') Expanse.fetch_incidents_command() results = demisto.results.call_args[0] r = json.loads(results[0]['Contents']) assert r[0]['name'] == "NTP_SERVER on 203.215.173.113:123/UDP" assert demisto.setIntegrationContext.call_args[0][0]['incidents'] is None assert demisto.setLastRun.call_args[0][0]['complete_for_today'] is True def test_fetch_incidents_command_cache_continue(mocker): mocker.patch("Expanse.PAGE_LIMIT", TEST_PAGE_LIMIT) mocker.patch('Expanse.do_auth') mocker.patch.object(demisto, 'getLastRun', return_value={}) mocker.patch.object(demisto, 'getIntegrationContext', return_value={"incidents": [MOCK_INCIDENT] * 2}) mocker.patch.object(demisto, 'setIntegrationContext') mocker.patch.object(demisto, 'setLastRun') mocker.patch.object(demisto, 'results') Expanse.fetch_incidents_command() results = demisto.results.call_args[0] r = json.loads(results[0]['Contents']) assert r[0]['name'] == "NTP_SERVER on 203.215.173.113:123/UDP" assert len(demisto.setIntegrationContext.call_args[0][0]['incidents']) == 1 assert demisto.setLastRun.call_args[0][0]['complete_for_today'] is False def test_fetch_incidents_command_new_cache(mocker): mocker.patch("Expanse.PAGE_LIMIT", TEST_PAGE_LIMIT + 1) mocker.patch('Expanse.do_auth') mocker.patch.object(demisto, 'getLastRun', return_value={}) mocker.patch.object(demisto, 'getIntegrationContext', return_value={"incidents": None}) mocker.patch('Expanse.http_request', side_effect=http_request_mock) mocker.patch.object(demisto, 'setIntegrationContext') mocker.patch.object(demisto, 'setLastRun') mocker.patch.object(demisto, 'results') Expanse.fetch_incidents_command() results = demisto.results.call_args[0] r = json.loads(results[0]['Contents']) assert r[0]['name'] == "NTP_SERVER on 203.215.173.113:123/UDP" assert demisto.setIntegrationContext.call_args[0][0]['incidents'] is None assert demisto.setLastRun.call_args[0][0]['complete_for_today'] is True def test_fetch_incidents_command_new_cache_continue(mocker): mocker.patch("Expanse.PAGE_LIMIT", TEST_PAGE_LIMIT) mocker.patch('Expanse.do_auth') mocker.patch.object(demisto, 'getLastRun', return_value={}) mocker.patch.object(demisto, 'getIntegrationContext', return_value={"incidents": None}) mocker.patch('Expanse.http_request', side_effect=http_request_mock) mocker.patch.object(demisto, 'setIntegrationContext') mocker.patch.object(demisto, 'setLastRun') mocker.patch.object(demisto, 'results') Expanse.fetch_incidents_command() results = demisto.results.call_args[0] r = json.loads(results[0]['Contents']) assert r[0]['name'] == "NTP_SERVER on 203.215.173.113:123/UDP" assert len(demisto.setIntegrationContext.call_args[0][0]['incidents']) == 1 assert demisto.setLastRun.call_args[0][0]['complete_for_today'] is False MOCK_TOKEN_RESPONSE = { 'token': '123456789abcdefg' } MOCK_IP_RESPONSE = { "data": [ { "id": "b0f025ab-5e6c-4300-a68e-bd127d97e201", "created": "2019-08-02", "modified": "2019-09-04", "ipVersion": "4", "startAddress": "74.142.119.128", "endAddress": "74.142.119.135", "businessUnits": [ { "id": "6b73ef6c-b230-3797-b321-c4a340169eb7", "name": "Acme Latex Supply" } ], "annotations": { "tags": [], "additionalNotes": "", "pointsOfContact": [] }, "severityCounts": [ { "type": "CRITICAL", "count": 2 }, { "type": "ROUTINE", "count": 2 }, { "type": "WARNING", "count": 4 } ], "attributionReasons": [ { "reason": "This parent range is attributed via IP network registration ..." } ], "relatedRegistrationInformation": [ { "handle": "NET-74-142-119-128-1", "startAddress": "74.142.119.128", "endAddress": "74.142.119.135", "ipVersion": "4", "country": "None", "name": "NET-74-142-119-128-1", "parentHandle": "NET-74-142-0-0-1", "whoisServer": "whois.arin.net", "updatedDate": "2019-08-02", "remarks": "", "registryEntities": [ { "id": "0165fc31-502d-3a77-8a47-2f2520888a60", "handle": "CC-3517", "address": "6399 S. Fiddler's Green Circle\nGreenwood Village\nCO\n80111\nUnited States ", "email": "", "events": [ { "action": "last changed", "actor": False, "date": "2018-11-27T15:23:50-05:00", "links": "[]" }, { "action": "registration", "actor": False, "date": "2018-10-10T11:22:33-04:00", "links": "[]" } ], "firstRegistered": False, "formattedName": "Charter Communications Inc", "lastChanged": False, "org": "", "phone": "", "remarks": "Legacy Time Warner Cable IP Assets", "statuses": "", "relatedEntityHandles": [ "IPADD1-ARIN", "ABUSE10-ARIN" ], "roles": [ "registrant" ] }, { "id": "33c2c1bb-43e0-3a8d-94e6-81f800aa1786", "handle": "IPADD1-ARIN", "address": "6399 S Fiddlers Green Circle\nGreenwood Village\nCO\n80111\nUnited States", "email": "ipaddressing@chartercom.com", "events": [ { "action": "last changed", "actor": False, "date": "2018-10-10T13:09:53-04:00", "links": "[]" }, { "action": "registration", "actor": False, "date": "2002-09-10T11:10:50-04:00", "links": "[]" } ], "firstRegistered": False, "formattedName": "IPAddressing", "lastChanged": False, "org": "IPAddressing", "phone": "+1-314-288-3111", "remarks": "IP Addressing is used for corporate IP allocation and administration ...", "statuses": "validated", "relatedEntityHandles": [], "roles": [ "technical", "administrative" ] }, { "id": "49e585f7-0e2b-30df-acb0-2a4c45f4654f", "handle": "ABUSE10-ARIN", "address": "13820 Sunrise Valley Drive\nHerndon\nVA\n20171\nUnited States ", "email": "abuse@rr.com", "events": [ { "action": "last changed", "actor": False, "date": "2016-07-28T13:11:35-04:00", "links": "[]" }, { "action": "registration", "actor": False, "date": "2002-08-25T14:28:44-04:00", "links": "[]" } ], "firstRegistered": False, "formattedName": "Abuse", "lastChanged": False, "org": "Abuse", "phone": "+1-703-345-3416", "remarks": "ARIN has attempted to validate the data ...", "statuses": "", "relatedEntityHandles": [], "roles": [ "abuse" ] }, { "id": "736dbbcf-977e-301a-8705-c6a9ebff83fe", "handle": "C07162769", "address": "2064 KILLIAN RD\nAKRON\nOH\n44312\nUnited States ", "email": "", "events": [ { "action": "last changed", "actor": False, "date": "2018-10-25T21:53:06-04:00", "links": "[]" }, { "action": "registration", "actor": False, "date": "2018-10-25T21:53:06-04:00", "links": "[]" } ], "firstRegistered": False, "formattedName": "KILLIAN LATEX, INC", "lastChanged": False, "org": "", "phone": "", "remarks": "", "statuses": "", "relatedEntityHandles": [ "CC-3517", "IPADD1-ARIN", "ABUSE10-ARIN" ], "roles": [ "registrant" ] } ] } ], "locationInformation": [ { "ip": "12.4.49.74", "geolocation": { "latitude": 41.0433, "longitude": -81.5239, "city": "AKRON", "regionCode": "OH", "countryCode": "US" } } ], "rangeSize": 8, "responsiveIpCount": 1, "rangeIntroduced": "2019-08-02", "customChildRanges": [] } ], "pagination": { "next": False, "prev": False }, "meta": { "totalCount": 1 } } MOCK_IP_EMPTY_RESPONSE = { "data": [ { "id": "b0f025ab-5e6c-4300-a68e-bd127d97e201", "created": "2019-08-02", "modified": "2019-09-04", "ipVersion": "4", "startAddress": "74.142.119.128", "endAddress": "74.142.119.135", "businessUnits": [ { "id": "6b73ef6c-b230-3797-b321-c4a340169eb7", "name": "Acme Latex Supply" } ], "annotations": { "tags": [], "additionalNotes": "", "pointsOfContact": [] }, "severityCounts": [ { "type": "CRITICAL", "count": 2 }, { "type": "ROUTINE", "count": 2 }, { "type": "WARNING", "count": 4 } ], "attributionReasons": [ { "reason": "This parent range is attributed via IP network registration ..." } ], "relatedRegistrationInformation": [ { "handle": "NET-74-142-119-128-1", "startAddress": "74.142.119.128", "endAddress": "74.142.119.135", "ipVersion": "4", "country": "None", "name": "NET-74-142-119-128-1", "parentHandle": "NET-74-142-0-0-1", "whoisServer": "whois.arin.net", "updatedDate": "2019-08-02", "remarks": "", "registryEntities": [ { "id": "0165fc31-502d-3a77-8a47-2f2520888a60", "handle": "CC-3517", "address": "6399 S. Fiddler's Green Circle\nGreenwood Village\nCO\n80111\nUnited States ", "email": "", "events": [ { "action": "last changed", "actor": False, "date": "2018-11-27T15:23:50-05:00", "links": "[]" }, { "action": "registration", "actor": False, "date": "2018-10-10T11:22:33-04:00", "links": "[]" } ], "firstRegistered": False, "formattedName": "Charter Communications Inc", "lastChanged": False, "org": "", "phone": "", "remarks": "Legacy Time Warner Cable IP Assets", "statuses": "", "relatedEntityHandles": [ "IPADD1-ARIN", "ABUSE10-ARIN" ], "roles": [ "registrant" ] }, { "id": "33c2c1bb-43e0-3a8d-94e6-81f800aa1786", "handle": "IPADD1-ARIN", "address": "6399 S Fiddlers Green Circle\nGreenwood Village\nCO\n80111\nUnited States", "email": "ipaddressing@chartercom.com", "events": [ { "action": "last changed", "actor": False, "date": "2018-10-10T13:09:53-04:00", "links": "[]" }, { "action": "registration", "actor": False, "date": "2002-09-10T11:10:50-04:00", "links": "[]" } ], "firstRegistered": False, "formattedName": "IPAddressing", "lastChanged": False, "org": "IPAddressing", "phone": "+1-314-288-3111", "remarks": "IP Addressing is used for corporate IP allocation and administration ...", "statuses": "validated", "relatedEntityHandles": [], "roles": [ "technical", "administrative" ] }, { "id": "49e585f7-0e2b-30df-acb0-2a4c45f4654f", "handle": "ABUSE10-ARIN", "address": "13820 Sunrise Valley Drive\nHerndon\nVA\n20171\nUnited States ", "email": "abuse@rr.com", "events": [ { "action": "last changed", "actor": False, "date": "2016-07-28T13:11:35-04:00", "links": "[]" }, { "action": "registration", "actor": False, "date": "2002-08-25T14:28:44-04:00", "links": "[]" } ], "firstRegistered": False, "formattedName": "Abuse", "lastChanged": False, "org": "Abuse", "phone": "+1-703-345-3416", "remarks": "ARIN has attempted to validate the data ...", "statuses": "", "relatedEntityHandles": [], "roles": [ "abuse" ] }, { "id": "736dbbcf-977e-301a-8705-c6a9ebff83fe", "handle": "C07162769", "address": "2064 KILLIAN RD\nAKRON\nOH\n44312\nUnited States ", "email": "", "events": [ { "action": "last changed", "actor": False, "date": "2018-10-25T21:53:06-04:00", "links": "[]" }, { "action": "registration", "actor": False, "date": "2018-10-25T21:53:06-04:00", "links": "[]" } ], "firstRegistered": False, "formattedName": "KILLIAN LATEX, INC", "lastChanged": False, "org": "", "phone": "", "remarks": "", "statuses": "", "relatedEntityHandles": [ "CC-3517", "IPADD1-ARIN", "ABUSE10-ARIN" ], "roles": [ "registrant" ] } ] } ], "locationInformation": [ { "ip": "12.4.49.74", "geolocation": { "city": "AKRON", "regionCode": "OH", "countryCode": "US" } } ], "rangeSize": 8, "responsiveIpCount": 1, "rangeIntroduced": "2019-08-02", "customChildRanges": [] } ], "pagination": { "next": False, "prev": False }, "meta": { "totalCount": 1 } } MOCK_DOMAIN_RESPONSE = { "data": [ { 'id': '74384207-e542-3c52-895f-68a1539defdd', 'dateAdded': '2020-01-04T04:57:48.580Z', 'domain': 'base2.pets.com', 'tenant': { 'id': '04b5140e-bbe2-3e9c-9318-a39a3b547ed5', 'name': 'VanDelay Industries', 'tenantId': '04b5140e-bbe2-3e9c-9318-a39a3b547ed5' }, 'businessUnits': [ { 'id': '04b5140e-bbe2-3e9c-9318-a39a3b547ed5', 'name': 'VanDelay Industries', 'tenantId': '04b5140e-bbe2-3e9c-9318-a39a3b547ed5' } ], 'providers': [ { 'id': 'Other', 'name': 'Other' } ], 'firstObserved': '2020-01-02T09:30:00.374Z', 'lastObserved': '2020-01-02T09:30:00.374Z', 'hasLinkedCloudResources': False, 'sourceDomain': 'enron.com', 'whois': [ { 'domain': 'enron.com', 'registryDomainId': None, 'updatedDate': '2015-07-29T16:20:56Z', 'creationDate': '1995-10-10T04:00:00Z', 'registryExpiryDate': '2019-10-10T04:00:00Z', 'reseller': None, 'registrar': { 'name': 'GoDaddy.com, LLC', 'whoisServer': 'whois.godaddy.com', 'url': None, 'ianaId': None, 'registrationExpirationDate': None, 'abuseContactEmail': None, 'abuseContactPhone': None }, 'domainStatuses': [ 'clientDeleteProhibited clientRenewProhibited clientTransferProhibited clientUpdateProhibited'], 'nameServers': ['NS73.DOMAINCONTROL.COM', 'NS74.DOMAINCONTROL.COM'], 'registrant': { 'name': 'Registration Private', 'organization': 'Domains By Proxy, LLC', 'street': 'DomainsByProxy.com|14455 N. Hayden Road', 'city': 'Scottsdale', 'province': 'Arizona', 'postalCode': '85260', 'country': 'UNITED STATES', 'phoneNumber': '14806242599', 'phoneExtension': '', 'faxNumber': '14806242598', 'faxExtension': '', 'emailAddress': 'ENRON.COM@domainsbyproxy.com', 'registryId': None}, 'admin': { 'name': 'Registration Private', 'organization': 'Domains By Proxy, LLC', 'street': 'DomainsByProxy.com|14455 N. Hayden Road', 'city': 'Scottsdale', 'province': 'Arizona', 'postalCode': '85260', 'country': 'UNITED STATES', 'phoneNumber': '14806242599', 'phoneExtension': '', 'faxNumber': '14806242598', 'faxExtension': '', 'emailAddress': 'ENRON.COM@domainsbyproxy.com', 'registryId': None}, 'tech': { 'name': None, 'organization': None, 'street': None, 'city': None, 'province': None, 'postalCode': None, 'country': None, 'phoneNumber': None, 'phoneExtension': None, 'faxNumber': None, 'faxExtension': None, 'emailAddress': None, 'registryId': None}, 'dnssec': None } ], 'isCollapsed': False, 'lastSampledIp': '192.64.147.150', 'details': None, 'lastSubdomainMetadata': None, 'dnsResolutionStatus': ['HAS_DNS_RESOLUTION'], 'serviceStatus': ['NO_ACTIVE_SERVICE', 'NO_ACTIVE_CLOUD_SERVICE', 'NO_ACTIVE_ON_PREM_SERVICE'] }, ] } MOCK_EVENTS = { "meta": { "dataAvailable": True }, "pagination": { "next": False }, "data": [ { 'eventType': 'ON_PREM_EXPOSURE_APPEARANCE', 'eventTime': '2020-02-05T00:00:00Z', 'businessUnit': { 'id': 'a1f0f39b-f358-3c8c-947b-926887871b88', 'name': 'VanDelay Import-Export' }, 'payload': { '_type': 'ExposurePayload', 'id': 'b0acfbc5-4d55-3fdb-9155-4927eab91218', 'exposureType': 'NTP_SERVER', 'ip': '203.215.173.113', 'port': 123, 'portProtocol': 'UDP', 'exposureId': '6bedf636-5b6a-3b47-82a5-92b511c0649b', 'domainName': None, 'scanned': '2020-02-05T00:00:00Z', 'geolocation': { 'latitude': 33.7, 'longitude': 73.17, 'city': 'ISLAMABAD', 'regionCode': '', 'countryCode': 'PK' }, 'configuration': { '_type': 'NtpServerConfiguration', 'response': { 'ntp': { 'leapIndicator': 0, 'mode': 4, 'poll': 4, 'precision': -19, 'stratum': 5, 'delay': 0, 'dispersion': 22, 'version': 4, 'originateTime': '2004-11-24T15:12:11.444Z', 'receiveTime': '2020-02-05T14:25:08.963Z', 'updateTime': '2020-02-05T14:25:01.597Z', 'transmitTime': '2020-02-05T14:25:08.963Z', 'reference': { 'ref_ip': { 'reference': { 'ipv4': '127.127.1.1' } } }, 'extentionData': None, 'keyIdentifier': None, 'messageDigest': None } } }, 'severity': 'WARNING', 'tags': { 'ipRange': ['untagged'] }, 'providers': ['InternallyHosted'], 'certificatePem': None, 'remediationStatuses': [] }, 'id': 'b4a1e2e6-165a-31a5-9e6a-af286adc3dcd' }, { 'eventType': 'ON_PREM_EXPOSURE_APPEARANCE', 'eventTime': '2020-02-05T00:00:00Z', 'businessUnit': { 'id': 'a1f0f39b-f358-3c8c-947b-926887871b88', 'name': 'VanDelay Import-Export' }, 'payload': { '_type': 'ExposurePayload', 'id': 'aaaabbbb-4d55-3fdb-9155-4927eab91218', 'exposureType': 'RDP_SERVER', 'ip': '203.215.173.113', 'port': 3389, 'portProtocol': 'TCP', 'exposureId': '6bedf636-5b6a-3b47-82a5-92b511c0649b', 'domainName': None, 'scanned': '2020-02-05T00:00:00Z', 'geolocation': { 'latitude': 33.7, 'longitude': 73.17, 'city': 'ISLAMABAD', 'regionCode': '', 'countryCode': 'PK' }, 'configuration': { '_type': 'RdpServerConfiguration', 'nativeRdpProtocol': True }, 'severity': 'CRITICAL', 'tags': { 'ipRange': ['untagged'] }, 'providers': ['InternallyHosted'], 'certificatePem': None, 'remediationStatuses': [] }, 'id': 'aaaabbbb-165a-31a5-9e6a-af286adc3dcd' } ] } MOCK_BEHAVIOR = { "meta": { "totalCount": 1 }, "pagination": { "next": False }, "data": [ { "id": "705092a5-d139-3e48-bbad-42539cc14304", "tenantBusinessUnitId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5", "businessUnit": { "id": "6b73ef6c-b230-3797-b321-c4a340169eb7", "name": "Acme Latex Supply" }, "riskRule": { "id": "02b6c647-65f4-4b69-b4b0-64af34fd1b29", "name": "Connections to and from Blacklisted Countries", "description": "Connections to and from Blacklisted Countries \ (Belarus, Côte d'Ivoire, Cuba, Democratic Republic of the Congo, \ Iran, Iraq, Liberia, North Korea, South Sudan, Sudan, Syria, Zimbabwe)", "additionalDataFields": "[]" }, "internalAddress": "12.4.49.74", "internalPort": 443, "externalAddress": "169.255.204.27", "externalPort": 43624, "flowDirection": "INBOUND", "acked": True, "protocol": "TCP", "externalCountryCodes": [ "CD" ], "internalCountryCodes": [ "CN" ], "externalCountryCode": "CD", "internalCountryCode": "CN", "internalExposureTypes": [ "HttpServer" ], "internalDomains": [ "base2.pets.com" ], "internalTags": { "ipRange": [] }, "observationTimestamp": "2020-03-22T23:44:31.506Z", "created": "2020-03-23T02:28:00.336449Z" } ] } MOCK_CERTIFICATE_RESPONSE = { "data": [{ "id": "1079d791-79f6-3122-a965-980471a244e8", "tenant": { "id": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5", "name": "VanDelay Industries", "tenantId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5" }, "businessUnits": [ { "id": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5", "name": "VanDelay Industries", "tenantId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5" } ], "dateAdded": "2019-11-21T09:15:02.271281Z", "firstObserved": None, "lastObserved": None, "providers": [ { "id": "Unknown", "name": "None" } ], "certificate": { "md5Hash": "Jr8RiLR4OfFslz9VmELI9g==", "id": "26bf1188-b478-39f1-ac97-3f559842c8f6", "issuer": "C=GB,ST=Greater Manchester,L=Salford,O=COMODO CA Limited,CN=COMODO RSA \ Organization Validation Secure Server CA", "issuerAlternativeNames": "", "issuerCountry": "GB", "issuerEmail": None, "issuerLocality": "Salford", "issuerName": "COMODO RSA Organization Validation Secure Server CA", "issuerOrg": "COMODO CA Limited", "issuerOrgUnit": None, "issuerState": "Greater Manchester", "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0/zl9UD5ylG59/MtZpU0NWT3zrT5uRFUU2FgOoiZOZ9MklZqm+HHV+e3lTHrx+\ 5JlAccfS8lkVdvJIrOAGe9Py5S2Ir6rCUmJMrWCpmEXE5clrifMjg1PA4ueVlcYkNnNK5oHhGMa6WhVXQlA9YK2e9i4KMdqXA1WzPRpvgz32oARBSHv3KWl5W\ JacbFj9seobIyGcqeyZEQaIJoE0tbLRi2qy0KShLf9+Uc7mQnNFwD8Y8Zqo96zE65c5+NctwKteYMs2XMFXtJ5sknALFrwbvsYZfUxXn/glgSU+v5jQUcyCNr\ GcevhZHW3D9Ia2mymbfKfszUVMRl/Fpi3EmxHwIDAQAB", "publicKeyAlgorithm": "RSA", "publicKeyRsaExponent": 65537, "signatureAlgorithm": "SHA256withRSA", "subject": "C=US,PostalCode=60179,ST=Illinois,L=Hoffman Estates,O=Sears Brands LLC,OU=eCommerce Development,OU=Multi-Domain \ SSL,CN=base2.pets.com", "subjectAlternativeNames": "base3.pets.com,base4.pets.com", "subjectCountry": "US", "subjectEmail": None, "subjectLocality": "Hoffman Estates", "subjectName": "base2.pets.com", "subjectOrg": "Sears Brands LLC", "subjectOrgUnit": "eCommerce Development,Multi-Domain SSL", "subjectState": "Illinois", "serialNumber": "145397449086924134621453997645674717378", "validNotBefore": "2016-03-22T00:00:00Z", "validNotAfter": "2018-03-22T23:59:59Z", "version": "3", "publicKeyBits": 2048, "pemSha256": "8OLAalY9ZOgYCD6yQJWyGNXZrWl9bugv-S3AGlIQi84=", "pemSha1": "DN3fXmU-IR3C6l1CTISAlgpvGFA=", "publicKeyModulus": "d3fce5f540f9ca51b9f7f32d6695343564f7ceb4f9b911545361603a8899399f4c92566a9be1c757e7b79531ebc7ee4994071c7\ d2f2591576f248ace0067bd3f2e52d88afaac252624cad60a99845c4e5c96b89f3238353c0e2e79595c62436734ae681e118c6ba5a155742503d60ad9ef6\ 2e0a31da970355b33d1a6f833df6a00441487bf729697958969c6c58fdb1ea1b23219ca9ec99110688268134b5b2d18b6ab2d0a4a12dff7e51cee6427345\ c03f18f19aa8f7acc4eb9739f8d72dc0ab5e60cb365cc157b49e6c92700b16bc1bbec6197d4c579ff82581253ebf98d051cc8236b19c7af8591d6dc3f486\ b69b299b7ca7eccd454c465fc5a62dc49b11f", "publicKeySpki": "U_pBSH73cx7BWHRuE3UZvYkONJ8s694ziYTHbLVgtis=" }, "commonName": "base2.pets.com", "properties": [ "EXPIRED" ], "hasLinkedCloudResources": False, "certificateAdvertisementStatus": [ "NO_CERTIFICATE_ADVERTISEMENT" ], "serviceStatus": [ "NO_ACTIVE_SERVICE", "NO_ACTIVE_CLOUD_SERVICE", "NO_ACTIVE_ON_PREM_SERVICE" ], "details": { "recentIps": [], "cloudResources": [] } }] } MOCK_EXPOSURES_RESPONSE = { "data": [{ "id": "1bb22f55-673e-3156-bb73-991dc1a8d197", "exposureType": "LONG_EXPIRATION_CERTIFICATE_ADVERTISEMENT", "businessUnit": { "id": "6b73ef6c-b230-3797-b321-c4a340169eb7", "name": "Acme Latex Supply", "tenantId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5" }, "ip": "12.4.49.74", "port": "443", "portNumber": 443, "portProtocol": "TCP", "provider": None, "tags": { "ipRange": [ "untagged" ] }, "severity": "WARNING", "certificate": { "id": "Vw6RoQXvVxlCtbCBO5EMoA==", "issuer": "C=US,ST=California,L=Sunnyvale,O=HTTPS Management Certificate for SonicWALL \ (self-signed),OU=HTTPS Management Certificate for SonicWALL (self-signed),CN=192.168.168.168", "issuerAlternativeNames": "", "issuerCountry": "US", "issuerEmail": "", "issuerLocality": "Sunnyvale", "issuerName": "192.168.168.168", "issuerOrg": "HTTPS Management Certificate for SonicWALL (self-signed)", "issuerOrgUnit": "HTTPS Management Certificate for SonicWALL (self-signed)", "issuerState": "California", "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5akohpdNcWTsjtYeOoR2KqN577kz\ C2tPrD9Nl4hgunmMoc8xMA2wXLhWCEMFD6loaYH2gOIrRhytbRa3XB3stiGT5NVjWMyxWJk3dLFZ2fZLpRG\ upJhoFv7IE3pB71AXcgZG+25FPjEPV+Z8SRQI3Bd3IBZfoGASmRbCg7YNWdAIRdb3e8Rb99uBTDstYs5\ ucWnXZI6+IDTpJVsVjoS9olYq26Q1FbC7x9dmYD74ATwcdAmbcbINlUrrptafjRuAfyaLQxt0OUkA\ Hm65EYliqqsS+88BIW4fIxD87X5MLY/tNOBGjKUXE0+iK1jbrVrrUoA0nLnOeDquFq72MixkwwIDAQAB", "publicKeyAlgorithm": "RSA", "publicKeyRsaExponent": 65537, "signatureAlgorithm": "SHA1withRSA", "subject": "C=US,ST=California,L=Sunnyvale,O=HTTPS Management Certificate for SonicWALL \ (self-signed),OU=HTTPS Management Certificate for SonicWALL (self-signed),CN=192.168.168.168", "subjectAlternativeNames": "", "subjectCountry": "US", "subjectEmail": "", "subjectLocality": "Sunnyvale", "subjectName": "192.168.168.168", "subjectOrg": "HTTPS Management Certificate for SonicWALL (self-signed)", "subjectOrgUnit": "HTTPS Management Certificate for SonicWALL (self-signed)", "subjectState": "California", "serialNumber": "1533615873", "validNotBefore": "1970-01-01T00:00:01Z", "validNotAfter": "2038-01-19T03:14:07Z", "version": "3", "isSelfSigned": True, "isWildcard": False, "isDomainControlValidated": False, "publicKeyBits": 2048, "numCertificateObservations": 0, "numKeyObservations": 0 }, "firstObservation": { "id": "05cbdfc6-48fa-3c6d-80ac-4ad39d5ece88", "ip": "12.4.49.74", "scanned": "2019-09-04T14:23:38Z", "hostname": None, "portNumber": 443, "geolocation": { "city": "WESTSACRAMENTO", "latitude": 38.5921, "longitude": -121.5456, "regionCode": "CA", "countryCode": "US" }, "qrispTaskId": 29825013, "portProtocol": "TCP", "configuration": { "certificate": { "id": "570e91a1-05ef-3719-82b5-b0813b910ca0", "issuer": "C=US,ST=California,L=Sunnyvale,O=HTTPS Management Certificate for SonicWALL\ (self-signed),OU=HTTPS Management Certificate for SonicWALL (self-signed),CN=192.168.168.168", "md5Hash": "Vw6RoQXvVxlCtbCBO5EMoA==", "pemSha1": "GkB2d6a9Us_urkxp14wwAkp1VqM=", "subject": "C=US,ST=California,L=Sunnyvale,O=HTTPS Management Certificate for SonicWALL\ (self-signed),OU=HTTPS Management Certificate for SonicWALL (self-signed),CN=192.168.168.168", "version": "3", "issuerOrg": "HTTPS Management Certificate for SonicWALL (self-signed)", "pemSha256": "uuAMf7Q_qEaStP_lU-j-m6CflNqkoZsHysSrHLhwy78=", "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5akohpdNcWTsjtYeOoR2KqN577kzC2tPrD9\ Nl4hgunmMoc8xMA2wXLhWCEMFD6loaYH2gOIrRhytbRa3XB3stiGT5NVjWMyxWJk3dLFZ2fZLpRGupJhoFv7IE3pB7\ 1AXcgZG+25FPjEPV+Z8SRQI3Bd3IBZfoGASmRbCg7YNWdAIRdb3e8Rb99uBTDstYs5ucWnXZI6+IDTpJVsVjoS9\ olYq26Q1FbC7x9dmYD74ATwcdAmbcbINlUrrptafjRuAfyaLQxt0OUkAHm65EYliqqsS+88BIW4fIxD87X5M\ LY/tNOBGjKUXE0+iK1jbrVrrUoA0nLnOeDquFq72MixkwwIDAQAB", "isWildcard": False, "issuerName": "192.168.168.168", "subjectOrg": "HTTPS Management Certificate for SonicWALL (self-signed)", "issuerEmail": "", "issuerState": "California", "subjectName": "192.168.168.168", "isSelfSigned": True, "serialNumber": "1533615873", "subjectEmail": "", "subjectState": "California", "issuerCountry": "US", "issuerOrgUnit": "HTTPS Management Certificate for SonicWALL (self-signed)", "publicKeyBits": 2048, "publicKeySpki": "pVo0cfjizXqevMzNgJD2nnEZKTwbpEgJYY7cwQuYK_o=", "validNotAfter": "2038-01-19T03:14:07Z", "issuerLocality": "Sunnyvale", "subjectCountry": "US", "subjectOrgUnit": "HTTPS Management Certificate for SonicWALL (self-signed)", "validNotBefore": "1970-01-01T00:00:01Z", "subjectLocality": "Sunnyvale", "publicKeyModulus": "e5a92886974d7164ec8ed61e3a84762aa379efb9330b6b4fac3f4d978860ba798ca1cf31\ 300db05cb8560843050fa9686981f680e22b461cad6d16b75c1decb62193e4d56358ccb158993774b159d9f64b\ a511aea4986816fec8137a41ef5017720646fb6e453e310f57e67c491408dc177720165fa060129916c283b\ 60d59d00845d6f77bc45bf7db814c3b2d62ce6e7169d7648ebe2034e9255b158e84bda2562adba43515b\ 0bbc7d766603ef8013c1c74099b71b20d954aeba6d69f8d1b807f268b431b743949001e6eb9118962\ aaab12fbcf01216e1f2310fced7e4c2d8fed34e0468ca517134fa22b58dbad5aeb5280349cb9c\ e783aae16aef6322c64c3", "publicKeyAlgorithm": "RSA", "signatureAlgorithm": "SHA1withRSA", "publicKeyRsaExponent": 65537, "issuerAlternativeNames": "", "subjectAlternativeNames": "", "isDomainControlValidated": False }, "validWhenScanned": True } }, "lastObservation": { "id": "747e01c9-2ea6-34ac-90d9-0704c4fe32b1", "ip": "12.4.49.74", "scanned": "2020-04-21T03:04:32Z", "hostname": None, "portNumber": 443, "geolocation": { "city": "WESTSACRAMENTO", "latitude": 38.5921, "longitude": -121.5456, "regionCode": "CA", "countryCode": "US" }, "qrispTaskId": 41034108, "portProtocol": "TCP", "configuration": { "certificate": { "id": "570e91a1-05ef-3719-82b5-b0813b910ca0", "issuer": "C=US,ST=California,L=Sunnyvale,O=HTTPS Management Certificate for SonicWALL \ (self-signed),OU=HTTPS Management Certificate for SonicWALL (self-signed),CN=192.168.168.168", "md5Hash": "Vw6RoQXvVxlCtbCBO5EMoA==", "pemSha1": "GkB2d6a9Us_urkxp14wwAkp1VqM=", "subject": "C=US,ST=California,L=Sunnyvale,O=HTTPS Management Certificate for SonicWALL \ (self-signed),OU=HTTPS Management Certificate for SonicWALL (self-signed),CN=192.168.168.168", "version": "3", "issuerOrg": "HTTPS Management Certificate for SonicWALL (self-signed)", "pemSha256": "uuAMf7Q_qEaStP_lU-j-m6CflNqkoZsHysSrHLhwy78=", "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5akohpdNcWTsjtYeOoR2KqN577kzC2tPr\ D9Nl4hgunmMoc8xMA2wXLhWCEMFD6loaYH2gOIrRhytbRa3XB3stiGT5NVjWMyxWJk3dLFZ2fZLpRGupJhoFv7IE3pB7\ 1AXcgZG+25FPjEPV+Z8SRQI3Bd3IBZfoGASmRbCg7YNWdAIRdb3e8Rb99uBTDstYs5ucWnXZI6+IDTpJVsVjoS9olYq26\ Q1FbC7x9dmYD74ATwcdAmbcbINlUrrptafjRuAfyaLQxt0OUkAHm65EYliqqsS+88BIW4fIxD87X5MLY/tNOBGjKUXE0+iK\ 1jbrVrrUoA0nLnOeDquFq72MixkwwIDAQAB", "isWildcard": False, "issuerName": "192.168.168.168", "subjectOrg": "HTTPS Management Certificate for SonicWALL (self-signed)", "issuerEmail": "", "issuerState": "California", "subjectName": "192.168.168.168", "isSelfSigned": True, "serialNumber": "1533615873", "subjectEmail": "", "subjectState": "California", "issuerCountry": "US", "issuerOrgUnit": "HTTPS Management Certificate for SonicWALL (self-signed)", "publicKeyBits": 2048, "publicKeySpki": "pVo0cfjizXqevMzNgJD2nnEZKTwbpEgJYY7cwQuYK_o=", "validNotAfter": "2038-01-19T03:14:07Z", "issuerLocality": "Sunnyvale", "subjectCountry": "US", "subjectOrgUnit": "HTTPS Management Certificate for SonicWALL (self-signed)", "validNotBefore": "1970-01-01T00:00:01Z", "subjectLocality": "Sunnyvale", "publicKeyModulus": "e5a92886974d7164ec8ed61e3a84762aa379efb9330b6b4fac3f4d978860ba798ca1cf\ 31300db05cb8560843050fa9686981f680e22b461cad6d16b75c1decb62193e4d56358ccb158993774b159d9f64b\ a511aea4986816fec8137a41ef5017720646fb6e453e310f57e67c491408dc177720165fa060129916c283b60d59\ d00845d6f77bc45bf7db814c3b2d62ce6e7169d7648ebe2034e9255b158e84bda2562adba43515b0bbc7d766603ef\ 8013c1c74099b71b20d954aeba6d69f8d1b807f268b431b743949001e6eb9118962aaab12fbcf01216e1f2310fced7\ e4c2d8fed34e0468ca517134fa22b58dbad5aeb5280349cb9ce783aae16aef6322c64c3", "publicKeyAlgorithm": "RSA", "signatureAlgorithm": "SHA1withRSA", "publicKeyRsaExponent": 65537, "issuerAlternativeNames": "", "subjectAlternativeNames": "", "isDomainControlValidated": False }, "validWhenScanned": True } }, "statuses": { "remediation": [ { "id": "7b379428-4d12-4fbd-9b3f-15a04d7e4e11", "comment": "Reached out to device owner", "created": "2020-04-08T19:17:31.514017Z", "modified": "2020-04-08T19:17:31.514536Z", "stage": 100, "user": "60709972-10f2-4a22-8a9a-978b264f964d", "exposureId": "1bb22f55-673e-3156-bb73-991dc1a8d197", "provider": None, "username": "beta+vandelay@expanseinc.com" } ], "snooze": [] } }] } MOCK_CERTIFICATE_DETAIL_RESPONSE = { "id": "1079d791-79f6-3122-a965-980471a244e8", "tenant": { "id": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5", "name": "VanDelay Industries", "tenantId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5" }, "businessUnits": [ { "id": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5", "name": "VanDelay Industries", "tenantId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5" } ], "dateAdded": "2019-11-21T09:15:02.271281Z", "firstObserved": None, "lastObserved": None, "providers": [ { "id": "Unknown", "name": "None" } ], "certificate": { "md5Hash": "Jr8RiLR4OfFslz9VmELI9g==", "id": "26bf1188-b478-39f1-ac97-3f559842c8f6", "issuer": "C=GB,ST=Greater Manchester,L=Salford,O=COMODO CA Limited,CN=COMODO RSA \ Organization Validation Secure Server CA", "issuerAlternativeNames": "", "issuerCountry": "GB", "issuerEmail": None, "issuerLocality": "Salford", "issuerName": "COMODO RSA Organization Validation Secure Server CA", "issuerOrg": "COMODO CA Limited", "issuerOrgUnit": None, "issuerState": "Greater Manchester", "publicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0/zl9UD5ylG59/MtZpU0NWT3zrT5uRFUU2FgOoiZOZ9MklZqm+HHV+e3lTHrx+\ 5JlAccfS8lkVdvJIrOAGe9Py5S2Ir6rCUmJMrWCpmEXE5clrifMjg1PA4ueVlcYkNnNK5oHhGMa6WhVXQlA9YK2e9i4KMdqXA1WzPRpvgz32oARBSHv3KWl5W\ JacbFj9seobIyGcqeyZEQaIJoE0tbLRi2qy0KShLf9+Uc7mQnNFwD8Y8Zqo96zE65c5+NctwKteYMs2XMFXtJ5sknALFrwbvsYZfUxXn/glgSU+v5jQUcyCNr\ GcevhZHW3D9Ia2mymbfKfszUVMRl/Fpi3EmxHwIDAQAB", "publicKeyAlgorithm": "RSA", "publicKeyRsaExponent": 65537, "signatureAlgorithm": "SHA256withRSA", "subject": "C=US,PostalCode=60179,ST=Illinois,L=Hoffman Estates,O=Sears Brands LLC,OU=eCommerce Development,OU=Multi-Domain \ SSL,CN=base2.pets.com", "subjectAlternativeNames": "base3.pets.com,base4.pets.com", "subjectCountry": "US", "subjectEmail": None, "subjectLocality": "Hoffman Estates", "subjectName": "base2.pets.com", "subjectOrg": "Sears Brands LLC", "subjectOrgUnit": "eCommerce Development,Multi-Domain SSL", "subjectState": "Illinois", "serialNumber": "145397449086924134621453997645674717378", "validNotBefore": "2016-03-22T00:00:00Z", "validNotAfter": "2018-03-22T23:59:59Z", "version": "3", "publicKeyBits": 2048, "pemSha256": "8OLAalY9ZOgYCD6yQJWyGNXZrWl9bugv-S3AGlIQi84=", "pemSha1": "DN3fXmU-IR3C6l1CTISAlgpvGFA=", "publicKeyModulus": "d3fce5f540f9ca51b9f7f32d6695343564f7ceb4f9b911545361603a8899399f4c92566a9be1c757e7b79531ebc7ee4994071c7\ d2f2591576f248ace0067bd3f2e52d88afaac252624cad60a99845c4e5c96b89f3238353c0e2e79595c62436734ae681e118c6ba5a155742503d60ad9ef6\ 2e0a31da970355b33d1a6f833df6a00441487bf729697958969c6c58fdb1ea1b23219ca9ec99110688268134b5b2d18b6ab2d0a4a12dff7e51cee6427345\ c03f18f19aa8f7acc4eb9739f8d72dc0ab5e60cb365cc157b49e6c92700b16bc1bbec6197d4c579ff82581253ebf98d051cc8236b19c7af8591d6dc3f486\ b69b299b7ca7eccd454c465fc5a62dc49b11f", "publicKeySpki": "U_pBSH73cx7BWHRuE3UZvYkONJ8s694ziYTHbLVgtis=" }, "commonName": "base2.pets.com", "properties": [ "EXPIRED" ], "hasLinkedCloudResources": False, "certificateAdvertisementStatus": [ "NO_CERTIFICATE_ADVERTISEMENT" ], "serviceStatus": [ "NO_ACTIVE_SERVICE", "NO_ACTIVE_CLOUD_SERVICE", "NO_ACTIVE_ON_PREM_SERVICE" ], "details": { "recentIps": [ { "ip": "12.4.49.74", "domain": None, "type": "CERTIFICATE_SIGHTING", "assetType": "CERTIFICATE", "assetKey": "Jr8RiLR4OfFslz9VmELI9g==", "provider": { "id": "AWS", "name": "Amazon Web Services" }, "lastObserved": "2020-06-23T03:41:18Z", "tenant": { "id": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5", "name": "VanDelay Industries", "tenantId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5" }, "businessUnits": [ { "id": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5", "name": "VanDelay Industries", "tenantId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5" } ], "commonName": "base2.pets.com" } ], "cloudResources": [] } } MOCK_IPS_RESONSE = { "data": [ { "ip": "12.4.49.74", "domain": "base2.pets.com", "type": "DOMAIN_RESOLUTION", "assetType": "DOMAIN", "assetKey": "base2.pets.com", "provider": { "id": "AWS", "name": "Amazon Web Services" }, "lastObserved": "2020-06-16T05:40:54.572Z", "tenant": { "id": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5", "name": "VanDelay Industries", "tenantId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5" }, "businessUnits": [ { "id": "a1f0f39b-f358-3c8c-947b-926887871b88", "name": "VanDelay Import-Export", "tenantId": "04b5140e-bbe2-3e9c-9318-a39a3b547ed5" } ], "commonName": None } ] } MOCK_INCIDENT = { 'name': "NTP_SERVER on 203.215.173.113:123/UDP", 'occurred': "2020-06-26T00:00:00Z", 'rawJSON': {}, 'type': 'Expanse Appearance', 'CustomFields': { 'expanserawjsonevent': {} }, 'severity': 2 }