N1ght-b1rd/Blackfeather
GitHub: N1ght-b1rd/Blackfeather
一款 CLI 反序列化检测与解码工具,能自动递归剥离多层编码并识别底层序列化格式,推荐对应的利用 gadget chain。
Stars: 0 | Forks: 0
# Blackfeather
**编码 pipeline 逆向工具 + 反序列化 payload 工厂。**
接收一个 blob,自动剥离所有编码层,识别底层格式,并为匹配的 stack 推荐漏洞利用 payload。
## 它的功能
```
INPUT (file or string)
↓
[1] Peel encoding layers (recursive: base64, hex, gzip, URL, HTML, unicode, hash detection)
↓
[2] Identify format (Java serial, PHP serial, Python pickle, Ruby marshal, .NET, file types)
↓
[3] Extract class names (for Java) and detect libraries (Apache Commons, Spring, etc)
↓
[4] Compute confidence score
↓
[5] Suggest a `generate` command with the right gadget chain
```
## 为什么与众不同
大多数反序列化工具都需要你事先了解格式。Blackfeather 接收一个 **raw blob** 并分析出以下内容:
- 完整的编码 pipeline(例如,`base64(gzip(serialized))`)
- 内部的原始格式
- classpath 上可能存在的库
- 应该优先尝试的 gadget chain
## 安装
```
git clone https://github.com/N1ght-b1rd/Blackfeather.git
cd ~/Blackfeather
pip install -e .
```
## 使用方法
```
# 从字符串检测
blackfeather detect -d "rO0ABXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAAdwQAAAAAeA=="
# 从文件检测
blackfeather detect -f blob.bin
# 从 stdin 管道传输
cat payload.txt | blackfeather detect
# 跳过 encoding peel
blackfeather detect -d "aced0005..." --no-peel
# 用于管道传输的 JSON 输出
blackfeather detect -d "rO0AB..." --json
```
## 示例输出
```
/'^`. .-----------------
/ \ __ / ----------
/ / \( )/ -------
////// ` \/ ` -----
//// / // : : ----
// / / / /` `--
// //`||`\\
// VV'\||/'VV
/ '//||\\`
`'`''`'`
~ BLACKFEATHER Deserializer: v0.1.0 ~
-by N1ghtb1rd
.........................................................................................................
[+] Input: 80 bytes -> "rO0ABXNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARzaXpleHAAAAAAdwQAAAAAeA=="
[+] Encoding pipeline (outer -> inner):
1. Base64 80 -> 58 bytes
[+] Peeled string:
"\xac\xed\x00\x05sr\x00\x13java.util.ArrayListx\x81\xd2\x1d\x99\xc7a\x9d\x03\x00\x01I\x00\x04sizexp\x00\x
00\x00\x00w\x04\x00\x00\x00\x00x"
.........................................................................................................
╭───────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ Format Identified. │
│ Java Serialization │
│ │
│ Confidence: 99% │
│ Magic: 0xaced0005 │
│ Classes: java.util.ArrayList │
│ Libraries: JDK (java.util.*) │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯
Generate Suggestion -- preview, not implemented yet:
?? blackfeather generate java:URLDNS --cmd "id"
Test if deserialization fires (DNS only, no RCE)
```
## 支持的编码 (peel)
| 编码器 | 检测方式
|---|---
| Hash (停止循环) | MD5, SHA-1, SHA-256, SHA-512
| Gzip | magic 0x1F8B
| Hex | 偶数长度的 hex 字符串
| Base64 | standard + URL-safe
| URL | %XX 序列
| Unicode escape | `\uXXXX`
| HTML entities | `&ent;` / `NN;`
## 支持的格式 (identify)
| 格式 | Magic |
|---|---|
| Java Serialization | `0xACED0005`
| Python Pickle | `0x80 0x02-0x05`
| Ruby Marshal | `0x0408`
| .NET BinaryFormatter | `0x00 0x01 0x00 ...`
| PHP Serialization | regex `O:N:"..."`
| PNG, JPEG, GIF, PDF, ZIP, ELF, BMP, XML, HTML | 各种
## 路线图
- [x] **阶段 1**:核心检测引擎 (peel + identify)
- [ ] **阶段 2**:Payload 生成 (ysoserial wrapper, native pickle)
- [ ] **阶段 3**:???
标签:DNS 反向解析, Go语言工具, Python, 反序列化, 文档结构分析, 无后门, 漏洞利用辅助, 解码器, 逆向工具