Как удалить вирусы и шпионские программы с компьютера. Вирусы, шпионы и диалеры: кто, зачем и как

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

Что такое шпионская программа?

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

Но вот основным их назначением является именно отслеживание работы пользователя, а по возможности - кража конфиденциальных данных, подмена электронной почты с целью рассылки спама, анализ запросов в Интернете и перенаправление на сайты, содержащие вредоносное ПО, анализ информации на винчестере и т. д. Само собой разумеется, что у любого юзера должен быть установлен хотя бы примитивный антивирусный пакет для защиты. Правда, в большинстве своем ни бесплатные антивирусы, ни тем более встроенный брэндмауэр Windows полной уверенности в безопасности не дают. Некоторые приложения могут просто не распознаваться. Вот тут и возникает вполне закономерный вопрос: «А какой же тогда должна быть защита компьютера от шпионских программ?» Попробуем рассмотреть основные аспекты и понятия.

Виды шпионских программ

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

  • кей-логгеры;
  • сканеры жестких дисков;
  • экранные шпионы;
  • почтовые шпионы;
  • прокси-шпионы.

Каждая такая программа по-разному воздействует на систему, поэтому далее посмотрим, как именно проникают шпионские программы на компьютер и что они могут натворить в зараженной системе.

Методы проникновения Spyware в компьютерные системы

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

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

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

Последствия воздействия

Что касается вреда, наносимого шпионами, как уже было сказано, на системе это в целом не отражается никоим образом, но вот пользовательская информация и личные данные подвержены риску.

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

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

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

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

Прокси-шпионы вред наносят только в том смысле, что превращают локальный компьютерный терминал в некое подобие прокси-сервера. Зачем это нужно? Да только затем, чтобы прикрыться, скажем, IP-адресом юзера при совершении противоправных действий. Естественно, пользователь об это не догадывается. Вот, допустим, кто-то взломал систему защиты какого-то банка и украл энную сумму денег. Отслеживание действий уполномоченными службами выявляет, что взлом был произведен с терминала с таким-то IP, находящегося по такому-то адресу. К ничего не подозревающему человеку приезжают спецслужбы и отправляют за решетку. Правда, ничего хорошего в этом нет?

Первые симптомы заражения

Теперь переходим к практике. Как проверить компьютер на шпионские программы, если вдруг по каким-то причинам закрались сомнения в целостности системы безопасности? Для этого нужно знать, как на первых стадиях проявляется воздействие таких приложений.

Если ни с того ни с сего замечено снижение быстродействия, или система периодически «виснет», или вообще отказывается работать, для начала следует посмотреть на использование нагрузки на процессор и оперативную память, а также провести мониторинг всех активных процессов.

В большинстве случаев пользователь в том же «Диспетчере задач» увидит незнакомые службы, которых до этого в дереве процессов не было. Это только первый звоночек. Создатели программ-шпионов далеко не глупы, поэтому создают программы, которые маскируются под системные процессы, а выявить их без специальных знаний в ручном режиме просто невозможно. Потом начинаются проблемы с подключением к Интернету, изменяется стартовая страница и т. д.

Как проверить компьютер на наличие шпионских программ

Что же касается проверки, штатные антивирусы тут не помогут, особенно если они уже пропустили угрозу. Как минимум потребуется какая-то портативная версия вроде или Kaspersky Virus Removal Tool (а лучше - что-то наподобие Rescue Disc с проверкой системы еще до ее загрузки).

Как найти шпионскую программу на компьютере? В большинстве случаев рекомендуется использовать узконаправленные специальные программы класса Anti-Spyware (SpywareBlaster, AVZ, XoftSpySE Anti-Spyware, Microsoft Antispyware и др.). Процесс сканирования в них полностью автоматизирован, равно как и последующее удаление. Но и тут есть вещи, на которые стоит обратить внимание.

Как удалить шпионскую программу с компьютера: стандартные методы и используемое стороннее ПО

Удалить шпионское ПО с компьютера можно даже вручную, но только при условии, что программа не замаскирована.

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

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

Что использовать? Защита от таких угроз и поиск шпионских программ на компьютере можно осуществить, например, даже при помощи пакета ESETNOD32 или Smart Security с активированной функцией «Антивор». Впрочем, каждый сам выбирает, что для него лучше и проще.

Узаконенный шпионаж в Windows 10

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

Windows 10 в этом плане отличилась не в лучшую сторону. Тут имеется куча служб, которые нужно отключить (обмен данными с удаленными серверами Microsoft, использование идентификации для получения рекламы, отправку данных в компанию, определение местоположения с использованием телеметрии, получение обновлений из нескольких мест и т. д.).

Существует ли 100-процентная защита?

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

http://www.computermaster.ru/articles/secur2.html

Что нужно знать о компьютерных вирусах

(с) Александр Фролов, Григорий Фролов, 2002

[email protected]; http://www.frolov.pp.ru, http://www.datarecovery.ru

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

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

Краткий курс истории компьютерных вирусов

Что же такое компьютерный вирус?

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

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

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

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

Файловые вирусы

Исторически файловые вирусы появились раньше вирусов других типов, и первоначально распространялись в среде операционной системы MS-DOS. Внедряясь в тело файлов программ COM и EXE, вирусы изменяют их таким образом, что при запуске управление передается не зараженной программе, а вирусу. Вирус может записать свой код в конец, начало или середину файла (рис. 1). Вирус может также разделить свой код на блоки, поместив их в разных местах зараженной программы.

Рис. 1. Вирус в файле MOUSE.COM

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

Заметим, что файловые вирусы могут заражать не только программы COM и EXE, но и программные файлы других типов - оверлеи MS-DOS (OVL, OVI, OVR и другие), драйверы SYS, библиотеки динамической компоновки DLL, а также любые файлы с программным кодом. Разработаны файловые вирусы не только для MS-DOS, но и для других ОС, таких как Microsoft Windows, Linux, IBM OS/2. Однако подавляющее большинство вирусов данного типа обитает именно в среде ОС MS-DOS и Microsoft Windows.

Во времена MS-DOS файловые вирусы жили припеваючи благодаря свободному обмену программами, игровыми и деловыми. В те времена файлы программ имели относительно небольшой размер и распространялись на дискетах. Зараженную программу можно было также случайно загрузить с электронной доски объявлений BBS или из Интернета. А вместе с этими программами распространялись и файловые вирусы.

Современные программы занимают немалый объем и распространяются, как правило, на компакт-дисках. Обмен программами на дискетах уже давно ушел в прошлое. Устанавливая программу с лицензионного компакт-диска, Вы обычно не рискуете заразить свой компьютер вирусом. Другое дело - пиратские компакт-диски. Здесь ни за что ручаться нельзя (хотя нам известны примеры распространения вирусов и на лицензионных компакт-дисках).

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

Загрузочные вирусы

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

Сразу после включения питания компьютера начинает работать процедура проверки POST (Power On Self Test), записанная в BIOS. В ходе проверки определяется конфигурация компьютера и проверяется работоспособность основных его подсистем. Затем процедура POST проверяет, вставлена ли дискета в дисковод A:. Если дискета вставлена, то дальнейшая загрузка операционной системы происходит с дискеты. В противном случае загрузка выполняется с жесткого диска.

При загрузке с дискеты процедура POST считывает с нее загрузочную запись (Boot Record, BR) в оперативную память. Эта запись всегда расположена в самом первом секторе дискеты и представляет собой маленькую программу. Кроме программы BR содержит структуру данных, определяющую формат дискеты и некоторые другие характеристики. Затем процедура POST передает управление BR. Получив управление, BR приступает непосредственно к загрузке операционной системы.

При загрузке с жесткого диска процедура POST считывает главную загрузочную запись (Master Boot Record, MBR) и записывает ее в оперативную память компьютера. Эта запись содержит программу первоначальной загрузки и таблицу разделов, в которой описаны все разделы жесткого диска. Она хранится в самом первом секторе жесткого диска.

После чтения MBR управление передается только что прочитанной с диска программе первоначальной загрузки. Она анализирует содержимое таблицы разделов, выбирает активный раздел и считывает загрузочную запись BR активного раздела. Эта запись аналогична записи BR системной дискеты и выполняет те же самые функции.

Теперь о том, как «работает» загрузочный вирус.

При заражении дискеты или жесткого диска компьютера загрузочный вирус заменяет загрузочную запись BR или главную загрузочную запись MBR (рис. 2). Исходные записи BR или MBR при этом запись обычно не пропадают (хотя так бывает не всегда). Вирус копирует их в один из свободных секторов диска.

Рис. 2. Вирус в загрузочной записи

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

Комбинированные вирусы

Очень часто встречаются комбинированные вирусы, объединяющие свойства файловых и загрузочных вирусов.

В качестве примера можно привести широко распространенный в прошлом файлово-загрузочный вирус OneHalf. Проникая в компьютер с операционной системой MS-DOS, этот вирус заражает главную загрузочную запись. Во время загрузки компьютера вирус постепенно шифрует секторы жесткого диска, начиная с самых последних секторов. Когда резидентный модуль вируса находится в памяти, он контролирует все обращения к зашифрованным секторам и расшифровывает их, так что все программное обеспечение компьютера работает нормально. Если OneHalf просто удалить из оперативной памяти и загрузочного сектора, то станет невозможно правильно прочитать информацию, записанную в зашифрованных секторах диска.

Когда вирус зашифрует половину жесткого диска, он отображает на экране надпись:

Dis is one half. Press any key to continue ...

После этого вирус ожидает, когда пользователь нажмет на какую-либо клавишу и продолжает свою работу

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

Вирусы-спутники

Как известно, в операционных системах MS-DOS, и Microsoft Windows различных версий существуют три типа файлов, которые пользователь может запустить на выполнение. Это командные или пакетные файлы BAT, а также исполнимые файлы COM и EXE. При этом в одном каталоге могут одновременно находиться несколько выполнимых файлов, имеющих одинаковое имя, но разное расширение имени.

Когда пользователь запускает программу и то вводит ее имя в системном приглашении операционной системы, то он обычно не указывает расширение файла. Какой же файл будет выполнен, если в каталоге имеется несколько программ с одинаковым именем, но разным расширением имени?

Оказывается, в этом случае запустится файл COM. Если в текущем каталоге или в каталогах, указанных в переменной среды PATH, существуют только файлы EXE и BAT, то выполняться будет файл EXE.

Когда вирус-спутник заражает файл EXE или BAT, он создает в этом же каталоге еще один файл с таким же именем, но с расширением имени COM. Вирус записывает себя в этот COM-файл. Таким образом, при запуске программы первым получит управление вирус-спутник, который затем может запустить эту программу, но уже под своим контролем.

Вирусы в пакетных файлах

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

@ECHO OFF REM [...] copy %0 b.com>nul b.com del b.com rem [...]

В квадратных скобках [...] здесь схематично показано расположение байт, которые являются процессорными инструкциями или данными вируса. Команда @ECHO OFF отключает вывод на экран названий выполняемых команд. Строка, начинающаяся с команды REM, является комментарием и никак не интерпретируется.

Команда copy %0 b.com>nul копирует зараженный командный файл в файл B.COM. Затем этот файл запускается и удаляется с диска командой del b.com.

Самое интересное, что файл B.COM, созданный вирусом, до единого байта совпадает с зараженным командным файлом. Оказывается, что если интерпретировать первые две строки зараженного BAT-файла как программу, она будет состоять из команд центрального процессора, которые фактически ничего не делают. Центральный процессор выполняет эти команды, а затем начинает выполнять настоящий код вируса, записанный после оператора комментария REM. Получив управление, вирус перехватывает прерывания ОС и активизируется.

В процессе распространения вирус следит за записью данных в файлы. Если первая строка, записываемая в файл, содержит команду @echo, тогда вирус считает, что записывается командный файл и заражает его.

Шифрующиеся и полиморфные вирусы

Чтобы затруднить обнаружение, некоторые вирусы шифруют свой код. Каждый раз, когда вирус заражает новую программу, он зашифровывает собственный код, используя новый ключ. В результате два экземпляра такого вируса могут значительно отличаться друг от друга, даже иметь разную длину. Шифрование кода вируса значительно усложняет процесс его исследования. Обычные программы не смогут дизассемблировать такой вирус.

Естественно, вирус способен работать только в том случае, если исполняемый код расшифрован. Когда запускается зараженная программа (или начинается загрузка с зараженной загрузочной записи BR) и вирус получает управление, он должен расшифровать свой код.

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

Стелс-вирусы

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

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

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

Маскировка стелс-вирусов срабатывает только в том случае, если в оперативной памяти компьютера находится резидентный модуль вируса. Если компьютер загружается с «чистой», не зараженной системной дискеты, у вируса нет шансов получить управление и поэтому стелс-механизм не работает.

Макрокомандные вирусы

До сих пор мы рассказывали о вирусах, обитающих в исполняемых файлах программ и загрузочных секторах дисков. Широкое распространение пакета офисных программ Microsoft Office вызвало лавинообразное появление вирусов нового типа, распространяющихся не с программами, а с файлами документов.

На первый взгляд это может показаться невозможным - в самом деле, где спрятаться вирусам в текстовых документах Microsoft Word или в ячейках электронных таблиц Microsoft Excel?

Однако на самом деле файлы документов Microsoft Office могут содержать в себе небольшие программы для обработки этих документов, составленные на языке программирования Visual Basic for Applications. Это относится не только к документам Word и Excel, но и к базам данных Access, а также файлам презентаций Power Point. Такие программы создаются с использованием макрокоманд, поэтому вирусы, живущие в офисных документах, называются макрокомандными.

Как распространяются макрокомандные вирусы?

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

Сейчас макрокомандные вирусы очень распространены, чему в немалой степени способствует популярность Microsoft Office. Они могут принести вреда не меньше, а в некоторых случаях даже больше, чем «обычные» вирусы, заражающие выполнимые файлы и загрузочные секторы дисков и дискет. Наибольшая опасность макрокомандных вирусов, на наш взгляд, заключается в том, что они могут изменять зараженные документы, оставаясь незамеченными долгое время.

2 июня 2016 в 12:29

Пишем свое вредоносное ПО. Часть 1: Учимся писать полностью «не обнаружимый» кейлогер

  • Блог компании Varonis Systems ,
  • Информационная безопасность ,
  • Программирование
  • Перевод
  • Recovery Mode

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


1) «Skids» (script kiddies) – малыши, начинающие хакеры, которые собирают известные куски кода и утилиты и используя их создают какое-то простое вредоносное ПО.


2) «Byuers» - не чистые на руку предприниматели, тинэйджеры и прочие любители острых ощущений. Покупают услуги по написанию такого ПО в интернете, собирают с ее помощью различную приватную информацию, и, возможно, перепродают ее.


3) «Black Hat Сoders» - гуру программирования и знатоки архитектур. Пишут код в блокноте и разрабатывают новые эксплоиты с нуля.


Может ли кто-то с хорошими навыками в программировании стать последним? Не думаю, что вы начнете создавать что-то, на подобии regin (ссылка) после посещения нескольких сессий DEFCON. С другой стороны, я считаю, что сотрудник ИБ должен освоить некоторые концепты, на которых строится вредоносное ПО.


Зачем ИБ-персоналу эти сомнительные навыки?


Знай своего врага. Как мы уже обсуждали в блоге Inside Out, нужно думать как нарушитель, чтобы его остановить. Я – специалист по информационной безопасности в Varonis и по моему опыту – вы будете сильнее в этом ремесле если будете понимать, какие ходы будет делать нарушитель. Поэтому я решил начать серию постов о деталях, которые лежат в основе вредоносного ПО и различных семействах хакерских утилит. После того, как вы поймете насколько просто создать не детектируемое ПО, вы, возможно, захотите пересмотреть политики безопасности на вашем предприятии. Теперь более подробно.


Для этого неформального класса «hacking 101» вам необходимы небольшие знания в программировании (С# и java) и базовое понимание архитектуры Windows. Имейте ввиду, что в реальности вредоносное ПО пишется на C/C++/Delphi, чтобы не зависеть от фреймфорков.


Кейлогер


Кейлогер – это ПО или некое физическое устройство, которое может перехватывать и запоминать нажатия клавиш на скомпрометированной машине. Это можно представить как цифровую ловушку для каждого нажатия на клавиши клавиатуры.
Зачастую эту функцию внедряют в другое, более сложное ПО, например, троянов (Remote Access Trojans RATS), которые обеспечивают доставку перехваченных данных обратно, к атакующему. Также существуют аппаратные кейлогеры, но они менее распространены, т.к. требуют непосредственного физического доступа к машине.


Тем не менее создать базовые функции кейлогера достаточно легко запрограммировать. ПРЕДУПРЕЖДЕНИЕ. Если вы хотите попробовать что-то из ниже следующего, убедитесь, что у вас есть разрешения, и вы не несёте вреда существующей среде, а лучше всего делать это все на изолированной ВМ. Далее, данный код не будет оптимизирован, я всего лишь покажу вам строки кода, которые могут выполнить поставленную задачу, это не самый элегантный или оптимальный путь. Ну и наконец, я не буду рассказывать как сделать кейлогер стойким к перезагрузкам или пытаться сделать его абсолютно не обнаружимым благодаря особым техникам программирования, так же как и о защите от удаления, даже если его обнаружили.



Для подключения к клавиатуре вам всего лишь нужно использовать 2 строки на C#:


1. 2. 3. public static extern int GetAsyncKeyState(Int32 i);

Вы можете изучить больше про фунцию GetAsyncKeyState на MSDN :


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


1. while (true) 2. { 3. Thread.Sleep(100); 4. for (Int32 i = 0; i < 255; i++) 5. { 6. int state = GetAsyncKeyState(i); 7. if (state == 1 || state == -32767) 8. { 9. Console.WriteLine((Keys)i); 10. 11. } 12. } 13. }

Что здесь происходит? Этот цикл будет опрашивать каждые 100 мс каждую из клавиш для определения ее состояния. Если одна из них нажата (или была нажата), сообщение об этом будет выведено на консоль. В реальной жизни эти данные буферизируются и отправляются злоумышленнику.


Умный кейлогер

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


Давайте предположим, что я хочу заполучить учетные данные Facebook или Gmail для последующей продажи лайков. Тогда новая идея – активировать кейлоггинг только тогда, когда активно окно браузера и в заголовке страницы есть слово Gmail или facebook. Используя такой метод я увеличиваю шансы получения учетных данных.


Вторая версия кода:


1. while (true) 2. { 3. IntPtr handle = GetForegroundWindow(); 4. if (GetWindowText(handle, buff, chars) > 0) 5. { 6. string line = buff.ToString(); 7. if (line.Contains("Gmail")|| line.Contains("Facebook - Log In or Sign Up ")) 8. { 9. //проверка клавиатуры 10. } 11. } 12. Thread.Sleep(100); 13. }

Этот фрагмент будет выявлять активное окно каждые 100мс. Делается это с помощью функции GetForegroundWindow (больше информации на MSDN). Заголовок страницы хранится в переменной buff, если в ней содержится gmail или facebook, то вызывается фрагмент сканирования клавиатуры.


Этим мы обеспечили сканирование клавиатуры только когда открыто окно браузера на сайтах facebook и gmail.


Еще более умный кейлогер


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


Для упрощения, я сразу приведу готовые выражения, которые соответствуют именам логина и паролям:


1. //Ищем почтовый адрес 2. ^[\w!#$%&"*+\-/=?\^_`{|}~]+(\.[\w!#$%&"*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+{2,4})|(({1,3}\.){3}{1,3}))$ 3. 4. 5. //Ищем пароль 6. (?=^.{6,}$)(?=.*\d)(?=.*)

Эти выражения здесь как подсказка тому, что можно сделать используя их. С помощью регулярных выражений можно искать (т найти!) любые конструкции, которые имеют определенный и неизменный формат, например, номера паспортов, кредитных карт, учетные записи и даже пароли.
Действительно, регулярные выражения не самый читаемый вид кода, но они одни из лучших друзей программиста, если есть задачи парсинга текста. В языках Java, C#, JavaScript и других популярных уже есть готовые функции, в которые вы можете передать обычные регулярные выражения.


Для C# это выглядит так:


1. Regex re = new Regex(@"^[\w!#$%&"*+\-/=?\^_`{|}~]+(\.[\w!#$%&"*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+{2,4})|(({1,3}\.){3}{1,3}))$"); 2. Regex re2 = new Regex(@"(?=^.{6,}$)(?=.*\d)(?=.*)"); 3. string email = "[email protected]"; 4. string pass = "abcde3FG"; 5. Match result = re.Match(email); 6. Match result2 = re2.Match(pass);

Где первое выражение (re) будет соответствовать любой электронной почте, а второе (re2) любой цифро буквенной конструкции больше 6 символов.


Бесплатно и полностью не обнаружим


В своем примере я использовал Visual Studio – вы можете использовать свое любимое окружение – для создания такого кейлогера за 30 минут.
Если бы я был реальным злоумышленником, то я бы целился на какую-то реальную цель (банковские сайты, соцсети, тп) и видоизменил код для соответствия этим целям. Конечно, также, я запустил бы фишинговую кампанию с электронными письмами с нашей программой, под видом обычного счета или другого вложения.


Остался один вопрос: действительно такое ПО будет не обнаруживаемым для защитных программ?


Я скомпилировал мой код и проверил exe файл на сайте Virustotal. Это веб-инструмент, который вычисляет хеш файла, который вы загрузили и ищет его в базе данных известных вирусов. Сюрприз! Естественно ничего не нашлось.



В этом основная фишка! Вы всегда можете менять код и развиваться, будучи всегда на несколько шагов раньше сканеров угроз. Если вы в состоянии написать свой собственный код он почти гарантированно будет не обнаружим. На этой

  • информационная безопасность
  • Добавить метки 2 июня 2016 в 12:29

    Пишем свое вредоносное ПО. Часть 1: Учимся писать полностью «не обнаружимый» кейлогер

    • Перевод

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


    1) «Skids» (script kiddies) – малыши, начинающие хакеры, которые собирают известные куски кода и утилиты и используя их создают какое-то простое вредоносное ПО.


    2) «Byuers» - не чистые на руку предприниматели, тинэйджеры и прочие любители острых ощущений. Покупают услуги по написанию такого ПО в интернете, собирают с ее помощью различную приватную информацию, и, возможно, перепродают ее.


    3) «Black Hat Сoders» - гуру программирования и знатоки архитектур. Пишут код в блокноте и разрабатывают новые эксплоиты с нуля.


    Может ли кто-то с хорошими навыками в программировании стать последним? Не думаю, что вы начнете создавать что-то, на подобии regin (ссылка) после посещения нескольких сессий DEFCON. С другой стороны, я считаю, что сотрудник ИБ должен освоить некоторые концепты, на которых строится вредоносное ПО.


    Зачем ИБ-персоналу эти сомнительные навыки?


    Знай своего врага. Как мы уже обсуждали в блоге Inside Out, нужно думать как нарушитель, чтобы его остановить. Я – специалист по информационной безопасности в Varonis и по моему опыту – вы будете сильнее в этом ремесле если будете понимать, какие ходы будет делать нарушитель. Поэтому я решил начать серию постов о деталях, которые лежат в основе вредоносного ПО и различных семействах хакерских утилит. После того, как вы поймете насколько просто создать не детектируемое ПО, вы, возможно, захотите пересмотреть политики безопасности на вашем предприятии. Теперь более подробно.


    Для этого неформального класса «hacking 101» вам необходимы небольшие знания в программировании (С# и java) и базовое понимание архитектуры Windows. Имейте ввиду, что в реальности вредоносное ПО пишется на C/C++/Delphi, чтобы не зависеть от фреймфорков.


    Кейлогер


    Кейлогер – это ПО или некое физическое устройство, которое может перехватывать и запоминать нажатия клавиш на скомпрометированной машине. Это можно представить как цифровую ловушку для каждого нажатия на клавиши клавиатуры.
    Зачастую эту функцию внедряют в другое, более сложное ПО, например, троянов (Remote Access Trojans RATS), которые обеспечивают доставку перехваченных данных обратно, к атакующему. Также существуют аппаратные кейлогеры, но они менее распространены, т.к. требуют непосредственного физического доступа к машине.


    Тем не менее создать базовые функции кейлогера достаточно легко запрограммировать. ПРЕДУПРЕЖДЕНИЕ. Если вы хотите попробовать что-то из ниже следующего, убедитесь, что у вас есть разрешения, и вы не несёте вреда существующей среде, а лучше всего делать это все на изолированной ВМ. Далее, данный код не будет оптимизирован, я всего лишь покажу вам строки кода, которые могут выполнить поставленную задачу, это не самый элегантный или оптимальный путь. Ну и наконец, я не буду рассказывать как сделать кейлогер стойким к перезагрузкам или пытаться сделать его абсолютно не обнаружимым благодаря особым техникам программирования, так же как и о защите от удаления, даже если его обнаружили.



    Для подключения к клавиатуре вам всего лишь нужно использовать 2 строки на C#:


    1. 2. 3. public static extern int GetAsyncKeyState(Int32 i);

    Вы можете изучить больше про фунцию GetAsyncKeyState на MSDN :


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


    1. while (true) 2. { 3. Thread.Sleep(100); 4. for (Int32 i = 0; i < 255; i++) 5. { 6. int state = GetAsyncKeyState(i); 7. if (state == 1 || state == -32767) 8. { 9. Console.WriteLine((Keys)i); 10. 11. } 12. } 13. }

    Что здесь происходит? Этот цикл будет опрашивать каждые 100 мс каждую из клавиш для определения ее состояния. Если одна из них нажата (или была нажата), сообщение об этом будет выведено на консоль. В реальной жизни эти данные буферизируются и отправляются злоумышленнику.


    Умный кейлогер

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


    Давайте предположим, что я хочу заполучить учетные данные Facebook или Gmail для последующей продажи лайков. Тогда новая идея – активировать кейлоггинг только тогда, когда активно окно браузера и в заголовке страницы есть слово Gmail или facebook. Используя такой метод я увеличиваю шансы получения учетных данных.


    Вторая версия кода:


    1. while (true) 2. { 3. IntPtr handle = GetForegroundWindow(); 4. if (GetWindowText(handle, buff, chars) > 0) 5. { 6. string line = buff.ToString(); 7. if (line.Contains("Gmail")|| line.Contains("Facebook - Log In or Sign Up ")) 8. { 9. //проверка клавиатуры 10. } 11. } 12. Thread.Sleep(100); 13. }

    Этот фрагмент будет выявлять активное окно каждые 100мс. Делается это с помощью функции GetForegroundWindow (больше информации на MSDN). Заголовок страницы хранится в переменной buff, если в ней содержится gmail или facebook, то вызывается фрагмент сканирования клавиатуры.


    Этим мы обеспечили сканирование клавиатуры только когда открыто окно браузера на сайтах facebook и gmail.


    Еще более умный кейлогер


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


    Для упрощения, я сразу приведу готовые выражения, которые соответствуют именам логина и паролям:


    1. //Ищем почтовый адрес 2. ^[\w!#$%&"*+\-/=?\^_`{|}~]+(\.[\w!#$%&"*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+{2,4})|(({1,3}\.){3}{1,3}))$ 3. 4. 5. //Ищем пароль 6. (?=^.{6,}$)(?=.*\d)(?=.*)

    Эти выражения здесь как подсказка тому, что можно сделать используя их. С помощью регулярных выражений можно искать (т найти!) любые конструкции, которые имеют определенный и неизменный формат, например, номера паспортов, кредитных карт, учетные записи и даже пароли.
    Действительно, регулярные выражения не самый читаемый вид кода, но они одни из лучших друзей программиста, если есть задачи парсинга текста. В языках Java, C#, JavaScript и других популярных уже есть готовые функции, в которые вы можете передать обычные регулярные выражения.


    Для C# это выглядит так:


    1. Regex re = new Regex(@"^[\w!#$%&"*+\-/=?\^_`{|}~]+(\.[\w!#$%&"*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+{2,4})|(({1,3}\.){3}{1,3}))$"); 2. Regex re2 = new Regex(@"(?=^.{6,}$)(?=.*\d)(?=.*)"); 3. string email = "[email protected]"; 4. string pass = "abcde3FG"; 5. Match result = re.Match(email); 6. Match result2 = re2.Match(pass);

    Где первое выражение (re) будет соответствовать любой электронной почте, а второе (re2) любой цифро буквенной конструкции больше 6 символов.


    Бесплатно и полностью не обнаружим


    В своем примере я использовал Visual Studio – вы можете использовать свое любимое окружение – для создания такого кейлогера за 30 минут.
    Если бы я был реальным злоумышленником, то я бы целился на какую-то реальную цель (банковские сайты, соцсети, тп) и видоизменил код для соответствия этим целям. Конечно, также, я запустил бы фишинговую кампанию с электронными письмами с нашей программой, под видом обычного счета или другого вложения.


    Остался один вопрос: действительно такое ПО будет не обнаруживаемым для защитных программ?


    Я скомпилировал мой код и проверил exe файл на сайте Virustotal. Это веб-инструмент, который вычисляет хеш файла, который вы загрузили и ищет его в базе данных известных вирусов. Сюрприз! Естественно ничего не нашлось.



    В этом основная фишка! Вы всегда можете менять код и развиваться, будучи всегда на несколько шагов раньше сканеров угроз. Если вы в состоянии написать свой собственный код он почти гарантированно будет не обнаружим. На этой

  • информационная безопасность
  • Добавить метки

    Классификация вирусов

    В настоящее время не существует единой системы классификации и именования вирусов (хотя попытка создать стандарт была предпринята на встрече CARO в 1991 году). Принято разделять вирусы:

    · по поражаемым объектам (файловые вирусы, загрузочные вирусы, сценарные вирусы, макровирусы, вирусы, поражающие исходный код):

    · по поражаемым операционным системам и платформам (DOS, Windows, Unix, Linux, Android);

    · по технологиям, используемым вирусом (полиморфные вирусы, стелс-вирусы, руткиты);

    · по языку, на котором написан вирус (ассемблер, высокоуровневый язык программирования, сценарный язык и др.);

    · по дополнительной вредоносной функциональности (бэкдоры, кейлоггеры, шпионы, ботнеты и др.).

    Наиболее подробно мы будем рассматривать вирусы - шпионы.

    Вирусы - шпионы

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

    Spyware могут осуществлять широкий круг задач, например:

    · собирать информацию о привычках пользования Интернетом и наиболее часто посещаемые сайты (программа отслеживания);

    · запоминать нажатия клавиш на клавиатуре (кейлоггеры) и записывать скриншоты экрана (screen scraper) и в дальнейшем отправлять информацию создателю spyware;

    · несанкционированно и удалённо управлять компьютером (remote control software) -- бэкдоры, ботнеты, droneware;

    · инсталлировать на компьютер пользователя дополнительные программы;

    · использоваться для несанкционированного анализа состояния систем безопасности (security analysis software) -- сканеры портов и уязвимостей и взломщики паролей;

    · изменять параметры операционной системы (system modifying software) -- руткиты, перехватчики управления (hijackers) и пр. -- результатом чего является снижение скорости соединения с Интернетом или потеря соединения как такового, открывание других домашних страниц или удаление тех или иных программ;

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

    1.3.1 Типы вирусов-шпионов

    По виду деятельности, Вирусы - шпионы можно разделить на три группы:

    Первая группа

    Вирус все время следит за действиями пользователя. При совершении покупок через интернет, шпион получит сведения о кредитной карте и передаст их заинтересованным лицам. Вы можете этого не заметить, пока не произойдет не санкционированное списание денежных средств с вашего счёта.

    Вторая группа

    Третья группа

    Вирус получает информацию о ваших электронных почтовых ящиках. Это грозит множеством проблем, самая маленькая их которых - это обрушившаяся на Вас лавина спама, мусорных и рекламных электронных писем.

    Также существует определенный механизм распространения вируса.

    1.3.2 Механизм распространения

    Вирусы распространяются, копируя своё тело и обеспечивая его последующее исполнение: внедряя себя в исполняемый код других программ, заменяя собой другие программы, прописываясь в автозапуск и другое. Вирусом или его носителем могут быть не только программы, содержащие машинный код, но и любая информация, содержащая автоматически исполняемые команды -- например, пакетные файлы и документы Microsoft Word и Excel, содержащие макросы. Кроме того, для проникновения на компьютер вирус может использовать уязвимости в популярном программном обеспечении (например, Adobe Flash, Internet Explorer, Outlook), для чего распространители внедряют его в обычные данные (картинки, тексты и т. д.) вместе с эксплоитом, использующим уязвимость.

    · Дискеты. Самый распространённый канал заражения в 1980--1990-е годы. Сейчас практически отсутствует из-за появления более распространённых и эффективных каналов и отсутствия флоппи-дисководов на многих современных компьютерах.

    · Флеш-накопители (флешки). В настоящее время USB-флешки заменяют дискеты и повторяют их судьбу -- большое количество вирусов распространяется через съёмные накопители, включая цифровые фотоаппараты, цифровые видеокамеры, портативные цифровые плееры, а с 2000-х годов всё большую роль играют мобильные телефоны, особенно смартфоны (появились мобильные вирусы). Использование этого канала ранее было преимущественно обусловлено возможностью создания на накопителе специального файла autorun.inf, в котором можно указать программу, запускаемую Проводником Windows при открытии такого накопителя. В Windows 7 возможность автозапуска файлов с переносных носителей была отключена.

    · Электронная почта. Обычно вирусы в письмах электронной почты маскируются под безобидные вложения: картинки, документы, музыку, ссылки на сайты. В некоторых письмах могут содержаться действительно только ссылки, то есть в самих письмах может и не быть вредоносного кода, но если открыть такую ссылку, то можно попасть на специально созданный веб-сайт, содержащий вирусный код. Многие почтовые вирусы, попав на компьютер пользователя, затем используют адресную книгу из установленных почтовых клиентов типа Outlook для рассылки самого себя дальше.

    · Системы обмена мгновенными сообщениями. Здесь также распространена рассылка ссылок на якобы фото, музыку либо программы, в действительности являющиеся вирусами, по ICQ и через другие программы мгновенного обмена сообщениями.

    · Веб-страницы. Возможно также заражение через страницы Интернета ввиду наличия на страницах всемирной паутины различного «активного» содержимого: скриптов, ActiveX-компонент. В этом случае используются уязвимости программного обеспечения, установленного на компьютере пользователя, либо уязвимости в ПО владельца сайта (что опаснее, так как заражению подвергаются добропорядочные сайты с большим потоком посетителей), а ничего не подозревающие пользователи, зайдя на такой сайт, рискуют заразить свой компьютер.

    · Интернет и локальные сети (черви). Черви -- вид вирусов, которые проникают на компьютер-жертву без участия пользователя. Черви используют так называемые «дыры» (уязвимости) в программном обеспечении операционных систем, чтобы проникнуть на компьютер. Уязвимости -- это ошибки и недоработки в программном обеспечении, которые позволяют удаленно загрузить и выполнить машинный код, в результате чего вирус-червь попадает в операционную систему и, как правило, начинает действия по заражению других компьютеров через локальную сеть или Интернет. Злоумышленники используют заражённые компьютеры пользователей для рассылки спама или для DDoS-атак.