웹 서버 로그 침입 탐지 분석은(는) 무엇을 하나요?
사용 시기
- 보안 사고를 조사할 때 웹 서버 로그 분석이 필요한 경우
- 이 도메인에 대한 탐지 규칙 또는 위협 헌팅 쿼리를 구축할 때
- SOC 분석가가 해당 분석 유형에 대한 구조화된 절차가 필요할 때
- 관련 공격 기법에 대한 보안 모니터링 커버리지를 검증할 때
사전 요구 사항
- 보안 운영 개념 및 도구에 대한 친숙함
- 안전한 실행을 위한 테스트 또는 랩 환경 접근
- 필수 종속성이 설치된 Python 3.8+
- 모든 테스트 활동에 대한 적절한 권한
지침
- 종속성 설치:
pip install geoip2 user-agents
- Apache 또는 Nginx 기본 형식의 웹 서버 접근 로그를 수집합니다.
- 각 로그 항목을 파싱하여 다음 정보 추출: IP, 타임스탬프, 메서드, URI, 상태 코드, 응답 크기, 사용자 에이전트, 리퍼러
- 탐지 규칙 적용:
- SQL 인젝션:
UNION SELECT, OR 1=1, ' OR ', 16진수 인코딩 패턴
- LFI/경로 탐색:
../, /etc/passwd, /proc/self, php://filter
- XSS:
<script>, javascript:, onerror=, onload=
- 스캐너 시그니처: nikto, sqlmap, dirbuster, gobuster, wfuzz 사용자 에이전트
- 무차별 대입: 5분 내 동일 IP에서 로그인 엔드포인트로 50회 이상의 POST 요청
- GeoIP 데이터로 보강하고 우선순위가 매겨진 결과 보고서를 생성합니다.
python scripts/agent.py --log-file /var/log/nginx/access.log --geoip-db GeoLite2-City.mmdb --output web_intrusion_report.json
예시
URI에서 SQLi 탐지
192.168.1.100 - - [15/Jan/2024:10:30:45 +0000] "GET /products?id=1' UNION SELECT username,password FROM users-- HTTP/1.1" 200 4532
스캐너 사용자 에이전트 탐지
Nikto/2.1.6, sqlmap/1.7, DirBuster-1.0-RC1, gobuster/3.1.0