in ransomware/artifact.lua [2894:2957]
function Ransomware.HeaderComparison(eventData, processData, extensionData)
local headerMismatch = false
if nil == extensionData then
return headerMismatch
end
if #extensionData.magicBytes == 0 then
return headerMismatch
end
local magicBytesTable = extensionData.magicBytes
table.insert(magicBytesTable, globals.t_null_1)
table.insert(magicBytesTable, globals.t_xml_1)
for _, v in pairs(magicBytesTable) do
headerMismatch = false
local bar = table.move(v, 1, 16, 1, {})
local subHeader = table.move(eventData.headerBytes, 1, #v, 1, {})
for k4, v4 in pairs(subHeader) do
if v4 ~= bar[k4] then
headerMismatch = true
break
end
end
if false == headerMismatch then
break
end
end
if true == headerMismatch then
alert.RaiseFileAlertMetric(eventData, 'HEADER_MISMATCH')
end
local fileExtension = ''
if extensionData == eventData.currentExtensionData then
fileExtension = eventData.fileExtension
else
fileExtension = eventData.filePreviousExtension
end
if headerMismatch then
if not utils.TableHasKey(processData.headerMismatchExtensions, fileExtension) then
processData.headerMismatchExtensions[fileExtension] = 0
utils.DebugLog('NEW EXTENSION HEADER MISMATCH: ' .. fileExtension)
processData.numHeaderMismatchExtensions = processData.numHeaderMismatchExtensions + 1
end
processData.headerMismatchExtensions[fileExtension] = processData.headerMismatchExtensions[fileExtension] + 1
end
return headerMismatch
end