2024-07-19 16:25:04 +00:00
# Загальні API, що використовуються в шкідливому ПЗ
2022-04-28 16:01:33 +00:00
2024-07-19 16:25:04 +00:00
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > \
Вивчайте та практикуйте GCP Hacking: < img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks Training GCP Red Team Expert (GRTE)**< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
2024-07-19 16:25:04 +00:00
< details >
2022-04-28 16:01:33 +00:00
2024-07-19 16:25:04 +00:00
< summary > Підтримати HackTricks< / summary >
2022-04-28 16:01:33 +00:00
2024-07-19 16:25:04 +00:00
* Перевірте [**плани підписки** ](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.
2022-04-28 16:01:33 +00:00
< / details >
2024-07-19 16:25:04 +00:00
{% endhint %}
2022-04-28 16:01:33 +00:00
2024-07-19 16:25:04 +00:00
## Загальні
2022-05-01 16:32:23 +00:00
2024-03-29 18:49:46 +00:00
### Мережа
2020-12-03 18:00:02 +00:00
2024-07-19 16:25:04 +00:00
| Сирі сокети | WinAPI сокети |
2021-10-18 11:21:18 +00:00
| ------------- | -------------- |
| socket() | WSAStratup() |
| bind() | bind() |
| listen() | listen() |
| accept() | accept() |
| connect() | connect() |
| read()/recv() | recv() |
| write() | send() |
| shutdown() | WSACleanup() |
2020-12-03 18:00:02 +00:00
2024-03-29 18:49:46 +00:00
### Постійність
2020-12-03 18:00:02 +00:00
2024-03-29 18:49:46 +00:00
| Реєстр | Файл | Служба |
2024-07-19 16:25:04 +00:00
| ---------------| ------------- | ---------------------------- |
2021-10-18 11:21:18 +00:00
| RegCreateKeyEx() | GetTempPath() | OpenSCManager |
| RegOpenKeyEx() | CopyFile() | CreateService() |
| RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
| RegDeleteKeyEx() | WriteFile() | |
| RegGetValue() | ReadFile() | |
2020-12-03 18:00:02 +00:00
2024-03-29 18:49:46 +00:00
### Шифрування
2020-12-03 18:00:02 +00:00
2024-03-29 18:49:46 +00:00
| Назва |
2021-10-18 11:21:18 +00:00
| --------------------- |
| WinCrypt |
| CryptAcquireContext() |
| CryptGenKey() |
| CryptDeriveKey() |
| CryptDecrypt() |
| CryptReleaseContext() |
2020-12-03 18:00:02 +00:00
2024-07-19 16:25:04 +00:00
### Анти-аналіз/VM
2020-12-03 18:00:02 +00:00
2024-07-19 16:25:04 +00:00
| Назва функції | Інструкції асемблера |
2021-10-18 11:21:18 +00:00
| --------------------------------------------------------- | --------------------- |
| IsDebuggerPresent() | CPUID() |
2024-07-19 16:25:04 +00:00
| GetSystemInfo() | IN() |
2021-10-18 11:21:18 +00:00
| GlobalMemoryStatusEx() | |
| GetVersion() | |
2024-09-04 13:38:57 +00:00
| CreateToolhelp32Snapshot \[Перевірте, чи працює процес] | |
| CreateFileW/A \[Перевірте, чи існує файл] | |
2020-12-03 18:00:02 +00:00
2024-07-19 16:25:04 +00:00
### Непомітність
2020-12-03 18:00:02 +00:00
2024-03-29 18:49:46 +00:00
| Назва | |
2021-10-18 11:21:18 +00:00
| ------------------------ | -------------------------------------------------------------------------- |
2024-07-19 16:25:04 +00:00
| VirtualAlloc | Виділення пам'яті (пакери) |
| VirtualProtect | Зміна дозволів пам'яті (пакер надає дозвіл на виконання секції) |
| ReadProcessMemory | Ін'єкція в зовнішні процеси |
| WriteProcessMemoryA/W | Ін'єкція в зовнішні процеси |
2021-10-18 11:21:18 +00:00
| NtWriteVirtualMemory | |
2024-07-19 16:25:04 +00:00
| CreateRemoteThread | Ін'єкція DLL/процесу... |
2021-10-18 11:21:18 +00:00
| NtUnmapViewOfSection | |
| QueueUserAPC | |
| CreateProcessInternalA/W | |
2020-12-03 18:00:02 +00:00
2024-03-29 18:49:46 +00:00
### Виконання
2020-12-03 18:00:02 +00:00
2024-03-29 18:49:46 +00:00
| Назва функції |
2021-10-18 11:21:18 +00:00
| ---------------- |
2020-12-09 00:31:50 +00:00
| CreateProcessA/W |
2021-10-18 11:21:18 +00:00
| ShellExecute |
| WinExec |
| ResumeThread |
| NtResumeThread |
2020-12-03 18:00:02 +00:00
2024-03-29 18:49:46 +00:00
### Різне
2020-12-03 18:00:02 +00:00
2024-03-29 18:49:46 +00:00
* GetAsyncKeyState() -- Логування клавіш
* SetWindowsHookEx -- Логування клавіш
2024-07-19 16:25:04 +00:00
* GetForeGroundWindow -- Отримати назву активного вікна (а б о вебсайту з браузера)
2024-03-29 18:49:46 +00:00
* LoadLibrary() -- Імпорт бібліотеки
* GetProcAddress() -- Імпорт бібліотеки
* CreateToolhelp32Snapshot() -- Список запущених процесів
2024-09-04 13:38:57 +00:00
* GetDC() -- Скриншот
* BitBlt() -- Скриншот
2024-03-29 18:49:46 +00:00
* InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Доступ до Інтернету
* FindResource(), LoadResource(), LockResource() -- Доступ до ресурсів виконуваного файлу
2020-12-03 18:00:02 +00:00
2024-07-19 16:25:04 +00:00
## Техніки шкідливого ПЗ
2021-09-07 00:15:14 +00:00
2024-07-19 16:25:04 +00:00
### Ін'єкція DLL
2021-09-07 00:15:14 +00:00
2024-07-19 16:25:04 +00:00
Виконати довільну DLL всередині іншого процесу
2021-09-07 00:15:14 +00:00
2024-07-19 16:25:04 +00:00
1. Знайти процес для ін'єкції шкідливої DLL: CreateToolhelp32Snapshot, Process32First, Process32Next
2. Відкрити процес: GetModuleHandle, GetProcAddress, OpenProcess
3. Записати шлях до DLL всередині процесу: VirtualAllocEx, WriteProcessMemory
4. Створити потік у процесі, який завантажить шкідливу DLL: CreateRemoteThread, LoadLibrary
2021-09-07 00:15:14 +00:00
2024-03-29 18:49:46 +00:00
Інші функції для використання: NTCreateThreadEx, RtlCreateUserThread
2021-09-07 00:15:14 +00:00
2024-07-19 16:25:04 +00:00
### Рефлексивна ін'єкція DLL
2021-09-07 00:15:14 +00:00
2024-07-19 16:25:04 +00:00
Завантажити шкідливу DLL без виклику звичайних API Windows.\
DLL відображається всередині процесу, вона вирішить адреси імпорту, виправить переміщення та викличе функцію DllMain.
2021-09-07 00:15:14 +00:00
2024-09-04 13:38:57 +00:00
### Захоплення потоку
2021-09-07 00:15:14 +00:00
2024-07-19 16:25:04 +00:00
Знайти потік з процесу та змусити його завантажити шкідливу DLL
2021-09-07 00:15:14 +00:00
2024-07-19 16:25:04 +00:00
1. Знайти цільовий потік: CreateToolhelp32Snapshot, Thread32First, Thread32Next
2. Відкрити потік: OpenThread
3. Призупинити потік: SuspendThread
4. Записати шлях до шкідливої DLL всередині процесу жертви: VirtualAllocEx, WriteProcessMemory
5. Відновити потік, що завантажує бібліотеку: ResumeThread
2021-09-07 00:15:14 +00:00
2024-07-19 16:25:04 +00:00
### Ін'єкція PE
2021-09-07 00:15:14 +00:00
2024-09-04 13:38:57 +00:00
Ін'єкція Portable Execution: Виконуваний файл буде записаний у пам'яті процесу жертви та буде виконаний звідти.
2022-04-28 16:01:33 +00:00
2024-07-19 16:25:04 +00:00
### Порожнє процесу
2024-03-14 23:01:13 +00:00
2024-07-19 16:25:04 +00:00
Шкідливе ПЗ видалить легітимний код з пам'яті процесу та завантажить шкідливий бінарний файл
2024-03-14 23:01:13 +00:00
2024-07-19 16:25:04 +00:00
1. Створити новий процес: CreateProcess
2. Зняти відображення пам'яті: ZwUnmapViewOfSection, NtUnmapViewOfSection
3. Записати шкідливий бінарний файл у пам'ять процесу: VirtualAllocEc, WriteProcessMemory
4. Встановити точку входу та виконати: SetThreadContext, ResumeThread
2022-04-28 16:01:33 +00:00
2024-07-19 16:25:04 +00:00
## Хукінг
2022-04-28 16:01:33 +00:00
2024-09-04 13:38:57 +00:00
* **SSDT** (**System Service Descriptor Table**) вказує на функції ядра (ntoskrnl.exe) а б о драйвера GUI (win32k.sys), щоб користувацькі процеси могли викликати ці функції.
2024-07-19 16:25:04 +00:00
* Руткіт може змінити ці вказівники на адреси, які він контролює.
2024-09-04 13:38:57 +00:00
* **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:< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > \
Вивчайте та практикуйте GCP Hacking: < img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks Training GCP Red Team Expert (GRTE)**< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
< details >
< summary > Підтримати HackTricks< / summary >
* Перевірте [**плани підписки** ](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.
< / details >
{% endhint %}