12 KiB
Загальні API, які використовуються в шкідливому програмному забезпеченні
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!
Інші способи підтримки HackTricks:
- Якщо ви хочете побачити вашу компанію рекламовану в HackTricks або завантажити HackTricks у форматі PDF, перевірте ПЛАНИ ПІДПИСКИ!
- Отримайте офіційний PEASS & HackTricks мерч
- Відкрийте для себе Сім'ю PEASS, нашу колекцію ексклюзивних NFT
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами на Twitter 🐦 @carlospolopm.
- Поділіться своїми хакерськими трюками, надсилайте PR до HackTricks та HackTricks Cloud репозиторіїв GitHub.
Група з безпеки Try Hard
{% embed url="https://discord.gg/tryhardsecurity" %}
Загальне
Мережа
Raw Sockets | WinAPI 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 у іншому процесі
- Знайдіть процес для впровадження шкідливої DLL: CreateToolhelp32Snapshot, Process32First, Process32Next
- Відкрийте процес: GetModuleHandle, GetProcAddress, OpenProcess
- Запишіть шлях до DLL у процес: VirtualAllocEx, WriteProcessMemory
- Створіть потік у процесі, який завантажить шкідливу DLL: CreateRemoteThread, LoadLibrary
Інші функції для використання: NTCreateThreadEx, RtlCreateUserThread
Відображене впровадження DLL
Завантажте шкідливу DLL без виклику звичайних викликів API Windows.
DLL відображається у процесі, він вирішує адреси імпорту, виправляє перенесення та викликає функцію DllMain.
Перехоплення потоку
Знайдіть потік з процесу та зробіть його завантаженням шкідливої DLL
- Знайдіть цільовий потік: CreateToolhelp32Snapshot, Thread32First, Thread32Next
- Відкрийте потік: OpenThread
- Призупиніть потік: SuspendThread
- Запишіть шлях до шкідливої DLL у процесі-жертві: VirtualAllocEx, WriteProcessMemory
- Відновіть потік, завантажуючи бібліотеку: ResumeThread
Впровадження PE
Впровадження Portable Execution: Виконуваний файл буде записаний у пам'ять процесу-жертви і виконаний звідти.
Порожній процес
Шкідливе програмне забезпечення розмістить законний код з пам'яті процесу та завантажить шкідливий бінарний файл
- Створіть новий процес: CreateProcess
- Розмістіть пам'ять: ZwUnmapViewOfSection, NtUnmapViewOfSection
- Запишіть шкідливий бінарний файл у пам'ять процесу: VirtualAllocEc, WriteProcessMemory
- Встановіть точку входу та виконайте: 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
{% embed url="https://discord.gg/tryhardsecurity" %}
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!
Інші способи підтримки HackTricks:
- Якщо ви хочете побачити вашу компанію рекламовану в HackTricks або завантажити HackTricks у форматі PDF, перевірте ПЛАНИ ПІДПИСКИ!
- Отримайте офіційний PEASS & HackTricks мерч
- Відкрийте для себе Сім'ю PEASS, нашу колекцію ексклюзивних NFT
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами на Twitter 🐦 @carlospolopm.
- Поділіться своїми хакерськими трюками, надсилайте PR до HackTricks і HackTricks Cloud репозиторіїв на GitHub.