Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Лечение систем от вредоносных программ (http://forum.oszone.net/forumdisplay.php?f=87)
-   -   [решено] WinLock блокировка входа в Windows (http://forum.oszone.net/showthread.php?t=167447)

Fomarkin 15-02-2010 19:01 1347820

WinLock блокировка входа в Windows
 
Все "разблокираторы" и "генераторы номеров" хороши, но чтоб их запустить надо еще попасть в систему.
Написал простенький скрипт для защиты реестра от запуска Winlock.
Может кому поможет:

читать дальше »

Код:

Opt ('TrayIconHide', 1)
#Include <date.au3>
$today = _NowDate()
$htime = _NowTime()
Func checkit ()
$val = RegRead ($section, $key)
        if $val <> $def then
        $i+=1
        $logfile = FileOpen ($today&'.txt', 1)
                If $logfile = -1 Then
                            MsgBox(0, "Ошибка", "Невозможно открыть файл.")
                    EndIf
        FileWriteLine ($logfile, $htime&"- Изменен "&$i&" параметр"&@CRLF)
        FileWriteLine ($logfile, $section&@CRLF)
        FileWriteLine ($logfile, "стандартный ключ: "&$key&'='&$def&@CRLF)
        FileWriteLine ($logfile, "измененый ключ:  "&$key&'='&$val&@CRLF)
        FileClose ($logfile)
        RegWrite ($section, $key, $parreg,$def )
        return ($i)
        EndIf
EndFunc
$exscript = 0
Do
Sleep (5000)
$section ='HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
$i =0
$parreg = "REG_SZ"
$key ='Shell'
$def ='Explorer.exe'
checkit ()
$key ='System'
$def =''
checkit ()
$key = 'Userinit'
$def = @SystemDir&'\userinit.exe,'
checkit ()
$section = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows'
$key = 'AppInit_DLLs'
$def = ''
checkit ()
if $i > 0 then
$alarm = "Неизвестной программой были изменено: " & $i & @CRLF & "Значений реестра, проверь систему!"
MsgBox ( 262160, "Внимание !!", $alarm, 30 )
ShellExecute($today&'.txt', "", @ScriptDir, "open")
Sleep (2000)
        if FileExists ( "HijackThis.exe" ) then
                Run ("HijackThis.exe")
        EndIf
$exscript = 1
EndIf
Until $exscript = 1


Пояснять тут вроде нечего, параметры можно добавить (если появятся другие пути запуска)
Можно скомпилироать екзешник и добавить ярлык в автозагрузку (лучше установить как службу, меньше будет подтормаживать систему, хоть и некритично, он занимает всего 6 мб в свопе). Скрипт только препятствует загрузке WinLock при входе в Windows, он не удаляет вирус, только записывает измененые значения в лог. Обработка ошибок не предусмотрена, для запуска HijackThis файл должен лежать
в папке с екзешником.

iskander-k 15-02-2010 19:15 1347831

Цитата:

Цитата Fomarkin
Пояснять тут вроде нечего, »

Если поподробнее пояснили - было бы лучше.
А если бы - собрали бы самостоятельную утилитку с автозапуском при запуске компа - было бы хорошо. клиенту не объяснишь на пальцах по инету как ему запустить этот скрипт.

Drongo 15-02-2010 19:38 1347857

Цитата:

Цитата Fomarkin
Можно скомпилироать екзешник и добавить ярлык в автозагрузку »

Можно, конечно. :) Все поголовно прогеры :gigi: и разбираются во всех языках программирования и у всех есть необходимые компиляторы. Поправьте меня если я не правильно понял.
Здесь идёт проверка ветки
Код:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
И ключей. Верно?
Код:

Shell
Userinit
AppInit_DLLs

Если значение этих ключей отличается от обычного, то вывести информацию в лог сколько ключей изменено.

Это вроде константных данных, с которыми мы сравниваем изменения. Так?
Код:

...
$section ='HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
$i =0
$parreg = "REG_SZ"
$key ='Shell'
$def ='Explorer.exe'
checkit ()
$key ='System'
$def =''
checkit ()
$key = 'Userinit'
$def = @SystemDir&'\userinit.exe,'
checkit ()
$section = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows'
$key = 'AppInit_DLLs'
$def = ''
checkit ()
...

Fomarkin, Желательно как минимум, откоментировать каждую строку. :)

thyrex 15-02-2010 20:04 1347887

+ к Drongo

Не вижу смысла в этой проверке
Код:

AppInit_DLLs = ''
Очень часто можно встретить в этом параметре запись от Касперского. Да и vksaver туда лезет. Их явно не отнесешь к Winlocker'ам :)

Drongo 15-02-2010 20:32 1347919

Цитата:

Цитата thyrex
Очень часто можно встретить в этом параметре запись от Касперского. Да и vksaver туда лезет. »

Да, а также DLL'ки фаерволов, Outpost и т.д. Поэтому при таком раскладе скрипт перепишет легальное и существующее значение для AppInit_DLLs.

Fomarkin 15-02-2010 21:00 1347953

Sleep таймаут между проверками (5 сек.)
$parreg = Параметр ключа
$section = Раздел реестра для проверки
$key = Проверяемый ключ
$def = значение по дефолту
checkit () функция проверки, записи в лог и востановления на дефолт.
Скрипт дан для примера
Нужна ли проверка AppInit_DLLs, Вам решать, можно посмотреть http://www.z-oleg.com/secur/virlist/vir1158.php
Параметры можно поставить, такие какие стоят у Вас на компьютере. Поэтому и выложил скрипт, а не скомпилированный файл. Свои параметры могут быть не только у AppInit_DLLs, но и по моему у Shell вроде бы Aston туда себя прописывает (хотя могу и ошибаться).
Цитата:

Цитата Drongo
и у всех есть необходимые компиляторы. »

AutoIt бесплатен и есть подробная справка на русском, достаточно открыть соответствующую ветку форума


Время: 18:44.

Время: 18:44.
© OSzone.net 2001-