Windows下24种进程注入方法模板

admin 2024年8月21日08:06:10评论46 views字数 3276阅读10分55秒阅读模式

part1

点击上方蓝字关注我们

往期推荐

利用Windows引导程序安全加载DLL

开源跨平台机密信息存储管理系统

开源跨平台高颜值十六进制编辑器

一款开源持续更新的后渗透免杀框架

EDR联动数据包封锁技术

一款舒适感极强的开源全流量监控工具

开源下一代Web应用程序防火墙(WAF)

强大的开源堡垒机系统

开源XDR威胁检测响应平台

开源恶意流量检测系统

将二进制空间安全设为"星标⭐️"

第一时间收到文章更新

声明: 二进制空间安全公众号文章中的技术只做研究之用,禁止用来从事非法用途,如有使用文章中的技术从事非法活动,一切后果由使用者自负,与本公众号无关。

1.摘要

Windows下24种进程注入方法模板

这里收集了Windows平台下24种进程注入相关的Windows API的调用方法, 包括:文件操作、进程管理、内存管理、线程管理、动态链接库(DLL)管理、同步、进程间通信、Unicode字符串操作、错误处理、Winsock网络操作和注册表等函数的方法汇聚。

下面列举一些常用的进程注入函数使用案例和模版, 其中还包含一些未公开的API调用方法。完整的API调用链官方文档链接见文末的URL, 不仅给出了API函数的官方链接, 还有未公开文档化的函数调用方法。

Windows下24种进程注入方法模板

2.DLL注入

Windows下24种进程注入方法模板

实现DLL注入的常用API调用链如下:

  • OpenProcess

HANDLE OpenProcess(
  DWORD dwDesiredAccess,
  BOOL bInheritHandle,
  DWORD dwProcessId
)
;
  • VirtualAllocEx

LPVOID VirtualAllocEx(
  HANDLE hProcess,
  LPVOID lpAddress,
  SIZE_T dwSize,
  DWORD flAllocationType,
  DWORD flProtect
)
;
  • WriteProcessMemory

BOOL WriteProcessMemory(
  HANDLE hProcess,
  LPVOID lpBaseAddress,
  LPCVOID lpBuffer,
  SIZE_T nSize,
  SIZE_T *lpNumberOfBytesWritten
)
;
  • CreateRemoteThread

HANDLE CreateRemoteThread(
  HANDLE hProcess,
  LPSECURITY_ATTRIBUTES lpThreadAttributes,
  SIZE_T dwStackSize,
  LPTHREAD_START_ROUTINE lpStartAddress,
  LPVOID lpParameter,
  DWORD dwCreationFlags,
  LPDWORD lpThreadId
)
;
  • GetProcAddress

FARPROC GetProcAddress(
  HMODULE hModule,
  LPCSTR lpProcName
)
;
  • LoadLibrary

HMODULE LoadLibraryA(
  LPCSTR lpLibFileName
)
;
  • NtCreateThread(未文档化)

NTSTATUS NTAPI NtCreateThread(
  OUT PHANDLE ThreadHandle,
  IN ACCESS_MASK DesiredAccess,
  IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
  IN HANDLE ProcessHandle,
  OUT PCLIENT_ID ClientId,
  IN PCONTEXT ThreadContext,
  IN PINITIAL_TEB InitialTeb,
  IN BOOLEAN CreateSuspended
)
;
  • RtlCreateUserThread(未文档化)

NTSTATUS NTAPI RtlCreateUserThread(
  IN HANDLE ProcessHandle,
  IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
  IN BOOLEAN CreateSuspended,
  IN ULONG StackZeroBits,
  IN OUT PULONG StackReserved,
  IN OUT PULONG StackCommit,
  IN PVOID StartAddress,
  IN PVOID StartParameter OPTIONAL,
  OUT PHANDLE ThreadHandle,
  OUT PCLIENT_ID ClientId
)
;

API模板使用方法:

  • 使用 OpenProcess 打开目标进程。

  • 使用 VirtualAllocEx 在目标进程中分配内存。

  • 使用 WriteProcessMemory将DLL路径写入分配的内存中。

  • 使用 GetProcAddress 获取 LoadLibraryA 的地址。

  • 使用 CreateRemoteThread 在目标进程中创建一个远程线程,指向 LoadLibraryA,并将 LoadLibraryA 的地址作为 lpStartAddress 参数传递。

  • 可选)使用 NtCreateThread 或 RtlCreateUserThread 作为替代的线程创建方法。

检测和防御方法:

  • 监控可疑的进程访问和内存分配模式。

  • 使用应用程序白名单来防止未经授权的 DLL 加载。

  • 实施进程完整性检查。

  • 使用 Microsoft 的 Process Monitor 等工具检测 DLL 注入尝试。

3.PE注入

Windows下24种进程注入方法模板

该技术涉及在远程进程或相同进程中编写并执行恶意代码。

  • OpenThread

HANDLE OpenThread(
  DWORD dwDesiredAccess,
  BOOL bInheritHandle,
  DWORD dwThreadId
)
;
  • SuspendThread

DWORD SuspendThread(
  HANDLE hThread
)
;
  • VirtualAllocEx(见上)

  • WriteProcessMemory(见上)

  • SetThreadContext

BOOL SetThreadContext(
  HANDLE hThread,
  const CONTEXT *lpContext
)
;
  • ResumeThread

DWORD ResumeThread(
  HANDLE hThread
)
;
  • NtResumeThread(未文档化)

NTSTATUS NTAPI NtResumeThread(
  IN HANDLE ThreadHandle,
  OUT PULONG PreviousSuspendCount OPTIONAL
)
;

API模板使用方法:

  • 使用 OpenThread 打开目标线程。

  • 使用 SuspendThread 挂起该线程。

  • 使用 VirtualAllocEx 在目标进程中分配内存。

  • 使用 WriteProcessMemory 将恶意代码写入分配的内存中。

  • 使用 SetThreadContext 修改线程上下文,使其指向注入的代码。

  • 使用 ResumeThread 或 NtResumeThread 恢复线程。

检测和防御方法:

  • 监控异常的线程挂起和恢复模式。

  • 实施内存完整性检查。

  • 使用终端检测与响应 (EDR) 解决方案来检测可疑的内存修改。

  • 采用运行时进程内存扫描技术。

收录的完全版文档请参考:

https://github.com/7etsuo/windows-api-function-cheatsheets?tab=readme-ov-file#10-extra-windows-memory-injection

往期推荐

Linux找回(破解)root账户密码的四种方法

湖北武汉某科技公司恶意软件调查分析

一款可绕过防火墙/DPI的隧道工具

八种绕过WAF防火墙的Payload混淆技术

从网络蠕虫身上提取了一堆好用的安全工具

最受黑客和安全专家青睐的10款搜索引擎

一种可绕过VPN加密直接获取明文流量的新型攻击技术

暗网排名Top10的搜索引擎

一款跨平台比VNC更丝滑的远程桌面管理工具

Windows下24种进程注入方法模板

点个在看你最好看

Windows下24种进程注入方法模板

原文始发于微信公众号(二进制空间安全):Windows下24种进程注入方法模板

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月21日08:06:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows下24种进程注入方法模板http://cn-sec.com/archives/3081731.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息