Gutem/abusech-sdk
GitHub: Gutem/abusech-sdk
面向 abuse.ch 恶意软件威胁情报平台的 JavaScript/TypeScript 客户端 SDK,提供 MalwareBazaar 模块的 25 个 API 方法及 CLI 工具。
Stars: 0 | Forks: 0
# abuse.ch SDK
针对 [abuse.ch](https://abuse.ch) API 的 JavaScript/TypeScript 客户端 —— 最大的开源恶意软件威胁情报平台。包含 **150 万+ 恶意软件样本**、**300 万+ 恶意 URL** 以及 **IOC 共享**。
| API | 模块 | 状态 |
|-----|--------|--------|
| **MalwareBazaar** | `abusech-sdk/malwarebazaar` | ✅ 25 个方法 |
| **URLhaus** | `abusech-sdk/urlhaus` | 🔜 计划中 |
| **ThreatFox** | `abusech-sdk/threatfox` | 🔜 计划中 |
零依赖。支持 **Bun**、**Node.js**、**Deno**、**Cloudflare Workers**。
```
bun add abusech-sdk
# 在 https://auth.abuse.ch/ 免费注册获取 API key
export ABUSE_CH_KEY=your-key
```
## 快速开始
```
import { MalwareBazaar } from 'abusech-sdk/malwarebazaar';
const mb = new MalwareBazaar(process.env.ABUSE_CH_KEY);
// Latest tagged malware (24h)
const detections = await mb.recentDetections({ hours: 24, limit: 50 });
// Sample metadata by hash
const info = await mb.searchByHash('46faab8ab153fae...');
console.log(info.signature, info.file_type, info.tags);
// Download a sample (zip, password: "infected")
const bytes = await mb.downloadSample('46faab8ab153fae...');
await Bun.write('/tmp/malware.zip', bytes);
// Search Shai-Hulud samples
const shai = await mb.searchByTag('Shai-Hulud', 100);
// Fuzzy hash search
const byImphash = await mb.searchByImphash('f34d5f2d4577ed6d');
```
## CLI
```
bun src/cli.js hash 46faab8ab153fae...
bun src/cli.js download 46faab8ab153fae... ./malware.zip
bun src/cli.js recent 24 50
bun src/cli.js tag Shai-Hulud 100
bun src/cli.js sig TrickBot 50
bun src/cli.js type elf 20
```
## API 参考 — MalwareBazaar
### 构造函数
```
const mb = new MalwareBazaar(apiKey, {
baseUrl: 'https://mb-api.abuse.ch/api/v1/', // default
timeoutMs: 60000, // AbortController timeout
fetch: customFetch, // for CF Workers
});
```
### 核心(2 个方法)
| 方法 | 描述 |
|--------|-------------|
| `searchByHash(hash)` | SHA256/SHA1/MD5 → 完整元数据 + 厂商情报 |
| `downloadSample(sha256)` | 原始 zip 字节 (密码: `infected`) |
### 列表 (2)
| 方法 | 描述 |
|--------|-------------|
| `recentDetections({hours, limit})` | 带标签的恶意软件(最近 N 小时) |
| `recentAdditions(selector?)` | 最新上传 |
### 按元数据搜索 (4)
| 方法 | 查询 |
|--------|-------|
| `searchByTag(tag, limit)` | `get_taginfo` |
| `searchBySignature(sig, limit)` | `get_siginfo` |
| `searchByFileType(type, limit)` | `get_file_type` |
| `searchByClamAV(sig, limit)` | `get_clamavinfo` |
### 模糊哈希 (5)
| 方法 | 哈希类型 |
|--------|-----------|
| `searchByImphash(h, limit)` | PE 导入哈希 |
| `searchByTLSH(h, limit)` | Trend Micro TLSH |
| `searchByTelfhash(h, limit)` | ELF 哈希 |
| `searchByGimphash(h, limit)` | Go 二进制哈希 |
| `searchByDhashIcon(h, limit)` | PE 图标 dhash |
### YARA 与证书 (4)
| 方法 | 查询 |
|--------|-------|
| `searchByYARA(rule, limit)` | YARA 规则命中 |
| `searchByCertificateIssuer(cn, limit)` | 签名证书颁发者 |
| `searchByCertificateSubject(cn, limit)` | 签名证书主题 |
| `searchByCertificateSerial(sn, limit)` | 签名证书序列号 |
### 写入操作 (3)
| 方法 | 描述 |
|--------|-------------|
| `uploadSample(bytes, opts)` | 上传 + 元数据 (multipart) |
| `updateEntry(sha256, fields)` | 更新标签/签名 |
| `addComment(sha256, comment)` | 添加分析师评论 |
| 方法 | 描述 |
|--------|-------------|
| `getCSCB()` | 代码签名证书黑名单 |
## 许可证
MIT © [gutem](https://github.com/gutem)
标签:API客户端, CMS安全, DAST, JavaScript, MITM代理, TypeScript, 威胁情报, 安全插件, 开发者工具, 恶意软件分析, 数据可视化, 程序员工具, 自定义脚本