Integrate Nmap with Google SecOps
This document explains how to integrate Nmap with Google Security Operations.
Integration version: 1.0
Integration parameters
The Nmap integration requires no parameters.
Actions
For more information about actions, see Respond to pending actions from Your Workdesk and Perform a manual action .
Ping
Use the Pingaction to test the connectivity to Nmap.
This action doesn't run on Google SecOps entities.
Action inputs
None.
Action outputs
The Pingaction provides the following outputs:
Action output type | Availability |
---|---|
Case wall attachment | Not available |
Case wall link | Not available |
Case wall table | Not available |
Enrichment table | Not available |
JSON result | Not available |
Output messages | Available |
Script result | Available |
Output messages
The Pingaction can return the following output messages:
Output message | Message description |
---|---|
|
The action succeeded. |
Failed to connect to the Nmap server!
Error is ERROR_REASON
|
The action failed. Check the connection to the server, input parameters, or credentials. |
Script result
The following table lists the value for the script result output when using the Pingaction:
Script result name | Value |
---|---|
is_success
|
True
or False
|
Scan Entities
Use the Scan Entitiesaction to scan Google SecOps entities using Nmap.
This action runs on the following Google SecOps entities:
-
IP Address
-
Hostname
-
Domain
Action inputs
The Scan Entitiesaction requires the following parameters:
Parameter | Description |
---|---|
IP Address
|
Optional. The IP addresses to scan. These IP addresses are processed alongside entities. |
Hostname
|
Optional. The hostnames to scan. These hostnames are processed alongside entities. |
Options
|
Required. Specifies the Nmap scan parameters. The default value is These options initiate a TCP connect scan ( |
Action outputs
The Scan Entitiesaction provides the following outputs:
Action output type | Availability |
---|---|
Case wall attachment | Not available |
Case wall link | Not available |
Case wall table | Not available |
Enrichment table | Available |
JSON result | Available |
Output messages | Available |
Script result | Available |
Entity enrichment table
The Scan Entitiesaction supports the following entity enrichment:
Enrichment field | Source (JSON key) | Logic |
---|---|---|
NMAP_state
|
status_state
|
When available |
NMAP_related_addresses_{addrtype}
|
For each addrtype
, provide a comma-separated list of {addr}
values. |
When available |
NMAP_related_hostnames
|
hostnames.name
|
When available |
NMAP_port_{ports.portid}
|
This entry dynamically creates a field for each detected port, displaying its state (e.g., open, closed) and the service running on it. |
When available |
NMAP_os_matches
|
CSV of {os.osmatches.name}
|
When available |
NMAP_last_boot
|
{uptime.lastboot}
|
When available |
JSON result
The following example shows the JSON result output received when using the Scan Entitiesaction:
[
{
"Entity"
:
"50.116.62.192"
,
"EntityResult"
:
{
"status"
:
{
"state"
:
"up"
,
"reason"
:
"syn-ack"
,
"reason_ttl"
:
"0"
},
"addresses"
:
[
{
"addr"
:
"50.116.62.192"
,
"addrtype"
:
"ipv4"
}
],
"hostnames"
:
[
{
"name"
:
"k3s-agent1.hegedus.wtf"
,
"type"
:
"PTR"
}
],
"ports"
:
{
"extraports"
:
[
{
"state"
:
"closed"
,
"count"
:
"996"
,
"reasons"
:
[
{
"reason"
:
"conn-refused"
,
"count"
:
"996"
}
]
}
],
"ports"
:
[
{
"protocol"
:
"tcp"
,
"portid"
:
"80"
,
"status"
:
{
s
tate
.s
tate
},
"service_name"
:
{
service.
na
me
},
"state"
:
{
"state"
:
"open"
,
"reason"
:
"syn-ack"
,
"reason_ttl"
:
"0"
},
"service"
:
{
"name"
:
"http"
,
"servicefp"
:
"SF-Por\r\\n400\\x20Bad\\x20Request\");"
,
"method"
:
"table"
,
"conf"
:
"3"
}
},
{
"protocol"
:
"tcp"
,
"portid"
:
"443"
,
"state"
:
{
"state"
:
"open"
,
"reason"
:
"syn-ack"
,
"reason_ttl"
:
"0"
},
"service"
:
{
"name"
:
"https"
,
"servicefp"
:
"SF-Port443-TCP:V=6.40%I=7%D=5/23%Time=68305D69%P=x86_64-redhat-linux-gnu%r(HTTPOptions,B0,\"HTTP/1\\.0\\x20404\\x20Not\\x20Found\\r\\nContent-Type:\\x20text/plain;\\x20charset=utf-8\\r\\nX-Content-Type-Options:\\x20nosniff\\r\\nDate:\\x20Fri,\\x2023\\x20May\\x202025\\x2011:35:05\\x20GMT\\r\\nContent-Length:\\x2019\\r\\n\\r\\n404\\x20page\\x20not\\x20found\\n\")%r(SSLSessionReq,7,\"\\x15\\x03\\x01\\0\\x02\\x02F\")%r(SSLv23SessionReq,7,\"\\x15\\x03\\x01\\0\\x02\\x02F\")%r(GenericLines,67,\"HTTP/1\\.1\\x20400\\x20Bad\\x20Request\\r\\nContent-Type:\\x20text/plain;\\x20charset=utf-8\\r\\nConnection:\\x20close\\r\\n\\r\\n400\\x20Bad\\x20Request\")%r(GetRequest,B0,\"HTTP/1\\.0\\x20404\\x20Not\\x20Found\\r\\nContent-Type:\\x20text/plain;\\x20charset=utf-8\\r\\nX-Content-Type-Options:\\x20nosniff\\r\\nDate:\\x20Fri,\\x2023\\x20May\\x202025\\x2011:35:16\\x20GMT\\r\\nContent-Length:\\x2019\\r\\n\\r\\n404\\x20page\\x20not\\x20found\\n\")%r(RTSPRequest,67,\"HTTP/1\\.1\\x20400\\x20Bad\\x20Request\\r\\nContent-Type:\\x20text/plain;\\x20charset=utf-8\\r\\nConnection:\\x20close\\r\\n\\r\\n400\\x20Bad\\x20Request\")%r(RPCCheck,7,\"\\x15\\x03\\x01\\0\\x02\\x02F\")%r(Help,67,\"HTTP/1\\.1\\x20400\\x20Bad\\x20Request\\r\\nContent-Type:\\x20text/plain;\\x20charset=utf-8\\r\\nConnection:\\x20close\\r\\n\\r\\n400\\x20Bad\\x20Request\")%r(Kerberos,67,\"HTTP/1\\.1\\x20400\\x20Bad\\x20Request\\r\\nContent-Type:\\x20text/plain;\\x20charset=utf-8\\r\\nConnection:\\x20close\\r\\n\\r\\n400\\x20Bad\\x20Request\")%r(FourOhFourRequest,B0,\"HTTP/1\\.0\\x20404\\x20Not\\x20Found\\r\\nContent-Type:\\x20text/plain;\\x20charset=utf-8\\r\\nX-Content-Type-Options:\\x20nosniff\\r\\nDate:\\x20Fri,\\x2023\\x20May\\x202025\\x2011:35:32\\x20GMT\\r\\nContent-Length:\\x2019\\r\\n\\r\\n404\\x20page\\x20not\\x20found\\n\")%r(LPDString,67,\"HTTP/1\\.1\\x20400\\x20Bad\\x20Request\\r\\nContent-Type:\\x20text/plain;\\x20charset=utf-8\\r\\nConnection:\\x20close\\r\\n\\r\\n400\\x20Bad\\x20Request\")%r(SIPOptions,67,\"HTTP/1\\.1\\x20400\\x20Bad\\x20Request\\r\\nContent-Type:\\x20text/plain;\\x
20charset=utf-8\\r\\nConnection:\\x20close\\r\\n\\r\\n400\\x20Bad\\x20Request\");"
,
"method"
:
"table"
,
"conf"
:
"3"
}
},
{
"protocol"
:
"tcp"
,
"portid"
:
"2222"
,
"state"
:
{
"state"
:
"open"
,
"reason"
:
"syn-ack"
,
"reason_ttl"
:
"0"
},
"service"
:
{
"name"
:
"ssh"
,
"product"
:
"OpenSSH"
,
"version"
:
"8.4p1 Debian 5"
,
"extrainfo"
:
"protocol 2.0"
,
"ostype"
:
"Linux"
,
"method"
:
"probed"
,
"conf"
:
"10"
,
"cpes"
:
[
"cpe:/a:openbsd:openssh:8.4p1"
,
"cpe:/o:linux:linux_kernel"
]
}
},
{
"protocol"
:
"tcp"
,
"portid"
:
"9100"
,
"state"
:
{
"state"
:
"open"
,
"reason"
:
"syn-ack"
,
"reason_ttl"
:
"0"
},
"service"
:
{
"name"
:
"jetdirect"
,
"method"
:
"table"
,
"conf"
:
"3"
}
}
]
}
}
}
]
Output messages
The Scan Entitiesaction can return the following output messages:
Output message | Message description |
---|---|
|
The action succeeded. |
Error executing action "Scan Entities". Reason: ERROR_REASON
|
The action failed. Check the connection to the server, input parameters, or credentials. |
Script result
The following table lists the value for the script result output when using the Scan Entitiesaction:
Script result name | Value |
---|---|
is_success
|
True
or False
|
Need more help? Get answers from Community members and Google SecOps professionals.