Common API used in Malware
Last updated
Last updated
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Сирі сокети | 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() |
Назва функції | Інструкції асемблера |
---|---|
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: CreateToolhelp32Snapshot, Process32First, Process32Next
Відкрити процес: GetModuleHandle, GetProcAddress, OpenProcess
Записати шлях до DLL всередині процесу: VirtualAllocEx, WriteProcessMemory
Створити потік у процесі, який завантажить шкідливу DLL: CreateRemoteThread, LoadLibrary
Інші функції для використання: NTCreateThreadEx, RtlCreateUserThread
Завантажити шкідливу DLL без виклику звичайних API Windows. DLL відображається всередині процесу, вона вирішить адреси імпорту, виправить переміщення та викличе функцію DllMain.
Знайти потік з процесу та змусити його завантажити шкідливу DLL
Знайти цільовий потік: CreateToolhelp32Snapshot, Thread32First, Thread32Next
Відкрити потік: OpenThread
Призупинити потік: SuspendThread
Записати шлях до шкідливої DLL всередині процесу жертви: VirtualAllocEx, WriteProcessMemory
Відновити потік, що завантажує бібліотеку: ResumeThread
Ін'єкція Portable Execution: Виконуваний файл буде записаний у пам'яті процесу жертви та буде виконаний звідти.
Шкідливе ПЗ видалить легітимний код з пам'яті процесу та завантажить шкідливий бінарний файл
Створити новий процес: CreateProcess
Зняти відображення пам'яті: ZwUnmapViewOfSection, NtUnmapViewOfSection
Записати шкідливий бінарний файл у пам'ять процесу: VirtualAllocEc, WriteProcessMemory
Встановити точку входу та виконати: 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: Цей тип важко досягти. Це передбачає модифікацію коду самих функцій. Можливо, шляхом вставлення стрибка на початку цього.
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)