Entropy et al
Introduction
In traffic mining the entropy is some giveaway about the nature of the L7 part of the packet. The plugin entropy supplies certain information which can be useful as a preprocessing for classifiers.
Preparation
First, restore T2 into a pristine state by removing all unnecessary or older plugins from the plugin folder ~/.tranalyzer/plugins:
t2build -e -y
Are you sure you want to empty the plugin folder '/home/wurst/.tranalyzer/plugins' (y/N)? yes
Plugin folder emptied
Then compile the core (tranalyzer2) and the following plugins:
t2build tranalyzer2 basicFlow basicStats tcpStates entropy txtSink
...
BUILD SUCCESSFUL
If you did not create a separate data and results directory yet, please do it now in another bash window, that facilitates your workflow:
mkdir ~/data ~/results
The sample PCAPs used in this tutorial can be downloaded here:
Please save them in your ~/data folder.
Now you are all set!
Entropy, but WTF is our question?
The Shannon information entropy is define by the expectation value of the logarithm of the random data distribution Pi given an alphabet of size M: S > = < lnP > = − 1/ln(M) ⋅ ∑iPi ⋅ ln(Pi) In our case M of 256 would be convenient, as it is normally the minimum size of information in layer 7 payloads. Sure, it can go down to the bit, and it would require much less samples if we choose M = 2, but let’s start practical and easy to implement, right? So 8 bit, M = 256.
Now we like to know what is the minimum number of samples n, we need to include in our
estimation, given a certain confidence interval c.
Andrew D. Back, Daniel Angus & Janet Wiles states for
distributions according to Zipf-Mandelbrot distributions, which you can find in physical and social
data sets:
n = 8/n02 ⋅ ln(2/(1−d))
The first factor denotes … and the second factor the influence of the confidence interval.
The latter calculates for d=0.75 to 2.1. If we want to improve the estimate up to
0.9 then a factor of 10 more data has to be sampled. This sounds acceptable,
but if you use the script netstat
located in the scripts
directory then you realize that
nearly 45% of all flows in the wild contain one packet, mostly with very little content. Oups!
The real bad news is the first factor where n0 is inverse proportional to the size of the selected alphabet, and then squared, which is worse.
n02 which evaluated for English text, alphabet 36, in the area of 10−8. So in our case way more. So most of the flows you will collect don’t even qualify to calculate a reasonable entropy. Damn!!
Now, what do we really need the entropy for? Do we want to distinguish subtle distributions of empirical data sets to a certain confidence level, or are we interested in a certain question? But what is the question? Yes you know the answer: 42.
In traffic mining or admin applications we were just interested in assessing the following three categories:
- text based output
- binary protocol content, e.g. bitfield, or number based, where all numbers can appear
- encrypted content
Let’s assume for 1 & 2 we have an easy measure which works in practice, such as the ratio of certain character distribution. Now let’s focus on 3. Now we scrap Zipf’s distribution law, Mr Zipf won’t like it, also some researchers might want to shoot me, but I need to produce a measure which helps me in everyday life. So shut up Zipf, these are not the data samples you are looking for.
Out data, e.g. when it comes to encrypted content out distribution should be uniformly distributed. And there is no ranking, all symbols have the same rights, we are living in a democracy. Then n comes down to the order of 1000.
In practice you may apply a threshold to the resulting entropy, which is close enough to 1. If the samples are really random and unique, then you might come down to 101. But if you are only interested in a rough estimate. Otherwise you need minimum M samples, so in our case 256 per flow, and a threshold of 0.96. But this is only empirical, no theory behind it. It just worked for me in practical applications.
But what about compression? Can you distinguish compression from encryption using the Shannon entropy? I say no, what do you say? If you a practical try them both on the plugin discussed in the next chapter.
Entropy plugin
The current entropy plugin is built upon a 8 bit alphabet and a simple Anteater assumption about the data of interest.
Now move to the entropy code base directory and look into entropy.h:
entropy
vi src/entropy.h
...
/* ========================================================================== */
/* ------------------------ USER CONFIGURATION FLAGS ------------------------ */
/* ========================================================================== */
#define ENT_NORM 1 // 1: Normalized entropy, 0: # bits
#define ENT_NBITS 8 // N bit word, vocabulary: 2^N
#define ENT_ALPHAD 0 // 1: print alphabet distribution in flow file
/* +++++++++++++++++++++ ENV / RUNTIME - conf Variables +++++++++++++++++++++ */
#define ENT_HPKTIG 0 // Ignore first N packets
#define ENT_HEAD 0 // Start word of entropy calc in packet payload
#define ENT_TAIL 1500 // Position in packet until entropy is calculated
#define ENT_THRESL 8 // Threshold for minimal payload length in flow
#define ENT_THRESH 8192 // Threshold for maximal payload length in flow
/* ========================================================================== */
/* ------------------------- DO NOT EDIT BELOW HERE ------------------------- */
/* ========================================================================== */
...
ENT_NORM
defines whether the entropy is normalized to 1
or denotes the number
of bits necessary to descripe the payload patter. ENT_NBITS
defines the number
of bits in a word and ENT_ALPHAD
enables the output of the total distribution in
the flow file. All theses parameters require recompilation. The following ones don’t.
ENT_HEAD
and ENT_TAIL
denote the start and the end position in the payload/packet to be added
into the statistical distribution. Comes in handy if certain uninteresting parts of each packet
should be excluded.
ENT_THRESL
and ENT_THRESH
denote the minimal and maximal length relative to ENT_HEAD
of the flow payload respectively. Hence, small flow which result in a bad estimation of
the entropy can be excluded. And all flows can be normalized to a maximum amount of words
in order to produce the same precision for the entropy estimation.
Note, that all variables below the ENV / RUNTIME
marker can be changed without compiling
or can be defined by environmental variables.
================================================================================ Tranalyzer 0.9.1 (Anteater), Cobra. PID: 30905, SID: 666 ================================================================================ [INF] Creating flows for L2, IPv4, IPv6 Active plugins: 01: basicFlow, 0.9.1 02: basicStats, 0.9.1 03: tcpStates, 0.9.1 04: entropy, 0.9.1 05: txtSink, 0.9.1 [INF] IPv4 Ver: 5, Rev: 09082023, Range Mode: 0, subnet ranges loaded: 481438 (481.44 K) [INF] IPv6 Ver: 5, Rev: 09082023, Range Mode: 0, subnet ranges loaded: 41486 (41.49 K) Processing file: /home/user/data/skypeu.pcap Link layer type: Ethernet [EN10MB/1] Snapshot length: 68 Dump start: 1146661308.742778000 sec (Wed 03 May 2006 13:01:48 GMT) [WRN] snapL2Length: 68 - snapL3Length: 54 - IP length in header: 60 Dump stop : 1146690263.003348000 sec (Wed 03 May 2006 21:04:23 GMT) Total dump duration: 28954.260570000 sec (8h 2m 34s) Finished processing. Elapsed time: 0.006818765 sec Finished unloading flow memory. Time: 0.006857837 sec Percentage completed: 100.00% Number of processed packets: 8656 (8.66 K) Number of processed bytes: 580072 (580.07 K) Number of raw bytes: 673514 (673.51 K) Number of pcap bytes: 718592 (718.59 K) Number of IPv4 packets: 8656 (8.66 K) [100.00%] Number of A packets: 4344 (4.34 K) [50.18%] Number of B packets: 4312 (4.31 K) [49.82%] Number of A bytes: 291096 (291.10 K) [50.18%] Number of B bytes: 288976 (288.98 K) [49.82%] <A packet load>: 67.01 <B packet load>: 67.02 -------------------------------------------------------------------------------- basicStats: Flow max(pktload): 11 basicStats: Flow max(b/s), pkts: 1797 (1.80 Kb/s), 2166 (2.17 K) basicStats: Biggest L3 flow talker: 192.168.201.243: 2178 (2.18 K) [25.16%] packets basicStats: Biggest L3 flow talker: 192.168.201.243: 25679 (25.68 K) [4.43%] bytes tcpStates: Aggregated tcpStatesAFlags=0x02 entropy: NValFlows, min, ave, max: 0, 0.989385, 0.989663, 0.989902 -------------------------------------------------------------------------------- Headers count: min: 3, max: 3, avg: 3.00 Number of TCP packets: 8656 (8.66 K) [100.00%] Number of TCP bytes: 580072 (580.07 K) [100.00%] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Number of processed flows: 4 Number of processed IPv4 flows: 4 [100.00%] Number of processed A flows: 2 [50.00%] Number of processed B flows: 2 [50.00%] Number of request flows: 2 [50.00%] Number of reply flows: 2 [50.00%] Total A/B flow asymmetry: 0.00 Total req/rply flow asymmetry: 0.00 Number of processed A+B packets/A+B flows: 2164.00 (2.16 K) Number of processed A packets/A flows: 2172.00 (2.17 K) Number of processed B packets/ B flows: 2156.00 (2.16 K) Number of processed total packets/s: 0.30 Number of processed A+B packets/s: 0.30 Number of processed A packets/s: 0.15 Number of processed B packets/s: 0.15 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <Number of processed flows/s>: 0.00 <Bandwidth>: 186 b/s <Snapped bandwidth>: 160 b/s <Raw bandwidth>: 186 b/s Max number of flows in memory: 2 [0.00%] Memory usage: 0.04 GB [0.05%] Aggregated flowStat=0x0400000a00004000 [WRN] L3 SnapLength < Length in IP header [WRN] L4 header snapped [INF] IPv4 flows
In the end report we can see an indication of possible encrypted payload as the overall minimal entropy is always higher
than 0.989. In the flow The other measures of text or binary are pretty low.
They would be higher if it were compressed. Now, look at the $avePktSize
, $pktps
, $bytps
and $pktAsm
columns…
Guys, this definitely looks like voice. Look at the (Encrypted) Traffic Mining - A Statistical Approach
tutorial to get more hints to help you decide whether these flows are encrypted voice or not.
tcol ~/results/skypeu_flows.txt
%dir flowInd flowStat timeFirst timeLast duration numHdrDesc numHdrs hdrDesc srcMac dstMac ethType vlanID srcIP srcIPCC srcIPOrg srcPort dstIP dstIPCC dstIPOrg dstPort l4Proto numPktsSnt numPktsRcvd numBytesSnt numBytesRcvd minPktSz maxPktSz avePktSize stdPktSize minIAT maxIAT aveIAT stdIAT pktps bytps pktAsm bytAsm tcpStatesAFlags PyldEntropy PyldChRatio PyldBinRatio
A 1 0x0400000a00004000 1146661308.742778000 1146661429.630237000 120.887459000 1 3 eth:ipv4:tcp 00:13:d4:f3:ab:dd 00:13:d4:f3:a9:53 0x0800 192.168.201.243 07 "Private network" 59189 192.168.201.242 07 "Private network" 51523 6 2178 2162 25679 25528 0 967 11.79017 25.51763 0 5.527808 0.0555039 0.1386972 18.01676 212.4207 0.003686636 0.002948816 0x02 0.9899017 0.3886364 0.04
B 1 0x0400000a00004001 1146661308.742876000 1146661429.630226000 120.887350000 1 3 eth:ipv4:tcp 00:13:d4:f3:a9:53 00:13:d4:f3:ab:dd 0x0800 192.168.201.242 07 "Private network" 51523 192.168.201.243 07 "Private network" 59189 6 2162 2178 25528 25679 0 562 11.80759 20.90248 0 5.48688 0.05591461 0.1394785 17.88442 211.1718 -0.003686636 -0.002948816 0x02 0.9893942 0.3752277 0.04553734
A 2 0x0400000a00004000 1146690149.215032000 1146690262.965388000 113.750356000 1 3 eth:ipv4:tcp 00:13:d4:f3:ab:dd 00:13:d4:f3:a9:53 0x0800 192.168.201.243 07 "Private network" 59189 192.168.201.242 07 "Private network" 51523 6 2166 2150 25565 25414 0 967 11.80286 25.57787 0 5.527773 0.05251632 0.1254197 19.0417 224.7466 0.003707136 0.002962004 0x02 0.9898577 0.3875686 0.04021938
B 2 0x0400000a00004001 1146690149.215081000 1146690263.003348000 113.788267000 1 3 eth:ipv4:tcp 00:13:d4:f3:a9:53 00:13:d4:f3:ab:dd 0x0800 192.168.201.242 07 "Private network" 51523 192.168.201.243 07 "Private network" 59189 6 2150 2166 25414 25565 0 562 11.82047 20.948 0 5.48683 0.0529248 0.1263116 18.89474 223.3446 -0.003707136 -0.002962004 0x02 0.9893849 0.375 0.04578755
Now let’s have a look at the distribution per flow. Switch on ENT_ALPHAD
, recompile and rerun T2.
t2conf entropy -D ENT_ALPHAD=1 && t2build entropy
t2 -r ~/data/skypeu.pcap -w ~/results
Now you see the distribution of the byte alphabet. Pretty even, right? Should be the same for perfect compression.
tcol ~/results/skypeu_flows.txt
%dir flowInd flowStat timeFirst timeLast duration numHdrDesc numHdrs hdrDesc srcMac dstMac ethType vlanID srcIP srcIPCC srcIPOrg srcPort dstIP dstIPCC dstIPOrg dstPort l4Proto numPktsSnt numPktsRcvd numBytesSnt numBytesRcvd minPktSz maxPktSz avePktSize stdPktSize minIAT maxIAT aveIAT stdIAT pktps bytps pktAsm bytAsm tcpStatesAFlags PyldEntropy PyldChRatio PyldBinRatio NumBin0 Corr PyldLen PyldHisto
A 1 0x0400000a00004000 1146661308.742778000 1146661429.630237000 120.887459000 1 3 eth:ipv4:tcp 00:13:d4:f3:ab:dd 00:13:d4:f3:a9:53 0x0800 192.168.201.243 07 "Private network" 59189 192.168.201.242 07 "Private network" 51523 6 2178 2162 25679 25528 0 967 11.79017 25.51763 0 5.527808 0.0555039 0.1386972 18.01676 212.4207 0.003686636 0.002948816 0x02 0.9899017 0.3886364 0.04 0 0 2200 7;8;12;8;8;14;6;7;9;9;7;13;6;10;15;7;5;9;4;7;10;7;8;8;13;14;6;6;8;8;6;8;13;10;13;4;9;9;13;10;9;4;7;7;9;8;9;10;10;9;11;5;6;9;13;11;7;2;7;13;10;8;11;8;9;11;7;4;7;7;7;9;6;4;3;10;6;12;9;10;8;14;8;15;14;9;9;6;10;12;6;14;16;8;8;8;9;6;9;9;9;8;8;5;9;7;5;9;7;10;6;10;8;9;8;10;12;4;7;7;13;9;9;9;6;6;12;13;7;4;9;4;7;10;7;4;12;8;13;13;7;10;10;10;8;12;8;5;10;12;9;9;10;12;3;6;11;7;10;3;8;4;10;8;2;11;8;9;8;9;7;6;10;13;10;9;8;6;11;9;6;10;8;9;11;7;5;3;10;6;7;15;7;2;14;7;10;6;9;6;10;6;17;7;8;9;12;11;5;16;3;9;9;9;9;9;8;7;7;6;9;9;8;12;6;9;10;9;11;7;10;6;6;7;7;15;9;12;4;3;11;9;9;6;13;15;12;11;7;9;4;9;8;7;8;11
B 1 0x0400000a00004001 1146661308.742876000 1146661429.630226000 120.887350000 1 3 eth:ipv4:tcp 00:13:d4:f3:a9:53 00:13:d4:f3:ab:dd 0x0800 192.168.201.242 07 "Private network" 51523 192.168.201.243 07 "Private network" 59189 6 2162 2178 25528 25679 0 562 11.80759 20.90248 0 5.48688 0.05591461 0.1394785 17.88442 211.1718 -0.003686636 -0.002948816 0x02 0.9893942 0.3752277 0.04553734 0 0 2196 13;9;9;7;9;13;10;12;7;11;5;2;7;5;10;15;11;11;12;6;12;8;10;12;5;9;9;13;6;7;5;15;5;13;10;12;10;10;9;11;12;7;6;9;7;14;6;8;16;8;7;3;5;5;12;8;6;9;9;8;13;10;11;10;13;5;2;8;9;7;10;7;9;7;7;3;8;7;10;7;6;4;7;9;9;10;10;8;16;10;7;4;8;11;10;14;15;9;7;8;7;13;11;8;8;9;3;11;5;3;11;7;12;10;5;10;7;9;4;10;10;11;7;7;7;7;5;7;8;8;8;9;12;6;8;12;7;12;12;9;10;9;10;5;9;11;9;9;9;7;5;7;8;9;4;6;9;10;4;7;2;10;9;10;7;10;8;6;10;6;8;10;13;8;12;12;5;4;5;12;8;11;4;11;5;9;10;11;7;9;7;6;9;6;9;12;4;12;8;7;7;10;12;8;10;11;15;16;13;5;12;5;5;11;6;5;10;12;3;7;12;8;11;7;10;4;10;11;12;3;8;4;4;9;9;9;14;5;6;9;9;7;8;13;12;7;11;6;12;5;9;9;7;9;9;6
A 2 0x0400000a00004000 1146690149.215032000 1146690262.965388000 113.750356000 1 3 eth:ipv4:tcp 00:13:d4:f3:ab:dd 00:13:d4:f3:a9:53 0x0800 192.168.201.243 07 "Private network" 59189 192.168.201.242 07 "Private network" 51523 6 2166 2150 25565 25414 0 967 11.80286 25.57787 0 5.527773 0.05251632 0.1254197 19.0417 224.7466 0.003707136 0.002962004 0x02 0.9898577 0.3875686 0.04021938 0 0 2188 7;8;12;8;8;14;6;7;9;9;7;13;6;10;15;7;5;9;4;7;10;7;8;8;13;14;6;6;8;8;6;8;12;10;13;4;9;9;13;10;9;4;7;7;9;8;9;10;10;9;11;5;6;9;12;11;7;2;7;13;10;8;11;8;9;11;7;4;7;7;7;9;6;4;3;10;6;12;9;10;8;14;8;15;14;9;9;6;10;12;6;14;16;8;7;8;9;6;9;9;9;7;8;5;9;7;4;9;7;10;6;10;8;9;8;10;12;4;7;7;12;9;9;8;6;6;12;13;7;4;9;4;7;10;7;4;12;8;13;13;7;10;10;10;8;12;7;5;10;12;9;9;9;12;3;6;11;7;10;3;8;4;10;8;2;11;8;9;8;9;7;6;10;13;10;9;8;6;11;9;6;10;7;9;11;7;5;3;10;6;7;15;7;2;14;7;10;6;9;6;10;6;17;7;8;9;12;11;5;16;3;9;9;9;9;9;8;7;7;6;8;9;8;12;6;9;10;9;11;7;9;6;6;7;7;15;9;12;4;3;11;9;9;6;13;15;12;11;7;9;4;9;8;7;8;11
B 2 0x0400000a00004001 1146690149.215081000 1146690263.003348000 113.788267000 1 3 eth:ipv4:tcp 00:13:d4:f3:a9:53 00:13:d4:f3:ab:dd 0x0800 192.168.201.242 07 "Private network" 51523 192.168.201.243 07 "Private network" 59189 6 2150 2166 25414 25565 0 562 11.82047 20.948 0 5.48683 0.0529248 0.1263116 18.89474 223.3446 -0.003707136 -0.002962004 0x02 0.9893849 0.375 0.04578755 0 0 2184 13;9;9;7;9;13;10;12;7;11;5;2;7;5;10;14;11;11;12;6;12;8;10;12;5;9;9;13;6;7;5;15;5;13;10;12;10;10;9;11;12;7;6;9;7;14;6;8;16;8;7;3;5;5;12;8;6;9;9;8;12;10;11;10;13;5;2;8;9;6;10;7;9;7;7;3;8;7;10;7;6;4;7;9;9;10;9;8;15;10;6;4;8;11;10;14;15;9;7;8;7;13;11;8;8;9;3;11;5;3;11;7;12;10;5;10;7;9;4;10;10;11;7;7;7;7;5;7;8;8;8;9;12;6;8;12;7;12;12;9;10;9;10;4;9;11;9;9;9;7;5;7;8;9;4;6;9;10;4;7;2;9;9;10;7;9;8;6;10;6;8;10;13;8;12;12;5;4;5;12;8;11;4;11;5;9;10;10;7;9;7;6;9;6;9;12;4;12;8;7;7;10;12;8;10;11;15;16;13;5;12;5;5;10;5;5;10;12;3;7;12;8;11;7;10;4;10;11;12;3;8;4;4;9;9;9;14;5;6;9;9;7;8;13;12;7;11;6;12;5;9;9;7;9;9;6
Let’s run the anonymized pcap annoloc2.pcap we had in earlier tutorials with the same configuration:
t2 -r ~/data/annoloc2.pcap -w ~/results
See? NValFlows
= 17564 in the end report, hence 17564 flows are not eligible to be fit for
entropy calculation, as we need minimum 256 bytes, actually more, see chapter above.
So if you look into the flow file you see 0 entries in the distribution, because the content was removed.
tcol ~/results/annoloc2_flows.txt
%dir flowInd flowStat timeFirst timeLast duration numHdrDesc numHdrs hdrDesc srcMac dstMac ethType ethVlanID srcIP srcIPCC srcIPOrg srcPort dstIP dstIPCC dstIPOrg dstPort l4Proto numPktsSnt numPktsRcvd numBytesSnt numBytesRcvd minPktSz maxPktSz avePktSize stdPktSize minIAT maxIAT aveIAT stdIAT pktps bytps pktAsm bytAsm tcpStatesAFlags PyldEntropy PyldChRatio PyldBinRatio PyldLen PyldHisto
A 265 0x0400000000004000 1022171701.709116 1022171701.709116 0.000000 1 3 eth:ipv4:tcp 00:d0:02:6d:78:00 00:50:fc:0e:21:56 0x0800 209.171.12.143 ca "TELUS Communications Inc" 4987 138.212.185.230 jp "ASAHI KASEI CORPORATION" 41250 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0xc3 -1 -1 -1 0 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
A 447 0x0400000000004000 1022171701.721366 1022171701.721366 0.000000 1 3 eth:ipv4:tcp 00:d0:02:6d:78:00 00:50:fc:3b:62:78 0x0800 217.41.129.13 gb "BT Infrastructure Layer" 58872 138.212.187.186 jp "ASAHI KASEI CORPORATION" 80 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0xc3 -1 -1 -1 0 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
A 392 0x0400000000004000 1022171701.716998 1022171701.716998 0.000000 1 3 eth:ipv4:tcp 00:d0:02:6d:78:00 00:50:bf:59:85:48 0x0800 36.242.181.230 jp "SoftBank Corp" 4685 138.212.188.67 jp "ASAHI KASEI CORPORATION" 1214 6 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x03 -1 -1 -1 0 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
...
If we extract all flows with payload and look at the distribution and the entropy. What kind of protocols do we have here?
tawk '$PyldLen > 256 || hdr()' ~/results/annoloc2_flows.txt | tcol
%dir flowInd flowStat timeFirst timeLast duration numHdrDesc numHdrs hdrDesc srcMac dstMac ethType ethVlanID srcIP srcIPCC srcIPOrg srcPort dstIP dstIPCC dstIPOrg dstPort l4Proto numPktsSnt numPktsRcvd numBytesSnt numBytesRcvd minPktSz maxPktSz avePktSize stdPktSize minIAT maxIAT aveIAT stdIAT pktps bytps pktAsm bytAsm tcpStatesAFlags PyldEntropy PyldChRatio PyldBinRatio PyldLen PyldHisto
A 2906 0x0400000200004000 1022171704.133733 1022171711.602997 7.469264 1 3 eth:ipv4:icmp 00:01:03:24:09:88 00:d0:02:6d:78:00 0x0800 138.212.187.74 jp "ASAHI KASEI CORPORATION" 0 200.196.92.46 br "CENTURYLINK COMUNICAÃÃES" 0 1 13 0 551 0 37 44 42.38462 2.667671 0 2.921851 0.5745587 0.8658533 1.740466 73.76898 1 1 0x00 0.6038611 0.3878205 0.2307692 312 52;0;0;0;0;0;0;16;3;1;3;3;0;0;0;0;0;13;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;3;5;4;0;0;4;0;10;0;13;0;0;0;1;1;1;0;0;0;0;0;0;0;0;0;0;4;4;5;0;0;0;13;0;0;0;0;14;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;13;0;0;0;0;0;1;0;0;0;0;0;0;0;1;1;1;0;0;0;0;0;0;0;13;0;0;0;0;0;0;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;13;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;1;14;0;0;0;1;1;1;0;0;13;0;0;0;13;0;0;0;0;0;0;0;3;3;4;3;13;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;1;1;0;0;0;1;1;1;0;0;0;0;13;0;0;0;0
A 4556 0x0400000200004000 1022171708.303627 1022171716.404597 8.100970 1 3 eth:ipv4:icmp 00:01:03:24:09:88 00:d0:02:6d:78:00 0x0800 138.212.187.74 jp "ASAHI KASEI CORPORATION" 0 206.134.241.215 us "Sprint" 0 1 14 0 588 0 37 44 42 2.921221 0 2.027147 0.5786408 0.8461995 1.728188 72.5839 1 1 0x00 0.6038085 0.2946429 0.1666667 336 56;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;14;14;0;0;0;0;0;0;1;1;1;1;0;0;0;1;0;1;1;0;1;4;4;3;1;1;5;1;10;0;3;4;17;4;3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;14;0;0;0;0;14;0;0;0;0;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;1;0;0;0;0;0;0;0;0;0;0;1;1;0;0;0;0;0;0;0;0;0;0;14;0;0;0;14;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;4;0;4;16;0;2;2;0;0;0;0;0;0;2;0;2;3;1;4;4;0;0;14;0;0;0;0;0;15;0;0;15;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;14;0;0;0;0;0;0;1;1;1;15;0;0;0;0
A 6408 0x0400000200004000 1022171714.250699 1022171720.304397 6.053698 1 3 eth:ipv4:udp 00:04:76:0f:59:7a 00:d0:02:6d:78:00 0x0800 138.212.191.105 jp "ASAHI KASEI CORPORATION" 2270 215.47.27.47 us "Network DoD" 53 17 25 25 941 941 37 38 37.64 0.4626157 0 3.933408 0.242148 0.8190154 4.129707 155.4422 0 0 0x00 0.2460202 0.07333333 0.8366666 300 225;25;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;1;0;0;1;0;1;0;0;1;1;1;1;1;0;0;0;0;1;0;0;0;1;0;0;0;1;1;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;1;0;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;2;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;1;0;1;0;0;0;0;0;1;0;1;0;0;0;0;0;1;0;0;0;0;0;1;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;1;0;1;0;0;0;1;2;0;0;0;0;1;0;0;0;0;0;1;0;0;0;0;0;0;0;1;1;1;0;0;1;0;1;1;0;0;0;0
B 6408 0x0400000200004001 1022171714.336366 1022171720.389966 6.053600 1 3 eth:ipv4:udp 00:d0:02:6d:78:00 00:04:76:0f:59:7a 0x0800 215.47.27.47 us "Network DoD" 53 138.212.191.105 jp "ASAHI KASEI CORPORATION" 2270 17 25 25 941 941 37 38 37.64 0.4626157 0 3.932915 0.242144 0.8189598 4.129774 155.4447 0 0 0x00 0.2460201 0.07333333 0.7533333 300 225;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;1;0;0;1;0;1;0;0;1;1;1;1;1;0;0;0;0;1;0;0;0;1;0;0;0;1;1;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;1;0;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;2;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;1;25;0;0;0;0;0;0;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;1;0;1;0;0;0;0;0;1;0;1;0;0;0;0;0;1;0;0;0;0;0;1;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;1;0;1;0;0;0;1;2;0;0;0;0;1;0;0;0;0;0;1;0;0;0;0;0;0;0;1;1;1;0;0;1;0;1;1;0;0;0;0
A 4181 0x0400000200004000 1022171707.217208 1022171722.726327 15.509119 1 3 eth:ipv4:udp 00:50:da:37:f6:03 00:d0:02:6d:78:00 0x0800 138.212.191.75 jp "ASAHI KASEI CORPORATION" 1040 138.212.18.252 jp "Asahi Kasei Networks Corporati" 53 17 44 45 1892 8034 40 52 43 4.329031 0 13.95775 0.35248 2.047415 2.837041 121.9927 -0.01123596 -0.6187789 0x00 0.2352592 0 0.842803 528 353;89;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;39;5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;1;1;1;1;1;1;1;1;1;1;1;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1
...
So, that’s it for now. Try the pcap faf-exercise.pcap and find out whether it is encrypted or compressed content.
Conclusion
The entropy plugin will evolve in the future, as not everything trick of the Anteater is not implemented yet. Don’t forget to reset entropy config.
t2conf --reset entropy && t2build entropy
Have fun!