• 0
  • 0
分享

  关于Jektor

  Jektor是一款功能强大的Windows用户模式Shellcode执行测试工具,该工具可以帮助广大研究人员了解和测试恶意软件所使用的各种不同技术。

  该工具主要针对的是Shellcode注入技术,可以演示恶意软件在目标系统上执行Shellcode时所使用的技术方法,其中包括:

  · 动态解析API函数以避免IAT包含

  · 使用未记录的NT Windows API函数

  · 通过CreateThread执行本地Shellcode

  · 通过CreateRemoteThread执行远程Shellcode

  · 通过QueueUserAPC支持本地Shellcode注入

  · 通过EnumTimeFormatsEx支持本地Shellcode注入

  · 通过CreateFiber进行本地Shellcode注入

2-1.jpg

  反病毒检测

  在使用动态函数地址解析时,将一组NOP预挂起到Msfvenom异或加密Shellcode Payload后,可以绕过Windows Defender。

  IAT导入规避

  Jektor利用了动态函数地址解析,并使用了LoadLibrary和GetProcessAddress来增加了静态分析的难度。

  除此之外,很多恶意软件也不会直接调用类似VirtualAlloc这样的重要函数,这也会使得调试和通过断点转储Shellcode变得更加困难。

  工具下载

  广大研究人员可以使用下列命令将该项目源码克隆至本地:

  git clone https://github.com/FULLSHADE/Jektor.git

  通过CreateThread实现本地Shellcode执行

  在Windows上,当你想要在当前进程中创建一个新的线程,需要调用CreateThread函数,这是在一个进程中执行恶意代码或Shellcode时会使用的一个最基本的技术了。此时,我们只需要为Shellcode分配一个内存区域,然后将Shellcode移动到分配的内存区域中,并使用指向该区域地址的指针来调用CreateThread即可。调用CreateThread时,需传递lpStartAddress 参数,而该参数是一个指向由新创建线程所执行的应用程序定义函数的指针。

2-2.jpg

  通过EnumTimeFormatsEx实现本地Shellcode执行

  EnumTimeFormatsEx是一个Windows API函数,可以枚举提供的时间格式,能够用于执行Shellcode,因为第一个参数可以接收用户定义的指针:

  BOOL EnumTimeFormatsEx( 
   
    [in]           TIMEFMT_ENUMPROCEX lpTimeFmtEnumProcEx, 
   
    [in, optional] LPCWSTR            lpLocaleName, 
   
    [in]           DWORD              dwFlags, 
   
    [in]           LPARAM             lParam 
   
  );

  · 使用VirtualAlloc为Shellcode Payload分配本地内存。

  · 使用memcpy/RtlCopyMemory将Shellcode Payload移动到新分配的内存区域。

  · 将Shellcode作为EnumTimeFormatsEx的lpTimeFmtEnumProcEx参数来传递,并触发Shellcode。

  通过QueueUserAPC实现本地Shellcode执行

  · 使用VirtualAlloc为Shellcode分配内存缓冲区。

  · 使用GetCurrentProcess获取当前进程的句柄。

  · 使用WriteProcessMemory向新分配的内存区域写入Shellcode Payload。

  · 使用GetCurrentThread获取当前线程的句柄。

  · 将分配的内存区域以pfnAPC参数的形式提供给QueueUserAPC,并将新创建的APC程序加入队列。

  · 通过调用未记录的NtTestAlert函数触发Shellcode Payload,该函数将清除当前线程的APC队列。

  · 通过关闭当前线程和当前进程的句柄来执行清理任务。

2-3.jpg

  项目地址

  Jektor:https://github.com/FULLSHADE/Jektor


作者:Alpha_h4ck    

来源:http://www.51testing.com/html/11/n-4480911.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   几点心得体会  质量管理核心思想是预防,预计可能出问题时要主动与团队沟通,不要等问题出现了才介入。当然如果团队不配合,先让其受点教训再介入也是个办法。  提出问题要有理有据,自己要先理解我们的流程为什么要这么要求,要想别人接受我们提出的问题,先要说服我们自己。流程没有规定的不能强制要求执行,当然也不能放之不管,可在遵守质量管理基本原则的基础上提出建议,或者事后再给出答复。  有原则性,当观点与团队不一致时,要在遵守基本原则的基础上争取对方的妥协,不能项目说怎样就跟着怎样。也不能死守成规,可在取得相同效果的情况下,简化流程,这就需要掌握好“度”。  主动了解各方面的知识,要想别人接受我们,先...
            0 0 785
            分享
          •   当前,系统测试主要集中在功能测试、性能测试以及安全测试三大方面,对于容量测试的关注比较欠缺,特别是磁盘容量空间。从系统测试业务连续性上考虑,容量测试是其中不可或缺的步骤,做好容量测试可以进一步优化信息系统服务能力,从而提供持续、合理的系统服务。  对于容量测试,首先需要明确几个概念。容量管理,是指根据当前和未来的业务需求,在恰当的时间、以恰当的成本提供所需的IT资源。管理对象是对环境中的业务应用系统、主机平台设备、开放平台设备、网络、机房环境设施等进行容量规划。容量评估,是指对系统是否能够达到要求的生产能力,并且有一定超负荷运行能力以满足未来市场的高峰要求的评估。  本文从测试阶段出发,针...
            0 0 1378
            分享
          •   什么是软件测试缺陷?测验行业的习惯叫法,即Bug管理。在软件或程序开发过程中,编程人员编码、系统设计结构不合理等都会导致错误报错,影响系统程序的正常运行。并且软件测试的目的之一,就是通过手工测试或者自动测试工具来执行操作,测试发现这些Bug,并对代码进行修复。  一、软件测试缺陷分类  1、网络环境;如果测试过程中,外部网络不稳定,也有可能造成软件测试缺陷。例如性能测试对网络环境的配置要求比较高,网络出现延迟、卡顿等都会影响测试结果。  2、硬件环境;由于磁盘空间内存不足、CPU运行速度等造成的系统瓶颈问题。对操作系统、服务器等硬件配置的测试也可能出现偏差。  3、数据问题;由于不同环境i...
            0 0 4338
            分享
          •   前言  随着一众国内外大模型免费开放API,零成本构建一些性能不是那么强的大模型应用成为了可能。作为Digital IDE的作者,锦恢在完成学业的同时也需要负责维护一些自己的开源项目。  在维护一个产品的时候,为了获得更好的用户反馈,我们往往会建立一个 QQ 群来和用户直接互动。  不过随着时间的推移,群内会有很多的问题变得重复,或者很多问题都可以从我们提供的官方文档中找到答案。当然,我们知道,大部分的人都是懒得去翻官方文档的。  于是我就想着能不能开发一个用于进行问题解决的 QA 机器人,这样就可以解放我的双手了,让我每天有更多时间和朋友打星际争霸。通过 5 天的开发,我上线了我的 QA...
            0 0 559
            分享
          •   让 ChatGPT 如虎添翼!  ChatGPT 很好用,其核心是prompt的运用,其回答质量很大程度取决于你的提问质量。  我算是 ChatGPT 的高频用户了,几乎日活。半个月前我在星球写道:  冲了Plus之后,使用更加频繁,说几点ChatGPT近期感受:   1、它发挥多大效能取决于你的知识储备,它只能锦上添花,无法雪中送炭;  2、提问是门技术,无论是向他人求助,还是之前用搜索引擎,大部分人连提问都搞不定;  3、未来ChatGPT必然更加强大,会更好用,但依然无法解决上面俩个问题;  4、未来N年他会持续进化,国内做模型大概率邯郸学步;  5、真...
            0 0 112
            分享
      • 51testing软件测试圈微信