随笔分类 - Windows黑客编程技术详解
摘要:一、原理 当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中。 由于输入表中只包含DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索DLL文件。搜索DLL文件的顺序如下所示: 程
阅读全文
摘要:一、进程伪装 对于木马病毒来说,最简单的进程伪装方式就是修改进程名称。例如,将本地文件名称修改为svchost.exe、services.exe等系统进程,从而不被用户和杀软发现。接下来,将要介绍的进程伪装可以修改任意指定进程的信息,即该进程信息在系统中显示的时另一个进程的信息。这样,指定进程与伪装
阅读全文
摘要:一、UAC 触发UAC时,系统会创建一个consent.exe进程,该进程通过白名单和用户选择来判断是否创建管理员权限进程。请求进程将要请求的进程cmdline和进程路径通过LPC接口传递给appinfo和RAiLuanchAdminProcess函数。该函数首先验证路径是否在白名单中,并将结果传递
阅读全文
摘要:一、参考文章 https://docs.microsoft.com/zh-cn/windows/win32/secauthz/authorization-portal https://blog.csdn.net/u011801161/article/details/45567289?utm_medi
阅读全文
摘要:一、API 1、OpenProcessToken函数 打开与进程关联的访问令牌 https://docs.microsoft.com/zh-cn/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocesstoken 2、L
阅读全文
摘要:一、内存直接加载运行 把DLL或者exe等PE文件从内存中直接加载到病毒木马的内存中去执行,不需要通过LoadLibrary等线程的API函数去操作,以此躲过杀毒软件的拦截检测。 假如程序需要动态调用DLL文件,内存加载运行技术可以把这些DLL作为资源插入到自己的程序中。此时直接在内存中加载运行即可
阅读全文
摘要:一、突破SESSION 0隔离创建用户进程 在Windows XP、Windows Server 2003,以及更老版本的Windows操作系统中,服务和应用程序使用相同的会话(SESSION)来运行,而这个会话是由第一个登录到控制台的用户来启动的,该会话就称为SESSION 0。将服务和用户应用程
阅读全文
摘要:一、创建进程API 用户层上,微软提供了WinExec、ShellExecute和CreateProcess等函数来实现进程创建。 二、API 1、WinExec函数 运行指定的应用程序。 https://docs.microsoft.com/zh-cn/windows/win32/api/winb
阅读全文
摘要:一、APC注入 什么是APC? https://blog.csdn.net/qq_38474570/article/details/104326170 https://bbs.pediy.com/thread-217298.htm#msg_header_h1_2 每一个线程都有自己的APC队列,使用
阅读全文
摘要:一、突破SESSION 0隔离的远线程注入 由于SESSION 0隔离机制,导致传统远线程注入系统服务进程失败。经过前人的不断逆向和探索,发现直接调用ZwCreateThreadEx函数可以进行远线程注入,还可突破SESSION 0隔离,成功注入。 二、实现原理 与传统的CreateRemoteTh
阅读全文
摘要:一、远线程注入 远线程注入是指一个进程在另一个进程中创建线程的技术。 二、API OpenProcess函数 https://docs.microsoft.com/zh-cn/windows/win32/api/processthreadsapi/nf-processthreadsapi-openp
阅读全文
摘要:一、全局钩子注入 windows中的大部分应用程序都是基于消息机制的,根据不同的消息完成不同的功能。 钩子机制就是由windows操作系统提供的可以用来截获和监视系统中这些消息的。 钩子又可以分为局部钩子和全局钩子。其中局部钩子是针对某个线程的,全局钩子是作用于整个系统的基于消息的应用。全局钩子需要
阅读全文
摘要:一、运行单一实例 通过创建系统命名互斥对象的方式来实现 1、实现原理 通过CreateMutex函数创建一个命名的互斥对象,如果对象创建成功,而且通过调用GetLastError函数获取的返回码为ERROR_ALREADY_EXISTS,则表示该命名互斥对象存在,即程序重复运行。否则,认为程序首次运
阅读全文