Посмотрев этот курс:Малварь как искусство - Курс по MalDev [PDF]
Который стоит кстати около 300 баксов, понял что 80% описанного там есть здесь на форуме.)
Да может что-то устарело и что-то тяжело найти тут, но в целом инфа видимо актуальная.
Вот я и решил позаимствовать от туда темы, где-то сделать перевод, но в целом решил создать раздел Введение в разработку вредоносных программ где будет размещаться обновленная информация по теме разработки малвари, темы возьму прям из модулей.)
И вероятно затрону и другие системы, кроме винды, это не будут просто переводы, а темы от меня...
Раздел будет предназначен как для новичков, так и для тех-кто хочет что-то вспомнить, как минимум будет легче искать и бесплатно.)
Также можно завести раздел в гите под такие темы.
Итак в этой-же теме введение:
Зачем изучать разработку вредоносных программ ?
Есть несколько причин, по которым кто-то хотел бы изучить разработку вредоносных программ.
С точки зрения тестирования на проникновение часто необходимо выполнять определенные вредоносные задачи в среде клиента.
У тестировщиков обычно есть три основных варианта выбора инструментов для атаки:
1. Инструменты с открытым исходным кодом — эти инструменты, как правило обнаруживаются любым средствами защиты и без каких-то доработок мало пригодны для атак.
2. Покупка инструментов. Команды с большими бюджетами часто предпочитают покупать инструменты, чтобы сэкономить драгоценное время во время заданий.
3. Разработка пользовательских инструментов. Поскольку эти инструменты создаются по индивидуальному заказу, они имеют больше шансов найти какие-то уязвимости в системе и проверить какие-то нестандартные части системы.
Именно здесь знания о разработке вредоносных программ становятся первостепенными для более успешной оценки безопасности.
Какой язык программирования следует использовать?
С технической точки зрения для создания вредоносного ПО можно использовать любой язык программирования, например Python, PowerShell, C#, C, C++ и Go.
Есть несколько причин, по которым одни языки программирования преобладают над другими, когда дело доходит до разработки вредоносных программ, и это
обычно сводится к следующим пунктам:
- Некоторые языки не имеют нужного функционала, например прямой доступ к ОЗУ по указателям и т.д.
- Другие языки не позволяют быстро выполнить нужную задачу, например тот-же язык Си не имеет функционала которым может похвастаться C# или Python, например есть задачи которые на том-же Python можно решить за пару строчек кода, а в Си это будет портянка на несколько десятков тысяч строк.
- Но минусы Python и C#, что требуется интерпретатор, который должен присутствовать на целевой машине, что уже осложняет атаку.
- Также при выборе языка нужно учитывать знание и опыт разработчика.
Языки программирования можно разделить на две разные группы: высокоуровневые и низкоуровневые.
Высокий уровень — как правило, более абстрагирован от операционной системы, менее эффективен при работе с памятью и часто для безопасности ограничивает некоторый функционал программисту.
Примером языка программирования высокого уровня является Python, С#.
Низкоуровневый — обеспечивает способ взаимодействия с операционной системой на более близком уровне, а также предоставляет разработчику больше свободы при
взаимодействуя с системой. Пример низкоуровневого языка программирования Си, Ассемблер.
Отмечу это разделение условное, но нужно понимать ещё, что есть языки которые требуют интерпретатор для запуска программы (Python, Java и т.д.) и которые не требуют, т.е. будет собран бинарный исполняемый образ, для запуска которого ничего не нужно (Такие как Си, С++, Rust и т.д.).
Разработка вредоносных программ для Windows
Сцена разработки вредоносных программ для Windows изменилась за последние несколько лет и теперь в значительной степени сосредоточена на обходе защиты.
С развитием технологии уже недостаточно создавать вредоносное ПО, которое выполняет подозрительные команды или выполняет «вредоносные» действия.
Целью этих статей научить вас создавать вредоносное ПО, которое можно использовать в реальных боевых действиях.
Жизненный цикл разработки вредоносного ПО
По сути, вредоносное ПО — это часть программного обеспечения, предназначенная для выполнения определенных действий. Успешная реализация программного обеспечения требует процесса
известного как жизненный цикл разработки программного обеспечения (SDLC).
Точно так же хорошо построенное и сложное вредоносное ПО потребует специализированной версии SDLC, называемый жизненным циклом разработки вредоносных программ (MDLC).
MDLC может состоять из 5 основных этапов:
1. Разработка. Начните разработку или усовершенствование функциональности вредоносного ПО.
2. Тестирование. Выполните тесты, чтобы выявить скрытые ошибки в уже разработанном коде.
3. Тестирование AV/EDR в автономном режиме. Запускайте разработанное вредоносное ПО с максимально возможным количеством продуктов безопасности. Важно, чтобы тестирование
проводилось в автономном режиме, чтобы убедиться, что образцы не отправляются поставщикам средств обеспечения безопасности.
При использовании Microsoft Defender это достигается за счет отключения автоматической отправки образцов и облачной защиты.
Хотя такое отключение не позволит в полной мере протестировать защиту.
4. Онлайн-тестирование AV/EDR. Запустите разработанное вредоносное ПО против продуктов безопасности, подключенных к Интернету. Облачные движки часто являются ключевыми
компонентов в AV/EDR, и поэтому тестирование вашего вредоносного ПО на эти компоненты имеет решающее значение для получения более точных результатов.
Будьте осторожны так как этот шаг может привести к отправке в образцов в облачный механизм решения безопасности.
5. Анализ. На этом этапе необходимо понять какие средства безопасности блокируют ваше ПО, на сколько это критично и т.д.
На этом закончу!)
Пишите комментарии, следующие статьи будут более предметными, разберём инструменты разработки, потом будет небольшая статья по архитектуре винды и вперёд.
Хочу рассмотреть не только винду, а и другие системы.
Но это как время будет...)