Security_News/해외보안소식

이탈리아 기업 "Hacking Team"의 정보 유출 사례 : Flash Player에 존재하는 수정되지 않은 버그를 확인

Ryansecurity 2015. 7. 14. 22:27
728x90

2015 년 7 월 이탈리아 기업 "Hacking Team '이 공격 을 받아 400G 바이트 이상의 기밀 정보를 유출 한 것으로 보도되고 있습니다. 이 기업은 합법적으로 통신을 차단하는 소프트웨어를 판매하고있는 것으로 알려져 정부와 법 집행 기관이 사용하고있을 수 있습니다. 또한 Hacking Team은 지금까지 인권 억압 국가와의 거래 는 없다고 말하고 있습니다.

Hacking Team에서 유출 한 것으로되어있는 정보는 현재 인터넷 상에 공개되어 있습니다. 유출 된 정보는 대부분 Hacking Team의 업무 내용이되고 있습니다 만, 제품의 판매처에 관해서는 기업의 공식 발표와 모순되는 것 같습니다. 또한 공개 된 정보 중에는 공격을 실행하기위한 도구가 포함되어있었습니다.그리고 이러한 도구는 Adob​​e Flash Player 및 Windows에 존재하는 취약점을 이용한 익스플로잇 코드가 포함되어있었습니다.

유출 된 정보에는 적어도 3 개의 익스플로잇 코드가 포함되어있었습니다. 그 중 2 개가 Flash Player의 취약점을 이용하는 것으로, 다른 하나는 Windows 커널의 취약점을 이용하는 것입니다. 두 Flash Player의 취약점 중 하나는 CVE 식별자 "CVE-2015-0349"가 지정되어 있고 패치도 출시되고 있습니다.

Adobe Flash Player의 취약점을 이용한 익스플로잇 코드 중 하나에 대해 누설 한 정보 내에서 "지난 4 년 동안 가장 아름다운 Flash Player에 존재하는 취약점"고되어 있습니다. Flash Player의 취약점 중 하나 및 Windows 커널에 존재하는 취약점은 CVE 식별자가 할당되지 않습니다. 패치가 발표되지 않았기 때문에 제로 데이 취약점 상태로되어 있습니다.

그림 1 : 공개 된 정보에서 취약점에 관한 언급
그림 1 : 공개 된 정보에서 취약점에 관한 언급

■ 이번 취약점
공개 한 정보는 Windows 계산기를 시작 Flash의 제로 데이 취약점 "Proof-of-concept (PoC 개념 증명 형 공격. 실제로 효과적인 공격을 할 수 있음을 입증하고있다 공격 코드) "와 실제 공격의 쉘 코드를 포함한 공개 버전이 포함되어있었습니다.

Trend Micro는 POC 이번 제로 데이 취약점에 대한 자세한 내용을 설명했다 "Readme"가 포함되어 있는지 확인했다 (그림 2). 이 첨부 문서에 따르면이 취약점은 Adob​​e Flash Player 9 이상 버전에 영향을 데​​스크탑 버전과 메트로 버전의 Internet Explorer (IE), Chrome, Firefox, Safari 등 모두에 영향을 미칩니다.

그림 2 : 누출 된 정보에서 취약점에 관한 언급
그림 2 : 누출 된 정보에서 취약점에 관한 언급

■ 근본 원인 분석
"Readme"는이 취약점의 근본 원인에 대해서도 언급하고 있습니다. 이것은 클래스 "ByteArray"에있는 "Use After Free (해방 후 사용)"취약점입니다. 아래에서 간략하게 설명합니다.

  • "ByteArray"객체 "ba"때 "ba [0] = object"와 같은 할당을 수행하면이 객체의 함수 "ValueOf"를 호출
  • 함수 "ValueOf"은 무시할 수 있기 때문에 객체 함​​수 "ValueOf"의 "ba"의 값을 변경하는 것이 가능하게된다
  • 함수 "ValueOf"메모리 "ba"를 재 할당하는 경우 함수 "ValueOf"가 호출 된 후 "ba [0] = object"가 원래 메모리를 저장하고 사용하는 해방 후 사용이 생긴다 .

■ 공개 버전의 익스플로잇 코드 분석
해제 후 사용 취약점을 이용한 공격으로 인해 Vector. <uint>의 length 항목을 파괴 프로세스에서 모든 메모리 읽기 및 쓰기가 가능합니다. 그러면 익스플로잇 코드는 다음을 수행 할 수 있습니다.

  • 과정에서 "kernel32.dll"의 기본 주소를 검색 한 후 "VirtualProtect"의 주소를 취득
  • "ByteArray"에 포함 된 쉘 코드의 주소를 취득
  • "VirtualProtect"를 호출 쉘 코드의 메모리를 변경하고 실행한다
  • AS3 코드에 정의 된 "Payload"이라고 이름 붙여진 빈 static 함수가있다
  • 함수 객체의 주소 "Payload"를 검색 한 다음 함수 객체 "Payload '가 가지는 정규 함수 코드의 주소를 취득
  • 정규 함수 코드의 주소를 쉘 코드의 주소로 갱신
  • AS3에서 static 함수 "Payload '를 호출한다. 그러면 쉘 코드를 호출
  • 쉘 코드 실행 후 static 함수의 주소를 재설정

당사는 익스플로잇 코드가 이용하는 수법에 의해, static 함수 코드의 주소를 무시하여 Microsoft 보안 기능 " Control Flow Guard "를 회피하는 것을 확인했습니다.

728x90