[침해사고분석] 웹 로그 분석하기 - 2
지난 포스팅에서는 웹로그를 바라보는 관점과 필터링 기술에 대해 간략하게 다루어 보았다.
원래는 글 하나로 끝내려고 했지만, 뭔가 아쉬워서 하나를 더 작성해보려고 하는데 이번 포스팅에서는 웹 로그 형태 그 자체에 대해서 한번 다루어보려고 한다.
웹 로그는 크게 CLF(Common Log Format)과 W3C Extended Log Format(IIS 전용) 그리고 json 형태 웹 로그가 있다. 가장 많이 사용되는 것은 당연히 CLF 형태이고, 그 다음이 W3C이다. json 형태는 한 번도 본적이 없다.
1. 웹 로그 포맷
웹 로그에는 IP, Timestamp, Http method, URL, Response code, Response Byte, referrer, agent 등 다양한 데이터가 기록된다.
1-1. CLF 웹 로그 포맷
다음은 CLF 웹 로그의 예시다
웹 로그가 어떤 형태로 기록될지는 /etc/apache2/apach2.conf 파일에 정의되어 있다.
필자는 기본 설정을 사용하고 있는데, LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined 가 access_log에 저장되는 형식이다. GPT에 의하면 메타문자의 상세 의미는 다음과 같다.
1-2. W3C 웹로그 포맷
w3c는 CLF보다 상대적으로 적은데 그 이유는 윈도우 서버가 그만큼 적게 사용되기 때문일 것이다. (유료 이슈)
그렇지만 CLF보다 다양한 필드를 지정할 수 있기 때문에 좀 더 많은 정보를 기록할 수 있다는 장점이 있다. (그렇지만 업체들은 항상 기본설정으로 쓴다)
분석 요령은 CLF와 크게 다를 것이 없으나, 웹 로그 파일 첫 줄과 두 번째 줄에는 항상 버전, 웹 로그 파일 생성 일시가 기록되기 때문에 코드를 작성한다면 이를 다루어줄 수 있는 코드나 예외 처리가 필요할 것이다.
* IIS 웹 서버의 특징
IIS 웹 서버는 특이하게도 asp, aspx, ashx, asmx, vb, cs 등 코드가 실행이 가능하다. 따라서 다양한 코드를 탐지할 수 있는 룰이 필요하다.
그리고 여기에는 또 한 가지 중요한 분석포인트가 있다. aspx는 최초 실행 전 ASP.NET에 의해 컴파일이 된다는 것인데, 컴파일 후 서버 컴퓨터에 dll 형태로 저장된다. 또한 pdb 파일이 존재할수도 있다. 따라서 $MFT 등에서 컴파일된 흔적을 발견할수 있다.
다음은 IIS 웹 서버에서 실행할 수 있는 파일들이다.
1-3. 웹로그 분석에 대한 인사이트
지난 시간에 필자가 바이트 컬럼으로 SQLI 공격의 성공 여부를 추정해볼 수 있다고 했던 말 기억하는가? 그것 외에도 생각해볼 거리가 조금 더 있다.
단기간에 404 응답이 많이 있다면 어떤 의미로 해석을 해볼 수 있을까? 상황에 따라 다르겠지만 자동화된 도구를 사용한 디렉토리 스캔 공격일 확률이 높을 것이다. 따라서 해당 IP를 필터링 해본다면 공격자를 파악하는데 도움이 될 것이다.
또한 400, 403, 406, 500번대 요청이 많다면? 자동화된 도구를 사용한 SQLI 공격일 확률이 높을 것이다.
IP는 다르지만, 서버에 존재하는 악성파일에 접근한 기록이 발견되었다. 그런데 이 때 referrer 기록이 없이 단 한번에 접속했다. 이런 경우는? 공격자가 또다른 IP를 사용해서 접근했을 가능성이 있다.