이전 글에서 다룬 find 명령어의 기본 활용법에 이어, 침해사고분석에서 매우 중요한 MAC Time의 개념과 find 명령어 사용 시 주의해야 할 사항들에 대해 자세히 알아보겠습니다.
◎ MAC Time의 개념과 침해사고분석에서의 중요성
- MAC Time이란?
> MAC Time은 파일 시스템 메타데이터의 일종으로, 컴퓨터 파일과 관련된 특정 이벤트가 가장 최근에 발생한 시점을 기록합니다.
> MAC은 다음 세 가지 시간 정보의 약어입니다:
- M (Modified Time, mtime): 파일의 내용이 마지막으로 수정된 시간
- A (Access Time, atime): 파일에 마지막으로 접근한 시간
- C (Change Time, ctime): 파일의 메타데이터가 마지막으로 변경된 시간
> 일부 파일 시스템에서는 B (Birth Time, btime) 또는 crtime이라고 불리는 파일 생성 시간도 추가로 기록하여 MACB Time이라고 부르기도 합니다.
- 각 시간 정보의 정확한 의미
> 많은 사람들이 ctime을 "Create Time(생성 시간)"으로 잘못 이해하고 있으나, 이는 정확하지 않습니다. 리눅스/유닉스 시스템에서 각 시간의 정확한 의미는 다음과 같습니다:
- mtime (Modify Time)
> 파일의 데이터가 수정되었을 때 갱신됩니다
> 파일 내용을 변경하면 mtime이 변경되며, 동시에 ctime도 변경됩니다
> 파일 크기가 변경되면 이는 메타데이터 변경에 해당하므로 ctime도 함께 갱신됩니다
- atime (Access Time)
> 파일이 읽혀지거나 실행될 때마다 갱신됩니다
> cat, tail, vi, grep 등의 명령어로 파일에 접근할 경우 갱신됩니다
> 성능상의 이유로 많은 시스템에서 atime 갱신을 비활성화하는 경우가 많습니다
- ctime (Change Time)
> 파일의 inode 정보(메타데이터)가 변경될 때 갱신됩니다
> 권한 변경(chmod), 소유자 변경(chown), 파일 내용 수정 등이 발생할 때 갱신됩니다
> 주의: ctime은 파일 생성 시간이 아닙니다
◎ 침해사고분석에서 MAC Time의 활용
- 침해사고분석에서 MAC Time은 공격자의 행동 패턴을 시간순으로 재구성하는 타임라인 분석의 핵심 요소입니다. 이를 통해 다음과 같은 분석이 가능합니다:
> 공격 시점 추정: 특정 시점에 수정되거나 생성된 파일들을 분석하여 공격 발생 시점을 파악
> 악성코드 활동 추적: 악성코드가 생성하거나 수정한 파일들의 시간 정보를 통한 감염 경로 추적
> 공격자 행위 재구성: 파일 접근, 수정, 권한 변경 등의 시간 순서를 통한 공격 과정 재현
◎ find 명령어 사용 시 주의사항: ctime과 atime의 관계
- ctime 사용 시 주의사항
> 침해사고분석에서 find 명령어를 사용할 때 가장 주의해야 할 점은 ctime을 이용한 검색이 atime을 변경시킬 수 있다는 것입니다. 이는 다음과 같은 이유 때문입니다:
- 파일 접근에 의한 atime 변경: find 명령어가 파일의 메타데이터를 읽기 위해 파일에 접근하면서 atime이 변경될 수 있습니다
- 증거 훼손 위험: 원본 파일의 시간 정보가 변경되면 forensic evidence의 무결성이 손상됩니다
- 타임라인 분석 오류: 변경된 atime으로 인해 잘못된 타임라인이 구성될 수 있습니다
- 실제 예제를 통한 설명
다음은 find 명령어 사용 시 시간 정보 변경을 보여주는 예제입니다:
| 1. 테스트 파일 생성 # echo "test content" > test_file.txt 2. 초기 MAC Time 확인 #stat test_file.txt |
출력 결과:
| Access: 2023-12-15 10:30:15.123456789 +0900 Modify: 2023-12-15 10:30:15.123456789 +0900 Change: 2023-12-15 10:30:15.123456789 +0900 |
| 3. find 명령어로 ctime 기반 검색 실행 # find . -name "test_file.txt" -ctime -1 4. 검색 후 MAC Time 재확인 # stat test_file.txt |
출력 결과:
| Access: 2023-12-15 10:35:22.987654321 +0900 # atime이 변경됨! Modify: 2023-12-15 10:30:15.123456789 +0900 Change: 2023-12-15 10:30:15.123456789 +0900 |
- 침해사고분석을 위한 안전한 find 사용법
1. mtime 우선 사용
ctime 대신 mtime을 사용하여 파일 접근을 최소화합니다:
| 위험한 방법 (ctime 사용) # find /var/log -ctime -7 # atime 변경 위험 안전한 방법 (mtime 사용) # find /var/log -mtime -7 # 파일 내용 수정 시간 기준 |
2. noatime 옵션 활용
파일 시스템을 noatime 옵션으로 마운트하여 atime 갱신을 방지합니다:
| 파일 시스템을 noatime으로 마운트 # mount -o remount,noatime /evidence_partition 또는 특정 디렉토리를 바인드 마운트 # mount --bind -o noatime /evidence /mnt/safe_evidence |
3. 읽기 전용 모드 활용
증거 보전을 위해 읽기 전용으로 마운트합니다:
| 읽기 전용으로 마운트 # mount -o ro,noatime /dev/sdb1 /mnt/evidence find 명령어 실행 # find /mnt/evidence -name "*.log" -mtime -5 |
4. 포렌식 이미징 후 분석
원본 시스템 대신 포렌식 이미지에서 분석을 수행합니다:
| dd를 이용한 포렌식 이미징 # dd if=/dev/sdb of=/case/evidence.img bs=64K conv=noerror,sync 이미지 마운트 후 분석 # mount -o ro,loop,noatime /case/evidence.img /mnt/analysis # find /mnt/analysis -type f -mtime -3 |
- 침해사고분석을 위한 MAC Time 검색 예제
1. 안전한 최근 수정 파일 검색
| 최근 3일간 수정된 실행 파일 검색 (atime 보호) # mount -o remount,noatime / # find /usr/bin /usr/sbin -type f -executable -mtime -3 > recent_binaries.txt |
2. 특정 시점 전후 파일 분석
| 침해 의심 시점(2023-12-10) 전후 파일 검색 # find /var/www -type f -newermt '2025-04-09' ! -newermt '2025-04-11' -exec ls -la {} \; > suspicious_files.txt |
3. 웹쉘 탐지를 위한 안전한 검색
| 웹 디렉토리의 최근 수정 파일 중 PHP 파일 검색 # find /var/www -name "*.php" -mtime -7 -exec grep -l "eval\|base64_decode\|system" {} \; 2>/dev/null |
4. 시스템 파일 무결성 검사
| 시스템 바이너리의 최근 변경 사항 검색 # find /bin /sbin /usr/bin /usr/sbin -type f -mtime -30 -exec stat --format="%n %Y %y" {} \; | sort -k2 |
- MAC Time 분석 도구 활용
> 침해사고분석에서는 전문적인 MAC Time 분석 도구를 활용하는 것이 좋습니다:
| mactime 도구를 이용한 타임라인 생성 (Sleuth Kit) # fls -r -m / /dev/sdb1 > body_file.txt # mactime -b body_file.txt -d > timeline.csv 특정 기간의 타임라인 추출 # mactime -b body_file.txt -d 2023-12-10..2023-12-15 > incident_timeline.csv |
◎ 결론
침해사고분석에서 MAC Time은 공격자의 행위를 시간순으로 재구성하는 핵심 정보입니다. 그러나 find 명령어를 부주의하게 사용할 경우 atime이 변경되어 중요한 증거가 훼손될 수 있습니다.
따라서 침해사고분석 시에는 다음 원칙을 반드시 준수해야 합니다:
- ctime 대신 mtime 우선 사용: 파일 접근을 최소화하여 atime 변경 방지
- noatime 옵션 활용: 파일 시스템 마운트 시 atime 갱신 비활성화
- 읽기 전용 모드: 증거 보전을 위한 읽기 전용 마운트
- 포렌식 이미징: 원본 대신 복사본에서 분석 수행
이러한 주의사항을 준수하면서 find 명령어와 MAC Time 분석을 적절히 활용한다면, 더욱 정확하고 신뢰할 수 있는 침해사고 분석이 가능할 것입니다.
'IT > Linux' 카테고리의 다른 글
| [Linux] 리눅스 grep, egrep, fgrep 명령어 기본과 실전 활용 예제 (2) | 2025.06.14 |
|---|---|
| [Linux] 리눅스 nc(netcat), ncat, socat 명령어 기본과 실전 활용 예제 (1) | 2025.06.12 |
| [Linux] 리눅스 find 명령어 기본과 실전 활용 예제 (1) | 2025.06.12 |
| [Linux] 리눅스 tcpdump 명령어 기본과 실전 활용 예제 (0) | 2025.06.11 |
| [Linux] 리눅스 cat과 zcat 명령어 기본과 실전 활용 예제 (0) | 2025.06.11 |