Exchange Online Report zu SPAM, Phishing, Malware per PowerShell erstellen

The estimated reading time 2 minutes

Oftmals ist es für Unternehmen interessant einige Statistiken über den aktuellen Mailfluss herauszufinden. Dies kann über das Defender Portal in M365 gemacht werden oder eben per PowerShell. Generell kann hier mit der Standard Exchange Online Protection bereits schon einiges eingesehen und ausgewertet werden (diese Funktion ist in den meisten Standardplänen enthalte, siehe Business-Pläne oder auch Enterprise-Pläne). Fairerweise muss man aber zugeben, dass die kostenpflichtige Erweiterung Defender for Office365 hier nochmals deutlich mehr Möglichkeiten bringt und auch einen erweiterten Schutz gegenüber Phishing und anderen Angriffen per Mail bietet.

Für das folgende Script wird eine Verbindung zu Exchange Online PowerShell benötigt, weitere Informationen dazu siehe Link zu Microsoft, oder auch mein kurzes Tutorial.

Das folgende Script gibt zunächst einen groben Überblick, wieviel und welche Art von Spam und Phishing etc. erkannt wurde. Die Zahl in der ersten Zeile „$daysbefore“ gibt an, wieviele Tage zurückgegangen wird.

$daysbefore = "2"
$EndDate = (Get-Date).AddDays(-1)
$StartDate = $EndDate.AddDays(-$daysbefore)
Get-ATPTotalTrafficReport -StartDate $StartDate -EndDate $EndDate -Direction inbound | Select-Object Eventtype,MessageCount | Sort-Object MessageCount -Descending | Format-Table

Detailreport:

Um einen genaueren Überblick zu bekommen können auch die Daten der eingehenden Mails exportiert werden. Dies kann mit folgendem Script erledigt werden.

$daysbefore = "2"
$EndDate = (Get-Date).AddDays(-1)
$StartDate = $EndDate.AddDays(-$daysbefore)
$orgname = (Get-Organizationconfig).name    
$date= (Get-date -Format yyyy-MM-dd-hh-mm) 
$exportpath = "$env:USERPROFILE\Downloads\$date-$orgname-spamreport.csv"
# get data
$Report = Get-MailDetailATPReport -StartDate $StartDate -EndDate $EndDate |
    Where-Object { $_.VerdictSource -in @("Malware", "Phish", "Spam") }
# get statistics
Write-Host "statistic last $daysbefore days:"
$Stats = $Report | Group-Object -Property VerdictSource | Select-Object Name, Count
$Stats | ForEach-Object { Write-Host "$($_.Name): $($_.Count)" }
# export data 
#$Report | Select-Object Date, Subject, SenderAddress, RecipientAddress, MessageId, VerdictSource 
$Report | Export-Csv -Path "$exportpath" -NoTypeInformation -Delimiter ";"

Das Script generiert eine CSV im Downloadverzeichnis des angemeldeten Benutzers. Diese kann dann mit einem Tool der Wahl gefiltert und analysiert werden.

Damit kann man relativ einfach und schnell automatisiert auch Reports per PowerShell versenden und erstellen lassen.

Sollte euch der Artikel gefallen, lasst mir gerne ein „helpful“ da. Freue mich auch über Kommentare.

Was this article helpful?
YesNo
0 0 Bewertungen
Beitragsbewertung
Abonnieren
Benachrichtigen bei
guest
0 Kommentare
Neueste
Älteste Meistbewertet
Inline-Feedbacks
Alle Kommentare anzeigen