All kinds of interesting information can be found using the Elasticsearch API. https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html
I find it easier than using Kibana, but Kibana was necessary to figure out the query language. Using the same queries, you can save out results and sort through them.
The simplest example would be something like this.
#!/bin/bash curl -XPOST "http://elasticsearch:9200/_search" -d' { "query": { "query_string": { "query": "*" } } }'
That will pull 1024 results from all indices. You can format the results with jq
apt-get install jq
And then pipe this on the end
| jq '.hits.hits[]._source | del(.["type"]) | del(.["@version"])'
Depending on how your indices are setup, you can grab all kinds of useful information.
#!/bin/bash rm output rm hits rm noqualys window=now-30d curl -s -XPOST "http://elasticsearch:9200/logstash-*/_search?size=10000" -d' { "query": { "filtered": { "query": { "query_string": { "query": "\"bro_http\" AND \"POST\"", "analyze_wildcard": true } }, "filter": { "bool": { "must": [ { "range": { "@timestamp": { "gte" : "'$window'" } } } ], "must_not": [] } } } } }' | jq '.hits.hits[]._source | del(.["type"]) | del(.["@version"])' >> hits cat hits | egrep -v "64\\.39\\.(11[01]|10[0-9]|9[6-9])\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])" > noqualys cat noqualys | grep -oP "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3},514,rslog|signature_id.*?," | grep -B1 signature| grep -v -- "--" | paste -s -d' \n'| sort |uniq -c | sort -nr | sed 's/,514,rslog//g' | sed 's/\"//g' | sed 's/,$//g' | sed 's/\\//g' > output sed -i -e 's/10\.1\.1\.20/NAME/g' output while read p; do sid=$(echo $p | cut -d ":" -f2); sigtotal=$(echo $p; echo -e '\t'; eval "grep sid:\\$sid allsurirules" | grep -oE "msg:.{0,100}"|sed "s/;.*//"); echo $sigtotal; done < output
That will pull 10,000 results on the query “bro_http” AND “POST”. From there, you can filter down to find what you’re looking for and sort through the logs, create counts and metrics, and have the data available to manipulate further. More examples here.
0 Comments