๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

SWUFORCE/๊ธฐ์ˆ  ์Šคํ„ฐ๋””

[EST SECURITY] BPF ํ•„ํ„ฐ๋ฅผ ์•…์šฉํ•˜๋Š” BPFDoor ๋ฆฌ๋ˆ…์Šค ์•…์„ฑ์ฝ”๋“œ ์ฃผ์˜!

https://blog.alyac.co.kr/5560

 

BPF ํ•„ํ„ฐ๋ฅผ ์•…์šฉํ•˜๋Š” BPFDoor ๋ฆฌ๋ˆ…์Šค ์•…์„ฑ์ฝ”๋“œ ์ฃผ์˜!

BPFDoor์€ ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์„ ๊ณต๊ฒฉ ํƒ€๊นƒ์œผ๋กœ ํ•˜๋Š” ๋ฐฑ๋„์–ด(Backdoor) ์•…์„ฑ์ฝ”๋“œ๋กœ, 2021๋…„ PWC์‚ฌ์˜ ๋ณด๊ณ ์„œ๋ฅผ ํ†ตํ•ด ์ตœ์ดˆ ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. BPFDoor์€ ์ค‘๋™ ๋ฐ ์•„์‹œ์•„ ์ „์—ญ์˜ ํ†ต์‹ ์—…์ฒด, ์ •๋ถ€, ๊ต์œก ๋“ฑ์˜ ๋ถ„์•ผ๋ฅผ

blog.alyac.co.kr


BPFDoor๋ž€?

๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์„ ๊ณต๊ฒฉ ํƒ€๊นƒ์œผ๋กœ ํ•˜๋Š” ๋ฐฑ๋„์–ด(Backdoor) ์•…์„ฑ์ฝ”๋“œ

์ค‘๋™ ๋ฐ ์•„์‹œ์•„ ์ „์—ญ์˜ ํ†ต์‹ ์—…์ฒด, ์ •๋ถ€, ๊ต์œก ๋“ฑ ๋ถ„์•ผ๋ฅผ ๊ณต๊ฒฉ ํƒ€๊นƒ์œผ๋กœ ์‚ผ๊ณ  ์žˆ๋‹ค.

 

BPF๋ž€?

์œ ์ € ๋ชจ๋“œ ํ”„๋กœ๊ทธ๋žจ์ด ์ปค๋„ ๋ ˆ๋ฒจ์—์„œ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ๋น ๋ฅด๊ฒŒ ์บก์ฒ˜ํ•˜๊ณ  ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ 

 

BPFDoor์˜ ๋™์ž‘ ๋ฐฉ์‹

root ๊ถŒํ•œ์œผ๋กœ BPF ์†Œ์ผ“์„ ์ƒ์„ฑํ•˜์—ฌ ํŠน์ • ์กฐ๊ฑด์— ๋งž๋Š” ํŒจํ‚ท์„ ๊ฐ์ง€ํ•  ์ค€๋น„ → ์กฐ๊ฑด ๋งŒ์กฑํ•˜๋Š” ํŒจํ‚ท(๋งค์ง ๋„˜๋ฒ„) ๊ฐ์ง€๋˜๋ฉด ํŒจํ‚ท ์—ด์–ด ๊ณต๊ฒฉ์ž์˜ ๋ช…๋ น ์‹คํ–‰

 

๊ณต๊ฒฉ์ž์˜ ๋ช…๋ น: 

  • Reverse Shell ์‹คํ–‰
  • ์ƒˆ๋กœ์šด ์ ‘์†์„ ํŠน์ • ํฌํŠธ์˜ ์…ธ๋กœ ์—ฐ๊ฒฐ
  • ๋ฐฑ๋„์–ด ํ™œ์„ฑํ™” ๋๋Š”์ง€ ํ™•์ธ

๊ณต๊ฒฉ์ž ๋ช…๋ น ์‹คํ–‰ ์‹œ, ๊ณต๊ฒฉ์ž๊ฐ€ ์ „์†กํ•˜๋Š” ํŒจํ‚ท์ด ๋ฐฉํ™”๋ฒฝ์— ํƒ์ง€๋˜์ง€ ์•Š์Œ

BPF๋Š” ์šด์˜์ฒด์ œ์˜ ์ปค๋„ ๋ ˆ๋ฒจ์—์„œ ๋™์ž‘ํ•˜๋Š” ํŒจํ‚ท ํ•„ํ„ฐ๋ง ๋งค์ปค๋‹ˆ์ฆ˜์œผ๋กœ, ๋ฐฉํ™”๋ฒฝ๋ณด๋‹ค ๋จผ์ € ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ.

โ–ถ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด ๋‘” ๋ฐฉํ™”๋ฒฝ ๋„คํŠธ์›Œํฌ ์ •์ฑ…์ด ์ ์šฉ๋˜์ง€ ์•Š์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฐฉํ™”๋ฒฝ์— ์˜ํ•ด ์ฐจ๋‹จ๋ผ๋„ ๊ณต๊ฒฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ช…๋ น์–ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ

 

BPFDoor ์•…์„ฑ์ฝ”๋“œ๋Š” BPF์˜ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ์•…์šฉํ•ด ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ํŠน์ •ํŒจํ„ด์˜ ํŒจํ‚ท ๋“ค์–ด์˜ค๋ฉด ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹

2021๋…„ ์ฒ˜์Œ ๋ฐœ๊ฒฌ๋œ ์ดํ›„ ์ง€๊ธˆ๊นŒ์ง€ ๊ณ ๋„ํ™”๋˜๋Š” ์ค‘์œผ๋กœ, ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ๋ช…๋ น์–ด๊ฐ€ ์ถ”๊ฐ€๋จ. 

 

BPFDoor ๋Œ€์‘ ๋ฐฉ์•ˆ

  1. ํŒŒ์ผ ๋ฐ ํ”„๋กœ์„ธ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง
    • /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 ํ†ตํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์œ ๋ฌด๋ฅผ ์ ๊ฒ€
  2. ๋„คํŠธ์›Œํฌ ํ™œ๋™ ๊ฐ์‹œ
    • BPFDoor๋Š” iptables ๊ทœ์น™์„ ์กฐ์ž‘ํ•ด 42391~43390 ํฌํŠธ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋ฏ€๋กœ, ์ •๊ธฐ์ ์œผ๋กœ ๋ฐฉํ™”๋ฒฝ ์„ค์ • ์ ๊ฒ€ํ•˜๊ณ  BPFDoor๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ์˜ ๋น„์ •์ƒ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์„
    • BPFDoor๋Š” ๋งค์ง ๋ฐ”์ดํŠธ(ex. 0x5293, 0x7255)๊ฐ€ ํฌํ•จ๋œ ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•˜๋ฉด ํ™œ์„ฑํ™”๋˜๋ฏ€๋กœ, ๋„คํŠธ์›Œํฌ IDS/IPS์— ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋ฃฐ ๋“ฑ๋กํ•ด ๋งค์ง ํŒจํ‚ท ํƒ์ง€ํ•˜๊ฑฐ๋‚˜, ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํŒจํ‚ท ๋‚ด ๋งค์ง ๋ฐ”์ดํŠธ๋ฅผ ๊ฒ€์ƒ‰
      ss -0pb | grep -EB1 --color "$((0x7255))|$((0x5293))|$((0x39393939))"
      (๋ช…๋ น์–ด ์˜ˆ์‹œ)
  3. ์‹œ์Šคํ…œ ๋ฐ ์šด์˜ ํ™˜๊ฒฝ ๊ฐ•ํ™”
    •  BPF ๊ด€๋ จ ๊ถŒํ•œ(CAP _BPF, CAP_NET_ADMIN)์„ SELinux ๋˜๋Š” AppArmor๋กœ ์ตœ์†Œํ™”ํ•˜๋ฉฐ, ๋ถˆํ•„์š”ํ•œ ์„œ๋น„์Šค์™€ ํฌํŠธ๋Š” ss ๋˜๋Š” netstat์œผ๋กœ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ ๊ฒ€ํ•ด ๋น„ํ™œ์„ฑํ™”