Windows DLL์„ Linux ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๊ณ„์ธต์ธ LoadLibrary

ํƒ€๋น„์Šค ์˜ฌ๋จผ๋””(ํƒ€๋น„์Šค ์˜ค๋งŒ๋””), ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ธ Google์˜ ๋ณด์•ˆ ์—ฐ๊ตฌ์› LoadLibrary, Linux ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Windows์šฉ์œผ๋กœ ์ปดํŒŒ์ผ๋œ DLL ํฌํŒ…์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” PE/COFF ํ˜•์‹์˜ DLL ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๊ณ  ์—ฌ๊ธฐ์— ์ •์˜๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ด์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. PE/COFF ๋ถ€ํŠธ๋กœ๋”๋Š” ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ndiswrapper. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋ฐฐํฌ์ž GPLv2์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

LoadLibrary๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๊ณ  ๊ธฐ์กด ๊ธฐํ˜ธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜์—ฌ Linux ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— dlopen ์Šคํƒ€์ผ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ ์ฝ”๋“œ๋Š” gdb, ASAN ๋ฐ Valgrind๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Hook์„ ์—ฐ๊ฒฐํ•˜๊ณ  ํŒจ์น˜๋ฅผ ์ ์šฉ(๋Ÿฐํƒ€์ž„ ํŒจ์น˜)ํ•˜์—ฌ ์‹คํ–‰ ์ค‘์— ์‹คํ–‰ ์ฝ”๋“œ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. C++์— ๋Œ€ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐ ํ•ด์ œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋Š” Linux ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์—์„œ DLL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ถ„์‚ฐ ํผ์ง• ํ…Œ์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Windows์—์„œ ํผ์ง• ๋ฐ ์ ์šฉ ๋ฒ”์œ„ ํ…Œ์ŠคํŠธ๋Š” ๊ทธ๋‹ค์ง€ ํšจ์œจ์ ์ด์ง€ ์•Š์œผ๋ฉฐ ํŠนํžˆ ์ปค๋„๊ณผ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ๊ฑธ์ณ ์žˆ๋Š” ๋ฐ”์ด๋Ÿฌ์Šค ๋ฐฑ์‹  ์†Œํ”„ํŠธ์›จ์–ด์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ์ œํ’ˆ์„ ๋ถ„์„ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ณ„๋„์˜ ๊ฐ€์ƒํ™”๋œ Windows ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. Google ์—ฐ๊ตฌ์›๋“ค์€ LoadLibrary๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋””์˜ค ์ฝ”๋ฑ, ๋ฐ”์ด๋Ÿฌ์Šค ์Šค์บ๋„ˆ, ๋ฐ์ดํ„ฐ ์••์ถ• ํ•ด์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ด๋ฏธ์ง€ ๋””์ฝ”๋” ๋“ฑ์˜ ์ทจ์•ฝ์ ์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, LoadLibrary์˜ ๋„์›€์œผ๋กœ Windows Defender ๋ฐ”์ด๋Ÿฌ์Šค ๋ฐฑ์‹  ์—”์ง„์„ Linux์—์„œ ์‹คํ–‰๋˜๋„๋ก ํฌํŒ…ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Windows Defender์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” mpengine.dll์— ๋Œ€ํ•œ ์—ฐ๊ตฌ๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ํ˜•์‹์— ๋Œ€ํ•œ ๋‹ค์ˆ˜์˜ ์ •๊ตํ•œ ํ”„๋กœ์„ธ์„œ, ํŒŒ์ผ ์‹œ์Šคํ…œ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋ฐ ์ž ์žฌ์ ์œผ๋กœ ๋ฒกํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์–ธ์–ด ํ•ด์„๊ธฐ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค ๊ณต๊ฒฉ.

LoadLibrary๋Š” ์‹๋ณ„์—๋„ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ์ทจ์•ฝ์„ฑ Avast ๋ฐ”์ด๋Ÿฌ์Šค ๋ฐฑ์‹  ํŒจํ‚ค์ง€์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐ”์ด๋Ÿฌ์Šค ๋ฐฑ์‹ ์˜ DLL์„ ์—ฐ๊ตฌํ•œ ๊ฒฐ๊ณผ, ์ฃผ์š” ๊ถŒํ•œ ๊ฒ€์‚ฌ ํ”„๋กœ์„ธ์Šค์—๋Š” ํƒ€์‚ฌ JavaScript ์ฝ”๋“œ ์‹คํ–‰์„ ์—๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์™„์ „ํ•œ JavaScript ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์ƒŒ๋“œ๋ฐ•์Šค ํ™˜๊ฒฝ์—์„œ ๊ฒฉ๋ฆฌ๋˜์ง€ ์•Š๊ณ , ๊ถŒํ•œ์„ ์žฌ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ํ™•์ธ๋˜์ง€ ์•Š์€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์™€ ๊ฐ€๋กœ์ฑ„๋Š” ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณต์žกํ•˜๊ณ  ๋ณดํ˜ธ๋˜์ง€ ์•Š๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ทจ์•ฝ์ ์€ ์ž ์žฌ์ ์œผ๋กœ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ์›๊ฒฉ ์†์ƒ์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ LoadLibrary๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน์ˆ˜ ์…ธ์ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. AV์Šคํฌ๋ฆฝํŠธ Linux ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์—์„œ Avast ๋ฐ”์ด๋Ÿฌ์Šค ๋ฐฑ์‹  ์Šค์บ๋„ˆ์˜ ์ทจ์•ฝ์ ์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€