Sigma 개요 및 배경
Sigma는 SIEM 시스템 간에 범용적으로 활용 가능한 탐지 규칙 형식으로, YAML 형식으로 구성되어 있으며 다양한 탐지 조건을 명확히 정의할 수 있는 장점이 있습니다. Sigma 규칙을 sigmac을 활용하여 Elasticsearch, osquery, Wazuh 등 다양한 형태로 변환할 수 있습니다.
탐지 시나리오: SSH Key 파일 무단 접근 및 변경 탐지
리눅스 환경에서 공격자가 SSH 키 파일을 무단으로 접근하거나 변경하여 접근 권한을 획득하려는 시도를 탐지합니다.
Sigma YAML 규칙 작성 예시
title: Unauthorized SSH Key Access or Modification
id: 87654321-abcd-1234-abcd-87654321abcd
logsource:
product: linux
service: auditd
detection:
selection:
type: 'PATH'
name:
- '/home/*/.ssh/authorized_keys'
- '/root/.ssh/authorized_keys'
- '/etc/ssh/*'
condition: selection
level: high
tags:
- attack.privilege_escalation
- attack.t1098
Sigma 규칙을 Elasticsearch Query로 변환
다음 명령을 통해 변환할 수 있습니다.
pip install sigmatools
sigmac -t es-dsl -c config/es-dsl.yml unauthorized_ssh_key_access.yml
Elasticsearch Query 변환 예시
{
"query": {
"bool": {
"should": [
{ "wildcard": { "auditd.path": "/home/*/.ssh/authorized_keys" }},
{ "match_phrase": { "auditd.path": "/root/.ssh/authorized_keys" }},
{ "wildcard": { "auditd.path": "/etc/ssh/*" }}
]
}
}
}
Osquery 변환 및 적용
SELECT * FROM file_events
WHERE path LIKE '/home/%/.ssh/authorized_keys'
OR path = '/root/.ssh/authorized_keys'
OR path LIKE '/etc/ssh/%';
Wazuh 규칙 적용
<rule id="100600" level="12">
<field name="file.path">/home/.ssh/authorized_keys</field>
<field name="file.path">/root/.ssh/authorized_keys</field>
<field name="file.path">/etc/ssh/</field>
<description>Unauthorized SSH Key Access or Modification detected.</description>
</rule>
탐지 수행 단계
1. 환경 준비
pip install sigmatools
git clone https://github.com/SigmaHQ/sigma.git
cd sigma
2. Elasticsearch Query 변환 및 Kibana 적용
sigmac -t es-dsl -c config/es-dsl.yml unauthorized_ssh_key_access.yml
Kibana 탐지 룰로 Elasticsearch에 등록 후 테스트합니다.
3. Osquery 탐지 적용
osquery 팩으로 쿼리를 적용하고, 테스트 이벤트 발생 시 실시간 탐지 여부를 점검합니다.
4. Wazuh 규칙 등록 및 이벤트 발생 확인
Wazuh 규칙을 적용하고, SSH 키 파일 변경을 시도하여 이벤트 탐지를 확인합니다.
탐지 시나리오: Privilege Escalation을 위한 SUID 및 SGID 파일 변경 탐지
공격자가 SUID 및 SGID 권한이 설정된 파일을 생성하거나 변경하여 권한 상승 공격을 시도하는 행위를 탐지합니다.
Sigma YAML 규칙 작성 예시
title: Unauthorized SUID and SGID File Modifications
id: 12345678-abcd-1234-abcd-12345678abcd
logsource:
product: linux
service: auditd
detection:
selection:
type: 'PATH'
permissions:
- '4755'
- '2755'
condition: selection
level: critical
tags:
- attack.privilege_escalation
- attack.t1548.001
Sigma 규칙을 Elasticsearch Query로 변환
다음 명령을 통해 변환할 수 있습니다.
pip install sigmatools
sigmac -t es-dsl -c config/es-dsl.yml unauthorized_suid_sgid_modification.yml
Elasticsearch Query 변환 예시
{
"query": {
"bool": {
"should": [
{ "match_phrase": { "file.permissions": "4755" }},
{ "match_phrase": { "file.permissions": "2755" }}
]
}
}
}
Osquery 변환 및 적용
SELECT * FROM file_events
WHERE mode IN ('4755', '2755');
Wazuh 규칙 적용
<rule id="100601" level="15">
<field name="file.mode">4755</field>
<field name="file.mode">2755</field>
<description>Unauthorized SUID or SGID file modifications detected.</description>
</rule>
지속적 운영 관리
- 정기적으로 Sigma 규칙 최신화를 수행합니다.
- 탐지 이벤트를 주기적으로 분석하여 정확도 및 효율성을 평가합니다.
- 자동화 도구(n8n)를 활용해 탐지 이벤트 발생 시 대응을 자동화합니다.
AI, MCP 및 LLM 활용 확장
- AI 기반 탐지 모델과 Sigma를 결합하여 탐지 정확성을 강화합니다.
- MCP(Model Context Protocol)를 통해 탐지 룰을 동적으로 최적화합니다.
- LLM(Large Language Model)을 통해 규칙 생성 및 운영 자동화를 지원하여 보안 관리 효율성을 향상시킵니다.
AI, MCP 및 LLM 활용 확장: 실제 활용 예시
AI 기반 탐지 모델 활용 예시
머신러닝 모델을 활용하여 리눅스 시스템 내 평소와 다른 파일 권한 변경 패턴을 탐지할 수 있습니다. AI 모델은 과거 데이터를 학습하여 비정상적인 변경을 실시간으로 탐지하여 경고합니다.
from sklearn.ensemble import IsolationForest
import pandas as pd
# 과거 데이터 로드
data = pd.read_csv('auditd_file_events.csv')
model = IsolationForest(contamination=0.01)
model.fit(data[['timestamp', 'user_id', 'file_permission_changes']])
# 새로운 이벤트 탐지
new_event = [[1623456789, 1001, 5]]
prediction = model.predict(new_event)
if prediction == -1:
print("Anomaly detected: Potential privilege escalation!")
MCP(Model Context Protocol) 활용 예시
MCP를 통해 실시간으로 시스템 및 사용자 행동을 모니터링하고, 동적으로 규칙을 갱신할 수 있습니다.
curl -X POST https://mcp.api/update_rule \
-H "Content-Type: application/json" \
-d '{"rule_id": "12345678-abcd-1234-abcd-12345678abcd", "new_context": {"permissions": ["6755"]}}'
LLM(Large Language Model) 기반 Sigma 규칙 자동 생성 예시
자연어를 사용해 자동으로 규칙을 생성하여 탐지 시스템의 구축 시간을 단축하고 효율성을 높일 수 있습니다.
import openai
openai.api_key = 'YOUR_API_KEY'
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": "Create a Sigma rule to detect unusual file permission changes indicative of privilege escalation in Linux."}]
)
print(response.choices[0].message.content)
이러한 AI, MCP, LLM 기술을 통해 기존의 탐지 시스템을 보다 지능화하고 자동화하여, 보안 운영 효율성과 정확도를 극대화할 수 있습니다.
댓글