정보 수집과 대응 방법
배너를 통한 정보 수집
서버의 응답을 통해 정보를 수집하는 방법을 배너 그래빙(banner grabbing)이라고 한다. 응답 헤더의 정보는 웹 브라우저에서 제공하는 개발자 도구(단축기 F12)를 이용하여 쉽게 확인할 수 있다.
기본 설치 파일을 통한 시스템 정보 수집
웹 어플리케이션을 운영하기 위한 웹 서버와 웹 프레임워크, 기타 구성 요소를 설치할 때 기본으로 설치되는 파일로 인해 호스트 환경에 대한 정보가 노출되는 경우가 있다.
웹 취약점 스캐닝
자동화된 프로그램을 이용하여 웹사이트의 여러 가지 정보를 수집하고 이 정보들을 바탕으로 어떤 취약점이 있는지 알아내는 과정이다.
서버 헤더 및 PHP, 아파치 등의 버전이 오래 되었다.
디렉터리 인덱싱
웹 서버의 잘못된 설정으로 웹 서버 디렉터리의 파일들이 노출되는 취약점이다. 디렉터리의 목록이 출력될 때 종요한 문서나 파일들이 원하지 않게 노출될 수 있다.
accounts.txt 나 heroes.xml 파일은 사용자 관련 정보를 포함하고 있기 때문에 절대 노출되어서는 안되는 파일들이다.
웹 애플리케이션 매핑
웹 애플리케이션의 메뉴와 링크를 따라가면서 어떤 URL과 파라미터들이 전송되는지 웹 애플리케이션의 구조를 파악하는 과정이다. 이 과정을 통해 웹 애플리케이션이 어떤 기능을 가지고 있는지, 각 기능은 어떻게 동작하는지 쉽게 이해할 수 있다.
①수동매핑
직접 웹 애플리케이션에 접속하여 각 메뉴를 확인하는 과정이다.
②크롤링(crawling)
매핑 과정을 자동으로 수행할 수 있다. 버프스위트 크롤링 기능을 활용하면 더 효과적인 보안 테스트 수행할 수 있는데 유료다. ('Target' 탭으로 이동 -> 스코프에 크롤링할 URL 추가 -> 'Dashboard' 탭으로 이동하여 New scan 시작)
③ DirBuster
URL 목록 파일을 사용하여 각 URL을 자동으로 입력해보는 방식으로 웹 애플리케이션의 구조를 파악한다. 목록 파일을 사용하여 정보를 찾는 기법을 브루트 포스 공격이라고 하는데, 주로 사용자의 패스워드를 찾는데 사용하는 기법이다.
④ robots.txt
구글과 네이버 같은 검색 엔진은 대부분 웹 로봇을 이용하여 웹사이트의 정보를 수집한다. 웹 로봇 역시 크롤러의 일종이다.
정보 수집 대응 방법
① 불필요한 정보 노출 삭제 : 반드시 필요한 경우 아니라면 서버 헤더에 제공되는 정보를 삭제하여 전송하는 것이 좋다.
② 스캐너/크롤러 차단 : 자동화된 프로그램으로부터 완전하게 방어하는 것은 불가능하지만 적절한 로깅과 모니터링을 통해 어느 정도 공격 시도를 탐지하고 차단할 수 있다. 공격이 의심되는 경우 IP 주소를 확인하여 차단하거나, user-agent 헤더의 값을 이용하여 차단할 수 있다.
③ 디렉터리 인덱싱 설정 제거 : 웹 서버의 설정을 변경하여 대응할 수 있다. 아파치의 경우 아파치 설정 파일의 Indexes 옵션을 제거하여 디렉터리 인덱싱으로부터 보호할 수 있다.