# Загальні API, які використовуються в шкідливому програмному забезпеченні
Вивчайте хакінг AWS від нуля до героя зhtARTE (HackTricks AWS Red Team Expert)!
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/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 у іншому процесі
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**
{% embed url="https://discord.gg/tryhardsecurity" %}
Вивчайте хакінг AWS від нуля до героя зhtARTE (HackTricks AWS Red Team Expert)!
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **і** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв на GitHub.**