为了保证sebek的通用性,在sebek 3中使用了一个重新设计的新协议,不兼容旧版本。数据包使用UDP通道,且只能 由客户端发送给服务端。
当发生read()系统调用的时候,sebek将会记录ppid,pid,uid,fd,inode和com等信息。
sebek v3的56字节头结构如下(本表转自Sebek 3: tracking the attackers, part one ):
相关定义如下:
代码中字段的解释:
magic:前半部分是目标端口,后半部分是magic value,当其他主机检测到magic value的时候就丢弃数据包。
ver:sebek协议版本,这里定义为3。
type:记录的类型,读为0,写为1,socket为2,open为3。
counter:PDU counter,用于给数据包计数,防止丢失包。
time_sec:时间信息,基于系统时间,可以被篡改。
time_usec:剩余的时间(微秒)
parent_pid:v3中新增的字段,PPID
pid:进程ID
uid:用户ID
fd:文件描述符
inode:v3中新增的字段,文件索引信息。
com:记录命令的前N个字符,N=12
length:PDU实体的长度