Вы находитесь на странице: 1из 6

1 слайд

Поговорим о компьютерных вирусах, о том, как их можно классифицировать


и как они работают.
2 слайд
В обиходе компьютерными вирусами называют всё вредоносное ПО, хотя на
самом деле это лишь один его вид. Определение вируса дано в стандарте
ГОСТ Р 51188-98. Защита информации. Испытания программных средств на
наличие компьютерных вирусов. Типовое руководство
3 слайд
К вредоносному ПО можно отнести:
Сетевые черви, Трояны, Руткиты, Загрузочные вирусы, Блокировщики,
Шпионы
4 слайд
Сетевые черви
Они заражают компьютеры, используя уязвимости сетевого ПО. Некоторые
черви умеют перебирать пароли по составленным словарям и, взламывая
почтовые ящики и аккаунты, распространяются дальше, самостоятельно
выискивая новые жертвы. Чаще всего их запускают ради рассылки спама или
затруднения работы компьютерных сетей конкурентов вплоть до полной
блокировки.
Червь распространяется как вложенный в письмо EXE-файл с именем
Happy99.exe. При запуске этого файла червь вызывает видео эффект,
напоминающий фейерверк, и поздравляет с новым 1999 годом, скрывая свою
активность. Помимо этого, червь создает три файла в системный каталог
Windows: SKA.dll, SKA.exe. (Wsock32.dll это критически важная оконная
DLL-библиотека Windows, которая работает с подключением к интернету и
отправкой и получением электронной почты и это резервная копия). При
инсталляции в систему червь изменяет только файлы в системном каталоге
Windows: создает в этом каталоге файлы SKA.EXE и SKA.DLL; сохраняет
файл WSOCK32.DLL с именем WSOCK32.SKA и дописывает сегмент своего
кода в файл WSOCK32.DLL. В некоторых случаях червь также регистрирует
файл SKA.EXE в системном реестре.
Далее червь, инсталлированный в систему, рассылает
свои копии в Интернет по всем адресам, на которые пользователь посылает
свои сообщения.
5 слайд
Жизненный цикл троянов со состоит из трех стадий:
1) Проникновение в систему
2) Активация
3) Выполнение вредоносных действий
Сначала хакер пишет тело (исполняющий код) либо с использованием языка
программирования, либо с использованием специальных инструментов
(Trojan Horse Constuction Kit).
Затем создается «дроппер», или «пипетка», в которой описываются пути, где
будет жить троян и откуда он будет запусаться.
Код дроппера выделяет из своего файла остальные компоненты (один или
несколько файлов) в случае если они хранятся внутри его самого, либо
загружает их из сети, записывает их на диск и запускает их на выполнение.
В дроппере пишется вредоносный код, где содержится и адрес сервера, куда
троян будет отправлять информацию. Но IP-адрес клиента, на который
пойдут пароли от соцсетей или почтовых адресов может оказаться лишь
частью ботнета, после чего реальная дроп-зона хакера может бесследно
потеряться.
6 слайд
Добавим using System.IO; для работы с файлами,
System.Runtime.InteropServices для работы с WinAPI и System.Threading для
приостановки потока.

Импортируем GetAsyncKeyState из user32.dll:


Логирование нажатий, собирая их по десять штук, чтобы не делать слишком
много дисковых операций

Другие кнопки, которые нужно обрабатывать по-особому (5)

Сбор логов
Следующее, что нам нужно, — это забирать лог удаленно. Поскольку мы не
собираемся заниматься промышленным шпионажем, то можно для начала
ограничиться доступом из локальной сети. Для этого будет достаточно
встроить в наш проект минималистичный сервер HTTP. Вот подходящий
исходник, а вот доработанная мной версия.
Использование тоже весьма примитивное: достаточно создать объект нашего
сервера, и он автоматически займет адреса localhost:34000 и
<InternalIP>:34000 под HTTP и на этих же адресах порт 34001. Сервер будет
возвращать список файлов и папок в виде списка или содержимое файла,
если запрошен файл.
В конструктор нужно передать путь к папке, в которую пишутся логи (или
любой другой, которая может понадобиться). По умолчанию логи пишутся в
текущую папку, значит, в конструктор передаем
Environment.CurrentDirectory.

Чтобы автоматизировать добавление нашей программы в белый список


файрвола, вы можете воспользоваться Windows Firewall API. В этом вам
помогут библиотеки-
обертки FirewallManager, WindowsFirewallHelper и YFW.Net.

Автозапуск
Есть много способов попасть в автозагрузку: тут и папка «Автозагрузка», и
куча мест в реестре, и установка своего драйвера, и создание службы…
Однако реестр и драйверы отслеживаются любым приличным антивирусом, а
создание службы слишком кривой вариант, который может сломаться в
любой момент, хотя на крайний случай неплохо.
Мы же просто создадим задачу в планировщике заданий и попросим его
запускать наш логгер с нужными параметрами при каждом входе юзера в
систему. Для работы с планировщиком заданий берем пакет
Microsoft.Win32.TaskScheduler из NuGet.

7 слайд

Проверка заголовка окна


Если наша предполагаемая жертва сразу после входа в систему пошла
логиниться в ВК, то, считайте, вам повезло. Но что, если вместо этого она
села играть в контру? Пароль придется вытаскивать из тонн символов W, A,
S, D и пробелов, а с «костыльным» вариантом это еще сложнее. Поэтому
давайте прокачаем наш логгер: будем записывать сигналы клавиатуры только
тогда, когда активно окно браузера с формой входа. Для этого вернемся к
WinAPI, а конкретно к функции GetForegroundWindow.

В импорте видна еще одна функция, которая нам понадобится:


GetWindowText. Она нужна, чтобы по хендлу окна получить его заголовок.
Алгоритм действий тут тоже предельно понятен: сначала получаем заголовок
активного окна, затем проверяем, нужно ли включать логгер, и включаем его
(или выключаем).

8 слайд

В случае недопустимой инструкции процессор бросает исключение, а ОС


уже сама решает, что с этим делать. Если это ошибка в программе и она
никак не обрабатывается, то система выдает всем известное сообщение о
том, что прекращена работа программы.
Если скомпилировать этот код без оптимизации, то мы увидим то самое окно
о прекращении работы программы (конечно, компилятор выдаст warning).
Например, в этом коде деление на ноль — недопустимая инструкция.
Есть еще одна исключительная инструкция — деление INT_MIN на -1.

В ядре Windows принято не использовать переменные с плавающей точкой.


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

Второй и третий параметры, четвертый и пятый параметры — это как раз


числитель и знаменатель.
Xnum / Xdenom — масштабирование по x.
Ynum / Ydenom — масштабирование по y.
Но функция не всегда делит одно число на другое. Функция будет делить
одно число на другое в случае, если разметка контекста рисования (device
context) располагается справа налево. В противном случае она, видимо, будет
перед делением как-то менять эти числа. Чтобы поменять разметку
контекста, есть функция SetLayout.
Значит, создаем контекст рисования вызовом CreateCompatibleDC (NULL).
Устанавливаем разметку контекста с помощью SetLayout. После чего
вызываем функцию ScaleWindowExtEx с нужными параметрами.
Конечно, программисты Майкрософт не полные дебилы проверяют деление
на ноль, и передачей третьим параметром числа ноль Windows не уронишь.
Но вот деление INT_MIN на -1 они не проверяют. Из-за чего происходит
необработанное исключение в ядре системе, что приводит к синему экрану.
Такой код программы при добавлении библиотеки gdi32.lib уронит Windows:
9 слайд
13 мая 2013 год.
10 слайд

Вирус - это самовоспроизводящийся программный код, который внедряется в


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

Червь. Они заражают компьютеры, используя уязвимости сетевого ПО. Черви


являются в некотором роде вирусами, так как созданы на основе
саморазмножающихся программ. Однако черви не могут заражать существующие
файлы. Вместо этого червь поселяется в компьютер отдельным файлом и ищет
уязвимости в Сети или системе для дальнейшего распространения себя. Черви
также могут подразделяться по способу заражения (электронная почта,
мессенджеры, обмен файлами и пр.). Некоторые черви существуют в виде
сохраненных на жестком диске файлов, а некоторые поселяются лишь в
оперативной памяти компьютера. Некоторые черви умеют перебирать пароли по
составленным словарям и, взламывая почтовые ящики и аккаунты,
распространяются дальше, самостоятельно выискивая новые жертвы. Чаще всего
их запускают ради рассылки спама или затруднения работы компьютерных сетей
конкурентов вплоть до полной блокировки.

Троян. По своему действию является противоположностью вирусам и червям. Его


предлагают загрузить под видом законного приложения, однако вместо
заявленной функциональности он делает то, что нужно злоумышленникам.
Троянцы получили свое название от одноименного печально известного
мифологического коня, так как под видом какой-либо полезной программы или
утилиты в систему проникает деструктивный элемент. Трояны не
самовоспроизводятся и не распространяются сами по себе. Однако с
увеличением вала информации и файлов в Интернете трояна стало довольно
легко подцепить. Нынешние трояны эволюционировали до таких сложных форм,
как, например, бэкдор (троян, пытающийся взять на себя администрирование
компьютера) и троян-загрузчик (устанавливает на компьютер жертвы
вредоносный код).

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


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

Бэкдор (средство удаленного администрирования). Бэкдор, или RAT (remote


administration tool), — это приложение, которое позволяет честному системному
администратору или злоумышленнику управлять вашим компьютером на
расстоянии. В зависимости от функциональных особенностей конкрентного
бэкдора, хакер может установить и запустить на компьютере жертвы любое
программное обеспечение, сохранять все нажатия клавиш, загружать и сохранять
любые файлы, включать микрофон или камеру. Словом, брать на себя контроль
за компьютером и информацией жертвы.
Загрузчик. Это небольшая часть кода, используемая для дальнейшей загрузки и
установки полной версии вредоноса. После того как загрузчик попадает в систему
путем сохранения вложения электронного письма или, например, при просмотре
зараженной картинки, он соединяется с удаленным сервером и загружает весь
вредонос.

Вам также может понравиться