๐กangr-PT
๊ฐ์
AngrPT์ ํต์ฌ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
IOCTL RIP๋ฒ์ ์ถ์
IOCTL ์ ์ฝ์กฐ๊ฑด ๋ถ์
์ ์ญ๋ณ์ ์ข ์์ฑ ๋ถ์

IOCTL RIP ์ถ์
๋ง์ ๋๋ผ์ด๋ฒ๊ฐ IoControl์ ์ด์ฉํ์ฌ ์ ์ ์ ์ํธ์์ฉ์ ํ๊ธฐ ๋๋ฌธ์ Windows Driver์ ๋ถ์์ ์์ด์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋๋ผ์ด๋ฒ๊ฐ ํน์ IoControl Code๋ฅผ ํตํด ์ด๋ ํ ๋์์ ํ๋์ง ์๋ณํ๋ ๊ฒ์ ๋๋ค.
IDA Hex Ray๊ฒฐ๊ณผ ์๋์ ๊ฐ์ด switch / case๋ฌธ์ผ๋ก ํํ๋๋ ๊ฒฝ์ฐ๋ ์์์ง๋ง, ๋๋ถ๋ถ์ Driver์ฝ๋๊ฐ ๊ฐ IoControl Code๊ฐ ํน์ ๋ณ์์์ Offset์ ๋นผ์ ๊ณ์ฐ์ด ๋์ด ๋ถ์์ ํฐ ์ด๋ ค์์ด ์์์ต๋๋ค.

๋๋ฌธ์ ์ ํฌ๋ ๊ฐ IoControl Code๋ฅผ ์๋ณํ๊ณ IDA Hex Ray๊ฒฐ๊ณผ์์ IoControl Code๋ณ ๋ฐ์ด๋๋ฆฌ์์Offset์ ์ ์ํ์ฌ ๋ถ์๊ฐ์ ํธ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
IOCTL ์ ์ฝ์กฐ๊ฑด ๋ถ์
๋๋ผ์ด๋ฒ๊ฐ ๋ค์ํ ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํด์๋ ์ ๊ฒ๋ ๋ช ๊ฐ ๋ง๊ฒ๋ ์์ญ๊ฐ์ IoControl Code๋ฅผ ๊ฐ์ง๋๋ค.
ex) ๋ฐฑ์ ๋๋ผ์ด๋ฒ์๊ฒฝ์ฐ 50๊ฐ ์ด์์ IOCTL์ด ์์์.
๊ฐ IoControl Code์๋ ์๋ก ๋ค๋ฅธ ์ ์ฝ ์กฐ๊ฑด์ด ์๊ณ , ๊ฐ ์ ์ฝ์กฐ๊ฑด์ ๋ถ์ํ๋ ๋ฐ์๋ ์๊ฐ์ด ์๋นํ ์์๋ฉ๋๋ค.
๋ง์ ์ ์ฝ์กฐ๊ฑด์ ๋ถ์ํ๋๋ฐ์ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด Symbolic Execution์ ์ด์ฉํ์ฌ ๊ฐ IOCTL๋ณ ์ ์ฝ์กฐ๊ฑด์ ๋ถ์ํ์ต๋๋ค.
๋ถ์๋ ์ ์ฝ์กฐ๊ฑด์ Fuzzing๊ณผ์ ์ค์ ์ ํจํ ์ฝ๋ ๋ถ๋ถ์ ์คํํ์ฌ ๋ ๋์ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ์ป๊ณ ๋ ๋ง์ Crash๋ฅผ ๋ฐ๊ฒฌํ ํ๋ฅ ์ ๋์ผ ์ ์์ต๋๋ค.
์ ์์ ์ธ ์ ์ฝ์กฐ๊ฑด์ ๊ตฌํ๊ธฐ ์ํ ๊ธฐ์ค์ IRP๊ตฌ์กฐ์ฒด์ IoStatus Code๋ฅผ Symbolic Variable๋ก ๋ง๋ค์ด ์๋ ๊ธฐ์ค์ ๋ฐ๋ผ ํ๋จํ์์ต๋๋ค.

์ ์ญ๋ณ์ ์ข
์์ฑ ๋ถ์
100๊ฐ ์ด์์ ๋๋ผ์ด๋ฒ๋ฅผ ๋ถ์ํ๋ฉด์ IoControl Code๊ฐ์ ์ข ์์ฑ์ผ๋ก ์ธํ ๋ฒ๊ทธ ์ผ์ด์ค๋ ์์์ต๋๋ค.
์ด๋ฌํ ๋ฒ๊ทธ ์ผ์ด์ค๋ค์ ํน์ง์ ๋์ผํ ์ ์ญ๋ณ์ ๊ณต์
๋ผ๋ ํน์ง์ด ์์์ต๋๋ค.
์ ์ญ๋ณ์์ข
์์ฑ์ผ๋ก ์ธํ ๋ฒ๊ทธ ์ผ์ด์ค๋ Fuzzing ๊ณผ์ ์ค์ ์๋ณํ๊ธฐ ์ํด Angr๋ฅผ ์ด์ฉํด ๋์ผํ ์ ์ญ๋ณ์๋ฅผ ๊ณต์
ํ๋ IoControl Code๋ฅผ ๊ทธ๋ฃนํ
ํ์ต๋๋ค.
๊ทธ๋ฃนํ๋
IoControl Code๋ค์ ์ดํ Fuzzing๋จ๊ฒ์์ ์ข
์์ฑ์ ๊ณ ๋ คํ ๋ฒ๊ทธ ์ผ์ด์ค๋ฅผ ์ฐพ๋๋ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.