1. Burp Suite 설치
- Burp Suite는 웹 프록시 툴로서 서버와 클라이언트 간의 요청 및 응답 패킷을 Intercept가 가능하여 웹 어플리케이션 테스트와 취약점 점검에 주로 사용됩니다.
- 다운로드 사이트의 버전에서 무료인 Community 버전을 선택하였습니다.
- 계속 Next를 클릭하면 설치가 완료됩니다.
2. 실행
- 설치된 Burp Suite 실행하면 저장된 프로젝트를 불러올 수 있습니다.
- 불러올 프로젝트가 없는 경우에는 TemPorary project를 선택하면 됩니다.
3. Burp Suite 기본 설정
- 기본적으로 프록시 설정은 127.0.0.0:8080으로 되어 있습니다.
- 그러나 8080 포트를 다른 서비스가 사용하고 있는 경우에는 사용할 수 없기 때문에 다른 포트 번호로 변경하여 진행합니다.
- 이후, Open browser를 클릭하면, 비어있는 브라우저 창이 뜹니다.
- 해당 브라우저를 이용하면 별도의 프록시 설정 없이 패킷을 잡을 수 있습니다.
- 만약 패킷을 잡았을 때, Request만 잡히고 Response는 잡히지 않는 경우, 옵션에서 Responses도 Intercept할 수 있도록 체크해주어야 합니다.
- 만일 패킷에서 한글이 깨져있는 경우, 설정된 폰트가 한글을 지원하지 않는 폰트이기 때문에 Settings > User Interface > Display에서 한글을 지원하는 폰트로 변경하면 됩니다.
4. Burp Suite 기능
4-1. Dashboard
- 대시보드 창은 Task, Event log, Issue activity로 나누어져 있습니다.
- Task 영역 : 무료 버전은 New Live task만을 지원하며 이를 통해 실시간 크롤링이 가능합니다.
- Event log 영역 : 작업에 대한 Error, info 등의 이벤트 로그가 기록됩니다.
- Issue activity 영역 : 스캔 활동에 대한 결과가 기록되는 곳으로 Pro 버전에서만 지원합니다.
4-2. Target
- 타겟 어플리케이션에 대한 자세한 정보를 확인할 수 있습니다.
- 현재 작업의 범위 내에 있는 타겟을 정의할 수 있고, 취약성 테스트 프로세스를 수행할 수도 있습니다.
4-2-1. Site map
- 브라우저에서 방문한 모든 URL이 개별 항목으로 기록되어 각 항목에 대한 전체 요청 및 응답에 대한 전체 세부사항을 볼 수 있습니다.
- 도메인, 디렉터리, 파일, 매개변수로 구분된 URL 및 내용을 계층적 트리 형식으로 보여줍니다.
- 필터 표시창을 클릭하면 디스플레이 필터 옵션이 열립니다. 이를 통해 관심 있는 콘텐츠만 나타나도록 필터링 할 수 있습니다.
- Site map에 너무 많은 항목이 있으면, 타켓 사이트만을 분석하는 것이 어려울 수 있습니다.
- 그럴 때, request type의 필터를 통해 in-scope items만 볼 수 있도록 설정한 후, '오른쪽 마우스'를 클릭하여 타겟 사이트를 scope에 추가해주면 지정된 사이트에 대한 정보만 볼 수 있습니다.
4-2-2. Scope
- 공격하려는 대상의 범위에 대해 설정할 수 있습니다.
- Include in scope 영역은 범위 내 표시이고, Exclude in scope는 범위 내 차단입니다.
- 공격하려는 대상 범위를 설정한 후, 아래와 같이 Proxy에서 설정해주면, 공격하려는 범위에 대해서만 Intercept 할 수 있습니다.
4-2-3. Issue definitions
- Burp Scanner에서 탐지할 수 있는 모든 문제의 정의 목록을 확인할 수 있습니다.
4-3. Proxy
가장 많이 사용할 기능으로, 브라우저와 웹 서버 간의 모든 요청 및 응답을 가로채 훔쳐보고 수정할 수 있습니다.
4-3-1. Intercept
브라우저와 웹 서버 간 HTTP 및 Websocket 메시지를 가로채 표시하는데, 가로챈 모든 메시지는 모니터링 및 수정할 수 있습니다.
- Forward : 요청/응답 편집 후 서버 또는 브라우저로 전송
- Drop : 서버 또는 브라우저로 전달되지 않도록 메시지 삭제
- Intercept is on/off : 이 버튼을 사용하여 모든 가로채기를 켜거나 끔
- Action : 현재 표시된 메시지에 대해 수행할 수 있는 동작 메뉴 표시
- Open Browser : 별도의 프록시 설정 없이 Intercept 가능한 브라우저 창 켜짐
4-3-2. HTTP history
- Burp Proxy를 통과한 모든 요청 및 응답에 대한 전체 기록이 저장되어 있습니다.
- 패킷 선택 후 요청 및 응답 탭에서 전체 메시지를 확인할 수 있습니다.
- 기록된 목록에 대한 필터링 및 주석을 설정하여 정보 관리가 가능합니다.
4-3-3. WebSockets history
- Burp Proxy를 통과한 모든 WebSockets 메시지 기록이 저장되어 있습니다.
- HTTP history와 마찬가지로 기록된 목록에 대해 필터링 및 주석을 설정할 수 있습니다.
- WebSocket 통신을 하지 않은 경우에는 아무런 패킷이 잡히지 않습니다.
4-3-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 동작의 특정 세부 정보를 제어하는 옵션을 설정할 수 있습니다.
4-4. Intruder
- 자동화된 사용자 지정 공격을 수행하기 위한 도구입니다.
- 어플리케이션을 테스트할 때 발생하는 모든 종류의 작업을 자동화하는 데 사용할 수 있습니다.
- 즉, Brute Force 공격 및 Fuzzing을 수행할 수 있습니다.
4-4-1. Target
- 공격을 위한 타겟 서버의 세부 정보를 구성하는 데 사용합니다.
- 위 사진의 빨간 사각형 부분
4-4-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개)만큼 사용됩니다.
각 페이로드가 정의된 위치에 동시에 삽입됩니다. - Cluster bomb : 단일 이상의 페이로드 집합이 사용되어, 각 정의된 위치의 개수(최대 8개)만큼 사용됩니다.
각 페이로드 집합을 순서대로 반복하여 모든 페이로드의 조합을 테스트합니다.
- Sniper : 단일 페이로드 집합이 사용되며, 정의된 각 위치에 차례로 페이로드를 삽입합니다.
4-4-3. Payloads
- 하나 이상의 페이로드 집합을 구성하는 데 사용되며, 집합 개수는 Positions 탭에서 설정한 공격 유형에 따라 달라집니다.
- 위 사진의 노란 사각형 부분
- 각 기능 설명
- Payload Sets : 하나 이상의 페이로드 집합 정의
- Payload Options : 페이로드로 사용되는 문자열의 단순 목록 구성
- Payload Processing : 각 페이로드가 사용되기 전 다양한 처리 작업을 수행하는 규칙 정의
- Payload Encoding : HTTP 요청 내에서 안전한 전송을 위한 URL encoding 설정
4-4-4. Options
공격에 영향을 미치는 옵션을 구성하는 데 사용한다.
- Request Headers : 공격 중에 구성된 request header 업데이트 여부 제어
- Request Engine : 공격 수행 시 HTTP 요청 수행 엔진 제어
- Attack results : Attack results에 캡처되는 정보 제어
- Grep - Match : 지정된 표현식이 포함된 결과 항목 플래그 추가 가능
- Grep - Extract : 유용한 정보를 공격 결과 테이블로 추출 가능
- Grep - Payloads : 사용된 페이로드 값이 응답 값에 포함되었는지 여부 결과 항목 플래그 추가
- Redirections : 공격 수행 시 Burp의 Redirection 처리 방법 제어
4-5. Repeater
- 개별 HTTP 요청을 변경 및 재발급하여 어플리케이션의 응답을 분석할 수 있습니다.
- 요청을 수정하여 계속 발행할 수 있어 매개 변수 값을 변경하거나 발행 순서를 변경하여 요청함으로써, 입력 값에 의한 취약점 발생을 테스트하는 데 사용할 수 있습니다.
- 요청을 보낼 준비가 되면 Send를 클릭하여 서버로 요청 값을 전송하고, 서버로부터 받은 응답은 Response를 통해 볼 수 있습니다.
- 각 Repeater tab은 요청에 대한 기록을 유지하므로 < / >를 이용하여 전/후의 요청 및 응답을 확인할 수 있습니다.
- drop-down 버튼을 이용하면 번호를 통해 빠르게 이동할 수도 있습니다.
- Repeater의 Tab
- Double-Clicking : Tab의 이름 변경
- Dragging : Tab의 순서 변경
- Clicking : 새 Tab 생성
- x Clicking : Tab 닫기
4-6. Sequencer
- 웹 어플리케이션에서 제공하는 값의 임의성을 분석하기 위한 기능입니다.
- 세션 토큰, CSRF 방지 토큰, 암호 재설정 토큰 등과 같이 랜덤 한 중요한 데이터를 테스트 할 수 있습니다.
4-6-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 tokens whose length deviates by _ characters : 지정한 평균 토큰 길이 벗어나는 토큰 무시 설정
- 모든 설정이 끝난 후, Start live capture를 누르면 라이브 캡처가 시작되며, 라이브 캡처 중에는 토큰 수, requests 수 및 네트워크 오류 수를 progress bar로 보여줍니다.
- 라이브 캡처 진행 중 다음의 옵션을 사용할 수 있습니다.
- Pause/Resume : 캡처 일시적 중단 및 재시작
- Stop : 캡처 영구적 중지
- Copy tokens : 현재 캡처된 토큰 클립보드에 복사
- Save tokens : 현재 캡처된 토큰 파일에 저장
- Auto analyze : 토큰 자동 분석 수행, 라이브 캡처 중 결과 주기적 업데이트
- Analyze now : 최소 100개의 토큰이 캡처되면 Burp가 현재 샘플을 분석 후 결과 업데이트
4-6-2. Manual load
이미 생성된 토큰 샘플(Live Capture / Intruder 이용)을 불러와 샘플에 대한 통계 분석을 수행할 수 있습니다.
4-6-3. Analysis options
토큰에 대한 처리 방법과 분석하는 동안 사용하는 테스트 유형을 설정할 수 있습니다.
Token Handling은 분석 중 토큰 처리 방법을 제어할 수 있습니다.
- Pad short tokens at Start/End : 각 토큰의 시작/끝 패딩 적용 여부 선택
- Pad with : 패딩에 사용될 문자 지정(보통 "0")
- Base64-decode before analyzing : 토큰이 Base64 인코딩 된 경우 분석 전 디코딩 설정
Token Analysis는 문자와 비트 레벨의 테스트에서 수행되는 분석 유형을 제어할 수 있습니다.
4-7. Decoder
- Decoder는 데이터 암/복호화 및 해시 형식으로 변환할 수 있는 기능입니다.
- 휴리스틱(heuristic) 알고리즘을 사용하고 있어서 여러 암호화 형식을 지능적으로 인식할 수 있습니다.
- drop-down 목록을 이용하여 필요한 변환을 선택하여 변환하면 됩니다.
- Smart decode는 아래 값이 인코딩 된 것으로 보이는 데이터를 찾아 내용을 자동적으로 디코딩하는 옵션입니다.
- 위와 같이 데이터 직접 입력하는 것도 가능하지만 인/디코딩하고자 하는 데이터를 선택하여 Send to Decoder으로 이용하는 것도 가능합니다.
4-8. Comparer
- 두 데이터(요청, 응답 등) 간의 비교를 수행하므로, 다른 입력에 대한 응답을 비교하는 데 유용하게 사용할 수 있습니다.
- 비교하고자 하는 값(Request/Response)을 복사 + 붙여넣기 하거나, 파일을 로드하거나, Send to Comparer으로 Comparer에 값을 전송하여 데이터를 로드할 수 있습니다.
- 비교할 두 가지 데이터가 선택되면, Words, Bytes 중 하나의 비교 형식을 선택하여 비교할 수 있습니다.
4-8-1. Words Comparer
단어 단위의 비교로, 비교된 항목 간의 차이점이 단어 수준에 존재할 때 유용한 방식입니다.
4-8-2. Bytes Comparer
바이트 단위의 비교로, 비교된 항목 간의 차이점이 바이트 레벨에 존재하는 경우 유용한 방식입니다.
4-9. Extender
- 자체 또는 타사 코드를 사용하여 기능을 확장할 수 있습니다.
- 확장 기능에 대해 Extensions, BApp Store, APIs, Options에서 설치 및 사용하고 관리할 수 있습니다.
4-9-1. Extensions
- 설치된 모든 확장 기능을 확인할 수 있으며, 추가, 제거, 재정렬(Up/Down) 할 수 있습니다.
- Details 탭 : 해당 확장 기능 정보 확인 가능
- Extension loaded : 확장을 활성화할지 비활성화할지 선택 가능
- Output 탭 : 확장 기능의 표준 출력 스트림 세부 사항 확인 가능
- Errors 탭 : 표준 오류 스트림 정보 확인 가능
4-9-2. BApp Store
- Burp Suite 사용자가 작성한 Burp 확장 기능이 있습니다.
- 사용 가능한 BApps를 확인한여, 설치하여 사용할 수 있습니다.
4-9-3. APIs
- Burp 확장 기능을 개발하는 데 사용할 수 있는 API에 대한 세부 정보를 확인할 수 있습니다.
- 실행 중인 Burp 버전에서 사용할 수 있는 API 정보가 표시되어 있습니다.
- Save interface files 및 Save Javadoc files는 확장 기능을 개발할 때 사용할 수 있도록 코드를 로컬 사본으로 저장하는 기능입니다.
4-9-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 인터프리터)