横向移动工具开发:wmiexec-Pro(一)

简介: • 早于两年前,我基于wmihacker免杀横向的思路,造轮子写了个wmipersist-Modify.py的横向工具,相对于wmihacker来说,无需配合mimikatz的PTH,即可进行PTH

0x01 Intro

  • • 早于两年前,我基于wmihacker免杀横向的思路,造轮子写了个wmipersist-Modify.py的横向工具,相对于wmihacker来说,无需配合mimikatz的PTH,即可进行PTH
  • • 但是wmipersist.Modify.py时间久了,也有许多不足之处,然后就有了这篇文章

0x02 改造点1:文件传输第一步-创建WMI类

  • • 文件传输部分是最难的,但是我看到t00ls上的flystart师傅,改了我的脚本,地址:https://www.t00ls.com/viewthread.php?tid=68322&extra=&highlight=wmihacker&page=1 ,但是用的方法依旧是通过注册表传文件,这种方法有个坏处,就是写的文件不能大于512KB,因为注册表的限制,我估计这个师傅是看到奇安信的SharpWMI和香山师傅的WMIHACKER项目来的灵感
    奇安信的SharpWMI
  •  
    可以看到,该项目的Todo,依旧想的是围绕注册表去进行修改,为此我们先把注册表传输文件放一边
    WMIHACKER的文件传输部分
  •  
  • • 令人意外的是,我们域渗透的龙头老大哥HarmJ0y,于早些年前写了一个SharpWMI项目,并且里面用到的文件上传方法是把数据写到一个自己创建的WMI Class里面的properties
  •  
    这个工具很不错,基本上该有的功能都有了,但是缺了PTH,来,是时候拥抱impacket了,我们也确立好了明确的目标,首先是创建wmi类
  • • 我们首先想到得就是impacket远程调用 “IWbemServices::PutClass” 方法,然后boom,就创建好了一个类,但是难题来了,PutClass要求我们传入三个value,且第一个pObject类型的值已经难倒我了,因为实在不知道impacket怎么去生成这个值

  • 后面去看了issues,发现也有一个师傅问了相同的问题
  •  
    期间自己也试了很多次方法,impacket的wmi.py也看了很久,无奈自己琢磨不出来,依旧创建不成类,难道就没有其他方法了吗?通过查找其他issues,有另外的大哥是通过powershell去创建一个wmi类,但是还是没有采取他的方法,因为实战powershell很容易被杀
  •  
    但,回想起WMIHACKER的免杀横向思路,是通过事件订阅去执行VBS,VBS再去执行cmd,达到的免杀横向目的,如果我们用VBS去创建一个类,那也是免杀的,然后就按照思路去谷歌,你猜怎么着,答案就藏在微软的官方文档里
  •  
    有了VBS脚本,我们可以修改一下,变成我们想要的,如下图所示,CreationClassName可以用来表示唯一key值,而DebugOptions可以用来存储数据,并且在创建完成类后,在里面接着创建一个叫Backup的实例,用来判断是否创建类成功  
  •  
    类的properties如下图所示
  •  
    目前,创建类的思路已经齐全了,我们可以回到impacket,自己定义一个创建类的方法,思路就是,用wmi事件执行vbs,然后使用iWbemServices.GetObject方法去直接调用实例,判断类是否存在,存在的话,删除刚刚的事件订阅
  •  
    impacket除了iWbemServices.GetObject("win32_process")的写法,还可可以直接调用实例 iWbemServices.GetObject('win32_process.Handle="0"')
    删除类就好办了,直接调用 iWbemServices.DeleteClass 即可
  •  

0x03 改造点2:文件传输第二步-上传/下载

  • • 有了前面的思路,大致的上传和下载思路就出来了
  • • 上传文件:我们可以不用创建类,直接把文件base64编码后,放入到vbs脚本里面,然后事件订阅执行解码和释放文件,但是注意,impacket在创建wmi实例,如果string类型的属性内容过大,传输会变得很慢很慢,同理,针对上传大文件,真的没什么好方法去解决速度
  •  
    演示截图,上传了2兆的文件

  • • 下载文件:下载文件的话,就用回VBS远程创建类,然后VBS把目标文件base64编码,接着VBS在新建的类里面创建一个实例,把内容写进入(注意不能写到key属性里面)
  •  
    然后用个函数封装起来,漂漂亮亮
  •  
    演示截图,下载了2兆的文件


相关文章
开源测试平台横向测评系列『流马』篇:流马使用及总结
【使用篇】 ● 接口测试:创建接口(添加引用公共参数、添加引用自定义参数)、测试用例(参数关联)、业务流程测试实践 ● web自动化测试:元素管理(添加元素)、测试用例(添加元素)、设计测试场景 ● 测试计划、测试集合与测试用例相互之间的关系 【总结篇】 ● 使用总结:常见的使用注意事项,如变量引用、函数引用、关联参数引用等 ● 优化建议:结合真实使用过程,从用户角度出发,提出的7条优化建议 ● 优缺点总结:优点、缺点、评分(从不同角度评测打分)
开源测试平台横向测评系列『流马』篇:流马使用及总结
|
网络协议 Ubuntu Linux
在IPad Pro上怎么实现代码自由,如何让IPad Pro变成你的生产力工具?
如何让IPad Pro变成你的生产力工具?在IPad上用Vscode写代码搞开发
326 1
在IPad Pro上怎么实现代码自由,如何让IPad Pro变成你的生产力工具?
|
8月前
|
存储 SQL 数据库
构建高效Android应用:采用Jetpack架构组件的实践之路
【4月更文挑战第7天】 在快速迭代的移动开发领域,构建一个既健壮又易于维护的Android应用至关重要。本文将深入探讨如何利用Google推出的Jetpack架构组件,实现Android应用的模块化和组件化,从而提升开发效率和应用性能。我们将通过具体实例分析生命周期管理、UI控制器、数据存储等核心组件,展示其在真实应用中的运用,以及如何借助这些组件简化日常开发任务,确保代码的可扩展性和可测试性。
|
存储
ArcGIS Pro新功能 | 模型构建器篇
ArcGIS Pro新功能 | 模型构建器篇
265 0
|
网络安全 Windows
横向移动工具开发:wmiexec-Pro(二)
早于两年前,我基于wmihacker免杀横向的思路,造轮子写了个wmipersist-Modify.py的横向工具,相对于wmihacker来说,无需配合mimikatz的PTH,即可进行PTH
|
缓存 运维 Kubernetes
CNStack 网络插件:hybridnet 的设计与实现
CNStack 网络插件:hybridnet 的设计与实现
CNStack 网络插件:hybridnet 的设计与实现
|
传感器 自动驾驶 定位技术
千耘导航QY210Pro|常见故障及解决方案
在作业季节来临前,为了让用户更好的使用千耘农机导航,我们挑选出几个千耘QY210Pro常见问题,帮助大家应对,更好的保障春耕作业。
千耘导航QY210Pro|常见故障及解决方案
|
前端开发 关系型数据库 MySQL
开源测试平台横向测评系列『流马』篇:流马部署
【简介篇】 • 项目概述:技术栈、工作原理 • 项目功能简介:功能特点 【部署篇】 • 部署规划 • 依赖环境部署(JDK、MySQ、NGINX、Git、NodeJS、Python3) • 代码打包:克隆项目、前端代码打包、后端代码打包 • 项目部署:前端部署、后端部署、执行引擎部署
开源测试平台横向测评系列『流马』篇:流马部署
|
测试技术
【开源测试平台横向测评系列】预告篇
近几年来,随着互联网行业的高速发展,各类开源自动化测试框架、工具、平台如雨后春笋般涌现。应当说,各个平台均有其各自的优缺点,这也给广大用户尤其是我这类“选择困难症”患者带来了一定的困扰:哪个更好用?哪个更适合当前团队?到底该选择哪个?本系列文章或许可以带你窥探一二
【开源测试平台横向测评系列】预告篇

热门文章

最新文章