Tutorial: Entropy et al

Description

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

Before we start we need to prepare T2. If you did not complete the tutorials before just follow the procedure described below.

First I recommend to set T2 into a pristine state by removing all unnecessary or older plugins from the plugin folder ~/.tranalyzer/plugins and compile the standard plugins. Just as a precaution if you have some old plugins or files there. If you like to keep them, please copy them away.

$ t2build -e
Are you sure you want to empty the plugin folder '/home/wurst/.tranalyzer/plugins' (y/N)? y
Plugin folder emptied
$ t2build tranalyzer2 basicFlow basicStats tcpStates entropy txtSink
...
BUILD SUCCESSFUL

$

Compiling the basicFlow took now a bit longer, because the subnet file for geolocation had to rebuilt. Moreover the ‘-e’ option also removes all subnet files.

$ mkdir ~/data ~/results
$ cd data

Download the sample pcap if did not do it already: skypeu.pcap. Now you’re 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 layer7 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 ome 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 sqared, which is worse.

n0^2 which evaluated for english text, alphabet 36, in the area of 10^-8. So in our case wy 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:

  1. text based output
  2. binary protocol content, e.g. bitfied, or number based, where all numbers can appear
  3. encrypted content

Let’s assume for 1 & 2 we have an easy measure which works in practise, such as the ratio of certain character ditribution. Now let’s focus on 3. Now we scrap zipfs 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 everdays 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 distibution 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 practise you may apply a threshold to the resulting entropy, which is close enough to 1. If the samples are really random and uniq, then you might come down to 10^1. But if you are only interested in a rough estimate. Otherwise you need minumum 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; cd src
$ ls
entropy.c  entropy.h  Makefile.am
$ cat entropy.h 
...
/ user defines
#define ENT_OFFSET  0         // start of entropy calc in payload
#define ENT_THRESL  256       // threshold for minimal payload length
#define ENT_THRESH  UIN32MAX  // threshold for maximal payload length
#define ENT_ALPHAD  0         // 1: print Alphabet distribution in flow file

...
$

ENT_OFFSET denotes the start of the payload to be added into the statistical distribution. To be used if you know that the protocol content of interest starts at a certain position.

ENT_THRESL and ENT_THRESH the minimal and maximal length relative to ENT_OFFSET of the payload respectively. To be used if you want from each packet in a flow a certain chunk to be extracted.

$ t2 -r ~/data/skypeu.pcap -w ~/results
================================================================================
Tranalyzer 0.8.8 (Anteater), Tarantula. PID: 46013
================================================================================
[INF] Creating flows for L2, IPv4, IPv6
Active plugins:
    01: basicFlow, 0.8.8
    02: basicStats, 0.8.8
    03: tcpStates, 0.8.8
    04: entropy, 0.8.8
    05: txtSink, 0.8.8
[INF] IPv4 Ver: 5, Rev: 01022020, Range Mode: 0, subnet ranges loaded: 389458 (389.46 K)
[INF] IPv6 Ver: 5, Rev: 01022020, Range Mode: 0, subnet ranges loaded: 49429 (49.43 K)
Processing file: /home/wurst/data/skypeu.pcap
Link layer type: Ethernet [EN10MB/1]
Dump start: 1146661308.742778 sec (Wed 03 May 2006 13:01:48 GMT)
[WRN] snapL2Length: 68 - snapL3Length: 54 - IP length in header: 60
Dump stop : 1146690263.003348 sec (Wed 03 May 2006 21:04:23 GMT)
Total dump duration: 28954.260570 sec (8h 2m 34s)
Finished processing. Elapsed time: 0.045413 sec
Finished unloading flow memory. Time: 0.045468 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%]
Average A packet load: 67.01
Average B packet load: 67.02
--------------------------------------------------------------------------------
basicStats: Biggest L3 Talker: 192.168.201.243: 2178 (2.18 K) [25.16%] packets
basicStats: Biggest L3 Talker: 192.168.201.243: 169435 (169.44 K) [29.21%] bytes
tcpStates: Aggregated tcpStates anomalies: 0x02
entropy: NValFlows, Min, Average, Max entropy: 0, 0.989385, 0.989663, 0.989902
--------------------------------------------------------------------------------
Headers count: min: 3, max: 3, average: 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 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   packets/flows: 2164.00 (2.16 K)
Number of processed A packets/flows: 2172.00 (2.17 K)
Number of processed B packets/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 average processed flows/s: 0.00
Average full raw bandwidth: 186 b/s
Average snapped bandwidth : 160 b/s
Average full bandwidth : 186 b/s
Max number of flows in memory: 2 [0.00%]
Memory usage: 0.01 GB [0.02%]
Aggregate flow status: 0x0400000a00004000
[WRN] L3 SnapLength < Length in IP header
[WRN] L4 header snapped
[INF] IPv4 flows
$

Look at the entropy, being higher than 0.96, so probable encrypted payload. The other measures of text or binary are pretty low. They would be higher if it is compressed and look at the $avePktSize, $pktps, $bytps and $pktAsm. Guys, this definetely looks like voice. Look at traffic mining:statistical approach to get more hints to decide whether these flows are encrypted voice or not.

$ tcol skypeu_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        tcpStates  PyldEntropy  PyldChRatio  PyldBinRatio
A     1        0x0400000a00004000  1146661308.742778  1146661429.630237  120.887459  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    22.55494    0       5.527808  0.0555039   0.129254   18.01676  212.4207  0.003686636   0.002948816   0x02       0.9899017    0.3886364    0.04
0B     1        0x0400000a00004001  1146661308.742876  1146661429.630226  120.887350  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    18.31722    0       5.48688   0.05591462  0.1280218  17.88442  211.1718  -0.003686636  -0.002948816  0x02       0.9893942    0.3752277    0.04553734
A     2        0x0400000a00004000  1146690149.215032  1146690262.965388  113.750356  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    22.60563    0       5.527773  0.05251632  0.1148439  19.0417   224.7466  0.003707136   0.002962004   0x02       0.9898577    0.3875686    0.04021938
B     2        0x0400000a00004001  1146690149.215081  1146690263.003348  113.788267  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    18.35375    0       5.48683   0.0529248   0.1134736  18.89474  223.3446  -0.003707136  -0.002962004  0x02       0.9893849    0.375        0.04578755
$

Now let’s have a look at the distribution püer 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 skypeu_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        tcpStates  PyldEntropy  PyldChRatio  PyldBinRatio  PyldLen  PyldHisto
A     1        0x0400000a00004000  1146661308.742778  1146661429.630237  120.887459  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    22.55494    0       5.527808  0.0555039   0.129254   18.01676  212.4207  0.003686636   0.002948816   0x02       0.9899017    0.3886364    0.04          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.742876  1146661429.630226  120.887350  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    18.31722    0       5.48688   0.05591462  0.1280218  17.88442  211.1718  -0.003686636  -0.002948816  0x02       0.9893942    0.3752277    0.04553734    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.215032  1146690262.965388  113.750356  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    22.60563    0       5.527773  0.05251632  0.1148439  19.0417   224.7466  0.003707136   0.002962004   0x02       0.9898577    0.3875686    0.04021938    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.215081  1146690263.003348  113.788267  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    18.35375    0       5.48683   0.0529248   0.1134736  18.89474  223.3446  -0.003707136  -0.002962004  0x02       0.9893849    0.375        0.04578755    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 annonymized pcap annoloc2.pcap we had in earlier tutorials with the same configuration:

$ t2 -r ~/data/annoloc2.pcap -w ~/results
================================================================================
Tranalyzer 0.8.8 (Anteater), Tarantula. PID: 46036
================================================================================
[INF] Creating flows for L2, IPv4, IPv6
Active plugins:
    01: basicFlow, 0.8.8
    02: basicStats, 0.8.8
    03: tcpStates, 0.8.8
    04: entropy, 0.8.8
    05: txtSink, 0.8.8
[INF] IPv4 Ver: 5, Rev: 01022020, Range Mode: 0, subnet ranges loaded: 389458 (389.46 K)
[INF] IPv6 Ver: 5, Rev: 01022020, Range Mode: 0, subnet ranges loaded: 49429 (49.43 K)
Processing file: /home/wurst/data/annoloc2.pcap
Link layer type: Ethernet [EN10MB/1]
Dump start: 1022171701.691172 sec (Thu 23 May 2002 16:35:01 GMT)
0[WRN] snapL2Length: 54 - snapL3Length: 40 - IP length in header: 1500
Dump stop : 1022171726.640398 sec (Thu 23 May 2002 16:35:26 GMT)
Total dump duration: 24.949226 sec
Finished processing. Elapsed time: 0.686268 sec
Finished unloading flow memory. Time: 0.883031 sec
Percentage completed: 100.00%
Number of processed packets: 1219015 (1.22 M)
Number of processed bytes: 64082726 (64.08 M)
Number of raw bytes: 844642686 (844.64 M)
Number of pcap bytes: 83586990 (83.59 M)
Number of IPv4 packets: 1218608 (1.22 M) [99.97%]
Number of IPv6 packets: 160 [0.01%]
Number of A packets: 564232 (564.23 K) [46.29%]
Number of B packets: 654783 (654.78 K) [53.71%]
Number of A bytes: 29448132 (29.45 M) [45.95%]
Number of B bytes: 34634594 (34.63 M) [54.05%]
Average A packet load: 52.19
Average B packet load: 52.89
--------------------------------------------------------------------------------
basicStats: Biggest L2 Talker: 00:d0:02:6d:78:00: 57 [0.00%] packets
basicStats: Biggest L2 Talker: 00:d0:02:6d:78:00: 3420 (3.42 K) [0.01%] bytes
basicStats: Biggest L3 Talker: 138.212.189.38 (JP): 23601 (23.60 K) [1.94%] packets
basicStats: Biggest L3 Talker: 138.212.189.38 (JP): 35005508 (35.01 M) [54.63%] bytes
tcpStates: Aggregated tcpStates anomalies: 0xdf
entropy: NValFlows, Min, Average, Max entropy: 17550, 0.235259, 0.501785, 0.638390
--------------------------------------------------------------------------------
Headers count: min: 2, max: 4, average: 3.01
Number of GRE packets: 247 [0.02%]
Number of IGMP packets: 12 [0.00%]
Number of ICMP packets: 3059 (3.06 K) [0.25%]
Number of ICMPv6 packets: 11 [0.00%]
Number of TCP packets: 948743 (948.74 K) [77.83%]
Number of TCP bytes: 52643546 (52.64 M) [82.15%]
Number of UDP packets: 266900 (266.90 K) [21.89%]
Number of UDP bytes: 11234272 (11.23 M) [17.53%]
Number of IPv4 fragmented packets: 2284 (2.28 K) [0.19%]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Number of processed   flows: 17589 (17.59 K)
Number of processed A flows: 9980 (9.98 K) [56.74%]
Number of processed B flows: 7609 (7.61 K) [43.26%]
Number of request     flows: 9933 (9.93 K) [56.47%]
Number of reply       flows: 7656 (7.66 K) [43.53%]
Total   A/B    flow asymmetry: 0.13
Total req/rply flow asymmetry: 0.13
Number of processed   packets/flows: 69.31
Number of processed A packets/flows: 56.54
Number of processed B packets/flows: 86.05
Number of processed total packets/s: 48859.83 (48.86 K)
Number of processed A+B packets/s: 48859.83 (48.86 K)
Number of processed A   packets/s: 22615.21 (22.61 K)
Number of processed   B packets/s: 26244.62 (26.24 K)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Number of average processed flows/s: 704.99
Average full raw bandwidth: 270835712 b/s (270.84 Mb/s)
Average snapped bandwidth : 20548206 b/s (20.55 Mb/s)
Average full bandwidth : 270268576 b/s (270.27 Mb/s)
Max number of flows in memory: 15206 (15.21 K) [5.80%]
Memory usage: 0.07 GB [0.10%]
Aggregate flow status: 0x0c0098fa0202d044
[WRN] L3 SnapLength < Length in IP header
[WRN] L4 header snapped
[WRN] Consecutive duplicate IP ID
[WRN] IPv4/6 payload length > framing length
[WRN] IPv4/6 fragmentation header packet missing
[WRN] IPv4/6 packet fragmentation sequence not finished
[INF] Ethernet flows
[INF] IPv4 flows
[INF] IPv6 flows
[INF] ARP
[INF] IPv4/6 fragmentation
[INF] IPv4/6 in IPv4/6
[INF] GRE encapsulation
[INF] SSDP/UPnP

See? NValFlows= 17550 in the end report, hence 17550 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_flow.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  tcpStates  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
...

And if we extract all flows with payload and look at the distribution and the entropy. What kind of protocols do we have here?

$ tawk '{if ($PyldLen > 256) print}' 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  tcpStates  PyldEntropy  PyldChRatio  PyldBinRatio  PyldLen  PyldHisto
A    2905     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    4554     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    6401     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    6401     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
...

So, that’s it for now. Try the pcap faf-exercise.pcap and find out whether it is encrypted or complessed content.

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 entropy -D ENT_ALPHAD=0
$ t2build entropy
...
$

Have fun!