استعلامات لجدول NetworkSessions
للحصول على معلومات حول استخدام هذه الاستعلامات في مدخل Microsoft Azure، راجع البرنامج التعليمي Log Analytics. للحصول على واجهة برمجة تطبيقات REST، راجع الاستعلام.
الحصول على نسبة استخدام الشبكة إلى منافذ غير قياسية
يحدد هذا الاستعلام عناوين IP المصدر التي ترسل طلبات الاتصال عبر منافذ متعددة. قد يكون هذا مؤشرا على محاولات الخصم لسرد الخدمات المتاحة. المراجع: فحص خدمة شبكة MITRE (T1046)
// This query identifies source IP addresses sending connection requests over multiple ports.
// This could be an indication of adversary attempts to list available services.
// References: MITRE Network Service Scanning (T1046)
let threshold=5;
// Used to filter commonly used ports in your org
let commonPorts=dynamic([443, 53, 389, 80, 0, 880, 8888, 8080]);
NetworkSessions
| where isnotempty(DstPortNumber) and not(ipv4_is_private(DstIpAddr) )
// filter out IANA ephemeral or negotiated ports as per https://en.wikipedia.org/wiki/Ephemeral_port
| where DstPortNumber !between (toint(49512) .. toint(65535))
and DstPortNumber !in (commonPorts)
| where EventResult == "Failure"
| summarize PortCount=dcount(DstPortNumber) by SrcIpAddr, bin(TimeGenerated, 2m)
| where PortCount > threshold
نسبة استخدام الشبكة عالية الحجم إلى مجالات غير شائعة
يحدد هذا الاستعلام المجالات التي تتلقى كمية غير شائعة من حجم البيانات. قد يكون هذا مؤشرا على محاولات الخصم لسرقة البيانات وسرقةها.
// This query identifies domains receiving uncommon about of data volume.
// This could be an indication of adversary attempts to steal and exfiltrate data.
let isInternal = (url_hostname:string){url_hostname endswith ".local" or url_hostname endswith ".lan" or url_hostname endswith ".home"};
// used to exclude internal traffic
let top1M = (externaldata (Position:int, Domain:string) [@"http://s3-us-west-1.amazonaws.com/umbrella-static/top-1m.csv.zip"] with (format="csv", zipPattern="*.csv"));
// fetch the alexa top 1M domains
let top2ndLevelDomain=top1M
| extend Domain = tolower(extract("([^.]*).{0,7}$", 1, Domain))
| distinct Domain;
let rareDomainTraffic = NetworkSessions
| where isnotempty(UrlHostname) and not(isInternal(UrlHostname))
| extend SndLevelDomain=tolower(extract("([^.]*).{0,7}$", 1, UrlHostname))
| where SndLevelDomain !in (top2ndLevelDomain)
| summarize BytesSent=sum(SrcBytes) by SndLevelDomain, UrlHostname;
rareDomainTraffic | summarize TotalBytes=sum(BytesSent) by SndLevelDomain
| join kind=innerunique
rareDomainTraffic
on SndLevelDomain
| sort by TotalBytes desc