一次后渗透的反思

项目的一个目标,在可以执行命令后开始进行后渗透的工作。目标低权限,同时服务器装了杀软,还打了很多补丁,加上网络实在是不行所以工作展开的异常艰难,最终也只是获得一个反弹shell,所以写篇文章反思一下当前使用的工具还有哪些不足。

过程

  • 首先是自写的内存加载器,传上去没有问题,但是在加载msf的reverse_tcp payload之后(刚开启session但未接收到stager)程序自动退了,再运行程序的时候发现程序已经打不开了,失败。
  • 怀疑是限制了流量,遂改成使用powershell加载cs的reverse_http,服务放在了80端口,同样失败。
  • 尝试ssh隧道,连不上服务器
  • 尝试马+dns隧道,dns隧道可以连通,但是上马失败
  • 进行上述操作的过程会中间歇性地ban我ip,最后只好借了朋友的服务器,用powercat反弹了个shell,耻辱结束。

分析

虽然只进行了几次尝试,但几乎花费了我一天的时间,大部分时间都花在了配置以及忍受极慢网速的过程中。仔细分析各种方法失败的原因,我觉得问题出在流量上面。内存加载器获取payload的时候payload没有经过加密,之后的通信过程也没有加密,因此被识别出流量特征,之后的cs的reverse_http也同样如此。dns隧道尽管与服务器建立了加密隧道,但是在马与隧道之间流量扔需要经过本地回环,因此再次失败了。ssh隧道没法连接成功可能因为做了acl之类的东西。

因此可以改进的地方有两点

  • 流量特征
  • 可信的ip/域名

解决

流量特征的问题很好解决,msf可以使用rc4加密的payload,cs也有malleable C2可以修改证书加密流量。那如何让自己的ip/域名可信呢?奇安信A-team在2019BCS中介绍过很多使用第三方服务用作C2的文章,这对我来说是相对可行的方案。

Dropbox as a C2 channel using the Dropbox APIs

感觉又要写好多代码。。