на чем пишут трояны

Как создать простого трояна на Python

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

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

Теория

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

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

Определяем IP

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

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

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

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

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

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

Источник

Сервер – Клиент Изнутри. На примере и разработка программы!

Если Вам интересно посмотреть, как пишутся «Программы сервер – клиент» и как они работают на реальном примере, предлагаю прочитать пост до конца. Будет интересно!

Пример программы я решил писать на Delphi! Так как, это проще и хорошо подходит для маленького, но реального примера. Что касается грозного слова «Троян» которое я упомянул выше, то тут, получается действительно, самый настоящий троян, но с малым и безобидным функционалом.

Вы узнаете, по какому принципу пишутся «Трояны» и как они работают изнутри! Но, есть одно «НО» Трояны не пишут, так как – это будет описано ниже. Поскольку в нашем примере, «Серверная» часть программы будет много весить (Это не приемлемо для реального трояна), и мы не будет её скрывать в системе. В реальном, «Вредоносном ПО» дела обстоят немного по другому.

Серверную часть программы стараются разработать с малым размером, ну примерно «100 КБ» Плюс — минус сколько-то КБ. И скрывают её в системе, так, что искать её придется долго!…

Но все ровно, принцип разработки один! И данный пример идеально подойдёт для понимания, как работаю программы по принципу «Сервер — Клиент» Просто у нас не правильный тон разработки трояна, а оно нам надо? Правильно. НЕТ. Мы же хорошие ребята и хулиганить не собираемся!

Как работают программы по принципу «Сервер – Клиент»

Просто и в двух словах картина выглядит вот так: Вы на своём компьютере запускаете «Клиентскую» часть программы, как правило, она имеет «GUI» то есть интерфейс пользователя (Если клиент не консольный)

На компьютере, к которому вы желаете получить доступ, запускается «Серверная» часть программы, она же открывает определённый порт на чужом компьютере и не видна в системе.

Через этот порт происходит соединения, Вы в клиенте указываете порт и IPадрес компьютера, на котором запущен сервер, подключаетесь к серверу и можете спокойно выполнять какие-то действия на чужом ПК со своего компьютера! Ещё можно прочитать мой прошлый пост и узнать:

Надеюсь, что здесь объяснил, вроде как понятно и простым человеческим языком! Если что-то не ясно, дальше, на примере все станет ясно! Далее давайте определимся, какие действия буду выполняться на удалённом ПК вследствие работы нашего маленького трояна!

Какой функционал в данном примере программы Сервер – Клиент.

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

— Пользователь будет получать Ваше сообщение.

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

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

Ну, а у нас будет такой прикол! Человек, сидя за компьютером, неожиданно получит сообщение, например

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

Разработка программы по принципу «Сервер – Клиент»

Приступаем к самому интересному! И начнём мы с разработки самого «Сервера» после чего напишем под него клиент! Я не буду объяснять код программы, просто, буду приводить примеры, все же у меня не блог по программированию, да и цель поста показать поэтапно процесс разработки подобных программ по типу «Сервер – Клиент»

Читайте также:  на что имеет право пенсионер по старости

Разработка Сервера!

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

Откроем порт следующим кодом, который до боли прост:

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

А пока убедимся, что сервер работает и порт открыт, вспоминаем команду «netstat» и смотрим результат.

Как видим на компьютере, вследствие запуска нашей программы действительно был открыт порт с номером «666» Это говорит только ободном, программа работает, и пришла пора научить «Сервер» принимать сообщение.

Тут дела обстоят следующие образом! Если серверу придёт команда с названием «MESSAGE_TEXT» (Название может быть любое) то сработает процедура «ShowMessage» и покажет сообщение, которое пришло вмести с командой и хранится в строковой переменной «komm»

Соответственно текст сообщение будем набирать в «Клиенте» и он может быть любого содержание!

В прочем, на этом разработка «Серверной» части закончена. В итоге у нас получился файлик «Server.exe» и пока отложим его в сторону до того момента пока не напишем «Клиент»

Разработка Клиента!

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

Определимся со всеми элементами! Хотя и так понят но, как говорится, на всякий случай поясню.

IP: Поля для ввода IPкомпьютера, где запущен сервер.
Port: Указываем номер порта на котором висит сервер.
— Подключится: Кнопка для подключения к серверу.
— Текст сообщение: Поле для ввода сообщение, которое нужно отправить.
— Отправить сообщение…: Соответственно кнопка для отправки сообщение.
— Статус соединение: Тут мы узнаем, подключились или нет!

Дальше пробуем научить «Клиент» подключаться к серверу и проверим, как это работает. В данном варианте, код для кнопки «Подключится» выглядит так:

Источник

Крадущийся питон. Создаем простейший троян на Python

Содержание статьи

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

Теория

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

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

warning

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

Определяем IP

Сна­чала нам (то есть нашему тро­яну) нуж­но опре­делить­ся, где он ока­зал­ся. Важ­ная часть тво­ей информа­ции — IP-адрес, по которо­му с заражен­ной машиной мож­но будет соеди­нить­ся в даль­нейшем.

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

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

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

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

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

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

Источник

Небольшой обзор исходного кода трояна zeus

Введение


Как нам подсказывает англо-русский словарь, zeus переводится как Зевс, Громовержец, главный бог древне-греческого пантиона. Назвав свое творение zeus в далеком уже 2007 году, неизвестный автор трояна взял на себя определенные обязательства, обязывающие быть если не главным, то как минимум в числе первых, и надо признать, он выполнил, и даже перевыполнил эти обязательства.
Zeus-троян стал уже легендарным на просторах Интернета и даже за его пределами за последние несколько лет. Ни один из троянов не зацвел таким буйным цветом, не распространился так широко, как этот, а по широте охвата zeus ненамного отстает от печально знаменитого червя Kido/Conficker.

Изначально zeus позиционировался как бансковский троян, то есть программа, которая каким либо образом проникает на компьютер жертвы и передает своему хозяину конфиденциальную информацию — логины, пароли, номера кредитных карт, CVV2/CVC2 коды и так далее. Но со временем стали появляться и модификации для кражи корпоративных данных, заражения исполняемых файлов, рассылки спама и так далее.

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

Самый показательный пример такого рода – это задержание в начале октября 2010 года в США группы студентов из России, которые погорели скорее всего из-за своей неуемной жадности и тупости. Вот их имена: Илья Карасев, Кристина Извекова, Софья Дикова и иже с ними. Взято отсюда. Впрочем, вся школота на удивление дешево отделалась — каждому дали меньше года тюрьмы и мизерный денежный штраф, хотя в США за такие преступления можно сесть на 40 лет.

Читайте также:  наперстная молитва что это

Хотя надо отметить, что автор zeus принимал активное участие в работе существующих крупных ботнетов, видимо в рамках тех. поддержки пользователям, ибо он пишет в рекомендациях по использованию своего детища, что дедик, на котором должна крутится адмика, должен быть достаточно мощным, с конкретными указаниями конфигурации.
Недавно zeus засветился еще в одной атаке – кто то перед рождеством разослал поздравительные рождественские открытки якобы из Белого дома по правительcnвенным учреждениям США. При переходе по ссылке или открытии прикрепленного файла zeus тупо сканировал винчестер в поисках Word, Exel, PDF файлов и отсылал их на некий сервер в Белоруссии.

Вообще, очень много ниточек от zeus ведут в страны постсоветского пространства, что дает основания подозревать, что родом он из России или Украины, что в последствии и подтвердилось, ибо комментарии в исходниках и инструкции по работе были написаны на русском. Да и сам GUI Сервера zeus содержал всего два языка — английский и русский.

Возможности

-Язык и IDE программирования:
-Поддерживаемые ОС:
-Принцип действия:
-Процесс установки:
-Защита:
-Получение важных данных из программ пользователя:

Логинов из FTP-клиентов: FlashFXP, CuteFtp, Total Commander, WsFTP, FileZilla, FAR Manager, WinSCP, FTP Commander, CoreFTP, SmartFTP. «Кукисов» Adobe (Macromedia) Flash Player. «Кукисов» wininet.dll, Mozilla Firefox. Импорт сертификатов из хранилища сертификатов Windows. И слежение за их дальнейшим добавлением. Слежение за нажатием клавиш клавиатуры.

Сделаю несколько своих комментариев по поводу высказываний автора zeus: та версия, которая попала ко мне, была откомпилирована на компьютере автора с помощью MS Visual Studio 10.0, так что файл комментов несколько устарел. Толи автор не удосужился их обновить для того юзера, которому продал сорсы, толи еще что.

По поводу принципа действия – автор решил не заморачиватся написанием драйверов, поднятием привилегий и прочими boot-time фишками, которые очень популярны у вирусописателей в последнее время, и не случайно — эта олд-скульность весьма оправдана, так как бот работает предельно стабильно на всем семействе операционок Windows, функционален даже из под гостевого аккаунта, и имеет минимально возможную вероятность запалиться антивирусом. Тем более что в операционках семейства Windows после выхода XP SP2 для поддержки технологии “горячего патча” пролог каждой функции был сделан постоянной длинны в 5 байт, что избавло zeus от того, чтобы таскать с собой дизассемблер BeaEngine, и это несомненно пошло на пользу трояну, ибо автор zeus называет дизассемблер “довольно громоздким, хоть и универсальным”.

Узкое место то, что клиентская программа трояна прописывает себя в каждом пользовательском процессе, и этим ее можно детектировать. Например, техника определения, инфицирован ли данный процесс, используется самим ботом-клиентом для отрисовки окна при работе встроенного vnc сервера – проверяется, создан ли в процессе мутекс со специальным именем. Если создан – значит данный процесс инфицирован. Но имя скорее всего уникально для каждого экземпляра программы-клиента, так что так просто это в правила антивиря запихать не удастся. Вот еще интересные строчки “При установке, бот создает свою копию в домашней директории пользователя, В данный момент не производиться скрытие файлов бота через WinAPI” что дает нам отличный способ детектирования именно этого бота. И вообще – в корне домашнего каталога юзера не должно быть никаких левых подозрительных файлов! Особенно выполняемых, странно что антивирусы об этом не знают.
Вообще, схема распространения данной версии zeus довольно примитивна – пользователь переходит по ссылке, пришедшей в спамерском письме, или через инфицированный pdf документ, и запускает программу-инсталятор zeus, которая шифрует уникальным шифром вирус под каждого отдельного пользователя, после чего инсталлятор удаляется, а вирус сможет исполнятся только на этом данном компе под данным юзером. Никаких распространений через сканирование сети, через флешки, и прочих новомодных штучек. Все это безусловно ограничивает распространения трояна, зато делает его гораздо более устойчивым к антивирусам, что, судя по степени распространения zeus более чем оправдано.

По поводу “Получение важных данных из программ пользователя”- чистая правда, такая функциональность есть. Правда, автор забыл написать, что грабилка паролей CuteFTP в текущей версии закоментарена, то есть в билд она не попадает, судя по тому что не доделана, а расшифровка пароля для WsFTP вообще не реализована, что отражено в коментах сорсов, но это все мелочи 😉 Странно, что автор не потрудился на пароли аськи, скайпа, сохраненные пароли от соц. сетей и т.д., другие Трояны с радостью крадут все эти данные. Судя по всему, алгоритмы расшифровки многих паролей были получены методами реверсивного инжиниринга, то есть дизассемблированием. Кстати, среди браузеров автором не упомянут Google chrome, вдруг его данные троян не грабит, так что возможно лучше всего пользовать браузер от Google, хотя я этот вопрос не исследовал.

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

Читайте также:  направление сервис что это

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

Анализ


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

При первом взгляде на сорсы бросается в глаза их предельно четкая структурированность, что говорит о большом опыте автора в разработке ПО. Не заметно никаких следов какой либо системы контроля версий, и это лишний раз подтверждает предположение о том, что это не была утечка исходников от их создателя, а в сеть попал пакет сорсов, который был продан какому-то клиенту. Ведь врятли автору удалось работать 4 года и дожить до версии 2.0.8.9 без source-контроля.

Для начала хотелось бы отметить, что сам пакет zeus, попавший в мои руки, состоит из нескольких модулей:
common — общие для всех проектов файлы, в которых содержится реализация большинства абстракций, необходимых для работы, таких как менеджер памяти, работа со строками, файловой системой, процессами, потоками, объектами синхронизации и прочее. В общем, набор крайне полезных и нужных базовых сервисов.
client — непосредственно сам вирусный клиент или бот, который проникает и поселяется на компьютерах жертв. Самый большой по объему код находится тут, ибо трояну надо много чего уметь делать.
builder — построитель новых версий вирусного клиента на основе скомпиленного содержимого каталога “client”
bcserver — сервер для работы на дедике, к которому будут бак-коннектится боты.
server[php] – веб интерфейс для управления ботнетом.
bin – немногие 3rdparty, которые использует проект zeus. Все остальные сторонние компоненты были переписаны под zeus API, как то vnc, дизассамблер на движке BeaEngine. В этом каталоге лежат fasm, php, 7zip, upx.

Первое что бросилось в глаза — это билд система. Хотя zeus и собирается под Visual Studio 10, билд система написана на php. Это очень необычно и редко встречающееся решение, так как разработка системы билда на php не свойственно для Windows систем, и вообще не свойственно ни для каких систем. Это может говорить о том, что автор взял уже готовую подобную систему и модифицировал для своих целей. А где он мог ее взять? Только на своей предыдущей или нынешней работе, и скорее всего он участвовал в разработке данной системы.

Код написан почти полностью на С, только там где используются COM интерфейсы, неорхотно используется С++. Хотя автор регулярно пишет TODOшки, что какие то части надо переписать с использованием COM.

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

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

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

Эпилог


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

Да прибует с вами хабра-сила!

Источник

Строительный портал