2014년 5월 2일 금요일

구글 검색엔진을 이용한 정보유출 방지

1. 검색엔진 해킹의 특징

  • 특정 대상에 대한 정보 수집
    • 공격 대상 회사의 서버는? 서버 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)

홈페이지 jQuery 라이브러리에서 CVE-2019-11358 취약점 패치 여부 확인 방법

현재 홈페이지에서 사용 중인 jQuery 라이브러리가 CVE-2019-11358 취약점 패치를 적용했는지 확인하는 방법은 다음과 같습니다. 1. jQuery 버전 확인 홈페이지 소스 코드를 확인하여 jQuery 라이브러리 버전을 직접 확인합니다. 웹 ...