Burp Suite 사용하기 - 1

2021. 11. 19. 19:55공부/정보보안

반응형
SMALL

 

 

안녕하세요! 종호 입니다 :)

이번 포스팅에서는 Burp Suite 사용하는 방법에 대하여 간단하게 알아볼 예정 입니다.

아직 공부 진행중인 단계라 설명이 많이 미흡할 수 있습니다.

 

허락받지 않은 타 사이트에 대해 무분별한 패킷 위변조, 해킹 시도 등은 범법 행위 입니다.

책임지지 못할 행위에 대해서는 자제하여 주시고,

본인이 구축한 환경 내에서 테스트 용으로 사용해주세요.

 

 

 

 

 

 

 

 

 

 

버프 슈트 내에 존재하는 Proxy 탭을 먼저 들어갑니다.

먼저, Options 에 대해 알아보겠습니다.

① Proxy - ② Options 를 클릭합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Options 메뉴를 눌렀을 경우 가장 위에 표시되는게 Proxy Listeners 입니다.

자세한 설명은 Proxy Listeners 이름 옆에 위치한 ? 를 클릭하시면 영어로 관련 내용이 표시 됩니다.

(영어 공부라도 미리 할 걸 그랬습니다. 혹시 저와 같은 사정이시라면 번역기를...)

 

Proxy Listeners 는 모든 요청과 응답을 모니터링하고 가로채기 위한

Burp의 사용자 주도 워크플로우의 핵심 이라고 합니다.

 

기본적으로 8080 포트를 사용하며, 사용하기 위해서 127.0.0.1:8080 을 프록시 서버로 사용하도록 브라우저를 구성해야 합니다.

 

8080 포트에 서비스가 사용중이라면, 포트를 수정해주면 됩니다. (브라우저에서도 해당 포트와 같게 수정)

예를 들어서, 톰캣과 같은 서비스가 8080 서비를 사용하고 있을때에는 8081 이라던가, 8090 이라던가...

새로운 포트로 수정을 해줘야 합니다.

 

현재 위 이미지에서, Interface 에 해당하는 127.0.0.1:8080 이라고 적혀 있는 부분이 보이실 겁니다.

그 값의 왼쪽에 체크 박스가 하나 놓여져있고, 구분이 Running 이라고 되어 있습니다.

현재는 체크박스가 되어 있지 않은 것을 확인할 수 있습니다.

(기본적으로 체크 되어 있었던 것 같아요.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Running 체크박스에 체크가 되어 있지 않으면,

브라우저를 열어서 127.0.0.1:8080 을 입력했을때 위와 같은 이미지가 표시 됩니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

위 이미지처럼 Running 에 해당하는 체크 박스에 체크를 한 다음에,

다시 브라우저에 127.0.0.1:8080 을 입력해봅니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

체크 박스에 체크 한 경우에는 버프가 Running 중이므로 위 이미지와 같이 표시 됩니다.

 

 

Proxy Listeners 안에 존재하는 Add, Edit 로 관련된 탭이나 사항들에 대해서는

직접 사용 할 일이 생기면 내용을 수정하고자 합니다.

지금 작성하기에는 Burp 에서 설명한 내용을 번역으로 밖에 쓸 수 없어서, 읽으시는 분들이 더 헷갈리실 것 같습니다.

(처음에 번역으로 작성했다가 난잡해서 삭제한건 안비밀)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Intercept Client Requests, Intercept Server Responses 에 대해서 간략하게 설명하면,

Client Requests 는 사용자가 보낸 요청, Server Responses 는 서버에서 받은 응답 이라고 생각하시면 됩니다.

 

Intercept requests based on the following rules 라고 되어 있는 부분둘 다(Clients, Server) 체크해주시면

요청과 응답에 관한 것을 가로챌 수 있습니다.

 

 

요청과 응답에 대한 예를 들어서,

우리가 특정 사이트인, 네이버 또는 구글에 새로 고침 (F5) 을 누르거나 어떤 버튼을 클릭하여 이동할때에

우리(사용자, Client)가 브라우저에 보낸 요청(Requests)이 발생하며,

요청에 의해 네이버 또는 구글의 서버에서(Server) 응답(Responses)을 보내줍니다.

 

표시되는 이미지라던가 로그인에 대한 세션 등 여러가지가 요청과 응답이 발생하고

그것으로 구성되기 때문에 단순하면서도 내용들은 무척 어렵게만 느껴지는것 같습니다.

 

값을 변경하여 서버로 보냈을 경우, 응답이 어떻게 오는지에 따라 값을 변경하여 시도할 수 있으므로 요청과 응답에 관한 체크 박스는 둘 다 체크하여 주는게 좋습니다.

(타사이트에 대하여 값 변경 요청 시도는 하지마세요.)

 

버프를 사용하지 않을 경우, 브라우저에서의 사용자 요청 -> 서버 응답 으로 바로 이루어집니다.

버프를 사용 할 경우, 브라우저에서의 사용자 요청 -> 버프 -> 서버 응답 으로 이루어지게 되며

 

버프에서 사용자가 관련 요청을 읽어보고 수정하여 서버로 보낼 수 있으므로 취약점을 분석 할 수도 있으나,

보안이 취약한 홈페이지에 대하여 악용할 소지도 있습니다.

(그러지마세요... ㅠㅠ)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

딱히 Options 탭에서는 복잡하게 만질건 없습니다.

(제가 복잡하게 아는건 없기 때문에... 사용하다가 혹은 알게되면 다시 글을 올리겠습니다.)

 

제일 위 Proxy Listeners 에서 Running 이 체크되어 있는지, 안되어 있으면 체크.

아래쪽 Intercept Client Requests, Intercept Server Responses 가 체크 되어 있는지, 안되어 있으면 체크.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

그리고 HTTPS 통신 하는 것을 정상적으로 가로채기 위해서, 인증서가 필요합니다.

 

인증서를 다운로드 받는 방법은 두가지가 있습니다.

첫번째는 Proxt - Options - Proxy Listeners 에서 interface 에 입력한 주소와 포트에 접속하여 다운로드 받습니다.

Running 에 체크가 되어 있어야 위 이미지처럼 127.0.0.1:8080 에서 다운로드 받을 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

보안 경고가 뜨긴 하지만, 아무튼 필요하니까 계속해서 다운로드를 받아줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 다운로드 받은 파일을 열어줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

열기를 하면 위 이미지처럼 인증서 정보가 표시되는데,

아래에 인증서 설치를 통해 인증서를 설치할 수 있습니다.

 

인증서 설치와 관련하여서는 두번째 방법 서술 후 이어서 하겠습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

두번째 방법은 버프에서 Proxy - Options - Proxy Listeners 에 있는

Import / export CA certificate 에서 다운로드 받습니다.

먼저 클릭해줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

표시되는 창에서, Certificate in DER format 을 체크한 후 Next 를 누릅니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Select file ... 을 클릭해서 다운로드(export) 받을 경로를 지정해줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

인증서의 형식은 .crt 라고 검색을 통해 알아냈으므로,

경로 지정 후 파일 이름을 CA.crt 로 입력한 후 Next 를 눌러줍니다.

(파일 확장자가 .crt 인게 중요!)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

지정한 경로에 파일이 Export 되었다고 표시되는 창 입니다.

Close 를 눌러줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

첫번째, 두번째 방법으로 다운로드 받은 파일들 입니다.

어떤걸 열어서 설치하더라도 상관은 없습니다.

(하나만 인증서 설치하면 됩니다.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

아무거나 열어서 인증서 설치를 눌러줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

인증서 가져오기 마법사가 시작되면서, 저장소 위치를 지정하라고 합니다.

저는 현재 사용자에다가 체크한 뒤 다음을 눌렀습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

다음으로 넘어가면, ① 모든 인증서를 다음 저장소에 저장 을 체크한 후

인증서 저장소를 ② 찾아보기 하여 ③ 신뢰할 수 있는 루트 인증 기관 을 지정한 후

④ 확인 을 누릅니다. 그리고 ⑤ 다음 을 누릅니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

신뢰할 수 있는 루트 인증 기관이 지정되어 있는 것을 확인한 후, 다음을 누릅니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

인증서 가져오기가 완료되었다는 표시가 뜹니다.

마침을 누릅니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

보안 경고 창으로 인증서 설치 관련으로 표시 되는게 있는데,

인증서 설치에 관한 것이니 예 를 눌러줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

인증서 가져오기에 성공했습니다.

이제 HTTPS 통신에서도 문제 없이 버프에서 요청 응답에 대하여 가져올 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

버프에서 Proxy - Intercept 에 아래 버튼들이 있습니다.

Forward, Drop, Intercept is off, Action, Open Browser

 

현재 활성화가 되어 있는 버튼은 Intercept is off, Open Browser 입니다.

Open Browser 를 클릭해봅니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Open Browser 를 눌렀을때 표시되는 첫 화면 입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

버프에서 Intercept is on 으로 되어 있는지 먼저 확인해주세요.

 

on 으로 되어 있다면, 아까 열어놓은 브라우저에서 특정 사이트의 도메인을 입력해보겠습니다.

저는 익숙한 초록창, 네이버로 하겠습니다.

 

off로 되어 있다면 버튼을 클릭해서 on 으로 만들어주세요.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

naver.com 을 입력했을경우, 평소라면 바로 네이버 메인이 표시되었겠지만

버프가 켜져있으므로 바로 표시되는것이 아니라,

해당 URL에 대해 GET / HTTP/1.1 요청을 하는것을 확인할 수 있습니다.

이 상태로 아무것도 안하더라도 네이버 메인이 표시되진 않습니다.

 

이전(Intercept is off, Open Browser)과는 다르게 활성화된 버튼들이 눈에 보입니다.

= Forward, Drop, Action

 

그리고 버튼에 있던 내용이 변경된 것을 확인할 수 있습니다.

Intercept is off -> Intercept is on

Intercept is on 이라고 표시되어 있는 버튼은 현재 버프가 켜져있다고 생각하시면 됩니다.

(패킷 가로채기)

 

현재 상태는 사용자가 브라우저에 URL인 naver.com 을 입력하여

"내가 방문해도 되겠습니까?" 라고 서버에 요청한 것이라고 생각하시면 됩니다.

 

Forward 를 한번 눌러보겠습니다.

Forward 는 "다음으로" 라고 생각하시면 되겠습니다.

 

Drop 은 현재 가져온 패킷에 대해서 보내지 않고 버리겠다는 의미 입니다. "이전으로"가 아닙니다.

 

Action은 현재 보고 있는 패킷에 대하여 어떠한 행동을 취하겠다 인데,

다른 리본메뉴 탭 (Intruder, Repeater 등)과 연관해서 사용할 수 있습니다.

현재 포스팅에서는 Action에 대해 다루지 않습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

버프창에 표시되는 내용들이 변경되었으며, 제일 위에 HTTP/2 200 OK 라는 문구가 눈에 보입니다.

이전에 우리가 했던 요청에 대해 "응 그렇게 해" 라고 서버측에서 응답을 해준 것이라고 생각하면 됩니다.

 

여기서 다시 Forward를 누르면 서버측에서 들어오라고 얘기했으니 네이버 메인페이지를 표시하면서

클라이언트에서 각종 이미지, 스크립트 등을 요청합니다.

 

위 이미지에서 HTML 코드를 비롯하여, 스크립트들을 다 가지고 있다고 서버측 응답이 돌아왔기 때문에

이미 무엇을 가지고 있는지는 다 알고 있는 상태이며, 각 버튼들과 표시되는 이미지들을 사용하기 위해서

서버측에 불러들일수 있는 파일들을 요청합니다.

 

우리가 한건 URL을 입력한 것 뿐인데,

열심히 요청과 응답을 반복하면서 결국에는 메인페이지, 해당하는 이미지,

각종 버튼들을 클릭했을 경우 이동되는 링크 주소 등

버프를 이용하여 자세히 확인할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

아래쪽 HTML 코드 중에서 content="□" 이 눈에보입니다.

현재 글꼴(글씨체)에 대하여 옵션을 설정해주지 않았으므로 한글이 깨진 현상으로 보입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

한글 깨짐 현상을 제거하기 위해, 버프 리본메뉴중

① User Options 를 클릭합니다.

나오는 탭들 중에서 ② Display 를 클릭합니다.

 

두번째 정도에 위치한 HTTP Message Diplay 라는 곳에서,

③ Change font ... 라는 것을 찾아 클릭합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

폰트와 사이즈(글꼴와 글씨크기)를 지정할 수 있습니다.

제공하는 폰트들 중 익숙한 녀석들을 찾기 위해 Font 에서 마우스 스크롤을 아래로 내려봅니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

한글로 당당하게 적혀있는 폰트들을 확인해줍니다.

 

굴림체, 궁서체, 돋움체, 바탕체, 함초롬돋움 확장, 함초롬바탕 확장, 함초롱바탕 확장B

를 확인할 수 있었습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

배움에 있어서는 조금 진지한 편이라 궁서체로 할까 하다가

가장 무난해보이는 돋움체를 선택하여 OK 를 눌러줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

폰트를 설정한 바로 아래에 Character Sets 이 있습니다.

거기서 네번째인 Use a specific character set 동그라미 체크박스에 체크를 해주시고,

오른쪽 드롭다운 메뉴를 클릭하여 UTF-8 을 찾아 선택하여 줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

그리고 다시 버프에서 Intercept is off 를 눌러 Intercept is on 을 만들어 준 뒤,

Open Browser 를 통해 열린 브라우저에서 초록창의 URL인 naver.com 을 칩니다.

처음은 우리가 요청한 값일테고, Forward를 눌러 이전처럼 응답값을 확인하면

깨져있었던 content 내용이 한글로 표시되는것을 확인할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Proxy 메뉴에 표시된 탭들 중에는 HTTP history 라는게 있습니다.

이제껏 우리가 했던(클라이언트) 요청,

요청에 해당하는 서버측 응답에 대해서 history가 남는 것이라고 생각하시면 됩니다.

 

 

 

 

 

작성하다보니 내용이 무궁무진하게 많아서, 이쯤에서 이번 포스팅은 끝을 내도록 하겠습니다.

다음에 더 자세한 내용으로 찾아뵐 수 있기를 바랍니다.

 

 

 


글 읽어주셔서 감사합니다.

오늘도 좋은 하루 되세요 :)

반응형
LIST