Nmap을 Google SecOps와 통합

이 문서에서는 Nmap을 Google Security Operations와 통합하는 방법을 설명합니다.

통합 매개변수

Nmap 통합에는 매개변수가 필요하지 않습니다.

작업

작업에 대한 자세한 내용은 Workdesk의 대기 중인 작업에 응답 및 케이스에서 수동 작업 실행을 참고하세요.

핑

핑 작업을 사용하여 Nmap에 대한 연결을 테스트합니다.

이 작업은 Google SecOps 항목에서 실행되지 않습니다.

작업 입력

없음

작업 출력

핑 작업은 다음 출력을 제공합니다.

작업 출력 유형 가용성
케이스 월 연결 사용 불가
케이스 월 링크 사용 불가
케이스 월 테이블 사용 불가
보강 테이블 사용 불가
JSON 결과 사용 불가
출력 메시지 사용 가능
스크립트 결과 사용 가능
출력 메시지

Ping 작업은 다음 출력 메시지를 반환할 수 있습니다.

출력 메시지 메시지 설명

Successfully connected to the Nmap server with the provided connection parameters!

작업이 완료되었습니다.
Failed to connect to the Nmap server! Error is ERROR_REASON

작업이 실패했습니다.

서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인하세요.

스크립트 결과

다음 표에는 핑 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.

스크립트 결과 이름 값
is_success True 또는 False

항목 스캔

항목 스캔 작업을 사용하여 Nmap을 통해 Google SecOps 항목을 스캔합니다.

이 작업은 다음 Google SecOps 항목에서 실행됩니다.

  • IP Address
  • Hostname
  • Domain

작업 입력

항목 스캔 작업에는 다음 매개변수가 필요합니다.

매개변수 설명
IP Address

(선택사항)

스캔할 IP 주소입니다.

이러한 IP 주소는 항목과 함께 처리됩니다.

Hostname

(선택사항)

스캔할 호스트 이름입니다.

이러한 호스트 이름은 항목과 함께 처리됩니다.

Options

필수 입력란입니다.

Nmap 스캔 매개변수를 지정합니다.

기본값은 -sT -sV -p- -T4 -v입니다.

이러한 옵션은 TCP 연결 스캔 (-sT)을 시작하고, 버전 감지 (-sV)를 사용 설정하고, 65,535개 포트(-p-)를 모두 스캔하고, 적극적인 타이밍 템플릿 (-T4)을 사용하고, 상세 출력 (-v)을 늘립니다.

작업 출력

항목 스캔 작업은 다음 출력을 제공합니다.

작업 출력 유형 가용성
케이스 월 연결 사용 불가
케이스 월 링크 사용 불가
케이스 월 테이블 사용 불가
보강 테이블 사용 가능
JSON 결과 사용 가능
출력 메시지 사용 가능
스크립트 결과 사용 가능
항목 보강 테이블

항목 스캔 작업은 다음 항목 보강을 지원합니다.

보강 필드 소스 (JSON 키) 로직
NMAP_state status_state 사용 가능할 때
NMAP_related_addresses_{addrtype} 각 addrtype에 대해 쉼표로 구분된 {addr} 값 목록을 제공합니다. 사용 가능할 때
NMAP_related_hostnames hostnames.name 사용 가능할 때
NMAP_port_{ports.portid}

{ports.state.state}~{ports.service.product}

이 항목은 감지된 각 포트에 대한 필드를 동적으로 생성하여 상태 (예: 열림, 닫힘)와 해당 포트에서 실행 중인 서비스를 표시합니다.

사용 가능한 경우
NMAP_os_matches {os.osmatches.name}의 CSV 사용 가능한 경우
NMAP_last_boot {uptime.lastboot} 사용 가능할 때
JSON 결과

다음 예시에서는 항목 스캔 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.

[
  {
      "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": {state.state},
                      "service_name": {service.name},
                      "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"
                      }
                  }
              ]
          }
      }
  }
]
출력 메시지

항목 스캔 작업은 다음 출력 메시지를 반환할 수 있습니다.

출력 메시지 메시지 설명

Successfully scanned the following entities using Nmap: entity.identifier

No information was found for the following entities: entity.identifier

No information was found for the provided entities.

작업이 완료되었습니다.
Error executing action "Scan Entities". Reason: ERROR_REASON

작업이 실패했습니다.

서버, 입력 매개변수 또는 사용자 인증 정보에 대한 연결을 확인하세요.

스크립트 결과

다음 표에는 항목 스캔 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.

스크립트 결과 이름 값
is_success True 또는 False

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.