AI-Assisted Fuzzing & Automated Vulnerability Discovery
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
๊ฐ์
๋ํ ์ธ์ด ๋ชจ๋ธ(LLM)์ ์๋ฏธ์ ์ผ๋ก ํ๋ถํ ์ ๋ ฅ์ ์์ฑํ๊ณ , ๋ฌธ๋ฒ์ ๋ฐ์ ์ํค๋ฉฐ, ์ถฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ก ํ๊ณ , ์ฌ์ง์ด ๋ค์ค ๋ฒ๊ทธ ํจ์น๋ฅผ ์ ์ํจ์ผ๋ก์จ ์ ํต์ ์ธ ์ทจ์ฝ์ ์ฐ๊ตฌ ํ์ดํ๋ผ์ธ์ ๊ฐํํ ์ ์์ต๋๋ค. ์ด ํ์ด์ง๋ DARPA์ AI ์ฌ์ด๋ฒ ์ฑ๋ฆฐ์ง(AIxCC) ๊ฒฐ์น ๋ฐ ๊ธฐํ ๊ณต๊ฐ ์ฐ๊ตฌ์์ ๊ด์ฐฐ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ํจํด์ ์์งํฉ๋๋ค.
๋ค์ ๋ด์ฉ์ ํน์ ๊ฒฝ์ ์์คํ ์ ๋ํ ์ค๋ช ์ด ์๋๋ผ, ์ฌ๋ฌ๋ถ์ด ์์ ์ ์ํฌํ๋ก์ฐ์์ ์ฌํํ ์ ์๋๋ก ๊ธฐ์ ์ ์ถ์ํ์ ๋๋ค.
1. LLM-์์ฑ ์๋ ์ ๋ ฅ
์ ํต์ ์ธ ์ปค๋ฒ๋ฆฌ์ง ๊ธฐ๋ฐ ํผ์ (AFL++, libFuzzer, Honggfuzzโฆ)๋ ์์ ์๋ ์งํฉ์ผ๋ก ์์ํ์ฌ ๋ฐ์ดํธ๋ฅผ ๋งน๋ชฉ์ ์ผ๋ก ๋ณํํฉ๋๋ค. ๋์ ์ ๋ ฅ ํ์์ด ๋ณต์กํ ๋(SQL, URL, ์ฌ์ฉ์ ์ ์ ์ด์ง ํ๋กํ ์ฝ) ๋ฌด์์ ๋ณํ์ ์ข ์ข ํฅ๋ฏธ๋ก์ด ๋ถ๊ธฐ๊ฐ ๋๋ฌํ๊ธฐ ์ ์ ๊ตฌ๋ฌธ์ ๊นจ๋จ๋ฆฝ๋๋ค.
LLM์ ์๋ ์์ฑ๊ธฐ๋ฅผ ๋ฐฉ์ถํ์ฌ ์ด ๋ถํธ์คํธ๋ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. โ ๊ตฌ๋ฌธ์ ์ผ๋ก ์ฌ๋ฐ๋ฅด์ง๋ง ๋ณด์ ๊ด๋ จ ์ ๋ ฅ์ ์ถ๋ ฅํ๋ ์งง์ ์คํฌ๋ฆฝํธ์ ๋๋ค. ์๋ฅผ ๋ค์ด:
SYSTEM: You are a helpful security engineer.
USER:
Write a Python3 program that prints 200 unique SQL injection strings targeting common anti-pattern mistakes (missing quotes, numeric context, stacked queries). Ensure length โค 256 bytes / string so they survive common length limits.
# gen_sqli_seeds.py (truncated)
PAYLOADS = [
"1 OR 1=1 -- ",
"' UNION SELECT NULL,NULL--",
"0; DROP TABLE users;--",
...
]
for p in PAYLOADS:
print(p)
ํ ๋ฒ ์คํํ๊ณ ์ถ๋ ฅ์ ํผ์ ์ ์ด๊ธฐ ์ฝํผ์ค์ ์ง์ ๊ณต๊ธํฉ๋๋ค:
python3 gen_sqli_seeds.py > seeds.txt
afl-fuzz -i seeds.txt -o findings/ -- ./target @@
์ด์ :
- ์๋ฏธ์ ์ ํจ์ฑ โ ์ด๊ธฐ ๋ ๊น์ ์ปค๋ฒ๋ฆฌ์ง.
- ์ฌ์์ฑ ๊ฐ๋ฅ: ํ๋กฌํํธ๋ฅผ ์กฐ์ ํ์ฌ XSS, ๊ฒฝ๋ก ํ์, ์ด์ง ๋ธ๋กญ ๋ฑ์ ์ง์ค.
- ์ ๋ ดํจ (< 1 ยข with GPT-3.5).
ํ
- ๋ชจ๋ธ์๊ฒ ํ์ด๋ก๋ ๊ธธ์ด์ ์ธ์ฝ๋ฉ (UTF-8, URL-encoded, UTF-16-LE)์ ๋ค์ํํ๋๋ก ์ง์ํ์ฌ ํ๋ฉด์ ์ธ ํํฐ๋ฅผ ์ฐํํ๋๋ก ํ์ธ์.
- ๋จ์ผ ์๊ธ์์กฑ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฒญํ์ธ์ โ JSON ํ์ ๋ฌธ์ ๋ฅผ ํผํ ์ ์์ต๋๋ค.
2. ๋ฌธ๋ฒ ์งํ ํผ์ง
๋ ๊ฐ๋ ฅํ ๋ณํ์ LLM์ด ๊ตฌ์ฒด์ ์ธ ์๋ ๋์ ๋ฌธ๋ฒ์ ์งํํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ํฌํ๋ก์ฐ (โGrammar Guyโ ํจํด)๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ๋กฌํํธ๋ฅผ ํตํด ์ด๊ธฐ ANTLR/Peach/LibFuzzer ๋ฌธ๋ฒ์ ์์ฑํฉ๋๋ค.
- N ๋ถ ๋์ ํผ์งํ๊ณ ์ปค๋ฒ๋ฆฌ์ง ๋ฉํธ๋ฆญ (ํํธ๋ ์ฃ์ง / ๋ธ๋ก)์ ์์งํฉ๋๋ค.
- ์ปค๋ฒ๋์ง ์์ ํ๋ก๊ทธ๋จ ์์ญ์ ์์ฝํ๊ณ ์์ฝ์ ๋ชจ๋ธ์ ํผ๋๋ฐฑํฉ๋๋ค:
์ด์ ๋ฌธ๋ฒ์ ํ๋ก๊ทธ๋จ ์ฃ์ง์ 12 %๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ต๋๋ค. ๋๋ฌํ์ง ์์ ํจ์: parse_auth, handle_upload. ์ด๋ฅผ ์ปค๋ฒํ๊ธฐ ์ํด ๊ท์น์ ์ถ๊ฐ/์์ ํ์ธ์.
- ์๋ก์ด ๊ท์น์ ๋ณํฉํ๊ณ , ๋ค์ ํผ์งํ๊ณ , ๋ฐ๋ณตํฉ๋๋ค.
์์ฌ ์ฝ๋ ์ค์ผ๋ ํค:
for epoch in range(MAX_EPOCHS):
grammar = llm.refine(grammar, feedback=coverage_stats)
save(grammar, f"grammar_{epoch}.txt")
coverage_stats = run_fuzzer(grammar)
์ฃผ์ ์ฌํญ:
- ์์ฐ์ ์ ์งํ์ธ์ โ ๊ฐ ์์ ์ ํ ํฐ์ ์ฌ์ฉํฉ๋๋ค.
- ๋ชจ๋ธ์ด ๋ค์ ์ฐ๊ธฐ๋ณด๋ค๋ ํธ์งํ๋๋ก
diff+patch์ง์นจ์ ์ฌ์ฉํ์ธ์. - ฮcoverage < ฮต์ผ ๋ ์ค์งํ์ธ์.
3. ์์ด์ ํธ ๊ธฐ๋ฐ PoV (์ต์คํ๋ก์) ์์ฑ
์ถฉ๋์ด ๋ฐ๊ฒฌ๋ ํ์๋ ์ด๋ฅผ ๊ฒฐ์ ์ ์ผ๋ก ์ ๋ฐํ๋ **์ทจ์ฝ์ ์ฆ๋ช (PoV)**์ด ํ์ํฉ๋๋ค.
ํ์ฅ ๊ฐ๋ฅํ ์ ๊ทผ ๋ฐฉ์์ ์์ฒ ๊ฐ์ ๊ฒฝ๋ ์์ด์ ํธ (<process/thread/container/prisoner>)๋ฅผ ์์ฑํ์ฌ ๊ฐ๊ฐ ๋ค๋ฅธ LLM (GPT-4, Claude, Mixtral) ๋๋ ์จ๋ ์ค์ ์ ์คํํ๋ ๊ฒ์ ๋๋ค.
ํ์ดํ๋ผ์ธ:
- ์ ์ /๋์ ๋ถ์์ด ๋ฒ๊ทธ ํ๋ณด (์ถฉ๋ PC, ์ ๋ ฅ ์ฌ๋ผ์ด์ค, ์ํ์ด์ ๋ฉ์์ง๋ฅผ ํฌํจํ ๊ตฌ์กฐ์ฒด)๋ฅผ ์์ฑํฉ๋๋ค.
- ์ค์ผ์คํธ๋ ์ดํฐ๊ฐ ํ๋ณด๋ฅผ ์์ด์ ํธ์ ๋ฐฐํฌํฉ๋๋ค.
- ์์ด์ ํธ ์ถ๋ก ๋จ๊ณ:
a.
gdb+ ์ ๋ ฅ์ผ๋ก ๋ก์ปฌ์์ ๋ฒ๊ทธ๋ฅผ ์ฌํํฉ๋๋ค. b. ์ต์ํ์ ์ต์คํ๋ก์ ํ์ด๋ก๋๋ฅผ ์ ์ํฉ๋๋ค. c. ์๋๋ฐ์ค์์ ์ต์คํ๋ก์์ ๊ฒ์ฆํฉ๋๋ค. ์ฑ๊ณต ์ โ ์ ์ถํฉ๋๋ค. - ์คํจํ ์๋๋ ์ปค๋ฒ๋ฆฌ์ง ํผ์ง์ ์ํ ์๋ก์ด ์๋๋ก ์ฌํ๋ฉ๋๋ค (ํผ๋๋ฐฑ ๋ฃจํ).
์ฅ์ :
- ๋ณ๋ ฌํ๋ ๋จ์ผ ์์ด์ ํธ์ ์ ๋ขฐ์ฑ ๋ถ์กฑ์ ์จ๊น๋๋ค.
- ๊ด์ฐฐ๋ ์ฑ๊ณต๋ฅ ์ ๋ฐ๋ผ ์จ๋/๋ชจ๋ธ ํฌ๊ธฐ๋ฅผ ์๋ ์กฐ์ ํฉ๋๋ค.
4. ๋ฏธ์ธ ์กฐ์ ๋ ์ฝ๋ ๋ชจ๋ธ์ ํตํ ์งํฅ ํผ์ง
์ทจ์ฝ์ ํจํด (์ ์ ์ค๋ฒํ๋ก์ฐ, ๋ฒํผ ๋ณต์ฌ, ํฌ๋งท ๋ฌธ์์ด)๋ก ๋ ์ด๋ธ์ด ์ง์ ๋ C/C++ ์์ค์์ ์คํ ์จ์ดํธ ๋ชจ๋ธ (์: Llama-7B)์ ๋ฏธ์ธ ์กฐ์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์:
- ์ ์ ๋ถ์์ ์คํํ์ฌ ํจ์ ๋ชฉ๋ก + AST๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ๋ชจ๋ธ์ ํ๋กฌํํธ: โํจ์ X์์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๊นจ๋จ๋ฆด ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ณ์ด ์ฌ์ ํญ๋ชฉ์ ์ ๊ณตํ์ธ์โ.
- ์ด๋ฌํ ํ ํฐ์ ์ฌ์ฉ์ ์ ์
AFL_CUSTOM_MUTATOR์ ์ฝ์ ํฉ๋๋ค.
sprintf ๋ํผ์ ๋ํ ์์ ์ถ๋ ฅ:
{"pattern":"%99999999s"}
{"pattern":"AAAAAAAA....<1024>....%n"}
๊ฒฝํ์ ์ผ๋ก ์ด๋ ์ค์ ํ๊ฒ์์ ์ถฉ๋ ์๊ฐ ๋จ์ถ์ 2๋ฐฐ ์ด์ ์ฆ๊ฐ์ํต๋๋ค.
5. AI-Guided Patching Strategies
5.1 Super Patches
๋ชจ๋ธ์๊ฒ ์ถฉ๋ ์๋ช ์ ํด๋ฌ์คํฐ๋ง ํ๋๋ก ์์ฒญํ๊ณ ๊ณตํต ๊ทผ๋ณธ ์์ธ์ ์ ๊ฑฐํ๋ ๋จ์ผ ํจ์น๋ฅผ ์ ์ํฉ๋๋ค. ํ ๋ฒ ์ ์ถํ๋ฉด ์ฌ๋ฌ ๋ฒ๊ทธ๋ฅผ ์์ ํ ์ ์์ต๋๋ค โ ์๋ชป๋ ํจ์น๊ฐ ์ ์๋ฅผ ์๊ฒ ํ๋ ํ๊ฒฝ์์ ์ ํ๋ ํจ๋ํฐ๊ฐ ์ค์ด๋ญ๋๋ค.
ํ๋กฌํํธ ๊ฐ์:
Here are 10 stack traces + file snippets. Identify the shared mistake and generate a unified diff fixing all occurrences.
5.2 ์ถ์ธก ํจ์น ๋น์จ
ํ์ธ๋ PoV ๊ฒ์ฆ ํจ์น์ ์ถ์ธก ํจ์น(ํฌ์ธํธ ์์)๊ฐ ์ ์ ๊ท์น์ ๋ง์ถฐ 1:โN ๋น์จ๋ก ๊ต์ฐจ๋๋๋ก ํ๋ฅผ ๊ตฌํํฉ๋๋ค(์: 2 ์ถ์ธก : 1 ํ์ธ). ๋น์ฉ ๋ชจ๋ธ์ ํจ๋ํฐ์ ํฌ์ธํธ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ N์ ์๋์ผ๋ก ์กฐ์ ํฉ๋๋ค.
๋ชจ๋ ๊ฒ์ ํตํฉํ๊ธฐ
์๋ ํฌ ์๋ CRS(์ฌ์ด๋ฒ ์ถ๋ก ์์คํ )๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ ์์๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค:
graph TD
subgraph Discovery
A[LLM Seed/Grammar Gen] --> B[Fuzzer]
C[Fine-Tuned Model Dicts] --> B
end
B --> D[Crash DB]
D --> E[Agent PoV Gen]
E -->|valid PoV| PatchQueue
D -->|cluster| F[LLM Super-Patch]
PatchQueue --> G[Patch Submitter]
References
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


