4163851730-4
WSH应用讲解
VBS脚本病毒的大量流行使我们对VBS的功能有了一个全新的认识,现在大家对它也开始重视起来。VBS代码在本地是通过Windows Script Host(WSH)解释执行的。VBS脚本的执行离不开WSH,WSH是微软提供的一种基于32位Windows平台的、与语言无关的脚本解释机制,它使得脚本能够直接在Windows桌面或命令提示符下运行。利用WSH,用户能够操纵WSH对象、ActiveX对象、注册表和文件系统。在Windows 2000下,还可用WSH来访问Windows NT活动目录服务。
  用VBS编写的脚本程序在窗口界面是由文件解释执行的,在字符界面由文件解释执行。是一个脚本语言解释器,正是它使得脚本可以被执行,就象执行批处理一样。关于VBS大家一定比我熟悉多了,所以再不废话,直接进入主题,看看我总结的VBS在系统安全中的八则妙用吧。
  一、给注册表编辑器解锁
  用记事本编辑如下内容:
DIM WSH
SET WSH=WSCRIPT.CreateObject("WSCRIPT.SHELL") '击活WScript.Shell对象
WSH.POPUP("解锁注册表编辑器!")
'显示弹出信息“解锁注册表编辑器!”
WSH.Regwrite"HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools",0,"REG_DWORD"
'给注册表编辑器解锁
WSH.POPUP("注册表解锁成功!")
'显示弹出信息“注册表解锁成功!”
保存为以.vbs为扩展名的文件,使用时双击即可。
  二、关闭Win NT/2000的默认共享
  用记事本编辑如下内容:
应内朋友的要求在此我写一个利用WSH关闭系统默认共享的代码,其实WSH有很多黑客用来写病毒的说,好坏在一线之
隔,我把它用到好的地方咯~~~~HOHO
这个是我贴在木马原理一文中的,怕有人没有看到,所以就单独写出来了。
------------------------------CUT--------------------------------------------
dim o
set o = CreateObject("WScript.shell")    '建立一个对象
dim fso,dc
Set fso = CreateObject("Scripting.FileSystemObject")      '创建文件系统对象
set dc = fso.Drives        '获取所有驱动器盘符
for Each d in dc
dim str
o.run("net share " & d.driveletter & "$ /delete")        '关闭所有驱动的隐藏共享
next
o.run("net share admin$ /delete")
vbs脚本怎么停止
o.run("net share ipc$ /detete")      '关闭admin$和ipc$管道共享
dim dirsystem
set dirsystem=fso.GetSpecialFolder(1)    ;取得系统根目录
set name=fso.GetFile(WScript.ScriptFullName)    ;取得脚本文件名
if (fso.fileexists(dirsystem &"\stopshare.vbs")) then      ;判断系统根目录是否存在上面的文件保存的文件名.vbs
else
name.Copy(dirsystem & "\stopshare.vbs")      把这个脚本拷贝到系统根目录,文件名为上面的文件保存的文件名.vbs
o.RegWrite"HKLM\Software\Microsoft\Windows\CurrentVersion\Run\stopshare",dirsystem&"\stopshare.vbs"     
写入注册表自动启动键值
------------------------------CUT--------------------------------------------
着要保存成.vbs的文件运行一遍就可以自动关闭默认共享,只适用于2000/NT系统。
  现在来测试一下,先打开,输入net share命令就可以看到自己机子上的共享。双击执行stopshare.vbs后,会看见窗口一闪而过。然后再在cmd里输入net share命令,这时候没有发现共享列表了
三、显示本机IP地址
  有许多时候,我们需要知道本机的IP地址,使用各种软件虽然可以办到,但用VBS脚本也非常的方便。用记事本编辑如下内容:
Dim WS
Set WS=CreateObject("MSWinsock.Winsock")
IPAddress=WS.LocalIP
MsgBox "Local IP=" & IPAddress
  将上面的内容保存为ShowIP.vbs,双击执行即可得到本机IP地址。
  四、利用脚本编程删除日志
  入侵系统成功后黑客做的第一件事便是清除日志,如果以图形界面远程控制对方机器或是从终端登陆进入,删除日志不是一件困难的事,由于日志虽然也是作为一种服务运行,但不同于http,ftp这样的服务,可以在命令行下先停止,再删除,在命令行下用net stop eventlog是不能停止的,所以有人认为在命令行下删除日志是很困难的,实际上不是这样,比方说利用脚本编程中的VMI就可以删除日志,而且非常的简单方便。源代码如下:
strComputer= "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Backup)}!\\" & _
strComputer & "\root\cimv2")
dim mylogs(3)
mylogs(1)="application"
mylogs(2)="system"
mylogs(3)="security"
for Each logs in mylogs
Set colLogFiles=objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile where LogFileName='"&logs&"'")
For Each objLogfile in colLogFiles
objLogFile.ClearEventLog()
Next
next
  将上面的代码保存为cleanevent.vbs文件即可。在上面的代码中,首先获得object对象,然后利用其cle
arEventLog()方法删除日志。建立一个数组,application,security,system,如果还有其他日志也可以加入数组。然后用一个for循环,删除数组中的每一个元素,即各个日志。
五、利用脚本伪造日志
  删除日志后,任何一个有头脑的管理员面对空空的日志,马上就会反应过来被入侵了,所以一个聪明的黑客的学会如何伪造日志。利用脚本编程中的eventlog方法创造日志非常简单,请看下面的代码:
set ateobject("Wscript.shell")
ws.logevent 0 ,"write log success" '创建一个成功执行日志
  将上面的代码保存为createlog.vbs即可。这段代码很容易理解,首先获得wscript的一个shell对象,然后利用shell对象的logevent方法。logevent的用法:logevent eventtype,"description" [,remote system],其中eventtype为日志类型,可以使用的参数如下
:0代表成功执行,1执行出错,2警告,4信息,8成功审计,16故障审计。所以上面代码中,把0改为1,2,4,8,16均可,引号中的内容为日志描述。利用这种方法写的日志有一个缺点,即只能写到应用程序日志,而且日志来源只能为WSH,即Windows Scripting Host,所以不能起太多的隐蔽作用,在此仅供大家参考。
  六、禁用开始菜单选项
  用记事本编辑如下内容:
Dim ChangeStartMenu
Set ChangeStartMenu=WScript.CreateObject("WScript.Shell")
RegPath="HKCR\Software\Microsoft\Windows\CurrentVersion\Policies\"
Type_Name="REG_DWORD"
Key_Data=1
StartMenu_Run="NoRun"
StartMenu_Find="NoFind"
StartMenu_Close="NoClose"
Sub Change(Argument)
ChangeStartMenu.RegWrite RegPath&Argument,Key_Data,Type_Name
MsgBox("Success!")
End Sub
Call Change(StartMenu_Run) '禁用“开始”菜单中的“运行”功能
Call Change(StartMenu_Find) '禁用“开始”菜单中的“查”功能
Call Change(StartMenu_Close) '禁用“开始”菜单中的“关闭系统”功能
  将以上代码保存为ChangeStartMenu.vbs文件,使用时双击即可。七、执行外部程序
  用记事本编辑如下内容:
DIM objShell
set ateObject("wscript.shell")
iReturn=objShell.Run(" /C set var=world", 1, TRUE)
  保存为.vbs文件即可。在这段代码中,我们首先设置了一个环境变量,其名为var,而值为world,用户可以使用%Comspec%来代替,并且可以把命令:set var=world改成其它的命令,这样就可以使它可以运行任意的命令。
  八、重新启动指定的IIS服务
  用记事本编辑如下内容:
Const ADS_SERVICE_STOPPED = 1
Set objComputer = GetObject("WinNT://MYCOMPUTER,computer")
Set objService = objComputer.GetObject("Service","MYSERVICE")
If (objService.Status = ADS_SERVICE_STOPPED) Then
objService.Start
End If
  将它以startsvc.vbs为名保存在C盘根目录。并通过如下命令执行:cscript c:\startsvc.vbs。运行后,经
你指定的IIS服务项将被重新开启。
  最后,我们再说说开篇时提到的VBS脚本病毒的防范方法。VBS病毒的执行离不开WSH,在带给人们便利的同时,WSH也为病毒的传播留下可乘之机。所以要想防范VBS病毒,可以选择将WSH卸载,只要打开控制面板,到“添加/删除程序”,点选“Windows安装程序”,再鼠标双击其中的“附件”一项,然后再在打开的窗口中将“Windows Scripting Host”一项的“√”去掉,然后连续点两次“确定”就可以将WSH卸载。或者,你也可以点击“我的电脑”→“查看”→“文件夹选项”,在弹出的对话框中,点击“文件类型”,然后删除VBS、VBE、JS、JSE文件后缀名与应用程序的映射,都可以达到防范VBS脚本病毒的目的。
Wscript脚本主对象
WScript.Echo WScript.BuildVersion 'WSH脚本宿主的生成版本号
WScript.Echo WScript.FullName '返回WSCRIPT或CSCRIPT脚本宿主所在的位置路径
WScript.Echo WScript.Interactive '返回脚本模式,仅返回交互模式和批处理模式,默认为交互模式
WScript.Echo WScript.Name '返回 WScript 对象(主机可执行文件)的名称
Wscript.Echo WScript.Path '返回包含主机可执行文或的路径名称
WScript.Echo WScript.ScriptName '返回当前双击执行的WSF或VBS或JS文件的文件名
WScript.Echo WScript.Version '返回WSCRIPT或CSCRIPT的版本号
WScript.Echo WScript.ScriptFullName '返回当前运行脚本的完整路径
WScript.Echo unt '返回用户所拖放文件至脚本时的拖放文件个数
WScript.Echo WScript.Arguments(0) '返回用户所拖放文件第1个单个文件的完整路径和名称
WScript.Sleep 3000 '使程序间隔一段时间后继续执行,单位豪秒,这里1000=1秒
Set objname=WScript.CreateObject("??") 'WSH创建COM对象,??是创建对象函数前缀,如WScript.Network
WScript.ConnectObject 连接正与外部脚本连接的变量名, "表示函数前缀的字符串值"
WScript.DisconnectObject 需要断开连接的正与外部脚本连接的变量
WScript.Echo "弹出对话框后显示的消息文字或变量"[,可选第二消息,第三消息......]
Set myobj=GetObject(?[,??],[???]) '?=文件的完全限定路径名,??=可选。对象的程序标识符,???=启动的关联应用程序名
WScript.Quit [?] '终止程序继续运行的函数,在其下语句则不会执行,?=可不添的,代表退出后的返回值
'请将此程序少加修改存为wsf后缀的文件,然后及可运行,其中当然可以使用VBS的msgbox等函数,同样也可以使用FSO,ADO等技术,但是首先你必须保证你的机器已经装有和,还有也可以在HTML网页中使用WSH的诸如Shell对象。此句为注释,你可以删除.Shell对象
Set WshShell=WScript.CreateObject("WScript.Shell")
WScript.Echo WshShell.CurrentDirectory '返回或更改当前的活动目录
Set sys=WshShell.Environment '显示系统状态,详细请看网络程序员伴侣WSH实例
Wscript.Echo WshShell.SpecialFolders("Desktop") '对WINDOW特殊文件夹的简易引用,详细见实例
WScript.Echo WshShell.ExpandEnvironmentStrings("%WinDir%") '返回环境变量的扩展值,详细见实例
WshShell.Run "calc",0-10 '运行一个程序,详细见实例
WshShell.AppActivate "网络程序员伴侣-Lshdic2002" '使指定标题的程序或文件获得焦点
WshShell.SendKeys "{del}" '按键(仿佛是在键盘上击键一样),详细见实例
WshShell.Popup "弹出对话框正文",0-5/16/32/48/64,"弹出对话框标题",0-5/16/32/48/64 '弹出对话框
WshShell.RegWrite "HKCU\Software\ACME\FortuneTeller\",1,"REG_BINARY" '写注册表见实例
WshShell.RegDelete "HKCU\Software\ACME\FortuneTeller\MindReader" '删除注册表见实例
k
ey=WshShell.RegRead("HKCU\Software\ACME\FortuneTeller\") '读注册表见实例
'请将此程序少加修改存为wsf后缀的文件,然后及可运行,其中当然可以使用VBS的msgbox等函数,同样也可以使用FSO,ADO等技术,但是首先你必须保证你的机器已经装有和,还有也可以在HTML网页中使用WSH的诸如Shell对象。此句为注释,你可以删除.
Network对象
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "你的域名是: " & WshNetwork.UserDomain '返回用户的域名
WScript.Echo "你的计算机系统名称是:" & WshNetwork.ComputerName '返回计算机系统的名称
WScript.Echo "你是:" & WshNetwork.UserName '返回计算机用户名
'请将此程序少加修改存为wsf后缀的文件,然后及可运行,其中当然可以使用VBS的msgbox等函数,同样也可以使用FSO,ADO等技术,但是首先你必须保证你的机器已经装有和,还有也可以在HTML网页中使用WSH的诸如Shell对象。此句为注释,你可以删除.
完整WSH实例
msgbox "怎么样?VBS中的msgbox也起作用哦" & vc & vc & "少等1500毫秒,弹出JS语言版的对话框",32,"WSH实例"
WScript.Sleep 1500 '使程序停顿1500毫秒
pop=WScript.CreateObject("Wscript.Shell")
pop.Popup ("恭喜!你终于懂了",48,"这是JS哦")
快捷方式操作实例
Set Shell = CreateObject("WScript.Shell")
paths = Shell.SpecialFolders("Desktop") '用函数指定特殊文件夹,这里是[桌面]
Set link = Shell.CreateShortcut(paths & "\快捷方式名称.lnk")
link.Description = "此句为注释,这是用WSH创建的快捷方式"
link.HotKey = "CTRL+ALT+SHIFT+X" '这是为快捷方式定义快捷键
link.Ic '指定快捷方式图标,这里勉强先用画图程序的图标
link.TargetPath = "[url=www.lshdic]www.lshdic[/url]" '这里指定连接目标,先勉强用我以前的主页代替
link.WindowStyle = 3 '窗体弹出方式。
link.WorkingDirectory = paths '指定快捷方式的工作目录
msg = msgbox("你确认要在桌面建立一个快捷方式吗?",32+1,"如何?")
if msg = 1 then
link.Save '保存使程序立即生效
end if
'此文件运行请保存为wsf后缀的文件
'请将此程序少加修改存为wsf后缀的文件,然后及可运行,其中当然可以使用VBS的msgbox等函数,同样也可以使用FSO,ADO等技术,但是首先你必须保证你的机器已经装有和,还有也可以在HTML网页中使用WSH的诸如Shell对象。此句为注释,你可以删除.
注册表操作实例
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.RegWrite
"HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet
Explorer\Control Panel\homepage",1,"REG_DWORD"
'写注册表(0=要写的值,REG_DWORD是16或10进制格式也可以是REG_SZ=字符串
REG_BINARY=二进

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。