본문 바로가기

취약점 정보1

CVE-2016-7255 exploit : Win32k 권한 상승

728x90

 CVE-2016-7255 및 CVE-2016-7256 취약점을 기반으로하는 이러한 커널 수준의 취약점은 모두 권한 상승으로 이어집니다. Microsoft는 2016 년 11 월에 언급 된 취약점을 신속하게 해결했습니다. 그러나 2016 년 8 월에 제공된 완화 기술에 대한 악용 사례를 Windows 10 기념일 업데이트를 통해 테스트하여 이러한 기술이 유사한 특징을 지닌 미래의 제로 데이 공격에 대비하는 방법을 기대하고 있습니다.

 

CVEMicrosoft Update익스플로잇 유형기념일 업데이트에서의 완화
CVE - 2016-7255MS16-135 (2016 년 11 월)Win32k 권한 상승 취약점 악용tagWND 구조의 강력한 검증
CVE-2016-7256MS16-132 (2016 년 11 월)오픈 타입 폰트 익스플로잇격리 된 글꼴 구문 분석 (AppContainer) 
글꼴 구문 분석에 강한 검증

 

CVE-2016-7255 exploit : Win32k 권한 상승

2016 년 10 월 STRONTIUM 공격 그룹은 미국의 소수의 싱크 탱크와 비정부기구를 대상으로 창 피싱 캠페인을 시작했습니다. 또한 논의 캠페인, 앞서 언급 한 블로그 게시물 , 어도비 플래시 플레이어 취약점 CVE-2016-7855에 대한 악용와 탠덤에서 CVE-2016-7255에 대한 악용의 사용을 포함했다.

공격 그룹은 Flash 익스플로잇을 사용하여 사용 후 무료 취약점과 대상 컴퓨터에 액세스했습니다. 그런 다음에 유형 혼란 취약점 활용 Win32k.sys에 높은 권한을 얻기 위해 (CVE-2016-7255)을.

tagWND.strName 커널 구조 악용

이 섹션에서는 공격자가 만든 CVE-2016-7255에 대한 특정 공격의 내부를 살펴 봅니다. 

이 공격의 악용 및 셸 코드 단계

그림 1.이 공격의 악용 및 셸 코드 단계

 

최신 악용 사례는 종종 코드 실행을 달성하거나 추가 권한을 얻기 위해 읽기 - 쓰기 (RW) 프리미티브에 의존합니다. 이 공격의 경우 공격자는 손상에 의해 RW 원시 취득 tagWND.strName의 커널 구조를. 이 악용 방법은 보안 컨퍼런스에서 논의되고 실제 공격을 조사한 사람들이 볼 수있는 추세입니다. 예를 들어, 우리는 비슷한 결과를 설명 프리젠 테이션 Duqu 2.0에 대한이 바이러스 게시판 2015에 이용한다.

코드를 리버스 엔지니어링함으로써 2016 년 10 월에 STRONTIUM에서 사용 된 Win32k 익스플로잇이 똑같은 방법을 재사용한다는 것을 발견했습니다. 초기 WIN32K 취약점 후, 손상, 악용 tagWND.strName의 구조와 사용 SetWindowTextW를 커널 메모리의 아무 곳이나 임의의 내용을 작성.

쓰기 기본 형식으로 SetWindowTextW

그림 2. Write 프리미티브로 사용되는 SetWindowTextW

 

악용 남용이 API 호출은 현재 프로세스의 데이터를 덮어 쓰기의 토큰 권한 복사 SYSTEM을 . 성공하면이 악용 피해자 프로세싱 할 수 iexplore.exe를을 이 예-하는 높은 권한으로 실행합니다.

SYSTEM 권한이있는 Internet Explorer

그림 3. SYSTEM 권한이있는 Internet Explorer

 

강력한 검증을 통해 tagWND exploit을 완화하십시오.

기본 및 길이 필드에 대해 추가 검사를 수행하여 예상 기본 가상 주소 범위에 있고 RW 프리미티브에 사용할 수 없는지 확인합니다. 

Anniversary Update에 대한 테스트에서이 방법을 사용하여 커널에 RW 기본을 작성하는 것은 효과가 없습니다. 이러한 익스플로잇은 예외 및 그 이후의 

블루 스크린 오류를 유발합니다.

일반적인 커널 쓰기 프리미티브에 대한 Windows 10 기념일 업데이트 완화

그림 4. 공통 커널 쓰기 프리미티브에 대한 Windows 10 업데이트 완화

 


CVE-2016-7256 exploit : 오픈 타입 글꼴 권한 상승

2016 년 6 월 초 미확인 주체는 주로 한국의 목표에 초점을 맞춘 소량의 공격에서 "행크 리"로 감지 된 임플란트를 사용하기 시작했습니다. 나중에 2016 년 11 월에이 공격자는 Windows 글꼴 라이브러리 (CVE-2016-7256)의 결함을 악용하여 권한을 강화하고 이전 버전의 Windows를 사용하는 대상 컴퓨터에 Hankray 백도어를 설치했습니다.

영향을받는 컴퓨터에서 발견 된 글꼴 샘플은 실제 커널 메모리 레이아웃을 반영하기 위해 하드 코드 된 주소와 데이터로 특별히 조작되었습니다. 이는 침투 시점에 보조 도구가 악용 코드를 동적으로 생성 할 가능성을 나타냅니다.

익스플로잇으로 폰트 파일 자동 생성

그림 5. 익스플로잇이있는 폰트 파일의 자동 생성

 

복구되지 않은이 2 차 실행 파일 또는 스크립트 도구는 글꼴 익스플로잇을 준비 및 삭제하고 대상 시스템에서 커널 API 및 커널 구조를 활용하는 데 필요한 하드 코드 된 오프셋을 계산 및 준비합니다. 샘플에서 발견 된 바이너리 데이터를 정밀 법의학 검사를 통해 하드 코드 된 모든 오프셋을 추출하고이 취약점을 악용 한 커널 버전 인 Windows 8 64 비트를 확인했습니다.

초기 코드 실행을위한 함수 테이블 손상

글꼴 사용에 악용 fa_Callbacks 손상 함수 테이블을 초기 코드 실행을 얻을 수 있습니다. 콜백은 CFF 파싱 함수에서 호출됩니다. 다음 코드는 손상된 보여줍니다 ftell은의 (A)에 포인터 NT를! qsort가이 + 아님 0x39 커널 코드에 위치.

fa_Callbacks 테이블 손상

그림 6. fa_Callbacks 테이블 손상

 

다음 스 니펫은 커널 ROP 체인으로 이어지는 손상된 함수 포인터를 호출하는 코드를 보여줍니다.

fa_Callbacks.ftell 함수 호출 코드

그림 7. fa_Callbacks.ftell 함수 호출 코드

 

손상된 함수가 호출되면 컨트롤은 스택 포인터를 조정하고 스택 값에서 일부 레지스터 값을 초기화하는 nt! qsort + 0x39의 첫 번째 ROP 가젯으로 이동합니다.

첫 번째 ROP 가제트

그림 8. 첫 번째 ROP 가젯

 

첫 번째 가젯 후, 호출 커널 ROP 체인에 스택 점 ExAllocatePoolWithTag 쉘 코드의 메모리를 예약하기 위해 호출합니다. 다른 ROP 가제트는 1 단계 셸 코드의 처음 8 바이트를 할당 된 메모리에 복사합니다.

1 단계 셸 코드 복사하기

그림 9. 1 단계 셸 코드 복사하기

 

쉘 코드 및 권한 에스컬레이션

1 단계 쉘 코드는 매우 작습니다. 주요 기능은 새로 할당 된 메모리에 쉘 코드의 본문을 복사하고 JMP RAX 제어 전송으로 실행하는 것입니다.

1 단계 쉘 코드

그림 10. 1 단계 쉘 코드

 

주 쉘 코드는 복사 명령 뒤에 실행됩니다. 주요 쉘 코드 (작은 코드 조각)는 잘 알려진 토큰 도둑질 기법을 수행합니다. 그런 다음 토큰 포인터를 SYSTEM 프로세스에서 대상 프로세스로 복사하여 권한 에스컬레이션을 수행합니다. 셸 코드에서 필요로하는 커널 API에 대한 특정 오프셋뿐만 아니라 SYSTEM 프로세스 및 대상 프로세스 PID는 모두 글꼴 샘플에 하드 코드됩니다.

토큰 대체 기술

그림 11. 토큰 대체 기술

 

AppContainer로 글꼴 익스플로잇 완화

Windows 10 Anniversary Update에서 악의적 인 글꼴 샘플을 열면 글꼴 구문 분석이 커널 대신 AppContainer에서 완전히 발생합니다. AppContainer는 폰트 익스플로잇 (다른 유형의 익스플로잇 중)이 확대 된 권한을 획득하는 것을 효과적으로 방지하는 격리 된 샌드 박스를 제공합니다. 격리 된 샌드 박스는 글꼴 파싱을 공격 표면으로 상당히 줄입니다.

 AppContainer는 기념일 업데이트에서 신뢰할 수없는 글꼴을 보호합니다.

그림 12. AppContainer는 Windows 10 주년 업데이트에서 신뢰할 수없는 글꼴로부터 보호합니다.

 

Windows 10 기념일 업데이트에는 글꼴 파일 구문 분석에 대한 추가 유효성 검사도 포함됩니다. 우리의 테스트에서 CVE-2016-7256에 대한 특정 익스플로잇 코드는 이러한 체크에 실패하고 취약한 코드에 도달하지 못합니다.

Windows 10 글꼴 뷰어 오류

그림 13. Windows 10 글꼴 뷰어 오류

 

결론 : 익스플로잇 완화 및 계층화 된 탐지로 선전을위한 싸움

단일 지점 취약점을 수정하면 특정 버그를 없앨 수 있지만 Microsoft 보안 팀에서는 점점 더 많은 완화 기술을 도입 할 수있는 기회를 모색하고 있습니다. 이러한 완화 기술은 악용 방법을 중단 시키거나 중기의 전술적 이점을 제공하거나 장기적인 전략적 영향을 위해 모든 종류의 취약점을 근절시킬 수 있습니다.

이 기사에서는 두 번의 제로 데이 커널 공격을 포함하는 최근의 공격 캠페인을 살펴 보았습니다. 우리는 제로 데이 공격 이전에 발표 된 Windows 10 Anniversary Update의 익스플로잇 완화 기술이 특정 익스플로잇뿐만 아니라 익스플로잇 방법을 무력화하는 방법을 확인했습니다. 결과적으로 이러한 완화 기법은 향후 제로 데이 공격에 사용할 수있는 공격 표면을 크게 줄입니다.

이러한 완화 기술을 제공함으로써 공격자가 새로운 방어 계층을 찾아야하는 악용 개발 비용을 증가시키고 있습니다. 인기있는 RW 프리미티브에 대한 간단한 전술 완화조차도 공격자가 새로운 공격 경로를 찾는 데 더 많은 시간과 자원을 소비해야합니다. 글꼴 파싱 코드를 격리 된 컨테이너로 이동시킴으로써 글꼴 버그가 권한 상승을위한 벡터로 사용될 확률을 크게 줄였습니다.

이 문서에 언급 된 기술뿐만 아니라, 윈도우 10 주년 기념 업데이트 소개 다른 많은 완화 기술 아주 최근에도 공개되지 않은 취약점을 악용의 전체 클래스에서 고객 보호를 돕는 핵심 Windows 구성 요소 및 Microsoft 가장자리 브라우저를.

이 블로그 게시물에 설명 된 여러 단계의 공격에 대한 커버를 포함하여 효과적인 방역 후 탐지를 위해 Window Defender ATP에 가입하십시오. 이 서비스는 내장 된 센서를 활용하여 공격 및 기타 공격 활동에 대한 경고를 발생시키고 해당 위협 정보를 제공합니다. 윈도우 디펜더 ATP 후 위반 탐지 솔루션에 관심있는 고객은 더 많은 정보를 찾을 수 있습니다

https://blogs.technet.microsoft.com/mmpc/2017/01/13/hardening-windows-10-with-zero-day-exploit-mitigations/

728x90