버그바운티/레드팀 Enumeration 방법론
버그바운티 또는 실전 레드티밍을 할 때 공통으로 쓰일만한 Enumeration 방법론입니다.
잘 알려진 방법론이고 4년 정도 지났기 때문에 여기서 새로운 기술은 추가하고 본인에게 맞는 방법론을 찾도록 합시다.
아래 예제 도메인을 기준으로 Enumeration을 시작합니다.
officedepot.com
business.officedepot.com
acquisitions & ASNs
crunchbase.com
오피스디포 라는 회사가 어떤 회사를 가지고 있는지 상관관계를 확인 할 수 있습니다.

너무 옛날거는 제치고, 최신 것만 가져옵니다.
officemax.com
www.complete-office.com
www.compucom.com

ASNs 는 레퍼런스 넘버로, IP ranges를 모두 검색할 수 있습니다.
search : office depot / compucom / …

ASN number : 14898

europe 서버처럼 검색 결과가 애매한건 제외합니다.
amass intel --asn 14898
amass는 많은 것을 긁어옵니다.
1. 모든 IP를 확인합니다.
2. https respond 도 확인하여 살아있는 도메인인지 확인합니다.
3. Certificates 에서 데이터를 가져옵니다.
4. DNS brute forcing
5. archives 까지(wayback 뿐만 아니라 다른 archives도 활용합니다.)
총집합하여 긁어오는 전체적인 프레임워크라고 생각하면 됩니다.
(autonomous 시스템이 거대하기 때문에 시간이 걸립니다.)

officedepot.com과 동일한 급의 시드 도메인들입니다. 마인드맵에 추가합시다.

이렇게 많이 찾을 수록 인프라를 장악하기 위한 공격 표면을 찾을 확률이 높습니다.
whoxy : whois 데이터베이스고
무료로 API 검색할 수 도록 도와줍니다.
registrars ogranization name email 기준으로
builtwith.com
같은 analytics 코드를 사용하는 다른 사이트를 찾아줍니다.
흥미로운 것들만 추가하고, subdomain이나 확실한 것들은 다른 것들은 배제합니다.

실제로 해당 URL에 들어가보면 resolving 되지만 favicon을 받기 때문에 시드 도메인리스트로 추가합니다.

참고로 자동화툴은 getrelationsihps.py 를 사용할 수 있습니다.
개인적으로 자동화 툴을 사용하는 건 좋은데, 놓치는 것은 없는지, 불필요한 스캐닝까지 하지 않는지 제대로 알고 사용하는 것이 좋습니다.
Google-Fu
Copyright Terms of Service Privacy Policy |
텍스트를 구글에 검색하여 관련 Subdomains 또는 루트 도메인을 찾을 수 있습니다.


www.officedepot.com 과 business. 를 제외하고 구글링합니다.
거의 루트도메인이 아닌 subdomains이 검색결과의 대부분입니다.
해당 URL에 접속 했을 때, 아예 다른 것처럼 보이는 사이트는 범위가 아니므로 제외합니다.

흥미롭게도 벤더사의 로그인 사이트로 보이는 도메인을 얻을 수 있었습니다.
대체 도구로는 shodan이 있는데
마스터하는데 한번에 되는 건 아닙니다.
linked discovery
Burp Suite 에서 scope를 깔끔하게 잡기 위해서는 office 를 scope로 지정하고, site-map에서 관련된 모든 도메인 history 결과로 나오도록 합니다.



Crawl 로 하고 속도는 빠르게, error때문에 멈추지 않도록 설정합니다.

현재 thread는 10 이니 더 빠르게 올리기 위해 , 하지만 100은 무리를 주기 때문에 50정도로 설정합니다.

크롤링을 통해 더 많은 subdomains를 찾을 수 있습니다.
몇몇 루트 도메인도 보입니다.
해당 리스트들을 export 하려면 engagement tools -> analyze target 으로 가능합니다.
subdomain enum
subdomainizer
referenced 된 js 파일을 분석하면서 subdomains, cloud 서비스, key 까지 찾아줍니다.
만약 subdomains 만 필요하다면 subscraper 가 recursive하게 구동되므로 해당 툴을 이용합니다.

모든 js 파일 URL 을 복붙하기 위해서, engagement -> search .js 파일을 검색해서 copy selected URLs 로 복사해서 자동화 툴에 붙여놓습니다.
.js 파일에서의 reference를 모두 긁어왔다면, 두번째 방법으로 넘어갑시다.
amass, subfinder 을 주로 사용합니다.
amass enum -d officedepot.com

censys, netcraft, 등 위 모든 리소스들을 이용해서 subdomains 에 대한 관련을 찾습니다.
subfinder 도 결과값이 다를 수 있기 때문에 같이 돌리도록 합니다.
더 유용한 툴로는, subdomain Finder를 사용하면 다른 사람이 검색한 적이 있다면 캐시되어서 결과를 주기 때문에 아주 빠르게 결과를 얻을 수 있는 온라인 툴입니다.
https://subdomainfinder.c99.nl/

subdomain enum이 진행되는 동안 깃헙도 확인해봐야합니다.
github dork

개발자가 실수해서 소스코드를 노출 시킨건 없는지, creds 나 key, passwords정보가 있는지 검색합니다.

1시간 정도 투자해서라도 확인해볼 가치가 있습니다.
찾은 subdomains 들을 마인드맵에 추가합니다.

virustotal 등에서 가져온 자료는 온라인이 아닐 수도 있어서 라이브(온라인)임을 확인해야합니다.
cat subs.txt | httprobe > live_domains.txt
httpx 보단 httprobe 를 사용했습니다.
httpx -l subs.txt -title -status-code -tech-detect -t 10 > status.txt
base tech 가 어떤건지와 상태 코드를 확인합니다.

이 URL들을 openlist extension을 이용해서 모두 오픈할 겁니다.

대부분의 메인사이트로 가는건 제외하고
404 로 나오는건 content discovery를 시도해볼 만합니다.

이제 이 타겟들을 대상으로 CWE 를 살펴보거나 API, ffuf, dir brute-force, port scanning, 를 돌려보는 등의 가벼운 assessment 를 진행할 수 있습니다.

커스텀 로그인 페이지를 발견했기 때문에 흥미롭습니다.
manual 하게 html 코드를 확인해봤을 때

로그가 2000년대이고, 너무 오래 됐다면 전체적으로 취약하다고 볼 수 있습니다.
s3 버킷 등 도 확인할 수 있습니다.
이제는 확실히 content discovery를 돌려봐도 좋을 듯 합니다.

tech정보를 확인하는 extension 으로는 wappalyzer 도 있지만,
builtwith 를 이용해서 사용된 CMS 나 tech 정보를 확인합니다.
CMS 정보가 따로 나타나지 않는다면 custom 사이트라고 판단할 수 있습니다.

이런식으로도 패턴이 형성됩니다. (amass 가 해주니까 걱정할 필요는 없습니다.)

shodan 등에서 favicon 해시 검색으로 IP 주소를 찾을 수 있습니다.
FavFreak : fingerprints를 이용해 어떤 tech를 사용한지 알아볼 수 있습니다. spring-boot 인지 등
파비콘 해시는 Devtool -> network 탭에서 확인 할 수도 있습니다. favicon.ico
favicon hash 값을 계산할 수 있는 스크립트입니다.
import mmh3
import requests
import codecs
response = requests.get('https://in.search.yahoo.com/favicon.ico')
favicon = codecs.encode(response.content,"base64")
hash = mmh3.hash(favicon)
print(hash)
shodan에서 http.favicon.hash:1523284567 라고 검색 하면
subdomains 와 ASN 결과들로 나오는데 숨겨진 것들이 있는지 찾아봅니다.
대체 툴:
- https://github.com/Mr-P-D/Favicon-Hash-For-Shodan.io
- https://github.com/edoardottt/favirecon
- https://github.com/eremit4/favihunter
port scan
이렇게 list에 도메인들이 많을 땐 masscan 이 nmap 보다 매우 빠릅니다.
또는 rustscan이 있습니다.
한계는 IP 주소만 입력값으로 넣을 수 있다는 점이기 때문에
DNS 도메인을 대상으로 포트스캔을 하기위해 simple converter 스크립트를 사용하거나 dnmasscan 을 사용합니다.

80 443 등 특정 포트만 스캔한 결과이므로, full service 스캔은 nmap 으로 시도합니다.
eyewitness (alternative: auatone HTTPscreenshot, withnessme)
모든 도메인에 대해서 스크린샷을 모두 찍는데
스크린샷을 보고 실제로 확인해봅니다.
custom 에러 메세지라면 또 dir brute-forcing을 하기 좋습니다.
find URLs
echo example.com | waybackurls > allUrls.txt
만약 waybackurls로 URL 을 찾습니다.
대체로 gau 또는 katana 를 사용할 수 있습니다.
cat allUrls.txt | httpx -title -status-code -tech-detect -follow-redirects -t 10 > status.txt
base tech 가 어떤건지와 상태 코드를 확인합니다.
Find hidden Params
숨겨진 params 를 찾는 툴입니다.
arjun, X8, and GAP to discover r_url parameter. paramspider
subdomain takeover
은 만약 subdomain.example.com 이 github pages, 또는 heroku 등의 서드파티 서비스를 가르킨다면 공격자가 github페이지를 만든 후, subdomain.example.com 을 포함한 CNAME 파일을 추가하여 본인 사이트라고 주장할 수 있는 취약점입니다.
tool : can i take over xyz
nuclei (subdomain takeover 템플릿)또는 subOver을 이용가능합니다.
./subover -l targets -v
nuclei -l /officedepot.com/httprove.txt -t subdomain-takeover/*
nuclei -l /officedepot.com/httprove.txt -t cves/*
words 를 추가하는 등의 커스텀 화할 수 있고, 기본 템플릿으로는 큰 결과를 못얻는다고 생각하므로 이 단계는 생략합니다.
fingerprints 를 추가하기 위해 다른 템플릿을 찾습니다.
gofingerprint 또는
Sn1per — cves 등 신규로 업데이트가 자주 되는 템플릿을 선택합니다.
ultimate recon
이 모든게 귀찮다면 모두 총집합한 프레임워크를 사용할 수 도 있습니다.






더 고급 수준의 티어입니다.
근데 결국 내가 무슨 툴을 사용하고 있는지 모른다면, 효과가 없다고 생각하므로 수동 점검에 집중합니다.
- 참고) blind XSS 자동화 툴

Burp Bounty는 XSS hunter 등에서 가져온 임의의 페이로드를 이용해서 모든 곳에 붙여놓는 도구입니다. 시간이 걸리고 서버에 영향이 갈 수도 있습니다.
꽤나 효과가 있을 것 같지만 자동화 툴은 별로 좋아하지 않습니다.
Reference