보안진단 Tool 사용방법/Burp Suite

Burp Suite (버프스위트) 사용법 - 기능 설명 - Intruder

재민스 2021. 11. 10. 15:41

Intruder 기능

Burp Intruder 는 fuzzing, brute force attack 과 같은 취약점에 이용할 수 있습니다. 

fuzzing 이란 공격 대상 시스템의 보안 취약점을 탐지하기 위하여 다양한 입력값을 전송하는 것을 말합니다.

예를 들어 sql injection이나 XSS 취약점은 공격가능한 다양한 코드값이 있으므로 어느 코드가 공격이 통할지 일일히 수작업으로 입력하는 것은 매우 힘듭니다. 이럴경우 Intruder 기능을 이용하면 손쉽게 취약점을 확인할 수 있습니다.

brute force attack은 무차별 대입공격으로  패스워드 크랙할 때 주로 사용됩니다. 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 말합니다.

 

login

이번 경우에는 brute force attack 기능을 사용할 것입니다. Burp Suite에서 [ intercept is on] 으로 되어있는지 확인하고 웹에서 로그인 합니다.

WEB site에서 login 합니다. 여기서는 DVWA 에서 login 하겠습니다.  다만 Username 과 Password 를 모르기 때문에 

Usernaem 에는 aaaaa   Password 에는 11111 을 입력하겠습니다.

request는 burp suite에 의해 가로채어 질 것입니다.   aaaaa / 11111 입력한 것은 username 과 password의 변수 위치를 알기 위함입니다.

 

send to intruder

오른쪽 클릭 및 [send to intruder] 클릭.

[intruder] 로 request 정보를 보낼 것입니다.  [intruder] 탭으로 이동 합니다. 

 

Target

이제 우리는 Burp suite에서 brute force attack을 설정해야 합니다. [target] 탭에서 이미 request를 보고 목표를 설정 했음을 볼 수 있습니다.

 

Positions

이제 [positions] 탭으로 이동하면 우리가 이미 intruder로 보낸 request를 볼 수 있습니다. 일부 변수 부분은 녹색으로 강조 표시가 되어있습니다.  

이것은 brute suite attack 에서 변경되어질 부분을 추정한 것입니다.  username, password, login 과 cookie 에서의 security, phpsessid 부분이 변수로서 공격을 할 수 있다는 것을 표시해주고 있습니다.

이번 경우는 단지  사용자 이름 및 암호를 바꿔가면서 공격할 것이므로  공격할 변수 부분을 다시 적절하게 구성하겠습니다.

오른쪽에 clear 버튼을 클릭 합니다. 

강조 표시 된 텍스트가 모두 제거 됩니다. 

이제 공격에 대한 매개변수로 사용자 이름 및 암호만을 설정해야 합니다.  

이 request에서 username(이 경우 "aaaaa")을 강조 표시 하고 [add ]를 클릭 합니다. 마찬가지로 password (이 경우 "11111" 를 강조 표시하고 [add] 를 클릭 합니다. username 과 password를 첫 번째 및 두 번째 매개 변수로 추가 됩니다. 완료 되면 다음과 같이 보일 것입니다.  cookie 부분의 $ 표시는 없어졌습니다.

우리가 해야 다음 일은 공격에 대한 유형[attack type]을 설정해야 합니다. default로는 [sniper]로 설정되어 있습니다.  하지만 이 경우에는 [cluster bomb]를 사용해야 합니다.

 

[Attack Type]

1. Sniper 

단일 페이로드 집합을 사용 합니다.

차례로 각 위치를 target으로 하고 그 자리에 차례로 각 페이로드를 삽입합니다.

주어진 request를 처리하는 동안 target이 아닌 위치는 영향을 받지 않습니다.  

이 공격 형식은 XSS처럼 공통적이고 개별적인 다수의 필드를 테스트 하는 데 유용합니다.

2. battering ram  

단일 페이로드 집합을 사용합니다.

변수 위치에 동일한 페이로드를 한 번에 삽입합니다.  

이 공격 유형은 공격 HTTP 요청(즉, 사용자 쿠키 헤더 및 메시지 본문) 내의 여러 위치에 같은 입력을 삽입할 경우에 유용 합니다.

username과 password 에 같은 페이로드 값이 들어가므로,  username과 password가 같은 값으로 되어 있는 경우

(예, admin/admin , root/root 등) 를 테스트 할 수 있습니다.

3. pitchfork 

여러 페이로드 집합이 사용 됩니다.

각각의 정의된 위치에 다른 페이로드 집합(최대 8까지)이 사용됩니다.  

한 페이로드가 각각의 정의 된 위치에 삽입되는데, 모든 페이로드 집합이 동시에 반복 합니다.

즉 사용자 번호와 이름처럼 쌍으로 이루어진 곳에 사용됩니다.

1번 페이로드는 1, 2, 3, 4,....   2번 페이로드는 홍길동, 사오정,....  과 같이 되어 있으면,

첫 번째 request는  1번 홍길동,  두번째 request에서는  2번 사오정 과 같이 대입이됩니다.

이 공격 유형은 다르지만 관련된 입력을 다수의 위치에 삽입해야 할 경우  즉. 사용자이름과 사용자 번호 등에 유용합니다.       

4. cluster bomb 

이것은 여러 개의 페이로드 집합을 사용합니다.

각 위치에 다른 페이로드 집합을 설정합니다. (최대 8까지)

공격은 각 페이로드 집합을 순서대로 반복합니다. 그래서 모든 페이로드의 조합을 테스트합니다.

두 개의 위치가 있는 경우, 페이로드 집합 1에서 첫 번째 페이로드가 위치 1에 적용되고, 페이로드집합 2의 모든 페이로드가 위치 2에서 반복 적용된 다음, 페이로드집합 1의 두 번째 페이로드가 위치 1에 설정되고, 페이로드집합 2의 모든 페이로드가 위치 2에서 반복됩니다.

예를 들어 username 에 admin 이 대입되면, password에 모든 페이로드를 다 대입한 후에, username에 root 가 들어가고 또다시 password에 모든 페이로드를 다 대입합니다.  결국 각 username에 모든 password를 대 대입합니다.

이 공격 유형은 사용자 이름과 패스워드에 유용합니다.  

공격에 의해 생성 된 요청의 총 수는 모든 페이로드집합 안의 페이로드 수의 곱이므로 매우 클 수 있습니다. 

예 : 페이로드1에 10개, 페이로드 2에 5개라면 10*5 = 50개가 됩니다.

 

cluster bomb

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

 

payload

[payload] 탭으로 가서, payload set 1이 선택 되어 있는지 확인하고, [load] 를 클릭해서 사용자 이름 목록이 들어 있는 파일을 선택합니다. 

사용자 이름 목록이 있는 파일을 로드 하면 모든 사용자이름이 아래 그림처럼 보여집니다.

 

마찬가지로 페이로드 집합 2 를 선택 >  [load] 를 클릭 > 암호목록이 들어 있는 파일을 선택합니다.

 

options

[options] 탭으로 가서 [results] 아래에 "store requests" 및 "store responses" 옵션이 설정 되어 있는지 확인 합니다. 

 

start attack

공격을 하기 위한 설정이 다 되었습니다.  왼쪽 상단에 [intruder] 를 클릭하고 [start attack] 을 클릭합니다.  새 창이 팝업 되고 결과가 만들어지는 것을 확인할 수 있습니다.

 

그럼 우리는 request가 성공한 것을 어떻게 알 수 있을까요?  일반적으로 성공한 request는 실패한 request와 다른 다른 response 또는 다른 상태의 response 를 가질 것입니다.  이 경우 우리는 사용자 이름 "admin"과 암호 "password" 인 경우는 다른 reponse 보다 길이가 다른 길이를 가지게 됨을 볼 수 있습니다.

다른 response 길이를 가진 request를 클릭합니다. response 섹션을 클릭하면 response 에서 “Welcome to the password protected area admin” 이란 문구를 보게 됩니다. 이것으로 사용자 이름/암호가 맞다는 것을 확인할 수 있습니다.