QRadarClassifier
Deprecated. No available replacement. This script Classifies QRadar incidents.\nThe 'QRADAR_CATEGORIES' dictionary translate QRadar 'High level Categories' to its 'Demisto Types' counterpart.\n\nFor custom categories, use the 'customCategories' argument.\nThe offense high level category will be put to context.
- Type
- javascript
- Pack
- QRadar
Source
var QRADAR_CATEGORIES = {
'Recon' : 'Reconnaissance',
'DOS' : 'DoS',
'Authentication' : 'Authentication',
'Access' : 'Access',
'Exploit' : 'Exploit',
'Malware' : 'Malware',
'Suspicious Activity' : 'Network',
'System' : 'Unclassified',
'Policy' : 'Unclassified',
'Unknown' : 'Unclassified',
'Time Series' : 'Unclassified',
'CRE' : 'Unclassified',
'Potential Exploit' : 'Exploit',
'Flow' : 'Network',
'User Defined' : 'Unclassified',
'SIM Audit' : 'Unclassified',
'VIS Host Discovery' : 'Network',
'Application' : 'Unclassified',
'Audit' : 'Unclassified',
'Risk' : 'Vulnerability',
'Risk Manager Audit' : 'Unclassified',
'Control System' : 'Unclassified',
'Asset Profiler' : 'Network'
};
if (args.customCategories){
var customObj = JSON.parse(args.customCategories);
for (var attrname in customObj) { QRADAR_CATEGORIES[attrname] = customObj[attrname];}
}
var CONTEXT_OUTPUT = 'Classifier/Description';
if("contextOutput" in args){
CONTEXT_OUTPUT = args.contextOutput;
}
var QUERY = "SELECT CATEGORYNAME(highlevelcategory) FROM events WHERE INOFFENSE({0}) START {1}";
var incident = incidents[0];
var offense_id = "";
var start_time = "";
var offense_type = "";
var incident_type = "";
var labels = dq(incident,"labels");
labels.forEach(function(label){
if (label.type == 'id'){
offense_id = label.value;
}
if (label.type == 'start_time'){
start_time = label.value;
}
});
resp = executeCommand('QRadarFullSearch', {query_expression :QUERY.format(offense_id,start_time)});
if (isError(resp[0])){
return resp;
}
else {
data = dq(resp[0],'Contents.events');
offense_type = (data instanceof Array && data.length > 0) ? dq(data[0],'categoryname_highlevelcategory') : '';
}
if (offense_type){
incident_type = QRADAR_CATEGORIES[offense_type] ? offense_type in QRADAR_CATEGORIES : '';
setContext(CONTEXT_OUTPUT,offense_type);
}
if (incident_type){
resp = executeCommand('IncidentSet', {'type': incident_type, 'updatePlaybookForType' : 'yes'});
if (isError(resp[0])){
return resp;
}
}
else {
return { ContentsFormat: formats.text, Type: entryTypes.error, Contents: "Couldn't extract incident type for QRadar offense ID '{0}'".format(offense_id) };
}