dotgibson/dotfiles-Kali
GitHub: dotgibson/dotfiles-Kali
面向渗透测试人员的 Kali/WSL2 dotfiles 仓库,在通用终端配置之上叠加进攻性安全测试的工作流脚手架与工具链集成。
Stars: 0 | Forks: 0
# 🔴 dotfiles-Kali
**渗透测试人员的终端,版本控制下的产物。** 进攻性角色层 —
recon → exploit → evasion,基于 Kali/WSL2 构建。
`recon` · `exploit` · `evasion`
[](https://dotgibson.github.io/dotfiles-web/) 
dotfiles 系统的 Kali 节点。与其他所有 OS 仓库不同,这个仓库叠加了
**三层**而不是两层:
| 层级 | 来源 | 承载内容 |
|-------|--------|-----------------|
| **Core** | 从 `core/` 下的 `dotfiles-core` 引入 | zsh 模块, tmux, nvim, git, starship, mise, clip |
| **OS-native** | `os/kali.*` | apt, 剪贴板委托, 路径, tmux/git 调整 (Kali 基于 Debian) |
| **Offensive (角色)** | `offensive/` | 授权测试项目脚手架 + 工作区工作流 — **此仓库独有** |
专为 **基于 WSL2 的 Kali** 构建。
## 最重要的一条规则
**这是一个公开的展示仓库。测试和客户数据绝不存放在这里。**
所有测试数据都存放在 `~/engagements/` 目录下(仓库之外)。该仓库
仅提供工具、配置和空的工作区脚手架。偏执的
`.gitignore` 只是纵深防御。请勿将测试数据放入仓库。
## Loader 集成
进攻性层为 zsh loader 增加了一个阶段,插入在
本地覆盖之前:
```
tools → aliases → functions → fzf → bindings → plugins → op → os → offensive → local
```
`offensive/offensive.zsh` → `~/.config/zsh/offensive.zsh`。它包含工作流
辅助工具(例如 `mkengagement`, `eng`, `logshell`, `nmapsweep`, `bhce`)—
没有 exploit 代码,没有攻击自动化;只有你的输出目的地。
## WSL2:运行 listener 前必读
WSL2 默认是 NAT 模式,因此在 Kali 中启动的 reverse shell / handler / responder / file
server **无法从你的局域网访问** — 流量会到达
Windows 主机,而不是 Kali。使用 **mirrored networking** 解决此问题(Windows 11 22H2+):
将 `wsl/windows.wslconfig.example` 复制到 `%UserProfile%\.wslconfig`,然后
运行 `wsl.exe --shutdown` 并重新打开。发行版端的 `wsl/wsl.conf`(systemd +
默认用户 + interop)由 `bootstrap.sh` 自动安装。
GUI 工具(Burp, BloodHound UI)可以在 WSLg 下运行,但在 Windows
主机上更流畅 — 默认的工具列表是 headless 优先的。
## 安装(全新仓库生命周期)
```
# 1. 将这些文件存放至 ~/dotfiles-Kali,然后:
cd ~/dotfiles-Kali
git init -b main
git config user.name "Your Name"
git config user.email "you@example.com"
git add . && git commit -m "Kali OS + offensive layers"
# 2. vendor Core(一次性)
git subtree add --prefix=core main --squash
# 3. provision + wire
./bootstrap.sh # full (add --no-offensive to skip heavy tools)
# 4. 应用 WSL config
wsl.exe --shutdown # from a Windows terminal, then reopen Kali
# (同时将 windows.wslconfig.example 放置于 %UserProfile%\.wslconfig 以实现 mirrored net)
```
以后保持 Core 最新与其他仓库相同:从 `dotfiles-core` 运行
`./scripts/sync-core.sh dotfiles-Kali`,然后在这里运行 `./bootstrap.sh --links-only`。
## bootstrap flags
- `./bootstrap.sh` — apt 基础包 + 进攻性工具 + symlinks
- `./bootstrap.sh --no-offensive` — 基础包 + symlinks,跳过繁重的工具安装
- `./bootstrap.sh --links-only` — 仅(重新)创建 symlinks
# 进攻性层(Kali 细节)
Kali 不是从 Fedora 模板克隆出来的。它属于 Debian 家族(apt),并且是
唯一在 zsh loader 中包含**进攻性阶段**的仓库。其他所有
仓库的 `.zshrc` 都加载 `… os local`,而 Kali 额外插入了一个:
```
tools → aliases → functions → fzf → bindings → plugins → op → os → offensive → local
```
`offensive` 在 `os` 之后加载(因此 OS 的路径/剪贴板已解析完成),
并在 `local` 之前加载(因此特定于机器的覆盖仍然具有最高优先级)。
## 该层包含的内容
| 文件 | 角色 |
|------|------|
| `offensive/offensive.zsh` | 在 `offensive` 阶段加载 — `HAVE_*` 检测,工具人机工程学,测试项目脚手架 |
| `offensive/tmux/tmux-eng.sh` | `prefix + e` 弹出窗口 — 模糊跳转到测试项目会话(Core sessionizer 的孪生兄弟) |
| `offensive/hacktheplanet` | CTF/HTB/测试项目命令速查表 — 每个服务/端口的复制粘贴语法(方法论地图下的现场参考)。在 vim 中按节折叠;symlink 到 `~/hacktheplanet`,通过 `htp` 打开 |
| `offensive/ippsec` | **方法论** — 提炼自 IppSec HTB 目录的工作流习惯 + 标志性动作(recon 循环,shell 稳定化,脚本化伪 shell,解困指南)。这是高于命令参考的*宏观视角*。相同的折叠 UX;symlink 到 `~/ippsec`,通过 `ipp` 打开 |
| `offensive/templates/pseudo-shell.py` | 可复用的 Python `cmd.Cmd` 伪 shell,用于 blind/awkward RCE(SSTI/injection/deserialization)— IppSec 的标志;复制到测试项目的 `exploit/` 目录中,并连接请求 + 捕获正则表达式 |
| `install/offensive-packages.txt` | apt 工具列表(在 OS + Core 层之后安装) |
| `OFFENSIVE-METHODOLOGY.md` | 支撑该层的 阶段 → MITRE ATT&CK → 工具映射图 |
| `PURPLE-TEAM.md` | `hacktheplanet` 的防御镜像 — 针对每种攻击的 Splunk/Sentinel 检测 + 事件 ID 参考(紫队视角 / 红队 OPSEC) |
| `offensive/companion` | 结构化且带有 ATT&CK 标签的红↔蓝队对照指南(`hacktheplanet`/`PURPLE-TEAM.md` 的配对兄弟)— 一个 **引入的 `git subtree`(来自 [dotgibson/htpx](https://github.com/dotgibson/htpx))**(来源记录在 `companion.lock` 中;使用 `scripts/sync-companion.sh` 重新同步)。symlink 到 `~/companion`,通过 `htpx` 浏览 |
与 Core 的原则相同:每个涉及可选工具的别名/函数都
由 `HAVE_*` flag 保护,因此在没有安装该工具的
机器上,该文件是**无副作用的**,而不会在 shell 启动时报错。
## 命令
| 命令 | 作用 |
|---------|--------------|
| `mkengagement ` | 在 `$ENGAGEMENTS_DIR` 下搭建带有日期的测试工作区,填充 `scope/scope.txt`,在 `$EDITOR` 中打开它,并 `cd` 进入(设置 `$ENGAGEMENT`) |
| `eng` | 通过 fzf 在现有测试项目间跳转;预览范围表 |
| `bhce [domain]` | 运行 NetExec 的 BloodHound CE 收集,将兼容 CE 的 zip 文件放入 `loot/bloodhound/` |
| `nmapsweep ` | 保守的 `-sCV` 扫描,所有格式的输出到 `./nmap/` |
| `logshell` | 将 `script(1)` 记录到测试项目的 `notes/` 中作为审计追踪 |
| `smb` / `ldap` / `winrm` | `nxc ` 的简写 |
| `seclists` | 带有 fzf 预览堆栈跳转到 `$SECLISTS_DIR` |
| `htp` / `ipp` / `xdev` / `evade` | 在 `$EDITOR` 中打开现场参考(`~/hacktheplanet` / `~/ippsec` / `~/exploitdev` / `~/evasion`) |
| `htpx` | 从 companion 中模糊选择一种攻击,在其配对的蓝队检测旁边预览,从 `$RHOST`/`$LHOST`/… 填充 `{{slots}}` 并复制 |
| `note ""` | 将带时间戳的内容追加到测试项目的 `notes.md`(IppSec 笔记准则);不带参数的 `note` 会打开它 |
| `cde` | `cd` 返回当前活动测试树(`$ENGAGEMENT`) |
| `lhost [iface]` | 打印你的攻击者/VPN IP(reverse shell 的 ``)— 优先使用 `tun0`,回退到主网卡 |
| `ttyup` | 打印预填了你本地 rows/cols 的 TTY 升级稳定序列 |
| `rocks ` | 打开针对某个技术/关键字的 `ippsec.rocks` 搜索 |
## tmux bindings
| 按键 | 弹出窗口 |
|---------|-------|
| `prefix + f` | **projects** — Core sessionizer(保持不变) |
| `prefix + e` | **engagements** — 创建或切换到测试项目会话 |
| `prefix + w` | **everything** — Core 菜单,当存在 `~/engagements` 时,现在会以 `◆` 行的形式显示测试项目 |
`prefix + e` 存在于这里(按键绑定在 `os/kali.conf` 中,脚本在
`offensive/tmux/` 中,由 `bootstrap.sh` symlink 到
`~/.config/tmux/scripts/tmux-eng.sh`)。`prefix + w` 属于 **Core** 但与测试项目*无关*:`◆`
部分仅在存在测试目录时渲染,因此它保持可移植性并
干净地同步到所有八个引入 Core 的仓库中。
## 测试项目工作区
测试项目**数据绝不存放在这个仓库中。** 它存放在 `$ENGAGEMENTS_DIR`
(默认为 `~/engagements`),位于任何 git 树之外;仓库中偏执的
`.gitignore` 只是一道最后防线。`mkengagement` 创建的目录结构:
```
~/engagements/-/
scope/scope.txt ← written & opened FIRST (ROE, auth ref, window, contacts)
recon/ scans/ web/ exploit/ screenshots/
loot/{creds,hashes,bloodhound}
report/ notes.md
```
## 真正会坑到你的工具笔记
**CrackMapExec 已经没了 — 现在是 `nxc`。** CME 于 2023 年被归档;
维护的继任者是 **NetExec**(`nxc`),并且它是套件中
最具杠杆效应的工具 — 通过一个可脚本化的接口在 SMB/LDAP/WinRM/MSSQL/
RDP/FTP/SSH 中进行认证、枚举、横向移动、
凭据提取和 BloodHound 收集。旧的 `cme` 肌肉记忆只需
变成 `nxc` 即可。
**BloodHound 现在是 BloodHound CE。** 旧版 4.x 收集器无法干净地导入
到 Community Edition 中。`bhce` 助手驱动 nxc 的 `--bloodhound` 模块,
该模块会打包一个兼容 CE 的 zip 文件。从其官方的
docker-compose 运行 BloodHound CE 本身 — 它是一个基于 Postgres 的 Web 应用程序,而不是一个 apt 包。
**仅限上游的工具。** 少数工具的更新速度比 Kali 仓库快,或者根本没有打包
— Sliver, Havoc, Caldera,有时包括 BBOT/ligolo-ng。`offensive-packages.txt`
标明了它们的安装方法(与 Core 在某些发行版上
用于 starship/atuin 的模式相同)。
**WSL2 是 NAT 模式。** WSL2 下 Kali 中的 listener / reverse shell / C2
无法从你的 LAN 访问,除非你在
**Windows 端**的 `%UserProfile%\.wslconfig`(Win11 22H2+)中设置 `networkingMode=mirrored` —
*而不是* `/etc/wsl.conf`。这会坑掉每一个 Responder/Sliver/Metasploit handler 设置。
**Debian 二进制文件重命名**(已由 Core 处理):`bat` 运行为 `batcat`,
`fd-find` 安装为 `fdfind`。Core 的 `tools.zsh` 解决了这两个问题,因此别名和
配置在这里保持不变地工作。
## 授权
该层中的每个工具仅用于**具有书面授权规则的已授权测试。**
脚手架(范围优先的工作区,`logshell` 审计追踪,数据保存在仓库之外)的存在
是为了将这种纪律变成一种机械化的操作,
而不是可有可无的。请参阅 `OFFENSIVE-METHODOLOGY.md` 了解完整的阶段 → ATT&CK
映射以及融入该层的 OPSEC 卫生规范。
## 测试项目工作流
```
mkengagement acme-external # scaffold ~/engagements/YYYYMMDD-acme-external, open scope/scope.txt
eng # fzf-jump between existing engagements; cd + sets $ENGAGEMENT
cd "$ENGAGEMENT/recon" # navigate into a subdir of the active engagement
logshell # record shell session via script(1) into notes/ for audit trail
nmapsweep 10.10.10.0/24 # conservative -sCV sweep, output into ./nmap/
```
标签:WSL2, 工作流, 开发环境, 插件系统, 数据展示, 红队, 终端配置, 网络安全研究, 逆向工具