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

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. Это веб-инструмент, который вычисляет хеш файла, который вы загрузили и ищет его в базе данных известных вирусов. Сюрприз! Естественно ничего не нашлось.



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

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

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

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

    Начнем с того, что шпионские приложения, или исполняемые апплеты, обычно называемые 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, не более. Однако и со стороны самого пользователя должны отсутствовать провоцирующие действия в виде посещения сомнительных сайтов, установки небезопасного программного обеспечения, игнорирование предупреждений антивируса, открытие вложений электронной почты из неизвестных источников и т. д.

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

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

    А теперь о том, что же такое вредоносная программа или же по-другому вирус?

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

    На сегодняшний день вредоносные программы можно отнести к нескольким типам по их воздействию на компьютер.

    • Классические вирусы.
    • Троянские программы.
    • Шпионы.
    • Руткиты.
    • Adware.

    Рассмотрим каждый тип вредоносных программ подробнее.

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

    Троянская программа – это серьезный тип вирусов. Троянские программы пишутся злоумышленниками под определенную цель, например, кража информации с компьютеров, или «увод» паролей и так далее.

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

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

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

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

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

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

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

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

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

    • Программы работают неправильно или вовсе перестают работать.
    • Компьютер начал тормозить, работать медленно.
    • Некоторые файлы портятся, отказываются открываться.

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

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

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

    • Касперский
    • Avast
    • Dr.Web
    • NOD32

    Думаю есть среди чего выбирать.

    Удачи и отличной Вам защиты от вирусов.

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

    В настоящее время не существует единой системы классификации и именования вирусов (хотя попытка создать стандарт была предпринята на встрече 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-атак.

    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. Это веб-инструмент, который вычисляет хеш файла, который вы загрузили и ищет его в базе данных известных вирусов. Сюрприз! Естественно ничего не нашлось.



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

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