Intruder(이하 인트루더)는 퍼징(fuzzing) 도구로, 요청을 수정하고 입력값으로 반복 테스트를 가능하게 한다. 프록시에서 캡처한 요청을 사용해 설정한 규칙에 따라서 값을 조금씩 변경해 여러 요청을 보낼 수 있다.
인트루더는 브루트-포스(Brute-force)공격이나 퍼징 공격의 도구로 사용된다.
하지만 Community Edition에서는 속도가 제한돼있기 때문에 실무에서는 다른 도구를 이용하는 것이 맞다. 다른 도구에도 원리는 비슷할 것이니 가볍게 훑어보자.
공격 유형을 선택하고 어느 부분에 페이로드를 삽입할지 설정한다.
완벽한 페이로드를 작성해도, 캡처한 요청의 어느 부분에 삽입할지 모른다면 의미가 없다.

Add § : 에디터에서 페이로드를 넣을 부분을 직접 선택해 위치를 수동으로 지정한다.
Clear § : 모든 위치를 제거한다.
Auto § : 지운 기본 위치를 복구한다. 요청을 기반으로 가장 가능성이 높은 위치를 자동으로 식별해준다.

단일 페이로드 세트 공격(Sniper or Battering Ram) : 정의된 위치의 수와 관계없이 한 가지 옵션만 가진다.
다중 페이로드 세트 공격(Pitchfork or Cluster Bomb) : 각 위치마다 드롭다운 메뉴에 한 항목씩 표시될 것이다.
예를 들어서 "Simple list" 유형은 텍스트 상자에 직접 추가하거나 파일에서 불러오는 등 수동으로 추가, 제거가 가능하다.
여러 유형마다 옵션이 존재한다.
모든 단어를 upper case로 바꾸거나, 특정 정규식과 일치하는 페이로드를 건너뛰는 등 변환 혹은 필터링을 적용할 수 있다.
Burp Suite은 안전하게 페이로드를 전송할 수 있도록 URL 인코딩을 적용하는데, 인코딩 옵션을 재정의할 수 있다.
Positions 탭의 유형은 4가지가 있다.
Sniper : 가장 일반적이고 기본값이다. 정의된 위치에 페이로드를 하나씩 삽입해 순차적으로 진행한다.
Battering Ram : 모든 페이로드를 동시에 보내고 한 번에 삽입된다.
Pitchfrok : 여러 위치를 서로 다른 페이로드로 동시에 테스트 가능하다. 여러 페이로드 세트를 정의해 각각을 특정 위치에 연결할 수 있다.
Cluster Bomb : Sniper와 Pitchfork를 결합한 유형이다. 각 위치에 대해 순차적으로 공격하지만, 페이로드 세트의 모든 페이로드를 동시에 테스트한다.
POST /support/login/ HTTP/1.1
Host: 10.201.69.46
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 37
Origin: http://10.201.69.46
Connection: close
Referer: http://10.201.69.46/support/login/
Upgrade-Insecure-Requests: 1
username=§pentester§&password=§Expl01ted§
먼저 봤던 요청인 위 요청에서 username과 password 매개변수의 위치가 정의돼있고 스나이퍼 공격 유형으로 공격하면 페이로드 세트의 각 페이로드를 가져와서 각 위치에 순서대로 대입한다.
페이로드 리스트에 user1, user2가 있다면 username에 user1을 넣고 요청을 보내고, password에 user1을 넣고 요청을 보낸다. 이를 리스트에 모든 항목에 대해 반복하는 것이다.
스나이퍼 공격이 보내는 총 요청 수는 requests = numberOfWords * numberOfPositions로 계산할 수 있다.
배터링 램은 동일한 페이로드를 모든 위치에 동시에 넣는다.
워드리스트에 burp, suite, intruder의 단어가 저장돼있다면
username=§pentester§&password=§Expl01ted§ 의 삽입가능한 모든 위치에 한 번씩 삽입될 것이다.
username=burp&password=burp처럼 여러 위치에 한 번에 테스트하고 싶을 때 유용하다.
피치포크는 여러 개의 스나이퍼 공격을 동시에 실행하는 것과 비슷하다. 삽입 위치당 하나의 페이로드 세트를 사용하고 순환하는 식이다.
워드리스트가 채워지는 방식이 앞선 두 방식과 다르다.
joel, harriet,alexJ03l, Emma1815, Sk1ll위처럼 존재한다면 피치포크 방식으로 만들어진 리퀘스트는 각각
username=joel&password=J03l
username=harriet&password=Emma1815
username=alex&password=Sk1ll 이다.
목록 중 하나라도 완료되면 테스트는 중단된다. 페이로드 세트의 길이가 짧은 목록이 완료되면 긴 목록의 나머지 항목은 테스트되지 않는다.
클러스터 밤은 여러 페이로드 세트를 개별적으로 순환해서 가능한 경우의 수를 모두 테스트한다.
joel, harriet,alexJ03l, Emma1815, Sk1ll위 워드리스트가 존재한다고 가정하고, 어떤 비밀번호가 어떤 유저의 것인지 모른다고 가정하면 매칭되는 정보는 알 수 없다. 이럴 때 가능한 모든 경우의 수를 시도해보면 총 9개의 요청이 나올 것이다.
이는 워드리스트가 많으면 많을수록 총 요청 수가 많아지므로 큰 페이로드 세트를 테스트하는 경우 주의해야겠다.
Community Edition에서 Intruder의 Cluster Bomb 유형의 공격을 실행하는 것은 오랜 시간이 걸릴 수도 있다.