延續昨天的主題,當我們已經成功獲取到了目標的權限 ( 不管是 root 還是一般權限 ) 後,我們下一步可以做什麼 ? 今天我們就要來提一下進到目標可以做些什麼事。
當我們在獲得權限後,我們需要來考慮兩個點
第一點的解法就是在取得權限後必須要想如何維持目前的權限及存取的方法或者創造新的存取的手段,這兩者都是為了避免目標的系統修補漏洞後就失去存取的能力,我們可以用幾個手段來讓我們能夠持續的存取目標,例如 : 植入後門 ( 開個新洞 ) . 修改工作排程 ......等,而今天要介紹一個手段來開一條路讓我們能夠存取到目標。
第二點就留到明天介紹提權的章節。
有一種是透過現成的工具,例如第四天提到過的 SSH . Windows 系統上原生的遠端服務 WinRM 或者是第三方的 Anydesk . Teamviewer 等等,但如果沒有登入的憑證 ( 使用者的帳號及密碼 ) ,我們也沒辦法成功連線。
另外有一種方法是透過 Shell 來對目標控制和 RCE ( Remote Code Execution 遠端程式碼執行 ) ,這種透過 Shell 來做到控制和 RCE 的類型有三種,分別為 Reverse Shell . Bind Shell 和 Web Shell。
Reverse Shell 是藉由目標來對你的裝置發出連線,我們可以先在本機上建立一個監聽器 ( 第五天提到的 netcat 就可來做這件事 ),監聽特定的 Port,例如 Port 1234 。這時我們在目標執行 reverse shell command 來將遠端系統的 Shell 連接到我們正在監聽的 Port,這樣就完成 Reverse Shell 的建立了。
優點 :
缺點 :
reverse shell command 被停止執行或任何原因導致中斷連線,連線就會失效,需要重新再執行 reverse shell command 才能再建立一次連線。reverse shell command 來建立 Shell 的 process 容易被 EDR 偵測到。跟 Reverse Shell 正好相反,Bind Shell 變得是要由我們本機連接到目標監聽的 Port,我們需要先在目標上執行 Bind Shell Command 來讓目標監聽遠端主機的特定 Port,然後我們再主動連線到該主機的 Port ,來存取目標的 Shell 獲得控制權。
優點 :
缺點 :
最後是 Web Shell,Web Shell 通常是一個 Web 程式像是 php 或 aspx,這個程式會透過 HTTP 的請求參數 ( GET/POST ) ,來接收並執行我們的 command,並將輸出列印到網頁中,而這種程式並不會是目標已經具備的,通常是需要我們將檔案寫入到目標,可能會需要另外的漏洞或者是前面的方法先將程式給上傳上去目標,這個類型相較前面兩個是需要對網頁程式有點認識或者是有實際寫過網頁才比較好執行。
優點 :
缺點 :
這次提到了三種類型的 Shell 來做新的存取手段以此來避免原本的漏洞被修補的情況,創造新的存取手段,可謂是百利而無一害,能夠讓我們再繼續往下做到更多的事例如明天要提到的提權,今天就先告一個段落,明天見啦。