远控免杀专题1---基础篇
0x01 免殺概念
免殺,也就是反病毒與反間諜的對立面,英文為Anti-AntiVirus(簡寫 Virus AV),逐字翻譯就是反-反病毒,翻譯為反病毒技術(shù)。
0x02 殺毒軟件檢測方法
1、掃描結(jié)束
- 掃描壓縮包技術(shù):即是對壓縮包案和封裝文件做分析檢查的技術(shù)
- 程序竄改技術(shù):即是避免惡意程序借由刪除殺毒偵測程序而大肆破壞電腦
- 修復(fù)技術(shù):即是對惡意程序所損壞的文件進(jìn)行還原
- 急救盤殺毒:利用空白U盤制作急救啟動(dòng)盤,來檢測電腦病毒
- 智能掃描:掃描最常用的磁盤,系統(tǒng)關(guān)鍵位置,耗時(shí)較短。
- 全盤掃描:掃描電腦全部磁盤,耗時(shí)較長
- 勒索軟件防護(hù):保護(hù)電腦中的文件不被黑客惡意加密
- 開機(jī)掃描:當(dāng)電腦開機(jī)時(shí)自動(dòng)進(jìn)行掃描,可以掃描壓縮文檔和可能不需要的程序
2、監(jiān)控技術(shù)
- 內(nèi)存監(jiān)控:當(dāng)發(fā)現(xiàn)內(nèi)存中存在病毒的時(shí)候,就會(huì)主動(dòng)報(bào)警;監(jiān)控所有進(jìn)程;監(jiān)控讀取到內(nèi)存中的文件;監(jiān)控讀取到內(nèi)存的網(wǎng)絡(luò)數(shù)據(jù)。
- 文件監(jiān)控:當(dāng)發(fā)現(xiàn)寫到磁盤上的文件中存在病毒,或者是被病毒感染,就會(huì)主動(dòng)報(bào)警。
- 郵件監(jiān)控:當(dāng)發(fā)現(xiàn)電子郵件的附件存在病毒時(shí)進(jìn)行攔截。
- 網(wǎng)頁防護(hù):阻止網(wǎng)絡(luò)攻擊和不安全下載。
- 行為防護(hù):提醒用戶可疑的應(yīng)用程序行為。
3、掃描引擎
4、特征碼掃描
機(jī)制:將掃描信息與病毒數(shù)據(jù)庫(即所謂的“病毒特征庫”)進(jìn)行對照,如果信息與其中的任何一個(gè)病毒特征符合,殺毒軟件就會(huì)判斷此文件被病毒感染。殺毒軟件在進(jìn)行查殺的時(shí)候,會(huì)挑選文件內(nèi)部的一段或者幾段代碼來作為他識別病毒的方式,這種代碼就叫做病毒的特征碼;在病毒樣本中,抽取特征代碼;抽取的代碼比較特殊,不大可能與普通正常程序代碼吻合;抽取的代碼要有適當(dāng)長度,一方面維持特征代碼的唯一性,另一方面保證病毒掃描時(shí)候不要有太大的空間與時(shí)間的開銷。
特征碼類別:
- 文件特征碼:對付病毒在文件中的存在方式:單一文件特征碼、復(fù)合文件特征碼(通過多處特征進(jìn)行判斷);
- 內(nèi)存特征碼:對付病毒在內(nèi)存中的存在方式:單一內(nèi)存特征碼、復(fù)合內(nèi)存特征碼
優(yōu)點(diǎn):速度快,配備高性能的掃描引擎;準(zhǔn)確率相對比較高,誤殺操作相對較少;很少需要用戶參與。
缺點(diǎn):采用病毒特征代碼法的檢測工具,面對不斷出現(xiàn)的新病毒,必須不斷更新病毒庫的版本,否則檢測工具便會(huì)老化,逐漸失去實(shí)用價(jià)值;病毒特征代碼法對從未見過的新病毒,無法知道其特征代碼,因而無法去檢測新病毒;病毒特征碼如果沒有經(jīng)過充分的檢驗(yàn),可能會(huì)出現(xiàn)誤報(bào),數(shù)據(jù)誤刪,系統(tǒng)破壞,給用戶帶來麻煩。
5、文件校驗(yàn)和法
對文件進(jìn)行掃描后,可以將正常文件的內(nèi)容,計(jì)算其校驗(yàn)和,將該校驗(yàn)和寫入文件中或?qū)懭雱e的文件中保存;在文件使用過程中,定期地或每次使用文件前,檢查文件現(xiàn)在內(nèi)容算出的校驗(yàn)和與原來保存的校驗(yàn)和是否一致,因而可以發(fā)現(xiàn)文件是否感染病毒。
6、進(jìn)程行為檢測法(沙盒模式)
機(jī)制:通過對病毒多年的觀察、研究,有一些行為是病毒的共同行為,而且比較特殊,在正常程序中,這些行為比較罕見。當(dāng)程序運(yùn)行時(shí),監(jiān)視其進(jìn)程的各種行為,如果發(fā)現(xiàn)了病毒行為,立即報(bào)警。
優(yōu)缺點(diǎn):
1.優(yōu)點(diǎn):可發(fā)現(xiàn)未知病毒、可相當(dāng)準(zhǔn)確地預(yù)報(bào)未知的多數(shù)病毒;
2.缺點(diǎn):可能誤報(bào)警、不能識別病毒名稱、有一定實(shí)現(xiàn)難度、需要更多的用戶參與判斷;
7、主動(dòng)防御技術(shù)
主動(dòng)防御并不需要病毒特征碼支持,只要?dú)⒍拒浖芊治霾呙璧侥繕?biāo)程序的行為,并根據(jù)預(yù)先設(shè)定的規(guī)則,判定是否應(yīng)該進(jìn)行清除操作 主動(dòng)防御本來想領(lǐng)先于病毒,讓殺毒軟件自己變成安全工程師來分析病毒,從而達(dá)到以不變應(yīng)萬變的境界。但是,計(jì)算機(jī)的智能總是在一系列的規(guī)則下誕生,而普通用戶的技術(shù)水平達(dá)不到專業(yè)分析病毒的水平,兩者之間的博弈將主動(dòng)防御推上一個(gè)尷尬境地。
8、機(jī)器學(xué)習(xí)識別技術(shù)
機(jī)器學(xué)習(xí)識別技術(shù)既可以做靜態(tài)樣本的二進(jìn)制分析,又可以運(yùn)用在沙箱動(dòng)態(tài)行為分析當(dāng)中,是為內(nèi)容/行為+算法模式。伴隨著深度學(xué)習(xí)的急速發(fā)展,各家廠商也開始嘗試運(yùn)用深度學(xué)習(xí)技術(shù)來識別病毒特征,如瀚思科技的基于深度學(xué)習(xí)的二進(jìn)制惡意樣本檢測
0x03 免殺技術(shù)介紹
1、修改特征碼
免殺的最基本思想就是破壞特征,這個(gè)特征有可能是特征碼,有可能是行為特征,只要破壞了病毒與木馬所固有的特征,并保證其原有功能沒有改變,一次免殺就能完成了。
就目前的反病毒技術(shù)來講,更改特征碼從而達(dá)到免殺的效果事實(shí)上包含著兩種方式。
一種是改特征碼,這也是免殺的最初方法。例如一個(gè)文件在某一個(gè)地址內(nèi)有“灰鴿子上線成功!”這么一句話,表明它就是木馬,只要將相應(yīng)地址內(nèi)的那句話改成別的就可以了,如果是無關(guān)痛癢的,直接將其刪掉也未嘗不可。
第二種是針對目前推出的校驗(yàn)和查殺技術(shù)提出的免殺思想,它的原理雖然仍是特征碼,但是已經(jīng)脫離純粹意義上特征碼的概念,不過萬變不離其宗。其實(shí)校驗(yàn)和也是根據(jù)病毒文件中與眾不同的區(qū)塊計(jì)算出來的,如果一個(gè)文件某個(gè)特定區(qū)域的校驗(yàn)和符合病毒庫中的特征,那么反病毒軟件就會(huì)報(bào)警。所以如果想阻止反病毒軟件報(bào)警,只要對病毒的特定區(qū)域進(jìn)行一定的更改,就會(huì)使這一區(qū)域的校驗(yàn)和改變,從而達(dá)到欺騙反病毒軟件的目的。
修改特征碼最重要的是定位特征碼,但是定位了特征碼修改后并不代表程序就能正常運(yùn)行,費(fèi)時(shí)費(fèi)力,由于各個(gè)殺軟廠商的特征庫不同,所以一般也只能對一類的殺軟起效果。雖然效果不好,但有時(shí)候在沒有源碼的情況下可以一用。
2、花指令免殺
花指令其實(shí)就是一段毫無意義的指令,也可以稱之為垃圾指令。花指令是否存在對程序的執(zhí)行結(jié)果沒有影響,所以它存在的唯一目的就是阻止反匯編程序,或?qū)Ψ磪R編設(shè)置障礙。
大多數(shù)反病毒軟件是靠特征碼來判斷文件是否有毒的,而為了提高精度,現(xiàn)在的特征碼都是在一定偏移量限制之內(nèi)的,否則會(huì)對反病毒軟件的效率產(chǎn)生嚴(yán)重的影響!而在黑客們?yōu)橐粋€(gè)程序添加一段花指令之后,程序的部分偏移會(huì)受到影響,如果反病毒軟件不能識別這段花指令,那么它檢測特征碼的偏移量會(huì)整體位移一段位置,自然也就無法正常檢測木馬了。
3、加殼免殺
說起軟件加殼,簡單地說,軟件加殼其實(shí)也可以稱為軟件加密(或軟件壓縮),只是加密(或壓縮)的方式與目的不一樣罷了。殼就是軟件所增加的保護(hù),并不會(huì)破壞里面的程序結(jié)構(gòu),當(dāng)我們運(yùn)行這個(gè)加殼的程序時(shí),系統(tǒng)首先會(huì)運(yùn)行程序里的殼,然后由殼將加密的程序逐步還原到內(nèi)存中,最后運(yùn)行程序。
當(dāng)我們運(yùn)行這個(gè)加殼的程序時(shí),系統(tǒng)首先會(huì)運(yùn)行程序的“殼”,然后由殼將加密的程序逐步還原到內(nèi)存中,最后運(yùn)行程序。這樣一來,在我們看來,似乎加殼之后的程序并沒有什么變化,然而它卻達(dá)到了加密的目的,這就是殼的作用。
加殼雖然對于特征碼繞過有非常好的效果,加密殼基本上可以把特征碼全部掩蓋,但是缺點(diǎn)也非常的明顯,因?yàn)闅ぷ约阂灿刑卣鳌T谀承┍容^流氓的國產(chǎn)殺軟的檢測方式下,主流的殼如VMP, Themida等,一旦被檢測到加殼直接彈框告訴你這玩意兒有問題,雖然很直接,但是還是挺有效的。有些情況下,有的常見版本的殼會(huì)被直接脫掉分析。
面對這種情況可以考慮用一切冷門的加密殼,有時(shí)間精力的可以基于開源的壓縮殼改一些源碼,效果可能會(huì)很不錯(cuò)。
總得來說,加殼的方式來免殺還是比較實(shí)用的,特別是對于不開源的PE文件,通過加殼可以繞過很多特征碼識別。
4、內(nèi)存免殺
CPU不可能是為某一款加殼軟件而特別設(shè)計(jì)的,因此某個(gè)軟件被加殼后的可執(zhí)行代碼CPU是讀不懂的。這就要求在執(zhí)行外殼代碼時(shí),要先將原軟件解密,并放到內(nèi)存里,然后再通知CPU執(zhí)行。
因?yàn)闅⒍拒浖膬?nèi)存掃描原理與硬盤上的文件掃描原理都是一樣的,都是通過特征碼比對的,只不過為了制造迷惑性,大多數(shù)反病毒公司的內(nèi)存掃描與文件掃描采用的不是同一套特征碼,這就導(dǎo)致了一個(gè)病毒木馬同時(shí)擁有兩套特征碼,必須要將它們?nèi)科茐牡舨拍芏氵^反病毒軟件的查殺。
因此,除了加殼外,黑客們對抗反病毒軟件的基本思路沒變。而對于加殼,只要加一個(gè)會(huì)混淆程序原有代碼的“猛”殼,其實(shí)還是能躲過殺毒軟件的查殺的。
5、二次編譯
metasploit的msfvenom提供了多種格式的payload和encoder,生成的shellcode也為二次加工提供了很大遍歷,但是也被各大廠商盯得死死的。
而shikata_ga_nai是msf中唯一的評價(jià)是excellent的編碼器,這種多態(tài)編碼技術(shù)使得每次生成的攻擊載荷文件是不一樣的,編碼和解碼也都是不一樣。還可以利用管道進(jìn)行多重編碼進(jìn)行免殺。
目前msfvenom的encoder特征基本都進(jìn)入了殺軟的漏洞庫,很難實(shí)現(xiàn)單一encoder編碼而繞過殺軟,所以對shellcode進(jìn)行進(jìn)一步修改編譯成了msf免殺的主流。互聯(lián)網(wǎng)上有很多借助于C、C#、python等語言對shellcode進(jìn)行二次編碼從而達(dá)到免殺的效果。
6、分離免殺
侯亮大神和傾旋大神都分別提到過payload分離免殺和webshell分離免殺,采用分離法,即將ShellCode和加載器分離。網(wǎng)上各種加載器代碼也有很多,各種語言實(shí)現(xiàn)的都很容易找到,雖然看起來比較簡單,但效果卻是不錯(cuò)的。比如侯亮大神提到的shellcode_launcher,加載c代碼,基本沒有能查殺的AV。
7、資源免殺
有些殺軟會(huì)設(shè)置有掃描白名單,比如之前把程序圖標(biāo)替換為360安全衛(wèi)士圖標(biāo)就能過360的查殺。
- 加資源
使用ResHacker對文件進(jìn)行資源操作,找來多個(gè)正常軟件,將它們的資源加入到自己軟件,如圖片,版本信息,對話框等。
- 替換資源
使用ResHacker替換無用的資源(Version等)。
- 加簽名
使用簽名偽造工具,將正常軟件的簽名信息加入到自己軟件中。
0x04 參考
很多內(nèi)容參考了wikipedia和freebuf上Green_m和Anhkgg兩位大佬的文章,在此表示感謝!想深入了解的可在訪問下面鏈接。
免殺技術(shù)有一套:https://anhkgg.com/aanti-virus/
Meterpreter免殺及對抗分析:https://www.freebuf.com/sectool/157122.html
免殺藝術(shù):https://www.4hou.com/technology/3853.html
總結(jié)
以上是生活随笔為你收集整理的远控免杀专题1---基础篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dnf武器调品级问题
- 下一篇: dnf里巴卡尔之城第4个房间怎么打