[Security] Fuzzer, Fuzzing ์ด๋?
์ค๋์ Fuzzer, Fuzzing์ ๋ํด์ ๊ฐ๋จํ๊ฒ ๋ค๋ค๋ณด๋ ค๊ณ ํ๋ค
"Fuzzing refers to a process of repeatedly running a program with generated inputs to test if a program violates a correctness policy." ๋ผ๊ณ ํ๋ค.
๊ฑ ์ทจ์ฝ์ ๋ถ์์ ์ํด์ ์ธํ์ ๋ฐ๋ณตํด์ ์์ฒญ ๋ง์ด ๋ฃ์ด๋ด์(๋๋คํ๋ ์ ๋๋คํ๋ ) ๋ฒ๊ทธ๊ฐ์ ๊ฑฐ ์๋์ง ํ์ธํ๋ ๊ฑฐ๋ค!!!! ๊ทธ ๋ด๊ฐ Python ํตํด์ Blind SQL Injection ์๋ํ ๋๊ตฌ ๋ง๋ค๋ ค๊ณ ํ๋๊ฑฐ๋ ๋น์ทํ๊ฑธ๋ก ๋ณด์ธ๋ค(์๋ง?)
๊ทผ๋ฐ ์ผ๋จ ์ Python ํตํด์ ๋ง๋๋๊ฑฐ๋ ในใ
๋ก ๋น์ทํ ๊ฑฐ๋ฉด fuzzer ๋ง๋๋๊ฑด ๊ฝค๋ ๋ด ์ทจํฅ์ผ ์๋...? ์๋๋ฉด ๊ฐ๋ฐ๋ ์ฌ๋ฐ๊ณ ๋ณด์๋ ์ฌ๋ฐ๊ธฐ ๋๋ฌธ์ด๋ค ํคํน ์ด๊ฑฐ ๋ ์ผ๊ธฐ์ค๋ฌ์ด ํฌ์คํธ๊ฐ์๋ฐ ใ
ใ
ใ
,, ํน์๋ ์ด ๊ธ์ ๋ณธ๋ค๋ฉด ๋ฌด์ํด๋ ๋๋ค.. ์ฌ์ค ์ง๊ธ ๋ฐฐ๊ฐ ์ํ์ ์ ์ ์ด ์๋น ใ
ใ
ํผ์ง์ ํ์ฌ ์๋ ์ ๋ณด์ ์์ผ๋ก ๊ตฌ๋ถํ ์์๋๋ฐ ์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.
- Black-box Fuzzing: ๊ฑ ๋ด๋ถ ๊ตฌ์กฐ ๋ชจ๋ฅด๊ณ ์ธํ ์์ํ๋ง ์ ์ ์๋ ์ํ์์ ํผ์ง
- White-box Fuzzing: ํ๋ก๊ทธ๋จ ๋ด๋ถ ๊ตฌ์กฐ ์๋ ์ํ์์ ํผ์ง
- Grey-box Fuzzing: ํ๋ก๊ทธ๋จ ๋ด๋ถ์ ์ผ๋ถ๋ฅผ ์๋ ์ํฉ์์ ํผ์ง
๊ฑ ๋ด๊ฐ ํ์๊ธฐ์์ ๋ฐฐ์ ๋ ๋ธ๋(๊ทธ๋ ์ด,ํ์ดํธ)๋ฐ์ค ์ดํ์ด๋ ๋๊ฐ๋ค. (black box attack์ ๊ฑ ํผ์ง์ด๋ ๋จ์ด๋ฅผ ์์์ attack์ผ๋ก ๋ฐ๊พธ๋ฉด ๋๋ค)
ํผ์ง์ ํน์ง์ ๋ณผ๊น?
- protocol/file-format dependant
- data-type dependant
์ด๋ค!!! ์๋ํ๋ฉด ! ๊ฒฐ๊ตญ fuzzing์ด๋ผ๋ ๊ฒ์ input์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ธ๋ฐ, ๊ทธ ์ธํ ์นธ์ ํ์/ํ์
์ด ๋ง๋ ๊ฒ์ ๋ฃ์ด์ผ ๊ฒฐ๊ณผ๊ฐ ๋์๊ฐ ๊ฑฐ๊ธฐ ๋๋ฌธ์ด๋ค!!! ๊ทธ๋๊น ๋ฐ์ดํฐ๋ฅผ ํ์์ ์ ๋ง์ถฐ์ ๋ฃ์ด์ฃผ์
๊ทธ๋ผ ํผ์ง์ ์ด๋ป๊ฒ ํ๋ฉด ํจ์จ์ ์ผ๊น?
์ด๋ฏธ ์ํํ๋ค๊ณ ํ๋จ๋๋/์์๋๋ ์ธํ ๊ฐ(=fuzz vector)๋ค์ (์๋๋ฉด ์ด๋๋ค์ ์กฐํฉ์) ๋จผ์ ์ธํ๊ฐ์ด ๋ฃ์ด๋ณด๋๊ฑฐ๋ค. ๊ตณ์ด ๊ฐ๋ฅ์ฑ๋ ๋ฎ์ ๊ฐ์ ๋ฃ์ผ๋ฉด ๋นํจ์จ์ ์ผํ ๋๊น!
- for integers: zero, possibly negative or very big numbers
- for chars: escaped, interpretable characters / instructions (ex: For SQL Requests, quotes / commandsโฆ)
- for binary: random ones
ํผ์ง์ ์ข
๋ฅ์๋ ์ฌ๋ฌ๊ฐ์ง ์ข
๋ฅ๊ฐ ์๋๋ฐ ์ง๊ธ ๋ฐฐ๊ฐ ๋ ์ํ์ ์ฌ๊ธฐ์ ๋ง๋ฌด๋ฆฌํ๋๋ก ํ๊ฒ ๋ฐ...์๋ฝ...
Reference
https://ndb796.tistory.com/522
https://owasp.org/www-community/Fuzzing