현재 전 세계적을 가장 널리 사용되고 있는 구글(google)의 무한한 가능성에 대해서 설명한 글이다.
우리가 가장 보편적으로 알고 있는 것이 검색엔진으로서의 구글(google)이다. 여기서는 검색엔진의 기능외에 다른 여러가지 기능을 살펴볼 것이다.
편의상 'GOOGLE' 대신 '구글' 이라고 부르겠다. http://google.com 에 접속해보자!!

기본 검색하기

주 기능이라고 할 수 있는 검색엔진으로서의 구글에 대해 알아보자!!

예를 들어, 'we are boy and girls' 라는 문장으로 검색을 하고 싶다. 이럴때는 검색창에 “(큰따옴표) 사이에 구문을 넣어주면 된다.

"we are boy and girls"

이런식으로 말이다.

구글에서 'the, on in…' 등과 같은 정관사들은 무시된다. 아마도 가장 많이 사용되기 때문에 정확한 검색을 위해서이다. 하지만 이런 단어들을 사용해서 검색하고 싶다면 앞에 '+' 를 붙여주면 된다. 예를 들어 'boy and girl' 를 검색한다면, and 는 무시된다. 이럴 때는

boy +and girl

해주면 된다. 꼭 정관사가 아니더라도 단어를 추가하고 싶을 때는 단어 바로 앞에 '+' 를 해주면 된다.

boy 가 들어간 문서중에서 girl 이 빠진 문서를 찾고 싶다면 어떻게 할까? 답은 간단하다.

boy -girl

빼고 싶은 단어앞에 '-' 를 해주면 된다.

고급 기능 사용하기

앞에서 설명한 기능으로도 왠만한 검색은 가능하다. 하지만, 좀더 효율적인 검색을 위해서는 지금부터 설명하는 옵션들을 사용해야 한다.
방법은 '명령어:검색어' 이런식으로 사용한다.

예를 들어 http://linux.hslilo.co.kr 에서 'hslilo' 가 들어가는 웹 사이트를 검색하고 싶다면,

inurl:hslilo

이런 식을 입력하면 된다.

만일 웹상에서 PDF 형식으로 된 OPENCABLE 제목의 파일을 찾는다면, 어떻게 해야 할까?

filetype:pdf opencable 

위와 같이 입력하면 된다.

개인적으로 유용한 기능인 듯하다. OPENCABLE 의 정의를 알고 싶을 때는,

define:opencable

위와 같이 입력하면 된다.
이외에도 다른 명령어들을 표로 정리했다.

명령어 설명
intitle 페이지의 제목에서 문자열을 찾는다. 다른 연산자와 잘 어울린다. 웹 문서, 뉴스그룹, 이미지, 뉴스 검색에 가장 적합하다
allintitle 연산자 뒤에 나온 모든 단어를 페이지 제목에서 찾는다. 다른 연산자나 검색 단어와 잘 어울리지 못한다. 웹 문서, 뉴스그룹, 이미지, 뉴스 검색에 가장 적합하다
inurl 문자열을 페이지의 URL 에서 찾는다. 다른 연산자와 잘 어울린다. 웹 문서와 이미지 검색에 가장 적합하다
allinurl 연산자 뒤에 나온 모든 단어를 페이지의 URL 에서 찾는다. 다른 연산자나 검색 단어와 잘 어울리지 못한다. 웹 문서, 뉴스그룹, 이미지 검색에 가장 적합하다
filetype 특정한 확장자를 가진 파일을 찾는다. ext 연산자와 동일한 역할을 한다. 추가적인 검색 단어를 필요로 한다. 다른 연산자와 잘 어울린다. 웹 문서와 뉴스그룹 검색에 가장 적합하다
allintext 입력한 모든 단어를 페이지의 본문에서 찾는다. 그다지 좋지않다(아예 사용하지 말아야 한다). allintext 에 관한 것은 모두 잊어버리자
site 검색 범위를 특정 사이트나 도메인으로 제한한다. 다른 연산자와 잘 어울린다. 단독으로 쓰일 수 있다. 웹문서, 뉴스구룹, 이미지 검색에 가장 적합하다
link 사이트나 URL 로의 링크를 찾는다. 다른 연산자나 검색 단어와 잘 어울린다. 웹 문서 검색에 가장 적합하다
inanchor 링크의 설명 문자열을 검색한다. 다른 연산자나 검색 단어와 잘 어울린다. 웹 문서, 이미지, 뉴스 검색에 가장 적합하다
daterange 특정 기간에 구글에 저장된 페이지를 찾는다. 다른 검색 단어가 필요하다. 다른 연산자나 검색 단어와 잘 어울린다. 웹 문서 검색에 가장 적합하다
numrange 특정 범위에 있는 숫자를 찾는다. 다른 연산자나 검색 단어와 잘 어울린다. 웹 문서 검색에 가장 적합하다
cache 구글의 캐시에 저장된 페이지를 보여준다. 다른 연산자나 검색 단어와 잘 어울리지 못한다. 웹 문서 검색에 가장 적합하다
info 페이지에 대한 요약 정보를 출력한다. 다른 연산자나 검색 단어와 잘 어울리지 못한다. 웹 문서 검색에 가장 적합하다
related 입력한 사이트나 URL 과 연관된 사이트를 보여준다. 다른 연산자나 검색 단어와 잘 어울리지 못한다. 웹 문서 검색에 가장 적합하다
phonebook, rphonebook, bphoneboot 집 전화번호나 회사 전화번호 목록을 보여준다. 다른 연산자나 검색 단어와 잘 어울리지 못한다. 웹 문서 검색에 가장 적합하다
author 뉴스 그룹 게시물의 작성자를 찾는다. 다른 연산자나 검색 단어와 잘 어울린다. 뉴스 그룹 검색에 가장 적합하다
group 뉴스 그룹 이름을 검색한다. 다른 연산자와 잘 어울린다. 뉴스 그룹 검색에 가장 적합하다
insubject 뉴스 그룹 게시물의 제목을 검색한다. 다른 연산자나 검색단어와 잘 어울린다. 뉴스 그룹 검색에 가장 적합하다
msgid 메시지 ID 를 통해 뉴스 그룹 게시물을 찾는다. 다른 연산자나 검색단어와 잘 어울린다. 뉴스 그룹 검색에 가장 적합하다
stocks 기업의 티커/ticker 코드에 대한 야후 Finance 주식 정보를 보여준다. 다른 연산자나 검색 단어와 어울리지 못한다. 웹 문서 검색에 가장 적합하다
define 단어나 구/phrase 의 다양한 정의를 보여준다. 다른 연산자나 검색단어와 잘 어울리지 못한다. 웹 문서 검색에 가장 적합하다

해킹을 위한 기본

여기서는 구글을 이용해서 해킹을 하기위한 아주 기본적인 명령들을 설명한다.
웹서버에 .html 이나, .php 파일이 없을 경우 디렉토리를 보여주는 경우가 있다. 이 것은 보안상으로 매우 좋지 않다. 이런 사이트들만을 검색할 수 있다.

intitle:index.of "parent directory"

이번에는 특정 디렉토리를 찾아보자! 여기서는 src 라는 디렉토리를 찾아보도록 하겠다.

intitle:index.of inurl:src

이번에는 좀 더 구체적으로 특정 파일명을 찾아보도록 하겠다. 예를 들어 .bash_profile 을 찾아보겠다.

intitle:index.of .bash_profile

단순 핵심 검색어들

여기서는 단순하면서도, 원하는 정보를 바로 찾을 수 있는 검색어들을 설명한다.

  1. site 연산자는 구글이 지금까지 공격 대상에 대해 수집한 정보를 찾을 때 매우 유용하다.
  2. 이 연산자와 여기서 소개한 여러 다른 요청문을 결합하면 검색 범위를 좁힐 수 있다.
  1. 아파치 디렉토리 목록을 찾는 데 유용하다.
  2. 디렉토리 목록은 공격자에게 매우 많은 정보를 제공한다.
  1. 에러 메세지는 거의 모든 상황에서 유용한 정보를 제공한다.
  2. 때때로 경고 메세지가 공격대상 시스템의 내부에서 일어나고 있는 상황을 이해하기 위한 단서를 제공한다.
  1. 이 요청문은 로그인 포털을 매우 효율적으로 찾는다.
  2. 사용자 이름과 도움말을 찾을 때도 쓰일 수 있다.
  1. 사용자 이름 수집을 위해 가장 많이 쓰이는 요청문 중 하나다.
  2. 이 요청문으로 사용자 이름을 찾을 수 없다 하더라도 검색 결과를 자세히 살펴보면 공격자가 추후 공격에 이용할 수 있는 절차 정보가 들어 있을 가능성이 있다.
  1. 인터넷에서 단어 password 를 어떤 형태로 사용하는지 알려준다.
  2. 로그인 절차, 비밀번호 변경 절차, 기관에서 사용 중인 비밀번호 정책의 실마리를 알려주는 문서를 찾는다.
  1. 사이트 관리자를 지칭하는 가장 유명한 두 단어를 사용하는 이 요청문은 관리자 정보 뿐만아니라 문제해결 절차(관리자에게 연락하는 법)와 관리자 로그인 포털 정보까지 찾을 수 있다.
  1. 이 요청문이 site 연산자와 결합되면 대상 사이트에서 가장 많이 사용하는 파일들을 제거하고 남은 특수하가도 흥미로운 문서를 찾을 수 있다.
  2. 대상 사이트 별로 추가적으로 제거해야 할 파일 확장자를 이 요청문에 추가하는 것이 좋다.
  1. 이 요청문은 백업/임시 파일과 디렉토리를 찾는다.
  1. 이 요청문은 인트라넷 사이트(일반 대중이 접근하지 못한다고 생각하는)와 헬프 데스크 연락 정보/문제 해결절차를 찾는다.

가장 강력한 기능 구글 API

나의 생각에 구글이 기존의 검색엔진과 다른 점이 있다면 바로 이것이라고 생각한다. 구글에서는 자체 API를 제공한다. 이 것을 사용해서 구글에서 특정한 검색 결과를 받아올 수 있거나, 서비스를 프로그램에서 연동해서 사용할 수 있다. 실로 놀라운 기능이라 할 수 있겠다.
여기서는 간단한 검색 페이지의 숫자를 출력하는 프로그램을 살펴보도록 하겠다. 현재, C, C++, JAVA, C#, PYTHON, PERL 등 여러가지 개발언어로 사용가능하다. 다음은 PERL 로 된 프로그램이다. 파일 이름은 google_perl.pl 이다.

#!/usr/bin/perl -w
use IO::Socket;
 
$query = '/search?hl=en&q=dog';           // 검색 단어. 여기서는 dog 를 사용했다!!
$server = 'www.google.com';               // 접속할 사이트. 구글이다!!
$port = 80;                               // 웹 서버 포트인 80이다!!
 
sub socketInit()
{
	$socket = IO::Socket::INET->new(
	Proto => 'tcp',
	PeerAddr => $server,
	PeerPort => $port,
	Timeout => 10,
	);
 
	unless($socket)
	{
	die("could not connect to $server:$port");
	}
 
	$socket->autoflush(1);
 
}
 
sub sendQuery($)
{
	my ($myquery) = @_;
	print $socket ("Get $myquery HTTP/1.0\n\n");
	while($line =<$socket>)
	{
		if($line =~ /Results.* of\sabout/)
		{
			return $line;
		}
	}
 
}
 
sub getTotalHits($)
{
	my ($ourline) = @_;
	$hits ="";
	$index = index($ourline, "of about");
	$str = substr($ourline, $index, 30);
	@buf = split(//,$str);
 
		for($i = 0; $i < 30; $i++)
		{
			if($buf[$i] =~ /[0-9]/)
			{
				$hits = $hits.$buf[$i];
			}
		}
	return $hits;
}
 
socketInit();
$string = sendQuery($query);
$totalhits = getTotalHits($string);
 
print ($totalhits);	
}}}
이제 실행해보자!!
{{{
#perl google_perl.pl
149000000

결과값으로 '149000000' 라는 값이 출력되었다. 값이 맞는지 직접 브라우저를 열어 확인해보자!! 정확히 일치할 것이다.
위에서 알아본 것은 아주 간단한 프로그램이다. 이를 활용해서 여러가지 프로그램을 구현할 수 있다.

그 외의 것들

구글은 양날의 검이라 할 수 있겠다. 검색능력이 너무나 뛰어나 개인 신상 정보까지 알아낼 수 있고, 또한 해킹을 위한 도구로 사용되기도 한다.
구글 API 와 PERL 같은 스크립트 언어를 사용해서 우리가 원하는 작업을 할 수 있다.
만일 나의 신상정보가 구글에 등록되어 있다면, http://www.google.co.kr/intl/ko/remove.html 에서 삭제시킬 수 있다.
또한 자신의 웹 페이지에 robots.txt 파일을 작성하면, 구글 봇(bot)이 자동 등록을 하지 않는다.

  • computer/security/구글_해킹하기.txt
  • Last modified: 3 years ago
  • by likewind