Windows下免殺思路總結-創(chuàng)新互聯(lián)

1.簡介

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比通江網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式通江網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋通江地區(qū)。費用合理售后完善,十載實體公司更值得信賴。

在安全廠商日趨成熟的背景下,編寫免殺馬的難度和成本日益增長。好用新興的開源項目在短時間內(nèi)就被分析并加入特征庫。筆者調(diào)研了部分開源項目,其中也有項目做了類似的分析?[1],目前能夠免殺的項目初步統(tǒng)計,其特征一是star數(shù)不過千,二是發(fā)布時間不會很長。盡管以上開源測試項目已經(jīng)無法免殺,也有兩種可以發(fā)展的方向,一個是學習其思想,自己實現(xiàn)并去特征免殺;二是改造原有項目,自己查特征、去特征,經(jīng)過測試也能達到免殺。

免殺方法和思路很多,但據(jù)筆者觀察,目前免殺分為兩大流派。一是二進制流,利用匯編配合上C++,調(diào)用系統(tǒng)底層函數(shù)進內(nèi)核的方式免殺。殺軟如果直接在用戶態(tài)檢測其行為特征會比較困難。二是新工具新項目、小眾工具流,其主要思想是尋找反病毒廠商未覆蓋的方法和工具,一個是尋找新的語言工具和項目,跟廠商比速度。另一個是偏僻語言,用戶量小,廠商一直并未發(fā)現(xiàn)或者工作重心不在上面。舉個例子,可以用各種語言二次編譯,配合上一些語言特性如python反序列化達成免殺。通過現(xiàn)有工具的組合有效提高復雜度,在反病毒人員的盲區(qū)里進行。兩種各有優(yōu)劣,后續(xù)若有文章會測試更多的免殺用例。這里推薦一個靜態(tài)免殺學習項目[2]和52pojie上的免殺項目,利用了大部分后文中提到的免殺技術[3]。

2.殺毒軟件檢測方法

以下的內(nèi)容多為前人總結。因為云查殺本質(zhì)上也是基于特征查殺,顧不單獨列出。

2.1特征碼檢測

對文件或內(nèi)存中存在的特征做檢測,一般的方法是做模糊哈?;蛘邫C器學習跑模型,優(yōu)點是準確度高,缺點是對未知木馬缺乏檢測能力。所以目前依賴廠商的更新,廠商做的更新及時能有效提高殺軟的防護水平。目前一些殺軟對相似的病毒有一定的檢測能力,猜測是基于模糊哈希做的。部分殺軟同樣對于加殼也有檢測能力,對于不同的廠家有不同的策略,有些會對文件進行標記,而某數(shù)字會直接告警。

2.1.1關聯(lián)檢測

檢測的特征不僅僅是惡意payload的特征,也可能是一組關聯(lián)的代碼,把一組關聯(lián)信息作為特征。比如在使用加載器加載shellcode時,需要開辟內(nèi)存,將shellcode加載進內(nèi)存,最后執(zhí)行內(nèi)存區(qū)域shellcode。這些步驟就被反病毒人員提取出來作為特征,在調(diào)用了一組開辟內(nèi)存的函數(shù)比如virtualAlloc之后對該內(nèi)存使用virtualProtect來更改標示位為可執(zhí)行并且對該內(nèi)存進行調(diào)用就會觸發(fā)報毒。以上只是一個簡單的例子,具體情況具體分析,部分廠商對其進行了擴展,所以現(xiàn)在使用另外幾個函數(shù)進行調(diào)用也無法免殺。不過其本質(zhì)還是黑名單,還存在沒有被覆蓋到的漏網(wǎng)之魚。

2.2行為檢測

行為檢測通過hook關鍵api,以及對各個高危的文件、組件做監(jiān)控防止惡意程序對系統(tǒng)修改。只要惡意程序對注冊表、啟動項、系統(tǒng)文件等做操作就會觸發(fā)告警。最后,行為檢測也被應用到了沙箱做為動態(tài)檢測,對于避免沙箱檢測的辦法有如下幾個:

  • 延時,部分沙箱存在運行時間限制

  • 沙箱檢測,對諸如硬盤容量、內(nèi)存、虛擬機特征做檢測

  • 部分沙箱會對文件重命名,可以檢測自身文件名是否被更改

2.3小結

以上是對殺軟檢測做的一個小結,目前學術界對惡意代碼的檢測集中在機器學習上,已經(jīng)有部分殺軟已經(jīng)應用落地了,如微軟。對殺軟檢測手法更多的了解有助于我們寫免殺馬。

3.繞過技術

目前,隨著cs的流行,越來越多的人使用cs的shellcode,而放棄了自己開發(fā)編寫的木馬,或者使用改造的msf馬。本篇文章也會以shellcode加載器作為例子。后續(xù)文章將會涉及更深入的內(nèi)容。

3.1經(jīng)典技術

經(jīng)典免殺技術如下,由于篇幅所限,本篇只含部分免殺技術。

  • 特征碼修改

  • 花指令免殺

  • 加殼免殺

  • 內(nèi)存免殺

  • 二次編譯

  • 分離免殺

  • 資源修改

  • 白名單免殺

3.2修改特征

一個加載器存在兩個明顯的特征,一個是shellcode和硬編碼字符串。我們需要消除這些特征,比較方便的方案,使用base64等對上述特征進行編碼,最好使用多種編碼手段。對于shellcode,使用base64并不安全,所以更安全的方案是加密,一個簡單的異或加密就能消除shellcode的特征。第二個是加載器的關聯(lián)特征也需要消除,對于代碼中出現(xiàn)連續(xù)調(diào)用的virtualAlloc,virtualProtect進行插入花指令,通過加入無意義的代碼干擾反病毒引擎。

筆者的一點想法,進一步混淆源代碼,在不加殼的情況下稍微增加靜態(tài)分析難度。也有論文提出可以使用ROP來提高代碼的分析難度,因為現(xiàn)存的代碼分析引擎對間接跳轉和調(diào)用的支持存在瑕疵,復雜邏輯的代碼更需要人工分析[12]。

3.3內(nèi)存免殺

shellcode直接加載進內(nèi)存,避免文件落地,可以繞過文件掃描。但是針對內(nèi)存的掃描還需對shellcode特征做隱藏處理。對windows來說,新下載的文件和從外部來的文件,都會被windows打上標記,會被優(yōu)先重點掃描。而無文件落地可以規(guī)避這一策略。同時申請內(nèi)存的時候采用漸進式申請,申請一塊可讀寫內(nèi)存,再在運行改為可執(zhí)行。最后,在執(zhí)行時也要執(zhí)行分離免殺的策略。

3.4修改資源

殺軟在檢測程序的時候會對諸如文件的描述、版本號、創(chuàng)建日期作為特征檢測[7]??捎胷estorator對目標修改資源文件。

3.5隱藏IAT

每調(diào)用一個系統(tǒng)函數(shù)就會在導入表中存在,這對于反病毒人員是個很好的特征,直接通過檢測導入表中有沒有調(diào)用可疑函數(shù)。這里就需要隱藏我們的導入函數(shù)。一個比較通用的辦法是直接通過getProcessAddress函數(shù)獲取所需要函數(shù)的地址。知道地址也就能直接調(diào)用,這樣整個程序內(nèi)除了getProcessAddress其他函數(shù)都不會出現(xiàn)在IAT表中。盡管這樣已經(jīng)能繞過上面的檢測,但還有種更保險的做法,用匯編從Teb里找到kernel32.dll的地址,再從其導出表中獲取所需系統(tǒng)函數(shù)。

出自(https://www.52pojie.cn/thread-1360548-1-1.html)

3.6分離免殺

整個shellcode加載器分為兩個部分,分離下載shellcode和執(zhí)行。加載器處在stage0階段,其作用除了加載大馬外并無其他作用。但是直接執(zhí)行大馬會被檢測到,所以需要用到分離免殺。

出自(https://www.anquanke.com/post/id/190354)

通常殺軟只檢測一個進程的行為,所以如果存在兩個惡意進程通過進程間通信就能逃過檢測、達到免殺。

分離免殺的方法多種多樣,既可以用windows的管道[4][6],也可以用socket通信[5]。

3.7二次編譯免殺

像msf或者cs的shellcode在各個廠商里都盯的比較嚴,對于這些shellcode已經(jīng)提取好特征只要使用就會被檢測出。所以會使用各種編碼器進行免殺。編碼器有很多種,這里僅推薦msf的shikata_ga_nai,是一種多態(tài)編碼器,每次生成的payload都不一樣。

3.7.1其他語言編譯免殺

因為各種語言特性不同,對于不同語言編寫的加載器廠商不一定第一時間跟進,導致了一段時間內(nèi)可以繞過。在2020年初的時候,使用python作為加載器[11]免殺一陣,現(xiàn)在針對這類加載器逐漸嚴格,導致直接加載報毒,需要更多的混淆還改進。在2020年5月,奇安信紅隊出過一篇文章,利用python反序列化來加載python加載器[8],目前截止本文測試2021年1月已經(jīng)無法使用了,是個比較好的思路。

3.8系統(tǒng)函數(shù)白名單免殺-uuid方式

Gamma實驗室在2021年2月3號發(fā)布了一篇微信公眾號的文章[9],分析了Check Point Research研究的apt攻擊的文章。其中的亮點在內(nèi)存中shellcode的編碼方式和調(diào)用都沒有使用傳統(tǒng)編碼和調(diào)用的方式,利用了系統(tǒng)函數(shù)的特性,這次的例子是uuid。使用的是系統(tǒng)給UuidFromStringA函數(shù)將payload的uuid數(shù)組轉化為shellcode加載進內(nèi)存,其特點就是程序中存在大量硬編碼的uuid。另一個,調(diào)用使用的是EnumSystemLocalesA函數(shù),它的第一個參數(shù)是回調(diào)函數(shù)指針,也就意味著參數(shù)一只要傳入shellcode首地址就會執(zhí)行惡意命令?,F(xiàn)已被殺,但是這里給出一個比較重要的思路,還有其他可以利用的Windows系統(tǒng)函數(shù)可以利用。另外現(xiàn)已經(jīng)有項目實現(xiàn)了使用調(diào)用guid來進行免殺。

3.9某數(shù)字公布的stage uri檢測

因為cs密鑰都是硬編碼的,被逆向出來后,只要使用stage分階段的方式加載cs,其流量都會被解密并能檢測其特征[10]。對抗的方式,二次打包改密鑰,或更改cs的配置文件使得關閉stage。同時使用stageless,也得更換自己的dll,cs的beacon.dll同樣在檢測列表中。其實用改造過的msf馬也不錯,這也就是上文提到的過的開源項目,目前這個項目已經(jīng)被某數(shù)字檢測了,所以需要對項目進行改造。

4.總結

以上總結了主流的免殺方式,后文的免殺就是以上技術的混合使用。本文還未涉及到諸如加殼,dll以及使用powershell免殺等,這些會在之后的文章中提出。

5.參考文獻

[1]?????https://github.com/TideSec/BypassAntiVirus

[2]?????https://github.com/Rvn0xsy/BadCode

[3]?????https://www.52pojie.cn/thread-1360548-1-1.html

[4]?????https://payloads.online/archivers/2019-11-10/4

[5]?????https://payloads.online/archivers/2019-11-10/5

[6]?????https://www.anquanke.com/post/id/190354

[7]?????https://cloud.tencent.com/developer/article/1512006

[8]?????https://mp.weixin.qq.com/s/gZ28MvCPTQbTAVtQjO7T8w

[9]?????https://mp.weixin.qq.com/s/1DvYNDiZc2iV1pXEn7GZEA

[10]???https://mp.weixin.qq.com/s/fhcTTWV4Ddz4h9KxHVRcnw

[11]???https://www.secpulse.com/archives/151899.html

[12]???https://arxiv.org/pdf/2012.06658.pdf

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁標題:Windows下免殺思路總結-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://muchs.cn/article12/pchgc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化服務器托管、網(wǎng)站排名網(wǎng)站改版、網(wǎng)站導航域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設網(wǎng)站維護公司