这次我们一起用C#来重写stager及其Beacon中的大部分常用功能,帖子主要介绍该项目的运行原理(LolBins-->Stager-->Beacon)及相应的功能介绍及展示。LolBins部分是由GadgetToJs使Stager转换为js、vba、hta文件后,再结合相应的csript、mshta等程序来运行;Stager功能包括从网络中拉取Beacon的程序集并在内存中加载及AMSIBypass;Beacon部分主要有包括正常上线、文件管理、进程管理、令牌管理、结合SysCall进行注入、原生端口转发、关ETW等一系列功能。
项目地址:https://github.com/mai1zhi2/SharpBeacon/tree/master
项目基于.net4.0,暂支持cs4.1(更高版本待测试),感谢M大、WBG师傅、SharpSploit、Geason的分享。另因最近出去广州找工作没时间弄,就暂时写到这里,开发进度比较赶致使封装不是很好、设计模式也没有用,但每个实现功能点都有较详细注释,等后续工作安定后会进行重构及完善更多功能。若有错误之处还请师傅指出,谢谢大家。
LOLBins,全称“Living-Off-the-Land Binaries”,直白翻译为“生活在陆地上的二进“,我大概将其分为两大类:1、带有Microsoft签名的二进制文件,可以是Microsoft系统目录中二进制文件。2、第三方认证签名程序。LolBins的程序除了正常的功能外,还可以做其他意想不到的行为。在APT或红队渗透常用,常见于海莲花等APT组织所使用。下图是较常见的LolBins,还有很多就不一一列出了:而GadgetToJS项目则可以把源码cs文件动态编译再base64编码后,保存在js、vba、vbs、hta文件,而在其相关文件中文件利用了当 BinaryFormatter属性在进行反序列化时,可以触发对 Activator.CreateInstance() 的调用,,从而实现 .NET 程序集加载/执行。但这需要在.net程序集中把相应的功能写在默认/公共构造函数,这样才能触发 .NET 程序集执行。下面以实例程序为例:在相应文件夹下执行如下命令:.\GadgetToJScript.exe -w js -c Program.cs -d System.Windows.Forms.dll -b -o gg其中命令参数解析如下:-w js表示所生成的是js文件,可以生成其他形式的文件-c Program.cs是所选择的cs文件-d System.Windows.Forms.dll cs文件所用到的dll-b 会在js文件中的引入第一个stager,因为当在.NET4.8+的版本中引入了旁路类型检查控件,默认值为false,如果所生成的脚本要在.NET4.8+的环境中运行,则设置为true(--Bypass/-b)。生成的stager1就是bypass这个检查的。-o gg生成文件名生成js、hta、vbs等文件后默认是会被杀的:而我们只需要简单修改下单引号为/就行了:最后执行所生成的js或hta:
Stager部分的功能可以包括下图几项:我主要实现了从网络中拉取Beacon的程序集并在内存中加载及AMSIBypass,沙箱及虚拟机检测的方式有挺多方式的,师傅可以自行添加。拉取程序集及内存加载这个较为简单,就不细说了:下面说说bypassAMSI,这里一开始找的不是AmsiScanBuffer,而是找DllCanUnloadNow的地址:然后再通过相关的硬编码找到AmsiScanBuffer后,再进行相应的patch:
Beacon部分主要有包括正常上线、文件管理、进程管理、令牌管理、结合SysCall进行注入、原生端口转发、关ETW等一系列功能。
先从文件管理部分说,包含了cp、mv、upload、download、filebrowse、rm、mkdir上述这七个功能点:Cp:Mv:Upload:Download:Filebrowse:rm:mkdir
进程部分,已完成的有run、shell、execute、runas、kill,未完成的有runu:Run:shell:execute:runas:ps:kill:
令牌权限部分,已完成的有getprivs、make_token、steal_token、rev2self:Getprivs:make_token:测试时在make_token后执行了cmd.exe /C dir \10.10.10.165\C$steal_token:测试时在steal_token后执行了whoamirev2self:
端口转发部分,已完成的有rportfwd、rportfwd stop:Rportfwd,注意这里端口转发teamserver只返回了本地需要绑定的端口,没有返回需转发的ip和port。在192.168.202.180:22222上新建msf监听:在本机地址192.168.202.1的23456端口转发到上述msf的监听本地访问23456端口:另一个网段访问23456端口:rportfwd stop:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
WBGIII 我id一直是WBG[em_78]
wx_0xC05StackOver 我鸡哥对CS玩弄的已经出神入化了!每日一问今天招娉到鸡哥没有?没有!