Identifying Split or Part Archive File Transfers
// Define patterns for split or part archive file names
let SplitArchivePatterns = dynamic(["*.part*", "*.zip.*", "*.rar.*", "*.z*.*", "*.tar.*", "*.gz.*"]);
// Query the FileEvents table
DeviceFileEvents
| extend FileExtension = tolower(split(FileName, ".")[-1]) // Extract file extension
| where FileName matches regex @"(.*\.(part[0-9]+|zip\.[0-9]+|rar\.[0-9]+|z\.[0-9]+|tar\.[0-9]+|gz\.[0-9]+))$"
or FileName has_any (SplitArchivePatterns) // Match patterns or dynamic list
| summarize
TotalFiles = count(),
UniqueDevices = dcount(DeviceName),
UniqueUsers = dcount(RequestAccountName),
FileSizeSum = sum(FileSize)
by FileName, FolderPath, FileExtension, bin(Timestamp, 1h)
| order by TotalFiles desc
| project Timestamp, FileName, FolderPath, FileExtension, TotalFiles, UniqueDevices, UniqueUsers, FileSizeSumExplanation:
Customisation:
PreviousIdentifying Interactive or RemoteInteractive Session From Service AccountNextDetect Potential Cleartext Credentials in Command Line
Last updated