ActiveX Method 분석 방법

웹 어플리케이션 2009. 8. 6. 09:41 Posted by TEAMCR@K

ActiveX Method 분석 방법


kerz@a3security.com
(A.K.A k3rz)


 
I. ActiveX Method 분석

1. 개 요
오늘날 ActiveX는 없으면 허전함을 느낄 정도로 많은 국내 웹 사이트에서 설치하도록 유도하고 있습니다. ActiveX를 설치하여 지도, 게임, 동영상, 메신저, 웹 어플리케이션, 보안 등의 프로그램을 웹에서 연동할 수 있도록 사용자에게 사실상 편의성을 제공하고 있습니다. 하지만 보안적인 시점으로 보았을 때 많은 위험성을 내재하고 있는데 이 문서에서는 ActiveX의 분석 방법과 이를 이용한 어떤 공격이 있는지 살펴 보도록 하겠습니다.

2. ActiveX 개념
MS 사이트에서 인용을 하자면 “ActiveX은 소프트웨어 컴포넌트와 스크립트, 기존 응용프로그램을 활용해 대화형 컨텐트를 만들기 기초를 구성하며, ActiveX 기술 사용의 가장 큰 혜택은 응용프로그램들은 웹 브라우저에 통합시켜 이러한 응용프로그램으로 관리되는 데이터가 웹 페이지처럼 접속될 수 있게 합니다.”라고 설명 하고 있습니다.
간단하게 말하자면 ActiveX란 HTML이 아닌 일반 응용 프로그램과 인터넷 익스플로러을 연결하여 기능적인 확장할 수 있도록 MS사가 개발한 기술입니다. 사실상은 자바 애플릿에 대응하기 위해서 통합 플랫폼이기도 합니다. 자바 애플릿과 비교해서는 사용자 PC의 파일, 레지스트리 등의 자원에 접근이 가능합니다.
즉, 웹 인터페이스를 통해 프로그램을 호출 가능한데, 이 점을 이용하여 ActiveX 공격이 가능합니다. ActiveX는 ActiveX Control, ActiveX Document, Active Scripting, 자바 가상 기계, ActiveX 서버 프레임웍의 구조로 되어있습니다.


3. ActiveX 취약점 종류

가. 프로그램 크래쉬
프로그램의 정상적인 기능이 의도하지 않은 에러(공격)에 의하여 프로그램이 종료될 수 있는데, 이를 이용한 공격으로는 nProtect 등과 같은 악성 프로그램 실행 방지 솔루션에 대한 크래쉬 등을 예를 들 수 있습니다.

나. 로컬 자원 접근
불특정 다수 사용자 컴퓨터의 리소스를 이용할 수 있는 취약점으로 원하는 명령실행 및 파일 또는 레지스트리의 읽기, 수정, 쓰기, 삭제기능을 제공 시 발생할 수 있습니다.

다. 기능 우회
프로그램의 정상적인 기능이 의도하지 않은 조작(공격)에 의하여 프로그램의 기능을 우회할 수 있습니다. 예로는 악성 프로그램 실행 방지 솔루션에 대한 ActiveX의 실행 체크 변수(property) 값을 참으로 조작하여 이미 실행되어 있는 것처럼 설정하면 원래 기능이 실행되지 않는 취약점입니다.

라. 파일 다운로드
ActiveX 개발자들은 주기적인 업데이트를 위해서 사이트 주소로부터 파일을 다운로드 기능을 제공합니다. 하지만 인증처리 미흡으로 인해 공격자는 주소 값을 조작하여 악성 파일을 다운로드 수행하는 취약점입니다.

마. 시스템 명령 실행
ActiveX는 시스템의 리소스를 이용할 수 있는데, 공격자는 이를 조작하여 net user를 추가하는 등의 시스템 명령을 실행할 수 있는 취약점이 있습니다.

바. 버퍼 오버플로우
ActiveX의 변수(Property) 값에 대한 길이 체크 미흡으로 인해 메모리의 버퍼를 오버플로우 시켜서 EIP 값을 다른 값으로 덮어 씌우는 취약점입니다. 이 경우 시스템 명령 실행, 프로그램 크래쉬 등의 공격이 가능합니다.

사. 포맷 스트링
ActiveX 의 변수(Property) 값에 대해 포맷 스트링 기법을 이용하여 특정 메모리를 덮어씌우는 취약점으로 시스템 명령 실행, 프로그램 크래쉬 등의 공격이 가능합니다.


4. ActiveX Method 분석
ActiveX 공격을 위해서는 개발자가 어떤 Name, Method, Property 등의 값을 분석을 해야 하는데, 이를 확인을 위해 일반적으로 많이 사용하는 TOOL을 이용하는 방법에 대해서 설명하도록 하겠습니다.

가. 기본적인 ActiveX 정보 확인
ActiveX의 정보를 알기 위해서 웹 사이트로부터 소스보기, ActiveX 프로그램 자체로부터 정보를 확인 할 수 있습니다.

ActiveX 공격을 위해서는 Object에 대한 정보가 꼭 필요로 하고, 일반적으로 Property, JavaScript를 이용하여 ActiveX를 설정 / 실행합니다. 이러한 내용들을 소스보기를 통해서 확인할 수 있습니다.

다음은 웹 사이트를 통해 확인한 ActiveX 정보 입니다.

                                                 [그림 1] ActiveX 정보 확인


ActiveX 프로그램 자체에 대한 정보는 등록정보를 통해서 알 수 있습니다. ActiveX는 기본적으로 “%SystemRoot%\\Downloaded Program Files\\” 폴더 안에서 확인할 수 있고, “Internet Explorer → 도구 → 인터넷 옵션 → 일반(메뉴) → 설정(버튼) → 개체보기(버튼)”을 통해서 확인 할 수 있습니다.
하지만 Explorer를 통한 ActiveX파일은 숨겨진 파일도 있기 때문에 Command 창을 통해서 확인하기를 권장하며 탐색창을 통해서 OCX 파일을 복사할 경우 에러가 발생되는데 Command 창에서 copy 명령을 통해서 이를 해결 할 수 있습니다.

다음은 ActiveX 파일 목록을 확인한 화면입니다.

                                    [그림 2] Command를 통한 ActiveX 목록 확인


다음은 ActiveX 파일 목록을 확인한 화면입니다.

                                             [그림 3] 탐색기를 통한 ActiveX 목록 확인

ActiveX를 Copy한 후 파일 속성을 통해서 부가적인 정보를 확인 할 수 있습니다. 사실상 파일 속성을 통한 정보는 자신의 스타일에 따라서 확인을 안 하셔도 무방합니다.


다음은 ActiveX 파일 속성을 통한 정보를 획득한 화면입니다.

                                                [그림 4] ActiveX 파일 속성 정보


나. Tool을 이용한 ActiveX 정보 확인

기본적으로 ActiveX 파일 이름과 버전, Object, Property, JavaScript 등에 대해서 알아보았습니다. 하지만 정작 중요한 METHOD 값에 대해서 아직 못 봤습니다. 이제 간단한 Tool을 통해서 확인해 보도록 하겠습니다.

※ 개인적으로 습득한 ActiveX 정보 획득 방법을 열거한 내용이며 Tool 사용방법에 대해서 조사한 내용이 아니므로 정보 획득 방법에 대해서 초점을 맞춰서 보시길 바랍니다.

(1) ActiveX Control Test Container, OLE View
Microsoft Visual Studio를 설치 시 추가적으로 Microsoft Visual C++ 6.0 Tools 을 설치할 수 있습니다. 그 중에 ActiveX Control Test Container, OLE View 툴을 통해서 ActiveX Method 정보를 확인 할 수 있습니다.

ActiveX Control Test Container을 이용하면 현재 설치되어있는 ActiveX 목록을 확인 할 수 있고, Method, Parameter, Value, Type 정보에 대해서 상세하게 확인할 수 있습니다.

Method Name, Parameter, Value 등을 통해서 현재 ActiveX의 기본설정과 Method가 무엇을 실행하는 것인지 간주할 수 있습니다.


다음은 ActiveX Control Test Container을 이용한 ActiveX Method 정보를 확인한 내용 화면입니다.

                                           [그림 5] ActiveX Method 정보 확인(1)

 
다음은 ActiveX Control Test Container을 이용한 ActiveX Method 정보를 확인한 내용 화면입니다.

                                          [그림 6] ActiveX Method 정보 확인(2)


다음은 ActiveX Control Test Container을 이용한 ActiveX Method 정보를 확인한 내용 화면입니다.

                                      [그림 7] ActiveX Method 정보 확인(3)

OLE View를 통해서는 ActiveX Control 값에 대해 조금 더 자세한 내용을 확인 할 수 있는 효과를 얻을 수 있습니다.

다음은 OLE View를 통해서 ActiveX 정보를 확인한 화면입니다.

                                        [그림 8] ActiveX Method 정보 확인(1)


다음은 OLE View을 이용한 ActiveX Method 정보를 확인한 내용 화면입니다.

                                          [그림 9] ActiveX Method 정보 확인(2)

(2) PEiD

PEiD를 이용하여 어떤 언어로 제작되었는지 확인 할 수 있습니다. 확인한 프로그램 같은 경우는 Microsoft Visual C++ 6.0으로 제작한 정보를 획득 할 수 있었습니다.


다음은 ActiveX 의 제작 언어를 확인한 화면입니다.

                                              [그림 10] ActiveX 제작 언어 확인


(3) Microsoft Visual

Microsoft Visual Studio를 이용해서 ActiveX 파일을 import 함으로써 코드를 확인 할 수 있습니다.
 
다음은 MFC ActiveX ControlWizard를 이용한 프로젝트 생성 과정 화면입니다.

                                           [그림 11] ActiveX 프로젝트 생성 과정


다음은 등록된 ActiveX 파일을 불러오는 과정 화면입니다.

                                           [그림 12] ActiveX 파일 불러오기 과정(1)

다음은 등록된 ActiveX 파일을 불러오는 과정 화면입니다.

                                             [그림 13] ActiveX 파일 불러오기 과정(2)


다음은 등록된 ActiveX 파일을 불러오는 과정 화면입니다.

                                          [그림 14] ActiveX 파일 불러오기 과정(3)

다음은 불러온 ActiveX 의 내용을 확인한 화면입니다.

                                              [그림 15] ActiveX 파일 내용 확인


불러온 ActiveX 파일을 분석하여 암호화 프로그램의 경우 후킹을 통해 복호화 내용을 확인 등의 공격을 시도할 수 있습니다.


추가적으로 Microsoft Visual C++ 6.0 Tools 을 설치할 수 있습니다. 그 중에 ActiveX Control Test Container, OLE View 툴을 통해서 ActiveX Method 정보를 확인 할 수 있습니다.


(4) ResHacker

리소스 해커를 이용하여 ActiveX 인터페이스, 코드 등을 확인 할 수 있습니다.

 
다음은 ActiveX 의 인터페이스를 확인한 화면입니다.

                                            [그림 16] ActiveX의 인터페이스 확인


다음은 ActiveX 의 코드를 확인한 화면입니다.

                                                     [그림 17] ActiveX의 코드 확인

(5) ActiveXplorer

ActiveXplorer를 이용하여 현재 설치되어있는 ActiveX 목록을 확인 할 수 있고, Method, Parameter, Value, Type 정보에 대해서 확인할 수 있습니다.


다음은 ActiveXplorer을 이용한 ActiveX 파일 정보를 확인한 내용 화면입니다.

                                                [그림 18] ActiveX 파일 정보 확인


다음은 ActiveXplorer을 이용한 ActiveX Method를 확인한 내용 화면입니다.

                                              [그림 19] ActiveX Method 정보 확인

(6) ComRaider

ComRaider를 이용하여 현재 설치되어있는 ActiveX 목록을 확인 할 수 있고, Method, Parameter, Value, Type 정보에 대해서 확인할 수 있습니다.


다음은 ComRaider을 이용한 ActiveX 파일 불러오기 과정 화면입니다.

                                            [그림 20] ActiveX 파일 불러오기 과정


다음은 ComRaider을 이용한 ActiveX Method, 코드를 확인한 화면입니다.

                                          [그림 21] ActiveX Method, 코드 확인

(7) OllyDbg

일반적으로 디버깅 시에 많은 사람들이 사랑하는 OllyDbg 프로그램을 이용한 ActiveX를 분석 할 수 있습니다.

다음은 OllyDbg를 이용한 ActiveX 파일을 불러오는 과정입니다.

                                           [그림 22] ActiveX 파일 불러오는 과정


다음은 All referenced Text strings을 통해 ActiveX 내용을 확인한 화면입니다.

                                                [그림 23] ActiveX Method 확인



※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.