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 | TrueorFalse | 
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 | TrueorFalse | 
Need more help? Get answers from Community members and Google SecOps professionals.

