Common API used in Malware

Підтримати HackTricks

Загальні

Мережа

Сирі сокетиWinAPI сокети

socket()

WSAStratup()

bind()

bind()

listen()

listen()

accept()

accept()

connect()

connect()

read()/recv()

recv()

write()

send()

shutdown()

WSACleanup()

Постійність

РеєстрФайлСлужба

RegCreateKeyEx()

GetTempPath()

OpenSCManager

RegOpenKeyEx()

CopyFile()

CreateService()

RegSetValueEx()

CreateFile()

StartServiceCtrlDispatcher()

RegDeleteKeyEx()

WriteFile()

RegGetValue()

ReadFile()

Шифрування

Назва

WinCrypt

CryptAcquireContext()

CryptGenKey()

CryptDeriveKey()

CryptDecrypt()

CryptReleaseContext()

Анти-аналіз/VM

Назва функціїІнструкції асемблера

IsDebuggerPresent()

CPUID()

GetSystemInfo()

IN()

GlobalMemoryStatusEx()

GetVersion()

CreateToolhelp32Snapshot [Перевірте, чи працює процес]

CreateFileW/A [Перевірте, чи існує файл]

Непомітність

Назва

VirtualAlloc

Виділення пам'яті (пакери)

VirtualProtect

Зміна дозволів пам'яті (пакер надає дозвіл на виконання секції)

ReadProcessMemory

Ін'єкція в зовнішні процеси

WriteProcessMemoryA/W

Ін'єкція в зовнішні процеси

NtWriteVirtualMemory

CreateRemoteThread

Ін'єкція DLL/процесу...

NtUnmapViewOfSection

QueueUserAPC

CreateProcessInternalA/W

Виконання

Назва функції

CreateProcessA/W

ShellExecute

WinExec

ResumeThread

NtResumeThread

Різне

  • GetAsyncKeyState() -- Логування клавіш

  • SetWindowsHookEx -- Логування клавіш

  • GetForeGroundWindow -- Отримати назву активного вікна (або вебсайту з браузера)

  • LoadLibrary() -- Імпорт бібліотеки

  • GetProcAddress() -- Імпорт бібліотеки

  • CreateToolhelp32Snapshot() -- Список запущених процесів

  • GetDC() -- Скриншот

  • BitBlt() -- Скриншот

  • InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Доступ до Інтернету

  • FindResource(), LoadResource(), LockResource() -- Доступ до ресурсів виконуваного файлу

Техніки шкідливого ПЗ

Ін'єкція DLL

Виконати довільну DLL всередині іншого процесу

  1. Знайти процес для ін'єкції шкідливої DLL: CreateToolhelp32Snapshot, Process32First, Process32Next

  2. Відкрити процес: GetModuleHandle, GetProcAddress, OpenProcess

  3. Записати шлях до DLL всередині процесу: VirtualAllocEx, WriteProcessMemory

  4. Створити потік у процесі, який завантажить шкідливу DLL: CreateRemoteThread, LoadLibrary

Інші функції для використання: NTCreateThreadEx, RtlCreateUserThread

Рефлексивна ін'єкція DLL

Завантажити шкідливу DLL без виклику звичайних API Windows. DLL відображається всередині процесу, вона вирішить адреси імпорту, виправить переміщення та викличе функцію DllMain.

Захоплення потоку

Знайти потік з процесу та змусити його завантажити шкідливу DLL

  1. Знайти цільовий потік: CreateToolhelp32Snapshot, Thread32First, Thread32Next

  2. Відкрити потік: OpenThread

  3. Призупинити потік: SuspendThread

  4. Записати шлях до шкідливої DLL всередині процесу жертви: VirtualAllocEx, WriteProcessMemory

  5. Відновити потік, що завантажує бібліотеку: ResumeThread

Ін'єкція PE

Ін'єкція Portable Execution: Виконуваний файл буде записаний у пам'яті процесу жертви та буде виконаний звідти.

Порожнє процесу

Шкідливе ПЗ видалить легітимний код з пам'яті процесу та завантажить шкідливий бінарний файл

  1. Створити новий процес: CreateProcess

  2. Зняти відображення пам'яті: ZwUnmapViewOfSection, NtUnmapViewOfSection

  3. Записати шкідливий бінарний файл у пам'ять процесу: VirtualAllocEc, WriteProcessMemory

  4. Встановити точку входу та виконати: SetThreadContext, ResumeThread

Хукінг

  • SSDT (System Service Descriptor Table) вказує на функції ядра (ntoskrnl.exe) або драйвера GUI (win32k.sys), щоб користувацькі процеси могли викликати ці функції.

  • Руткіт може змінити ці вказівники на адреси, які він контролює.

  • IRP (I/O Request Packets) передають частини даних з одного компонента в інший. Практично все в ядрі використовує IRP, і кожен об'єкт пристрою має свою власну таблицю функцій, яку можна підключити: DKOM (Direct Kernel Object Manipulation).

  • IAT (Import Address Table) корисна для вирішення залежностей. Можливо підключити цю таблицю, щоб перехопити код, який буде викликано.

  • EAT (Export Address Table) Хуки. Ці хуки можуть бути зроблені з userland. Мета - підключити експортовані функції DLL.

  • Inline Hooks: Цей тип важко досягти. Це передбачає модифікацію коду самих функцій. Можливо, шляхом вставлення стрибка на початку цього.

Підтримати HackTricks

Last updated