์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฌด์์ ๋ณ์๋ฅผ ๋ฌด์ฐจ๋ณ ์ ์ผ๋ก ๋์ ํ์ฌ ์์คํ ์ fuzz ์ํค๋๊ฒ
์ด๋ฅผ ํตํด ์์คํ ์ ์ทจ์ฝ์ ์ ์ฐพ์ ์ ์๋ค.
Mutation์ ๊ฒฝ์ฐ ์ ๋ ฅ๊ฐ์ ์์ํ๊ฒ ๋๋ค์ผ๋ก ๋๋ ค ๋ฌด์์๋ก appendํ๊ฑฐ๋ replace ํ๋ค
Generation์ ๊ฒฝ์ฐ๋ ์ ๋ ฅ ๊ฐ์ ํฌ๋งท์ ์ดํดํ๊ณ ๋ฒ์๋ฅผ ์ ํ ํด์ฃผ๋ ๋์
ย |๊ตฌ๋ถ | Mutation | Generation|
ย |์ฅ์ | ์ดํด ํ์x ย | ์ดํด๋ง ํ๋ค๋ฉด ์๊ฐ ์ ์ฝ ๊ฐ๋ฅย |
ย |ย ๋จ์ | ๊ฒฝ๊ณ๊ฐ์ด ๋ถ ๋ถ๋ช ํจ | ์ด๋ ค์ด ๋์ด๋|
๋ฐ๋ผ์ ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๋ฐฉ๋ฒ์ ์์ด ์ฌ์ฉํด์ผ ํ ๊ฒ์ด๋ค(๋์ธ ๋๋ mutation๋ง..)
ํ์ฌ ํผ์ง์ ํ ์ ์๋ ์ ๋ง์ ํ์ด์ฌ ๋ชจ๋๋ค์ด ์คํ์์ค๋ก ํ๋ ค์๋ค ๋ฐ๋ผ์ ๊นํ๋ธ๋ฅผ ๋ค์ง๋ค๋ณด๋ฉด ์ฝ๊ฒ ์ฐพ์ ย ์ ์๋คย
์ถ์ฒ: https://github.com/dloss/python-pentest-tools
ํ์ง๋ง ๋ณธ๊ฒฉ์ ์ผ๋ก ํด์ ์ฌ์ฉํ๊ธฐ์ ์ ๊ฐ๋จํ ์ฝ๋ฉ์ ํตํด ์๋ฆฌ๋ฅผ ํ์ ํ๋ ๊ฒ์ด ๋ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค
๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ธ ์์ ๋ฅผ ํตํด ์๋ฆฌ๋ฅผ ์ตํ ๊ฒ์ด๋ค
ย https://www.slideshare.net/CodeEngn/2012-codeengn-conference-06-beist-everyone-has-his-or-her-own-fuzzer ย
codeengn์์ ๋ฐํ๋ fuzz์ ๋ํด ๋์์ด ๋ ์ ์๋ ์๋ฃ๋ฅผ ์ฐพ์๋ค
์๋ฆฌ๋ ๊ฐ๋จํ์ง๋ง ๊ทผ๋ณธ ์ ์ธ fuzz ์๊ณ ๋ฆฌ์ฆ์ ์ดํด ์์ผ ์ค ์ ์๋ ์์์ด๋ค
import os, sys, random
def go():
ย ย ย return random.randrange(0, 0x100)
while 1:
ย ย ย ย filesize = os.path.getsize("./fuz.bin")
ย ย ย ย fp = open("./fuz.bin", "rb++")
ย ย ย ย tmpoffset = random.randrange(0, filesize)
ย ย ย ย fp.seek(tmpoffset, 0)
ย ย ย ย fp.write("%c%c%c%c" % (go(), go(), go(), go()))#์
๋ ฅ๊ฐ ์ฝ์
ย ย ย ย fp.close()
ย ย ย ย os.system("./fuz.bin")#์คํ
์ค์ ๋ก ์์ 10์ค ์ง๋ฆฌ ์ฝ๋๊ฐ ํฌ๋์ฌ๋ฅผ ์ผ์ผํค๋ ๊ฒ์ ๋ณผ ์ ์์๋ค.
Tool ์ ์ฌ์ฉํ์ฌ ์ค์ ๋ก ์ค๋ฅ๊ฐ ๋ ์ง์ ์ ๋ฒกํฐ๋ก ํ์ฉํด ์ํ๋ ์์ ์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๊ตฌํ๊ณ ์ค์ต ํด๋ณผ ๊ฒ