수동적, 능동적 사전 조사

신원상·2024년 10월 23일

수정하기.. 필수로 누를것..ㅜ

API 공격시

  • 어떤 API를 사용중인지 확인 => 수동적, 능동적 방식으로 조사 가능
    (이때 찾은 API가 실제로 동작중인지 여부 확인도 필수)

  • 이 과정에서 자격 증명 정보(시크릿키, 사용자 정보, 패스워드..), 버전 정보, API 문서 등을 확인할 수 있다.

=> 최대한 많은 정보를 찾는 것이 유리하다.

API 를 찾을 때, 가장 중요한 것은 목적 이다, "내부에서 사용할 목적" or "외부에서 모두가 사용할 목적"

API 를 외부에서 모두가 사용할 목적인 경우 => 엔드포인트 & 사용법을 알기 쉽게 설명한 문서가 존재
API 를 내부 & 일부 에게만 공개할 목적인 경우 => 이름 규칙, Content-Type 같은 HTTP 응답헤더, 자바스크립트 소스로 확인 해야함


수동적 사전 조사

  • OSINT(open-source intellegence) : 공개된 소소에서 수집한 데이터
    : API 키, 자격 증명, JWT, 버전 정보, 개인 정보 등 여러 정보를 얻을 가능성 있음

<단계>

1. 저인망 던지기 : 기본 정보 수집
: 구글, 쇼단, DNS 덤스터, OWASP 어매스 등을 사용

  • 구글 해킹 : 구글 검색 매개변수를 사용한 정보 수집
    예시)
    inurl:/wp-json/wp/v2/users
    intitle:"index.of" intext:"api.txt"
    inurl:"/includes/api/" intext:"index of /"
    ext:php inurl:"api.php?action="
    intitle:"index of" api_key OR "api key" OR apikey -pool
  • 쇼단 : 인터넷에서 접근 가능한 장치에 대한 검색 엔진 (https://www.shodan.io/)
    도메인 이름, IP 만으로 검색 가능 & API 검색 및 대상의 열린 포트 정보를 얻을 수 있음
    예시)
    hostname:"targetname.com"
    "content-type: application/json"
    "content-type: application/xml"
    "200 OK"
    "wp-json"

검색 결과 확인시 SSL 인증서 정보, 401과 같은 REST API 에서 주로 사용하는 코드, 웹서버, content-Type를 보고 유추 가능함

  • OWASP 어매스 : 수동/능동적 두가지 방식으로 스캔 가능
    수동의 경우 : 인증서 정보를 요청하는 방식으로 대상에서 직접 정보를 수집
    능동의 경우 : 검색 엔진, SSL 인증서 소스, 검색 API, 웹 아카이브 웨이백 머신에서 데이터를 수집함

SSL 인증서 소스: 발급된 SSL 인증서를 수집하여 도메인이나 서버 정보를 파악
검색 API: 검색 엔진의 API를 통해 도메인 및 관련 정보를 자동으로 수집
웹 아카이브 웨이백 머신: 웹사이트의 과거 데이터를 분석하여 도메인의 변동 사항을 파악

@. 프로그래머블웹(2023년 지원 종료)

2. 적응과 집중 : 수집 정보를 조합
: 검색엔진 + 깃허브를 사용한 정보 수집,
페이스트 헌터 사용

  • 깃허브를 사용한 정보 수집
    : 대상 이름과 api-key, password, token 과 같은 검색어를 사용
  • 코드 탭 : 소스 코드에 중요정보 있는지 확인, 히스토리를 확인하는 것도 중요함 (split 기능을 사용하면 편함)
    이슈 탭 : 소프트웨어 버그 확인 가능 (변경된 내용들 확인)
    풀 리퀘스트 탭 : 변경 제안 확인 가능

이때, 사용한 프로그래밍 언어, API 엔드포인트 정보, 사용법 문서 등 기타 정보들을 수집

요약 : 포트, 취약점 스캔, 핑, HTTP 요청, API 호출 등 방식으로 대상에 접근해 정보를 얻는 방법


능동적 사전 조사

목적 : 웹 페이지의 디렉터리와 파일을 모두 발견하는 것

  1. 탐지 스캔
    API는 HTTP OR HTTPS 을 사용함
    스캔 중 HTTP, HTTPS 를 사용하는 서비스가 나오면 따로 정리
  • Nmap
    : 포트 스캔, 취약점 검색, 서비스 열거, 실제 호스트 발견 등등 여러 기능을 가지고 있음

탐지 명령어

$ nmap -sC -sV <target address or network range> -oA nameofoutput
=> 타겟에 대한 기본 스크립트 와 서비스 버전 탐지를 시도하고 결과 파일 생성
$ nmap -p- <target address> -oA allportscan
=> 전체 포트 스캔

포트를 확인 후 웹 서버 탐색 시작

  • robots.txt
    웹 크롤러가 검색 엔진 결과에서 결과를 생략하게 하는 일반 텍스트 파일
    => 해당 대상에서 숨기고 싶어하는 경로를 확인 가능
    확인 후 직접 접근도 가능
  • 크롬 개발자 도구
    Network 탭에 들어가서 자바스크립트 내 find 기능을 사용해 텍스트가 존재하는지 확인 (api, apikey, secret, password.. etc)
  • Memory 탭에서 힙 메모리의 사용 히스토리 확인 가능
    각각의 엔드포인트(예를 들면 로그인 기능)에서 POST 방식으로 전달하는 부분을 확인
  • OWASP ZAP, URI 크롤링
    간단 사용 방법 따로 작성 예정
  • 고버스터(Gobuster)
    : URI와 DNS 서브 도메인을 무차별 대입 공격하는 명령행 도구
    속도가 빠르다, 멀티 스레드 지원 => 대규모 대입 공격에 효과적
    gui 가 좋다면 OWASP Dirbuster 사용 가능

해당 기능 간단 사용 예시 정리 중..

  • 카이트러너
    : URL, IP 스캔과 GET 요청 뿐 아니라 이외의 모든 기능 지원, API 경로를 흉내내기 가능
    (ex. post 요청을 보내는 시나리오 작성 가능)
  1. 분석

세가지 관점으로 분석 시도

A. 게스트 : 새로운 사용자가 사용가능한 기능, 목적, 게스트한테 API 문서가 공개되어있는지
B. 인가된 사용자 : 인가된 사용자가 쓸 수 잇는 기능, 게스트와의 차이점, 사용자 인증 방식 등..
C. 관리자 : 관리자만 접근 가능한 페이지는 어디인가, 페이지를 관리하는 부분은 어디인지, 개발과 실험은 어디서 하는지,

=> 세가지의 관점이 아니더라도 모의해킹 점검시에도 유사한 관점으로 보면 좋을것 같음.

조사 과정

  • 스캔 -> 분석 -> 발견
  • 스캔 -> 분석 -> 실패 -> 스캔
    해당 과정을 반복하는 것이 중요..

도구 간단 사용 설명서

1. 페이트스헌터(PasteHunter : https://github.com/dibsy/pastehunter)

python 다운로드 필수
윈도우 사용 가능 여부 : O

윈도우 설치 방법 (사진 첨부)
1. 파이썬 설치 후 페이스트헌터 깃허브 접속!

  1. requirements.txt 파일 다운로드
  2. 다운로드한 파일로 이동 후 cmd 실행
  3. 파일 다운로드 실행 (명령어 : pip3 install -r requirements.txt)
  4. app.py 파일 다운로드
  5. app.py 파일 수정 후 파일 저장
    (기존의 pastbin.com => 대상 사이트로 변경)
    6-1. 수정
  6. 폴더에서 cmd 실행
  7. 새로운 폴더 생성 후 app.py 파일 실행
  8. 파일 실행 완료
    (해당 사진은 결과값이 없기 때문에 아무런 것도 출력 X)

2. OWASP 어매스(OWASP AMASS : https://github.com/owasp-amass/amass)

점검시 유용할듯
go 다운로드 필수
윈도우 사용 가능 여부 : O

윈도우 설치 방법 (사진 첨부)
1. 윈도우 검색창에 "시스템 환경 변수 편집" 입력 후 실행 -> 환경 변수(N) 클릭 -> Path 더블 클릭 후 새로 만들기 클릭 -> go 파일이 설치된 위치 입력 (예시C:\Users\sang9\go\bin 입력)
2. go 설치 완료 후 Amass 설치(명령어 : go install -v github.com/owasp-amass/amass/v3/...@latest)


3. Amass 설치 여부 확인(명령어 : amass version)
해당 사진처럼 나온 경우 정상적으로 설치 완료 된 것

4. 명령어와 도메인 입력 후 실행(명령어 : amass enum -d example.com)

5. 해당 도메인과 연결되어있는 서브도메인의 결과 확인 가능

3. OWASP ZAP(https://www.zaproxy.org/)

JDK 11 버전 이상 다운 필수.(참고링크 : https://languagestory.tistory.com/11)
윈도우 사용 가능 여부 : O
1. JDK 다운로드, 환경 변수 설정 후 ZAP 다운로드 시도

2. 다운로드 시도

3. 다운로드 완료시 바탕화면에 아이콘 생성

4. 프로그램 실행

5. Automated Scan or Maunal클릭
6. Manual Explore

4. 고버스터(Gobuster)(https://github.com/OJ/gobuster)

윈도우 사용 가능 여부 : O
윈도우 설치 방법 (사진 첨부)

리눅스 설치 방법 (사진 첨부)

5. 카이트러너

윈도우 사용 가능 여부 : O


엔드 포인트 분석

profile
wonsang

0개의 댓글