
Extension adds a new tab in Burp Suite called Extractor
Maven에서 Google의 GSON 라이브러리를 다운로드한다.
(http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar)
wget http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar
Burp의 Extender/Options/Java Environment에서 Google의 GSON 라이브러리를 다운로드한 폴더를 선택한다.
Burp의 Extender/Extensions 탭에서 확장 기능을 추가한다. (확장 기능은 저장소의 dist 폴더에 있는 jar 파일이다).
저장소를 클론한다.
Burp의 Extender/APIs 탭으로 이동하여 Save interface files 버튼을 클릭한 후, Burp의 인터페이스 파일들을 새 폴더에 저장한다. 그런 다음 이 파일들을 클론한 저장소의 src/burp 디렉터리에 복사한다.
Maven에서 Google의 GSON 라이브러리를 다운로드한다.
(http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar)
wget http://central.maven.org/maven2/com/google/code/gson/gson/2.8.2/gson-2.8.2.jar
추출기 디렉터리에서:
4. mkdir build
5. javac -cp gson-2.8.2.jar -d build src/burp/*.java
6. jar cf extractor.jar -C build burp
그런 다음 Burp의 Extender 탭에서 extractor.jar 파일을 로드한다. (또한 GSON 라이브러리를 저장한 폴더로 Burp의 경로를 지정해야 한다: Burp Extender > Options > Java Environment)
Burp에 Extractor라는 새 탭이 추가된다.

이 확장 기능은 Burp Suite에 Extractor라는 새 탭을 추가한다.
이 탭 안에서 트리에 노드를 추가하여 요청 또는 응답의 데이터가 어떻게 생겼는지 설명할 수 있다. 해당 트리의 각 리프(Leaf)는 쿼리 또는 응답이 표시되는 모든 곳에 새 탭을 생성하며, 해당 특정 리프까지의 모든 상위 노드에 따라 변환된 쿼리 데이터를 표시한다.
예를 들어, 요청 본문이 특정 태그에 Base64로 인코딩된 문자열을 포함하는 XML 페이로드라면, 트리는 다음과 같아야 한다:

위와 같이 설정하면 모든 요청과 응답에 이제 Body>XML:tag_name>Base64라는 이름의 탭이 포함되며, 해당 탭에는 요청 본문의 XML 태그 tag_name에 포함된 Base64 디코딩된 데이터가 표시되어야 한다. 해당 탭의 데이터를 변경하면 데이터가 Base64로 인코딩되어 요청 본문의 동일한 XML 태그에 다시 주입된다. (따라서 Proxy/Intercept에서 요청을 가로채는 동안 수정하거나 Repeater에서 페이로드를 제작할 수 있다).
매개변수 없음.
이 노드는 전달된 데이터를 Base64 디코딩하고, 해당 레벨이나 하위 노드에서
데이터를 수정하면 체인을 따라 다시 인코딩한다.
매개변수 없음.
이 노드는 전달된 데이터에 대해 기본 URL 디코딩을 수행한다. 이 노드 또는
하위 노드 내에서 수정된 데이터는 잘못된 URL 문자만 다시 인코딩되므로
체인을 따라 다시 인코딩되면 다르게 보일 수 있다는 점에 주의한다.
매개변수 없음.
이 노드는 전달된 데이터의 GZip 압축을 풀고, 자신 또는 하위 노드가
수정되면 다시 GZip 압축한다.
매개변수 없음.
이 노드는 전달된 데이터를 2진수에서 16진수 문자열로 변환한다. 이 노드의
데이터 또는 하위 노드 데이터가 수정되면 데이터를 16진수 문자열에서 2진수로
다시 변환한다.
매개변수 없음.
이 노드는 전달된 데이터를 16진수 문자열에서 2진수로 변환한다. 이 노드의
데이터 또는 하위 노드 데이터가 수정되면 데이터를 2진수에서 16진수 문자열로
다시 변환한다.
매개변수 1개:
이 노드는 x-www-form-urlencoded 유형의 URL 매개변수 하나에서 데이터를 추출한다. 요청의 URL에서 URL 매개변수를 추출하기 위해 Header 하위 노드로 직접 사용하거나, 본문에 URL 스타일 매개변수만 포함된 경우 body 하위 노드로 사용하거나, URL 또는 x-www-form-urlencoded 매개변수를 포함하는 다른 노드의 하위 노드로 사용할 수 있다. 수정된 데이터는 동일한 위치의 매개변수에 다시 주입된다.
매개변수 2개:
이 노드는 multipart/form-data 유형의 본문 매개변수를 추출하는 데 사용된다. 수정된 데이터는 동일한 위치의 매개변수에 다시 주입된다.
매개변수 1개:
이 노드는 하나의 쿠키에서 데이터를 추출하며, 수정된 데이터는 쿠키에 다시 주입된다. 이 노드는 Header 노드의 직접적인 하위 노드로 사용해야 한다.
매개변수 1개:
이 노드는 하나의 헤더 플래그의 내용을 추출하며, 수정된 데이터는 플래그에 다시 주입된다. 이 노드는 Header 노드의 직접적인 하위 노드로 사용해야 한다.
매개변수 1개:
이 노드는 XML 노드 이름 매개변수와 일치하는 첫 번째 XML 노드에서 값을 추출한다. 수정된 데이터는 해당 노드의 값에 다시 주입된다.
매개변수 2개:
이 노드는 XML 노드 이름과 일치하는 첫 번째 XML 노드에서 매개변수 값을 추출한다. 수정된 데이터는 해당 노드의 매개변수에 다시 주입된다.
매개변수 2개:
이 노드는 JSON 페이로드에서 데이터를 추출한다. 전달된 페이로드의 최상위 레벨 데이터만 추출할 수 있다. 그러나 이 노드를 다른 Json 노드와 연결하여 JSON 객체 내에 포함된 JSON 객체를 추출할 수 있다.
매개변수 1개:
이 노드는 전달된 데이터를 매개변수의 데이터와 AND 연산한다. 노드에 전달되는 데이터는 2진수 형식이어야 한다 (필요하면 먼저 HextoBin 노드를 사용한다). 수정된 데이터는 AND 연산되어 다시 주입되지만, AND 연산자는 전단사 (bijective)가 아니므로 이 연산은 의미가 거의 없다는 점에 유의한다 (다시 주입된 데이터가 해당 컨텍스트에서 의미가 있기를 기대할 수 없다).
매개변수 1개:
이 노드는 전달된 데이터를 매개변수의 데이터와 OR 연산한다. 노드에 전달되는 데이터는 2진수 형식이어야 한다 (필요하면 먼저 HextoBin 노드를 사용한다). 수정된 데이터는 OR 연산되어 다시 주입되지만, OR 연산자는 전단사가 아니므로 이 연산은 의미가 거의 없다는 점에 유의한다 (다시 주입된 데이터가 해당 컨텍스트에서 의미가 있기를 기대할 수 없다).
매개변수 1개:
이 노드는 전달된 데이터를 매개변수의 데이터와 XOR 연산한다. 노드에 전달되는 데이터는 2진수 형식이어야 한다 (필요하면 먼저 HextoBin 노드를 사용한다). 수정된 데이터는 XOR 연산되어 다시 주입된다.
매개변수 없음
이 노드는 처리를 수행하지 않는다. 전달된 데이터를 표시만 하며, 노드 체인을
따라 전달되는 데이터가 해당 노드가 삽입된 특정 지점에서 올바른지 확인하기
위한 제어 지점을 추가할 때 주로 유용하다.
매개변수 1개:
이 노드는 정규 표현식으로 콘텐츠를 전달하여 하위 일치만 추출한다. 다른
노드로 전달하기 전에 노드를 준비하는 데 유용하다.
샘플 ==> Callback\\((.*)\\)
Java로 자신만의 노드를 만들 수 있다. 샘플 노드 파일이 코드에 QueryNodeXXX.java라는 이름으로 제공되어 있으므로 복사/붙여넣기 후 이름을 바꾸고 파일 안에 제공된 지침을 따르면 된다. 또한 새로 만든 노드를 Globals.java의 목록 끝부분에 추가해야 한다 (아무것도 깨뜨리지 않으려면 해당 목록의 처음 두 줄은 변경하지 않는다).