๐Ÿ˜ก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๋‹จ๊ฒŒ์—์„œ ์ข…์†์„ฑ์„ ๊ณ ๋ คํ•œ ๋ฒ„๊ทธ ์ผ€์ด์Šค๋ฅผ ์ฐพ๋Š”๋ฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Last updated