Burp Suite 사용법

2016. 7. 1. 02:13Tools

 
burp suite  응용 프로그램 테스트에 사용할  있는 최고의 도구  하나입니다.  request 가로채서 수정하고어플리케이션 취약점을 수행하고로그인 창에 brute force 공격을   있는 것과 같이 다양한 업무를 수행하도록 도와줍니다. burp suite 주요기능을 논의함으로써 전체기능을 사용할  있을 것입니다.

기본적으로 backtrack 5에서 burp suite 무료 버전을 이용하실  있습니다무료 버전에서 사용할  없는 기능  일부는 스캐너작업 스케줄러대상 분석기등등입니다.  전반적으로 다음과 같은 기능이 있습니다.

1) proxy - burp suite proxy 함께 사용되는데, default 8080 포트에서 실행됩니다 proxy 사용하여 클라이언트 시스템에서  응용 프로그램으로 흐르는 트래픽을 가로채서 수정합니다.   proxy 사용하려면 우리는  proxy사용 하도록 브라우저를 구성 해야 합니다.  우리는 패킷을 의도한 대상에 도달 하지 않게 하거나 특정 호스트에redirect 하거나패킷을 삭제할 수도 있습니다.

2) spider - spider 기능은  링크콘텐츠 등을 찾는  사용 됩니다로그인 폼을 찾으면 자동으로 전송하고, response 통해 새로운 contents 찾습니다 정보는 scanner  보내져서찾아낸 모든 link content 대해 scan 하게됩니다.

3) scanner -  응용 프로그램을 scan하여 취약점을 찾는데 사용 됩니다검사의 종류는 passive, active, user-directed 있습니다.   가지 false positives 테스트 하는 동안 발생할  있습니다자동화된 스캐너에는 100% 정확한 결과가 없음을 기억하는  중요합니다불행하게도 무료 버전으로는 scanner 기능이 제공되지 않습니다.

4) intruder -  기능은 브루트 포스 공격을 수행하거나  응용 프로그램을 fuzzing하거나취약점을 exploite하는 것과같은 다양한 목적을 위해 사용할  있습니다.

5) repeater -  기능은 같은 요청을 많은 횟수로 수정해서 보내서응답을 분석할  사용 됩니다.

6) sequencer -  기능은 주로  응용 프로그램에서 제공 하는 세션 토큰의 임의성을 확인   사용 됩니다.  이것을알아내기 위해 다양한 고급 테스트를 수행 합니다.

7) decoder -  기능을 사용하여 암호화된 데이터를 다시 원래 형태로 해독하거나데이터를 암호화 하기 위하여 사용할  있습니다.

8) comparer -  기능은  개의 요청응답 또는 다른 형태의 데이터 비교를 수행하는  사용됩니다 기능은 다른입력에 대한 응답을 비교 하는 경우에 유용할  있습니다

1) Proxy


proxy 기능은 request 가로채고 수정할  있습니다.  request 가로채고 조작하기 위하여우리는  브라우저에서트래픽이 proxy 향하도록 구성해야 하며그것은 default 127.0.0.1:8080 입니다.

브라우저에서 설정이 끝나면, burp suite  열고 [proxy]에서 [intercept is on]으로 되어있는지 확인합니다.
[alerts] 탭으로 가면 8080포트로 proxy 돌고 있는지 확인할  있습니다.  우리는 또한 [proxy] 아래 [옵션탭으로 이동하여  구성을 변경할  있습니다.
proxy 실행하는 동안 모든 옵션에 대하여 보겠습니다.   [proxy] 아래 [옵션탭으로 이동합니다.
여기에서 우리는 수신하는 proxy 포트를 수정할  있으며심지어  proxy listner 추가할  있습니다. Burp SSL보호  사이트에 인증서를 제공할  있는 옵션도 있습니다기본적으로 Brup 설치할  자체 서명  CA 인증서를만듭니다현재 선택  옵션 CA-signed per-host certificates 우리가 연결하려는 특정 host 대해 Brup CA인증서로 서명  인증서를 생성 합니다우리가 우려할 유일한 일은 ssl 보호된 웹사이트에 연결할  경고 수를 줄이는것입니다.

우리가 [listen in loopback interface only] 옵션에 체크하지 않는다면네트워크 상의 다른 시스템을 위해 proxy로서 사용될  있습니다.  동일한 네트워크의 모든 컴퓨터는 burp proxy proxy 사용할  있으며그것의 트래픽을 릴레이 합니다. 
[support invisible proxying for non-proxy-aware clients] 옵션은 프락시를 사용하는지 모르는 client 사용됩니다. proxy 대한 옵션이 브라우저에 설정되어있지 않고다른  예를 들어 hosts.txt 파일에 있는 경우를 말합니다 경우 한가지 이슈사항은 request 브라우저에 설정한 경우의 request 약간 다르다는 점이다따라서 non-proxy-aware client로부터 트래픽을 받는다면 이것을 burp   필요가 있습니다.  [redirect to host], [redirect to port] 옵션에 적은 대로 host port redirect   입니다.
마찬가지로 우리는 여기에 지정하는 규칙에 따라 request response 가로챌  있습니다트래픽이 많을 경우 우리가 원하는 일부 request  가로채도록 설정할  있습니다.

 
response에서 받은 HTML 수정 하기 위한 옵션이 있습니다우리 숨겨진  필드를 표시(unhide hidden from fields)하거나자바 스크립트 제거(remove all javaScript)   있습니다.  마찬가지로 특정 패턴 찾기  사용자 지정 문자열로 대체할  있는 옵션이 있습니다우리는 여기에 정규 표현식을 지정해야 합니다. burp 패턴을 찾아서 지정 문자열로 대체하기 위해, request  response 구분 분석할 것입니다.

이제 우리가 burp suite 브라우저 안의 환경을 제대로 설정했다면, request 가로챌  있습니다.  우리가 request보낼  마다 burp suite 의해 가로채어지므로우리는 일일이 수작업으로 forward 시켜야 합니다따라서 패킷의 내용을 정말 보고자  때만 [intercept is on] 옵션을 유지 하는 것이 좋습니다.

브라우저를 열고 검색을 시작 합니다우리는 request  burp suite 의해 가로채어지고 있음을   있습니다.  따라서 우리의 proxy 작동하고 있습니다우리는 그것에 마우스 우측 클릭해서 분석을 위해 burp 다른 다양한 도구를 요청할  있습니다.

2) Spider


Burp spider   응용 프로그램의 지도를 만들어 주기 위해 사용됩니다전체 응용프로그램에 대한 상세한 분석을 하기 위해 링크를 찾고  응용 프로그램을 자동으로 크롤링해서 발견하고모든 로그인 폼을 submit  것이다이렇게 찾은 링크들은 세부 검색을 위한 Scanner  보내지게 된다 경우 취약한  어플리케이션 상에서 spider 도구를 사용하게  것입니다간단히 하기 위해서는 브라우저에서 취약한  어플리케이션으로 이동 > Burp suite [intercept is on]으로 되어있는지 확인 >  burp suite 의해 request  intercept  > 마우스 우측 버튼 클릭  > [ send to spider]  클릭.  
이렇게 하면 경고 창이 팝업 되면서 scope(범위) 항목을 추가 하도록 요청합니다. [Yes] 클릭 합니다. scope(범위) 기본적으로 테스트를 실행 하고자 하는 대상 영역을 정의 합니다.
[target] >[site map] 으로 가면 target url 추가되어 있는 것을   있습니다.  아울러 http://google.com 같은 다른대상이 대상 목록에 추가  것을   있습니다. burp suite Burp proxy 사용 하는 동안우리가 탐색하는 웹을target으로 자동 추가 합니다어떤 target이든 오른쪽 버튼을 클릭 하고 [add item to scope]  항목을 추가 클릭 하여[scope] target 추가할  있습니다.
[scope] 탭으로 취약  어플리케이션이 scope 추가되었음을 확인할  있습니다.
이제 [spider] 탭에 가서 [option]  클릭 합니다여기서 우리는 Burp spider  응용 프로그램에서 실행 하는 동안 다양한 옵션을 설정할  있습니다우리는 그것은  사이트 관리자가 검색 엔진에 인덱싱 되지 않도록 설정한 경우에robots.txt 파일에 대한 확인을 요청할  있습니다 다른 중요  옵션은 [passively spider as you browse] 입니다기본적으로 Burp spider passive active 모드에서 모두 실행될  있습니다.  우리가 Burp proxy 사용하여  어플리케이션 확인하는 동안새로운 링크와 콘텐츠를 scanning하는 것을 유지할 것인지 묻습니다.

 다른 중요  옵션은 [application login] 입니다.  Burp spider  로그인 폼을 만날 때마다 자동적으로 자격증명을 제출할  있습니다 취약한  어플리케이션에서 사용되는 자격 증명으로서 [admin/password] 제출하도록   있습니다그리하여 Burp suit  자동으로  자격증명을 제출하고 추가 정보를 찾기 위해 crawling 계속  것입니다또한 원하는 경우 쓰레드 수를 변경할  있습니다.
응용 프로그램 spidering 시작 하려면 어플리케이션에 대한 branch(분기) 표시 하고 마우스 오른쪽 버튼 클릭하여, [spider this branch]  클릭

이렇게 하면 Burp spider 시작 됩니다우리는 [spider] > [control] 탭에 가면만들어지고 있는 request   있습니다또한 Burp spider 대한 custom scope 정의할  있습니다.
일단 실행이 완료 되면우리는  어플리케이션의 branch 대해 새로 발견된 URL 많이 표시 됩니다 URL들은 우리에게  응용 프로그램에 대한 매우 유용한 정보를 제공합니다우리는  URL들을 다음 Burp scanner 같은 다른Burp 도구들에게 보내어 취약점에 대해 scan   있습니다.

3) Intruder


Burp Intruder  fuzzing, brute force attack  같은 취약점에 이용할  있습니다이번 경우에는 brute force attack 기능을 사용할 것입니다. Burp Suite에서 [ intercept is on] 으로 되어있는지 확인하고 웹에서 로그인 합니다.
request burp suite 의해 가로채어  것입니다.  오른쪽 클릭  [send to intruder] 클릭.
[intruder]  request 정보를 보낼 것입니다.  [intruder] 탭으로 이동 합니다이제 우리는 Burp suite에서 brute force attack 설정해야 합니다. [target] 탭에서 이미 request 보고 목표를 설정 했음을   있습니다.
이제 [positions] 탭으로 이동하면 우리가 이미 intruder 보낸 request   있습니다일부는 강조 표시가 되어있습니다.  이것은 기본적으로 brute suite attack 에서 변경되어질 부분을 추정한 것입니다.  이번 경우는 단지  사용자 이름 암호가 변경  것입니다.  우리는 Burp 적절하게 구성해야 합니다.
오른쪽에 clear 버튼을 클릭 합니다강조 표시  텍스트가 모두 제거 됩니다이제 공격에 대한 매개변수로 사용자 이름 암호만을 설정해야 합니다.   request에서 username( 경우 "infosecinstitute") 강조 표시 하고 [add ] 클릭 합니다마찬가지로 password 강조 표시하고 [add]  클릭 합니다. username  password  번째   번째 매개변수로 추가 됩니다완료 되면 다음과 같이 보일 것입니다.
우리가 해야 다음 일은 request 윗부분에 있는 공격에 대한 유형[attack type] 설정해야 합니다. default로는 [sniper]설정되어 있습니다.  하지만  경우에는 [cluster bomb] 사용해야 합니다.

아래는 Portswigger.net 에서의 Burp 설명서  따라 공격의 종류의 차이에 대한 설명입니다.

Sniper  단일 페이로드 집합을 사용 합니다그것은 차례로  위치를 target으로 하고  자리에 차례로  페이로드를 삽입합니다주어진 request 처리하는 동안 target 아닌 위치는 영향을 받지 않습니다.   공격 형식은 XSS처럼공통적이고 개별적인 다수의 필드를 테스트 하는  유용 합니다 공격에서 생성되는 request 수는  위치 수와 페이로드 집합 수의 곱과 같습니다.

(위에서처럼 username password   필드를 변수로 지정하고 공격유형을 sniper 하고 intruder 시작 하면… username 페이로드가 순서대로 적용되고 동안 password 페이로드가 적용되지 않습니다.  username 페이로드가 끝까지 적용되면  다음 username에는 원래 값이 들어가고 password 페이로드가 순서대로 적용됩니다.) 

battering ram  단일 페이로드 집합을 사용합니다변수 위치에 동일한 페이로드를  번에 삽입합니다.   공격 유형은 공격 HTTP 요청(사용자 쿠키 헤더  메시지 본문내의 여러 위치에 같은 입력을 삽입할 경우에 유용 합니다공격에 생성 하는 request 수는 페이로드 집합의  입니다.   ( username password  같은 페이로드 값이 들어갑니다.)

pitchfork  여러 페이로드 집합이 사용 됩니다각각의 정의된 위치에 다른 페이로드 집합(최대 8까지) 사용됩니다 페이로드가 각각의 정의  위치에 삽입되는데모든 페이로드 집합이 동시에 반복 합니다예를 들어 번째request 위치 1 페이로드 집합1  번째 페이로드를 삽입하고위치 2 페이로드집합 2  번째 페이로드를 설정 합니다 번째 request에서는 페이로드 집합 1  번째 페이로드를 위치 1에에 삽입 하고 번째 페이로드 집합2  번째 페이로드를 위치 2  설정 합니다 공격 유형은 다르지만 관련된 입력을 다수의 위치에 삽입해야  경우(사용자이름과 사용자 번호 ) 유용합니다.        공격에 의해 생성되는 request수는 페이로드집합  가장 작은 페이로드 집합의 수와 같습니다.

cluster bomb  이것은 여러 개의 페이로드 집합을 사용합니다 위치에 다른 페이로드 집합을 설정합니다. (최대 8까지공격은  페이로드 집합을 순서대로 반복합니다그래서 모든 페이로드의 조합을 테스트합니다예를 들어 개의 위치가 있는 경우페이로드 집합 1에서  번째 페이로드가 위치 1 적용되고페이로드집합 2 모든 페이로드가위치 2에서 반복 적용된 다음페이로드집합 1  번째 페이로드가 위치 1 설정되고페이로드집합 2 모든 페이로드가 위치 2에서 반복됩니다 공격 유형은 서로 다르고 관련이 없는 변수가 다수 위치에 있는 경우 (예를 들어사용자 이름과 패스워드) 유용합니다.  공격에 의해 생성  요청의  수는 모든 페이로드집합 안의 페이로드 수의 곱이므로 매우   있습니다.  ( 페이로드1 10페이로드 2 5페이로드 3 10개라면 10*5*10 = 500개가 됩니다.)

우리는 아래그림처럼공격 유형을 "cluster bomb"으로 설정합니다.

[payload] 탭으로 가서, payload set 1 선택 되어 있는지 확인하고, [load]  클릭해서 사용자 이름 목록이 들어 있는파일을 선택합니다사용자 이름 목록이 있는 파일을 로드 하면 모든 사용자이름이 아래 그림처럼 보여집니다.
마찬가지로 페이로드 집합 2  선택 >  [load]  클릭 > 암호목록이 들어 있는 파일을 선택합니다.
[options] 탭으로 가서 [results] 아래에 "store requests"  "store responses" 옵션이 설정 되어 있는지 확인 합니다모든 옵션에 대해 필요한지 필요 없는지 확인하십시오


공격을 하기 위한 설정이  되었습니다.  왼쪽 상단에 [intruder]  클릭하고 [start attack]  클릭합니다.   창이 팝업 되고 결과가 만들어지는 것을 확인할  있습니다.
그럼 우리는 request 성공한 것을 어떻게   있을까요?  일반적으로 성공한 request 실패한 request 다른 다른response 또는 다른 상태의 response  가질 것입니다.   경우 우리는 사용자 이름 "admin" 암호 "password"  경우는 다른 reponse 보다 길이가 다른 길이를 가지게 됨을   있습니다.
다른 response 길이를 가진 request 클릭합니다. response 섹션을 클릭하면 response 에서 Welcome to the password protected area admin” 이란 문구를 보게 됩니다이것으로 사용자 이름/암호가 맞다는 것을 확인할  있습니다

4) Repeater


Burp Repeater 사용하면수동으로 request 수정하고 response  분석하기 위해 재전송할  있습니다우리는 이것을 위해 request Burp Repeater 보냅니다.  Intruder, Proxy 다양한 곳에서 request 보낼  있습니다.

우리는 방금 수행한 intruder attack 에서 request Repeater 보냅니다. request  repeater 보내기 위해 단지request  클릭해서 [send to repeater]  선택하면 됩니다.
우리가 Repeater 탭으로 이동하면 보낸 request   있습니다우리는 그곳에서 1, 2, 3 으로 되어있는  개의  탭을  있습니다 request  개씩 탭이 사용됩니다.
request [raw], [params],[headers],[hex] 형식으로   있습니다우리는 request 보내기 전에 이러한 것들을 수정할  있습니다.
그냥 username, password  맞는 것으로 바꿉니다그리고 [go] 눌러  request 보냅니다. 
우리는 response 섹션에서 response  분석할  있습니다그리고 response [raw], [params],[headers],[hex] 형식 으로   있습니다  [render] 옵션은 완벽하지는 않지만 브라우저에서 보는 것처럼 보여줍니다.

5) Sequencer


burp suite Sequencer  응용 프로그램에 의해 생성된 세션 토큰의 임의성을 파악하는  사용 됩니다세션 토큰은일반적으로 사용자 인증을 사용되기 때문입니다따라서 훼손 되지 않아야 합니다 응용 프로그램이 세션 토큰에 대해 높은 임의성을 가지는 것이 중요하므로, burte force attack 성공적이지 않다우리는 request 보내어 돌아오는 세션 토큰을 sequencer 보내야 합니다다음에 sequencer request 반복적으로 보내어 많은 수의 세션 Id 얻습니다.그것은 임의성을 확인 하기 위해 다양한 통계적 테스트를 통해 전달 합니다.

세션 토큰을 반환 하는 request 보내 봅니다. request  클릭하여 [send to sequencer] 선택합니다.
sequencer 에서 자동으로 ID 매개 변수를 식별한 것을   있습니다우리는 또한스스로 선택하기 위해 [manual selection] 사용할  있습니다.  또는 우리는 우리가 생각하는 세션 토큰 값을 선택하기 위해 [cookie]  [form field] drop box  사용할  있습니다.
프로세스를 시작 하려면 [start capture] 클릭 합니다.
우리는 만들어지고 있는 요청과 수신하고 있는 다른 토큰을   있습니다.  분석을 시작하기 전에 적어도   100-200토큰 정도의 샘플 크기를 가지고 하는 것이 좋습니다하지만  많은 토큰이  나은 테스트 결과를 가져오게 됩니다일단 충분한 토큰을 캡처 했다면, [analyse now] 클릭 하십시오우리는 Burp Sequencer  모든 시험을 수행하는 것을 보게  것입니다.
결과는 아래 그림과 같이 표시 됩니다보이는 것처럼샘플의 전반적인 임의성은 우수한 것으로 추정됩니다다양  유형의 분석의 결과를 보기 위하여 탭들간에 전환할  있습니다
burp suite  계속 토큰을 수집할  있으므로토큰을  많이 수집한 후에 다시 테스트를 수행할  있습니다.

6) Comparer


burp suite Comparer 도구는 request, response 등과 같이  가지 데이터를 비교하는데 사용됩니다우리는 그렇게 하기 위해서는 데이터의  가지 Comparer 도구를 제공 해야 합니다 경우에 우리가 이미 수행한 bruet force attack에서 성공한 response 실패한 response  비교할  있는 tool 주어질 것입니다. request 아닌 response  보내기위해, comparer 보내는 동안 [response] 탭이 선택되어있는지 확인합니다실패한 response   클릭하고 [send to comparer] 선택하고성공한 response 동일한 작업을 수행합니다
[Comparer] 탭으로 이동 합니다우리가 이미 보낸  개의 response   있습니다.   부분(item 1)  번째response (#3) 아랫부분(item 2)  번째 응답 (#4)  클릭합니다.  이제 선택된  개의 response 비교를 수행하기위해 선정되었습니다.
2개의 response 비교하기 위해서 단어 또는 byte 비교하는  가지 방법이 있습니다. [words] 선택하면 단어로 비교합니다결과는 아주 분명합니다 응답은 " Username and/or password incorrect " 메시지다른 하나는 " Welcome to the password protected area admin " 메시지가 있습니다.
마찬가지로바이트를 사용하여 비교하면 다음과 같은 출력을 돌려줍니다.

7) Decoder


burp suite decoder 암호화된 데이터를 해독하고 정규형식으로 돌려주는데 사용할  있습니다그것은 역시 암호화하는데 사용할 수도 있습니다우리는 수동으로 decoder 데이터를 붙여 넣을  있거나 또는 인코딩된 request 보낼수도 있습니다 경우 base64 인코딩 형식으로 암호화된 사용자 이름  암호를 포함하는 HTML 기본 인증 request decoder 보낼 것입니다.  request  클릭하여 [send to decoder] 선택 클릭합니다.

암호화된 부분을 선택하여 [decode as] 클릭하고 [base64] 선택
Burp Decoder  base64 암호화된 문자열을 해독하여 사용자 이름/암호를 평문으로 제공합니다.
burp suite 에서 [smart decoder] 기능도 확인해야 합니다비록 그것이 완전히 신뢰할 수는 없고 가지 실수를 발생할 있습니다.

8) Scanner


Burp 스캐너는 가장 강력한  응용 프로그램 스캐너  하나이다하지만다른  응용 프로그램 스캐너 처럼 완벽 하지 않습니다 그리고 false positive 발생할  있습니다. Burp 스캐너는 무료 버전에서는 사용할  없습니다.

결론



우리는 proxy, scanner, sequencer, repeater  거의 모든 기능을 보았습니다 어플리케이션을 테스트할  도움이  있는 범위는  어플리케이션을 테스트하기 위한 유용한 도구로 만들기 위한 사용자의 상상력에 달려있습니다.






원문 : http://resources.infosecinstitute.com/burp-suite-walkthrough/