ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 0. Burp Suite 설치 및 사용방법
    Tools 2021. 2. 6. 22:08

    <목차>

    0. 다운로드
    1. 실행
    2. Burp Suite 기본 설정
    3. Burp Suite 기능
       # Dashboard
       # Target
       # Proxy
       # Intruder
       # Repeater
       # Sequencer
       # Decoder
       # Comparer
       # Extender
    4. Reference

     

     


    0. 다운로드

    Burp Suite는 Fiddler와 마찬가지인 웹 프록시 툴로,

    서버와 클라이언트 간의 요청 및 응답 패킷을 Intercept 하는 것이 가능하여

    웹 어플리케이션 테스트와 취약점 점검에 주로 사용한다.

     

    [Burp Suite 다운로드] portswigger.net/burp

     

    Burp Suite - Application Security Testing Software

    Get Burp Suite. The class-leading vulnerability scanning, penetration testing, and web app security platform. Try for free today.

    portswigger.net

    다운로드 사이트에는 3가지 버전이 있는데, 나는 무료인 Community버전을 선택하였다.

    Windows 64bit인 환경에 맞는 Setup파일을 다운받아 실행하여 설치를 진행하였다.

     

    계속 Next를 클릭하고 조금만 기다리면 간단하게 설치가 완료된다.

     

    설치가 되었으니 사용방법을 알아보도록 하자.

     

     


    1. 실행

    설치된 Burp Suite 실행하면 아래와 같이 저장된 프로젝트를 불러올 수도 있다.

    딱히 불러올 프로젝트가 없으므로 Temporary project를 선택하였다.

     

    프로젝트 사용법에 대해 알아보고 싶다면 아래 링크를 참고하면 된다.

    portswigger.net/burp/documentation/desktop/getting-started/launching/select-project

     

     


    2. Burp Suite 기본 설정

    기본적으로 프록시 설정이 127.0.0.0:8080으로 되어 있다.

    하지만, 8080 포트를 다른 서비스가 사용하고 있는 경우에는 사용할 수 없다.

    그런 경우에는 다른 포트 번호로 변경하여 Running 시켜준다.

     

    그 후,

    브라우저에서 프록시 설정을 해주어야 패킷을 잡을 수 있다.

    (Burp Suite에 설정된 포트 번호로 설정해야 한다.)

     

    하지만, 최근 버전에서는 브라우저의 프록시 설정 없이 Intercept 할 수 있도록 지원한다.

     

    Open browser을 클릭하면, 아래와 같이 비어있는 브라우저 창이 뜬다.

    해당 브라우저를 이용하면 별도의 프록시 설정 없이 패킷을 잡을 수 있다.

     

    패킷을 잡아보면 Request만 잡히고 Response는 잡히지 않는데,

    이는 옵션에서 Responses도 Intercept 할 수 있도록 체크해주면 된다.

     

    패킷에서 한글이 깨져있는 경우가 있다.

    이는 Burp Suite에서 설정된 폰트가 한글을 지원하지 않는 폰트이기 때문임으로

    User options > Display에서 한글을 지원하는 폰트로 변경하면 된다.

     

    해당 창에서 테마를 Dark로 변경할 수도 있다.

     

     


    3. Burp Suite 기능

    # Dashboard

    2.x 버전부터 생긴 기능으로, 대시보드를 통해 자동화된 활동을 한눈에 모니터링하고 제어할 수 있다.

    대시보드의 창은 Task, Event log, Issue activity로 나누어져 있다.

     

    Task 영역New scan은 Pro 버전에서만 지원하는 것으로 스캔 기능을 수행할 수 있다.
    무료 버전에서는 New live task만을 지원하며, 이를 통해 실시간 크롤링이 가능하다.

    Event log영역은 작업에 대한 Error, info 등의 이벤트 로그가 기록된다.

    Issue activity영역은 스캔 활동에 대한 결과가 기록되는 곳으로 Pro 버전에서만 지원한다.

     

     


     

    # Target

    타겟 어플리케이션에 대한 자세한 정보를 확인할 수 있다.

    현재 작업의 범위 내에 있는 타겟을 정의할 수 있고, 취약성 테스트 프로세스를 수행할 수도 있다.

     

     

    1) Site map

     

    브라우저에서 방문한 모든 URL이 개별 항목으로 기록되어

    각 항목에 대한 전체 요청 및 응답에 대한 전체 세부사항을 볼 수 있다.

     

    도메인, 디렉토리, 파일, 매개변수로 구분된 URL 및 내용을 계층적 트리 형식으로  보여준다.

    분기를 확장하면 자세한 내용을 볼 수 있다.

     

    필터 표시창을 클릭하면 디스플레이 필터 옵션이 열린다.

    관심 있는 콘텐츠만 나타내도록 일부 항목을 숨기거나 표시하도록 필터링할 수 있다.

     

    Site map에 너무 많은 항목이 있는 경우, 타겟 사이트만을 분석하는데 어려울 수 있다.

    이때, request type의 필터를 통해 in-scope items만 볼 수 있도록 설정한 후,

    '오른쪽 마우스'를 클릭하여 타겟 사이트를 scope에 추가해주면 지정된 사이트에 대한 정보만 볼 수 있다.

     

     

     

    2) Scope

     

    공격하려는 대상의 범위에 대해 설정할 수 있다.

    Include in scope 영역은 범위 내 표시고, Exclude in scope는 범위 내 차단이다.

     

    공격하려는 대상 범위를 설정한 후 아래와 같이 Proxy에서 설정해주면,

    공격하려는 범위에 대해서만 Intercept할 수 있다.

     

     

     

    3) Issue definitions

     

     Burp Scanner에서 탐지할 수 있는 모든 문제의 정의 목록을 확인할 수 있다.

     

     


     

    # Proxy

    가장 많이 사용할 기능으로,

    브라우저와 웹 서버 간의 모든 요청 및 응답을 가로채 훔쳐보고, 수정할 수 있다.

     

     

    1) Intercept

     

    브라우저와 웹 서버 간 HTTP 및 Websocket 메세지를 가로채 표시하는데,
    가로챈 모든 메세지를 모니터링 및 수정할 수 있다.

     

    Forward - 요청/응답 편집 후 서버 또는 브라우저로 전송
    Drop - 서버 또는 브라우저로 전달되지 않도록 메시지 삭제
    Intercept is on/off - 이 버튼을 사용하여 모든 가로채기를 켜거나 끔
    Action - 현재 표시된 메시지에 대해 수행할 수 있는 동작 메뉴 표시
    Open Browser - 별도의 프록시 설정 없이 Intercept 가능한 브라우저 창 켜짐

     

     

    2) HTTP history

     

    Burp Proxy를 통과한 모든 요청 및 응답에 대한 전체 기록이 저장되어 있다.
    패킷 선택 후 요청 및 응답 탭에서 전체 메세지를 확인할 수 있다.
    기록된 목록에 대한 필터링 및 주석을 설정하여 정보 관리가 가능하다.

     

     

    3) WebSockets history

     

    Brup Proxy를 통과한 모든 WebSockets 메세지 기록이 저장되어 있다.

    HTTP history와 마찬가지로 기록된 목록에 대해 필터링 및 주석을 설정할 수 있다.

    (나는 WebSocket 통신을 하지 않았기 때문에 아무런 패킷이 잡혀있지 않다.)

     

     

    4) Options

     

    Proxy listeners, HTTP 요청 및 응답 인터셉트, WebSocket 메세지 인터셉트,

    응답  수정, 일치 및 교체, TLS 통과, 기타 옵션을 설정할 수 있다.

     

    Proxy listeners - listeners 중 하나를 프록시 서버로 사용하도록 설정할 수 있다.
    (Burp Proxy는 listeners를 사용하여 브라우저의 HTTP 요청을 수신한다.)
    Intercept Client Requests - 클라이언트 요청 메세지 인터셉트에 대한 규칙을 지정할 수 있다.
    Intercept Server Responses - 서버 응답 패킷 인터셉트에 대한 규칙을 지정할 수 있다.
    Intercept WebSockets Messages - WebSocket 메세지의 인터셉트 여부를 개별적으로 설정할 수 있다.
    Response Modification - 자동 응답 수정을 통해 다양한 작업을 수행할 수 있다.
    Match and Replace - Proxy를 통해 전달되는 요청 및 응답의 일부를 자동으로 변경하는 데 사용한다.
    TLS Pass Through - TLS 연결을 통해 직접 전달할 대상 웹 서버를 지정하는 데 사용한다.
    Miscellaneous - Proxy 동작의 특정 세부 정보를 제어하는 옵션을 설정할 수 있다.

     

     


     

    # Intruder

    자동화된 사용자 지정 공격을 수행하기 위한 도구이다.

    어플리케이션을 테스트할 때 발생하는 모든 종류의 작업을 자동화하는 데 사용할 수 있다.

    즉, Brute Force 공격 및 Fuzzing을 수행할 수 있다.

     

     

    1) Target

     

    공격을 위한 타겟 서버의 세부 정보를 구성하는 데 사용한다.

     

    Host - 타겟 서버의 hostname이나 IP 주소 값
    Port - HTTP/S 서비스 port 번호
    Use HTTPS - 타겟 서버의 HTTPS 사용 유무 체크

     

     

    2) Positions

     

    페이로드 삽입 위치 구성 및 페이로드가 할당되는 공격 유형을 결정하는 데 사용한다.

    오른쪽의 버튼을 통해 페이로드 삽입 위치에 대한 구성을 설정할 수 있다.

    (§로 둘러싸인 부분이 페이로드로 설정된 것이다.)

     

    Add § - request template에서 페이로드 위치 추가
    Clear § - request template에서 모든 페이로드 위치 제거
    Auto § - 유효한 위치를 추측하여 그에 맞게 페이로드를 배치
    Refresh - 필요시 request template 편집기의 구문 색상 표시 새로고침
    Clear - 전체 request template 삭제

     

    Burp Intruder는 Sniper, Battering ram, Pitchfork, Cluster bomb와 같은 다양한 공격을 지원한다.

    (공격에 대입할 페이로드 집합을 설정해야 한다.)

     

    Sniper - 단일 페이로드 집합이 사용되며, 정의된 각 위치에 차례로 페이로드를 삽입한다.
    (첫 번째 위치의 삽입이 끝나면, 두 번째 위치 순으로 삽입.)

    Battering ram - 단일 페이로드 집합이 사용되며, 정의된 모든 위치에 동일한 페이로드를 삽입한다.

    Pitchfork - 단일 이상의 페이로드 집합이 사용되어, 각 정의된 위치의 개수(최대 8개)만큼 사용된다.
    각 페이로드가 정의된 위치에 동시에 삽입된다.

    예시) ?id=§this_is_id§&passwd=§this_is_password§
    - payload set 1 {admin, test, a, b}, payload set 2 {pass, passwd, asdf}
    ?id=admin&passwd=pass
    ?id=test&passwd=passwd
    ?id=a&passwd=asdf
    ...

    Cluster bomb - 단일 이상의 페이로드 집합이 사용되어, 각 정의된 위치의 개수(최대 8개)만큼 사용된다.
    각 페이로드 집합을 순서대로 반복하여 모든 페이로드의 조합을 테스트한다.

    예시) ?id=§this_is_id§&passwd=§this_is_password§
    - payload set 1 {admin, test, a, b}, payload set 2 {pass, passwd, asdf}
    ?id=admin&passwd=pass
    ?id=admin&passwd=passwd
    ?id=admin&passwd=asdf
    ?id=test&passwd=pass
    ...

     

     

    3) Payloads

     

    하나 이상의 페이로드 집합을 구성하는 데 사용되며,

    집합 개수는 Positions 탭에서 설정한 공격 유형에 따라 달라진다.

     

    Payload Sets - 하나 이상의 페이로드 집합 정의
    Payload Options - 페이로드로 사용되는 문자열의 단순 목록 구성
    Payload Processing - 각 페이로드가 사용되기 전 다양한 처리 작업을 수행하는 규칙 정의
    Payload Encoding - HTTP 요청 내에서 안전한 전송을 위한 URL encoding 설정

     

     

    4) Options

     

    공격에 영향을 미치는 옵션을 구성하는 데 사용한다.

     

    Request Headers - 공격 중에 구성된 request header 업데이트 여부 제어
    Request Engine - 공격 수행 시 HTTP 요청 수행 엔진 제어
    Attack results - Attack results에 캡처되는 정보 제어
    Grep - Match - 지정된 표현식이 포함된 결과 항목 플래그 추가 가능
    Grep - Extract - 유용한 정보를 공격 결과 테이블로 추출 가능
    Grep - Payloads - 사용된 페이로드 값이 응답 값에 포함되었는지 여부 결과 항목 플래그 추가
    Redirections - 공격 수행 시 Burp의 Redirection 처리 방법 제어

     


     

    Send to Intruder을 클릭하면 자동으로 위의 값들이 설정되어 쉽게 사용할 수 있다.

     

    [Intruder 실습] grini25.tistory.com/210?category=858418

     

     


     

    # Repeater

    개별 HTTP 요청을 변경 및 재발급하여 어플리케이션의 응답을 분석할 수 있다.

    요청을 수정하여 계속 발행할 수 있어 매개 변수값을 변경하거나 발행 순서를 변경하여 요청함으로써,

    입력 값에 의한 취약점 발생을 테스트하는 데 사용할 수 있다.

     

    Send to Repeater을 클릭하면 세부 사항이 간단히 설정되어 쉽게 사용할 수 있다.

     

    요청을 보낼 준비가 되면 Send를 클릭하여 서버로 요청 값을 전송하고,

    서버로부터 받은 응답은 Response를 통해 볼 수 있다.

     

    각 Repeater tab은 요청에 대한 기록을 유지하므로 <>를 이용하여 전/후의 요청 및 응답을 확인할 수 있다.
    drop-down 버튼을 이용하면 번호를 통해 빠르게 이동할 수도 있다.

     

    Repeater의 Tab은 다음과 같이 관리할 수 있다.

     

    Double-Clicking - Tab의 이름 변경
    Dragging - Tab의 순서 변경
    ... Clicking - 새 Tab 생성
    x Clicking - Tab 닫기

     

     


     

    # Sequencer

    웹 어플리케이션에서 제공하는 값의 임의성을 분석하기 위한 기능이다.

    세션 토큰, CSRF 방지 토큰, 암호 재설정 토큰 등과 같이 랜덤 한 중요한 데이터를 테스트할 수 있다.

     

     

    1) Live capture

     

    타겟 웹 어플리케이션에서 생성되는 토큰을 캡처하여, 샘플 토큰 목록을 생성하고 분석하여 결과를 출력한다.

    분석을 원하는 패킷에  Send to Sequencer를 하면 Select Live Capture Request에 항목이 추가된다.

     

    Token Location Within Response는 어플리케이션의 응답 내에서 토큰이 나타나는 위치를 선택할 수 있다.

    즉, 사용자에게 캡처에 사용할 항목을 선택하게 한다.

     

    Cookie - 응답으로 쿠키가 설정된 경우, 분석할 쿠키 선택 가능
    Form fields - 응답에 HTML 양식 필드가 있는 경우, 분석할 양식 필드 값 선택 가능
    Custom location - 사용자의 임의로 항목 정의 가능

     

    Live Capture Options는 라이브 캡처 수행 시 HTTP 요청 및 토큰 수집에 사용되는 엔진을 제어 설정할 수 있다.

     

    Nuber of threads - 실시간 캡처가 동시에 서버에 보낼 수 있는 요청 수
    Throttle between requests - 모든 요청 전 지연 시간 (과부하 방지 or 은밀한 요청에 유용)
    Ignore token whose length deviates by _ charaters - 지정한 평균 토큰 길이 벗어나는 토큰 무시 설정

     

    모든 설정이 끝난 후, Start live capture를 누르면 라이브 캡처가 시작되며,

    라이브 캡처 중에는 토큰 수, requests 수 및 네트워크 오류 수를 progress bar로 보여준다.

     

    라이브 캡처 진행 중 다음의 옵션을 사용할 수 있다.

     

    Pause/Resume - 캡처 일시적 중단 및 재시작
    Stop - 캡처 영구적 중지
    Copy tokens - 현재 캡처된 토큰 클립보드에 복사
    Save tokens - 현재 캡처된 토큰 파일에 저장
    Auto analyze - 토큰 자동 분석 수행, 라이브 캡처 중 결과 주기적 업데이트
    Analyze now - 최소 100개의 토큰이 캡처되면 Burp가 현재 샘플을 분석 후 결과 업데이트

     

     

    2) Manual load

     

    이미 생성된 토큰 샘플(Live Capture / Intruder 이용)을 불러와 샘플에 대한 통계 분석을 수행할 수 있다.

     

     

    3) Analysis options

     

    토큰에 대한 처리 방법과 분석하는 동안 사용하는 테스트 유형을 설정할 수 있다.

    Token Handling은 분석 중 토큰 처리 방법을 제어할 수 있다.

     

    Pad short tokens at Start/End - 각 토큰의 시작/끝 패딩 적용 여부 선택
    Pad with - 패딩에 사용될 문자 지정(보통 "0")
    Base64-decode before analyzing - 토큰이 Base64 인코딩 된 경우 분석 전 디코딩 설정

     

    Token Analysis는 문자와 비트 레벨의 테스트에서 수행되는 분석 유형을 제어할 수 있다.

     

     


     

    # Decoder

    데이터 암/복호화 및 해시 형식으로 변환할 수 있는 기능이다.

    휴리스틱(heuristic) 알고리즘을 사용하고 있어 여러 암호화 형식을 지능적으로 인식할 수 있다.

     

    drop-down 목록을 이용하여 필요한 변환을 선택하여 변환하면 된다.

    Smart decode는 아래 값이 인코딩 된 것으로 보이는 데이터를 찾아 내용을 자동적으로 디코딩하는 옵션이다.

     

    위와 같이 데이터를 직접 입력하는 것도 가능하지만,

    인/디코딩하고자 하는 데이터를 선택하여 Send to Decoder으로 이용하는 것도 가능하다.

     

     

     


     

    # Comparer

    두 데이터(요청, 응답 등) 간의 비교를 수행하므로,

    다른 입력에 대한 응답을 비교하는 데 유용하게 사용할 수 있다.

     

    비교하고자 하는 값(Request/Reponse)을 복사 + 붙여넣기 하거나,

    파일을 로드하거나, Send to Comparer으로 Comparer에 값을 전송하여 데이터를 로드할 수 있다.

     

    비교할 두 가지 데이터가 선택되면,
     Words, Bytes 중 하나의 비교 형식을 선택하여 비교할 수 있다.

     

     

    Words Comparer

     

    단어 단위의 비교로,  비교 된 항목 간의 차이점이 단어 수준에 존재할 때 유용한 방식이다.

     

     

    Bytes Comparer

     

    바이트 단위의 비교로, 비교 된 항목 간의 차이점이 바이트 레벨에 존재하는 경우 유용한 방식이다.

     

     


     

    # Extender

    자체 또는 타사 코드를 사용하여 기능을 확장할 수 있다.
    확장 기능에 대해 Extensions, BApp Store, APIs, Options에서 설치 및 사용하고 관리할 수 있다.

     

     

    1) Extensions

     

    설치된 모든 확장 기능을 확인할 수 있으며, 추가, 제거, 재정렬(Up/Down) 할 수 있다.


    Details탭에서 해당 확장 기능 정보를 확인할 수 있고,

    Extension loaded를 체크하면 확장을 활성화할지 비활성화할지 선택할 수 있다.
    Output탭에서 확장 기능의 표준 출력 스트림 세부 사항을 확인할 수있다.
    Errors탭에서 표준 오류 스트림 정보를 확인할 수 있다.

     

     

    2) BApp Store

     

    Burp Suite 사용자가 작성한 Burp 확장 기능이 있다.
    사용 가능한 BApps를 확인하여, 설치하여 사용할 수 있다.

     

     

    3) APIs

     

    Burp 확장 기능을 개발하는 데 사용할 수 있는 API에 대한 세부 정보를 확인할 수 있다.

    실행 중인 Burp 버전에서 사용할 수 있는 API 정보가 표시되어 있다.


    Save interface files 및 Save Javadoc files는

    확장 기능을 개발할 때 사용할 수 있도록 코드를 로컬 사본으로 저장하는 기능이다.

     

     

    4) Options

     

    확장 설정, Java 환경, Python 환경, Ruby 환경에 대한 설정 옵션이 있다.

     

    Settings - 시작 시 확장을 어떻게 처리할 것인지 설정
    (시작 시 자동으로 재로드할 것인지, BApp 자동으로 업데이트할 것인지)

    Java environment - Java로 작성된 확장 기능 실행을 위한 환경 구성 설정
    확장 프로그램에서 라이브러리를 사용하는 경우 라이브러리를 로드할 폴더를 지정할 수 있다.

    Python environment - Python으로 작성된 확장 기능 실행을 위한 환경 구성 설정
    Python 확장 기능을 사용하려면 Jython*을 다운로드 받고 경로를 설정해야 한다.
    Jython* : Java로 구현된 Python 인터프리터

    Ruby environment - Ruby로 작성된 확장 기능 실행을 위한 환경 구성 설정
    Ruby 확장 기능을 사용하려면 JRuby*를 다운로드 받고 경로를 설정해야 한다.
    JRuby* : Java로 구현된 Ruby 인터프리터

     


     

    아래는 확장 개발에 필요한 공식 정보 페이지이다.

    Burp 확장 도구 개발은 Python, Ruby, Java를 통해 개발할 수 있다.

    [Burp Suite Extender] portswigger.net/burp/extender

     

    [How to install Jython/JRuby] portswigger.net/support/how-to-install-an-extension-in-burp-suite

     

    [Burp Extender Tools] github.com/alphaSeclab/awesome-burp-suite/blob/master/Readme_en.md

     

     


    4. Reference

    - portswigger.net/burp/documentation/contents

     

    Burp Suite documentation - contents

    Documentation Desktop editions      Getting started           Next steps ...

    portswigger.net

    - portswigger.net/burp/documentation/desktop/penetration-testing

     

    How to use Burp Suite for penetration testing

    The sections below describe the essentials of how to use Burp Suite within your web application testing workflow. For help with installing and launching ...

    portswigger.net

    - www.techpanther.in/search/label/Burp Suite

     

    Techpanther

    Blog about Computer Tricks , Cyber security , Windows Server , Cloud Computing , Linux

    www.techpanther.in

     

    'Tools' 카테고리의 다른 글

    1. Burp Suite Intruder _ Dictionary Attack 공격  (0) 2021.02.06
    Fiddler 설치 및 사용방법  (0) 2019.02.28

    댓글

@Jo Grini's Blog