שילוב של UrlScan.io עם Google SecOps

במאמר הזה מוסבר איך לשלב את urlscan.io עם Google SecOps.

במאמר הזה מוסבר איך לשלב את UrlScan.io עם Google Security Operations.

תרחישים לדוגמה

השילוב של UrlScan.io משתמש ביכולות של Google SecOps כדי לתמוך בתרחישים הבאים:

  • ניתוח אוטומטי של כתובות URL: שליחה אוטומטית של כתובות URL חשודות אל UrlScan.io כדי לקבוע את רמות הסיכון ולאחזר צילומי מסך לאימות חזותי במהלך מיון האירועים.

  • העשרת מודיעין איומי סייבר: העשרת ההתראות באמצעות שליחת שאילתות ל-UrlScan.io כדי לקבל מטא-נתונים מפורטים על כתובות IP, דומיינים וכתובות URL, וכך לספק למנתחים הקשר מיידי לגבי ASN, סוגי שרתים וציוני זדוניות.

  • חיפוש יזום של סריקות היסטוריות: חיפוש סריקות ציבוריות ופרטיות קיימות שמשויכות לסימנים מחשידים (IoC) כדי לזהות פעילות ודפוסים זדוניים היסטוריים.

  • דוחות וניתוח מעמיק של נתונים: אפשר לאחזר פרטי סריקה מקיפים באמצעות מזהי סריקה ספציפיים כדי לבצע ניתוח מעמיק של קובצי Cookie, מספר הבקשות וקישורים קשורים לצורך חקירות אבטחה מורכבות.

לפני שמתחילים

כדי לאמת את החיבור בין Google SecOps ל-UrlScan.io, צריך לספק מפתח API תקין.

אפשר לקבל ולנהל את מפתחות ה-API בקטע Profile (פרופיל) בחשבון urlscan.io.

פרמטרים של שילוב

כדי לשלב את urlscan.io, צריך להגדיר את הפרמטרים הבאים:

פרמטר תיאור
Api Key

חובה.

מפתח ה-API הייחודי שמשמש לאימות מול השירות urlscan.io.

Verify SSL

זה שינוי אופציונלי.

אם האפשרות הזו נבחרת, השילוב מאמת את אישור ה-SSL כשמתחברים לשרת UrlScan.io.

איך מגדירים שילובים ב-Google SecOps

אם צריך, אפשר לבצע שינויים בשלב מאוחר יותר. אחרי שמגדירים מופע של אינטגרציה, אפשר להשתמש בו בפלייבוקים. במאמר תמיכה במספר מופעים מוסבר איך להגדיר מספר מופעים ולתמוך בהם.

פעולות

מידע נוסף על פעולות זמין במאמרים מענה לפעולות בהמתנה משולחן העבודה והפעלה ידנית של פעולה בבקשת התמיכה.

פינג

בדיקת הקישוריות.

פרמטרים

לא רלוונטי

תרחישים לדוגמה

לא רלוונטי

ריצה

הפעולה הזו פועלת בכל הישויות.

תוצאות הפעולה

העשרת ישויות
תובנות

לא רלוונטי

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
תוצאת JSON
N/A

בדיקת כתובת URL

שליחת כתובת URL לסריקה וקבלת פרטי הסריקה.

פרמטרים

שם הפרמטר סוג Is Mandatory ערך ברירת המחדל תיאור
הרשאות גישה

DDL
possible:
public, unlisted, private.

לא ציבורי לסריקות ב-urlscan.io יש אחת משלוש רמות חשיפה. הקפידו להשתמש ברמה המתאימה לשליחה שלכם.
סף מספר שלם לא -1 סימון ישות כחשודה אם הציון של ההחלטות שווה לסף שצוין או גבוה ממנו. ערך ברירת המחדל הוא ‎-1, ובמקרה כזה אנחנו מתייחסים לכל כתובת URL שנסרקה כחשודה.
יצירת תובנה בוליאני לא כן אם המדיניות מופעלת, הפעולה תיצור תובנה שמכילה מידע על ישויות.
Only Suspicious Insight בוליאני לא לא אם ההגדרה מופעלת, הפעולה תיצור תובנה רק לגבי ישויות חשודות. הערה: צריך להפעיל את הפרמטר "יצירת תובנה".
הוספת צילום מסך לתובנה בוליאני לא לא אם הפעולה מופעלת, היא תוסיף לתובנה צילום מסך של האתר, אם הוא זמין.

תרחישים לדוגמה

לא רלוונטי

ריצה

הפעולה הזו פועלת על הישויות הבאות:

  • כתובת IP
  • דומיין
  • כתובת URL

תוצאות הפעולה

העשרת ישויות
שם מפתח
real_url tasks/url
visibility visibility
requests_count len(data/requests)
קובצי cookie קובץ CSV של נתונים/קובצי Cookie/שם
related_links קובץ CSV של נתונים/קישורים/href
main_country דף/מדינה
main_domain דף/דומיין
main_ip page/ip
main_asn page/asnname
main_server דף/שרת
related_ips_count len(lists/ips)
related_domains_count len(lists/domains)
related_countries רשימות/מדינות בפורמט CSV
overall_score verdicts/overall/score
קטגוריות verdicts/overall/categories
תגים verdicts/overall/tags
זדונית verdicts/overall/malicious
תובנות

לא רלוונטי

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
תוצאת JSON
[
    {
        "Entity": "https://example.com",
        "EntityResult": {
            "lists": {
                "ips": [
                    "0.0.0.0"
                ],
                "countries": [
                    "ZZ"
                ],
                "asns": [
                    "00000"
                ],
                "domains": [
                    "subdomain.example.com"
                ],
                "servers": [
                    "GenericServer/1.0.0"
                ],
                "urls": [
                    "https://example.com/",
                    "https://example.com/assets/image.png",
                    "https://example.com/assets/script.js",
                    "https://example.com/assets/style.svg",
                    "https://example.com/favicon.ico"
                ],
                "linkDomains": [
                    "node1.example.com",
                    "node2.example.com",
                    "node3.example.com"
                ],
                "certificates": [
                    {
                        "subjectName": "*.example.com",
                        "issuer": "CA-0",
                        "validFrom": 1000000000,
                        "validTo": 2000000000
                    }
                ],
                "hashes": [
                    "hash_string_alpha_001",
                    "hash_string_alpha_002",
                    "hash_string_alpha_003"
                ]
            },
            "page": {
                "asn": "AS00000",
                "asnname": "PROVIDER - Service Provider Inc., ZZ",
                "city": "",
                "country": "ZZ",
                "domain": "subdomain.example.com",
                "ip": "0.0.0.0",
                "ptr": "host.provider.net",
                "server": "GenericServer/1.0.0",
                "url": "https://example.com/",
                "apexDomainAgeDays": 1,
                "mimeType": "application/octet-stream",
                "title": "Title Placeholder",
                "tlsValidDays": 0,
                "tlsAgeDays": 0,
                "domainAgeDays": 1,
                "tlsValidFrom": "2000-01-01T00:00:00.000Z",
                "umbrellaRank": 0,
                "apexDomain": "example.com",
                "tlsIssuer": "CA-0",
                "status": "000"
            },
            "scanner": {
                "country": "zz"
            },
            "stats": {
                "IPv6Percentage": 0,
                "adBlocked": 0,
                "malicious": 0,
                "securePercentage": 0,
                "secureRequests": 0,
                "totalLinks": 0,
                "uniqCountries": 0
            },
            "submitter": {
                "country": "ZZ"
            },
            "task": {
                "method": "system",
                "source": "source_id",
                "time": "2000-01-01T00:00:00.000Z",
                "url": "https://example.com/",
                "uuid": "00000000-0000-0000-0000-000000000000",
                "visibility": "private",
                "reportURL": "https://service.io/result/id/",
                "screenshotURL": "https://service.io/screen/id.png",
                "domURL": "https://service.io/dom/id/",
                "domain": "subdomain.example.com",
                "apexDomain": "example.com"
            },
            "verdicts": {
                "overall": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "tags": [],
                    "malicious": false,
                    "hasVerdicts": false
                },
                "service_provider": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "tags": [],
                    "malicious": false,
                    "hasVerdicts": false
                },
                "engines": {
                    "score": 0,
                    "malicious": false,
                    "categories": [],
                    "enginesTotal": 0,
                    "maliciousTotal": 0,
                    "benignTotal": 0,
                    "maliciousVerdicts": [],
                    "benignVerdicts": [],
                    "hasVerdicts": false,
                    "tags": [
                        "tag-alpha",
                        "tag-beta"
                    ]
                },
                "community": {
                    "score": 0,
                    "categories": [],
                    "brands": [],
                    "votesTotal": 0,
                    "votesMalicious": 0,
                    "votesBenign": 0,
                    "malicious": false,
                    "hasVerdicts": false
                }
            },
            "is_risky": false
        }
    }
]

חיפוש סריקות

חיפוש סריקות קיימות של urlscan.io לפי מאפיינים כמו דומיינים, כתובות IP, מספרי מערכת אוטונומית (AS), גיבובים וכו'. הפעולה תמצא סריקות ציבוריות שבוצעו על ידי כל אחד, וגם סריקות לא רשומות ופרטיות שבוצעו על ידכם או על ידי הצוותים שלכם.

פרמטרים

שם הפרמטר סוג Is Mandatory ערך ברירת המחדל תיאור
מספר הסריקות המקסימלי מספר שלם לא 100 מספר הסריקות שיוחזרו לכל ישות. ברירת המחדל: 100, מקסימום: 10,000 (בהתאם למינוי).

ריצה

הפעולה הזו פועלת על הישויות הבאות:

  • כתובת IP
  • שמות המארחים
  • כתובות URL
  • שם קובץ
  • גיבובים (hashes)
  • דומיין

תוצאות הפעולה

העשרת ישויות

לא רלוונטי

תובנות

לא רלוונטי

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
תוצאת JSON
{"entity_identifier": "www.unitedneighborsfcu.com",
"entity_results":[
  {
        "indexedAt": "2020-12-09T12:16:43.329Z",
        "task": {
            "visibility": "public",
            "method": "automatic",
            "domain": "www.unitedneighborsfcu.com",
            "time": "2020-12-09T12:16:23.168Z",
            "source": "certstream-suspicious",
            "uuid": "96310829-fed4-4d61-9fb0-39eb2952719f",
            "url": "https://www.unitedneighborsfcu.com"
        },
        "stats": {
            "uniqIPs": 6,
            "consoleMsgs": 0,
            "uniqCountries": 3,
            "dataLength": 1938842,
            "encodedDataLength": 1568193,
            "requests": 28
        },
        "page": {
            "country": "US",
            "server": "Microsoft-IIS/10.0",
            "domain": "www.unitedneighborsfcu.com",
            "ip": "8.21.114.55",
            "mimeType": "text/html",
            "asnname": "LEVEL3, US",
            "asn": "AS3356",
            "url": "https://www.unitedneighborsfcu.com/",
            "status": "200"
        },
        "_id": "96310829-fed4-4d61-9fb0-39eb2952719f",
        "sort": [1607516183168, "96310829-fed4-4d61-9fb0-39eb2952719f"],
        "result": "https://urlscan.io/api/v1/result/96310829-fed4-4d61-9fb0-39eb2952719f/",
        "screenshot": "https://urlscan.io/screenshots/96310829-fed4-4d61-9fb0-39eb2952719f.png"
  }
  ]
}
קיר תיקים
סוג התוצאות ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

  • אם נמצאו סריקות לחלק מהישויות (is_success = true): print "Successfully listed scans for the following entities:\n".format(entity.identifier)
  • אם לא נמצאו סריקות לחלק מהישויות (is_success = true): print "Action wasn't able to list scans for the following entities:\n".format(entity.identifier)‎
  • אם לא נמצאו סריקות לכל הישויות(is_success = false): מדפיסים את ההודעה "הפעולה לא הצליחה להציג את הסריקות של הישויות הזמינות".
  • אם אין ישויות: מדפיסים את ההודעה "לא נמצאו ישויות מתאימות בהיקף הנוכחי.

    הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:
    אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת, אחר: מדפיסים את ההודעה "שגיאה בביצוע הפעולה 'חיפוש סריקות'. Reason: {0}''.format(error.Stacktrace).‎
כללי
שולחן קיר עם ויטרינה

כותרת: "{entity identifier} – תוצאות חיפוש"

עמודות:

מזהה סריקה

כתובת URL

תאריך הסריקה

גודל

IPS

מדינות ייחודיות

מדינה

סוג סריקה

כללי
קישור לקיר של בקשות התמיכה כותרת: דוח אינטרנט של urlscan.io + (מזהה ישות). כללי
קובץ מצורף ל-Case Wall מכילה את צילום המסך. כללי

קבלת פרטים מלאים על הסריקה

קבלת הפרטים המלאים של הסריקה לפי מזהה הסריקה

פרמטרים

שם הפרמטר סוג Is Mandatory ערך ברירת המחדל תיאור
מזהה סריקה String כן לא רלוונטי קבלת דוח סריקה באמצעות מזהה הסריקה. ערכים מופרדים בפסיקים (CSV).

ריצה

הפעולה הזו לא פועלת על ישויות.

תוצאות הפעולה

העשרת ישויות

לא רלוונטי

תובנות

לא רלוונטי

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
תוצאת JSON
['Effective URL'] = response['page']['url']
קיר תיקים
סוג התוצאות ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

  • אם נמצאו מזהי סריקה (is_success = true): מדפיסים את ההודעה "Successfully fetched results for the following scans: {scan ids}"
  • אם לא נמצאו תוצאות לחלק מהסריקות (is_success = true): מדפיסים את ההודעה "Action wasn't able to fetch results for the following scans: {scan ids}"
  • אם לא נמצאו כל התוצאות (is_success = false): מדפיסים את ההודעה "הפעולה לא הצליחה לאחזר תוצאות. מזהי הסריקה שצוינו לא זמינים באמצעות urlscan.io"

הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:

  • אם יש שגיאה חמורה, כמו פרטי כניסה שגויים, אין חיבור לשרת, אחר: מדפיסים את ההודעה "שגיאה בביצוע הפעולה 'קבלת פרטי סריקה מלאים'". הסיבה: {0}''.format(error.Stacktrace)
כללי
קישור ל-Case Wall כותרת: "urlscan.io Web Report + (Scan ID). כללי
קובץ מצורף ל-Case Wall מכילה את צילום המסך. כללי

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.