#packets #shark #inspection #deep #malicious #tool #debugging

bin+lib rshark

Rusty Shark 是一个用于恶意数据包深度检查的工具

1 个不稳定版本

使用旧的 Rust 2015

0.0.1 2015 年 9 月 17 日

#5 in #malicious


rust_lldp 中使用

Apache-2.0 协议

1.5MB
350

Rusty Shark logo

rshark,Rusty Shark 库,是一个用于恶意数据包深度检查的库。

Wireshark 是一个非常有用的网络调试工具,但它也有其公平份额的安全漏洞。通常认为,在参加 Capture the Flag 竞赛之前,应该花一些时间模糊测试 Wireshark,以找到一些新的漏洞(别担心,它们在那里,你一定会找到的),并利用这些漏洞进攻性地使对手失去视野。这既说明了数据包捕获/分析工具的不可或缺性,也说明了“仅仅使 Wireshark 安全”的根本困难。潜艇的比喻不言而喻。

更多详细信息可在 Rustdoc 中找到。


lib.rs:

rshark,Rusty Shark 库,是一个用于恶意数据包深度检查的库。

背景

Wireshark 是一个非常有用的网络调试工具,但它也有其公平份额的安全漏洞。通常认为,在参加 Capture the Flag 竞赛之前,应该花一些时间模糊测试 Wireshark,以找到一些新的漏洞(别担心,它们在那里,你一定会找到的),并利用这些漏洞进攻性地使对手失去视野。这既说明了数据包捕获/分析工具的不可或缺性,也说明了“仅仅使 Wireshark 安全”的根本困难。Wireshark 有很多分析器,这些分析器使用了一个复杂的 C API(尽管一些现在是使用 Lua 编写的)。

rshark 使用 Rust 的类型安全性,使得恶意数据包的解析无需担心缓冲区溢出或其他常见的内存错误。Rusty Shark 的分析器可能会犯错误,但那些逻辑错误只会影响对当前数据的解释,而不是所有数据。也就是说,Rusty Shark 是模块化的,以最小化成功攻击者可能造成的损害。潜艇的比喻不言而喻。

使用方法

注意:有关 rshark 命令行客户端的帮助,请运行 man rsharkrshark --help

rshark 库提供了数据包解析函数,例如 rshark::ethernet::dissect()。每个这样的解析函数都应遵循 rshark::Dissector 函数类型,它接收一个字节数组切片作为输入,并返回一个 rshark::Result(默认为 Result<rshark::Val, rshark::Error>)。使用方法非常简单

let data = vec![];

match rshark::ethernet::dissect(&data) {
    Err(e) => println!["Error: {}", e],
    Ok(val) => print!["{}", val.pretty_print(0)],
}

Val 可以表示任意结构的树形数据(在图形显示中很有用),并且可以通过缩进来进行美化打印。

依赖项

~4.5MB
~90K SLoC