基于统计学的c2流量检测

up:: [[ Blue Team能力建设 ]]-命令与控制 Command and Control

  • 基础统计学知识

    • 中位数
      • 中位数是想要表示一个数据集中间位置的数据。
        • 比如一组数字 (1, 1, 2, 2, 4, 6, 9) 的中位数为 2
    • 绝对中位差
      • 中位数是想要表示一个数据集中间位置的数据,那么每个数据与中位数的差值,反映了这些数据偏离中间位置的程度,在这个偏离程度中取中位数得到的就是绝对中位差。
            比如一组数字 (1, 1, 2, 2, 4, 6, 9) 的中位数为 2
            这组数字相对于2的偏差为:(1, 1, 0, 0, 2, 4, 7),中位数为 1
            所以绝对中位差为 1
        
    • 偏度
      • 衡量随机变量概率分布的不对称性,是相对于平均值不对称程度的度量,通过对偏度系数的测量,我们能够判定数据分布的不对称程度以及方向。
      • 偏度的衡量是相对于正态分布来说,正态分布的偏度为0,即若数据分布是对称的,偏度为0。若偏度大于0,则分布右偏(正偏度),即分布有一条长尾在右;若偏度小于0,则分布为左偏(负偏度),即分布有一条长尾在左(如上图);同时偏度的绝对值越大,说明分布的偏移程度越严重。
  • C2流量vs正常流量

  • 假设beacon的配置为: | Sleep时间 | jitter | 实际sleep时间 | | — | ———– | — | | 300s|20%|240s~360s|
    • 访问的时间间隔为240s-360s
  • 假设正常用户随机浏览相同网页
    • 访问的时间间隔为60s-600s
    • 基于上述的假设和统计学知识,可以画出图:
    • beacon中位数(Median): 319
    • 正常用户中位数(Median): 236
    • beacon绝对中位差(MAD): 21
    • 正常用户绝对中位差(MAD): 95
  • 可以得出结论:
    • beacon:偏正态分布,绝对中位差比较小
    • 正常用户:偏正/负偏度分布,绝对中位差比较大
  • 参考RITA (Real Intelligence Threat Analytics)的算法,通过请求的时间间隔和数据包大小的统计信息,得出可疑的C2的请求:
    • 偏度
    • 绝对中位差
    • 频率
  • 来源

    • https://infosecjupyterthon.com/2021/sessions/day2-5-C2_Beaconing_Detection_using_Statistical_Analysis.html

Notes mentioning this note