# Загальні 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.**