Common API used in Malware

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Група з безпеки Try Hard


Загальне

Мережа

Raw SocketsWinAPI Sockets

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()

Анти-аналіз/ВМ

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

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), щоб користувацькі процеси могли викликати ці функції.

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

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

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

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

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

Група з безпеки Try Hard

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated