hacktricks/reversing/common-api-used-in-malware.md

176 lines
8.8 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.

<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),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
找到对您最重要的漏洞以便更快修复它们。Intruder追踪您的攻击面运行主动威胁扫描在您的整个技术栈中找到问题从API到Web应用程序和云系统。[**今天就免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
# 通用
## 网络
| 原始套接字 | 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() |
## 反分析/虚拟机
| 函数名称 | 汇编指令 |
| --------------------------------------------------------- | --------------------- |
| 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注入
不调用正常Windows API调用即可加载恶意DLL。\
DLL被映射到进程中它将解析导入地址修复重定位并调用DllMain函数。
## 线程劫持
找到一个进程的线程并使其加载恶意DLL
1. 找到目标线程CreateToolhelp32Snapshot, Thread32First, Thread32Next
2. 打开线程OpenThread
3. 暂停线程SuspendThread
4. 在受害进程中写入恶意DLL路径VirtualAllocEx, WriteProcessMemory
5. 恢复加载库的线程ResumeThread
## PE 注入
便携式执行注入:可执行文件将被写入受害进程的内存中,并从那里执行。
## 进程空洞化
恶意软件将合法代码从进程的内存中卸载并加载恶意二进制文件
1. 创建一个新进程CreateProcess
2. 卸载内存ZwUnmapViewOfSection, NtUnmapViewOfSection
3. 在进程内存中写入恶意二进制文件VirtualAllocEc, WriteProcessMemory
4. 设置入口点并执行SetThreadContext, ResumeThread
# 钩子
* **SSDT****系统服务描述符表**指向内核函数ntoskrnl.exe或GUI驱动程序win32k.sys以便用户进程可以调用这些函数。
* 根植程序可能会修改这些指针到它控制的地址
* **IRP****I/O请求包**在组件之间传输数据。几乎所有内核都使用IRPs每个设备对象都有自己的函数表可以被钩子DKOM直接内核对象操作
* **IAT****导入地址表**)有助于解决依赖关系。可以钩住这个表,以劫持将要被调用的代码。
* **EAT****导出地址表**)钩子。这些钩子可以从**用户空间**完成。目标是钩住DLL导出的函数。
* **内联钩子**:这种类型难以实现。这涉及修改函数本身的代码。可能是在这个的开始放置一个跳转。
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
找到对您最重要的漏洞以便更快修复它们。Intruder追踪您的攻击面运行主动威胁扫描在您的整个技术栈中找到问题从API到Web应用程序和云系统。[**今天就免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<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),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>