[小记]注入服务进程/跨session注入

(测试环境:win10,1909) 

 最近测试注入遇到一个问题:OpenProcess 失败,报错码:5,没有权限。

问题排查:

    1,是否是管理员权限启动程序?

          是

    2,注入的目标进程有什么特殊?

        目标进程是svchost.exe,是服务进程,在session0;我的程序在session1。

         是因为在不同session吗?

    3,上网搜索相关内容并继续试验

         弄巧成拙:通过ProcessHacker把资源管理器进程重启后,发现又可以注入服务进程了。

     所有和session没有什么关系,那是为什么?对比前后资源管理器进程的差别可以发现,如下图:

   

 (都是系统管理员权限启动)左边是重启后,右边是重启前。可以发现关键差别是SeDebugPrivilege 属性被“点开”。进程的SeDebugPrivilege被“点开"后,可以注入svchost.exe。

所有目前没有和session有什么关系,privileges matters!

  成功注入后,从内存中创建的线程,如下图:

 

//更新 2023/02/15

https://learn.microsoft.com/zh-cn/windows/win32/api/processthreadsapi/nf-processthreadsapi-createremotethreadex

微软的文档解释了,为什么有跨session注入的问题。如下:

   “在Windows 8之前,终端服务通过设计隔离每个终端会话。 因此,如果目标进程位于与调用进程不同的会话中, CreateRemoteThread 将失败。”---------微软文档 

所以在win8之前会有跨session注入的问题,在win10及以后则没有相关问题。

 在win7 x64上测试发现:OpenProcess,VirtualAlloc,WriteProcessMemory都可以成功执行,

CreateRemoteThread 执行失败,报错

The storage control blocks were destroyed.

ERROR_NOT_ENOUGH_MEMORY

8 (0x8) 。

在win7,正确的跨session 注入的方式,参考:https://article.itxueyuan.com/KA7k81

通过更底层的api,

#ifdef _WIN64
typedef DWORD(WINAPI *typedef_ZwCreateThreadEx)(
	PHANDLE ThreadHandle,
	ACCESS_MASK DesiredAccess,
	LPVOID ObjectAttributes,
	HANDLE ProcessHandle,
	LPTHREAD_START_ROUTINE lpStartAddress,
	LPVOID lpParameter,
	ULONG CreateThreadFlags,
	SIZE_T ZeroBits,
	SIZE_T StackSize,
	SIZE_T MaximumStackSize,
	LPVOID pUnkown);
#else
typedef DWORD(WINAPI *typedef_ZwCreateThreadEx)(
	PHANDLE ThreadHandle,
	ACCESS_MASK DesiredAccess,
	LPVOID ObjectAttributes,
	HANDLE ProcessHandle,
	LPTHREAD_START_ROUTINE lpStartAddress,
	LPVOID lpParameter,
	BOOL CreateSuspended,
	DWORD dwStackSize,
	DWORD dw1,
	DWORD dw2,
	LPVOID pUnkown);
#endif

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值