JPHP 인터프리터로 제작된 다운로더 악성코드
최근 AhnLab SEcurity intelligence Center(ASEC)에서는 JPHP를 사용하여 제작된 악성코드를 발견하였다. JPHP는 Java Virtual Machine(JVM) 위에서 실행되는 PHP 인터프리터로, PHP 코드를 Java 환경에서 사용할 수 있도록 제작되었다. PHP 코드를 Java 바이트코드로 변환해서 실행할 수 있어 Java 라이브러리를 직접 호출할 수 있고, JIT 컴파일 방식으로 PHP보다 빠르다는 특징이 있다.

[그림 1] JPHP
금번 확인된 악성코드의 최초 파일은 ZIP 파일 형태로 유포되는 것으로 확인된다. 내부에는 JAVA Runtime Environment(JRE) 패키지와 라이브러리 목록이 존재하며, exe 파일은 실행 시 “lib\”경로 하위에 존재하는 파일들을 인자로 javaw.exe를 실행하는 Runner 역할을 수행한다.
즉, 해당 악성코드는 JRE가 포함되어 유포되므로 별도 JAVA 환경이 존재하지 않아도 동작하도록 구성되어있다. javaw가 실행되는 commandline은 아래와 같다.
"{Package Path}\jre\bin\javaw.exe" -Dfile.encoding=UTF-8 -classpath "lib\.;lib\..;lib\activation.jar;lib\asm-all.jar;lib\commons-email.jar;lib\dn-php-sdk.jar;lib\gson.jar;lib\jfoenix.jar;lib\jkeymaster.jar;lib\jna.jar;lib\jphp-app-framework.jar;lib\jphp-core.jar;lib\jphp-desktop-ext.jar;lib\jphp-desktop-hotkey-ext.jar;lib\jphp-gui-ext.jar;lib\jphp-gui-jfoenix-ext.jar;lib\jphp-json-ext.jar;lib\jphp-jsoup-ext.jar;lib\jphp-mail-ext.jar;lib\jphp-runtime.jar;lib\jphp-systemtray-ext.jar;lib\jphp-xml-ext.jar;lib\jphp-zend-ext.jar;lib\jphp-zip-ext.jar;lib\jsoup.jar;lib\mail.jar;lib\slf4j-api.jar;lib\slf4j-simple.jar;lib\zt-zip.jar" org.develnext.jphp.ext.javafx.FXLauncher

[그림 2] 압축해제된 ZIP 파일과 “lib\”경로 하위에 존재하는 라이브러리들
위 [그림 2]에 빨간 네모 박스로 표시한 jar 패키지가 악성행위가 존재하는 JPHP 파일이다. 내부에는 PHP를 바이트코드로 변환한 .phb 파일들이 존재한다. .phb파일은 일반적인 .class 파일의 시그니처(0xCA 0xFE ..)와 다른 구조를 가지고 있으므로, bytecodeviewer가 정상적으로 인식하지 못한다.

[그림 3] bytecodeviewer로 열어본 phb 파일
해당 .phb 파일을 .class 파일로 인식할 수 있도록 변환하면 디컴파일이 가능하여 코드 분석이 가능하다. 분석 결과 추가 악성코드를 다운로드하는 다운로더 유형의 악성코드로 확인된다. 아래는 해당 악성코드의 C2 및 특징을 서술한다.

[그림 4] 최초 C2 통신

[그림 5] Windows Defender 행위 모니터링 기능 비활성화
공격자가 추가 C2를 확보하기 위해 Telegram을 사용하는 것이 확인되었다. 텔레그램 단축 URL 형식인 “t.me” 도메인을 활용하였으며, 접속시 확인되는 채널 프로필에 추가 C2의 IP를 업로드해둔 모습이 보인다. 공격자는 해당 URL에 접속하여 “i1il” 문자열 사이에 존재하는 IP 값을 추가 C2로 활용한다.
해당 URL에서 확보하는 IP는 공격자가 쉽게 수정할 수 있으므로, 감염 PC를 직접 컨트롤 하지 않고도 C2 주소를 자유롭게 변경할 수 있게 된다.

[그림 6] 추가 C2를 웹페이지에서 가져오기

[그림 7] 추가 C2를 가져오기 위해 접속하는 사이트
추가 악성코드를 다운로드하여 실행하는 기능이 존재한다. 분석 당시 해당 주소에서 파일이 다운로드 되지 않아 추가 분석은 어렵지만, 자사 분석 인프라를 통해 확인한 결과 해당 유형의 악성코드는 주로 Strrat, Danabot 등의 정보유출형 악성코드를 유포했을 것으로 추정된다.

[그림 8] 추가 악성코드 다운로드
이번 포스팅에서는 JPHP로 제작된 악성코드에 대해서 설명하였다. 이번 사례에서 보았듯이, JPHP와 같은 상대적으로 생소한 기술도 악성코드 유포에 악용될 수 있다. 공격자들은 계속해서 새로운 방법을 모색하고 있으며 기존에 알려진 기술뿐만 아니라 예상치 못한 경로를 활용하기도 한다. 따라서, 실행 파일이나 스크립트의 출처를 신중히 검토하는 습관이 매우 중요하다.