๐ Introduction
Brute Force ๊ณต๊ฒฉ์ ์ง์ ๋ wordlist ๋๋ ๋ฌธ์ ํจํด์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ๋ณต์ ์ธ ์น ์์ฒญ์ ๋ฐ์์์ผ ๋ณด์์ ์ธ ๋ฌธ์ ๋ฅผ ๋ง๋ค์ด๋ด๋ ๊ณต๊ฒฉ ๊ธฐ๋ฒ์ ๋๋ค. ์ด๋ฌํ ๊ฐ๋ ์ Fuzzing๊ณผ ์ ์ฌํ๋ Fuzzing์ ์๋ชป๋ ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด ์๋น์ค์ ๊ฒฐํจ์ ์ ๋ํ๋ค๋ฉด, Brute force๋ Password์ ๋ํ ๊ณต๊ฒฉ๊ณผ ๊ฐ์ด ํ์ฉ๋ ๊ฐ์ ์ฐพ๊ธฐ ์ํด ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ์์ ๋๋ค.
์ํธํ์์ ํน์ ํ ์ํธ๋ฅผ ํ๊ธฐ ์ํด ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ ๋์ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๐ก Offensive techniques
Testing method
Brute force๋ ๋ณดํต brute force ๋๋ fuzzer๋ฅผ ์ด์ฉํ๊ฑฐ๋ ๋ฐ๋ก ์คํฌ๋ฆฝํ ํ์ฌ ํ ์คํธํฉ๋๋ค.
Wordlists
Wordlist๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ํ์ ์ธ ์ ์ฅ์๊ฐ SecLists์ ๋๋ค.
Fuzzer
Scripting
์๋๋ form์ ๋์์ผ๋กํ Ruby script์ ๋๋ค.
|
|
Bypass protection
Password Spraying
๋ง์ฝ ๋ก๊ทธ์ธ ํ์ด์ง ๋ฑ์์ ๊ฐ ๊ณ์ ๋ณ๋ก Brute force์ ๋ํ ๋์ ๋ก์ง์ด ์๋ ๊ฒฝ์ฐ ๋ฐ๋๋ก ํจ์ค์๋๋ฅผ ๊ณ ์ ํ๊ณ , User list๋ฅผ ์ด์ฉํ์ฌ Brute force๋ฅผ ์ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํํ๋ ๊ด๋ฆฌ์๊ฐ ์ ๊ท ๊ณ์ ์ ๋ํด ํจ์ค์๋๋ฅผ ๊ณ ์ ํด์ ์์ฑํ๋ ์๋น์ค์์ ์ ์ฉํ๋ฉฐ ID ๊ธฐ๋ฐ์ ๋ณดํธ ์ ์ฑ ์ ๋ฌด์ํ๋ฉด์ ๋ค์์ ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
- ID:
admin
,qateam
,infrateam
….something
- PW:
default_password
Bypass rate limit (slow scan)
Brute Force์ ๋ํ ๋์์ธ Rate limit์ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ ์ ์๋ ์๊ฐ ๋๋ ๊ฐฏ์๋ฅผ ๋ช ์ํ๋ ํํ์ ๋์ ๋ฐฉ์์ ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ํ ์คํ ์ ํตํด ์๊ฐ/Req์ ๊ฐ๊ฒฉ์ ์ ์ถํ ํ ์ ๋นํ Delay๋ฅผ ์ฃผ์ด limit ๊ฑธ๋ฆฌ์ง ์๊ณ Brute Force๋ฅผ ์งํํ ์ ์์ต๋๋ค.
|
|
Bypass rate limit (many req)
์๋น์ค๊ฐ ์ฌ๋ฌ Hop์ผ๋ก ๊ตฌ์ฑ๋๊ณ ํน์ ๊ตฌ๊ฐ์์ Rate limit์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ ์์ฃผ ๋จ์๊ฐ์ ์์ฒญ๋๊ฒ ๋ง์ Request๋ฅผ ์์ฑํ๊ณ ๋์์ ์ ์กํ์ฌ Rate limit์ผ๋ก ์ ํ๋๊ธฐ ์ ์ต๋ํ ๋ง์ Req๋ฅผ ์ ํ ๊ตฌ์ญ ๋ค๋ก ๋๊ธฐ๋ ํํ์ ์ฐํ ๋ฐฉ๋ฒ๋ ์กด์ฌํฉ๋๋ค. ์ด๋ฌํ ํํ์ ๋ฐฉ๋ฒ์ ์ผ๋ฐ์ ์ธ Fuzzer๋ก๋ ์ด๋ ต๊ณ , ๋์์ฑ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋๋ก ์ง์ ๊ตฌํํ ์ฝ๋ ๋๋ ํ๊ฒฝ์ด๋ Burpsuite์ Turbo Intruder๋ก ํ ์คํ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฐ๋จํ ๋ฐฉ๋ฒ์ ํ๋ ์๊ฐํ์๋ฉด ๋จผ์ Req ํ๋ฆ์ ์๋์ ๊ฐ์ด ๊ตฌ์ฑํฉ๋๋ค.
Client -> GW -> Target server
์ดํ GW์์ ์์ฒญ์ ์ก์ ์ ์กํ์ง ์๊ณ ๋ค๊ณ ์๋ค๊ฐ ํน์ ๊ฐฏ์๋งํผ ์์ด๋ฉด ํ๋ฒ์ ๋์ ์ ์กํ๋ ํํ๋ก ๊ตฌ์ฑํด๋ณผ ์ ์์ต๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ Client์์ Request๋ฅผ ์์ฑํ๊ณ ์ ๋ฌํ๊ธฐ ์ํด ์์๋๋ ์๊ฐ์ ์๋ ์ ์์ต๋๋ค.
- Req * 100000 ์์ฑ ๋ฐ ์์ฐจ ์ ์ก
- GW์์ ๋ชจ๋ ์์ฒญ์ ์ก์๋๊ณ ์์
- ํน์ ์กฐ๊ฑด์ด๋ ๊ณต๊ฒฉ์์ trigger์ ์ํด GW์์ ๋์์ ๋์ ์ ์ก
- ๋์ ์๋ฒ์๋ ๋จ์๊ฐ์ ๋ง์ Request์ ๋์์ ๋ฐ์ํ๊ฒ ๋จ
Bypass rate limit (big query)
๋๋๋ก ์๋น์ค์์ Array ํํ์ Arguments๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์ฌ๋ฌ๊ฐ์ Login ์ ๋ณด๋ฅผ ๋ด์ ํฐ Request๋ฅผ ์ ์กํ์ฌ ํ๋ฒ์ Request์ ๋ง์ ํ ์คํธ๋ฅผ ์ํํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
|
|
Bypass IP Check
๋ก๊ทธ์ธ ํ์ด์ง ๋ฑ์์ ์ฌ์ฉ์์ ์ธ์ ์ ์๋ณํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ณดํต IP ๊ธฐ๋ฐ์ผ๋ก ์ ํํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์ง์ IP๋ฅผ Rotate ์ํค๊ฑฐ๋ X-Forwarded-For ๋ฑ IP๋ฅผ ์์ผ ์ ์๋ ํค๋๋ฅผ ์ด์ฉํ์ฌ ์ฐํ๋ฅผ ์๋ํ ์ ์์ต๋๋ค.
์๋๋ ZAP Fuzzer์์ Random IP ๊ธฐ๋ฐ์ผ๋ก X-Forwarded-For๋ฅผ ์์ฑํ๋ ์คํฌ๋ฆฝํธ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ Random IP in X-Forwarded-For in ZAP ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์!
|
|
๐ก Defensive techniques
Rate limit
Brute Force์ ๋ํ ๋์๋ฐฉ์์ผ๋ก ์๊ฐ/Req ๋จ์๋ก limit์ ๊ฑธ์ด ๋ฐ๋ณต ์์ฒญ์ ํ๋ค์ ๋์ผ ์ ์์ต๋๋ค. ๋ค๋ง ๊ณต๊ฒฉ์๊ฐ ์กฐ๊ฑด์ ํ์ ํ๋ ๊ฒฝ์ฐ ์ฐํํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๊ฐ์ง ๋ณด์ ๋ก์ง์ ๋์์ ์ ์ฉํ์ฌ ํ๋ค์ ๋์ด๋ ๋ฐฉ๋ฒ์ด ์ข์ต๋๋ค.
- x ํ ์ด์ ์คํจ ์ IP ์ ํ (ํน์ ์๊ฐ ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ ๊ด๋ฆฌ์ ๋ฌธ์๋ก ํด์๋๋๋ก)
- x ์ด ๋ด x ํ ์ด์ ์์ฒญ ์ IP ์ ํ
- x ํ ์ด์ ์์ฒญ ์ IP ์ ํ
- 1ํ ์์ฒญ ํ x ์ด์ delay๋ฅผ ๊ฐ์ง๋๋ก ๊ตฌํ
- ๋ฑ ์ ํํ ์ ์๋ ๋ชจ๋ ๋ฐฉ๋ฒ
Captcha
Captcha ๋ํ Brute Force์ ๋ํ ์ข์ ์ํ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค. IP๋ Sessions ๋ฑ์ ํน์ ํ์ ์ด์ ์์ฒญ์ด ๋ฐ์ํ๊ฑฐ๋, ๋๋ ์ค์ ๊ธฐ๋ฅ์ธ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด captcha๋ฅผ ์๊ตฌํ์ฌ ์๋ํ๋ ๋๊ตฌ๋ก ๋ฐ๋ณต ์์ฒญ์ ํ ์ ์๋๋ก ์ ํํ ์ ์์ต๋๋ค.
๐น Tools
- https://github.com/danielmiessler/SecLists
- ZAP Fuzzer
- Burpsuite - Turbo Intruder
- Burpsuite - Intruder
- FFUF