PULSAR(1)---简介与配置安装

简介

PULSAR是基于python开发的,用于自动协议学习以及模拟的工具。可以将某协议的流量作为输入,通过机器学习的方法比如聚类分析以及HMM,对协议进行建模,而所建立的模型则包括了Message format以及Protocol states(具体生成模型的方法会在后续讲到)。之后还可以利用生成的模型对协议进行模糊测试。是Github是的项目,其中有一些介绍,但是个人在安装配置的时候,由于需要几个其他模块的支持,为了更清晰地了解各个模块的作用,故作此记录。

环境搭建

搭环境真的是一件很需要耐心的事情,淡定淡定。
包含的主要模块:
- derrick
- sally
- prisma
- cuckoo
还有一些其他依赖包:
- R
- pygraphviz
- python-Levenshtein
- mergecap

当然这些模块肯定有一些必须的包来支持他的工作QAQ,让人头大/(ㄒoㄒ)/~~

记录下每个模块的作用,感觉日后实验可能会用到。

sally

Sally是一个可以将字符串转换到向量空间的工具。字符串会以一个特征集为特征来标识,Sally支持bytes,tokens(words),n-grams of bytes 以及n-grams of tokens。每一个特征都对应一维,其实就是在字符串里面去匹配这些特征,然后根据相应的规则产生一个对应的值最后经过标准化就生成了一个基于这些特征的向量。
而生成的特征向量中,binary or TF-IDF values can be computed and stored in the vectors.(TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。用TF乘以IDF得到一个TFIDF值)

示例:
binary输出结果向量:
189919::1,678234::1,925154::-1,1657927::-1,3556184::1 # line0
256751::1,603964::-1,1819896::-1,2572331::-1,3405860::1 # line1
189919::1,1233661::-1,1623474::-1,1708555::-1,2100331::-1,2115331::-1,2859113::1 # line2
TFIDF输出结果向量:
277517::0.25,602250::0.25,652485::0.25,812793::0.25,998975::0.25,1337889::0.25,1561162::0.25,1648404::0.25,1781250::0.25,1931886::0.25,2121662::0.25,3144505::0.25,3227817::0.25,3449783::0.25,3769490::0.25,3976048::0.25 # line0
114653::0.316228,466514::0.316228,652485::0.316228,1184421::0.316228,2540465::0.316228,2663199::0.316228,3227817::0.316228,3462919::0.316228,3604294::0.316228,4079120::0.316228 # line1
得到了这样子的向量如何使用?以及详细的转换过程我也没有弄清楚,作者并没有写出很详细的介绍,也可能自己理解能力不足,由于时间有限,只能留待日后补充。
翻看之余又发现了一个好工具,Harry,这个的介绍还是很清楚的,用来计算字符串之间的相似度,这里先mark一下。

Sally安装:

Dependencies:
- zlib >= 1.2.1 (http://www.zlib.net/)
- libconfig >=1.3.2 - (http://www.hyperrealm.com/libconfig/)
- libarchive >= 3.1.2 (http://libarchive.github.com/)
Ubuntu packages:
gcc,libz-dev,libconfig8-dev,libarchive-dev
Development packages: automake,autoconf,libtool

安装的话还是比较简单的,先安装上面的一些支持库和模块,然后:

$ ./bootstrap       
$ ./configure [options]
$ make
$ make check
$ make install
【options】
--prefix=PATH        Set directory prefix for installation

Derrick

Derrick是一个简单的用来记录TCP和UDP数据流的工具,类似于tcpflow和wireshark。
Derrick专门设计用来监控应用层通信,它将数据以line-based 文本格式记录下来,每一行都是一个TCP或者UDP payload,并且TCP会话的载荷会使用Libnids进行重组(re-assemble),并且可以进行混合以及截短,如此忽略掉下一层网络层的细节,而UDP的负载会按照原样记录。一般的Unix工具都可以直接使用记录的结果,甚至可以直接使用 netcat 来replay。

输出格式如下:

 TIME   FLAG  SRC   DST   PAYLOAD

- TIME : 表示payload时间,以标准UNIX时间给出,并且以秒数的浮点形式表示;
- FLAG : 表示payload的类型,“u” 和“t” 代表分别代表UDP和TCP,“+”,“-” 分别表示开始和结束;
- SRC : 表示source ,以IP :PORT形式给出;
- DST:表示destination ,以IP :PORT形式给出;
- PAYLOAD : 表示payload,不可打印字符会使用URI进行编码,每一个不可打印字符都用%XX(XX是字符的ASCII码)代替。

Derrick安装:

Dependencies
  - libpcap-1.1.1
  - libnet-1.1.4
  - libnids-1.23
Ubuntu packages: 
libz-dev libpcap-dev libnet1-dev libnids-dev
(Development packages: automake, libtool) 

安装跟Sally安装相同,不做介绍了。

其实Derrick就是专门开发的针对自己需求的一个工具,针对应用层的TCP和UDP数据流,以及TCP的重组。

PRISMA

至于PRISMA就不说太多了,因为并不能说清楚。。。细节方面还需要慢慢研究,是PULSAR团队(应该是一个团队吧)11年的作品,也是用于协议推断和状态机分析的。
PRISMA的安装有点不一样,是基于R语言的。首先我们需要安装R环境(更新到最新),可以直接:

apt-get install r-base

然后进入R环境(输入R,‘Enter’即可),本来可以通过install.packages(‘package name’)来安装需要的包,但是并没有找到合适安装源,所以下载下来本地安装:

install.packages(【path】)

安装成功后,可以通过library(PRISMA)选择包,example(PRISMA)来运行例子。

结束语
这部分先写这么多,还有很多没弄清楚,后续将会进一步补充记录下来。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值