Как создать exe вирус

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

COM-файлы (небольшие программы, написанные в основном на языке Assembler) медленно, но верно устаревают. Им на смену приходят пугающие своими размерами EXE-«монстры». Появились и вирусы, умеющие заражать EXE-файлы.

Структура и процесс загрузки EXE-программы

В отличие от COM-программ, EXE-программы могут состоять из нескольких сегментов (кодов, данных, стека). Они могут занимать больше 64Кбайт.

EXE-файл имеет заголовок, который используется при его загрузке. Заголовок состоит из форматированной части, содержащей сигнатуру и данные, необходимые для загрузки EXE-файла, и таблицы для настройки адресов (Relocation Table). Таблица состоит из значений в формате сегмент: смещение. К смещениям в загрузочном модуле, на которые указывают значения в таблице, после загрузки программы в память должен быть прибавлен сегментный адрес, с которого загружена программа.

При запуске EXE-программы системным загрузчиком (вызовом функции DOS 4Bh) выполняются следующие действия:

1. Определяется сегментный адрес свободного участка памяти, размер которого достаточен для размещения программы.

2. Создается и заполняется блок памяти для переменных среды.

3. Создается блок памяти для PSP и программы (сегмент:0000h — PSP; сегмент+0010h:0000h — программа). В поля PSP заносятся соответствующие значения.

4. Адрес DTA устанавливается равным PSP:0080h.

5. В рабочую область загрузчика считывается форматированная часть заголовка EXE-файла.

6. Вычисляется длина загрузочного модуля по формуле: Size=((PageCnt*512)–(HdrSize*16))–PartPag.

7. Определяется смещение загрузочного модуля в файле, равное HdrSize*16.

8. Вычисляется сегментный адрес (START_SEG) для загрузки — обычно это PSP+10h.

9. Считывается в память загрузочный модуль (начиная с адреса START_SEG:0000).

10. Для каждого входа таблицы настройки:

a) читаются слова I_OFF и I_SEG;

b) вычисляется RELO_SEG=START_SEG+I_SEG;

c) читается слово по адресу RELO_SEG:I_OFF;

d) к прочитанному слову прибавляется START_SEG;

e) результат запоминается по тому же адресу (RELO_SEG:I_OFF).

11. Распределяется память для программы в соответствии с MaxMem и MinMem.

12. Инициализируются регистры, выполняется программа:

b) АХ=результат проверки правильности идентификаторов драйверов, указанных в командной строке;

c) SS=START_SEG+ReloSS, SP=ExeSP;

d) CS=START_SEG+ReloCS, IP=ExeIP.

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

Вирусы, замещающие программный код (Overwrite)

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

Эти вирусы получили свое название из-за алгоритма размножения: к каждому инфицированному файлу создается файл-спутник. Рассмотрим более подробно два типа вирусов этой группы:

Вирусы первого типа размножается следующим образом. Для каждого инфицируемого EXE-файла в том же каталоге создается файл с вирусным кодом, имеющий такое же имя, что и EXE-файл, но с расширением COM. Вирус активируется, если при запуске программы в командной строке указано только имя исполняемого файла. Дело в том, что, если не указано расширение файла, DOS сначала ищет в текущем каталоге файл с заданным именем и расширением COM. Если COM-файл с таким именем не найден, ведется поиск одноименного EXE-файла. Если не найден и EXE-файл, DOS попробует обнаружить BAT (пакетный) файл. В случае отсутствия в текущем каталоге исполняемого файла с указанным именем поиск ведется во всех каталогах, доступных по переменной PATH. Другими словами, когда пользователь хочет запустить программу и набирает в командной строке только ее имя (в основном так все и делают), первым управление получает вирус, код которого находится в COM-файле. Он создает COM-файл еще к одному или нескольким EXE-файлам (распространяется), а затем исполняет EXE-файл с указанным в командной строке именем. Пользователь же думает, что работает только запущенная EXE-программа. Вирус-спутник обезвредить довольно просто — достаточно удалить COM-файл.

Вирусы второго типа действуют более тонко. Имя инфицируемого EXE-файла остается прежним, а расширение заменяется каким-либо другим, отличным от исполняемого (COM, EXE и BAT). Например, файл может получить расширение DAT (файл данных) или OVL (программный оверлей). Затем на место EXE-файла копируется вирусный код. При запуске такой инфицированной программы управление получает вирусный код, находящийся в EXE-файле. Инфицировав еще один или несколько EXE-файлов таким же образом, вирус возвращает оригинальному файлу исполняемое расширение (но не EXE, а COM, поскольку EXE-файл с таким именем занят вирусом), после чего исполняет его. Когда работа инфицированной программы закончена, ее запускаемому файлу возвращается расширение неисполняемого. Лечение файлов, зараженных вирусом этого типа, может быть затруднено, если вирус-спутник шифрует часть или все тело инфицируемого файла, а перед исполнением его расшифровывает.

Вирусы, внедряющиеся в программу (Parasitic)

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

Способы заражения EXE-файлов

Самый распространенный способ заражения EXE-файлов такой: в конец файла дописывается тело вируса, а заголовок корректируется (с сохранением оригинального) так, чтобы при запуске инфицированного файла управление получал вирус. Похоже на заражение COM-файлов, но вместо задания в коде перехода в начало вируса корректируется собственно адрес точки запуска программы. После окончания работы вирус берет из сохраненного заголовка оригинальный адрес запуска программы, прибавляет к его сегментной компоненте значение регистра DS или ES (полученное при старте вируса) и передает управление на полученный адрес.

Следующий способ — внедрение вируса в начало файла со сдвигом кода программы. Механизм заражения такой: тело инфицируемой программы считывается в память, на ее место записывается вирусный код, а после него — код инфицируемой программы. Таким образом, код программы как бы «сдвигается» в файле на длину кода вируса. Отсюда и название способа — «способ сдвига». При запуске инфицированного файла вирус заражает еще один или несколько файлов. После этого он считывает в память код программы, записывает его в специально созданный на диске временный файл с расширением исполняемого файла (COM или EXE), и затем исполняет этот файл. Когда программа закончила работу, временный файл удаляется. Если при создании вируса не применялось дополнительных приемов защиты, то вылечить инфицированный файл очень просто — достаточно удалить код вируса в начале файла, и программа снова будет работоспособной. Недостаток этого метода в том, что приходится считывать в память весь код инфицируемой программы (а ведь бывают экземпляры размером больше 1Мбайт).

:/>  Лучшие программы для восстановления BAD-блоков жесткого диска

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

Как уже говорилось, этот вид вирусов уже давно мертв. Изредка появляются еще такие вирусы, созданные на языке Assembler, но это, скорее, соревнование в написании самого маленького overwrite-вируса. На данный момент самый маленький из известных overwrite-вирусов написан ReminderW (Death Virii Crew group) и занимает 22 байта.

Алгоритм работы overwrite-вируса следующий:

1. Открыть файл, из которого вирус получил управление.

2. Считать в буфер код вируса.

3. Закрыть файл.

4. Искать по маске подходящий для заражения файл.

6. Открыть найденный файл.

7. Проверить, не заражен ли найденный файл этим вирусом.

9. Записать в начало файла код вируса.

10. Закрыть файл (по желанию можно заразить от одного до всех файлов в каталоге или на диске).

11. Выдать на экран какое-либо сообщение об ошибке, например «Abnormal program termination» или «Not enough memory», — пусть пользователь не слишком удивляется тому, что программа не запустилась.

12. Завершить программу.

Ниже приведен листинг программы, заражающей файлы таким способом.

подключается к каждой программе при компиляции)}

Она дописывается в заражаемый файл сразу после кода вируса}

обойтись, так будет понятнее}

из которой стартовали}

программа уже заражена, и False, если еще нет}

function VirusPresent: Boolean;

там находится метка вируса}

If VirIdentifier=VirLabel Then

плюс 100 байт, то выходим из процедуры}

If Sr.Size < VirLen+100 Then Exit;

If Not VirusPresent Then

так как поиск ведется среди файлов с атрибутом Archive, а этот

атрибут устанавливается на файл после сохранения в любом случае}

на длину вируса от начала файла}

с атрибутами Archive}

FindFirst(’*.EXE’, Archive, Sr);

While DosError=0 Do

If Sr.Name=’’ Then Exit;

WriteLn(’Abnormal program termination.’);

и Author, условие же поставлено таким образом,

что эти строки никогда не будут выведены на экран}

If 2=3 Then

Вирусы-спутники сейчас широко распространены — соотношение companion и parasitic вирусов примерно один к двум.

Инфицирование методом создания COM-файла спутника

Смысл этого метода — не трогая «чужого кота» (EXE-программу), создать «своего» — COM-файл с именем EXE-программы. Алгоритм работы такого вируса предельно прост, так как отпадает необходимость лишних действий (например, сохранения в теле вируса длины откомпилированного EXE-файла с вирусным кодом, считывания в буфер тела вируса, запуска файла, из которого вирус получил управление). Незачем даже хранить метку для определения инфицирования файла.

Заражение производится с помощью командного процессора:

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

2. Найти EXE-файл-жертву.

3. Проверить, не присутствует ли в каталоге с найденным EXE-файлом COM-файл с таким же именем, как у файла-жертвы.

4. Если такой COM-файл присутствует, файл уже заражен, переходим к пункту 6.

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

6. Процедурой Exec загрузить и выполнить файл с именем стартового, но с расширением EXE — то есть выполнить инфицированную программу.

7. Вернуть управление в DOS.

Приведенный ниже листинг показывает заражение файлов этим методом.

Author=’Dirty Nazi/SGWW. 4 PVT only!’;

но с расширением COM}

программа уже инфицирована этим вирусом}

If IOResult=0 Then

копируем вирусный код в COM−файл}

Exec(GetEnv(’COMSPEC’),’/C COPY /B ’+ParamStr(0)+’

For I:=1 To ParamCount Do

FindFirst(TargetFile, AnyFile, DirInfo);

If DosError=0 Then

не внося в программу изменений}

WriteLn(#13#10, VirName, ’ by ’,Author);

Инфицирование методом переименования EXE-файла

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

Конец ознакомительного фрагмента.

Здравствуй, дорогой читатель/читательница. Если ты читаешь эту статью, значит тебе захотелось немножко разыграть своего друга или знакомого. Здесь ты прочитаешь, как создать свой безобидный вирус с расширением .bat.

Предупреждаю: все описанные здесь примеры должны использоваться строго в законных целях. Автор этой статьи и администрация сайта за причиненный Вами ущерб ответственности не несёт! D:<
Короче говоря, сначала рассмотрим, что же такое в сущности, этот таинственный bat-файл, или в компьютерном сленге, батник.
Википедия гласит:

Пакетный файл (англ. batch file) — текстовый файл в MS-DOS, OS/2 или Windows, содержащий последовательность команд, предназначенных для исполнения командным интерпретатором. После запуска пакетного файла программа-интерпретатор (как правило, COMMAND.COM или cmd.exe) читает его строка за строкой и последовательно исполняет команды. Пакетный файл — аналог скриптовых файлов командной строки (shell script) в Unix-подобных операционных системах.

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

  • Открываем Блокнот
  • Дальше пишем или копируем туда наш код
  • По умолчанию, все файлы сохраняются как .txt. Нас же это не устраивает.
:/>  Почему на Android постоянно включен Wi-Fi адаптер

Выбираем вместо “текстовые документы” “все файлы”, пишем имя файла.bat и сохраняем.
В итоге должно получиться вот так

А затем вот так

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

start %0 %0

При активации данного “недовируса” появляется бесчисленное множество командных строк и компьютер гарантированно виснет. Убить процесс можно лишь через перезагрузку компьютера. На моём ноуте с объемом оперативной памяти 16 Гб глюков не наблюдалось лишь первые 3 секунды. Потом он намертво завис.
Называется такой тип вируса “форк-бомба”. Опять-таки, читайте в Википедии 🙂

Данный вирус сбивает время на компьютере. Дёшево и сердито. И максимально безобидно.

del ** /q

Удаляет все ярлыки с рабочего стола. Уже не так безобидно, но еще не катастрофа.

Удаляет все курсоры. Пользователь дезориентирован.

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

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

(Команду для самоуничтожения вируса нужно писать после самого вируса). Например

Ну, собственно, и всё. С батниками можно сделать еще очень много чего интересного, но новичкам, я думаю, хватит и этого. И еще раз предупреждаю: не надо разыгрывать людей со слабой психикой, А ТО КАК ТРЕСНУТ!
До скорого, мои хакеры)

HLLO- High Level Language Overwrite. Такой вирус перезаписывает программу своим телом. Т.е.
программа уничтожается, а при попытке запуска программы пользователем- запускается вирус и “заражает” дальше.

HLLC- High Level Language Companion. Большинство таких вирусов от-носятся к седой древности (8-10 лет назад), когда у пользователей стоял ДОС и они были очень ленивы. Эти вирусы ищут файл, и не изменяя его, создают свою копию, но с расширением .COM. Если ленивый пользователь пишет в командной строке только имя файла, то первым ДОС ищет COM файл, запуская вирус, который сначала делает свое дело, а потом запускает ЕХЕ файл. Есть и другая модификация
HLLC – более современная (7 лет ;)): Вирус переименовывает файл, сохраняя имя, но меняя расширение- с ЕХЕ на, допустим, OBJ или MAP. Своим телом вирус замещает оригинальный файл. Т.е. пользователь запускает вирус, который, проведя акт размножения, запускает нужную программу- все довольны.

HLLP- High Level Language Parasitic. Самые продвинутые. Приписывают свое тело к файлу спереди (Первым стартует вирус, затем он восстанавливает программу и запускает ее) или сзади
– тогда в заголовок проги мы пишем jmp near на тело вируса, все-таки запускаясь первыми.

Саму же программу мы можем оставить в неизменном виде, тогда это будет выглядеть так:

Что такое MZ, я думаю, ты догадался 🙂 Это же инициалы твоего любимого Марка Збиковски, которые он скромно определил в сигнатуру exe файла 🙂 А вписал я их сюда только для того, чтобы ты понЯл
– заражение происходит по принципу copy /b virus.exe program.exe, и никаких особых приколов тут нет. Сейчас нет. Но мы их с тобой нафигачим
– будь здоров :). Ну, например: можно первые 512 или больше байт оригинальной программы зашифровать любым известным тебе алгоритмом- XOR/XOR, NOT/NOT, ADD/SUB, тогда это будет выглядеть как:

В этом случае структура зараженного файла не будет так понятна.
Я не зря тут (в классификации, в смысле) так распинаюсь
– parasitic-алгоритм используют 90% современных вирусов, независимо от их способа распространения. Ладно, идем дальше:

Сетевой вирус. Может быть любым из перечисленных. Отличается тем, что его распространение не
ограничивается одним компом, эта зараза каким-либо способом лезет через инет или локальную сеть на другие машины. Я думаю, ты регулярно выносишь из мыльника 3-4 таких друга
– вот тебе пример сетевого вируса. А уж попав на чужой комп, он заражает файлы произвольным образом, или не заражает ВООБЩЕ.

Макро вирусы, скриптовые вирусы, IRC вирусы. В одну группу я определил их потому, что это вирусы, написанные на языках, встроенных в приложения (MSOffice :)), скриптах (тут рулит твой любимый VBS) и IRC скриптах. Строго говоря, как только в каком-то приложении появляется достаточно мощная (и/или дырявая) скриптовая компонента, на ней тут же начинают писать вирусы 😉 Кстати, макро вирусы очень просты и легко определяются эвристикой.

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

program EVIL_VIRUS;
USES WINDOWS,SYSUTILS;
begin
end;

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

VaR VirBuf, ProgBuf, MyBuf : array of char;
SR : TSearchRec;
My,pr : File;
ProgSize,result : integer;
PN,st : String;
si : Tstartupinfo;
p :Tprocessinformation;
infected : boolean;
CONST VirLen: longint= 1000000;

Первой строчкой идут динамические массивы, в которые мы будем писать соответственно тело вируса и программы; В переменную SR запишутся
характеристики найденного файла-кандидата на заражение (надеюсь, ты знаком с процедурами FindFirst и FindNext, потому что дальше будет хуже ;)), My и
Pr – это файл, откуда мы стартовали и левый файл с оригинальным кодом программы (я про него уже писал выше). result- результат работы FindFirst, он должен быть равен нулю,
ProgSize – размер кода программы. Остальное ясно из дальнейшего, кроме
infected – это признак зараженности найденного файла и
VirLen- это длина кода вируса, ее ты узнаешь только после свадьбы. Тьфу, я хотел сказать, после компиляции. Т.е. компилируешь, меняешь значение константы в исходнике и перекомпилируешь.
Кодим далее 🙂 Здесь ты видишь код, ответственный за восстановление и запуск зараженной программы:

Тут все, в принципе просто и понятно, кроме того, зачем я перенес весь зараженный файл в каталог к виндам и что делают строчки с 3 по 5 включительно.
А сделал я это потому, что читать из запущенного файла некомфортно и возможно только с использованием CreateFile и ReadFile WinAPI. Про кодинг на WinAPI я расскажу позднее, сейчас я разберу только основы
– на Delphi.

:/>  Как включить клавиатуру на ноутбуке если она отключилась виндовс 7

Строчки эти – преобразование string в pchar народным методом, поскольку мы сейчас боремся за каждый байт кода. Еще момент: я поступил некорректно, задав путь c:windows так жестко. Пользуйся лучше процедурой GetWindowsDirectory, узнай точно 🙂 Все остальное понятно без всяких комментариев (если нет
завязывай прогуливать информатику ;)), идем дальше:

//Если вир запущен “чистым”, т.е. не из зараженной про-граммы, то завершаемся
end else halt;

Что же твой зоркий глаз видит тут? Правильно, процедура FindFirst ищет нам заданную жертву (любой exe файл из текущего каталога), передает его характеристики в переменную SR. Затем необходимо его проверить на зараженность. Это делается оригинально: при заражении файлу присваивается опр. дата и время. И любой файл с такими характеристиками считается зараженным. Все остальное опять же нецензурно просто, поэтому я плавно перехожу к заключению 🙂

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

Рискну дать тебе описание всех процедур, использованных в статье. Это поможет тебе искать их в хелпе и подготовиться к кодингу серьезных вирусов с использованием
WinAPI.

AssignFile – в WinAPI нет аналога – сопоставляет файл
с переменной типа File или TextFile

Reset – аналоги _lopen и CreateFile – открывает
существующий файл и устанавливает позицию
чтения в начало

ReWrite – _lcreate и CreateFile – создает новый файл и
уст. позицию чтения в начало. Если скормить
ReWrite существующий файл, его содержимое
будет обнулено

SeekFile – _llseek и SetFilePointer – перемещает позицию
чтения/записи в открытом файле

CloseFile – _lclose и CloseHandle – закрывает открытый
файл

Erase – DeleteFile – удаление файла

FindFirst – FindFirstFile – поиск файла по критериям

FindNext – FindNextFile – поиск следующего файла

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

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

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

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

Теория

Итак, что вооб­ще такое тро­ян? Вирус — это прог­рамма, глав­ная задача которой — самоко­пиро­вание. Червь активно рас­простра­няет­ся по сети (типич­ный при­мер — «Петя» и WannaCry), а тро­ян — скры­тая вре­донос­ная прог­рамма, которая мас­киру­ется под «хороший» софт.

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

Warning

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

Определяем IP

Нач­нем писать код. Сра­зу импорти­руем биб­лиоте­ки:

Обе биб­лиоте­ки не пос­тавля­ются с Python, поэто­му, если они у тебя отсутс­тву­ют, их нуж­но уста­новить коман­дой pip.

Info

Ес­ли ты видишь ошиб­ку, что у тебя отсутс­тву­ет pip, сна­чала нуж­но уста­новить его с сай­та pypi.org. Любопыт­но, что рекомен­дуемый спо­соб уста­нов­ки pip — через pip, что, конеч­но, очень полез­но, ког­да его нет.

Код получе­ния внеш­него и внут­ренне­го адре­сов будет таким. Обра­ти вни­мание, что, если у жер­твы нес­коль­ко сетевых интерфей­сов (нап­ример, Wi-Fi и Ethernet одновре­мен­но), этот код может вес­ти себя неп­равиль­но.

Ес­ли с локаль­ным адре­сом все более‑менее прос­то — находим имя устрой­ства в сети и смот­рим IP по име­ни устрой­ства, — то вот с пуб­личным IP все нем­ного слож­нее.

Я выб­рал сайт api.ipify.org, так как на выходе нам выда­ется толь­ко одна стро­ка — наш внеш­ний IP. Из связ­ки пуб­личный + локаль­ный IP мы получим поч­ти точ­ный адрес устрой­ства.

Вы­вес­ти информа­цию еще про­ще:

Стро­ковые литера­лы не толь­ко хорошо смот­рятся в коде, но и помога­ют избе­гать оши­бок типа сло­жения строк и чисел (Python — это тебе на JavaScript!).

Бэкконнект по почте

Те­перь напишем скрипт, который будет при­сылать нам пись­мо.

Им­порт новых биб­лиотек (обе нуж­но пред­варитель­но пос­тавить через pip install):

Пи­шем базовую информа­цию о себе:

Даль­ше сфор­миру­ем пись­мо:

Пос­ледний штрих — нас­тро­ить под­клю­чение к поч­товому сер­вису. Я поль­зуюсь Яндекс.Поч­той, поэто­му нас­трой­ки выс­тавлял для нее.

В стро­ке server.ehlo(email) мы исполь­зуем коман­ду EHLO. Боль­шинс­тво сер­веров SMTP под­держи­вают ESMTP и EHLO. Если сер­вер, к которо­му ты пыта­ешь­ся под­клю­чить­ся, не под­держи­вает EHLO, мож­но исполь­зовать HELO.