# 구글 도킹

우리가 흔히 사용하는 구글, 네이버, 덕덕고 같은 검색 엔진들은 인터넷을 돌아다니는 수 많은 크롤러들이 각 페이지들을 발견한 뒤, 링크를 걸어놓은 데이터베이스일 뿐이다. 회사 직원들이 실수로 올려놓은 문서나, 인터넷에 연결되면 안되는 서버들이 인터넷에 연결될 때 이 크롤러들이 방문한다면, 발견되서는 안되는 페이지들이나 파일들이 검색엔진에 링크가 되기도 한다.

구글 도킹 (Google Dorking)은 구글 검색 엔진의 고급 검색 기능을 활용하는 OSINT 기법을 일컫는다. 원래는 구글에만 해당되는 기법이였지만, 요새는 다른 검색 엔진의 고급 검색을 이용하는 방법도 구글 도킹이라고 한다. 구글 도킹에는 다양한 종류가 있지만, 가장 많이 사용되는 파라미터들은 다음과 같다.

| 파라미터     | 기능           | 예시                                                  |
| -------- | ------------ | --------------------------------------------------- |
| site     | 특정 도메인       | site:\*.example.com, site:www.example.com           |
| intitle  | 문서나 페이지의 타이틀 | intitle:login, intitle:vpn, intitle:authenticate    |
| filetype | 파일의 확장자      | filetype:pdf, filetype:docx, filetype:hwp           |
| intext   | 페이지안의 문자열    | intext:"Index of /admin", intext:"phpmyadmin"       |
| inurl    | URL안의 단어     | inurl:s3.amazonaws.com, inurl:ftp, inurl:web.config |

이 외에도 많은 파라미터들이 있고, 이는 레퍼런스 섹션에서 확인 가능하다.

파라미터안에 들어가는 값들은 AND 와 OR 같은 논리적 연산자와도 같이 쓰일 수 있다. 예를 들자면 "파일 이름에 입사지원서 가 들어가는 pdf 파일 혹은 docx 파일 모두 보여줘" 는 - `입사지원서 filetype:(pdf | docx)` 로 표기가 가능하다.

### 실습

이 페이지에서는 간단한 구글 도킹 예시를 알아볼 것이다. 좀 더 다양하고 복잡한 구글 도킹은 [exploit-db 레퍼런스](https://www.exploit-db.com/google-hacking-database)를 참고하면 된다.

다음의 시나리오를 가정해보자

> 고객사 A를 상대로 외부망 모의해킹을 진행하고 있다. 고객사 보안팀 팀장님께서는 "혹시 구글에 우리 회사의 기밀이나 비밀 문서들이 링크되어 있지는 않은가 불안하다." 라고 말씀하셨다. 모의해커로서 능동적으로 이를 알아본 뒤 보고하자.

위 시나리오를 기반으로 구글 도킹을 만든다면, 일단 "비밀" 혹은 "기밀"과 관련된 문서를 찾아야한다. 이런 문서들은 대부분 pdf, docx 등의 문서형식으로 저장되어 있다. 또한, 거짓 양성 결과를 줄이기 위해 양식 문서들이나 "계약서" 등의 문서들은 제외시키자.

그러면 다음의 구글 도킹이 만들어진다:

```
"<고객사 이름>" site:*.고객사.com filetype:( pdf | docx | xlsx | doc | xls ) 대외비|영업비밀보호|부정경쟁방지 -계약서 -서약서 -사직서 -요청서 -동의서 -기획서 -지원서 -법률
```

"고객사 이름" 이 들어가며, 고객사의 도메인 및 모든 서브 도메인 `*.고객사.com` 을 검색한 뒤, `pdf 혹은 docx 혹은 xlsx 혹은 doc 혹은 xls` 등의 문서 및 엑셀 파일을 찾는다. 해당 문서/엑셀 파일에 `대외비, 영업비밀보호, 부정경쟁방지` 등의 키워드가 들어가 있으면 좋고, 거짓 양성 결과를 줄이기 위해 양식 문서들에 자주 나오는 표현인 `계약서 서약서 사직서 요청서 동의서 기획서 지원서 법률` 등의 키워드들은 제외한다.

### 실습 2

위에서는 기밀/비밀 문서들을 상대로 하는 구글 도킹을 사용했지만, 구글 도킹은 초기 침투에 사용될 수도 있다. 잘못 설정되어 파일이나 설정 파일을 노출하고 있는 웹서버들을 찾기 위해 다음과 같은 구글 도킹을 사용할 수도 있다.

```
site:*.고객사.com intitle:"admin panel" OR intitle:"request password" intext:"email address"
```

위 구글 도킹은 고객사.com 과 모든 서브도메인 내의 페이지 타이틀에 "admin panel" 혹은 "request password" "email address"가 필요한 페이지들을 검색한다. 대부분 관리자 로그인 포탈 결과가 반환된다.

### 실습 3

초기 침투에서 o365나 공개된 Exchange 서버를 상대로 비밀번호 스프레이 공격을 하려면 타겟 기관의 유저 이름들이 필요하다. 이 또한 구글 도킹과 SNS를 이용해 알아낼 수 있다.

```
"연락주세요" | "연락 주세요" "@<고객사이름>.com" site:linkedin.com
"contact me at" "@<고객사이름>.com" site:linkedin.com "고객사" 
```

\---

이처럼 구글 도킹은 기밀/비밀 문서, 잘못 설정된 서버, 유저 이름 및 이메일 주소 등을 알아내기 위해 사용될 수 있다.

### 대응 방안

구글 도킹이 성공하려면 일단 중요한 정보가 인터넷에 공개되어 있어야 하고, 검색 엔진들의 크롤러가 이를 등록해야한다. 가장 좋은 대응 방안은 바로 공개되어선 안되는 정보들을 공개하지 않는 것이다.

하지만 기관의 입장에서 수천, 수만명의 직원들이 어떤 파일을 올리는지, 어떤 서버를 접속하는지, 어떤 페이지를 인터넷에 공개하는지, 어떤 SNS에서 어떤 회사 정보를 공개하고 있는지 기술적으로 파악하기는 매우 어렵다. 따라서 가장 추천하는 대응 방안은 바로 지속적인 모니터링이다.

요새는 OSINT나 다크웹 정보 수집을 자동화 한 뒤, 지속적으로 모니터링을 제공해주는 서비스나 솔루션들이 늘어나고 있다. 이들을 이용해도 좋을 것이다. 금전적으로 부담이 된다면 외부망 모의해킹 서비스를 적극적으로 이용한 뒤, 각 모의해커들에게 원하는 바를 정확히 얘기해주는 것 또한 좋다. 예를 들어 "OSINT를 통해 기밀/비밀 문서나 저희 회사 직원들이 공개한 사내 이메일 주소를 한 번 찾아봐주세요" 와 같은 요청은 모니터링에 큰 도움이 될 수 있다.

### 레퍼런스

{% embed url="https://gbhackers.com/latest-google-dorks-list/" %}

{% embed url="https://www.exploit-db.com/google-hacking-database" %}
