Hello all.
I was reading over the article at https://www.splunk.com/en_us/blog/security/log4shell-detecting-log4j-vulnerability-cve-2021-44228-co...
Specifically at the New Outbound Traffic Detection with Baseline section.
Can someone explain to me the appendpipe's subsearch (I split it into parts but its actually one search) purpose and how it works?
| tstats summariesonly=false allow_old_summaries=true
earliest(_time) as earliest
latest(_time) as latest
values(All_Traffic.action) as action
values(All_Traffic.app) as app
values(All_Traffic.dest_ip) as dest_ip
values(All_Traffic.dest_port) as dest_port
values(sourcetype) as sourcetype count
from datamodel=Network_Traffic
where (NOT (All_Traffic.dest_category="internal" OR All_Traffic.dest_ip=10.0.0.0/8 OR All_Traffic.dest_ip=172.16.0.0/12 OR All_Traffic.dest_ip=192.168.0.0/16 OR All_Traffic.dest_ip=100.64.0.0/10))
by All_Traffic.src_ip All_Traffic.dest_ip
| rename "All_Traffic.*" as *
| lookup egress_src_dest_tracker.csv dest_ip src_ip OUTPUT earliest AS previous_earliest latest AS previous_latest
| eval earliest=min(earliest, previous_earliest), latest=max(latest, previous_latest)
| fields - previous_*
| appendpipe
[
| fields src_ip dest_ip latest earliest
| stats min(earliest) as earliest max(latest) as latest by src_ip, dest_ip
| inputlookup append=t egress_src_dest_tracker.csv
| stats min(earliest) as earliest max(latest) as latest by src_ip, dest_ip
| outputlookup egress_src_dest_tracker.csv
| where a=b
]
| eventstats max(latest) as maxlatest
| eval comparisonTime="-1h@h"
| eval isOutlier=if(earliest >= relative_time(maxlatest, comparisonTime), 1, 0)
| convert timeformat="%Y-%m-%dT%H:%M:%S" ctime(earliest),ctime(latest) ,ctime(maxlatest)
| where isOutlier=1
I am trying to understand what this appendpipe portion is doing. Here is my current thought process:
0) It would take the result from the previous set of commands
1) summarize: latest/earlist by src/dest.
2) append the lookup
3) get the earliest/latest by src/dest again. (would the result be the same if we skipped #1?)
4) save the results
5) what does this where clause mean? There is no a or b field that I can see.
Thanks!