구글 검색엔진을 이용한 정보유출 방지
1. 검색엔진 해킹의 특징
2. 구글 검색엔진에 대하여
3. 구글 검색엔진의 연산자
4. 구글을 이용한 침투테스트
5. 구글 해킹 방어
참고자료
Google Hacking Database(http://johnny.ihackstuff.com)
구글해킹, 2005. 6, 에이콘출판
마이크로소프트웨어 실전강의실
구글 도움말(http://www.google.com/help/operators.html)
- 특정 대상에 대한 정보 수집
- 공격 대상 회사의 서버는? 서버 IP주소는? 서버가 가지고 있는 취약점은?
- 특정 공격에 취약한 대상 찾기
- 공격자가 가지고 있는 OO공격코드의 영향을 받는 서버는?
- 사회 공학
- 네트워크 관리자의 이메일 주소와 전화번호는? 개인정보 담당 직원의 이름은?
- 공격 대상이 전혀 모르는 상태에서 대상에 대한 정보수집 가능
- 해킹이 검색엔진을 통헤 이루어지기 때문에 실제 공격 대상으로 단 하나의 패킷도 보내지 않고 공격 대상에 대한 정보를 수집할 수 있다. 그리고 검색엔진은 자신이 수집한 페이지의 사본을 저장하기 때문에 공격 대상 웹 페이지가 삭제되었거나 페이지로의 링크가 제거된 이후에도 검색이 가능
- 어렵지 않다
- 웹브라우저만 있으면 가능
- 공격자의 익명성 보장
- 공격자가 검색엔진만 가지고 정보를 수집하기 때문에 공격자의 익명성이 보장될 수 있음. 게다가 프록시 서버나 토르와 같은 IP주소를 은닉하는 방법을 사용하면 공격자는 자신의 정체를 더욱 숨길 수 있음
- 공격 대상이 매우 많다
- 현재 많은 사람들이 인터넷에서 개인적 용도로 웹을 사용하고 있다. 이런 사용자가 단 1시간 동안 자료를 다운로드 할 웹서버를 열어놓았다 하더라도 그 기간 동안 검색엔진이 그 웹 서버에 접근해서 자료를 긁어갔을 가능성이 있으며, 웹 애플리케이션과 네트워크 장비에서 제공하는 웹 인터페이스 역시 검색엔진의 수집 대상이 될 수 있다.
2. 구글 검색엔진에 대하여
- 대소문자 구분을 하지 않음
- 구글 검색 창에 입력하는 요청문은 대소문자 구분을 하지 않기 때문에 Apple, aPple, ApPle 모두 동일하게 취급
- 와일드카드 문자
- 구글에서 와일드 카드 문자는 *로, 이것은 임의의 단어 1개와 대응된다
- 자동 단어 확장
- 구글은 때때로 이용자가 입력한 단어뿐만 아니라 그 단어와 관련된 다른 단어를 검색에 포함시킨다. 예를 들어 'pet lemur dietary needs'라는 검색어를 입력했을 때 구글은 'pet lemur diet needs'라는 검색어를 포함하는 페이지까지 찾는다. 그 이유는 dietary의 약자가 diet이기 때문
- 일부 단어 무시
- 구글은 요청문 중 where나 how, the와 같이 흔한 단어를 검색에서 제외한다
- 10단어 제한
- 구글은 검색 요청문의 크기를 10단어로 제한한다. 10개보다 더 많은 단어를 입력해야 하는 경우에는 와일드카드 문자를 적절히 이용해야 한다.
- 구글 검색은 요청문에 입력하는 단어를 개별적으로 처리하는지, 아니면 하나로 묶어서 처리하는지에 따라 단어 검색과 구 검색으로 나뉜다. 단어 검색이란 'famous actor brad'와 같이 입력하는 단어들간에 연관관계가 없는 것을 의미한다. 이 요청문을 구글에서 검색하면 famous와 actor와 brad라는 단어의 순서에 관계없이 단순히 이들 단어를 포함한 페이지가 결과로 나온다. 그리고 때때로 이들 단어 중 일부만을 포함한 페이지가 결과로 나온다.
- 이와 반대로 구 검색이란 "Google hacker"와 같이 단어들을 따옴표로 묶은 것이다. 따옴표에 의해 이 단어는 하나의 구로 묶였기 때문에 이 요청문을 구글에서 검색하면 정확히 Google hacker라는 구를 포함한 웹 페이지만이 검색된다. 다른 검색 엔진과 마찬가지로 구글에서도 여러가지 연산자를 사용할 수 있다. 이러한 연산자는 구글 검색 결과를 좁혀서 원하는 결과를 빨리 찾는데 도움을 준다.
3. 구글 검색엔진의 연산자
- 구글 논리 연산자
- AND : 구글 요청문은 기본적으로 AND를 내포하고 있기 때문에 불필요함
- + : 그 다음에 나오는 단어를 반드시 포함시킴
- - : 그 다음에 나오는 단어를 검색에서 제거
- | : OR 연산자
- () : 그룹핑(우선순위 부여)
- 구글 고급 연산자
- intitle : 페이지의 제목에서 검색
- allintitle : 연산자 뒤에 나온 모든 단어를 페이지의 제목에서 검색
- inurl : URL에서 검색
- allinurl : 연산자 뒤에 나온 모든 단어를 URL에서 검색
- site : 특정 사이트에서 검색
- filetype : 특정 종류의 파일 검색
- link : 다른 페이지로의 링크를 검색
- inanchor : 링크 문자열 내에서 검색
- cache : 캐시로 저장된 페이지를 보여줌
- numrange
- daterange
- info
- related
- author
- group
- insubject
4. 구글을 이용한 침투테스트
- 공격대상, 범위선정
- 사전 정보 수집
- 인트라넷/인사 페이지
- 네트워크 도움말 페이지
- 구인정보
- 이메일 정보 수집
- 회사 직원으로부터 엿듣기
- 네트워크 매핑
- 회사와 관련된 도메인 정보 수집
- 하위 도메인 정보 수집
- IP주소 정보 파악
- 호스트 연결성 파악(dead or alive)
- 포트 파악
- 도메인 정보 수집
- 네트워크 구조 파악
- 웹 기능이 활성화된 네트워크 장비 검색
- 네트워크 보고서 검색
- 취약점 파악, 공격코드 확보
- 공격 대상 서버의 취약점을 파악하는데 성공하여 그 취약점에 대한 공격 코드를 찾는 경우
- 이미 공격자가 가지고 있는 공격 코드에 해당하는 서버를 찾는 경우
5. 구글 해킹 방어
- 튼튼한 보안정책
- 웹 서버 보호
- 디렉토리 목록 기능 제거
- robots.txt 이용
- NOARCHIVE 태그 이용
- 웹 서버 소프트웨어 기본 페이지, 프로그램 제거
- 자신의 사이트 모의해킹
- 구글의 도움 얻기
- 구글 자동 URL 제거 페이지(http://services.google.com/urlconsole/controller)
- 새로운 robot.txt 지정
- META 태크로 캐시 제거
- 페이지 완전 제거
- 구글 뉴스그룹 사이트에 있는 글 제거
참고자료
Google Hacking Database(http://johnny.ihackstuff.com)
구글해킹, 2005. 6, 에이콘출판
마이크로소프트웨어 실전강의실
구글 도움말(http://www.google.com/help/operators.html)