
Burp 플러그인 - AES로 암호화된 트래픽을 실시간으로 복호화
AES 암호화 트래픽을 실시간으로 복호화하는 Burpsuite 플러그인
참고: 현재 AES/CBC/PKCS5Padding 및 AES/ECB/PKCS5Padding 암호화/복호화를 지원합니다.
$ git clone https://github.com/Ebryx/AES-Killer/
$ cd AES-Killer
$ ./gradlew clean build
AES_Killer-Parameters.java: 애플리케이션이 요청의 일부 파라미터에 암호화를 적용하고 이러한 파라미터가 엔드포인트/요청에 따라 매번 변경되는 경우, 다음과 같이 하면 됩니다.
- `registerExtenderCallbacks` 함수에 this.endpoints.add("abc");를 추가하여 엔드포인트를 추가합니다.
- 암호화될 파라미터를 `String[][] parameters`에 추가합니다.
- 나머지 파라미터는 grant_type에 추가하거나 빈 항목으로 만듭니다.
그러면 코드가 알아서 처리합니다.
AES_Killer_v3.0.java: 이 변형은 일반적이며 GET, POST(Form, JSON) 등 모든 유형의 요청 형식을 처리할 수 있으며, 다양한 엔드포인트에서 대체 파라미터를 지원합니다.
- 프로젝트를 클론하고 BurpExtender.java를 AES_Killer_v3.0.java 코드로 교체합니다. - 아래와 같이 각 요청 유형의 엔드포인트와 파라미터를 수정합니다. - SecretKey 및 IV 파라미터와 기타 필요한 메서드를 업데이트합니다. - 프로젝트를 빌드하면 완료됩니다.
AES_Killer_v4.0.java: 이 변형은 애플리케이션이 일부 요청 파라미터를 하나의 키로 암호화한 후 전체 요청 본문을 다른 키로 암호화하는 다중 레벨 암호화를 위한 것입니다.
- 프로젝트를 클론하고 BurpExtender.java를 AES_Killer_v4.0.java 코드로 교체합니다. - 아래와 같이 엔드포인트와 파라미터를 수정합니다. - Secret Key 및 기타 필요한 메서드를 업데이트합니다. - 프로젝트를 빌드하고 jar 파일을 extender에 추가합니다.
참고: 이러한 변형은 요청의 특성상 직접 동작하지 않을 수 있으므로 약간의 수정이 필요할 수 있습니다.
jar 파일을 릴리스에서 다운로드하여 burpsuite에 추가하세요.
Secret Key 필드에 SecretSpecKey를 입력합니다.Initialize Vector 필드에 IV를 입력합니다.Start AES Killer를 누릅니다.
AES Killer를 시작하면 Burp의 IHttpListener.processHttpMessage를 제어하게 됩니다. 이는 모든 발신 및 수신 트래픽을 처리하며, AES Killer는 다음을 수행합니다.
ProcessHttpMessage가 요청을 암호화합니다.ProcessHttpMessage가 응답을 먼저 복호화한 후 우리에게 보여줍니다.따라서 우리는 평문 응답만 받게 되며 평문 요청으로 작업할 수 있습니다.
AES Killer를 사용하여 문자열을 수동으로 암호화하고 복호화할 수도 있습니다. 요청에서 암호화된 문자열 TYROd49FWJjYBfv02oiUzwRQgxWMWiw4W3oCqvNf8h3bnb7X0bobypFzMt797CYU를 가져와 AES Killer로 복호화해 보겠습니다. 마찬가지로 암호화도 수행할 수 있습니다.
데모 앱을 여기에서 다운로드하세요.