BruteShark
关于
BruteShark 是一种网络取证分析工具 (NFAT),它对网络流量(主要是 PCAP 文件,但它也能够直接从网络接口进行实时捕获)进行深度处理和检查。它包括:密码提取、构建网络地图、重建 TCP 会话、提取加密密码的哈希,甚至将其转换为 Hashcat 格式以执行离线蛮力攻击。
该项目的主要目标是为安全研究人员和网络管理员提供网络流量分析任务的解决方案,同时他们试图识别潜在攻击者可以用来访问网络关键点的弱点。
有两个 BruteShark 版本可用,一个基于 GUI 的应用程序 (Windows) 和一个命令行界面工具(Windows 和 Linux)。
解决方案中的各种项目也可以独立用作基础架构,用于分析 Linux 或 Windows 机器上的网络流量。有关更多详细信息,请参阅架构部分。
该项目是在我的业余时间开发的,以解决我的两个主要爱好:软件架构和分析网络数据。
我喜欢从 BruteShark 用户那里得到反馈,你的意见对我很重要!请随时通过contact.oded.shimon@gmail.com与我联系或创建新问题。
如果这个项目对你有帮助的话,请⭐️这个存储库!
另外,如果可以给我买杯咖啡☕☕☕
它可以做什么
- 提取和编码用户名和密码(HTTP、FTP、Telnet、IMAP、SMTP…)
- 提取身份验证哈希并使用 Hashcat(Kerberos、NTLM、CRAM-MD5、HTTP-Digest…)破解它们
- 构建可视化网络图(网络节点、开放端口、域用户)
- 提取 DNS 查询
- 重建所有 TCP 和 UDP 会话
- 文件雕刻
-
下载
视窗
先决条件:
- Npcap 驱动程序(Wireshark默认安装其中之一)
- .NET Core 运行时(请注意,您必须根据需要安装适当的运行时,这意味着用于 BruteSharkDesktop 的.NET Core 桌面运行时和用于 BruteSharkCli 的.NET Core 运行时)。
- 桌面版下载BruteSharkDesktop Windows Installer (64 Bit)。
对于 CLI 版本,请下载BruteSharkCli Windows 10 Executable。
Linux
先决条件:libpcap 驱动程序
- 下载BruteSharkCli并运行它:
wget https://github.com/odedshimon/BruteShark/releases/latest/download/BruteSharkCli ./BruteSharkCli
例子
视频
构建网络地图
BruteSharkCli 使用示例 - 提取多个密码和哈希(也可在 youtube 上找到)
哈希提取
构建网络图
构建网络图
文件分割
密码提取
重构所有TCP会话
提取 VoIP 呼叫
BruteShark Cli
用法
一般来说,建议加载、运行和探索结果。
可以从此处下载包含演示所有 BruteShark 功能的场景的示例 PCAP 文件。
请注意,分析网络流量是一项耗费时间和资源的操作,因此建议在加载大文件时仅选择所需的模块,应特别注意“Build TCP Sessions(构建 TCP 会话)”/“Build UDP Sessions(构建 UDP 会话)”选项。
BruteShark桌面
图形用户界面非常不言自明,只需加载所需文件、配置所需模块并按下运行按钮即可。
BruteSharkCli
BruteSharkCli 是适用于 Linux 和 Windows 用户的 BruteShark 的 CLI 版本。它具有 BruteSharkDesktop 的所有功能,并设计为从 shell 操作。作为一个经典的 CLI 工具,它通过获取处理的所有相关参数然后将结果打印到标准输出或文件来工作。
打印帮助菜单
BruteSharkCli --help
从目录中的所有文件获取凭据(密码和哈希将打印到标准输出)
BruteSharkCli -m Credentials -d "C:\Users\King\Desktop\Pcap Files"
从目录中的所有文件中获取凭据,并将提取的哈希(如果找到)导出到 Hashcat 输入文件
BruteSharkCli -m Credentials -d C:\Users\King\Desktop\Pcap_Examples -o C:\Users\King\Desktop\Results
对目录中的所有文件运行多个模块,并导出所有结果
BruteSharkCli -m Credentials,NetworkMap,FileExtracting -d C:\Users\King\Desktop\Pcap_Examples -o C:\Users\King\Desktop\Results
嗅探一个名为“Wi-Fi”的接口
运行多个模块并将所有结果导出到一个目录(只有在按 CTRL + C 停止嗅探器时才会导出结果):
BruteSharkCli -l Wi-Fi -m Credentials,NetworkMap,FileExtracting,DNS -o C:\Users\King\Desktop\Test Export
模块
凭证模块
该模块负责提取和编码用户名和密码以及身份验证哈希。实际上这个模块负责更新两个显示表,密码表和哈希表。虽然用户名和密码可以直接使用,但哈希最常用于更复杂的攻击,例如传递哈希或通过暴力破解它们来获取密码。BruteShark与 Hashcat 集成,因此提取的所有哈希都可以转换为 Hashcat 输入文件。
协议 | 哈希类型 | Hascat 模式 (-m) |
---|---|---|
HTTP | HTTP-摘要 | 11400 |
SMTP\IMAP | CRAM-MD5 | 16400 |
NTLM(例如 SMB) | NTLMv1 | 5500 |
NTLM(例如 SMB) | NTLMv2 | 5600 |
Kerberos | AS-REQ etype 23 | 7500 |
Kerberos | AS-REP etype 23 | 18200 |
Kerberos | TGS-REP etype 23 | 13100 |
Kerberos (AES128) | TGS-REP etype 17 | 19600 |
Kerberos (AES256) | TGS-REP etype 18 | 19700 |
网络地图模块
该模块负责通过识别网络中的组件以及它们之间的连接来构建网络图。
网络图可以导出为两个 JSON 文件,一个文件包含网络中的所有连接,一个文件包含所有端点及其相关信息(如开放端口、DNS 映射等)。
这些文件可用于使用Neo4j等外部工具进行分析。
文件提取模块
此模块尝试从 UDP / TCP 会话中提取文件(因此,请注意,为了使此模块有效,应打开“构建 TCP 会话”/“构建 UDP 会话”)。目前该模块支持通过“Header-Footer”算法进行文件雕刻的经典取证技术,该算法对JPG、PNG、PDF等已知文件页眉和页脚的文件有效。
Voip Calls模块
该模块从 SIP 和 RTP 协议中提取 Voip 呼叫。提取的呼叫可以导出为原始音频文件,并且可以使用适当的音频播放器(如Audacity)播放
Architecture
所有 BruteShark 项目都是使用.Net Core和实现的,.Net Standard用于现代和跨平台支持。该解决方案采用三层架构设计,每层包括一个或多个项目 - DAL、BLL 和 PL。层之间的分离是由每个项目仅引用其自己的对象这一事实造成的。
Pcap处理器(DAL)
作为数据访问层,该项目负责使用适当的驱动程序(WinPcap、libpcap)和Chris Morgan的惊人包装库SharpPcap读取原始 PCAP 文件。可以一次分析文件列表,并提供其他功能,例如重建所有 TCP 会话(使用很棒的项目 TcpRecon)。
PcapAnalyzer (BLL)
业务逻辑层,负责分析网络信息(数据包、TCP会话等)。),实现了可插拔机制。每个插件基本上都是一个实现接口IModule的类。使用反射加载所有插件:
private void _initilyzeModulesList()
{
// Create an instance for any available modules by looking for every class that
// implements IModule.
this._modules = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => typeof(IModule).IsAssignableFrom(p) && !p.IsInterface)
.Select(t => (IModule)Activator.CreateInstance(t))
.ToList();
// Register to each module event.
foreach(var m in _modules)
{
m.ParsedItemDetected += (s, e) => this.ParsedItemDetected(s, e);
}
}
BruteSharkDesktop (PL)
基于 WinForms 的 Windows 桌面应用程序。使用跨领域项目,意味着它同时引用 DAL 和 BLL 层。这是通过组合每一层来完成的,注册到它们的事件,当事件被触发时,将事件对象转换为下一层等效对象,并将其发送到下一层:
public MainForm()
{
InitializeComponent();
_files = new HashSet<string>();
// Create the DAL and BLL objects.
_processor = new PcapProcessor.Processor();
_analyzer = new PcapAnalyzer.Analyzer();
_processor.BuildTcpSessions = true;
// Create the user controls.
_networkMapUserControl = new NetworkMapUserControl();
_networkMapUserControl.Dock = DockStyle.Fill;
_sessionsExplorerUserControl = new SessionsExplorerUserControl();
_sessionsExplorerUserControl.Dock = DockStyle.Fill;
_hashesUserControl = new HashesUserControl();
_hashesUserControl.Dock = DockStyle.Fill;
_passwordsUserControl = new GenericTableUserControl();
_passwordsUserControl.Dock = DockStyle.Fill;
// Contract the events.
_processor.TcpPacketArived += (s, e) => _analyzer.Analyze(Casting.CastProcessorTcpPacketToAnalyzerTcpPacket(e.Packet));
_processor.TcpSessionArived += (s, e) => _analyzer.Analyze(Casting.CastProcessorTcpSessionToAnalyzerTcpSession(e.TcpSession));
_processor.FileProcessingStarted += (s, e) => SwitchToMainThreadContext(() => OnFileProcessStart(s, e));
_processor.FileProcessingEnded += (s, e) => SwitchToMainThreadContext(() => OnFileProcessEnd(s, e));
_processor.ProcessingPrecentsChanged += (s, e) => SwitchToMainThreadContext(() => OnProcessingPrecentsChanged(s, e));
_analyzer.ParsedItemDetected += (s, e) => SwitchToMainThreadContext(() => OnParsedItemDetected(s, e));
_processor.TcpSessionArived += (s, e) => SwitchToMainThreadContext(() => OnSessionArived(Casting.CastProcessorTcpSessionToBruteSharkDesktopTcpSession(e.TcpSession)));
_processor.ProcessingFinished += (s, e) => SwitchToMainThreadContext(() => OnProcessingFinished(s, e));
InitilizeFilesIconsList();
this.modulesTreeView.ExpandAll();
}
贡献
首先,感谢您抽出时间来投稿!BruteShark欢迎每个人的贡献。
向此存储库投稿时,请先通过问题或电子邮件讨论您希望进行的更改,然后再进行更改。
你可以如何贡献?
- 实施BruteShark Issues的新功能,寻找“good first issue”和“help Wanted”标签。
- 上传包含有趣内容的示例 PCAP 文件,尤其是文件。
- 通过创建问题提出新功能。
- 通过创建问题报告错误。
- 讨论代码的当前状态。
- 创建使用 BruteShark 的视频和示例教程。