HackPluto's Blog

基于机器学习的TLS恶意流量监测

字数统计: 676阅读时长: 2 min
2020/07/27 Share

恶意流量监测及特征提取

环境配置

实验环境:Ubuntu 18.04 64位

tshark

1
2
3
sudo add-apt-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install tshark

bro/zeek

网上有的教程说用apt直接装,经过验证这样的方法无法使用bro-cut,所以我使用源码编译的方式
参考链接

Joy

1
2
3
4
5
sudo apt-get install build-essential libssl-dev libpcap-dev libcurl4-openssl-dev
git clone https://github.com/cisco/joy.git
cd joy
./configure
make clean;make

工具使用

zeek/bro

bro log文件字段解释

https://try.zeek.org/#/?example=hello

分析过程

下载数据集

脚本

这个脚本中一些语法是python 3.6之后新加入的,所以一些代码在运行在老版本的python3上需要调整

批量解压

1
ls *.zip | xargs -n1 unzip -o -P infected

生成log文件

使用这两个shell文件生成日志文件,负责从pcap文件中提取、保存TLS流量,并分析TLS流量的元信息,如IP地址、域名、证书、报文长度和时间间隔等

将basic-tshark-joy-bro-tls.sh中的PATH改为自己环境中的joy/bin目录,将tls-flows.sh中的PATH改为shell文件的目录

1
2
basic-tshark-joy-bro-tls.sh:export PATH=$PATH:/home/pluto/joy/bin
tls-flows.sh:export PATH=$PATH:/home/pluto/desktop/Malicious_TLS_Detection-branch

运行tls-flows.sh文件

1
./tls-flows.sh files

运行结束后针对每一个pcap生成了一个文件夹

根据shell文件中的脚本,生成的日志文件大部分是bro生成的,接下来对对应的文件和关键字段进行解释

分析日志文件

conn.log 会话记录

会话记录实际上对应着netflow信息,将五元组(源ip、源端口、目标ip、目标端口、协议)相同的会话创建一个记录,tcp流量会根据正常挥手或rst来结束记录udp/icmp则是根据超时来结束记录

  • 第一个数据包时间 ts
  • 源ip id.orig_h
  • 源端口id.orig_p
  • 目标ip:id.resp_h
  • 目标端口id.resp_p
  • 协议proto
  • 服务service
  • 连接时间 duration
  • 发送字节数 orig_bytes
  • 接受字节 resp_bytes
  • 连接状态 conn_state

http.log http协议解析日志

一些字段与conn中的重复不再解释

  • method 请求模式
  • host 主机
  • uri 地址
  • referrer 来源
  • user_agent ua标识
  • request_body_len 请求体长度
  • response_body_len响应体长度
  • status_code 响应状态码
  • username/password 401认证用户名与密码
  • orig_mime_types MIME类型
  • post_body post请求数据

ssl.log SSL协议解析日志

  • version SSL版本
  • cipher加密算法
  • server_name 服务器名称

dns.log dns请求与响应

制作标签并提取特征

参考代码

配置数据集路径

打开./feature_extract/config.cfg,将路径更改为数据集目录

参考链接:

https://github.com/HeGaofeng

https://www.secpulse.com/archives/73882.html

CATALOG
  1. 1. 恶意流量监测及特征提取
    1. 1.1. 环境配置
      1. 1.1.1. tshark
      2. 1.1.2. bro/zeek
      3. 1.1.3. Joy
    2. 1.2. 工具使用
      1. 1.2.1. zeek/bro
    3. 1.3. 分析过程
      1. 1.3.1. 下载数据集
      2. 1.3.2. 生成log文件
      3. 1.3.3. 分析日志文件
      4. 1.3.4. 制作标签并提取特征
        1. 1.3.4.1. 配置数据集路径
    4. 1.4. 参考链接: