Sysmon for Linux는 Microsoft에서 만든 시스템 모니터링 도구로, 리눅스 환경에서도 보안 이벤트 및 시스템 동작을 상세하게 모니터링할 수 있다.
https://github.com/microsoft/SysmonForLinux
GitHub - microsoft/SysmonForLinux: Sysmon for Linux
Sysmon for Linux. Contribute to microsoft/SysmonForLinux development by creating an account on GitHub.
github.com
칼리 리눅스는 Debian 기반이므로 Ubuntu/Debian 패키지(sysmonforlinux_1.3.5_amd64.deb)를 설치하면 된다.
cd ~/Desktop
wget https://github.com/microsoft/SysmonForLinux/releases/download/1.3.5.0/sysmonforlinux_1.3.5_amd64.deb
sudo dpkg -i sysmonforlinux_1.3.5_amd64.deb #설치
sudo apt-get install -f #의존성 설치
sysmon -h #설치 확인
해당 다운로드 경로나 파일 이름 매번 바뀔 수 있으므로 다운로드 사이트에서 직접 파일을 확인해보고 수정하자.

기본적으로 설치시 sysmon_default.xml이 없기 때문에 직접 파일을 만들고 작성해 줘야 한다.
nano ~/sysmon_default.xml #설정 파일 생성
<Sysmon schemaversion="4.81">
<HashAlgorithms>SHA256</HashAlgorithms>
<EventFiltering>
<ProcessCreate onmatch="include" />
<NetworkConnect onmatch="include" />
<FileCreate onmatch="include" />
<FileCreateTime onmatch="include" />
<FileDelete onmatch="include" />
</EventFiltering>
</Sysmon>
기존 설정이 있다면 제거 해주고, 변경된 설정을 다시 적용하여 sysmon을 동작한다.
sudo sysmon -u force #기존 설정 제거
sudo sysmon -accepteula -i ~/sysmon_default.xml #새로운 설정 적용 및 시작
systemctl status sysmon #서비스 확인
ps aux | grep sysmon #프로세스 확인
sudo systemctl start sysmon #시작
sudo systemctl stop sysmon #중지
sudo systemctl enable sysmon #자동 시작 설정
sudo systemctl disable sysmon #자동 시작 해제
칼리 리눅스는 /var/log/syslog를 기본으로 사용하지 않기 때문에 journald를 통해 로그를 확인해야 한다.
sudo journalctl -f -u sysmon #실시간 로그 보기
sudo journalctl -u sysmon > ~/sysmon_logs.txt #전체 로그를 txt로 저장
전체 로그를 뽑아도 되지만, 특정 시점만 뽑고 싶다면 아래 스크립트를 사용해 보자. 실행을 위해 만든 2개의 파일은 실행 권한을 주며, 결과는 XML 형태로 저장된다.
chmod +x sysmon_start.sh sysmon_stop.sh
sysmon_start.sh
#!/bin/bash
echo "[*] Starting Sysmon log capture..."
# Save start time
START_TIME=$(date --iso-8601=seconds)
echo "$START_TIME" > /tmp/sysmon_start_time.txt
echo "[+] Start time recorded: $START_TIME"
# Rotate and vacuum old logs
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
echo "[*] Ready. Run your malware sample now."
sysmon_stop.sh
#!/bin/bash
echo "[*] Stopping Sysmon log capture and saving full log as XML..."
# Check start time
if [ ! -f /tmp/sysmon_start_time.txt ]; then
echo "[!] Start time not found. Please run sysmon_start.sh first."
exit 1
fi
START_TIME=$(cat /tmp/sysmon_start_time.txt)
END_TIME=$(date --iso-8601=seconds)
NOW=$(date "+%Y%m%d_%H%M%S")
OUTPUT="syslog_${NOW}.xml"
echo "[+] Saving all logs to $OUTPUT"
{
echo '<?xml version="1.0" encoding="UTF-8"?>'
echo "<SysmonLogs>"
journalctl -u sysmon --since "$START_TIME" --until "$END_TIME" --no-pager | \
while read -r line; do
if [ -n "$line" ]; then
ESCAPED=$(echo "$line" | sed 's/&/\&/g; s/</\</g; s/>/\>/g')
echo " <Event>$ESCAPED</Event>"
fi
done
echo "</SysmonLogs>"
} > "$OUTPUT"
echo "[✓] Full log saved to: $OUTPUT"
rm /tmp/sysmon_start_time.txt
특정 파일에 대한 로그를 쌓고 싶다면 sysmon_default.xml 필터 규칙을 변경하고 재시작 하면 된다.
(/usr/bin/python3 파일과 연관된 모든 분석 필터 예시)
<Sysmon schemaversion="4.20">
<EventFiltering>
<ProcessCreate onmatch="include">
<Image condition="is">/usr/bin/python3</Image>
<ParentImage condition="is">/usr/bin/python3</ParentImage>
<CommandLine condition="contains">python3</CommandLine>
</ProcessCreate>
<FileCreate onmatch="include">
<Image condition="is">/usr/bin/python3</Image>
</FileCreate>
<NetworkConnect onmatch="include">
<Image condition="is">/usr/bin/python3</Image>
</NetworkConnect>
<ProcessTerminate onmatch="exclude"/>
<ImageLoad onmatch="exclude"/>
<DriverLoad onmatch="exclude"/>
<FileCreateTime onmatch="exclude"/>
<FileDelete onmatch="exclude"/>
<PipeEvent onmatch="exclude"/>
<ClipboardChange onmatch="exclude"/>
<CreateRemoteThread onmatch="exclude"/>
<ProcessAccess onmatch="exclude"/>
</EventFiltering>
</Sysmon>
필터 적용 확인은 'sudo sysmon -c' 명령을 주면 된다.

현재 지원하는 버전의 XML 스키마 필드를 확인하고 싶다면 아래와 같은 명령어를 치면 된다.
sudo sysmon -s > sysmon_schema.xml
'분석 TIP > 동적분석' 카테고리의 다른 글
dnSpy의 Analyzer 기능 (0) | 2025.04.25 |
---|---|
쉘코드 디버거로 분석하기 (0) | 2025.04.14 |
IDA와 Debugger 주소 매칭 (0) | 2025.04.11 |
IDA를 통해 리눅스 원격 elf 파일 디버깅 (0) | 2025.03.31 |
Sysmon 통한 윈도우 동적 분석 (0) | 2025.03.26 |