# Author: Austin Taylor and Justin Henderson # Email: austin@hasecuritysolutions.com # Last Update: 12/30/2017 # Version 0.3 # Description: Take in qualys web scan reports from vulnWhisperer and pumps into logstash input { file { path => [ "/opt/VulnWhisperer/data/qualys_vuln/*.json" ] codec => json start_position => "beginning" tags => [ "qualys_vuln" ] mode => "read" start_position => "beginning" file_completed_action => "delete" } file { path => [ "/opt/VulnWhisperer/data/qualys_web/*.json" ] codec => json start_position => "beginning" tags => [ "qualys_web" ] mode => "read" start_position => "beginning" file_completed_action => "delete" } } filter { if "qualys_vuln" in [tags] or "qualys_web" in [tags] { date { match => [ "scan_time", "UNIX" ] target => "@timestamp" remove_field => ["scan_time"] } if "qualys_web" in [tags] { mutate { add_field => { "asset" => "%{web_application_name}" } } } mutate { convert => { "cvss" => "float"} convert => { "cvss_base" => "float"} convert => { "cvss_temporal" => "float"} convert => { "cvss3" => "float"} convert => { "cvss3_base" => "float"} convert => { "cvss3_temporal" => "float"} convert => { "risk_number" => "integer"} convert => { "total_times_detected" => "integer"} } if [first_time_detected] { date { match => [ "first_time_detected", "dd MMM yyyy HH:mma 'GMT'ZZ", "dd MMM yyyy HH:mma 'GMT'" ] target => "first_time_detected" } } if [first_time_tested] { date { match => [ "first_time_tested", "dd MMM yyyy HH:mma 'GMT'ZZ", "dd MMM yyyy HH:mma 'GMT'" ] target => "first_time_tested" } } if [last_time_detected] { date { match => [ "last_time_detected", "dd MMM yyyy HH:mma 'GMT'ZZ", "dd MMM yyyy HH:mma 'GMT'" ] target => "last_time_detected" } } if [last_time_tested] { date { match => [ "last_time_tested", "dd MMM yyyy HH:mma 'GMT'ZZ", "dd MMM yyyy HH:mma 'GMT'" ] target => "last_time_tested" } } # if [asset] =~ "\.yourdomain\.(com|net)$" { # mutate { # add_tag => [ "critical_asset" ] # } # } } } output { if "qualys_vuln" in [tags] or "qualys_web" in [tags] { stdout { codec => dots } elasticsearch { hosts => [ "elasticsearch:9200" ] index => "logstash-vulnwhisperer-%{+YYYY.MM}" } } }