暴力注入Explorer

        向一个运行中的进程注入自己的代码,最自然莫过于使用CreateRemoteThread,
如今远线程注入已经是泛滥成灾,同样的监测远线程注入、防止远线程注入的工具也
举不胜举,一个木马或后门启动时向Explorer或IE的注入操作就像在自己脸上写上
“我是贼”一样。
    用户态代码想要更隐蔽地藏身于别的进程,就应该在注入的环节隐蔽自己的行
为。下面就介绍一种非常简单不过比较暴力的方法,给出的示例为在Explorer里加
载自己的dll。
    首先提到的就是一个API:QueueUserAPC

    DWORD QueueUserAPC(
      PAPCFUNC pfnAPC,  // APC function
      HANDLE hThread,   // handle to thread
      ULONG_PTR dwData  // APC function parameter
    ;

    大家对这个API应该并不陌生,它直接转入了系统服务NtQueueApcThread从而利
用KeInsertQueueApc向给出的目标线程的APC队列插入一APC对象。倘若KiDeliverApc
顺利的去构造apc环境并执行我们的代码那一切就OK了,只可惜没有那么顺利的事,
ApcState中UserApcPending是否为TRUE有重要的影响,结果往往是你等到花儿都谢了
你的代码还是没得到执行。在核心态往往不成问题,自己动手赋值,可是用户态
程序可不好做,怎么办?其实最简单的,不好做就不做啰,让系统去干。
    实际上应用程序在请求“alertable”的等待时系统就会置UserApcPending为
TRUE(当KeDelayExecutionThread/KeWaitForMultipleObjects/KeWaitForSingleObject
使用TestForAlertPending时就有可能,此外还有KeTestAlertThread等,机会还是有的
),最简单的例子,目标线程调用SleepEx(***, TRUE)后我们插入APC代码就会乖乖执
行了。
    比较幸运的是Explorer进程中一般情况下总有合我们意的线程,于是最简单但并不
优美的办法就是枚举Explorer中所有线程,全数插入,示意如下:

    ......
    DWORD ret;
    char *DllName = "c:\\MyDll.dll";
    int len = strlen(DllName) + 1;
    PVOID param = VirtualAllocEx(hProcess, NULL, len,
                                 MEM_COMMIT | MEM_TOP_DOWN,
                                 PAGE_READWRITE);
    if (param != NULL)
    {
        if (WriteProcessMemory(hProcess, param,
                               (LPVOID)DllName, len, &ret))
        {
            for (DWORD p = 0; p < NumberOfThreads; p ++)
            {
                hThread = OpenThread(THREAD_ALL_ACCESS, 0, ThreadId[p]);
                if (hThread != 0)
                {
                    InjectDll(hProcess, hThread, (DWORD)param);
                    CloseHandle(hThread);
                }
            }
    }
    ......
    
    其中InjectDll:
    void InjectDll(HANDLE hProcess, HANDLE hThread, DWORD param)
    {
        QueueUserAPC(
            (PAPCFUNC)GetProcAddress(GetModuleHandle("kernel32.dll", "LoadLibraryA", 
            hThread, 
            (DWORD)param
            ;
    }
    
    LoadLibraryA被调用后即将你的DLL加载入目标进程Explorer,运行是在目标进程的某
个线程环境中,一般你的DLL可以这时创建自己的线程。
    这样,整个过程虽然有些暴力(原因很明显,比如原本UserApcPending为TRUE的线程
被弄成了FALSE等等),并且仅是一次性插入,缺陷是明显的,不过插入过程的确更为隐蔽。

    针对使用这种的“无耻”方法的程序,检/监测程序就需要增加一些判断,比如对
NtQueueApcThread的合理监测等等。

有时候,那些最古老的木马伪装的好反而不容易被杀。。。

时间: 2024-10-28 14:01:02

暴力注入Explorer的相关文章

Win32.Hack.ThiefTool闪盘窃密者

病毒名称(中文):闪盘窃密者 病毒别名: 威胁级别:★☆☆☆☆ 病毒类型:黑客程序 病毒长度:106496 影响系统:Win9x\WinMe\WinNT\Win2000\WinXP\Win2003 病毒行为: 该病毒是一个木马生成器测试版,根据用户选择生成注入不同进程(explorer.exe或winlogon.exe)的木马thief.exe,运行thief.exe,首先拷贝自身到%system%\inetsvr.exe,然后生成临时文件boot.inf,并安装服务,伪装成"WindowsIn

AV终结者采用重定向劫持技术

该病毒利用了IFEO重定向劫持技术,使大量的杀毒软件和安全相关工具无法运行:会破坏安全模式,使中毒用户无法在安全模式下查杀病毒:会下载大量病毒到用户计算机来盗取用户有价值的信息和某些帐号:能通过可移动存储介质传播. 1.生成文件 %programfiles%\Common Files\Microsoft Shared\MSInfo\{随机8位字母+数字名字}.datC:\Program Files\Common Files\Microsoft Shared\MSInfo\{随机8位字母+数字名字

聊一聊随机数安全那些事儿

0x00 简介 和朋友聊到一个比较有意思的现象,在最近两年的校招面试中,大部分同学连一点基础的密码学知识都没有, 即便是有一些渗透功底的同学. 所以这里想和大家聊一些简单的密码学基础知识,不涉及算法实现,更多的是和常见的漏洞场景联系起来,让问题更容易理解,有点抛砖引玉的意思. 本文主要聊一下随机数,随机数其实是非常广泛的,可以说也是密码技术的基础. 对随机数的使用不当很可能会导致一些比较严重的安全问题, 并且这些安全问题通常会比较隐蔽. 0x01 随机数 概述 随机数在计算机应用中使用的比较广泛

DocuSign网站用户资料泄露,病毒团伙利用邮件疯狂作恶

本文讲的是DocuSign网站用户资料泄露,病毒团伙利用邮件疯狂作恶, 一.综述 近期,火绒安全实验室发出警报,著名的美国数字文档签署平台 DocuSign的用户正在遭受病毒邮件的攻击,该平台在全球拥有2亿用户,其中包括很多中国企业用户.请DocuSign的用户提高警惕,在收到相关邮件时仔细查验真伪,不要轻易打开邮件正文中的word文档查看链接. 火绒安全团队根据截获的病毒邮件分析和溯源,发现知名的数字文档签署平台DocuSign遭到黑客入侵,导致用户资料被泄露.病毒团伙得到用户信息后,伪造了一

针对巴基斯坦的某APT活动事件分析

本文讲的是针对巴基斯坦的某APT活动事件分析, 事件背景 2017年6月,360威胁情报中心发现了一份可疑的利用漏洞执行恶意代码的Word文档,经过分析后,我们发现这有可能是一起针对巴基斯坦的政府官员的APT攻击事件,释放出来的载荷会收集受害者的键盘记录和重要软件密码.文档等.本文档对并对此次攻击事件的攻击链条进行梳理,并对使用的木马相关技术进行分析. 样本分析 Dropper Hash 4f4cc89905bea999642a40d0590bdfa3 文件类型 Word文档 文件大小 66Kb

4种恶意软件反查杀高级技术 反病毒软件和APT解决方案都在为此头疼

在8月末,安全加报道了 恶意软件每天至少30万个变种,这些恶意软件的作者通常使用4种恶意软件反查杀技术 ,对抗各种检测扫描,今天我们接续来说更高级的 混淆技术 以及可用于检测回避式 恶意软件 的新方法和技术. 对抗反汇编和调试工具(防护程序) 恶意软件作者对恶意软件研究员的工作了如指掌且了解他们采用哪些工具定位威胁.例如,研究员和程序员经常采用反汇编程序和调试工具检测代码行为.多种工具和技术均可检测反汇编程序和调试工具,如Windows内置功能.很多此类技术旨在对攻击者进行防御,因为攻击者可能会

木马下载器前仆后继,AOTU病毒群卷土重来(专杀4月15日升级到1.4版)_病毒查杀

以下是这两天极度猖獗的AUTO病毒最新变种的分析报告: 一.行为概述 该EXE是病毒下载器,它会: 1) 参考系统C盘卷序列号来算出服务名,EXE 和DLL 的文件名. 2) 在每一个驱动器下放置AUTO病毒autorun.inf 和自身副本auto.exe 并加系统和隐藏属性. 3) 在系统system32 下放置自身副本"随机名.exe "和释放出来的"随机名.dll" 并将它们伪装成具有隐藏属性的系统文件. 4) 修改系统键值,将系统隐藏文件选项删除,造成用户

威金蠕虫导致所有的exe图标都变色变模糊的解决方法_病毒查杀

电脑中毒之后,所有的exe图标都变色变模糊,经金山维金专杀工具杀毒之后,所的有exe图标都变成了问道的图标`双击后提示"无法找到运态链接库FTKernelAPI.dll于指定的路D:\Wool;C:\WINNT\system32;C:\WINNT\system;C:\WINNT\system32;C:\WINNT; C:\WINNT\system\Wbem;C:\Program Files\AEI Technologies\ATI Control Panel上" 解决方法:   不幸的

Trojan-Downloader.Win32.Agent.bbb 木马手动查杀

Trojan-Downloader.Win32这种病毒会注入explorer.exe进程,并且写进注册表.病毒根据电脑随机生成6位字母+2位数字的dll文件,dll文件位于system32文件夹下,另有一个同名的sys文件位于system32\drivers文件夹下.据说此木马采用Rootkit技术隐藏自身. 一般杀毒软件如卡巴斯基能提示发现病毒dll,但是不能删.最简单的方法是用一个叫unlocker的软件(http://ccollomb.free.fr/unlocker/unlocker1.