iT邦幫忙

2023 iThome 鐵人賽

0

Yes

  • 雖然前面整理了一些常見的容器逃逸手法,但攻擊手法日新月異,肯定會出現以往沒見過的攻擊方式。此時就需要有好的偵測機制作為輔助,除了可以針對異常的行為進行告警之外,萬一遇到沒看過的攻擊也可保存相關軌跡做為日後查找事件根因或是研究攻擊手法的依據。

  • Falco 是一款針對雲原生安全而設計的 Linux 資安工具,它會針對 kernel 事件部署客製化的規則,這些規則會結合容器、Kubernetes 的 metadata 以提供即時的告警資訊。 Falco 可以幫助偵測異常行為、潛在安全威脅和合規性違規,有助於確認執行期間的容器、Kubernetes 安全。相關教材均可參考官網 Falco 101。Falco 的安裝算是比較麻煩一點點,除了本身的軟體程式之外,還可以安裝不同類型的驅動程式。這邊就先從軟體程式開始安裝起。

  1. 參考 Falco 官網Build Falco from source 以及 Falco 101 的內容。
    curl -s https://falco.org/repo/falcosecurity-packages.asc | sudo apt-key add - ;
    echo "deb https://download.falco.org/packages/deb stable main" | sudo tee -a /etc/apt/sources.list.d/falcosecurity.list ;
    sudo apt-get update -y ;
    sudo apt-get -y install linux-headers-$(uname -r) ;
    
    #這邊如果使用 0.33.1 版本,才會有 systemctl 可以下。
    #sudo apt-get install -y falco=0.33.1 ;
    
    #但我故意不用
    sudo apt-get install -y falco ;
    
    # 然後就失敗惹,因為這邊還沒安裝抓取事件的驅動程式
    sudo falco ; 
    
  • falco 可以透過三種驅動程式去擷取資訊,包含了 kernel module、eBPF probe、ptrace(2) userspace program。 參考 Choosing a Falco driver 裡面會對不同驅動做比較。其中如何利用 eBPF 作為驅動去啟動 falco,這部分會參考 Falco binary 去進行安裝,當然也可以自己透過原始碼去編譯出檔案,但是比較容易遇到問題,編譯方式可參考 Build Falco from sourceChoosing a Falco driver

    sudo apt install -y llvm clang ;
    # 安裝 Kernel Module 的驅動程式
    sudo falco-driver-loader module ;
    sudo falco ; 
    
    # 測試偵測效果
    sudo find /root -name "id_rsa" ;
    grep falco /var/log/syslog | grep "find /root -name id_rsa" ;
    
    # 透過這道指令可以編譯出 bpf 的 probe
    sudo falco-driver-loader bpf ;
    
    # falco 以 bpf 的方式來啟動
    sudo FALCO_BPF_PROBE="/root/.falco/falco-bpf.o" falco ;
    
  • Falco 也可以透過容器的方式進行安裝軟體跟驅動部分,畢竟之前說過當給予容器以特權方式啟動時它就具備足夠高的權限去影響宿主機,這部分可以參考 Operating and Managing Falco,以容器安裝方式這邊就不多加贅述。

  • 如果想要將告警輸出到檔案的話,則必須要去修改 /etc/falco/falco.yaml 底下的設定,參考如下 :

    file_output:
      enabled: true
      keep_alive: true
      filename: ./events.txt
    
  • 最後我們一樣來探討 falco 到底能夠看到多少攻擊呢? (此處以0.33.1版本為主)

攻擊手法 falco 預設能否偵測?
privileged + host pid N (只看到開啟特權容器)
--cap-add=ALL + host pid N (連開容器都偵測不到,因為不是特權容器)
privileged Y
(CVE-2022-0492) unshare + cgroup 特權逃逸手法 Y (寫入release_agent 會觸發規則)
安裝 linux_module Y (安裝模組 insmod 會觸發規則)
docker.sock 掛載 Y (docker.sock 掛載、docker client 執行均會觸發規則)
  • 今日總結 :
    • 本日回顧 :
      • 今天介紹了如何安裝 falco ,這部分也包含了如何安裝不同的驅動方式去偵測 kernel 的事件。另外也初步針對之前的攻擊手法去做偵測的測試,雖然說大部分的攻擊手法都能夠偵測到,但是針對 nsenter 的部分感覺還有改進的空間。
    • 次日預告 :
      • 明天會稍微了解一下 falco 的規則寫法,以及如何客製化自己的規則去偵測 nsenter 的執行。

上一篇
Day 41 - (防禦) Container 容器私有倉庫架設 - Harbor
下一篇
Day 43 - (偵測) 撰寫 Falco 客製化規則
系列文
怕痛的我把 Docker、K8s 攻擊、防禦、偵測力點滿就對了63
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言