μΉ΄ν
κ³ λ¦¬ μμ
SKTν΄νΉ κ΄λ ¨ BPF(Berkeley Packet Filter)λ
νΈλ
2025. 5. 8. 10:09
λ°μν
π§ 1. BPF(Berkeley Packet Filter)λ?
π μ μ
- BPFλ λ€νΈμν¬ νΈλν½μ νν°λ§νλ 컀λ λ 벨μ λ©μ»€λμ¦μΌλ‘, 리λ μ€ μ»€λ λ΄λΆμμ ν¨ν· νν°λ§ λ° λΆμμ μνν©λλ€.
- μλλ tcpdump κ°μ ν¨ν· λΆμ λꡬμμ νμν ν¨ν·λ§ μΊ‘μ²νλλ‘ μ§μνκΈ° μν΄ κ°λ°λ¨.
π¦ λμ λ°©μ
- λ§ν¬ κ³μΈ΅ μμ€μμ λ€νΈμν¬ ν¨ν·μ κ°λ‘μ±κ³ , μ¬μ©μ μ μν νν° μ‘°κ±΄μ λ°λΌ **μ¬μ©μ μμ(User Space)**μΌλ‘ ν¨ν·μ μ λ¬νκ±°λ 무μν¨.
- 컀λμμ λμνλ―λ‘ μ±λ₯μ΄ λ§€μ° λκ³ , 보μ μ루μ κ³Ό μμ€ν μ½μ μ°ννλ λ° μ¬μ©λ μ μμ.
π§ eBPF (extended BPF)
- μ΅μ 리λ μ€μμλ eBPFλ‘ νμ₯λμ΄ λ€νΈμν¬ μΈμλ μμ€ν λͺ¨λν°λ§, μΆμ , 보μ λ± λ€μν μ©λλ‘ νμ©λ©λλ€.
- eBPFλ 리λ μ€ μ»€λ 4.xλΆν° μ κ·Ήμ μΌλ‘ μ¬μ©λλ©°, μ¬μ©μ μ μ νλ‘κ·Έλ¨μ 컀λμ μμ νκ² μ£Όμ ν μ μμ.
𧨠2. BPFDoor μ μ±μ½λλ?
π κ°μ
- BPFDoorλ 2022λ κ²½λΆν° λ³΄κ³ λ κ³ λνλ λ°±λμ΄ μ μ±μ½λμ λλ€.
- Linux μμ€ν μ BPF μΈν°νμ΄μ€λ₯Ό νμ©ν΄ μΉ¨ν¬νκ³ μλλλ©°, μΌλ°μ μΈ λ³΄μ μ루μ μΌλ‘λ νμ§νκΈ° μ΄λ ΅μ΅λλ€.
βοΈ μλ λ©μ»€λμ¦
- BPF μμΌ μμ±: μ μ±μ½λλ 리λ μ€ μ»€λμ BPF μμΌμ μμ±νμ¬ λͺ¨λ ν¨ν·μ κ°μ²ν©λλ€.
- ν¨ν· λ΄ λͺ λ Ή μμ : μΈλΆμ νΉμ ν¬νΈλ νλ‘ν μ½μ ν΅ν΄ μ λ¬λ ν¨ν·μ λͺ λ Ήμ μλμμΌ μ λ¬λ°μ.
- 보μ μ°ν: μμ€ν μ½ μμ΄ μ»€λ λ 벨μμ νΈλν½μ κ°μ²νλ―λ‘, νΈμ€νΈ κΈ°λ° λ°©νλ²½μ΄λ IDS/IPSλ‘ νμ§λμ§ μμ.
- λ°μ μμ: μΌλ°μ μΈ λ°±λμ΄μ²λΌ ν¬νΈλ₯Ό μ΄μ΄ λμ§ μκΈ° λλ¬Έμ ν¨μλΈ(passthrough) λ°©μμΌλ‘ μλνμ¬ νμ μ΄ κ±°μ μμ.
π΅οΈβοΈ μΉ¨ν΄ μ§ν (IoC)
- /dev/shm/.bpfd λ±μ μλ κ²½λ‘ μ¬μ©
- sock_filter, setsockoptμ κ°μ 컀λ API νμ© νμ
- νν μ°μ΄λ ν¬νΈ μμ΄ RAW_SOCKETμΌλ‘ ν΅μ
π‘οΈ 3. 보μ μν λ° λμ λ°©μ
π 보μ μν
- νμ§ ννΌ: μΌλ°μ μΈ λ‘κ·Έ λ° ν¬νΈ μ€μΊλμΌλ‘ νμ§λμ§ μμ
- κ³ μ ν μΈνλΌ κ³΅κ²©: 리λ μ€ κΈ°λ° μλ², νΉν ν΄λΌμ°λ λλ IoT μ₯λΉ λμ
- λͺ λ Ή μ μ΄(C2) κΈ°λ₯μ΄ λ΄μ₯λμ΄ μμ΄ μ₯κΈ° μλ κ°λ₯
π‘οΈ λμ λ°©μ
- eBPF λμ κ°μ: bcc, bpftrace λꡬλ₯Ό ν΅ν΄ μμ¬μ€λ¬μ΄ eBPF νλμ λͺ¨λν°λ§
- λΉμ μ BPF μμΌ νμΈ: ss -l λλ /proc/net/packet κ²μ¬
- νμ κΈ°λ° νμ§: μ μ λΆμλ³΄λ€ λμ μμ€ν μ½, λ©λͺ¨λ¦¬ λ΄ νλ μΆμ νμ
- EDR/XDR μ루μ νμ©: 컀λ μμ€ νλ κ°μ§ κ°λ₯ν 보μ μ루μ λμ
λ°μν