שילוב של APIVoid עם Google SecOps
במאמר הזה מוסבר איך לשלב את APIVoid עם Google Security Operations (Google SecOps).
לפני שמתחילים
לפני שמגדירים את השילוב של APIVoid ב-Google SecOps לגרסה 2, ודאו שיש לכם את הפרטים הבאים:
חשבון APIVoid v2: חשבון פעיל עם גישה לשירותי API v2.
מפתח API של APIVoid v2: מפתח API חדש שנוצר במיוחד לממשקי API בגרסה 2 ממרכז הבקרה של המשתמש ב-APIVoid.
נקודות קצה מעודכנות ל-API: היכרות עם כתובות ה-URL המעודכנות של נקודות הקצה ל-API בגרסה 2, לשירותי APIVoid הספציפיים שבהם אתם מתכננים להשתמש (למשל, IP Reputation API, Domain Reputation API).
יצירת מפתח API של APIVoid v2
כדי ליצור מפתח API של APIVoid v2:
נכנסים למרכז הבקרה למשתמשים ב-APIVoid.
עוברים לקטע מפתחות API. (המיקום עשוי להשתנות בהתאם לעדכונים במרכז הבקרה).
יוצרים מפתח API חדש. מעתיקים מיד את המפתח ושומרים אותו במקום מאובטח. יכול להיות שהיא תוצג רק פעם אחת.
רשת
| תפקיד | יציאת ברירת המחדל | כיוון | פרוטוקול |
|---|---|---|---|
| API | ערכים מרובים | להעברת נתונים | apikey |
פרמטרים של שילוב
כדי להגדיר את השילוב, משתמשים בפרמטרים הבאים:
| שם הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| שם המכונה | String | לא רלוונטי | לא | שם המכונה שרוצים להגדיר לה את השילוב. |
| תיאור | String | לא רלוונטי | לא | תיאור המכונה. |
| הרמה הבסיסית (root) של ה-API | String | https://endpoint.apivoid.com | כן | הכתובת של המכונה של APIVoid. |
| מפתח API | סיסמה | לא רלוונטי | כן | מפתח API שנוצר במסוף של APIVoid. |
| אימות SSL | תיבת סימון | התיבה לא מסומנת | לא | צריך לסמן את התיבה הזו אם חיבור ה-APIVoid דורש אימות SSL. |
| הפעלה מרחוק | תיבת סימון | התיבה לא מסומנת | לא | מסמנים את השדה כדי להפעיל את השילוב שהוגדר מרחוק. אחרי שמסמנים את התיבה, מופיעה האפשרות לבחור את המשתמש המרוחק (הנציג). |
איך מגדירים שילובים ב-Google SecOps
אם צריך, אפשר לבצע שינויים בשלב מאוחר יותר. אחרי שמגדירים מופע של אינטגרציה, אפשר להשתמש בו בפלייבוקים. במאמר תמיכה במספר מופעים מוסבר איך להגדיר מספר מופעים ולתמוך בהם.
פעולות
מידע נוסף על פעולות זמין במאמרים מענה לפעולות בהמתנה משולחן העבודה והפעלה ידנית של פעולה בבקשת התמיכה.
קבלת מוניטין של דומיין
בדיקות מוניטין של דומיין בודקות אם דומיין מסוים נכלל ברשימת חסימה פופולרית ומהימנה של דומיינים, כמו URLVir, ThreatLog, OpenPhish, Spam404, PhishTank, ZeuS Tracker ועוד. שירותי רשימת החסימה של כמה דומיינים מזהים אתרים שעלולים להיות זדוניים ושמקורם בתרמית, שמעורבים בהפצת תוכנות זדוניות, באירועי פישינג ובחנויות וירטואליות מזויפות.
פרמטרים
| שם הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| סף | String | 0 | כן | סף הסיכון של הדומיין. הסף חייב להיות ערך מספרי. דוגמה: 3 |
| יצירת תובנות | תיבת סימון | סימן אישור | כן | מציינים אם הפעולה צריכה ליצור תובנות או לא. |
תרחישים לדוגמה
אחד מהתרחישים לדוגמה של Domain Reputation API הוא לבדוק אם האתרים של הלקוח מוחרגים, לבדוק כתובות URL שנשלחו על ידי משתמשים באפליקציה או לזהות אתרים שעלולים להיות זדוניים ולא בטוחים.
הפעלה ב-
הפעולה הזו פועלת על הישויות הבאות:
- שם המארח
- כתובת URL
תוצאות הפעולה
העשרת ישויות
סימון ישות כחשודה אם מספר המנועים השליליים שווה לסף שצוין או גבוה ממנו.
| שם שדה ההעשרה | לוגיקה – מתי להחיל |
|---|---|
| alexa_top_100k | מוחזר אם הוא קיים בתוצאת ה-JSON |
| domain_length | מוחזר אם הוא קיים בתוצאת ה-JSON |
| alexa_top_10k | מוחזר אם הוא קיים בתוצאת ה-JSON |
| רשימות חסימה | מוחזר אם הוא קיים בתוצאת ה-JSON |
| שרת | מוחזר אם הוא קיים בתוצאת ה-JSON |
| מארח | מוחזר אם הוא קיים בתוצאת ה-JSON |
| most_abused_tld | מוחזר אם הוא קיים בתוצאת ה-JSON |
| alexa_top_250k | מוחזר אם הוא קיים בתוצאת ה-JSON |
תובנות
| חוּמרה | תיאור |
|---|---|
| אזהרה | נוצרת תובנת אזהרה כדי ליידע על הסטטוס הזדוני של הישות המועשרת. ההתראה נוצרת כשמספר המנועים שזוהו שווה לסף המינימלי של חשד שנקבע לפני הסריקה, או חורג ממנו. |
תוצאת הסקריפט
| שם תוצאת הסקריפט | אפשרויות לערכים | דוגמה |
|---|---|---|
| הפעולה בוצעה | נכון/לא נכון | success:False |
תוצאת JSON
[
{
"EntityResult": {
"alexa_top_100k": false,
"domain_length": 17,
"alexa_top_10k": false,
"blacklists": {
"scantime": "0.07",
"detection_rate": "0%",
"detections": 0,
"engines_count": 29,
"engines": [{
"engine": "ThreatLog",
"detected": false,
"confidence": "high",
"reference": "http://www.threatlog.com/"
}, {
"engine": "Threat Sourcing",
"detected": false,
"confidence": "high",
"reference": "https://www.threatsourcing.com/"
}, {
"engine": "URLVir",
"detected": false,
"confidence": "high",
"reference": "http://www.urlvir.com/"
}]},
"server": {
"region_name": null,
"reverse_dns": " ",
"ip": " ",
"isp": null,
"continent_code": null,
"latitude": null,
"city_name": null,
"longitude": null,
"country_code": null,
"country_name": null,
"continent_name": null
},
"host": "example.com",
"most_abused_tld": false,
"alexa_top_250k": false
},
"Entity": "example.com"
}, {
"EntityResult": {
"alexa_top_100k": false,
"domain_length": 9,
"alexa_top_10k": false,
"blacklists": {
"scantime": "0.03",
"detection_rate": "0%",
"detections": 0,
"engines_count": 29,
"engines": [{
"engine": "ThreatLog",
"detected": false,
"confidence": "high",
"reference": "http://www.threatlog.com/"
}, {
"engine": "Threat Sourcing",
"detected": false,
"confidence": "high",
"reference": "https://www.threatsourcing.com/"
}, {
"engine": "URLVir",
"detected": false,
"confidence": "high",
"reference": "http://www.urlvir.com/"
}]},
"server": {
"region_name": null,
"reverse_dns": " ",
"ip": " ",
"isp": null,
"continent_code": null,
"latitude": null,
"city_name": null,
"longitude": null,
"country_code": null,
"country_name": null,
"continent_name": null
},
"host": "192.0.2.1",
"most_abused_tld": false,
"alexa_top_250k": false
},
"Entity": "192.0.2.1"
}
]
קבלת המוניטין של כתובת ה-IP
IP Reputation API מזהה כתובות IP שעלולות להיות זדוניות, שבדרך כלל משמשות לספאם, להתקפות על אתרים או לפעילות שמקורה בתרמית.
פרמטרים
| פרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| סף | String | לא רלוונטי | כן | סף הסיכון של כתובת ה-IP. הסף חייב להיות ערך מספרי. דוגמה: 3. |
| יצירת תובנות | תיבת סימון | סימן אישור | כן | מציינים אם הפעולה צריכה ליצור תובנות או לא. |
הפעלה ב-
הפעולה הזו פועלת על הישות "כתובת IP".
תוצאות הפעולה
העשרת ישויות
סימון ישות כחשודה אם מספר המנועים השליליים שווה לסף שצוין או גבוה ממנו.
| שם שדה ההעשרה | לוגיקה – מתי להחיל |
|---|---|
| מידע | מוחזר אם הוא קיים בתוצאת ה-JSON |
| רשימות חסימה | מוחזר אם הוא קיים בתוצאת ה-JSON |
| אנונימיות | מוחזר אם הוא קיים בתוצאת ה-JSON |
| ip | מוחזר אם הוא קיים בתוצאת ה-JSON |
תובנות
| חוּמרה | תיאור |
|---|---|
| אזהרה | נוצרת תובנת אזהרה שמודיעה על הסטטוס הזדוני של ה-hash המועשר. התובנה נוצרת כשמספר המנועים שזוהו שווה לסף המינימלי של החשד שנקבע לפני הסריקה, או חורג ממנו. |
תוצאת הסקריפט
| שם תוצאת הסקריפט | אפשרויות לערכים | דוגמה |
|---|---|---|
| הפעולה בוצעה | נכון/לא נכון | success:False |
תוצאת JSON
[
{
"EntityResult": {
"information": {
"is_proxy": false,
"is_vpn": false,
"region_name": "Zhejiang",
"is_webproxy": false,
"latitude": 28.680280685424805,
"isp": "ChinaNet Zhejiang Province Network",
"continent_code": "AS",
"is_tor": false,
"reverse_dns": " ",
"detections": 18,
"engines_count": 76,
"longitude": 121.44277954101562,
"city_name": "Jiaojiang",
"country_name": "China",
"continent_name": "Asia",
"detection_rate": "24%",
"country_code": "CN",
"is_hosting": false
},
"blacklists": {
"scantime": "0.57",
"detection_rate":
"24%",
"detections": 18,
"engines_count": 76,
"engines": [{
"engine": "PlonkatronixBL",
"detected": false,
"reference": "http://bl.plonkatronix.com/"
}, {
"engine": "Engine",
"detected": true,
"reference": "https://home.nuug.no/~engine/"
}, {"engine": "Malc0de",
"detected": false,
"reference": "http://malc0de.com/database/index.php"
}]},
"anonymity": {
"is_tor": false,
"is_proxy": false,
"is_vpn": false,
"is_webproxy": false,
"is_hosting": false
},
"ip": "192.0.2.1"
},
"Entity": "192.0.2.1"
}
]
קבלת מוניטין של כתובת URL
קבלת מוניטין הבטיחות וציון הסיכון של כתובת URL.
פרמטרים
| שם הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| סף | מספר שלם | לא רלוונטי | כן | סף הסיכון של כתובת ה-URL. הסף חייב להיות ערך מספרי. דוגמה: 3 |
תרחישים לדוגמה
מנתח נתונים יכול לאחזר את המוניטין של כתובת ה-URL, בדומה לאחזור המוניטין של דומיין או של כתובת IP.
הפעלה ב-
הפעולה הזו פועלת על ישות כתובת ה-URL.
תוצאות הפעולה
העשרת ישויות
סימון ישות כחשודה אם מספר המנועים השליליים שווה לסף שצוין או גבוה ממנו. if data.get("report", {}).get("risk_score", {}).get("result") > threshold
| שם שדה ההעשרה | לוגיקה – מתי להחיל |
|---|---|
| domain_blacklist | מוחזר אם הוא קיים בתוצאת ה-JSON |
| html_forms | מוחזר אם הוא קיים בתוצאת ה-JSON |
| server_details | מוחזר אם הוא קיים בתוצאת ה-JSON |
| response_headers | מוחזר אם הוא קיים בתוצאת ה-JSON |
| הפניה לכתובת אחרת | מוחזר אם הוא קיים בתוצאת ה-JSON |
| file_type | מוחזר אם הוא קיים בתוצאת ה-JSON |
| risk_score | מוחזר אם הוא קיים בתוצאת ה-JSON |
| security_checks | מוחזר אם הוא קיים בתוצאת ה-JSON |
| geo_location | מוחזר אם הוא קיים בתוצאת ה-JSON |
| url_parts | מוחזר אם הוא קיים בתוצאת ה-JSON |
| site_category | מוחזר אם הוא קיים בתוצאת ה-JSON |
| web_page | מוחזר אם הוא קיים בתוצאת ה-JSON |
| dns_records | מוחזר אם הוא קיים בתוצאת ה-JSON |
תוצאת הסקריפט
| שם תוצאת הסקריפט | אפשרויות לערכים | דוגמה |
|---|---|---|
| is_success | נכון/לא נכון | is_success:False |
תוצאת JSON
[
{
"EntityResult": {
"domain_blacklist": {
"detections": 0,
"engines": [{
"detected": false,
"name": "SpamhausDBL", "reference": "https://www.spamhaus.org/lookup/"
}, {
"detected": false,
"name": "ThreatLog",
"reference": "http://www.threatlog.com/"
}, {
"detected": false,
"name": "OpenPhish",
"reference": "http://www.openphish.com/"
}, {
"detected": false,
"name": "PhishTank",
"reference": "http://www.phishtank.com/"
}, {
"detected": false,
"name": "Phishing.Database",
"reference": "https://github.com/mitchellkrogza/Phishing.Database"
}, {
"detected": false,
"name": "PhishStats",
"reference": "https://phishstats.info/"
}, {
"detected": false,
"name": "URLVir",
"reference": "http://www.urlvir.com/"
}, {
"detected": false,
"name": "URLhaus",
"reference": "https://urlhaus.abuse.ch/"
}, {
"detected": false,
"name": "RPiList Not Serious",
"reference": "https://github.com/RPiList/specials"
}, {
"detected": false,
"name": "precisionsec",
"reference": "https://precisionsec.com/"
}, {
"detected": false,
"name": "AntiSocial Blacklist",
"reference": "https://theantisocialengineer.com/"
}, {
"detected": false,
"name": "PhishFeed",
"reference": "https://phishfeed.com/"
}, {
"detected": false,
"name": "Spam404",
"reference": "https://www.spam404.com/"
}]},
"html_forms": {
"number_of_total_input_fields": 0,
"email_field_present": false,
"number_of_total_forms": 0,
"password_field_present": false,
"two_text_inputs_in_a_form": false,
"credit_card_field_present": false
},
"server_details": {
"continent_name": "Asia",
"hostname": "example.com",
"region_name": "Seoul-teukbyeolsi",
"ip": "192.0.2.141",
"isp": "Example Corporation",
"continent_code": "AS",
"country_name": "Korea (Republic of)",
"city_name": "Seoul",
"longitude": 126.97782897949219,
"country_code": "KR",
"latitude": 37.568260192871094
},
"response_headers": {
"status": "HTTP/1.1 404 Not Found",
"content-length": "177",
"code": 404,
"server": "nginx/1.4.6 (Ubuntu)",
"connection": "keep-alive",
"date": "Wed, 15 Jul 2020 08:21:54 GMT",
"content-type": "text/html"
},
"redirection": {
"url": null,
"found": false,
"external": false
},
"file_type": {
"headers": "HTML",
"extension": "HTML",
"signature": " "
},
"risk_score": {
"result": 10
},
"security_checks": {
"is_suspended_page": false,
"is_defaced_heuristic": false,
"is_windows_exe_file": false,
"is_credit_card_field": false,
"is_windows_exe_file_on_free_hosting": false,
"is_masked_linux_elf_file": false,
"is_exe_on_directory_listing": false,
"is_php_on_directory_listing": false,
"is_masked_windows_exe_file": false,
"is_sinkholed_domain": false,
"is_robots_noindex": false,
"is_windows_exe_file_on_free_dynamic_dns": false,
"is_doc_on_directory_listing": false,
"is_non_standard_port": false,
"is_linux_elf_file_on_free_dynamic_dns": false,
"is_suspicious_domain": false, "is_suspicious_url_pattern": false,
"is_china_country": false,
"is_risky_geo_location": false,
"is_pdf_on_directory_listing": false,
"is_valid_https": false,
"is_external_redirect": false, "is_windows_exe_file_on_ipv4": false,
"is_phishing_heuristic": false,
"is_linux_elf_file_on_ipv4": false,
"is_email_address_on_url_query": false,
"is_uncommon_clickable_url": false,
"is_most_abused_tld": false,
"is_domain_blacklisted": false,
"is_host_an_ipv4": false,
"is_linux_elf_file_on_free_hosting": false,
"is_zip_on_directory_listing": false,
"is_password_field": false,
"is_linux_elf_file": false,
"is_empty_page_title": false,
"is_directory_listing": false,
"is_masked_file": false,
"is_suspicious_file_extension": false,
"is_suspicious_content": false
},
"geo_location": {
"countries": ["KR"]
},
"url_parts": {
"host_nowww": "example.com",
"host": "www.example.com",
"path": "/dynamic/example.html",
"query": null,
"scheme": "http",
"port": 80},
"site_category": {
"is_vpn_provider": false,
"is_url_shortener": false,
"is_anonymizer": false,
"is_torrent": false,
"is_free_dynamic_dns": false,
"is_free_hosting": false
},
"web_page": {
"keywords": "",
"description": "",
"title": "404 Not Found"
},
"dns_records": {
"ns": {
"records": [{
"country_name": "Korea (Republic of)",
"ip": "192.0.2.95",
"isp": "Example Corporation",
"target": "example.com",
"country_code": "KR"
}, {
"country_name": "Korea (Republic of)",
"ip": "192.0.2.26",
"isp": "LX",
"target": "example.com",
"country_code": "KR"
}]},
"mx": {
"records": []
}}},
"Entity": "www.example.com:80/dynamic/example.html"
}
]
קיר נרתיק הטעינה
| סוג התוצאות | תיאור | סוג |
|---|---|---|
| הודעת פלט* |
|
כללי |
| קיר פניות בפורמט CSV | אם יש נתונים, יוצרים טבלת CSV חדשה של ישויות:
|
כללי |
| העשרה | אם יש נתונים זמינים, צריך להוסיף את הפרטים הבאים כהעשרת ישות: (חשוב להוסיף את הקידומת "APIVoid")
|
ישות |
צילום מסך
צלמו צילום מסך באיכות גבוהה של כל אתר או כתובת URL.
פרמטרים
לא רלוונטי
תרחישים לדוגמה
אנליסט יכול לצלם צילומי מסך באיכות גבוהה של כל אתר או כתובת URL, בפורמט תמונה PNG או JPG.
הפעלה ב-
הפעולה הזו פועלת על הישות "משתמש".
תוצאות הפעולה
העשרת ישויות
מסמנים ישות כחשודה אם מספר המנועים השליליים שווה לסף שצוין או גבוה ממנו. is_suspicious: if data.get("score") > threshold
| שם שדה ההעשרה | לוגיקה – מתי להחיל |
|---|---|
| דומיין | מוחזר אם הוא קיים בתוצאת ה-JSON |
| should_block | מוחזר אם הוא קיים בתוצאת ה-JSON |
| ציון | מוחזר אם הוא קיים בתוצאת ה-JSON |
| חד-פעמי | מוחזר אם הוא קיים בתוצאת ה-JSON |
| has_mx_records | מוחזר אם הוא קיים בתוצאת ה-JSON |
| has_spf_records | מוחזר אם הוא קיים בתוצאת ה-JSON |
תוצאת הסקריפט
| שם תוצאת הסקריפט | אפשרויות לערכים | דוגמה |
|---|---|---|
| is_success | נכון/לא נכון | is_success:False |
תוצאת JSON
[
{
"EntityResult": {
"domain": "example.com",
"valid_tld": true,
"email": "user@example.co",
"role_address": false,
"should_block": false,
"risky_tld": false,
"dirty_words_username": false,
"suspicious_domain": false,
"score": 100,
"educational_domain": false,
"dirty_words_domain": false,
"did_you_mean": " ",
"username": "user",
"valid_format": true,
"is_spoofable ": false,
"disposable": false,
"government_domain": false,
"has_spf_records": true,
"domain_popular": false,
"has_mx_records": true,
"china_free_email": false,
"free_email": false,
"russian_free_email": false,
"police_domain": false,
"dmarc_enforced": false,
"suspicious_username": false
},
"Entity": "USER@EXAMPLE.COM"
}
]
קיר נרתיק הטעינה
| סוג התוצאות | תיאור | סוג |
|---|---|---|
| הודעת פלט* |
|
כללי |
| קבצים מצורפים | אם יש נתונים, יוצרים אובייקט קובץ חדש:
|
כללי |
פינג
בודקים את הקישוריות.
פרמטרים
לא רלוונטי
הפעלה ב-
הפעולה הזו פועלת בכל הישויות.
תוצאות הפעולה
תוצאת הסקריפט
| שם תוצאת הסקריפט | אפשרויות לערכים | דוגמה |
|---|---|---|
| הפעולה בוצעה | נכון/לא נכון | success:False |
אימות של כתובת האימייל
בודקים אם כתובת אימייל היא חד-פעמית, אם יש לה רשומות MX ועוד.
פרמטרים
| שם הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| סף | מספר שלם | לא רלוונטי | כן | סף הסיכון של האימייל. הסף חייב להיות ערך מספרי. דוגמה: 3 |
תרחישים לדוגמה
מנתח נתונים יכול לבדוק אם כתובת אימייל היא חד-פעמית, לקבל רשומות MX ועוד.
הפעלה ב-
הפעולה הזו פועלת על הישות "משתמש".
תוצאות הפעולה
העשרת ישויות
מסמנים ישות כחשודה אם מספר המנועים השליליים שווה לסף שצוין או גבוה ממנו. is_suspicious: if data.get("score") > threshold
| שם שדה ההעשרה | לוגיקה – מתי להחיל |
|---|---|
| דומיין | מוחזר אם הוא קיים בתוצאת ה-JSON |
| should_block | מוחזר אם הוא קיים בתוצאת ה-JSON |
| ציון | מוחזר אם הוא קיים בתוצאת ה-JSON |
| חד-פעמי | מוחזר אם הוא קיים בתוצאת ה-JSON |
| has_mx_records | מוחזר אם הוא קיים בתוצאת ה-JSON |
| has_spf_records | מוחזר אם הוא קיים בתוצאת ה-JSON |
תוצאת הסקריפט
| שם תוצאת הסקריפט | אפשרויות לערכים | דוגמה |
|---|---|---|
| is_success | נכון/לא נכון | is_success:False |
תוצאת JSON
[
{
"EntityResult": {
"domain": "example.com",
"valid_tld": true,
"email": "user@example.com",
"role_address": false,
"should_block": false,
"risky_tld": false,
"dirty_words_username": false,
"suspicious_domain": false,
"score": 100,
"educational_domain": false,
"dirty_words_domain": false,
"did_you_mean": " ",
"username": "user",
"valid_format": true,
"is_spoofable ": false,
"disposable": false,
"government_domain": false,
"has_spf_records": true,
"domain_popular": false,
"has_mx_records": true,
"china_free_email": false,
"free_email": false,
"russian_free_email": false,
"police_domain": false,
"dmarc_enforced": false,
"suspicious_username": false
},
"Entity": "USER@EXAMPLE.COm"
}
]
קיר נרתיק הטעינה
| סוג התוצאות | תיאור | סוג |
|---|---|---|
| הודעת פלט* |
|
כללי |
| קיר פניות בפורמט CSV | תוכן קובץ ה-CSV: נתוני ישות(דוגמה בהמשך) | כללי |
| העשרה | אם יש נתונים זמינים, צריך להוסיף את הפרטים הבאים כהעשרת ישות: (חשוב להוסיף את הקידומת "APIVoid")
|
ישות |
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.