Как вернуть права на ветки реестра (обсуждение)

Vadim Sterkin

VN Наблюдательный совет
Сообщения
106
Реакции
74
https://safezone.cc/forum/showthread.php?t=2437

Зачем скачивать и юзать дополнительные утилиты - если данные действия можно произвести в AVZ при помощи функции RegKeyResetSecurity:
function RegKeyResetSecurity(ARoot, AName : string) : boolean;
Удаляет все привилегии ключа реестра AName, делая его доступным для всех пользователей. Данная функция полезна для удаления ключей реестра, созданных вредоносными программами - нередко после создания ключа зловред меняет привилегии доступа к нему, блокируя все операции, кроме чтения.
Совместимость: AVZ 4.32 и выше
Пример:
Код:
begin
 RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\TrojanDriverKey');
end.
На заметку: Начиная с версии 4.32 функции RegKeyDel и DeleteService автоматически вызывают RegKeyResetSecurity в случае необходимости.
 
Последнее редактирование:
function RegKeyResetSecurity(ARoot, AName : string) : boolean;
Удаляет все привилегии ключа реестра AName, делая его доступным для всех пользователей. Данная функция полезна для удаления ключей реестра, созданных вредоносными программами - нередко после создания ключа зловред меняет привилегии доступа к нему, блокируя все операции, кроме чтения.
Извиняюсь, а можно вопрос? А если я просто в "Редакторе реестра" шелкну "Разрещения" и добавлю себе права, разве не сработает?
 
Извиняюсь, а можно вопрос? А если я просто в "Редакторе реестра" шелкну "Разрещения" и добавлю себе права, разве не сработает?
Скорее всего сможете, в большинстве случаев, но эта рекомендация на тот случай, когда не получится.
Зачем скачивать и юзать дополнительные утилиты - если данные действия можно произвести в AVZ при помощи функции RegKeyResetSecurity:
Во-первых, посмотрите дату создания темы и выпуска АВЗ версии 4.32 и тогда кое-что поймёте, во-вторых относительно Windows, вторична АВЗ, а приведенная утилита разработана специалистами МС. Притом блокируется доступ для того что бы поправить внесённые изменения, например такие как замена systemroot на fystemroot, тут удаление ключа не поможет.
 
Извиняюсь, а можно вопрос? А если я просто в "Редакторе реестра" шелкну "Разрещения" и добавлю себе права, разве не сработает?

Здесь может быть много нюансов:
1) Зловред может отключить редактор реестра.
2) Я не пробывал вручную менять права доступа у ключей созданных зловредами - поятому точно ничего утверждать не могу (получится или нет)...
3) Идёт речь о лечение компьютеров с помощью спец утилит, а не ручной правке реестра - можно например вручную менять ключ запуска проводника на оригинальный, удалять записи о отладчиках процессов (зловреды так блочат запуск зашитного софта), править файловые ассоциации - но проще всё же это сделать с помощью спец утилит...
4) Тут как кому удобнее - у меня напрмер стоит MD - она имеет прямой доступ к файловой системе и реестру - поэтому у неё проблем с нехваткой прав не возникнет - удалит всё что угодно (P.S. исключение TDSS и ему подобные - если он активен на машине до установки MD (он блочит антируткитам прямой доступ к файлам и реестру), так как после её установки и работе - он ничего не сможет сделать)...

Притом блокируется доступ для того что бы поправить внесённые изменения, например такие как замена systemroot на fystemroot, тут удаление ключа не поможет.
Вот мой скрипт AVZ для исправления этой проблемы:
Код:
begin
RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\BITS');
RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\wuauserv');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
end.
:)
Кстати причём тут удаление ключа - я вроде о нём ничего не упоминал...
 
Последнее редактирование:
3) Идёт речь о лечение компьютеров с помощью спец утилит, а не ручной правке реестра - можно например вручную менять ключ запуска проводника на оригинальный, удалять записи о отладчиках процессов (зловреды так блочат запуск зашитного софта), править файловые ассоциации - но проще всё же это сделать с помощью спец утилит...
Еще проще твиками.
Вот мой скрипт AVZ для исправления этой проблемы:
Код:
begin
RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\BITS');
RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\wuauserv');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
end.
Возникает вопрос, а зачем Вам учиться если Вы все знаете? Мне вот например все интересно, так как все в новинку. А Вы судя по подписи, вроде даже с помощью GMER лечите. Я здесь уже почти месяц, а до альтернативных утилит даже еще не дошел. :(
 
Последнее редактирование:
Еще проще твиками.

Возникает вопрос, а зачем Вам учиться если Вы все знаете? Мне вот например все интересно, так как все в новинку. А Вы судя по подписи, вроде даже с помощью GMER лечите. Я здесь уже почти месяц, а до альтернативных утилит даже еще не дошел. :(

[OFF]Знаний много не бывает - AVZ, HijackThis и GMER я владею (но у вас тут ещё учат другим утилитам) - не знаю правда какова в них необходимость - так представленного выше набора мне хватает (разве что в очень редких случаях они пригодятся) - но всё равно ознакомится с их работой будет полезно - да и лишняя практика не помешает...

Я вообше придерживаюсь классического подхода при личение - использовать как можно меньше разнообразных утилит - дабы не путать пользователей и не заставлять их делать кучу разных логов в которых нет острой необходимости...[/OFF]
 
Зачем скачивать и юзать дополнительные утилиты - если данные действия можно произвести в AVZ при помощи функции RegKeyResetSecurity:

AVZ 4.32 вышла 21.08.2009, а вот тема создана 07.07.2009. Тогда такого функционала в AVZ не предусматривалось.

Да и скрипт по исправлению последствий fystemRoot не совсем полон.

Windows Registry Editor Version 5.00

; Registry Search 2.0 by Bobbi Flekman © 2005
; Version: 2.0.6.0

; Results at 14.04.2009 19:13:34 for strings:
; 'fystemroot'
; Strings excluded from search:
; (None)
; Search in:
; Registry Keys Registry Values Registry Data
; HKEY_LOCAL_MACHINE HKEY_USERS


[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\BITS]
; Contents of value:
; %fystemRoot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\wuauserv]
; Contents of value:
; %fystemroot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Services\BITS]
; Contents of value:
; %fystemRoot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Services\wuauserv]
; Contents of value:
; %fystemroot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\controlset004\Services\BITS]
; Contents of value:
; %fystemRoot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\controlset004\Services\wuauserv]
; Contents of value:
; %fystemroot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BITS]
; Contents of value:
; %fystemRoot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv]
; Contents of value:
; %fystemroot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

; End Of The Log...

Если и исправлять последствия то в полном объеме.
 
AVZ 4.32 вышла 21.08.2009, а вот тема создана 07.07.2009. Тогда такого функционала в AVZ не предусматривалось.
Тогда не было - сейчас есть - нужно идти в ногу со временем и дополнить статью.

Да и скрипт по исправлению последствий fystemRoot не совсем полон.

Windows Registry Editor Version 5.00

; Registry Search 2.0 by Bobbi Flekman © 2005
; Version: 2.0.6.0

; Results at 14.04.2009 19:13:34 for strings:
; 'fystemroot'
; Strings excluded from search:
; (None)
; Search in:
; Registry Keys Registry Values Registry Data
; HKEY_LOCAL_MACHINE HKEY_USERS


[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\BITS]
; Contents of value:
; %fystemRoot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\wuauserv]
; Contents of value:
; %fystemroot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Services\BITS]
; Contents of value:
; %fystemRoot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet003\Services\wuauserv]
; Contents of value:
; %fystemroot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\controlset004\Services\BITS]
; Contents of value:
; %fystemRoot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\controlset004\Services\wuauserv]
; Contents of value:
; %fystemroot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BITS]
; Contents of value:
; %fystemRoot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv]
; Contents of value:
; %fystemroot%\system32\svchost.exe -k netsvcs
"ImagePath"=hex(2):25,00,66,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,00,6f,00,\
74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,\
00,76,00,63,00,68,00,6f,00,73,00,74,00,2e,00,65,00,78,00,65,00,20,00,2d,00,\
6b,00,20,00,6e,00,65,00,74,00,73,00,76,00,63,00,73,00,00,00

; End Of The Log...

Если и исправлять последствия то в полном объеме.

Я привёл вам лишь пример скрипта правящий данные изменения, а вы говорите про конкретный случай заражения - скрипт нужно писать для каждого случая отдельно...
Хотя можно организовать в скипте перебор разделов реестра и внесение изменений при наличие соответствующего раздела - сделать единый скрипт для всех случаев...
 
Последнее редактирование:
Кстати для поиска изменённых ключей тоже не нужно дополнительных утилит - AVZ и это делать умеет:
function RegSearch(ARoot, AName, AValue : string) : boolean;
Производит сканирование ключа AName раздела реестра ARoot и осуществляет поиск образца AValue. Информация о всех найденных ключах выводится в протокол. Если AName равен пустой строке, то сканируются все ключи раздела ARoot. Сравнение с образцом идет без учета регистра, допускаются частичные совпадения. Функция полезна для поиска в реестре определенных данных, например ссылок на файл с известным именем. Поиск может занять длительное время (до нескольких минут).
Пример:
Код:
begin
 RegSearch('HKLM', '', 'svchost.exe');
end.
Данный пример производит поиск в реестре и выводит в протокол информацию о всех вхождениях 'svchost.exe' в реестре.
Вот пример скрипта:
Код:
begin
 RegSearch('HKLM', 'System', 'fystemRoot');
end.
 
Здесь может быть много нюансов:
1) Зловред может отключить редактор реестра.
Если вы не выгнали всех зловредов то смысла в правке реестра практически нет, за редким исключением.

2) Я не пробывал вручную менять права доступа у ключей созданных зловредами - поятому точно ничего утверждать не могу (получится или нет)...
Если зловред удалён, то получится.


Кстати причём тут удаление ключа - я вроде о нём ничего не упоминал...
Внимательнее прочитайте цитату приведенную в вашем сообщении


Я вообше придерживаюсь классического подхода при личение - использовать как можно меньше разнообразных утилит - дабы не путать пользователей и не заставлять их делать кучу разных логов в которых нет острой необходимости...
Вынужден с вами не согласится. т.к. после того как в логе АВЗ нет никаких зловредов, другие утилиты удаляют ещё их, иногда одного-двух, а иногда и десятки.

Тут можно вспомнить пресловутый Кидо, которого долгое время АВЗ в своих логах вообще не отображала, а логи Combofix и Gmer дополняли друг друга, кстати, снова начали встречаться разновидности Кидо, которые АВЗ не видит.
 
Если вы не выгнали всех зловредов то смысла в правке реестра практически нет, за редким исключением.
Если зловред удалён, то получится.
Ещё раз повторю то что я уже писал:
Идёт речь о лечение компьютеров с помощью спец утилит, а не ручной правке реестра - можно например вручную менять ключ запуска проводника на оригинальный, удалять записи о отладчиках процессов (зловреды так блочат запуск зашитного софта), править файловые ассоциации - но проще всё же это сделать с помощью спец утилит...
На это тему можно ещё долго спорить.

Внимательнее прочитайте цитату приведенную в вашем сообщении
Это вам стоит внимательно перечитать цитату и понять что там написано...
Вы просто выдернули из контекста фразу RegKeyDel (Данная функция полезна для удаления ключей реестра) и начали говорить об этой функции хотя речь идёт о RegKeyResetSecurity, а там лишь упоминалось что при использование команд RegKeyDel и DeleteService - они автоматически вызывают RegKeyResetSecurity в случае необходимости, т.е. не нужно дополнительно прописывать в скрипте RegKeyResetSecurity для удаляемых ключей.
Основная мысль там:
RegKeyResetSecurity - удаляет все привилегии ключа реестра, делая его доступным для всех пользователей.
Ваша цитата:
Притом блокируется доступ для того что бы поправить внесённые изменения, например такие как замена systemroot на fystemroot, тут удаление ключа не поможет.
О том как поправить изменения я вам уже написал, повторяться не буду...

Вынужден с вами не согласится. т.к. после того как в логе АВЗ нет никаких зловредов, другие утилиты удаляют ещё их, иногда одного-двух, а иногда и десятки.

Тут можно вспомнить пресловутый Кидо, которого долгое время АВЗ в своих логах вообще не отображала, а логи Combofix и Gmer дополняли друг друга, кстати, снова начали встречаться разновидности Кидо, которые АВЗ не видит.
В реальной практике лечения такие случае возникнут редко (имеется ввиду невозможность определить зловреда при помощи связки AVZ + HijackThis + GMER) - поэтому и логи дополнительными утилитами нужно просить делать когда этими утилитами отработали по полной, а проблемы остались (зловред не обнаружен или не добит), т.е. только при реальной необходимости в дополнительных логах, а не сразу - пользователь пришёл лечиться - ему говорят скачайте 10 утилит, разберитесь в их работе, сделайте 10 логов этими утилитами, выложите их и т.д. (цифра 10 так от болды взята) - зачем пользователя изначально загонять в тупик - заставлять делать лишнюю работу - но это чисто моё мнение - я его никому не навязываю...

Добавлено через 22 часа 48 минут 37 секунд
Вот уневерсальный скрипт для полного исправления проблемы с fystemroot (Большое спасибо Kuzz за помощь в написание скрипта!!!):
Код:
var count:integer;
begin
RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\BITS');
RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\wuauserv');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
for count:=1 to 9 do
 begin
 if RegKeyExists('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)) then
  begin
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\BITS');
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\wuauserv');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  AddToLog('Раздел ControlSet00'+IntToStr(count)+' найден.');
  end;
 end;
for count:=10 to 99 do
 begin
 if RegKeyExists('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)) then
  begin
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\BITS');
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\wuauserv');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  AddToLog('Раздел ControlSet0'+IntToStr(count)+' найден.');
  end;
 end;
for count:=100 to 999 do
 begin
 if RegKeyExists('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)) then
  begin
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\BITS');
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\wuauserv');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  AddToLog('Раздел ControlSet'+IntToStr(count)+' найден.');
  end;
 end;
end.

Ну как вам скрипт..?
 
Последнее редактирование:
Ну как вам скрипт..?

Хорошо. Обновляю тему :)

Спасибо Kuzz и Вам.


В реальной практике лечения такие случае возникнут редко (имеется ввиду невозможность определить зловреда при помощи связки AVZ + HijackThis + GMER)
Из реальной практики. У AVZ есть несколько довольно неприятных недостатков
1. Не логируются файлы, которые не прописаны в автозапуск (и по моим данным расширение функционала в эту сторону не предусматривается, а жаль). И после полного лечения тот же "лже-антивирус" MBAM, а если остались симптомы, то CF удаляют еще не мало.
2. Слабый бортовой антируткит (не так давно и Gmer был под анафемой "лишняя утилита") :) вспомним Kido и Tdss

Я тоже в свое время занимал довольно аскетическую позицию по выбору утилит, но чем дальше изучал множество альтернативных инструментов, все больше и больше замечал мутных пятен на "нимбе" AVZ.
Cогласен в одном, выбор инструментария сугубо индивидуальное дело каждого специалиста.
 
Ingener, Привет. Я с Delphi поверхностно знаком. Мне бы хотелось понять не что именно этот скрипт делает, а как он работает. Тоесть нужно помочь мне его перевести на нормальный человеческий язык (псевдокод.)
Код:
var count:integer;
begin
RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\BITS');
RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\wuauserv');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
for count:=1 to 9 do
 begin
 if RegKeyExists('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)) then
  begin
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\BITS');
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\wuauserv');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet00'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  AddToLog('Раздел ControlSet00'+IntToStr(count)+' найден.');
  end;
 end;
for count:=10 to 99 do
 begin
 if RegKeyExists('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)) then
  begin
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\BITS');
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\wuauserv');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet0'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  AddToLog('Раздел ControlSet0'+IntToStr(count)+' найден.');
  end;
 end;
for count:=100 to 999 do
 begin
 if RegKeyExists('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)) then
  begin
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\BITS');
  RegKeyResetSecurity('HKLM', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\wuauserv');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\ControlSet'+IntToStr(count)+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  AddToLog('Раздел ControlSet'+IntToStr(count)+' найден.');
  end;
 end;
end.
В общем-то я понимаю:
1-я строка, сброс ограничений прав для ветки ...\BITS
2-я строка, сброс ограничений прав для ветки ...\wuauserv
3-я строка, изменяет в ветке ...\BITS, значение параметра ImagePath на следующий %SystemRoot%\System32\svchost.exe -k netsvcs
4-я строка, делает тоже что и 3-я, но для ветки ...\wuauserv
---------------------
Код:
RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\BITS');
RegKeyResetSecurity('HKLM', 'SYSTEM\CurrentControlSet\Services\wuauserv');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
Не ясен момент цикла со счётчиком... Почему используется счётчик от 0 и до 10, от 10 и до 10, от 100 и до 999. То что значения могут содержать первые два нуля или первый нуль, это понятно. Просто у меня на компе только два ControlSet'a:
1-й ControlSet001
2-й ControlSet002
И всё, зачем нужен перебор до 999 ?

P.S. В гугле я нашёл значение ControlSet100 и ControlSet004, это к слову, но не знаю отчего зависит количество этих разделов?
 
Последнее редактирование:
Ingener, Привет. Я с Delphi поверхностно знаком.
И всё, зачем нужен перебор до 999 ?

P.S. В гугле я нашёл значение ControlSet100 и ControlSet004, это к слову, но не знаю отчего зависит количество этих разделов?
Перебор до 999 задан чисто теоретически - я сам точно не знаю какой максимальный номер может быть задан, поэтому чисто решил остановится на числе 999. В логах GMER встречал записи созданные зловредами если мне не изменяет память с нумерацией разделов до 100 (т.е. он например создавал разделы ControlSet044, ControlSet057) - поэтому я с запасом решил сделать перебор до 999 - но на ресурсоемкости серипта это никак не отображается - скрипт вмиг перебирает все разделы.

интервалы от 0 и до 10, от 10 и до 10, от 100 используется из-за для организации корректного перебора ключей:
Если просто задать перебор интервалом от 0 до 999 то получим:
Код:
ControlSet1
***
ControlSet10
***
ControlSet100
***
ControlSet999
Т.е. скрипт начнёт действовать только с 100-го раздела реестра.
А нам нужен такой перебор:
Код:
ControlSet001
***
ControlSet010
***
ControlSet100
***
ControlSet999
Люди говорили что как-то можно добавить ведущие нули, но я не разобрался как это сделать - кстати вот усовершенствованная модель скрипта - с оптимизированным перебором разделов реестра и откорректирован ряд моментов - сейчас ещё потестирую скрипт на виртуалке - нет ли там ошибок и можно заменить его в той теме:
Код:
var j:integer; NumStr:string;
begin
for j:=0 to 999 do
 begin
    if j=0 then
        NumStr:='CurrentControlSet' else 
        if j<10 then
            NumStr:='ControlSet00'+IntToStr(j) else
            if j<100 then
                NumStr:='ControlSet0'+IntToStr(j) else
                NumStr:='ControlSet'+IntToStr(j);
 if RegKeyExists('HKLM', 'SYSTEM\'+NumStr+'\Services\BITS') then
  begin
  RegKeyResetSecurity('HKLM', 'SYSTEM\'+NumStr+'\Services\BITS');
  RegKeyStrParamWrite('HKLM', 'SYSTEM\'+NumStr+'\Services\BITS', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  AddToLog('Значение параметра ImagePath в разделе реестра HKLM\SYSTEM\'+NumStr+'\Services\BITS исправлено на оригинальное.');
  end;
 if RegKeyExists('HKLM', 'SYSTEM\'+NumStr+'\Services\wuauserv') then
  begin 
  RegKeyResetSecurity('HKLM', 'SYSTEM\'+NumStr+'\Services\wuauserv');
  RegKeyStrParamWrite('HKLM', 'SYSTEM\'+NumStr+'\Services\wuauserv', 'ImagePath', '%SystemRoot%\System32\svchost.exe -k netsvcs');
  AddToLog('Значение параметра ImagePath в разделе реестра HKLM\SYSTEM\'+NumStr+'\Services\wuauserv исправлено на оригинальное.');
  end;
 end;
SaveLog(GetAVZDirectory + 'fystemRoot.log');
end.

Добавлено через 1 час 14 минут 9 секунд
Скрипт протестировал на виртуалке - полностью рабочий - замените плиз в соответствующей теме.
 
Последнее редактирование:
Перебор до 999 задан чисто теоретически - я сам точно не знаю какой максимальный номер может быть задан, поэтому чисто решил остановится на числе 999
А, понял, спасибо.
Эта версия с условиями если\иначе будет лучше, не будет лишних затрат.
 
Люди говорили что как-то можно добавить ведущие нули, но я не разобрался как это сделать
Ingener, Мой друг Serega, реализовал пример-программу на Delphi с ведущими нулями перед числом. Оригинальный код:
Код:
program Project1;

uses
  Windows,
  SysUtils;

var
  i: Integer;
  s: string;
  
begin
  for i:= 0 to 10 do s:= s + FormatFloat('Template0000', i) + '.txt' + #13;
  MessageBox(0, PChar(s), 'Сообщение', MB_ICONEXCLAMATION);
end.
Тест-программа, выводит в примере имена файлов с ведущими нулями от номера от 0000 до 0010.



Я думаю можно исправить приблизительно так:
Код:
...
NumStr:= NumStr + FormatFloat('ControlSet000', j);
...
if RegKeyExists('HKLM', 'SYSTEM\'+NumStr+'\Services\BITS')
...
 
Назад
Сверху Снизу