基于流量的协议分析

时间:2022-06-01 18:34:46

Background

做了差不多两个星期的流量分析,以为后面可以安稳的做research,结果组里来了一个项目,就把我扔过去做项目了。这就是实验室的本质,哪里缺人,你就去哪里填坑;这也是国内硕士生教育的现状吧,廉价劳动力,不用白不用。
虽然说仅仅是两个星期的research,怎么说呢,对research还是有了比较感观的认识吧。虽然之前也看了不少论文,但是之前看的目的都是为了学习更多的算法,而这次是要定位到解决问题,要发文章,所以感觉是不一样的。

Introduction

大概说一下想要解决的问题,对于抓取的流量进行分析。这个抓取,最简单的办法就是通过wireshark自己抓点流量来分析一下。所谓的分析,主要是对应用层的协议进行分析。
至于这样分析流量中的应用层协议有什么用呢?其实我也不太了解,但是每一篇论文中都会牵强附会的扯一些,至少我是这样认为。大概就是可以用于网络安全;可以为网络基础服务商提供一些分析的功能,比如说基础服务商希望知道在其设备上各种流量的情况,好让其能够合理的分配设备资源;还有一种说法是,希望能从流量中解析出相关的内容,这个应该也需要知道流量中的协议吧?
虽然说总能找到理由应用流量分析,但是我个人认为目前做的这些方法,基本上不可用,所以我认为已经发表的那些文章中说的那些用途都是扯淡的。

Problem Definition

目前,从我个人对这个领域的了解来看,也许只是一小部分哈,主要存在以下几个问题可以做:

  • 对于混杂流量,如何快速的作出流量分类。目前来说存在很多端口混用的情况,之前做的研究都是基于单一流量假设,所以如何对混杂流量进行快速的分类,这是目前亟须解决的问题,也是目前解决的不好的问题。
  • 如何发现协议中的关键字,其实希望做到的是识别协议的格式。因为随着互联网越来越普及,肯定有越来越多的自定义应用协议,如果能快速的发现流量中本身存在的协议,当然非常好了。
  • 对于上面的几个问题,如何做到快速、通用、可行,是如今面临的非常大的问题。

Reading Summary

在这比较短暂的两周时间内,读了一些论文,但是不多,然后主要是在做实验,验证自己的想法。虽然后来没有继续做了,但是感觉还是不错,虽然不知道最后会做成什么样子,但是做研究就是这样,不可能一蹴而就,需要不断的尝试和探索,所以对毅力是个考验。
下面会对阅读过的论文中的思路做一个brief summary,以便memorize俺也是做过的。

  1. A Semantics Aware Approach to Automated Reverse Engineering Unknown Protocols
    这篇文章是我看的第一篇文章吧,收获还是蛮大的。

    这篇文章思路其实挺新鲜的,分为四个step吧:首先将message切分成n-gram;那么如果把message看成document,那么就变成document->(words)的模型了,这样使用LDA进行降维,也就是每一篇文档都表示成了k维的向量;使用message的k维向量进行层次聚类,希望把具有相同命令字或者格式的message聚到一个类下面;然后在一个类下面进行对齐,希望能借此发现protocol format或者command word。

    这篇文章的思路挺新颖的,将lda引入进来,但是其最大的问题就是太慢了,lda和最后一步的对齐都很慢。

  2. TPCAD:一种文本类多协议特征自动发现方法
    这篇文章也是属于看的比较早的一篇文章,没怎么仔细看,其主要做的是识别文本类流量中协议特征

  3. Toward Unsupervised Protocol Feature Word Extraction
    这篇文章的做法也是比较新颖的,希望通过分词的方法来识别流量中的命令字。

    具体做法记得不是很清楚了,分成了两步:首先使用Voting Experts算法进行无监督分词,VE算法是假设有两种专家在投票,一类专家说这些字符应该成为一个词,另一个专家用于判断词边界,然后根据滑动窗口的投票情况,确定词边界;然后根据一些先验的rule指定term打分机制,希望ranking之后排在前面的确实是command key word,主要考虑采用的先验知识有term frequency、location和length。

  4. Clustering botnet communication traffic based on n-gram feature selection

    这篇文章的做法是统计流量中的n-gram分布情况,其假定认为同一类流量中n-gram的分布具有自己的分布特征,而不同的流量中n-gram的分布是不同的。
    基于上面的假设,其可以使用分类或聚类的方法,来detect僵尸网络。

之前还看了一些其他文章,后面得空了会再整理一下更新这篇博客。