Google SecOps와 VirusTotal 통합

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

통합 버전: 39.0

이 통합은 VirusTotal API v2를 사용합니다.

이 통합은 오픈소스 구성요소를 하나 이상 사용합니다. Cloud Storage 버킷에서 이 통합의 전체 소스 코드의 압축된 사본을 다운로드할 수 있습니다.

시작하기 전에

VirusTotal 통합을 사용하려면 API 키를 구성하세요.

API 키를 구성하려면 다음 단계를 완료하세요.

  1. VirusTotal 포털에 로그인합니다.
  2. 사용자 이름 아래에서 API 키를 클릭합니다.
  3. 생성된 API 키를 복사하여 통합 매개변수에서 사용합니다.
  4. 저장을 클릭합니다.

통합 매개변수

VirusTotal 통합에는 다음 매개변수가 필요합니다.

매개변수 설명
Api Key

필수 항목입니다.

VirusTotal에 액세스하는 데 사용되는 API 키입니다.

Verify SSL

(선택사항)

선택하면 VirusTotal에 연결할 때 통합에서 SSL 인증서를 검증합니다.

기본적으로 선택되지 않습니다.

Google SecOps에서 통합을 구성하는 방법에 대한 안내는 통합 구성을 참고하세요.

필요한 경우 이후 단계에서 변경할 수 있습니다. 통합 인스턴스를 구성한 후 플레이북에서 사용할 수 있습니다. 여러 인스턴스를 구성하고 지원하는 방법에 관한 자세한 내용은 여러 인스턴스 지원을 참고하세요.

작업

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

도메인 보고서 가져오기

도메인 보고서 가져오기 작업을 사용하여 제공된 항목에 대한 도메인 보고서를 VirusTotal에서 가져오고 Google SecOps 플랫폼 내에서 이러한 항목을 보강합니다.

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

  • User
  • Hostname

작업 입력

없음

작업 출력

도메인 보고서 가져오기 작업은 다음 출력을 제공합니다.

작업 출력 유형 가용성
케이스 월 연결 사용할 수 없음
케이스 월 링크 사용할 수 없음
케이스 월 테이블 사용할 수 없음
항목 보강 테이블 사용 가능
JSON 결과 사용 가능
스크립트 결과 사용 가능
항목 보강 테이블

도메인 보고서 가져오기 작업을 통해 다음 필드를 보강할 수 있습니다.

보강 필드 이름 적용 가능한 논리
Forcepoint ThreatSeeker category JSON 결과에 존재하는 경우에 반환합니다.
BitDefender domain info JSON 결과에 존재하는 경우에 반환합니다.
Categories JSON 결과에 존재하는 경우에 반환합니다.
BitDefender Category JSON 결과에 존재하는 경우에 반환합니다.
Alexa Category JSON 결과에 존재하는 경우에 반환합니다.
Alexa domain info JSON 결과에 존재하는 경우에 반환합니다.
Websense ThreatSeeker category JSON 결과에 존재하는 경우에 반환합니다.
TrendMicro category JSON 결과에 존재하는 경우에 반환합니다.
Opera domain info JSON 결과에 존재하는 경우에 반환합니다.
Webutation domain info JSON 결과에 존재하는 경우에 반환합니다.
verbose_msg JSON 결과에 존재하는 경우에 반환합니다.
whois JSON 결과에 존재하는 경우에 반환합니다.
JSON 결과

다음 예시에서는 도메인 보고서 가져오기 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.

[
    {
        "EntityResult": {
            "detected_downloaded_samples": [],
            "undetected_downloaded_samples": [{
                "date": "2018-08-08 22:48:28",
                "positives": 0,
                "sha256": "ef1955ae757c8b966c83248350331bd3a30f658ced11f387f8ebf05ab3368629",
                "total": 59
            }],
            "resolutions": [{
                "last_resolved": "2019-01-13 03:31:09",
                "ip_address": "192.0.2.1"
            }],
            "Opera domain info": "The URL domain/host was seen to host badware at some point in time",
            "domain_siblings": [],
            "BitDefender domain info": "This URL domain/host was seen to host badware at some point in time",
            "whois": "Domain Name: EXAMPLE.CO.IN, nUpdated Date: 2018-05-22T09:30:37Z, nCreation Date: 2003-06-23T14:02:33Z, nRegistry Expiry Date: 2019-06-23T14:02:33Z, nDomain Status: clientDeleteProhibited, nDomain Status: clientTransferProhibited, nDomain Status: clientUpdateProhibited, nRegistrant Country: US, nName Server: NS1.EXAMPLE.COM, nName Server: NS2.EXAMPLE.COM, nName Server: NS3.EXAMPLE.COM, nName Server: NS4.EXAMPLE.COM, nDNSSEC: unsigned",
            "Alexa domain info": "example.co.in is one of the top 100 sites in the world and is in the Search_Engines category",
            "verbose_msg": "Domain found in dataset",
            "BitDefender category": "searchengines",
            "undetected_referrer_samples": [{
                "date": "2019-02-05 13:20:39",
                "positives": 0,
                "sha256": "3baf9f2a2d2b152193d2af602378b71e40d381e835b0aa3111851b2f29e64f38",
                "total": 71
            }],
            "whois_timestamp": 1548379042,
            "WOT domain info": {
                "Vendor reliability": "Excellent",
                "Child safety": "Excellent",
                "Trustworthiness": "Excellent",
                "Privacy": "Excellent"
            },
            "detected_referrer_samples": [{
                "date": "2019-02-05 01:11:35",
                "positives": 1,
                "sha256": "097ea19b440441248b157698e2b23555cdf6117491b5f49f7ec8e492550cb02c",
                "total": 70
            }],
            "Forcepoint ThreatSeeker category": "search engines and portals",
            "Alexa category": "search_engines",
            "detected_communicating_samples": [{
                "date": "2019-01-28 23:58:13",
                "positives": 30,
                "sha256": "e65faa1283f8941d98dc23ff6822be228a24cb4489a5e5b01aeee749bf851658",
                "total": 70
            }],
            "TrendMicro category": "search engines portals",
            "categories": [
                "searchengines", "search engines and portals"
            ],
            "undetected_urls": [[
                "http://example.co.in/example", "daed97b2c77f0f72c9e4ee45506e3e1bc4e34d7b8846246877a02779bb85dd5b", 0, 70, "2019-02-04 14:58:23"
            ]],
            "response_code": 1,
            "Webutation domain info": {
                "Safety score": 100,
                "Adult content": "no",
                "Verdict": "safe"
            },
            "subdomains": [
                "www.example.co.in"
            ],
            "Websense ThreatSeeker category": "search engines and portals",
            "detected_urls": [{
                "url": "http://example.co.in/urlURL",
                "positives": 2,
                "total": 66,
                "scan_date": "2018-01-13 00:38:35"
            }],
            "Alexa rank": 100,
            "undetected_communicating_samples": [{
                "date": "2018-11-17 03:19:28",
                "positives": 0,
                "sha256": "e2a6ab7d594490c62bd3bb508dc38d7191ad48977da4d8dcce08dcb8af0070e9",
                "total": 68
            }],
            "pcaps": [
           "97e4a17068ce3ed01ed1c25c3d263fc0145e5ecc53b7db6f2ba84496b53d4a65"
            ]},
        "Entity": "example.co.in"
    }
]
스크립트 결과

다음 표에는 도메인 보고서 가져오기 작업을 사용할 때 스크립트 결과 출력 값이 나와 있습니다.

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

스캔 해시

해시 스캔 작업을 사용하여 VirusTotal로 파일 해시를 스캔하고, 위험 점수가 지정된 기준점과 일치하는 경우 항목을 의심스러운 것으로 표시하고 통계를 표시합니다.

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

작업 입력

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

매개변수 설명
Threshold

필수 항목입니다.

감지를 의심스러운 것으로 표시하는 기준입니다.

악성 엔진 감지가 설정된 기준점에 도달하거나 이를 초과하면 작업에서 엔티티를 의심스러운 것으로 표시합니다.

Rescan after days

(선택사항)

최신 스캔 날짜 이후 항목을 다시 스캔할 일수입니다.

작업 출력

해시 스캔 작업은 다음 출력을 제공합니다.

작업 출력 유형 가용성
케이스 월 연결 사용할 수 없음
케이스 월 링크 사용할 수 없음
케이스 월 테이블 사용할 수 없음
항목 보강 테이블 사용 가능
통계 사용 가능
JSON 결과 사용 가능
스크립트 결과 사용 가능
항목 보강 테이블

해시 스캔 작업을 통해 다음 필드를 보강할 수 있습니다.

보강 필드 이름 적용 가능한 논리
permalink JSON 결과에 존재하는 경우에 반환합니다.
sha1 JSON 결과에 존재하는 경우에 반환합니다.
resource JSON 결과에 존재하는 경우에 반환합니다.
Scan date JSON 결과에 존재하는 경우에 반환합니다.
Scan ID JSON 결과에 존재하는 경우에 반환합니다.
verbose_msg JSON 결과에 존재하는 경우에 반환합니다.
total JSON 결과에 존재하는 경우에 반환합니다.
positives JSON 결과에 존재하는 경우에 반환합니다.
sha256 JSON 결과에 존재하는 경우에 반환합니다.
md5 JSON 결과에 존재하는 경우에 반환합니다.
Detecting Engines JSON 결과에 존재하는 경우에 반환합니다.
통계

해시 스캔 작업은 다음 통계를 반환할 수 있습니다.

심각도 설명
Warn

이 작업은 보강된 해시의 악성 상태를 알리는 경고 통계를 만듭니다.

이 작업은 감지된 엔진 수가 스캔 전에 설정한 최소 의심 기준점과 같거나 이를 초과하는 경우에만 통계를 생성합니다.

JSON 결과

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

[
    {
        "EntityResult": {
            "permalink": "https://www.virustotal.com/file/HASH/analysis/ANALYSIS_ID/",
            "sha1": "3395856ce81f2b7382dee72602f798b642f14140",
            "resource": "HASH",
            "response_code": 1,
            "scan_date": "2019-02-05 15:41:52",
            "scan_id": "HASH-ANALYSIS_ID",
            "verbose_msg": "Scan finished, information embedded",
            "total": 60,
            "positives": 54,
            "sha256": "HASH",
            "md5": "44d88612fea8a8f36de82e1278abb02f",
            "scans": {
                "Bkav": {
                    "detected": true,
                    "version": "192.0.2.1",
                    "result": "Trojan",
                    "update": "20190201"
                },
                "MicroWorld-eScan": {
                    "detected": true,
                    "version": "14.0.297.0",
                    "result": "Test-File",
                    "update": "20190205"
                }}},
        "Entity": "HASH"
    }
]
스크립트 결과

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

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

IP 검색

IP 스캔 작업을 사용하여 VirusTotal에서 최근에 특정 IP에 대해 확인한 정보를 수집합니다.

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

작업 입력

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

매개변수 설명
Threshold

(선택사항)

IP 주소를 의심스러운 것으로 표시하는 기준입니다.

악성 엔진 감지가 설정된 기준에 도달하거나 이를 초과하면 작업에서 IP 주소를 의심스러운 것으로 표시합니다.

기본값은 25입니다.

작업 출력

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

작업 출력 유형 가용성
케이스 월 연결 사용할 수 없음
케이스 월 링크 사용할 수 없음
케이스 월 테이블 사용할 수 없음
항목 보강 테이블 사용 가능
통계 사용 가능
JSON 결과 사용 가능
스크립트 결과 사용 가능
항목 보강 테이블

IP 스캔 작업을 통해 다음 필드를 보강할 수 있습니다.

보강 필드 이름 적용 가능한 논리
Country JSON 결과에 존재하는 경우에 반환합니다.
Related Domains JSON 결과에 존재하는 경우에 반환합니다.
Last Scan Date JSON 결과에 존재하는 경우에 반환합니다.
verbose_msg JSON 결과에 존재하는 경우에 반환합니다.
Resolutions JSON 결과에 존재하는 경우에 반환합니다.
통계

IP 스캔 작업은 다음 통계를 반환할 수 있습니다.

심각도 설명
Warn

이 작업은 보강된 IP 주소의 악성 상태를 알리는 경고 통계를 생성합니다.

이 작업은 감지된 엔진 수가 스캔 전에 설정한 최소 의심 기준점 이상인 경우에만 통계를 생성합니다.

유용한 정보 이름 본문
Entity Insight
  • 국가: country
  • 악성 리퍼러 샘플: len(detected_referrer_samples)
  • 악성 다운로드 샘플: len(detected_downloaded_samples)
  • 악성 커뮤니케이션 샘플: len(detected_communicating_samples)
  • 악성 URL: len(detected_urls)
JSON 결과

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

[
    {
        "EntityResult": {
            "asn": 4436,
            "undetected_urls": [[
                "http://example.com", "2ed06796f95e7c1xxxxxbd68d81754acf535c999e901bfe2cf9c45612396f66", 0, 66, "2022-11-23 06:51:49"
            ]],
            "undetected_downloaded_samples": [{
                "date": "2018-07-09 07:53:30",
                "positives": 0,
                "sha256": "6a0bf66ddc73d7e64eb2ff0dd3512c5378c0c63c2ad4e13c0e1429fe",
                "total": 60
            }],
            "country": "country",
            "response_code": 1,
            "as_owner": "Example, Inc.",
            "verbose_msg": "IP address in dataset",
            "detected_downloaded_samples": [{
                "date": "2023-05-20 08:38:00",
                "positives": 6,
                "sha256": "9cf5c07c99c3342d83b241c25850da0bf231ee150cb962cab1e8399cb",
                "total": 57
            }],
            "resolutions": [{
                "last_resolved": "2023-05-13 00:00:00",
                "hostname": "40515350444dff68-2f7735d5ad283fa41a203a082d9a8f25.example.com"
            }],
            "detected_urls": [{
                "url": "http://example.com",
                "positives": 2,
                "total": 67,
                "scan_date": "2023-05-20 07:16:45"
            }]},
            "Entity": "192.0.2.1"
        }
    ]
스크립트 결과

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

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

URL 스캔

URL 스캔 작업을 사용하여 VirusTotal로 URL을 스캔합니다.

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

작업 입력

URL 검사 작업에는 다음 매개변수가 필요합니다.

매개변수 설명
Threshold

필수 항목입니다.

감지를 의심스러운 것으로 표시하는 기준입니다.

악성 엔진 감지가 설정된 기준점에 도달하거나 이를 초과하면 작업에서 엔티티를 의심스러운 것으로 표시합니다.

Rescan after days

(선택사항)

최신 스캔 날짜 이후 항목을 다시 스캔할 일수입니다.

작업 출력

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

작업 출력 유형 가용성
케이스 월 연결 사용할 수 없음
케이스 월 링크 사용할 수 없음
케이스 월 테이블 사용할 수 없음
항목 보강 테이블 사용 가능
통계 사용 가능
JSON 결과 사용 가능
스크립트 결과 사용 가능
항목 보강 테이블

URL 스캔 작업을 통해 다음 필드를 보강할 수 있습니다.

보강 필드 이름 적용 가능한 논리
Scan date JSON 결과에 존재하는 경우에 반환합니다.
Scan ID JSON 결과에 존재하는 경우에 반환합니다.
risk_score JSON 결과에 존재하는 경우에 반환합니다.
Total JSON 결과에 존재하는 경우에 반환합니다.
Online Link JSON 결과에 존재하는 경우에 반환합니다.
Scanned Url JSON 결과에 존재하는 경우에 반환합니다.
resource JSON 결과에 존재하는 경우에 반환합니다.
Detecting Engines JSON 결과에 존재하는 경우에 반환합니다.
Risk Score JSON 결과에 존재하는 경우에 반환합니다.
Last Scan Date JSON 결과에 존재하는 경우에 반환합니다.
verbose_msg JSON 결과에 존재하는 경우에 반환합니다.
File Scan ID JSON 결과에 존재하는 경우에 반환합니다.
통계

URL 스캔 작업을 통해 다음 통계를 반환할 수 있습니다.

심각도 설명
Warn

이 작업은 보강된 URL의 악성 상태를 알리는 경고 통계를 만듭니다.

이 작업은 감지된 엔진 수가 스캔 전에 설정한 최소 의심 기준점 이상인 경우에만 통계를 생성합니다.

JSON 결과

다음 예시는 URL 검사 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.

[
    {
        "EntityResult": {
            "permalink": "https://www.virustotal.com/url/URL_HASH/analysis/ANALYSIS_ID/",
            "resource": "http://example.php",
            "url": "http://example.php",
            "response_code": 1,
            "scan_date": "2019-02-04 05:28:54",
            "scan_id": "URL_HASH-ANALYSIS_ID",
            "verbose_msg": "Scan finished, scan information embedded in this object",
            "filescan_id": null,
            "positives": 5,
            "total": 67,
            "scans": {
                "CLEAN MX": {
                    "detected": false,
                    "result": "clean site"
                },
                "DNS8": {
                    "detected": false,
                    "result": "clean site"
                }}},
        "Entity": "http://example.php"
    }
]
스크립트 결과

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

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

파일 업로드 및 스캔

파일 업로드 및 검사 작업을 사용하여 VirusTotal로 파일을 업로드하고 검사합니다.

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

작업 입력

파일 업로드 및 스캔 작업에는 다음 매개변수가 필요합니다.

매개변수 설명
Threshold

필수 항목입니다.

파일을 위험한 것으로 간주하고 인사이트를 트리거하기 위한 VirusTotal 스캐너의 최소 양성 감지 수입니다.

기본값은 3입니다.

File Paths

필수 항목입니다.

업로드하고 검사할 경로의 쉼표로 구분된 목록입니다.

Linux Server Address

(선택사항)

파일이 있는 원격 Linux 서버의 주소입니다(예: 192.0.2.1).

Linux User

(선택사항)

원격 Linux 서버에서 인증할 사용자 이름입니다.

Linux Password

(선택사항)

원격 Linux 서버에서 인증하는 데 사용할 비밀번호입니다.

작업 출력

파일 업로드 및 스캔 작업은 다음 출력을 제공합니다.

작업 출력 유형 가용성
케이스 월 연결 사용할 수 없음
케이스 월 링크 사용할 수 없음
케이스 월 테이블 사용할 수 없음
항목 보강 테이블 사용 가능
통계 사용 가능
JSON 결과 사용 가능
스크립트 결과 사용 가능
항목 보강 테이블

파일 업로드 및 스캔 작업을 통해 다음 필드를 보강할 수 있습니다.

보강 필드 이름 적용 가능한 논리
resource JSON 결과에 존재하는 경우에 반환합니다.
Scan date JSON 결과에 존재하는 경우에 반환합니다.
Scan ID JSON 결과에 존재하는 경우에 반환합니다.
permalink JSON 결과에 존재하는 경우에 반환합니다.
Total JSON 결과에 존재하는 경우에 반환합니다.
Md5 JSON 결과에 존재하는 경우에 반환합니다.
Sha1 JSON 결과에 존재하는 경우에 반환합니다.
Sha256 JSON 결과에 존재하는 경우에 반환합니다.
positives JSON 결과에 존재하는 경우에 반환합니다.
total JSON 결과에 존재하는 경우에 반환합니다.
Detecting Engines JSON 결과에 존재하는 경우에 반환합니다.
verbose_msg JSON 결과에 존재하는 경우에 반환합니다.
통계

파일 업로드 및 검사 작업을 통해 다음 통계를 확인할 수 있습니다.

심각도 설명
Warn

이 작업은 보강된 파일의 악성 상태를 알리는 경고 통계를 생성합니다.

이 작업은 감지된 엔진 수가 스캔 전에 설정한 최소 의심 기준점 이상인 경우에만 통계를 생성합니다.

JSON 결과

다음 예시는 파일 업로드 및 스캔 작업을 사용할 때 수신되는 JSON 결과 출력을 보여줍니다.

{
    "file_path": {
        "scan_id": "FILE_ID-ANALYSIS_ID",
        "sha1": "ec44b2af88e602e3981db0b218ecb5d59dc0dfec",
        "resource": "FILE_ID-ANALYSIS_ID",
        "response_code": 1,
        "scan_date": "2019-02-05 15:55:50",
        "permalink": "https://www.virustotal.com/file/FILE_ID/analysis/ANALYSIS_ID/",
        "verbose_msg": "Scan finished, information embedded",
        "total": 58,
        "positives": 0,
        "sha256": "FILE_ID",
        "md5": "848d57fbd8e29afa08bd3f58dd30f902",
        "scans": {
            "Bkav": {
                "detected": false,
                "version": "192.0.2.1",
                "result": null,
                "update": "20190201"
            },
            "MicroWorld-eScan": {
                "detected": false,
                "version": "14.0.297.0",
                "result": null,
                "update": "20190205"
            }
        }
    }
}
스크립트 결과

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

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

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