# Загальні API, що використовуються в шкідливому ПЗ
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Підтримати HackTricks
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
{% endhint %}
## Загальні
### Мережа
| Сирі сокети | 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**: Цей тип важко досягти. Це передбачає модифікацію коду самих функцій. Можливо, шляхом вставлення стрибка на початку цього.
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Підтримати HackTricks
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
{% endhint %}