BPF ํํฐ๋ฅผ ์ ์ฉํ๋ BPFDoor ๋ฆฌ๋ ์ค ์ ์ฑ์ฝ๋ ์ฃผ์!
BPFDoor์ ๋ฆฌ๋ ์ค ์์คํ ์ ๊ณต๊ฒฉ ํ๊น์ผ๋ก ํ๋ ๋ฐฑ๋์ด(Backdoor) ์ ์ฑ์ฝ๋๋ก, 2021๋ PWC์ฌ์ ๋ณด๊ณ ์๋ฅผ ํตํด ์ต์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค. BPFDoor์ ์ค๋ ๋ฐ ์์์ ์ ์ญ์ ํต์ ์ ์ฒด, ์ ๋ถ, ๊ต์ก ๋ฑ์ ๋ถ์ผ๋ฅผ
blog.alyac.co.kr
BPFDoor๋?
๋ฆฌ๋ ์ค ์์คํ ์ ๊ณต๊ฒฉ ํ๊น์ผ๋ก ํ๋ ๋ฐฑ๋์ด(Backdoor) ์ ์ฑ์ฝ๋
์ค๋ ๋ฐ ์์์ ์ ์ญ์ ํต์ ์ ์ฒด, ์ ๋ถ, ๊ต์ก ๋ฑ ๋ถ์ผ๋ฅผ ๊ณต๊ฒฉ ํ๊น์ผ๋ก ์ผ๊ณ ์๋ค.
BPF๋?
์ ์ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ด ์ปค๋ ๋ ๋ฒจ์์ ๋คํธ์ํฌ ํจํท์ ๋น ๋ฅด๊ฒ ์บก์ฒํ๊ณ ํํฐ๋งํ ์ ์๊ฒ ํ๋ ๊ธฐ์
BPFDoor์ ๋์ ๋ฐฉ์
root ๊ถํ์ผ๋ก BPF ์์ผ์ ์์ฑํ์ฌ ํน์ ์กฐ๊ฑด์ ๋ง๋ ํจํท์ ๊ฐ์งํ ์ค๋น → ์กฐ๊ฑด ๋ง์กฑํ๋ ํจํท(๋งค์ง ๋๋ฒ) ๊ฐ์ง๋๋ฉด ํจํท ์ด์ด ๊ณต๊ฒฉ์์ ๋ช ๋ น ์คํ
๊ณต๊ฒฉ์์ ๋ช ๋ น:
- Reverse Shell ์คํ
- ์๋ก์ด ์ ์์ ํน์ ํฌํธ์ ์ ธ๋ก ์ฐ๊ฒฐ
- ๋ฐฑ๋์ด ํ์ฑํ ๋๋์ง ํ์ธ
๊ณต๊ฒฉ์ ๋ช ๋ น ์คํ ์, ๊ณต๊ฒฉ์๊ฐ ์ ์กํ๋ ํจํท์ด ๋ฐฉํ๋ฒฝ์ ํ์ง๋์ง ์์
BPF๋ ์ด์์ฒด์ ์ ์ปค๋ ๋ ๋ฒจ์์ ๋์ํ๋ ํจํท ํํฐ๋ง ๋งค์ปค๋์ฆ์ผ๋ก, ๋ฐฉํ๋ฒฝ๋ณด๋ค ๋จผ์ ํจํท์ ์์ ํ๊ธฐ ๋๋ฌธ.
โถ ์ฌ์ฉ์๊ฐ ๋ฏธ๋ฆฌ ์ ์ํด ๋ ๋ฐฉํ๋ฒฝ ๋คํธ์ํฌ ์ ์ฑ ์ด ์ ์ฉ๋์ง ์์ ๋ฟ๋ง ์๋๋ผ, ๋ฐฉํ๋ฒฝ์ ์ํด ์ฐจ๋จ๋ผ๋ ๊ณต๊ฒฉ์๊ฐ ์ํ๋ ๋ช ๋ น์ด ์ฑ๊ณต์ ์ผ๋ก ์คํ ๊ฐ๋ฅ
BPFDoor ์ ์ฑ์ฝ๋๋ BPF์ ํํฐ๋ง ๊ธฐ๋ฅ์ ์ ์ฉํด ๋คํธ์ํฌ ํจํท์ ๋ชจ๋ํฐ๋งํ๊ณ , ํน์ ํจํด์ ํจํท ๋ค์ด์ค๋ฉด ๋์ํ๋ ๋ฐฉ์
2021๋ ์ฒ์ ๋ฐ๊ฒฌ๋ ์ดํ ์ง๊ธ๊น์ง ๊ณ ๋ํ๋๋ ์ค์ผ๋ก, ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ๋ช ๋ น์ด๊ฐ ์ถ๊ฐ๋จ.
BPFDoor ๋์ ๋ฐฉ์
- ํ์ผ ๋ฐ ํ๋ก์ธ์ค ๋ชจ๋ํฐ๋ง
- /dev/shm/kdmtmpflush, /dev/shm/kdumpflush, /dev/shm/kerneldump, /var/run/haldrund.pid ๋ฑ ๋น์ ์ ํ์ผ์ ๊ฐ์
-
๋ช ๋ น์ด๋ก ์ญ์ ๋ ์คํ ํ์ผ ๊ฐ์ง ํ๋ก์ธ์ค๋ฅผ ์๋ณfind /proc -lname '* (deleted)' 2>/dev/null
-
๋ช ๋ น์ด๋ก ์ญ์ ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ณls -alR /proc/*/exe 2> /dev/null | grep deleted
- /dev/shm ์์ ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ ํ๊ฒฝ ๋ณ์๊ฐ ์๋ ํ๋ก์ธ์ค ํ์ธ
- ps auxe ๋๋ /proc/PID/environ ํตํด ํ๊ฒฝ ๋ณ์ ์ ๋ฌด๋ฅผ ์ ๊ฒ
- ๋คํธ์ํฌ ํ๋ ๊ฐ์
- BPFDoor๋ iptables ๊ท์น์ ์กฐ์ํด 42391~43390 ํฌํธ๋ก ํธ๋ํฝ์ ๋ฆฌ๋๋ ์ ํ๋ฏ๋ก, ์ ๊ธฐ์ ์ผ๋ก ๋ฐฉํ๋ฒฝ ์ค์ ์ ๊ฒํ๊ณ BPFDoor๊ฐ ์ฃผ๋ก ์ฌ์ฉํ๋ ํฌํธ์ ๋น์ ์ ํธ๋ํฝ์ ๋ถ์
- BPFDoor๋ ๋งค์ง ๋ฐ์ดํธ(ex. 0x5293, 0x7255)๊ฐ ํฌํจ๋ ํจํท์ ์์ ํ๋ฉด ํ์ฑํ๋๋ฏ๋ก, ๋คํธ์ํฌ IDS/IPS์ ์๊ทธ๋์ฒ ๋ฃฐ ๋ฑ๋กํด ๋งค์ง ํจํท ํ์งํ๊ฑฐ๋, ๋ช
๋ น์ด๋ฅผ ํตํด ํจํท ๋ด ๋งค์ง ๋ฐ์ดํธ๋ฅผ ๊ฒ์
(๋ช ๋ น์ด ์์)ss -0pb | grep -EB1 --color "$((0x7255))|$((0x5293))|$((0x39393939))"
- ์์คํ
๋ฐ ์ด์ ํ๊ฒฝ ๊ฐํ
- BPF ๊ด๋ จ ๊ถํ(CAP _BPF, CAP_NET_ADMIN)์ SELinux ๋๋ AppArmor๋ก ์ต์ํํ๋ฉฐ, ๋ถํ์ํ ์๋น์ค์ ํฌํธ๋ ss ๋๋ netstat์ผ๋ก ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๊ฒํด ๋นํ์ฑํ