National Vulnerability Database :: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-3654
:: call [eax] 우측의 주석에서 KiFastSystemCall - VirtualAlloc() (?)과 관련된 것으로 보인다. 실제 다른 부분들
것으로 추정됨
Exploit DB :: http://www.exploit-db.com/sploits/xpl_pdf.bin
Adobe Security Bulletin :: http://www.adobe.com/support/security/advisories/apsa10-05.html
취약한 버전 :: Adobe Flash Player 10.1.85.3를 포함한 이전 버전
Adobe Reader 7.4.0.195를 포함한 이전 버전
중요도 :: Critical ( 시스템 권한 제공 )
문제점 :: authplay.dll
임시 해결 방법 :: authplaylib 프레임워크 해제
Fix (예정) :: 2010.11.9 - Flash Player 10.x
2010.11.04 - Flash Player 10.x
( 단, Android Patch는 별도의 스케줄로 진행 예정 )
2010.11.15 - Adobe Reader 와 Adobe Acrobat 9.4와 그 이전버전
취약한 버전의 Reader Down URL ::
< 관련 샘플 >
Update10. 2010.11.24
MAPP를 통해 지속적으로 Detection_Logic이 전달되고 있다. 해당 Logic들은 CVE-2010-3654에 대한 것 뿐만 아니라 이번 Adobe 취약점 Patch시 언급된 CVE ID에 해당하는 파일들에 대한 Detection_Logic들이다.
Update9. 2010.11.15
Adobe 취약점 정규 Patch가 이뤄졌다.
Update8. 2010.11.11
전일 의문을 품었던 부분에 대해 확인 작업을 했다.
* 의문점 :: VirtualAlloc()의 Injdex를 갖고 있다면 VirtualAlloc( )을 통한 접근시 문제가 발생하도록 Hooking을 통한
접근시 Alert가 발생하지 않을까??
* 결론 :: Alert가 발생했다. 정확히 말하면 VirtualAlloc()을 수행할 때 Error가 발생하게 되고 그로 인해 메모리를
확보하지 못해 ShellCode가 정상 동작을 하지 못했다.
즉, VirtualAlloc( )을 통해 어떤 동작을 수행할 텐데 그 시점은 이미 ShellCode가 메모리에 올라와 있으며
ShellCode의 동작중 Ret을 통해 VirtualAlloc( )을 수행하려 했으나 Hooking으로 인해 정상 동작이 되지 않
아 ShellCode의 동작에서 Error가 발생한다는 것이다. 이 부분을 모니터링하면 실제 ShellCode가 동작할 때의 모습을 볼 수 있을 것으로 추정된다.
< VirtualAlloc()에서 발생한 Error >
* 의문점 :: 분명 Metasploit에서는 이 기법이 DEP를 우회하는 방법이라고 언급하고 있다. 그럼 DEP를 차단하게
되면 동작을 막을 수 있지 않을까?
* 결론 :: 실제 모니터링을 위한 Hooking을 통해 DEP를 우회하지 못해 메모리 공간에서 실행이 차단되어 다음과
같은 Alert가 발생했다. 즉, 이를 통해 해당 취약점은 DEP 우회가 필수임을 알 수 있다.
< DEP Alert >
Update7. 2010.11.10
Metasploit내의 ShellCode를 확인하던 중 다음과 같은 주석을 확인할 수 있었다.
:: 주석을 확인해 보면 BIB.dll 파일의 ret2lib를 이용해 실행된다고 되어 있다. 또한 아래의 스크린 샷을 보면
해당 DEP 우회 방식은 이전에 나왔던 ( adobe_libtiff 모듈 내의 ) DEP 우회 방식과 유사하다고 언급하고
있다. 실제로 PDF 샘플을 실행하면 authplay.dll 파일에서 Crash가 발생하고 ~.exe 파일이 실행되기 바로 전
BIB.dll 파일을 Load하는 것을 알 수 있다.
의 주석을 참고해 보면 해당 ShellCode는 Windows Version에 영향을 받는다고 나와있다. 그 이유는
KiFastSystemCall에서 사용할 SSDT Index Number가 Static하게 정해져 있기 때문이다. 추측컨데,
VirtualAlloc( )에서 사용할 Sysenter의 Index Number가 Static하게 들어가 있는 것으로 추정된다.
그렇다면 VirtualAlloc( )을 ( Hooking을 통한 )모니터링을 하면 문제가 발생하지 않을까?
Update6. 2010.11.05
Adobe 취약점 Patch :: [Adobe] Security Update available for adobe flash player
- 패치된 Flash 버전 :: 10.1.85.3 ▶ 10.1.102.64
- 금일 Patched 취약점
- CVE-2010-3636 , CVE-2010-3637 , CVE-2010-3638 , CVE-2010-3639 , CVE-2010-3640 , CVE-2010-3641
CVE-2010-3642 , CVE-2010-3643 , CVE-2010-3644 , CVE-2010-3645 , CVE-2010-3646 , CVE-2010-3647
CVE-2010-3648 , CVE-2010-3649 , CVE-2010-3650 , CVE-2010-3652 , CVE-2010-3654 , CVE-2010-3976
- 다운로드 센터
- 패치 ( Upadte Center ) :: http://get.adobe.com/kr/flashplayer/
- 패치가 적용된 제품 다운로드 :: http://kb2.adobe.com/cps/406/kb406791.html
* Adobe 취약점 Patch일정 수정 ::
< 추가 분석 내용 >
PDF파일내의 데이터를 확인했다. 정확히 확인한 일자는 2010.11.03 이지만 확인하지 못했던 부분 ( ASEC에서
언급되었던 구조와 내가 확인한 구조와의 상이함 ) 때문에 내용 추가가 늦었다. ASEC에서 공개한 파일의
구조와 아직 조금 차이점이 있지만 우선 1차적으로 다음과 같은 구조로 되어 있음을 언급한다.
< 1차 확인한 PDF 구조 >
:: 현재까지 확인된 PDF 파일의 구조는 위와 같다.
ShellCode와 SWF File Name , Flash File은 모두 동일하게 Java의 Inflate( )를 통해서 Decoding이 가능한 형
태였다. 또한 ShellCode는 다음 그림과 같은 형태를 띄고 있다. 하지만 ShellCode2Exe를 통해 실행파일로
변경해서 분석을 시도해 보았으나 Memory Violation 이 발생했다. 이는 특정 메모리 공간에서 동작할 것으로
계산해 입력한 주소값에 대한 접근을 시도하기 때문에 발생한 것으로 보인다.
< PDF내에 삽입된 ShellCode >
< PDF 파일의 전체 동작 시나리오 (일부) >
:: 위의 그림은 해당 PDF 파일이 동작했을 때 발생하는 전체 동작 시나리오의 일부이다.
즉, 취약점을 이용해 ShellCode가 동작하면 PDF 파일내의 EXE와 PDF 데이터가 VirtualAlloc( ) (?)에 의해
메모리에 올라간 후 CreateFileA( )을 통해 파일로 생성된다. 이때 생성된 EXE파일은 위와 같은 동작을 거쳐
최종 동작을 위한 DLL을 Drop하게 되고 아직 위치가 확인되진 않았지만 batch파일을 실행시켜 PDF와 관련된
프로세스를 종료시킨 후 추가로 생성된 PDF 파일을 실행시켜 사용자에게 보여주게 된다.
Update4. 2010.11.03
- 샘플을 통한 확인 결과 Adobe Reader의 언어별 ( Kor? EN? )로 동작하는 형태가 조금 다른 것을 확인했다.
1) EN :: 알려진 동작 모두 수행
ㄱ. ~.exe 파일 생성 ( Drop ) ▶ 동작
ㄴ. ~Temp.bat 파일 생성 ( ?? ) ▶ Acrobat.exe / AdobeRd32.exe 프로세스 종료
ㄷ. NewRelease.pdf 파일 생성 ( Drop ) ▶ View
ㄹ. swf 파일 ( 미확인 / ASEC에서는 두종류의 swf가 있는 것으로 보고함 )
2) Kor :: 정상 동작이 이뤄지지 않음
ㄱ. ~.exe 파일 생성 ( Drop ) ▶ 동작
ㄴ. ~Temp.bat 파일 생성 ( ?? ) ▶ Acrobat.exe / AdobeRd32.exe 프로세스 종료
ㄷ. NewRelease.pdf 파일 생성 ( Drop ) ▶ View
ㄹ. swf 파일
- 위의 분석을 바탕으로 볼 때 해당 취약점은 언어에 따라 그 동작이 상이한 것을 알 수 있음
< 차이점 >
ㄱ. 최초 NewRelease.pdf 파일에 의해 Drop된 ~.exe 파일이 동작하지 않았다.
ㄴ. 최초 NewRelease.pdf 에 의해 Drop되어 사용자에게 보여줄 NewRelease.pdf 파일이 Drop되지 않았다.
ㄷ. ~Temp.bat 파일이 동작시킬 것으로 예상되었던 프로세스 강제 종료 과정이 최초 NewRelease.pdf 에
의해 동작한 것으로 보인다.
< 1차 분석 내용 - PDF 바이너리 분석 >
- 동작 시나리오는 대략 다음과 같다.
1. 메일을 통해 악성 PDF파일인 NewRelease.pdf 파일이 전달된다.
2. Victim이 취약한 버전의 Adobe Reader로 해당 PDF 파일을 Open한다.
3. 해당 PDF 파일은 취약점을 공격해 ~.exe / ~Temp.bat / NewRelease.pdf 등을 생성 ( Drop )
한다.
4. ~.exe에 의해 악성동작을 수행하고 ~Temp.bat 파일은 실행중이던 Adobe Reader를 강제 종료한
이후 Drop한 NewRelease.pdf 파일을 실행해 사용자에게 보여준다.
- 바이너리 파일에서 XOR Encoding 되어 있는 Drop 파일에 대한 정보를 획득했다
Algorithm :: XOR
Decoding Key :: 0x7B
< Encoding 되어 있는 ~.exe >
< Encoding 되어 있는 NewRelease.pdf >
< En/Decoding 샘플 비교 - ~.exe >
< En/Decoding 샘플 비교 - NewRelease.pdf >
* Metasploit을 이용해 해당 취약점을 공격하는 PDF 생성 과정이 Youtube에 공개되었다.
- 실제 제작 테스팅 블로깅 :: http://ghostkei.tistory.com/13
Update3. 2010.11.02
ASEC Threat Research :: http://blog.ahnlab.com/asec/429
* 샘플 수집 후 분석 중
- Test 환경 :: Windows XP SP3 (Kor) + Adobe Reader 9.3.4 ( EN )
Windows XP SP3 (Kor) + Adobe Reader 9.4.0 ( Kor )
- 추가 분석을 수행해야 하겠지만 해당 취약점은 EN에서는 정상 동작하지만 Kor에서는 정상동작이 이뤄지지 않는
Update2. 2010.11.01
Drop된 파일에 대한 분석 리포트
원격지 연결 후 동일한 요청 데이터가 전송된다. ( authrootseq.txt 파일 참조 )
함께 첨부된 .stl 파일은 인증서 신뢰 목록으로 디지털 서명 ( MS )이 포함되어 있는 형태였다.
정확한 동작은 알 수 없으나 원격지로 부터 해당 파일을 다운받고 다운받은 .stl파일을 IE등에 추가하는
형태를 띄지 않을까 추정된다. ( 악성 사이트 접근 통제 우회 목적 ?? )
숙주와 Drop된 파일에 의한 Traffic 파일
샘플 파일에서 발생한 Violation Log 파일
Fortinet 분석 정보 ::
Update1. 2010.10.29
US-CERT :: http://www.us-cert.gov/current/index.html#adobe_releases_security_bulletin_for10
SecurityFocus :: http://www.securityfocus.com/bid/44504
Secunia :: http://secunia.com/advisories/41917
contagiodump ::
분석 내용 ::
< 해당 사이트 번역 >
※ 그림 및 관련 내용은 Bugix-Security의 관련 Blog내용을 참고하였음을 알립니다.
신규 버그는 최신 Adobe Reader 9.4.0.195 와 Flash Player 10.1.85.3를 포함한 이전버전에서 동작한다.
원격 공격이 가능하다.
버그는 authplay.dll에 존재한다.
이미 취약점은 널리 확산되어 있다.
(샘플 악성 파일이거나 또는 생성되는 파일로 추정 )
PDF 크기는 241,679Bytes
SWF 크기는 22,946Bytes
디컴파일된 SWF는 다음과 같다.
이건 curvedPolygon으로 다음 사이트를 참고하기 바란다.
Exploit은 JS Heap Spray를 사용한다.
Slide 0x58585858
Exploit은 이미지에서 보여주는 것처럼 메모리를 채운다.
은 메모리 마지막에 복사된 ShellCode를 위해 ROP Technic을 사용했다.
ShellCode는 동작시 %temp% 디렉토리에 ~.exe , ~temp.bat , PDF파일과 같은 이름의 PDF를 Drop한다.
Drop된 파일은 하위 URL을 참고하기 바란다. ( 암호 :: infected )