Simbiote๋Š” eBPF ๋ฐ LD_PRELOAD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆจ๊ธฐ๋Š” Linux ์•…์„ฑ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

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

Simbiote์˜ ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ์€ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐฐํฌ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” LD_PRELOAD ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋™์•ˆ ๋กœ๋“œ๋˜๊ณ  ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ผ๋ถ€ ํ˜ธ์ถœ์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์Šคํ‘ธํ•‘๋œ ํ˜ธ์ถœ ํ•ธ๋“ค๋Ÿฌ๋Š” ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก์˜ ํŠน์ • ํ•ญ๋ชฉ ์ œ์™ธ, /proc์˜ ํŠน์ • ํŒŒ์ผ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ฐจ๋‹จ, ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŒŒ์ผ ์ˆจ๊ธฐ๊ธฐ, ldd ์ถœ๋ ฅ์˜ ์•…์„ฑ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ์™ธ(execve ํ•จ์ˆ˜ ํ•˜์ด์žฌํ‚น ๋ฐ ํ˜ธ์ถœ ๋ถ„์„)์™€ ๊ฐ™์€ ๋ฐฑ๋„์–ด ๊ด€๋ จ ํ™œ๋™์„ ์ˆจ๊น๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ LD_TRACE_LOADED_OBJECTS)๋Š” ์•…์˜์ ์ธ ํ™œ๋™๊ณผ ๊ด€๋ จ๋œ ๋„คํŠธ์›Œํฌ ์†Œ์ผ“์„ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŠธ๋ž˜ํ”ฝ ๊ฒ€์‚ฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด libpcap ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋Šฅ์ด ์žฌ์ •์˜๋˜๊ณ , /proc/net/tcp ์ฝ๊ธฐ ํ•„ํ„ฐ๋ง๊ณผ eBPF ํ”„๋กœ๊ทธ๋žจ์ด ์ปค๋„์— ๋กœ๋“œ๋˜์–ด ํŠธ๋ž˜ํ”ฝ ๋ถ„์„๊ธฐ์˜ ์ž‘๋™์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ž์ฒด ๋„คํŠธ์›Œํฌ ํ•ธ๋“ค๋Ÿฌ์— ๋Œ€ํ•œ ํƒ€์‚ฌ ์š”์ฒญ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. eBPF ํ”„๋กœ๊ทธ๋žจ์€ ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ์„ธ์„œ ์‚ฌ์ด์—์„œ ์‹คํ–‰๋˜๊ณ  ๋„คํŠธ์›Œํฌ ์Šคํƒ์˜ ๊ฐ€์žฅ ๋‚ฎ์€ ์ˆ˜์ค€์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‚˜์ค‘์— ์‹คํ–‰๋˜๋Š” ๋ถ„์„๊ธฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฐฑ๋„์–ด์˜ ๋„คํŠธ์›Œํฌ ํ™œ๋™์„ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Simbiote๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€ ํ™œ๋™ ๋ถ„์„๊ธฐ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ฐ€ ๋ฐ์ดํ„ฐ ๋„๋‚œ์€ ํŒŒ์ผ์„ ์—ฌ๋Š” ์ˆ˜์ค€์ด ์•„๋‹ˆ๋ผ ํ•ฉ๋ฒ•์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์˜ ์ฝ๊ธฐ ์ž‘์—…์„ ๊ฐ€๋กœ์ฑ„๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์˜ˆ: ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋Œ€์ฒด). ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ๋ฐ์ดํ„ฐ์—์„œ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ๋กœ๊ทธ์ธ์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Simbiote๋Š” ์ผ๋ถ€ PAM ํ˜ธ์ถœ(ํ”Œ๋Ÿฌ๊ทธํ˜• ์ธ์ฆ ๋ชจ๋“ˆ)์„ ๊ฐ€๋กœ์ฑ„๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ๊ณต๊ฒฉ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ SSH๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HTTP_SETTHIS ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ฃจํŠธ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋†’์ด๋Š” ์ˆจ๊ฒจ์ง„ ์˜ต์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Simbiote - eBPF ๋ฐ LD_PRELOAD๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆจ๊ธฐ๋Š” Linux ์•…์„ฑ์ฝ”๋“œ


์ถœ์ฒ˜ : opennet.ru

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