์ค๋์ benign activity์ RBA ๊ฐ๋ ์ ๋ํด์ ์ด์ผ๊ธฐํ๋ ค๊ณ ํฉ๋๋ค.
์คํ/์ ํ ์ด๋ถ๋ฒ์ ๋ฌธ์
๋ณดํต SOCํ์ด๋ ๋ธ๋ฃจํ์ด ๋ก๊ทธ๋ฅผ ํ๋จํ๋ ๊ธฐ์ค์ ์คํ, ์ ํ ๋ฑ ๋ ๊ฐ์ ๋๋ค. ๊ทธ๋ฌ๋ค ๋ณด๋ ์ข ์ข ์ ๋งคํ ๊ฒฝ์ฐ๊ฐ ์๊น๋๋ค.
๊ฐ๋จํ ์๋ฅผ ๋ค์ด๋ณด์ฃ . ๋ก๊ทธ์ธ ์คํจ๋ฅผ 5๋ฒ ์ด์ ์ก๋ ๋ฃฐ์ด ์๋ค๊ณ ํฉ์๋ค. ์ค์ ํด์ปค์ ๊ณต๊ฒฉ์ ์ก์ผ๋ฉด ์ ํ, ์ ์ ์ฌ์ฉ์์ ์ค์๋ฅผ ์ก์ผ๋ฉด ์คํ์ผ๋ก ํ์ ํ๋ ๊ฒ ์ผ๋ฐ์ ์ ๋๋ค. ํ์ง๋ง ์ด๊ฑด ์ด๋๊น์ง๋ ํ์ง ๊ฒฐ๊ณผ ๊ธฐ๋ฐ์ ํ์ ์ด๊ณ , ๋ฃฐ์ ์์ฒด๋ฅผ ๋๊ณ ๋ณด๋ฉด ์ด์ผ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋๋ค.
Usecase๋ฅผ ์์ฑํ๊ณ ์ด์์ ๋ค์ด๊ฐ๋ฉด, ๋ถ๊ธฐ๋ ๋ฐ๊ธฐ๋ง๋ค ๊ฐ ๋ฃฐ์ ์ ์คํ๋ฅ ์ ๊ณ์ฐํด์ ์ต์ ํ ์์ ์ ํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ฐฉ๊ธ ์ผ์ด์ค๋ ์ด๋จ๊น์? ์ ์ ์ฌ์ฉ์์ ์ค์๋ฅผ ์คํ์ผ๋ก ์ง๊ณํ์ผ๋ ์์น์์ผ๋ก๋ "๊ฐ์ ์ด ํ์ํ ๋ฃฐ"์ด ๋ฉ๋๋ค. ํ์ง๋ง ๋ฃฐ ์์ฒด๋ง ๋ณด๋ฉด, ๋น์ ์ ๋ก๊ทธ์ธ ์๋๋ฅผ ์ก๋๋ค๋ ๋ก์ง์ด ํ๋ฆฐ ๊ฒ ํ๋๋ ์์ด์. ๋ฃฐ์ ์ํค๋ ๋๋ก ์ ํํ ๋์ํ๋๋ฐ ์คํ๋ฅ ๋ง ์ฌ๋ผ๊ฐ๋ ๊ฒ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ์๋์ผ ํ ๊ฑด ๋ฃฐ ๊ท์น์ด ์๋๋ผ ํ์ดํธ๋ฆฌ์คํธ, UEBA, ๋จธ์ ๋ฌ๋ ๊ฐ์ ๋ค๋ฅธ ๋ณด์ ์ฅ์น์ฃ .
๊ทธ๋ฌ๋ฉด ์ด ํ์ ์ฒด๊ณ ์์ฒด๋ฅผ ์ด๋ป๊ฒ ๋ฐ๋ก์ก์์ผ ํ ๊น์? ํด์ธ์์ ์ฐ์ด๊ธฐ ์์ํ ๊ฐ๋
์ด TP-benign activity, ์ฆ ์์ฑ ํ์์
๋๋ค. ์ ํ์ด๊ธด ํ๋ ์ ํดํ์ง ์์ ๊ฒ. ๋ฃฐ ๊ท์น์ ๊ด์ ์์ ํ๋จํ๋ ๊ฒ๋๋ค. ์ฐ๋ฆฌ ๋ฃฐ์ด ์ ์ก์๊ณ (TP), ๋ค๋ง ์ด๊ฒ ์ ์ ์ฌ์ฉ์์ ์์ฑ ํ์์๋ค๋ ๊ฑฐ์ฃ .
์ด๋ ๊ฒ ์ธ ๊ฐ๋(TP / TP-benign / FP)๋ก ์ง๊ณํ๋ฉด ๋์ค์ ์ ์คํ ์ ์๋ฅผ ๊ณ์ฐํ ๋ "๋ฃฐ ๋ก์ง์ ๋ฌธ์ "์ "์ปจํ ์คํธ ๋ณด์์ ๋ฌธ์ "๊ฐ ๋ถ๋ฆฌ๋ผ์, ์ต์ ํ ๋ฐฉํฅ์ ํจ์ฌ ์ ํํ๊ฒ ์ก์ ์ ์์ต๋๋ค.
RBA (Risk-Based Alerting)
benign activity ์ํฉ์ ๋๊ณ ๋ณด๋ฉด, ๋ฃฐ ๋ฉ์ธ ๋ก์ง ์์ฒด๋ ์ค๋ฅ๊ฐ ์์ง๋ง ์ถ๊ฐ ์ปจํ ์คํธ๋ก ๋ณด์ํ ์ฌ์ง๊ฐ ๋ง์ด ๋จ์ ์์ต๋๋ค. ํ์ดํธ๋ฆฌ์คํธ๋ก ํด๊ฒฐํด๋ ๋์ง๋ง, ๊ณต๊ฒฉ์๋ APT ๊ทธ๋ฃน์ ๋ณธ์ง์ ์ธ ๋ชฉ์ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ทผํ์๋ฉด RBA(Risk-Based Alerting)๋ฅผ ์ธ๊ธํ ์ ์๊ฒ ์ต๋๋ค.
RBA๋ ์ฝ๊ฒ ๋งํด ๋ฆฌ์คํฌ ์ ์ ๊ธฐ๋ฐ ์๋ฆผ์ ๋๋ค. ์๋ฆผ์ ์ด๋ฒคํธ ๋จ์๋ก ๋ฐ๋ก ์๋ ๊ฒ ์๋๋ผ, ๋ชจ๋ ์ํฐํฐ(์ ์ , ํธ์คํธ ๋ฑ)์ ๋ฆฌ์คํฌ ์ ์๋ฅผ ๋์ ์ํค๋ ๋ฐฉ์์ด์์. ์๋ฅผ ๋ค์ด ํ๊ธธ๋์ด๋ผ๋ ์ ์ ๊ฐ ์์ต๋๋ค. ํ๊ธธ๋์ด ํจ์ค์๋๋ฅผ 5๋ฒ ํ๋ฆด ๋๋ง๋ค ํ๊ธธ๋์๊ฒ 30์ ์ ๋ถ์ฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ์ ์๊ฐ 100์ ์ ๋์ ๋๋ง notable, ์ฆ ์๋ฆผ์ ์์ฑํฉ๋๋ค.
์ฌ๊ธฐ์ ์ด๋ฐ ์ง๋ฌธ์ด ๋์ฌ ์ ์์ต๋๋ค. "ํ ๋ฒ์ 30์ ์ด๋ฉด ์ด 4๋ฒ, ์ฆ 20๋ฒ์ ํ๋ ค์ผ ์๋ฆผ์ด ๊ฐ๋ ๊ฑฐ ์๋? ํด์ปค๊ฐ 20๋ฒ ๋ฏธ๋ง์ผ๋ก๋ง ์๋ํ๋ฉด ์์ํ ์ ์กํ๋ ๊ฑฐ ์๋?" ์ฌ๊ธฐ๊น์ง ์๊ฐํ์ จ๋ค๋ฉด ์์ฃผ ํ๋ฅญํ์ ๊ฒ๋๋ค. ๋ค๋ง ๊ทธ๊ฑด Usecase๊ฐ ํ๋๋ฟ์ผ ๋ ์ด์ผ๊ธฐ์ ๋๋ค.
์ค์ ๋ก RBA๋ฅผ ์ ์ฉํ๋ค๋ฉด ํฌ์ฒด์ธ์ด๋ MITRE ATT&CK ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ Usecase๋ฅผ ๋ง๋ค ํ
๊ณ , ๊ฐ Usecase๊ฐ ๊ฐ๋ฆฌํค๋ risk object๊ฐ ์ ๋ถ ๊ฐ์ ์ ์ ๋ผ๋ฉด ์ด์ผ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋๋ค. ํด์ปค๊ฐ ํ๊ธธ๋ ๊ณ์ ์ ํ์ทจํ๋ ค ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์ฃ . ํจ์ค์๋ ์คํจ๋ก 30์ , ์ด์ด์ ๋ค๋ฅธ ์์ ํ์๋ฅผ ์ก๋ Usecase๋ค์ด ๊ฐ๊ฐ ์ถ๊ฐ ์ ์๋ฅผ ์น์ต๋๋ค. ๊ณต๊ฒฉ์๋ ๊ณ์ ํ์ทจ๋ผ๋ ๋ชฉ์ ์ ํฅํด ํ์ ํ๋์ ์ด์ด๊ฐ ์๋ฐ์ ์์ผ๋, ์๋๋ฆฌ์ค ๊ธฐ๋ฐ์ผ๋ก Usecase๋ฅผ ์ง๊ณ ์ ์๋ฅผ ์ ๋ฐฐ๋ถํด ๋๋ฉด ๋จ์ผ ์ด๋ฒคํธ๋ก๋ ์กฐ์ฉํด ๋ณด์ฌ๋ ๋์ ์ผ๋ก๋ ๋ฐ๋์ ๋๋ฌ๋๊ฒ ๋ฉ๋๋ค.
RBA์ ์ฅ์ ์ ์ ๋ฆฌํ๋ฉด ์ด๋ ์ต๋๋ค. ๋จ์ผ ์ด๋ฒคํธ ์๋ฆผ์ด ํ ์ค์ด๋๋ ๋ถ์๊ฐ์ ์๋ฆผ ํผ๋ก๊ฐ ๋ด๋ ค๊ฐ๊ณ , benign activity๋ ์ ์๋ง ์๊ณ ์๋ฆผ๊น์ง๋ ์ ๊ฐ๋ ์์ฐ์ค๋ฝ๊ฒ ๊ฑธ๋ฌ์ง๊ณ , ๋ฐ๋๋ก ์ ๊ฐ๋๋ก ์ค๋ ์์ง์ด๋ ๊ณต๊ฒฉ์๋ ๋์ ์ ์๋ก ์กํ๋๋ค.
์ผ๋ฐ Splunk์์ ๊ตฌํํด๋ณด๊ธฐ
Splunk Enterprise Security์๋ RBA ๋ชจ๋์ด ๋ด์ฅ๋ผ ์์ง๋ง ์๋ ๋น์ธ๋ค ๋ณด๋, ์ผ๋ฐ Splunk๋ ํ ํ๋ซํผ(Sentinel, ELK ๋ฑ)์์๋ ๊ฐ์ ๊ฐ๋ ์ ์ ์ฉํ ์ ์๋ ์์๋ฅผ ๋ค๊ฒ ์ต๋๋ค. ํต์ฌ ๊ตฌ์กฐ๋ ๋ ์ธต์ ๋๋ค. Usecase ๋ฃฐ์ ์๋ฆผ์ ์์ง ์๊ณ ๋ฆฌ์คํฌ ์ด๋ฒคํธ๋ง ์๊ณ , ๋ณ๋์ ์ง๊ณ ๋ฃฐ์ด ๋์ ์ ์๋ฅผ ๋ณด๊ณ ์๋ฆผ ์ฌ๋ถ๋ฅผ ํ๋จํฉ๋๋ค.

[Usecase ํ์ง๋ฃฐ] โ ๋ก๊ทธ์ธ ์คํจ 5ํ ์ด์์ ์ก๋, ์๋ฆผ ๋์ ๋ฆฌ์คํฌ ์ธ๋ฑ์ค์ ์ ์๋ฅผ ์ ์ฌํฉ๋๋ค.
index=wineventlog EventCode=4625
| bin _time span=10m
| stats count as fail_count values(src) as src by _time, user
| where fail_count >= 5
| eval risk_object=user,
risk_object_type="user",
risk_score=30,
risk_rule="AUTH-001_excessive_login_failure",
risk_message="10๋ถ ๋ด ๋ก๊ทธ์ธ ์คํจ ".fail_count."ํ (src: ".mvjoin(src,", ").")",
mitre_technique="T1110"
| fields _time, risk_object, risk_object_type, risk_score, risk_rule, risk_message, mitre_technique
| collect index=risk_index
ํฌ์ธํธ๋ ๋ง์ง๋ง collect์
๋๋ค. ์ด ๋ฃฐ์ ์ค์ผ์ค๋ง ๋ ๋ฟ ๋๊ตฌํํ
๋ ์๋ฆผ์ ๋ณด๋ด์ง ์๊ณ , risk_index์ ๋ฆฌ์คํฌ ์ด๋ฒคํธ๋ฅผ ๋จ๊ธฐ๋ ๊ฒ์ผ๋ก ๋๋ฉ๋๋ค. ๋ค๋ฅธ Usecase๋ค(์์ํ ํ๋ก์ธ์ค ์คํ, ๋น์ ์ ์๊ฐ๋ ์ ์, ์ ๊ท ๊ตญ๊ฐ ๋ก๊ทธ์ธ ๋ฑ)๋ ์ ๋ถ ๊ฐ์ ํฌ๋งท์ผ๋ก ์ด ์ธ๋ฑ์ค์ ์์ผ๋ฉด ๋ฉ๋๋ค. risk_rule์ ๋ฃฐ ID๋ฅผ, mitre_technique์ ATT&CK ๋ฒํธ๋ฅผ ๋ฐ์๋๋ฉด ๋์ค์ ์ง๊ณํ ๋ ๊ณต๊ฒฉ ํ๋ฆ์ด ๊ทธ๋๋ก ๋ณด์
๋๋ค.
[RBA ์ง๊ณ๋ฃฐ] โ 24์๊ฐ ๋์ ์ ์๊ฐ ์๊ณ์น๋ฅผ ๋๋ ์ํฐํฐ๋ง ์๋ฆผ์ผ๋ก ์ฌ๋ฆฝ๋๋ค.
index=risk_index earliest=-24h
| stats sum(risk_score) as total_score,
dc(risk_rule) as distinct_rules,
values(risk_rule) as triggered_rules,
values(mitre_technique) as techniques,
values(risk_message) as messages,
latest(_time) as last_seen
by risk_object, risk_object_type
| where total_score >= 100 OR distinct_rules >= 3
| eval last_seen=strftime(last_seen, "%Y-%m-%d %H:%M:%S")
| sort - total_score
์กฐ๊ฑด์ total_score >= 100 OR distinct_rules >= 3์ผ๋ก ๊ฑด ๊ฒ ํต์ฌ์
๋๋ค. ์ ์ ์ดํฉ๋ฟ ์๋๋ผ ์๋ก ๋ค๋ฅธ ๋ฃฐ ๋ช ๊ฐ์ ๊ฑธ๋ ธ๋์ง๋ ๋ด
๋๋ค. ์ ๊ฐ๋๋ผ๋ ์ฌ๋ฌ ๋จ๊ณ์ ๊ฑธ์ณ ์์ง์ด๋ ๊ณต๊ฒฉ์๋ distinct_rules ์ชฝ์ ๊ฑธ๋ฆฌ๊ฒ ๋๋ ๊ฑฐ์ฃ . ์ด ์ง๊ณ๋ฃฐ๋ง ์ค์ผ์ค ์๋ฆผ์ผ๋ก ๊ฑธ์ด๋๋ฉด, ๋ถ์๊ฐ๋ ๊ฐ๋ณ ์ด๋ฒคํธ๊ฐ ์๋๋ผ "์ง๊ธ ์ ์๊ฐ ์์ด๊ณ ์๋ ์ํฐํฐ" ๋ชฉ๋ก์ ๋ณด๊ฒ ๋ฉ๋๋ค.
Sentinel(KQL)์์๋
Sentinel์๋ UEBA ๊ธฐ๋ฐ ์ํฐํฐ ์ค์ฝ์ด๋ง์ด ๋ด์ฅ๋ผ ์์ง๋ง, ์ฌ๊ธฐ์๋ ๊ฐ์ 2์ธต ๊ตฌ์กฐ๋ฅผ KQL๋ก ์ง์ ์ง๋ ์์๋ฅผ ๋ณด๊ฒ ์ต๋๋ค. Sentinel์ Splunk์ collect ๊ฐ์ ๊ฒ ์์ผ๋, ๊ฐ Usecase๋ฅผ ์ ์ฅ ํจ์(saved function)๋ก ๋ง๋ค์ด ๋๊ณ ์ง๊ณ ์ฟผ๋ฆฌ์์ union์ผ๋ก ๋ชจ์ผ๋ ํจํด์ด ๊ฐ๋จํฉ๋๋ค.
[Usecase ํ์ง๋ฃฐ] โ ํจ์ AUTH001_LoginFailures๋ก ์ ์ฅ:
SecurityEvent
| where EventID == 4625
| summarize fail_count = count(), srcs = make_set(IpAddress, 10)
by bin(TimeGenerated, 10m), TargetUserName
| where fail_count >= 5
| project TimeGenerated,
risk_object = TargetUserName,
risk_object_type = "user",
risk_score = 30,
risk_rule = "AUTH-001_excessive_login_failure",
mitre_technique = "T1110"
[RBA ์ง๊ณ๋ฃฐ] โ ๋ถ์ ๋ฃฐ(Analytics rule)๋ก ์ค์ผ์ค:
union
AUTH001_LoginFailures(),
PROC002_SuspiciousProcess(),
GEO003_NewCountryLogin()
| where TimeGenerated > ago(24h)
| summarize total_score = sum(risk_score),
distinct_rules = dcount(risk_rule),
triggered_rules = make_set(risk_rule),
techniques = make_set(mitre_technique)
by risk_object, risk_object_type
| where total_score >= 100 or distinct_rules >= 3
| order by total_score desc
์ง๊ณ ์ฟผ๋ฆฌ ํ๋๋ง Analytics rule๋ก ๋ฑ๋กํด์ ์ธ์๋ํธ๋ฅผ ๋ง๋ค๊ฒ ํ๋ฉด, Usecase ํจ์๋ค์ ์กฐ์ฉํ ์ ์ ๊ณต๊ธ๋ง ํ๋ ๊ตฌ์กฐ๊ฐ ๋ฉ๋๋ค. ๋ฆฌ์คํฌ ์ด๋ฒคํธ๋ฅผ ์ค์ ํ ์ด๋ธ๋ก ์ ์ฌํ๊ณ ์ถ๋ค๋ฉด Logic App์ด๋ DCR ๊ธฐ๋ฐ ์ปค์คํ ํ ์ด๋ธ๋ก ๋นผ๋ ๋ฐฉ๋ฒ๋ ์๋๋ฐ, ์๊ท๋ชจ๋ผ๋ฉด union ํจํด์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
ELK์์๋
Elastic๋ 8.x๋ถํฐ Entity Risk Scoring์ด ๋ด์ฅ๋๊ธฐ ์์ํ์ง๋ง, ๊ฐ๋
์ดํด์ฉ์ผ๋ก ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ES|QL๋ก ์ง๋ณด๋ฉด ์ด๋ ์ต๋๋ค. Usecase ๋ฃฐ์ ํ์ง ๋ฃฐ์ ์ธ๋ฑ์ค ์ก์
(๋๋ transform)์ผ๋ก risk-events ์ธ๋ฑ์ค์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฌํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
[Usecase ํ์ง๋ฃฐ]
FROM logs-windows*
| WHERE event.code == "4625"
| STATS fail_count = COUNT(*), srcs = VALUES(source.ip)
BY user.name, bucket = BUCKET(@timestamp, 10 minutes)
| WHERE fail_count >= 5
| EVAL risk_object = user.name,
risk_object_type = "user",
risk_score = 30,
risk_rule = "AUTH-001_excessive_login_failure",
mitre_technique = "T1110"
[RBA ์ง๊ณ๋ฃฐ]
FROM risk-events
| WHERE @timestamp > NOW() - 24 hours
| STATS total_score = SUM(risk_score),
distinct_rules = COUNT_DISTINCT(risk_rule),
triggered_rules = VALUES(risk_rule),
techniques = VALUES(mitre_technique)
BY risk_object, risk_object_type
| WHERE total_score >= 100 OR distinct_rules >= 3
| SORT total_score DESC
ํ๋ซํผ์ด ๋ฌ๋ผ๋ ๋ผ๋๋ ๋๊ฐ๋ค๋ ๊ฒ ๋ณด์ด์ค ๊ฒ๋๋ค. ์ ์๋ฅผ ์๋ ์ธต๊ณผ ํ๋จํ๋ ์ธต์ ๋ถ๋ฆฌํ๋ค, ์ด๊ฑฐ ํ๋์์.
์ด์ ํ
์ด์ํ๋ฉด์ ์กฐ์ ํ ๋ถ๋ถ์ ์ธ ๊ฐ์ง ์ ๋์ ๋๋ค. Usecase๋ณ ์ ์ ๋ฐฐ๋ถ(์น๋ช ์ ์ธ ํ์์ผ์๋ก ๋๊ฒ), ์ง๊ณ ์๋์ฐ(24์๊ฐ์ด ๊ธฐ๋ณธ์ด์ง๋ง ์ ์ ๊ณต๊ฒฉ ๋๋น๋ก 7์ผ ์๋์ฐ๋ฅผ ํ๋ ๋ ๋๋ ๊ฒ๋ ๋ฐฉ๋ฒ), ๊ทธ๋ฆฌ๊ณ ์๊ณ์น์ ๋๋ค. ์ฒ์๋ถํฐ ์๋ฒฝํ๊ฒ ์ก์ผ๋ ค ํ๊ธฐ๋ณด๋ค ์ผ๋จ ๊ตด๋ฆฌ๋ฉด์ notable ์๋ฅผ ๋ณด๊ณ ๋ง์ถ๋ ๊ฒ ํ์ค์ ์ ๋๋ค.
๋ง๋ฌด๋ฆฌ
์ ๋ฆฌํ๋ฉด ์ด๋ ์ต๋๋ค. ์คํ/์ ํ ์ด๋ถ๋ฒ์ TP-benign์ ์ถ๊ฐํ๋ฉด ๋ฃฐ ๋ก์ง์ ๋ฌธ์ ์ ์ปจํ ์คํธ์ ๋ฌธ์ ๋ฅผ ๋ถ๋ฆฌํด์ ๋ณผ ์ ์๊ณ , RBA๋ฅผ ์น์ผ๋ฉด benign activity๋ ์กฐ์ฉํ ์ ์๋ง ์๋ค ์ฌ๋ผ์ง๊ณ ์ง์ง ๊ณต๊ฒฉ ํ๋ฆ์ ๋์ ์ผ๋ก ๋๋ฌ๋ฉ๋๋ค.
์ฌ์ค ์ค๋ ๋ค๋ฃฌ ๊ฑด ๋ง๋ณด๊ธฐ์ ๊ฐ๊น์ต๋๋ค. ์ ์ ์ค๊ณ๋ฅผ ์ด๋ป๊ฒ ํ๋์ง, ํฌ์ฒด์ธ ๋จ๊ณ๋ณ๋ก Usecase๋ฅผ ์ด๋ป๊ฒ ๋ฐฐ์นํ๋์ง, ์ ์ ๊ฐ์ (decay)๋ ํ์ดํธ๋ฆฌ์คํธ์์ ์กฐํฉ์ ์ด๋ป๊ฒ ๊ฐ์ ธ๊ฐ๋์ง ๋ฑ ์ค์ ์์ ๋ถ๋ชํ๋ ์ด์ผ๊ธฐ๊ฐ ํจ์ฌ ๋ง๊ฑฐ๋ ์. ๋ค์์๋ Threat Detection Panorama์ RBA, ๊ทธ๋ฆฌ๊ณ RBA์ ํต์ฌ์ธ Finding-Based Detection์ ์ ๋๋ก ํ๋ ์์ธ ํฌ์คํธ๋ก ์ฐพ์์ค๊ฒ ์ต๋๋ค. ์ค๋์ ์ฌ๊ธฐ๊น์ง ํ๊ฒ ์ต๋๋ค.
'Detection Engineering' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์ค๊ตญ์ด APT ๋ฆฌํฌํธ๋ฅผ ํ์ง๋ก ์ฎ๊ธฐ๊ธฐ (1) โ BITTER / ่็ต่ฑ์ LOLBin ์ฒด์ธ (0) | 2026.07.20 |
|---|
