1
xucancan 283 天前
可以用 strace 实现一个小工具
|
2
lechain 283 天前 2
你是不是在寻找 ebpf ?/doge
|
3
Supershell OP @xucancan strace 确实可以实现这样的功能,通过跟踪进程的流量日志,我想实现的是从流量特征定位具体进程,strace 所有进程我先去研究一下,感谢提示。还有一个工具可能跟 strace 相似,不过梗简便,就是 yara 。
|
4
en1ac 283 天前
有个叫 zeek 的流量分析工具,可以通过写 lua 脚本来进行流量分析
|
5
dode 283 天前
hook linux 系统 dns 接口
|
6
mawen0726 283 天前
iftop 能监听流量,看到是什么 ip 什么端口的流量,不知道适不适合你的场景
|
8
c5QzzesMys8FudxI 283 天前
@Supershell yara 可以吗?我咋感觉 yara 不行。
|
9
xucancan 283 天前 1
@Supershell 个人的浅薄理解仅供参考
到了网络传输层面操作系统的进程信息是丢失的,举个例子,从路由器层面可以观测到主机哪个主机对哪些域名进行访问( dns 查询数据是明文的),但不包含进程相关的信息,因为网络通讯和进程属于两个不同的域,上下文是不互通的,也确实不需要 横向比较,题主目的有点像 GFW 识别翻墙流量,有从流量特征层面识别的方法,例如 LTS in LTS 的包长度特征,或者代理协议的握手特征,但这都是基于“明确证明目标”的,但对于你的场景可能问题都无法被描述 |
10
xucancan 283 天前 1
@Supershell 综上,我觉得首先要明确问题的解决域,它是操作系统和网络交集区域,那么对于 Linux 来讲就是系统内核了,所以 strace 、epbf 这类工具看起来是比较合适的
|
11
salmon5 283 天前 2
|
12
IceFox99 283 天前
知道恶意的域名就好说了,tcpstat 或者 tcpdump 根据域名 ip 写一下 filter expression ,然后只要检测到输出就 hook 到 netstat 或者 ss 上,然后输出那一瞬间的所有 socket 的端口,通信和进程信息,应该足够用了。应该用不到 strace ,epbf 这类内核工具,感觉写个 Shell script 就够用了。
我自己就拿 tcpstat 和 chart.js 写过一个把流量按端口,网卡(默认和 vpn 虚拟网卡等等),IP 等等信息分类显示的网页小组件,用来分辨 nas 上 bt,nginx,samba,webdav 等各种流量以及各种用户的实时速度,这种思路是可行的而且效果还行。 |
13
salmon5 283 天前 1
|
15
Supershell OP @xucancan 确实如你所说,本是两个维度的事情,没有关联性,无法从流量上面关联进程,我想只能主动监听所有系统进程来实现我的需求,不过这样对主机的资源性能就不友好了。相当于装了一个杀软,实时监控系统进程,但这样就有点重,如果能有个轻量级的就好了。
|
16
dhb233 282 天前
如果要不漏的获取每一个,应该就是 ebpf 这种了。一般发包用的是进程的上下文,ebpf 过滤到特定报文的时候,获取下当前进程号,如果不是常驻进程,还要获取 cmd 之类的?至少要知道执行的哪个文件吧。
tcpdump 再用 ss 分析,也是可以的,但是可能会漏。毕竟有个延迟,可能请求的进程已经不在了 |
17
dhb233 282 天前
用 ebpf 这种,性能应该不是什么大的问题,性能影响相当于多加了一条 iptables 规则
|
18
salmon5 282 天前
|