작은 메모장
향상된 타겟 정보 수집 본문
정보 수집의 필요성
해커들은 해킹을 하기 전 반드시 정보 수집 과정을 거친다.
이는 취약점을 찾으려는 버그 헌터들에게도 필수적인 과정이다.
정보 수집이라는 건 해킹 대상에 대한 정보 수집 문자 그대로의 의미를 뜻한다.
웹 서비스를 가정으로 이야기하면,
사용하고 있는 웹 프레임워크, 사용 언어, 구동되는 웹 페이지, 서버 구성 같이 프론트, 백엔드 상관없이 관계된 모든 정보를 수집하는 것이다.
정보 수집의 이유
정보 수집은 해커가 판단할 수 있는 범위를 늘려준다.
같은 정보를 획득하더라도 가치 유무와 사용 위치 등을 더 정확하게 판단할 수 있기 때문이다.
또한 정보 획득만 가지고 사용할 수 있는 취약점을 판단할 수 있다.
가령, 사용하고 있는 언어가 php라면, JSP, ASP등의 취약점은 테스트하지 않아도 된다.
또, 웹 프레임워크의 사용하고 있는 버전을 알아낸다면, 해당 프레임워크 버전의 알려진 CVE 취약점을 시도해보아도 되는 것이다.
수동 탐색
정보 수집의 가장 기초적인 형태로, 취약점을 찾기 전 가장 먼저 해봐야할 탐색 과정이다.
하는 법은 간단하다. 해킹할 대상을 분석하기 전, 해당 대상을 직접 사용해보는 것이다.
즉, 해당 대상의 기능을 알아내는 것이다.
수동 탐색의 가장 중요한 점이 있는데, 가능한 한 모든 페이지와 모든 기능들을 사용해보는 것이 중요하다.
평소에 사용하는 것처럼 메인페이지나 사용자 페이지만 접속해보는 것이 아니라,
해당 서비스가 제공하고 있는 "모든" 기능을 전부 사용해보는 것이다.
이걸 왜 하는가?
해당 기능을 전부 사용해봤다면, 그 서비스에 대한 이해도가 매우 높아지고,
해당 서비스가 대략적으로 어떤 구조로 되어있을지 예측 가능하게 된다.
또한, 사용했던 기능 중 공격 가능성이 있는 포인트를 하나하나 정리할 수 있게 된다.
구글 해킹
구글을 이용하여 해킹을 하기 위한 필요한 정보를 찾아주는 과정이다.
단순한 구글링을 통한 이미지나 동영상을 찾는 과정이 아닌, 구글이 제공하는 특정 기능을 이용하여 사이트의 정보를 탐색하는 것이다.
이 과정을 구글 해킹, 혹은 구글 도킹이라고 부른다.
이 과정에 가장 핵심이 되는 기술은 구글 검색 엔진, 구글 검색 엔진을 이용하여 특정 사이트의 원하는 정보를 찾는 것이다.
구글 검색 엔진을 이용하기 때문에, 구글 검색 엔진이 제공하는 필터링과 검색 연산자를 적극적으로 활용하여 검색한다.
연산자는 위와 같은 연산자가 존재하는데, 통상적으로 사용하는 연산자는 다음과 같다.
site, inurl, intitle, link, filetype, *(Wildcard), " "(큰따옴표)
가령, targetSystem.com이라는 도메인을 취약점 분석을 한다고 가정하자.
먼저, 검색 사이트 제한을 두기 위해 site:*.targetSystem.com의 연산자를 사용할 수 있다.
그런데, admin 사이트를 찾으려면, site:*.targetSystem.com inurl:admin의 연산자를 사용하면 된다.
패스워드 같은 크리덴셜 파일을 찾으려면, site:*.targetSystem.com ext:txt password의 연산자를 사용하면 된다.
이처럼 검색 연산자를 어떻게 사용하느냐에 따라서 검색 결과를 정밀하게, 그리고 정확하게 탐색할 수 있다.
이를 이용하여 생긴 취약점도 있는데, 바로 LFI 취약점이다.
검색어는 inurl:/etc/passwd root:x:0:0:root:/root:/bin/bash로 검색하면 되며, 해당 페이지의 쉘 권한을 획득할 수 있는 아주 심각한 취약점이다.
해당 검색어는 해당 도메인에 /etc/passwd라는 파일이 있으며, 그 내용에 root:x:0:0:root:/root:/bin/bash, 즉 passwd 파일의 root 권한 내용이 있는지를 확인하는 검색어다. 쉽게말해, 리눅스 패스워드 파일을 공개하고 있는 페이지를 찾는 것이다.
또, 디렉토리 리스팅 취약점도 확인가능하다.
검색어는 intitle:index of로 검색하면 되며, 도메인의 index 페이지를 검색할 수 있는 취약점이다.
위와같은 구글 해킹을 활용하는 웹 사이트도 생겼는데, 바로 GHDB(Google Hacking Database)다.
해당 사이트는 타겟에 대해 얻은 정보들을 검색해 활용 가능한 검색 구문을 제공한다.
Spidering
웹 스파이더링, 혹은 웹 크롤링은 웹 사이트의 정보를 수집하는 과정 중의 하나로, 사이트에서 확인할 수 있는 모든 페이지들을 모두 식별, 의미있는 정보를 전부 수집하는 것이다.
이 페이지 저 페이지를 계속 돌아다니면서 정보를 모아다니는게 거미같다고 해서 스파이더링이라고 한다.
스파이더링 툴, 즉 크롤링 툴에는 정말 많은 툴이 존재하지만 여기서는 ZAP을 알아보려고 한다.
ZAP은 프록시 툴로, 마치 Burp Suite와 비슷한 기능을 가지고 있으며, 프록시를 열어두고 요청하는 페이지가 프록시에 걸리면 그걸 분석하도록 만든 툴이다.
Burp Suite와는 다른점이라면 크롤링 기능도 탑재하고 있으며, 알려진 웹 취약점 스캐너로도 사용할 수 있다.
또한 ZAP은 오픈소스라 무료로 사용할 수 있다는게 장점이 된다.
ZAP에서 스파이더링을 사용하려면, <Tools> - <Spider>로 진입하면 된다.
창이 하나가 뜨면, Starting Point에 공격하길 원하는 도메인 주소를 입력하면 된다.
그러면 툴이 자동으로 도메인의 크롤링을 실행하여, 유의미한 정보를 페이지를 돌아다니며 찾아낸다.
S3 bucket 탐색
S3 bucket은 아마존 웹 서비스(AWS)의 DB 서비스다.
정식 명칭은 Simple Storage Service로, 이름대로 구축과 연결, 사용이 매우 간편한 것이 특징이다.
웹 개발자가 따로 DB를 구현하지 않고 S3를 이용하여 데이터를 관리하도록 만든 것이다.
이런 특성 때문에, 데이터 서버나 백업 서버로 사용되는 경우가 잦으며,
여기에 숨겨진 서버나 로그, 크리덴셜, 사용자 정보, 소스코드 등의 중요한 정보가 담겨있을 가능성이 매우 높다.
S3 버킷은 s3.amazonaws.com 혹은 amazonaws.com등의 특정 도메인을 가지고 있는 것이 특징이다.
따라서, 해당 타겟의 도메인과 함께 구글 해킹으로 아래와 같은 검색어를 입력하면 S3 버킷이 나올 가능성이 있다.
site:s3.amazonaws.com [Target] 또는 site:amazonaws.com [Target]
물론 이 과정은 상당히 귀찮기도 하고, 타겟과 도메인의 다양성 때문에 탐색하기가 여간 만만치 않다.
때문에 이 버킷 탐색을 자동을 탐색해주는 툴이 있는데 그것이 GrayhatWarfare이다.
큰 특징이 있다면 웹 기반의 툴인 것으로, 웹 브라우저로 접속하여 키워드와 함께 탐색이 가능하다.
또 다른 툴로는 Bucket Stream이라는 툴로, CT를 이용하여 탐색을 하는 것이 특징이다.
CT는 Certificate Transparency의 줄임말로, 인증서 투명성 로그를 뜻한다.
원래 신뢰할 수 없는 인증서를 들고 시스템에 침입하는 시도를 탐지하고 차단하는 것이 목적이나, 그 특성상 누구에게나 개방되어 있는 것이 특징이다.
따라서, 이를 이용하면 해당 사이트가 어떤 인증서를 제공하고 있는 지를 파악, 해당 인증서로 쉽게 S3 주소를 알아낼 수 있는 원리다.
Github Recon
Github Recon은 Recon(Recognition)이라는 의미 답게, Github에서 발견할 수 있는 정보를 수집하는 과정을 의미한다.
Git 플랫폼인 Github은 생각보다 다양한 직군이 사용하고 있다.
단순 개발자 뿐만 아니라 개발하곤 영 상관없는 타 직군의 사람들도 종종 포트폴리오 용도로 사용한다.
이 편의성 때문에, 개인 뿐만 아니라 기업 또한 이걸 사용하기도 한다.
Github은 레포지터리를 기준으로 프로젝트를 관리한다.
따라서 이 레포지터리 안에 개발자들이 온갖 중요한 정보(하드코딩된 크리덴셜 정보, 개발용 서버 주소)가 있을 가능성이 높으며, 까먹고 이걸 비공개하지 않는다면 이걸 이용하여 악용할 수 있는 것이다.
또한, 레포지토리 이슈 부분에서도 정보 유출 가능성이 높으며,
커밋 내역에서 버그를 해결한 방법을 가지고 이를 우회하는 방법을 생각할 수 있다.
제대로 해결했다면 문제가 없겠지만, 대충 넘어가거나 잘못된 해결법을 사용했다면 이를 이용할 수 있기 때문이다.
당연하게도 이 또한 자동화 도구가 존재한다.
Gitrob, TruffleHog가 대표적이며, 이 도구들을 활용하며 직접 탐색을 병행하면 효과적으로 레콘을 수행할 수 있다.
Domain Enumeration
Domain Enumeration은 타켓 도메인에 속한 감춰진 하위 도메인을 탐색하는 과정을 의미한다.
이 과정은 주로 도메인이 정해져 있기 보단, 여러 하위 도메인을 검사할 때 사용되는 과정이다.
가령, 하위 도메인을 검사하다보니 dev 서버가 발견되는 경우가 그 예시다.
Domain Enumeration을 수행하는 방법에는 여러가지가 있으며, 첫번째는 crt.sh를 사용하는 방법이다.
SAN(Subject Alternative Name)은 하나의 인증서로 여러 도메인을 등록하는 서비스다.
문제는 여기도 인증서를 다루는 만큼 CT를 검색할 수 있고, 이 SAN에 등록된 도메인을 확인할 수 있는 사이트가 crt.sh이다.
두 번째는 amass 툴을 이용하는 방법이다.
amass는 정보수집 도구로, emun 모드로 작동시키게 되면 서브도메인과 네트워크 매핑을 알아보기 쉽게 탐색해준다.
'KISA 사이버 보안 훈련 > 버그헌팅 실습 중급' 카테고리의 다른 글
Bug Bounty 사례 (0) | 2024.07.14 |
---|---|
Metasploit (0) | 2024.07.13 |
보안 기술 우회 (0) | 2024.07.12 |
어플리케이션 보안 이해 (0) | 2024.07.11 |
버그 헌팅이란? (0) | 2024.07.01 |