Зачем изучать разработку вредоносных программ ?


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 084
Репутация
8 206
virus.jpg


Посмотрев этот курс:Малварь как искусство - Курс по 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. Анализ. На этом этапе необходимо понять какие средства безопасности блокируют ваше ПО, на сколько это критично и т.д.

На этом закончу!)

Пишите комментарии, следующие статьи будут более предметными, разберём инструменты разработки, потом будет небольшая статья по архитектуре винды и вперёд.

Хочу рассмотреть не только винду, а и другие системы.

Но это как время будет...)
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 084
Репутация
8 206
Сразу извиняюсь за орфографию, из-за недостатка времени статьи практически не вычитываю.

Если увидите ошибки, или вдруг я написал бред.)

То корректируйте.)))
 

Spectrum735

Просветленный
Просветленный
Регистрация
21.02.2019
Сообщения
264
Репутация
146
Но минусы Python и C#, что требуется интерпретатор
Python точно требуется, насчет C# не уверен, что у него есть интерпретатор в принципе, ибо это компилируемый язык. Вообще, на тему выбора языка много споров. К примеру, тот же C# зависим от NET платформы, но как показывает практика, это ещё ничего не значит. На нём написан популярный Agent Tesla)
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 084
Репутация
8 206
Да все-верно, для C# не нужен интерпритатор, но без платформы NET, бинарный образ работать не будет.

В целом для современной винды 10-11, это вообще не критично, т.к. самая последняя платформа уже будет из коробки.

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

Можно кстати использовать несколько языков, например какой-то функционал на C#, а что- то на си, вызывать например динамическую библиотеку из С#, как вариант...
 

HMCoba

Активный пользователь
Активный
Регистрация
22.04.2023
Сообщения
157
Репутация
110
Последнее редактирование:

Spectrum735

Просветленный
Просветленный
Регистрация
21.02.2019
Сообщения
264
Репутация
146
незнаю насколько сложно там реализовать какие-то вещи
Там вполне можно подключать библиотеки user32, kernel и тд. Помню где-то был пример на C# для обхода защитника методом удаления токенов с его процесса. Но такой фокус уже не прокатывает. У C# на стороже, как и PowerShell, стоит AMSI, который может помешать.
 

HMCoba

Активный пользователь
Активный
Регистрация
22.04.2023
Сообщения
157
Репутация
110
Там вполне можно подключать библиотеки user32, kernel и тд. Помню где-то был пример на C# для обхода защитника методом удаления токенов с его процесса. Но такой фокус уже не прокатывает. У C# на стороже, как и PowerShell, стоит AMSI, который может помешать.
Ну да, механизм AMSI - (rule-based) будет сильно припятствовать ... Я слышал что используя модификацию кода (обфускацию и криптование,)
можно как то обойти эту защиту, и добится неплохих результатов.
 
Последнее редактирование:

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 084
Репутация
8 206
Ну да, механизм AMSI - (rule-based) будет сильно припятствовать ... Яслышал что используя модификацию кода (обфускацию и криптование,)
можно обойти эту защиту, и добится неплохих результатов.
Да вот например есть статья:Малварь как искусство - Обход AMSI

Там не C#, но думаю подход примерно будет такой-же.
 

Nextopt

Пользователь
Форумчанин
Регистрация
15.10.2023
Сообщения
7
Репутация
2
Да все-верно, для C# не нужен интерпритатор, но без платформы NET, бинарный образ работать не будет.
нашел такую штуку . если я правильно понял, она делает программу независимой от дотнета, а так же программу больше нельзя декомпилировать в читаемый c#, только в ассемблер. но нюанс в том что это работает только для uwp приложений и не факт что оно будет полностью портативной, так что для вирусов лучше c++ и чистый winapi
 
Верх Низ