1. 취약점 [1]

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2017-3506

- 공격자가 조작된 XML 페이로드를 전송하여 원격 코드 실행을 실행하는 취약점

- XMLDecoder를 이용한 역직렬화 과정에서 취약점이 발생

① 영향받는 버전
- WebLogic Server 10.3.6.0.0
- WebLogic Server 12.1.3.0.0
- WebLogic Server 12.2.1.1.0
- WebLogic Server 12.2.1.2.0

② 관련 URL

- /wls-wsat/CoordinatorPortType
- /wls-wsat/CoordinatorPortType11
- /wls-wsat/ParticipantPortType
- /wls-wsat/ParticipantPortType11
- /wls-wsat/RegistrationPortTypeRPC
- /wls-wsat/RegistrationPortTypeRPC11
- /wls-wsat/RegistrationRequesterPortType
- /wls-wsat/RegistrationRequesterPortType11

 

2. 실습

Attacker 환경
- Kali Linux

Victim 환경
- CentOS 7 x64
- WebLogic Server 10.3.6.0.0

- Java: JDK1.7.0_80

 

- WebLogic Server 10.3.6.0.0 설치 및 구동 [2][3]

> JDK8로 설치를 진행하였는데, 도메인 생성 과정 중 도메인 생성 실패 오류 발생

> 구글링 결과 JDK8과 WebLogic 10.3.6.0은 호환이 되지 않아 발생하는 문제로, JDK7을 이용함

**** Domain Creation Failed! java.lang.SecurityException: The provider self-integrity check failed. ****

 

- registry.xml 파일에서 Weblogic 버전을 확인할 수 있음

> 버전 확인 방법

① java weblogic.version 명령 이용

② config.xml 파일 상단 <domain-version> 태그 확인 / 명령어: cd ${DOMAIN_HOME}/config 

③ registry.xml 파일에서 version 확인 / 명령어: cd ${MW_HOME};cat registry.xml

④ WebLogic Admin Console 좌측 하단 확인 또는 [로그인] > [환경] > [서버] > [서버이름] > [모니터링] > [일반] 확인

[사진 2] 버전 확인

 

- 구동 후 외부에서 정상 접근 확인

[사진 3] 서버 구동(위) 및 정상 접근 확인(아래)

 

- 공개된 PoC를 통해 스캔 결과 취약점에 영향 받음_[+]표시_을 확인 [4]

[사진 4] 취약점 스캔 결과(위) 및 관련 패킷(아래)

 

- /wls-wsat/CoordinatorPortType11 URL에 shell.jsp 업로드 성공

> 비밀번호(password 매개변수_값 secfree)와 임의의 명령(command 매개변수)을 사용자로부터 입력받아 실행한 결과를 반환하는 웹쉘로 확인됨

[사진 5] shell.jsp 업로드 성공(위) 및 관련 패킷(아래)

 

- 공격자는 조건을 만족한 URL을 통해 임의의 명령을 실행 및 결과를 확인할 수 있음

> 조건 1: 비밀번호(password)는 secfree 

> 조건 2: 임의의 명령(command) 전달

[사진 6] 명령 실행 결과 반환

 

[사진 7] 관련 패킷 캡쳐

3. 8220 Gang [5]

- 2017년부터 활동한 해킹그룹으로 암호화폐 채굴을 목적으로 활동

> C2와 통신을 위해 8220 포트를 사용하여 파생된 이름

> Tsunami 멀웨어, XMRIG 크립토마이너, Masscan, Spirit 등을 공격에 이용

 

- 최근 CVE-2017-3506 또는 lwp-download를 사용하는 사례가 확인

> lwp-download: URL에서 파일을 다운로드하는 리눅스 유틸리티

 

- 8220 Gang 해킹그룹이 CVE-2017-3506를 이용하는 과정 및 파일은 다음과 같음

① wls-wsat/CoordinatorPortType URL을 이용해 취약한 서버에 진입

② PowerShell 스크립트로 드로퍼 다운로드

③ 드로퍼를 이용해 최종적으로 암호화폐 채굴기 다운로드 및 설치

> 공격에 사용된 스크립트와 바이너리 파일은 Base64 인코딩과 난독화가 적용

> 피해자가 인지하지 못하도록 숨겨진 창으로 명령 실행

> AMSI 감지 비활성화 수행

※ AMSI(Antimalware Scan Interface): 응용 프로그램 및 서비스와 시스템에 있는 모든 맬웨어 방지 제품이 통합할 수 있도록 하는 다목적 인터페이스 표준

 

> 공격에 사용된 파일

파일명 설명
bypass.ps1 - CVE-2017-3506을 이용해 다운로드
- Base64로 인코딩 된 PowerShell 스크립트
> AMSI 비활성화 및 Winscp-setup-1867.exe 생성
Winscp-setup-1867.exe - %TEMP%Winscp-setup-1867.exe 경로로 생성
- Ebvjmba.dat 다운로드
Ebvjmba.dat - dll 파일 다운
dll 파일 - MS 빌드 프로세스에 주입되는 암호화된 리소스 파일
- 9090, 9091, 9092/TCP를 사용해 C2 서버와 통신 및 암호화폐 채굴기 다운

 

4. 대응방안

① 벤더사 제공 패치 및 업데이트 적용 [6]

 

② wls-wsat 미사용 시 삭제

> rm -rf /app/wls1036/wlserver_10.3/server/lib/wls-wsat.war
> rm -rf /app/wls1036/domains/domain/servers/portal/tmp/_WL_internal/wls-wsat
> rm -rf /app/wls1036/domains/domain/servers/portal/tmp/.internal/wls-wsat.war
> rm -rf /app/wls1036/domains/domain/servers/admin/tmp/_WL_internal/wls-wsat
> rm -rf /app/wls1036/domains/domain/servers/admin/tmp/.internal/wls-wsat.war

 

③ wls-wsat 컴포넌트 비활성화 옵션 추가
> $DOMAIN_HOME/bin/setDomainEnv.sh 파일 수정 [7]

 

④ WAF에서 wls-wsat 하위 URL(/wls-wsat/*) 차단

> /wls-wsat/CoordinatorPortType
> /wls-wsat/CoordinatorPortType11
> /wls-wsat/ParticipantPortType
> /wls-wsat/ParticipantPortType11
> /wls-wsat/RegistrationPortTypeRPC
> /wls-wsat/RegistrationPortTypeRPC11
> /wls-wsat/RegistrationRequesterPortType
> /wls-wsat/RegistrationRequesterPortType11

 

⑤ 침해지표 모니터링 [5]

 

참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2017-3506
[2] http://1004lucifer.blogspot.com/2018/08/weblogic-linux-103-1211.html
[3] http://1004lucifer.blogspot.com/2018/08/weblogiclinux-103-1211.html
[4] https://github.com/Al1ex/CVE-2017-3506
[5] https://www.trendmicro.com/en_us/research/23/e/8220-gang-evolution-new-strategies-adapted.html
[6] https://www.oracle.com/security-alerts/cpuapr2017.html
[7] http://1004lucifer.blogspot.com/2018/12/weblogic-cve-2017-10271.html

+ Recent posts