!warning!
본 게시글은 본인의 학습기록을 위해 작성된 알려진 학습 기법
함부로 악의적으로 이용은 엄연히 불법 임으로
절대 시도하지 말 것이며
사고 발생 시 본인은 절대로 책임지지 않습니다!
~~
Chapter 04. 버프 스위트
HTTP 프록시 개요
- HTTP 프록시는 사용자와 웹 서버 가운데에 위치해서 서로간의
HTTP요청과 응답을 중간에서 전달하는 역할을 함-전달하는 과정에서 메시지의 내용을 조회하거나 수정할 수 있으며 전달 취소도 가능
버프 스위트 설정
-버프 스위트를 칼리 리눅스 내부에서 설정하여 웹 브라우저와 연동하여
사용해 보겠습니다.
스샷.1
1 . 우선 버프 스위트 아이콘 은 프로그램 메뉴나
화면 좌측 즐겨찾기 아이콘 모음에서 찾을 수 있습니다.
사진.1
2 . 버프 스위트 를 처음 실행하면 라이선스 동의를
구하는 창이 표시됩니다
2.1 I Accept 버튼을 눌러 닭치고 동의 하고 진행 해 봅시다 🙂
스샷2
2 .2 역시 OK 버튼 클릭
스샷. 3
2.3 상급 버전으로 업그레이드 할꺼냐 묻는 창입니다.
학습 중에는 그양 기존버전을 사용하도록 합시다 닭치고 Close 클릭
스샷. 4
2.~~4~~(死) 스크린샷 상 체크 되어있지만 다른거 건들지 마시고 Start Burp 버튼 클릭
~~(물론 다른거 건드실 용자분들은 따로 말리지 않겠습니다만 단 본인은 책임지지 않습니다.)~~
스샷. 5
2.5 기다리시면 다음 단계로 넘어감니다 뻘짓 Nope!
스샷. 6
2.6 버프 스위트 가 실행되면, Proxy 탭을 선택하고, Options 탭을 선택하여,
프록시 인터페이스를 확인합니다.
스샷. 7
2.7 처음 실행하면 127.0.0.1:8080으로 되어있을것인데. 프록시가 사용할 IP 주소
와 포트 번호입니다. Running 항목에 체크 표시가 되어 있을 건데 이것은 프록시가
실행 중인 것을 의미
2.7.1 만약 8080포트가 이미 다른 프로그램에서 사용되고 있을시
Running의 체크 표시가 꺼져 있을 수 있습니다.
이 경우에는 Edit버튼을 눌러 포트를 변경 하시면 됩니다.
## 웹 브라우저 프록시 설정
– 웹 브라우저에서 웹 서버에 접속할 때 발생하는 요청을 버프 스위트로 전달하기
위해서는, 웹 브라우저 설정에서 프록시 관련 설정을 건들어야 합니다.
위에서 확인한 IP주소와 포트(ex:127.0.0.1:8080)를 사용하여 설정하면 됩니다.
파이어폭스를 예로 들어, 프록시를 건들어보겠습니다.
스샷. 8
1. 파이어폭스의 상단 우측의 아이콘을 누르면 메뉴가 표시됩니다.
1.1 Preferences를 선택하고, Advanced → Network →Settingsf를
각각 건들어봅니다.
스샷. 9
2.Network Proxy 에서 Settings 버튼을 클릭
스샷. 10
3. 그럼 또다른 창이 뜨는데 Manual proxy Configuration을 선택하고,
HTTP Proxy란에 127.0.0.1 과 Port란에 8080 을 입력합니다.
만일 이전에 버프 스위트에서 IP주소나 포트를 변경했다면,
스샷. 11
변경돤 정보를 입력하고 OK버튼누르면 설정은 완료!
스샷. 12
4. 파이어폭스에서 새로운 탭을 열어, 웹 해킹 실습 가상 머신의
IP주소로 접속해 보니다.
처음에는 접속이 되지 않을 것입니다.
대신, 버프 스위트의 프록시(proxy) 탭아래의 인터셉트(intercept)
탭의 색깔이 주활색으로 변해 있을 것입니다.
4.1. 접속 요청이 바로 인터넷을 통해 전달되지 않고,
대신 버프 스위트로 전달되어 인터셉트된 상태로
사용자의 조작을 기다리는 상태가 된 것입니다.
스샷. 13
5. 인터셉트 탭을 눈러보면, 인터셉트된 요청 메시지의 내용을 확인할 수 있습니다.
실습용 가상 머신 웹 페이지로 요청한 메시지가 표시되고 있습니다.
경우에 따라 다른 요청이 인터셉트되어 있는것도 있을 수 도 있습니다.
이것은 파이어폭스 자체적으로 한것인데
이런 요청이 인터셉트된 경우 입니다.
이 경우, Forward 버튼을 누르면
(경우에 따라 여러번 눌려야 하는 경우도 있을 수 있습니다)
스샷.13와 같은 요청이 표시될 것입니다.
스샷. 14
6. 그리고 Intercept is on 버튼을 눌러 인터셉트 기능을 꺼 보겠습니다.
스샷. 15
Intercept is off로 버튼이 변경되고, 더이상 아무런
요청 메시지가 표시되지 않게 됩니다.
인터셉트 기능을 끄게 되면 이전에 인터셉트되어 있던 요청들을 모두 전송합니다.
또한 더 이상 어떠한 메시지가 들어와도 인터셉트를 하지 않고 그대로 전달 합니다.
스샷. 16
7. 인터셉트 기능을 끈다고 하더라도, 웹 브라우저에
프록시 설정이 되어 있는 동안에는 모든
HTTP 요청과 응답이 버프 스위트를 통해 전달됩니다.
Proxy의 HTTP history 탭을 눌러보면, 인터셉트 기능과 상관없이 프록시로 요청이
계속해서 전달되는 것을 확인할 수 있습니다.
## 버프 스위트의 기능
– 이 책의 실습을 위한 필요한 기능에 대해 살펴보겠습니다.
## 타깃(Target)
사이트 맵(Site map)
– 타깃 탭의 사이트 맵을 이용하면 접속한 모든 호스트와
URL 구조를 쉽게 파악할 수 있습니다.
스샷. 17
① 호스트를 트리 형태로 보여줍니다.
선명하게 표시된 호스트는 직접 접속한 호스트를
흐릿하게 표시된 호스트들은 버프 스위트가 HTTP 메시지를 분석하여
메시지에 포함된 링크들을 자동으로 찾아 내 보여주는 호스트 입니다.
② ①에서 선택된 호스트를 대상으로 보낸 요청과 응답 정보
(메소드와 URL, 파라미터 존재여부(Params),응답코드, 응답 메시지의 길이 등)
를 간략하게 보여줍니다.
③ ③의 Request탭은 ②에서 선택한 항목의 요청 메시지 내용을 보여줍니다.
Request 탭을 선택하면 응답 메시지의 내용도 확인할 수 있습니다.
스샷. 18
스샷. 18 같은 Site map 탭 바로 아래의 파란박스 부분이 사이트 맵 필터 입니다.
필터(Filter) 부분을 클릭하면 원하는 항목만 표시할 수 있습니다.
각 필터의 항목은 다음과 같습니다.
– Show only in-scope items : 바로 다음에 설명할 스코프에
설정된 항목들만 표시한다.
– Show only requested items : 직접 요청한 항목들만 표시합니다.
즉 흐릿하게 표시된 호스트들은 더이상 표시되지 않는다.
– Show only parameterized requests : 파라미터가 포함된 요청만 표시한다.
– Hide not-found items : 웹사이트에 존재하지 않는 항목은 표시하지 않는다.
– Fiter by MIME type : 응답 데이터의 종류로 필터링한다.
– Fiter by status code : 응답코드로 필터링한다.
– Fiter by file extension : 파일 확장자로 필터링 한다.
– Fiter by annotation : 코멘트(コメント)를 남겼거나,
하이라이트된 항목만 표시한다.
– Show all, Hide all 버튼 : 모든 요청을 표시하거나 숨긴다.
## 스코프(Scope)
– 기본적으로 버프 스위트는 버프 스위트를 거쳐간 모든 정보를 표시합니다.
실습 하다보면, 종종 실습 대상과 관련된 정보만 표시하고 싶은 경우가 있습니다.
이럴때 스코프 기능을 이용하여 원하는 내용만 표시할 수 있습니다.
스샷. 19 타깃-스코프 화면
스코프 메뉴의 Include in scope 테이블에서 스코프 리스트에 대상의 추가,
수정, 삭제할 수 있습니다. 또한 아래의 Exclude from scope 메뉴에서는 특정 파일
(또는URL)에 대한 요청을 제외할 수도 있습니다.
사진. 2
그 밖에도 원하는 호스트를 스코프에 좀 더
간단하게 추가할 수 있는 방법이 있습니다.
위 스샷. 20 처럼 사이트 맵의 호스트 항목에서
바로 스코프에 추가할 수도 있습니다.
호스트항목을 선택하고 마우스 우클릭 메뉴에서
Add to scope 메뉴를 선택합니다.
사진. 3
이때 위 스샷. 21 같은 다음과 같은 문구가 표시될 수 있습니다.
스코프에 등록되지 않은 항목들을 프록시 히스토리나
다른 기능으로 아예 전달하지않기를 원하는지 물어보는 내용입니다.
Yes를 선택하면 스코프에 등록되지 않은 항목들에
대해서는 더이상 데이터를 수집하지 않게 됩니다.
No를 선택하면, 데이터를 계속해서
수집합니다. 비록 데이터를 수집하더라도,
스코프에 있는 항목만 표시하도록 설정할 수 있습니다.
더 이상 이 문구가 표시되지 않도록 하려면 아래 체크박시에 체크를 하면 됩니다.
스코프에 추가된 항목들은 스코프 탭에서 확인할 수있습니다.
사진. 3
## 프록시(Proxy)
인터셉트(Intercept)
– 인터셉트 기능을 이용하면 웹 브라우저와웹
서버가 주고받는 HTTP 요청 메시지와 응답 메시지의
내용을 변경할 수 있습니다.
인터셉트된 요청 메시지는 사용자가 Forward 버튼을눌려
전송시킬 때 까지는 웹 서버로 전송되지 않습니다.
마찬가지로 응답 메시지를 인터셉트할 경우
에도 응답 메시지는 사용자가 전송시킬 때까지
웹 브라우저로 전달되지 않습니다.
HTTP는 자체적으로 타임아웃 처리를 하지 않기 때문에 인터셉트를
장시간 했다가 메시지를 전송하더라도 통신이 되는 데 문제가 없습니다.
단, But 세션 타임아웃이 적용 되어 있는 웹 사이트의 경우,
시간이 지나면 로그인 된 상태가 끊어지는 일이 발생할 수 있습니다.
사진. ~~4~~ (死)
처음 버프 스위트를 실행하면 인터셉트가 항상 켜져 있게 되고
Intercept is on 상태가 됩니다.
이상태에서 버프 스위트는 웹 브라우저의 모든 요청을
인터셉트하고 대기열에 대기시켜 둔 후
인터셉트되어 있는 각 요청에 대해 하나씩 사용자의 입력을 기다리게 됩니다.
사용자는 Forward 버튼을 눌러 인터셉트한 요청을 전송시키거나
Drop버튼을 눌러 요청을 취소 할 수 있습니다.
Forward를 하기전 메시지의 내용을 변경하는 것도 가능합니다.
하나의 인터셉트된 메시지를 처리하고 나면,
다음 인터셉트된 메시지가 나타나고 다시
사용자의 입력을 기다리게 됩니다 .인터셉트 기능을 끄고 싶다면
Intercept is on버튼을 누르면 됩니다.
이렇게 하면 Intercept is off 상태로 바뀌게 됩니다.
만약이 시점에 아직 대기열에 있던 인터셉트된 메시지가
있다면 모든 메시지를 서버로 전송시킵니다.
인터셉트 기능을 끄더라도 각 메시지는 다음에서 설명할
프록시의 히스토리 메뉴에서 계속 확인 할 수 있습니다.
히스토리(HTTP history)
– 히스토리 기능의 화면은 사이트 맵의 ②, ③과 유사합니다.
그러나 히스토리 기능은 접속 기록을 시간 순으로 정렬하여 보여주고,
사이트 맵보다 더 많은 정보를 보여줍니다.
스샷. 20 프록시-HTTP 히스토리 화면
화면의 상단 부분에서는 각 요청의 핵심적인 정보를 요약해서 보여줍니다.
한 항목을 선택하면 하단 부분에서요청 메시지(Request 탭)와
응답 메시지(Response 탭)를 확인할 수 있습니다. 스샷. 20 을 보면 # 탭을 보면
1이라는 숫자가 있고 옆에 화살표 부분을 클릭하면 여러가지 색깔을 지정할 수있는
항목이 뜸니다 이것은 하이라이트 기능인데 이 기능을 적용하면 눈에 잘 식별 할
수 있게 표시할 수 있습니다 .
언급한 번호를 누르거나 마우스 우클릭 메뉴를 이용해서 하이라이트할 수 있으며
여러 가지 색깔 지정이 가능합니다.
스샷. 21
스샷. 21은 스샷. 20의 192.168.56.105 호스트에 대한 요청만 표시하고 있는데,
이는 스샷. 21 파란박스 부분의 필터를 이용해서 스코프에
추가된 호스트만 표시하도록 했기 때문입니다.
사이트 맵에서와 마찬가지로 필터 부분을누러서 원하느 항목만 표시할 수 있습니다.
필터의 항목은 사이트 맵의 필터와는 큰 차이가 없습니다.
차이가 있는 항목을 정리하면 아래와 같습니다.
– Hide items without responses : 응답이 없는 항목은 표시하지 않는다.
– Filter by listener : 포트 번호로 필터링한다.
## 옵션(Options)
– 옵션 메뉴에서는 프록시와 관련된 옵션을 설정할 수 있습니다.
스샷. 22
자주 사용하는 설정은 다음과 같습니다.
– Proxy Listeners : 프록시의 인터페이스 주소와 상태를 설정한다.
– Intercept Client Requests : 어떤 요청을 인터셉트할지 설정한다.
– Intercept Server Responses : 어떤 응답을 인터셉트할지 설정한다.
– Responses Modification : 응답 메시지를 자동으로 수정한다.
– Match and Replace : 요청/응답 메시지의 특정 부분을 패턴 매칭하고
자동으로 변경한다.
## 스파이더(Spider)~~스파르타(Sparta)~~
– 스파이더 기능은 웹사이트의 링크를 자동으로 찾아
웹사이트의 전체 구조를 빠르게 알아내고자 할 때 사용하는 기능입니다.
이와 같이 링크를 분석하여 새로운 웹 페이지를
찾아내는것을크롤링이라고 하는데
스파이더 기능은 자동으로 크롤링을 수행하는 기능입니다.
사진. 5
스파이더 기능은 타깃의 사이트 맵에서 호스트 항목의 마우스 우클릭 메뉴중
Spider fromhere 메뉴를 이용하여 스파이더를 실행할 수 있습니다.
사진. 6
스파이더가 실행되고 있던 중에 로그인이 필요한 경우가 발생하면 스파이더는
사용자로부터 로그인 정보를 입력받기 위해 사진. 6과
같은 팝업창을 생성하기도 합니다.
사용자 아이디와 패스워드를 입력하여
Submit form 버튼을 눌러 진행하면 인증 이후의
콘텐츠들도 크롤링 할 수 있게 됩니다.
lgnore form 버튼을 누르면 로그인 폼을 무시하고 진행합니다.
사진. 7
스파이더가 실행 중일 때에는 Spider is running 버튼의 활성화되어 있습니다.
이 버튼을 누르면 스파이더 실행을 멈출 수 있으며 이때
버튼의 내용이 Spider is paused 로 변경됩니다.
버튼을 다시 눌러 스파이더를 다시 동작시킬 수 있습니다.
## 인크루더(Intruder)
– 인크루더는 요청 메시지의 특정 위치를 지정하여
여러 개의 데이터를 자동으로 반복 해서 전송하는 기능입니다.
이때 보내는 데이터를 페이로드(payload)라고 합니다.
이러한 테스팅 방법을 퍼징이라고도 합니다.
타깃 탭에서는 공격 대상을 정할 수 있습니다.
호스트 주소와 포트를 지정할 수 있습니다.
사진. 8
포지션(Positions) 탭에서는 공격 종류(Attack type)를 선택할 수 있고,
아래에 표시된 요청 메시지를 임의로 생성한 다음,
페이로드를 삽입할 위치를 지정할 수 있습니다.
사진. 9
페이로드 입력 위치는 주로 파라미터나 쿠키 등과 같이
동적으로 변경될 수 있는 부분을 지정합니다.
공격의 유형에 따라, 각 위치마다 페이로드를 일일이 하나씩 입력 하여
전송할 수도 있고, 모든 위치에 동일한 페이로드을 입력하여 전송할 수도 있습니다.
공격의 유형에 대한 사세한 내용은
Help → Burp Suite Documentation에서 확인할 수 있습니다.
사진. 10
사이트 맵이나 프록시 히스토리 항목의 우클릭 메뉴에서
Send to Intruder 메뉴를 이용하면,
기본이 될 요청 메시시를 쉽게 생성할 수 있습니다.
모의해킹 진행 중에 좀더 테스트하고
싶은 요청이 있다면 이 방법을 이용하여 쉽게
인트루터 기능을 사용할 수 있습니다.
포지션 탭의 설정이 끝나면 페이로드(payloads) 탭에서
어떤 페이로드를 입력하여
테스트할지 지정할 수 있습니다.
사진. 11
페이로드의 타입으로 패스워드와 같은 무자열의 리스트로 지정할 수도 있고,
숫자나 문자의 범위 등을 정하여 랜덤한 값을 입력하도록 만들 수도 있습니다.
대소문자를 구분하여 입력하거나, 비정상적인 값들을 입력할 수도 있습니다.
한 예로 페이로드 타입을 문자열 리스트(Simple list)로 정하고, 아래 Load 버튼을
이용해서 패스워드 목록 파일을 불러온 후 브루트 포스 공격을 수행할 수 있습니다.
## 리피터(Repeater)
– 리피터는 인트루터와 비슷한 기능을 수행하지만 수동으로 메시지를 조작하며
반복적인 테스트를 하기 위한 기능입니다. 인크루더의 기본 메시지를 생성할 때
Send to Intruder 메뉴를 활용한 것과 마찬가지로 프록시 히스토리 항목의 우클릭
메뉴중 Send to Repeater를 이용하여 쉽게 요청을 리피터로 보낼 수 있습니다.
사진. 12
Send to Repeater로 보낸 요청이 Repeater 탭에 나타납니다.
사진. 13
화면 왼쪽의 요청(Request) 부분에서 메시지를 마음대로 변경할 수 있습니다,
GO버튼을 누르면 요청이 전송되고, 요청에 대한 응답이 화면 오른쪽 응답(Response)
부분에 표시됩니다. GO 버튼을 누를 때마다 반복 요청이 가능하기 때문에 수동으로
값을 조작하고, 그 값에 따라 응답이 어떻게 변하는지 쉽게 확인할 수 있습니다.
기타 기능
– 그 밖에도 필요에 따라 다양하게 활용할 수 있는 기능들이 있습니다. 각 기능들을
모두 일일이 설명하기에는 지면과 현재 작성된 시간상 허락되지 않아
여기서는 몇 가지 기능은 간략하게 언급하고
자세한 기능 설명은 Help → Burp Suite Documentation을 참고하시기 바랍니다.
스캐너(Scanner)
– 스캐너는 웹 어플의 보안 취약점을 자동으로 찾는 기능입니다.
스캐너 기능은 유료 버전에서만 제공됩니다.
이슈 정의(Issue definitions) 탭을 보면 스캐너를 통해
찾을 수 있는 취약점 목록을 확인할 수 있습니다.
시퀸서(Sequencer)
– 시퀸서는 세션 값을 추측하는 데 사용하거나, 세션 값이 얼마나 랜덤하게
생성되는지 테스트하는데 사용할 수 있습니다. 세션 값이 추측될 수 있는경우,
세션 하이재킹 공격에 쉽게 노출될 수 있습니다.
디코더(Decoder)
– 디코더는 각종 문자열의 인코딩, 디코딩 값을 확인하는 데 사용할 수 있습니다.
URL인코딩, HTML 인코딩, 헥스 값 및 Base64로 인코딩된 값을 디코더를 이용하여
확인할 수 있습니다.
그리고 base64라는 문자열을 base64 인코딩한 후
다시 디코딩했을 때의 결과를 보여주는것도 있습니다 .
컴페어러(Comparer)
– 컴페어러는 두 개의 요청 메시지나 응답 메시지를 일대일로
비교하여 두 메시지 간 의 차이점을 알아내고자 할 때 사용합니다.
프록시 히스토리에서 컨트롤 키를 이용
하여 동시에 항목을 두 개 선택한 후 마우스 우클릭 메뉴의
Send to comparer 메뉴를
이용하여 컴페어러로 요청(또는 응답)을 보낼 수 있습니다.
익스텐더(Extender)
– 익스텐더 기능을 이용하면 자신이 개발한 코드나 서드 파티에서 개발한 확장 기능
을 추가로 설치하여 사용할 수 있습니다. BApp Store 탭을 보면 기본으로 제공되는
확장 기능들의 목록이 표시됩니다. 원하는 기능이 있다면 체크하고 사용할 수 있습니다.
————————————————–
작성 글은 여기까지이고 긴글을 읽어 주셔서 감사합니다.
좋은 하루 되시고 하시는 일마다 잘 되시고
코로나 조심하세요 🙂