← 블로그 목록
작성일: 2026-05-28 포렌식해킹auth.log

해킹 당한 후 로그 포렌식: 침입 경로 역추적 가이드

이미 서버가 해킹당한 경우, 로그 분석을 통해 언제, 어디서, 어떻게 침입했는지 역추적할 수 있습니다. 이 과정을 로그 포렌식(Log Forensics)이라고 하며, 재발 방지와 피해 범위 파악에 필수적입니다.


포렌식 시작 전 준비

1. 로그 백업

로그가 조작되거나 삭제될 수 있으므로 즉시 백업:

sudo tar -czf logs-backup-$(date +%Y%m%d-%H%M%S).tar.gz /var/log/nginx /var/log/apache2 /var/log/auth.log

2. 현재 시스템 상태 스냅샷

ps aux > processes.txt
netstat -tulpn > network.txt
crontab -l > crontab.txt
find /var/www -type f -mtime -7 > recent_files.txt

침입 경로 역추적 순서

1단계: 의심 파일 발견 시점 확인

해킹 발견 계기가 보통 웹셸(webshell)이나 악성 파일 발견입니다.

stat /var/www/html/suspicious.php

출력:

Modify: 2024-10-10 14:23:15
Access: 2024-10-10 14:23:20
Change: 2024-10-10 14:23:15

Modify 시각 = 2024-10-10 14:23:15 → 이 시간 전후 로그 집중 분석


2단계: 해당 시간대 로그 추출

awk '/10\/Oct\/2024:14:[01234]/' /var/log/nginx/access.log > attack_window.log

14시 00분~40분대 로그만 추출


3단계: 파일 업로드 시도 찾기

POST 요청 + 200 응답 + 큰 바이트:

grep 'POST' attack_window.log | grep ' 200 ' | awk '$10 > 1000'

의심 로그:

192.0.2.100 - - [10/Oct/2024:14:22:58 +0000] "POST /upload.php HTTP/1.1" 200 482 "-" "Mozilla/5.0"

4단계: 공격자 IP의 전체 행동 추적

grep '192.0.2.100' /var/log/nginx/access.log > attacker_activity.log

시간순 정렬:

sort -k4 attacker_activity.log

전형적인 공격 시나리오:

14:20:12  GET  /admin/upload.php         (파일 업로드 기능 탐색)
14:21:45  POST /admin/upload.php         (취약점 테스트)
14:22:58  POST /admin/upload.php         (웹셸 업로드 성공)
14:23:15  GET  /uploads/shell.php         (웹셸 실행 확인)
14:24:00  POST /uploads/shell.php         (명령 실행)

5단계: 웹셸 실행 로그 확인

웹셸을 통한 명령 실행:

grep 'shell.php' /var/log/nginx/access.log
192.0.2.100 - - [10/Oct/2024:14:24:00 +0000] "POST /uploads/shell.php HTTP/1.1" 200 1842
192.0.2.100 - - [10/Oct/2024:14:25:30 +0000] "POST /uploads/shell.php HTTP/1.1" 200 2341

POST 요청 → 명령 실행 중


auth.log에서 권한 상승 확인

웹셸 실행 후 SSH 접속 시도:

grep '192.0.2.100' /var/log/auth.log
Oct 10 14:30:00 server sshd[12345]: Failed password for root from 192.0.2.100 port 54321 ssh2
Oct 10 14:32:15 server sshd[12346]: Accepted password for www-data from 192.0.2.100 port 54322 ssh2

www-data 계정으로 SSH 로그인 성공 → 권한 상승 시도 가능


파일 시스템 타임라인 복원

find /var/www -type f -printf '%T@ %Tc %p\n' | sort -n | tail -50

최근 수정된 파일 50개 시간순 정렬:

1728567795 Wed Oct 10 14:23:15 2024 /var/www/html/uploads/shell.php
1728567800 Wed Oct 10 14:23:20 2024 /var/www/html/.htaccess

알려진 웹셸 패턴 검색

grep -r "eval(" /var/www/html/
grep -r "base64_decode" /var/www/html/
grep -r "system(" /var/www/html/ | grep -v "vendor"
grep -r "exec(" /var/www/html/ | grep -v "node_modules"

PHP 웹셸 시그니처:

<?php eval(base64_decode($_POST['cmd'])); ?>
<?php system($_GET['c']); ?>
<?php @eval($_POST[1]); ?>

데이터 유출 확인

대용량 다운로드

awk '$10 > 10000000 {print $1, $7, $10}' /var/log/nginx/access.log

10MB 이상 응답 찾기

DB 덤프 접근

grep -E "(\.sql|database|backup)" /var/log/nginx/access.log

공격자 정보 수집

IP 역추적

whois 192.0.2.100

연관 IP 찾기 (같은 서브넷)

awk '{print $1}' /var/log/nginx/access.log | grep '^192\.0\.2\.' | sort -u

침입 이후 조치

  1. 시스템 격리: 네트워크 차단, 서비스 중단
  2. 악성 파일 삭제: 웹셸, 백도어 제거
  3. 계정 비밀번호 변경: 모든 시스템 계정, DB 계정, API 키
  4. 보안 패치 적용: 침입에 사용된 취약점 패치
  5. 로그 장기 보관: 법적 증거로 활용 가능

정리

로그 포렌식은 악성 파일 발견 시각부터 역추적하여 최초 침입 지점을 찾는 과정입니다. POST 요청, 파일 업로드, 웹셸 실행, SSH 접속 시도 순서로 흔적을 따라가면 공격자의 전체 경로를 복원할 수 있습니다.