天天看點

免殺新姿勢:利用線程将惡意代碼注入到記憶體中

本文講的是<b>免殺新姿勢:利用線程将惡意代碼注入到記憶體中</b>,

産生存放遠端攻擊線程的程序

在這篇文章中我不想一步一步解釋我編寫的C#代碼,但是我會展示下它能夠繞過防毒軟體,并且操作非常簡單,而且實用。

首先說明一下:

就像剛才所說,我不會将我的”NativePayload_Tinjection.exe”代碼分享出來,不過我會闡述下如何在C++,C#或者其他語言如何進行編寫攻擊poc。

下圖中你可以看到當遠端程序加載時發生了什麼事情,他已經一步一步的展示出來。并且你可以使用C#或者其他語言提供的windowsAPI很簡單的實作。

免殺新姿勢:利用線程将惡意代碼注入到記憶體中

上圖中的”evil.dll”是我們通過msfvenom生成的攻擊載荷,在kali linux中可以使用以下指令:

下一步驟就是将生成的payload通過新的線程注入到另外一個新的程序中去連接配接遠端主機。

我接下來會将我寫的代碼進行免殺測試,使用最新的防毒軟體。我采用的實驗環境是“Win 8.1”,防毒軟體有:“Malwarebytes”、“ESET”、“Kaspersky”。接下來你可以看到,我是怎麼簡單繞過這三個防毒軟體。

實驗一:測試Malwarebyte3.1.2 版本

通過注入線程,我們可以繞過殺軟。在這個環境下,我的meterpreter payload通過TID為4268的線程注入到PID為2492的程序,名叫mspaint.exe中。

免殺新姿勢:利用線程将惡意代碼注入到記憶體中

就像你在上圖看到,當産生meterpreter 會話程序之後會在受害機中産生mspaint.exe程序。同時也可以發現TID為4268的線程開始位址為0X0。如果你結束掉TID 4268的線程,那麼meterpreter會話就會立馬結束。

實驗二:測試ESET-Nod3210.1.204.0版本

下圖中你可以看到,ESET已經更新到了最近版本”20170516”,不過并沒有什麼用,我同樣将meterpreter攻擊載荷通過TID 3932線程注入到了PID為3168的notepad程序中。

免殺新姿勢:利用線程将惡意代碼注入到記憶體中

實驗三:測試Kaspersky v17版本

同樣,Kaspersky已經是最新版本v17.0.0.611,漏洞庫為”20170516”。不過同樣被繞過了。meterpreter通過TID 2932線程注入到了PID為1200程序中.

免殺新姿勢:利用線程将惡意代碼注入到記憶體中

實驗3-1:Kaspersky internet security v17 漏洞庫05182017版本

同樣被繞過了,即使防毒軟體顯示:您的電腦正在被保護。

免殺新姿勢:利用線程将惡意代碼注入到記憶體中

那麼如何檢測這種攻擊呢?

我自己寫了一個軟體”Meterpreter_Payload_Detection.exe”,它會在記憶體識别meterpreter簽名,進而發現後門,然後清除。

在下圖中你可後門發現繞過ESET-Nod32防毒軟體之後,會被Meterpreter_Payload_Detection.exe攔截。是以個人感覺防毒軟體在記憶體掃描這一方面做的不是很完備。

免殺新姿勢:利用線程将惡意代碼注入到記憶體中

上圖中,你可以在我軟體的界面找到注入到記憶體的程序,即PID為2116的程序,以及TID為2820的線程。

紅顔色字型展示了在記憶體中掃描簽名,當然這也許不是最好的方法檢測惡意軟體,但是到現在為止,這個工具針對記憶體檢測做的比現有的防毒軟體要好。

原文釋出時間為:2017年5月19日

本文作者:xnianq

本文來自雲栖社群合作夥伴嘶吼,了解相關資訊可以關注嘶吼網站。

<a href="http://www.4hou.com/technology/4819.html" target="_blank">原文連結</a>

繼續閱讀