상세 컨텐츠

본문 제목

웹 Access Log 분석 팁

사이버위협분석/침해사고분석

by 경험한사람 2024. 4. 28. 00:47

본문


웹쉘(Webshell) 파일 업로드 공격 로그분석 및 대응

 

 

  로그분석 포인트  

    1. 웹 로그 내 출발지IP가 기록되는지 확인

    2. 클라우스 서비스(AWS, CF 등)를 이용하는 경우  웹 서버 X-Forworded-For 설정을 하여야 리얼IP가 기록 됨.

    3. 공격으로 의심되는 로그가 확인 될 경우 해당 로그가 발생된 출발지IP 정보를 기준으로 로그를 재검색 한다.

특정(지정된) 문자가 포함된 파일 추출

1. 프로그램 실행화면
[그림1] astrogrep 실행 화면

2. 프로그램 다운로드
https://astrogrep.sourceforge.net/download/
  • 웹쉘 업로드 공격의 경우 접속로그를 시간순으로 확인하여 파일 업로드 발생된 취약점 포인트를 확인하여야 함.
  • POST Method 웹쉘의 경우 전송된 명령어 기록이 남지 않음
  • 업로드된 웹쉘을 탐지한 경우 해당 웹쉘내 포함된 문자열 패턴 등을 기준으로 동일 파일이 다른 디렉토리에 복사된것이 없는지 확인하여야 함.
  • 웹쉘이 업로드 될 경우 2차 공격을 위해 다른 디렉토리내 다른 웹쉘을 추가로 숨겨두는 경우가 있으므로, 침해가 발행된 날짜를 기준으로 해당일자 이후에 생성된 파일을 모두 전수 조사하여야 함.
    • Everything, 윈도우 탐색기 기능을 통해 "생성/수정일자"기준으로 검색 후 분석하여야 함.
    • PHP 환경의 경우 .htaccess 파일 변조를 통해 특정 확장자를 cgi로 실행가능하도록 설정 함.
    • 정상적인 웹페이지내 악성 코드를 추가로 삽입하여 위장된 파일을 찾아내기에 용이 함.
    • 해킹 완료 후 도박 및 광고용 웹페이지를 업로드하여 광고페이지로 활용하는 경우거 있음
  • 로그에 기록된 웹쉘 메서드 및 파라미터를 통해 침해 영향도를 분석 할 수 있음.
  • 웹쉘 파일은 세션연결(유지)가 아닌 Stateless 방식이므로 웹 프라우저를 통해 웹쉘을 삭제 할수 있음(선제 대응)
  • 웹 서버가 2대 이상일 경우 하나의 서버에만 업로드 되어있을수 있음
  • 응답코드(200, 404, 500 등)를 확인하여 공격 호출의 유효성을 판단 한다.
  • 리퍼러 정보를 이용하여 접근전 웹사이트 정보를 수집한다.

 

 

SQL인젝션 공격 로그분석 및 대응

 

  로그분석 포인트  

   1. 웹 로그 내 출발지 Real IP가 기록되는지 확인하자

    2. 클라우스 서비스(AWS Front, CloudFlare, Akamai 등)를 Proxy 형태로 구성된 경우 기본적으로 웹서버 내 출발지 IP 정보가

         클라우드 서비스 IP기록되므로 침해사고 발생시 실제 공격지 IP추적이 불가능 하다.

    3. 위와 같은 서비스 구성의 경우 웹 서버 환경설정을 변경하여 Proxy 서버를 접속한 IP를 추가적으로 표기하는

         X-Forworded-For (XFF)설정을 적용하여야 한다

               ※ X-Forwarded-For 헤더 : 클라이언트와 서버 간의 HTTP 통신에서 사용되는 표준 헤더 중 하나입니다.

                이 헤더는 클라이언트가 서버에 요청을 보낼 때 클라이언트의 실제 IP 주소를 서버에 전달하는 데 사용됩니다. 일반적으로

                이 헤더는 웹 서버나 리버스 프록시 서버에서 클라이언트의 IP 주소를 식별하는 데 사용된다.

IIS(인터넷 정보 서비스) 웹 서버 설정 기준

1. 로그파일 형식
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status X-Forwarded-For

2. 웹 로그 기록 예)
2024-04-28 12:00:00 203.0.113.5 GET /example-page - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/80.0.3987.163+Safari/537.36 200 0 0 203.0.113.5, 198.51.100.1

3. 로그파일 필드 설명

   - date: 요청이 발생한 날짜 (yyyy-MM-dd 형식)
   - time: 요청이 발생한 시간 (HH:mm:ss 형식)
   - s-ip: 서버의 IP 주소
   - cs-method: 클라이언트 요청의 HTTP 메서드 (예: GET, POST)
   - cs-uri-stem: 요청된 리소스의 경로 부분 (URL에서 호스트 이름 및 쿼리 문자열을 제외한 부분)
   - cs-uri-query: 요청된 리소스의 쿼리 문자열 부분 s-port: 서버의 포트 번호
   - cs-username: 클라이언트의 인증된 사용자 이름 (일반적으로 익명으로 설정되어 있음)
   - c-ip: 클라이언트의 IP 주소 cs(User-Agent): 클라이언트의
   - User-Agent 헤더 값 (클라이언트의 브라우저 및 버전 정보 등)
   - sc-status: 서버의 HTTP 응답 상태 코드
   - sc-substatus: 상태 코드의 추가 정보
   - sc-win32-status: Windows의 HTTP 상태 코드
   - time-taken: 요청이 처리되는 데 걸린 시간(밀리초 단위)
  • 공격으로 의심되는 로그가 확인 될 경우 해당 로그가 발생된 출발지IP 정보를 기준으로 로그를 재검색하여 공격의 전체적은 흐름을 파악해야 한다.
  • 단, 공격자 IP가 다수일수 있으므로 전체 로그를 꼼꼼히 점검하여야 한다.
  • 리퍼러(Referrer) 정보를 확인하여 공격자가 어떤 사이트를 통해 접속했는지를 파악할 수 있다
    2024-04-28 12:00:00 203.0.113.5 GET /example-page - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/80.0.3987.163+Safari/537.36 https://www.example.com/landing-page 200 0 0

  • 웹쉘 업로드 공격의 경우 접속 로그를 시간순으로 정렬하여 파일 업로드 발생된 취약점 포인트를 파악하여야 한다.
  • POST Method 웹쉘의 경우 데이터가 전송되므로 웹쉘을 통해 전송된 명령어를 확인 할 수 없다.
    203.0.113.5 - - [28/Apr/2024:12:00:00 +0000] "POST /webshell.php HTTP/1.1" 200 556 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"

  • 웹 서버 Default 로그설정은 HTTP POST Method 데이터는 기록되지 않지만 남기도록 설정은 가능하다
  • http://coffeenix.net/board_view.php?cata_code=3&bd_code=1745&bpage=
  • 기존 대비 로그량이 많으므로 저장 공간 확보가 필요하다
  • SQL인젝션 공격을 통해 실제 웹 로그에 기록된 실제 쿼리된 테이블, 컬럼 등 조건문을 분석하면 유출 범위를 파악할수 있다
    203.0.113.5 - - [28/Apr/2024:12:00:00 +0000] "GET /product?id=1 UNION SELECT 1,username,password FROM users WHERE id=1-- HTTP/1.1" 200 556 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"

  • 실제 사용된 공격 쿼리 실제 DB의 레코드 번호와 비교하여 유출 범위를 정확히 파악해야 한다.
  • 웹 Access Log에는 호출된 쿼리만 기록되어있으나, 에러로그에는 사용자 브라우저로 리턴된 결과값 일부를 확인 할 수 있으니 필수적으로 확인하여야 한다.

이상.  끝.

'사이버위협분석 > 침해사고분석' 카테고리의 다른 글

윈도우 이벤트 로그 분석  (0) 2024.04.28
시스템 침해사고 분석 팁  (0) 2024.04.28

관련글 더보기