# Afrog 官方教程(2)：拒绝“平A”！解锁命令行参数的“组合拳”

> “只会平 A 是打不过 BOSS 的。” —— 掌握参数组合拳，让漏洞无处遁形。

大家好，这里是 **Afrog 官方**。

在上一期中，我们学会了如何安装并运行 Afrog 进行最简单的单目标扫描。但在实际的红队行动或 SRC 挖掘中，我们面对的往往是成百上千的目标，或者是需要精准打击的特定场景。

今天，我们将深入 Afrog 的武器库，解锁那些强大的**命令行参数**。

## 🧭 参数速查表（先收藏）

如果你只想快速开跑，直接抄下面的组合就够用：

| 你要做的事 | 推荐命令 |
| :--- | :--- |
| 单个 URL 扫漏洞 | `afrog -t http://example.com` |
| 批量 URL 扫漏洞 | `afrog -T targets.txt` |
| 网段资产探测（端口 → Web → 漏洞） | `afrog -t 192.168.1.0/24 -ps -w` |
| 全端口扫描（绝对全量） | `afrog -t 1.2.3.4 -ps -p 1-65535 -Pn` |
| 快速只扫高危 | `afrog -T targets.txt -S high,critical` |
| 只跑某类 PoC（关键词） | `afrog -t http://example.com -s spring,weblogic` |
| 扫到洞立刻群里告警 | `afrog -T targets.txt -S high,critical -wecom` |
| **公网防抖动（强烈推荐）** | `afrog -T targets.txt -mt` |
| **智能并发（省心）** | `afrog -T targets.txt -smart` |
| **安全并发（推荐）** | `afrog -T targets.txt -auto-req-limit` |

## 🎯 目标指定：指哪打哪

### 1. 批量打击：文件导入
如果你有一堆 URL 需要扫描，别一个个复制粘贴。把它们保存在一个 `txt` 文件里（一行一个），然后使用 `-T` 参数：

```bash
afrog -T targets.txt
```

### 2. 资产探测：CIDR/段探测 + 端口扫描（`-ps`）+ Web 探测（`-w`）
当你的输入不是“URL”，而是 “IP / 网段 / 段范围”时，最佳姿势通常是：

1) 用 `-ps` 做端口预扫，把 `host:port` 资产捞出来  
2) 用 `-w` 做 Web 存活探测，把可访问的 Web URL（含标题等信息）捞出来  
3) Afrog 再基于这些资产跑指纹与漏洞 PoC

#### 2.1 CIDR / 段范围作为目标
```bash
# CIDR 目标（会进入预扫/扫描流程）
afrog -t 192.168.1.0/24 -ps

# IP 段范围目标（会进入预扫/扫描流程）
afrog -t 192.168.1.1-192.168.1.254 -ps
```

#### 2.2 端口预扫：`-ps` + `-p`
```bash
# 默认端口策略：-p top（常见端口优先，-ps 不写 -p 也会用 top）
afrog -t 192.168.1.100 -ps

# 自定义端口：单个 / 逗号分隔 / 范围
afrog -t 192.168.1.100 -ps -p 80,443,8080,8000-9000
```

`-p` 支持关键字（更适合“资产探测”的语义）：
- `top`：常见端口优先（默认）
- `full` / `all`：内置高覆盖端口序列（分层扫描），适合更全面的探测
- `s1`/`s2`/`s3`/`s4`：分层端口集合（更偏调参玩法）

如果你想要“真正意义的 1-65535 全端口”，使用范围更直观：
```bash
afrog -t 192.168.1.100 -ps -p 1-65535
```

#### 2.3 端口预扫调参：`-Pn` / `-prate` / `-ptimeout` / `-ptries`
```bash
# 跳过主机发现阶段，直接对输入目标做端口扫描
afrog -t 192.168.1.0/24 -ps -Pn

# 控制端口扫描速率/超时/重试（单位：ms）
afrog -t 192.168.1.0/24 -ps -p all -prate 2000 -ptimeout 800 -ptries 1
```

`-p all/full` 时，内部会把大端口集合切块扫描；可以用 `-ps-s4-chunk` 控制块大小（更稳但更慢，或更快但更吃资源）。

#### 2.4 Web 存活探测：`-w`
`-w` 会对目标集合做 Web 探测，自动补全/识别可访问的 HTTP(S) URL，并输出常见元信息（如标题、Server 等）。它适合你在跑漏洞前快速摸清 Web 面。

```bash
# 端口预扫 + Web 探测 + 漏洞扫描
afrog -t 192.168.1.0/24 -ps -w
```

#### 2.5 常见服务探测 → 弱口令/默认口令探测
端口预扫得到的是 `host:port`，随后 Afrog 会进行指纹识别；当服务类型能被识别时，对应的弱口令/默认口令 PoC（位于 `pocs/afrog-pocs/default-pwd/`）就可以自动跑起来（例如 `ssh-weak-login` 的 `requires: [ssh]`）。

实战示例：
```bash
# 网段资产探测 + Web 探测
afrog -t 192.168.1.0/24 -ps -w

# 只盯一个服务（示例：SSH 弱口令）
afrog -t 192.168.1.0/24 -ps -p 22 -s ssh

# 先把弱口令 PoC 列出来看看（用于了解支持范围）
afrog -pl -s weak-login,default-pwd,default-login
```

常见覆盖的服务/组件（以内置 PoC 为准，随版本迭代）：
- 网络服务：SSH、FTP、Telnet、SMB、WinRM、SMTP/POP3/IMAP、VNC、Redis、MongoDB、MySQL、PostgreSQL、MSSQL、Oracle、Memcached、Zookeeper
- 常见后台/中间件：Tomcat、Jenkins、Grafana、Zabbix、RabbitMQ、phpMyAdmin、Nexus、MinIO、ActiveMQ 等

---

## 🔍 过滤的艺术：精准制导

Afrog 内置了数千个 PoC，全量扫描虽然覆盖全，但有时太慢或动静太大。这时候你需要“过滤器”。

### 1. 按关键词搜索：`-s` (Search)
假设你只关心 **Spring Boot** 相关的漏洞：

```bash
afrog -t http://example.com -s springboot
```
这样，Afrog 只会加载名字里带有 `springboot` 的 PoC。

### 2. 按危害等级：`-S` (Severity)
不想看那些 `Info` 或 `Low` 级别的低危漏洞？只看高危和严重？

```bash
afrog -t http://example.com -S high,critical
```

### 3. 排除法：`-ep` (Exclude PoC)
有时候某个 PoC 可能会导致业务异常，或者你不想扫描某个特定类型的漏洞（比如不想扫 `Log4j`）：

```bash
afrog -t http://example.com -ep log4j
```

---

## 🧰 PoC 管理：如何“只跑我想跑的”

### 1. 指定 PoC 文件/目录：`-P`
```bash
# 指定单个 PoC 文件
afrog -t http://example.com -P ./pocs/test.yaml

# 指定一个 PoC 目录
afrog -t http://example.com -P ./pocs/
```

### 2. 追加 PoC：`-ap`
当你既想跑内置 PoC，又想顺手跑你自己的几个 PoC：
```bash
afrog -t http://example.com -ap ./my-pocs/
```

### 3. 列出/查看 PoC：`-pl` / `-pd`
```bash
# 按关键词列出 PoC（注意：-s 只匹配 PoC 的 id/name/tags）
afrog -pl -s weaver,ecology

# 查看某个 PoC 的详情
afrog -pd ssh-weak-login
```

### 4. 校验 PoC 语法：`-validate`
写 PoC 写到怀疑人生时，先用这个把 YAML 语法问题揪出来：
```bash
afrog -validate ./pocs/
```

---

## 📊 输出管理：数据落地

### 1. 保存 HTML 报告
虽然默认会生成报告，但你可以用 `-o` 指定报告的文件名和位置：

```bash
afrog -t http://example.com -o ./result/my_scan.html
```

### 2. 自动化集成：JSON 输出
如果你想把 Afrog 集成到自己的扫描平台，或者用 Python 脚本处理结果，JSON 是最好的选择。

```bash
# -j 只输出简要信息
afrog -t http://example.com -j result.json

# -ja 输出包含 Request/Response 的完整信息 (Json All)
afrog -t http://example.com -ja result_full.json
```

---

## 🧪 排障与常用调优：让你跑得更稳

这些参数不一定“每天都用”，但一旦出问题，基本都靠它们救命：

### 1. 抗抖动神器：`-mt` (Monitor Targets) 🌟
**强烈推荐在公网扫描时开启！**
如果网络环境较差（丢包、波动），Afrog 的第一次探活可能会失败，导致目标被直接丢弃。
加上 `-mt`，Afrog 会对目标进行持续、带重试的监控。只要它“活过来”一次，就不会漏扫。

```bash
afrog -T targets.txt -mt
```

### 2. 超时与重试：`-timeout` / `-retries`
```bash
# 网络不稳时，适当加大超时与重试
afrog -t http://example.com -timeout 60 -retries 2
```

### 3. 代理与自定义请求头：`-proxy` / `-H`
```bash
# 走代理
afrog -t http://example.com -proxy http://127.0.0.1:8080

# 全局加请求头/Cookie
afrog -t http://example.com -H 'X-Forwarded-For: 1.1.1.1' -H 'Cookie: a=b'
```

### 4. 输出更多调试信息：`-debug`
```bash
afrog -t http://example.com -debug
```

### 5. 临时跳过指纹阶段：`-nf`
当你只想快速验证漏洞 PoC，不想做指纹门控时：
```bash
afrog -t http://example.com -nf
```

### 6. 断点续扫：`-resume`
```bash
afrog -resume resume.afg
```

---

## 🔔 Webhook 告警：钉钉 / 企业微信

当你跑批量任务时，最怕的是“扫完才发现有洞”。Webhook 告警可以让 Afrog 在命中漏洞时直接把消息推送到群里。

要点：
- 先在 `~/.config/afrog/afrog-config.yaml` 里配置 token
- 扫描时再加 `-dingtalk` 或 `-wecom` 才会推送

示例：
```bash
# 企业微信推送
afrog -T targets.txt -wecom

# 钉钉推送
afrog -T targets.txt -dingtalk
```

字段说明与配置样例请看下一篇教程《配置文件深度解析》中的 Webhook 章节。

---

## ⚡ 进阶技巧：智能并发

默认情况下，Afrog 的并发已经调教得很好了。但如果你想更激进，或者目标很脆弱，可以手动调整并发数 `-c` (Concurrency)：

```bash
# 默认是 25，调大速度快，但可能封 IP
afrog -t targets.txt -c 50
```

还有一个黑科技参数 `-smart`：
```bash
afrog -t targets.txt -smart
```
开启后，Afrog 会根据目标的数量和终端的并发能力自动调整并发策略，让你省心省力。

### 2. 精细化限速：为什么有了 -rl 还需要 -auto-req-limit？

` -rl (rate-limit)` 是限制**总发包速度**（比如全程序每秒最多发 150 个包）。但如果你只扫一个目标，这 150 个包会全部打向它，很容易把目标打挂或触发 WAF。

Afrog 提供了更精细的**“单目标限速” (Per-Target Rate Limit)**，确保对每个资产“温柔”一点，防止被封杀：

| 模式 | 参数 | 行为 | 适用场景 |
| :--- | :--- | :--- | :--- |
| **自动挡** | `-auto-req-limit` | 自动判断，根据响应速度动态调整 | **最推荐**，省心 |
| **绅士模式** | `-polite` | 极慢速扫描，每秒极少请求 | 极其敏感的生产环境 |
| **平衡模式** | `-balanced` | 速度与隐蔽性的平衡 | 常规扫描 |
| **狂暴模式** | `-aggressive` | 只要没死就往死里打 | 压力测试 / 内网环境 |

**举例**：
```bash
# 既要扫得快（多目标并发），又要对每个目标温柔（防止单点打挂）
afrog -T targets.txt -c 50 -auto-req-limit
```
这意味着：你可以开 50 个并发（同时扫 50 个网站），但对**每一个具体的网站**，Afrog 会自动控制发包频率，不会让它压力过大。这就是“宏观快，微观稳”。

### 3. 🧠 场景实战：如果只有 20 个目标？

很多同学问：**“如果我的 `targets.txt` 里只有 20 个资产，用 `-c 50 -auto-req-limit` 会发生什么？”**

这是一个**“火力全开但带安全气囊”**的经典配置，它的运行逻辑非常精彩：

1.  **宏观：全员起跑 (Concurrency)**
    *   **配置**：`-c 50`（允许同时处理 50 个任务）。
    *   **实际**：只有 20 个目标。
    *   **结果**：**无需排队**。Afrog 会立刻为这 20 个目标各分配一个“工位”，**20 个网站同时开始扫描**。效率直接拉满。

2.  **微观：自动控速 (Auto Rate Limit)**
    *   **问题**：20 个网站同时扫，如果其中有一个网站服务器很弱（比如是个老旧的内网系统），或者有个网站防火墙很敏感，普通的扫描器可能直接把它打挂或被封。
    *   **解法**：`-auto-req-limit` 会给这 20 个“工位”每人发一个“智能刹车”。
        *   **网站 A（高性能）**：响应快，Afrog 可能会逐渐放宽对它的发包速度，扫得飞快。
        *   **网站 B（老破小）**：响应慢或偶尔超时，Afrog 会自动识别，降低对它的发包频率，**慢慢磨**，确保不把它扫崩。

3.  **💡 进阶优化**
    *   如果你确认这 20 个目标比较耐扛（比如都是公网大厂资产），想要更极致的速度，可以把**全局限速**也提上来：
    ```bash
    # 全局每秒放行 1000 个包，分给 20 个目标（平均每秒 50 个），同时靠 auto-req-limit 兜底防封
    afrog -T targets.txt -c 50 -rl 1000 -auto-req-limit
    ```

### 4. ⚠️ 避坑指南：为什么不建议 `-c` 开太大？

有同学反馈：**“我把并发开到 `-c 800`，跑了半小时 Afrog 居然崩溃了！是不是程序有 Bug？”**

其实这通常不是 Bug，而是触碰了**系统的物理极限**。

#### 💥 崩溃原理：车道与停车场的博弈
*   **`-c` (Concurrency)** 是**车道数**（同时工作的工人数）。
*   **`-rl` (Rate Limit)** 是**限速牌**（车流速度）。

当你设置 `-c 800` 时，意味着 Afrog 会立即创建 **800 个并发线程**（Goroutines）。
1.  **文件句柄耗尽 (Too many open files)**：操作系统（尤其是 macOS/Linux）默认允许单个进程打开的文件/连接数通常是 **1024**。如果 800 个线程同时发起网络连接，加上程序自身打开的文件，瞬间就会撑爆这个限制，导致程序崩溃或报错。
2.  **内存爆炸 (OOM)**：800 个线程不仅占用 CPU 调度资源，每个线程还需要维护独立的**响应缓冲区**。如果目标响应慢，大量数据堆积在内存中，极易导致内存溢出。

#### ✅ 最佳实践：小宽带，大油门
**不要试图用 `-c` 来提速，要用 `-rl`。**

*   **`-c` 建议值**：**50 ~ 200**。保持在这个区间，既能保证足够的并行度，又不会撑爆系统资源（这是系统的“安全气囊”）。
*   **`-rl` 建议值**：**500 ~ 2000+**。只要你的带宽和目标扛得住，尽管往上加。

**形象比喻**：
你不需要修 **800 条车道**（`-c 800`）来跑出高速；你只需要修 **50 条车道**（`-c 50`），然后让车子跑得**飞快**（`-rl 1000`）。
如果前面的车堵住了（目标响应慢），修再多的车道也只是造了一个更大的停车场（占用更多内存），反而死得更快。

---

## 📚 附录：哪里看完整参数？

Afrog 的参数非常丰富，为了不让这篇文章变成“字典”，我们只列出了最常用的核心参数。
如果你想查看所有支持的参数（包括一些冷门但有趣的隐藏功能），有以下两种方式：

1.  **命令行查看**：
    ```bash
    afrog -h
    ```
2.  **GitHub 官方 Wiki**：
    访问 [https://github.com/zan8in/afrog/wiki](https://github.com/zan8in/afrog/wiki) 查看最新、最全的文档。

---

## 下期预告

有了扫描能力，但遇到**没有回显**的漏洞（比如盲注、Log4j）怎么办？
下一期**《配置文件深度解析》**，我们将教你配置 **反连平台 (OOB)**，让那些隐蔽的漏洞也无处藏身！

---

### 🌟 进阶玩法：加入 Afrog 官方星球

**“启动即最新，扫描即实战”**

觉得开源版 PoC 更新不够快？想要第一时间获取 **高危漏洞 / 0day** 情报？
Afrog v3.3.7 已内置 **“星球精选 PoC”自动更新客户端**。

加入 **「Afrog 官方圈」** 知识星球，你将获得：
1.  🔑 **专属 License Key**：一键配置。
2.  ⚡️ **独家高危 PoC**：快人一步，通过自动更新通道直达你的扫描器。
3.  🛠️ **硬核技术交流**：与作者和众多安全从业者共同探讨。

👉 **如何开启自动更新？**
查看详细文档：[Afrog 支持星球 PoC 自动更新功能](https://github.com/zan8in/afrog/wiki/Afrog-%E6%94%AF%E6%8C%81%E6%98%9F%E7%90%83PoC%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E5%8A%9F%E8%83%BD)

*(此处建议插入知识星球二维码)*

---
*本文由 Afrog 官方原创，欢迎转发分享。*
