Update mappings and transforms

This commit is contained in:
pemontto
2019-04-18 11:34:01 +10:00
parent a2e27d816b
commit e6c397397b
4 changed files with 18 additions and 9 deletions

View File

@ -33,6 +33,7 @@ class NessusAPI(object):
'cvss3 temporal vector': 'cvss3_temporal_vector', 'cvss3 temporal vector': 'cvss3_temporal_vector',
'fqdn': 'dns', 'fqdn': 'dns',
'host': 'asset', 'host': 'asset',
'ip address': 'ip',
'name': 'plugin_name', 'name': 'plugin_name',
'os': 'operating_system', 'os': 'operating_system',
'see also': 'exploitability', 'see also': 'exploitability',
@ -200,8 +201,11 @@ class NessusAPI(object):
if self.profile == 'tenable': if self.profile == 'tenable':
# Prefer CVSS Base Score over CVSS for tenable # Prefer CVSS Base Score over CVSS for tenable
self.logger.debug('Dropping redundant tenable fields') self.logger.debug('Dropping redundant tenable fields')
df.drop('CVSS', axis=1, inplace=True) df.drop('CVSS', axis=1, inplace=True, errors='ignore')
df.drop('IP Address', axis=1, inplace=True)
if self.profile == 'nessus':
# Set IP from Host field
df['ip'] = df['Host']
# Lowercase and map fields from COLUMN_MAPPING # Lowercase and map fields from COLUMN_MAPPING
df.columns = [x.lower() for x in df.columns] df.columns = [x.lower() for x in df.columns]
@ -213,18 +217,18 @@ class NessusAPI(object):
def transform_values(self, df): def transform_values(self, df):
self.logger.debug('Transforming values') self.logger.debug('Transforming values')
df.fillna('', inplace=True)
# upper/lowercase fields # upper/lowercase fields
self.logger.debug('Changing case of fields') self.logger.debug('Changing case of fields')
df['cve'] = df['cve'].str.upper() df['cve'] = df['cve'].str.upper()
df['protocol'] = df['protocol'].str.lower() df['protocol'] = df['protocol'].str.lower()
df['risk'] = df['risk'].str.lower() df['risk'] = df['risk'].str.lower()
# Copy asset to IP
df['ip'] = df['asset']
# Map risk to a SEVERITY MAPPING value # Map risk to a SEVERITY MAPPING value
self.logger.debug('Mapping risk to severity number') self.logger.debug('Mapping risk to severity number')
df['risk_number'] = df['risk'].str.lower().map(self.SEVERITY_MAPPING) df['risk_number'] = df['risk'].str.lower().map(self.SEVERITY_MAPPING)
df.fillna('', inplace=True) df.fillna('', inplace=True)
return df return df

View File

@ -203,4 +203,5 @@ class OpenVAS_API(object):
def transform_values(self, df): def transform_values(self, df):
self.logger.debug('Transforming values') self.logger.debug('Transforming values')
df.fillna('', inplace=True)
return df return df

View File

@ -156,32 +156,35 @@ class qualysVulnScan:
def transform_values(self, df): def transform_values(self, df):
self.logger.info('Transforming values') self.logger.info('Transforming values')
df.fillna('', inplace=True)
# upper/lowercase fields # upper/lowercase fields
self.logger.info('Changing case of fields') self.logger.info('Changing case of fields')
df['cve'] = df['cve'].str.upper() df['cve'] = df['cve'].str.upper()
df['protocol'] = df['protocol'].str.lower() df['protocol'] = df['protocol'].str.lower()
# Contruct the CVSS vector # Contruct the CVSS vector
self.logger.info('Extracting CVSS components')
df['cvss_vector'] = ( df['cvss_vector'] = (
df.loc[df['cvss_base'].notnull(), 'cvss_base'] df.loc[df['cvss_base'].str.contains(' \('), 'cvss_base']
.str.split() .str.split()
.apply(lambda x: x[1]) .apply(lambda x: x[1])
.str.strip('()') .str.strip('()')
) )
df['cvss_base'] = ( df['cvss_base'] = (
df.loc[df['cvss_base'].notnull(), 'cvss_base'] df.loc[df['cvss_base'].str.contains(' \('), 'cvss_base']
.str.split() .str.split()
.apply(lambda x: x[0]) .apply(lambda x: x[0])
) )
df['cvss_temporal_vector'] = ( df['cvss_temporal_vector'] = (
df.loc[df['cvss_temporal'].notnull(), 'cvss_temporal'] df.loc[df['cvss_temporal'].str.contains(' \('), 'cvss_temporal']
.str.split() .str.split()
.apply(lambda x: x[1]) .apply(lambda x: x[1])
.str.strip('()') .str.strip('()')
) )
df['cvss_temporal'] = ( df['cvss_temporal'] = (
df.loc[df['cvss_temporal'].notnull(), 'cvss_temporal'] df.loc[df['cvss_temporal'].str.contains(' \('), 'cvss_temporal']
.str.split() .str.split()
.apply(lambda x: x[0]) .apply(lambda x: x[0])
) )

View File

@ -476,4 +476,5 @@ class qualysScanReport:
def transform_values(self, df): def transform_values(self, df):
self.logger.debug('Transforming values') self.logger.debug('Transforming values')
df.fillna('', inplace=True)
return df return df