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

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

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


포렌식 시작 전 준비

1. 로그 백업

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

``bash 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. 현재 시스템 상태 스냅샷

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


침입 경로 역추적 순서

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

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

`bash 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단계: 해당 시간대 로그 추출

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

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


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

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

`bash 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의 전체 행동 추적

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

시간순 정렬:

`bash 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단계: 웹셸 실행 로그 확인

웹셸을 통한 명령 실행:

`bash 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 접속 시도:

`bash 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 로그인 성공 → 권한 상승 시도 가능


파일 시스템 타임라인 복원

`bash 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 `


알려진 웹셸 패턴 검색

`bash 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 `


데이터 유출 확인

대용량 다운로드

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

10MB 이상 응답 찾기

DB 덤프 접근

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


공격자 정보 수집

IP 역추적

`bash whois 192.0.2.100 `

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

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


침입 이후 조치

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

정리

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