hacktricks/reversing-and-exploiting/common-api-used-in-malware.md
2024-04-06 19:41:21 +00:00

177 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Загальні API, які використовуються в шкідливому програмному забезпеченні
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Інші способи підтримки 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**.
</details>
**Група з безпеки Try Hard**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% 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**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Інші способи підтримки 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.**
</details>