2011년 7월 6일 수요일

ActiveX Hacking Simulation

※ 본 자료는 ActiveX의 보안 취약성을 알리기 위한 목적으로 가상의 Hacking 계획을 수립해서 알리는 것이다. 본 자료를 근간으로 해서 Hacking을 할 경우에 발생할 수 있는 모든 책임은 이를 수행한 사람에게 있다는 사실을 주지하시기 바랍니다.



  1. Hacking 위한 환경 구성
    1. 현재의 ActiveX를 활용한 보안 System은 Virtualization에 대한 대응이 완벽한 상태는 아니다. 특히 Linux에서 진행되는 Virtualization에 대해서는 속수 무책인 부분이 많다.
    1. Virtualization을 이용해서 ActiveX가 설치되는 운영체제인 Microsoft사의 Windows XP 이상과 Internet Explorer 8 또는 Internet Explorer 9를 설치한다.
    2. Virtualization을 통해서 설치된 운영체제가 사용하는 Network 정보를 모두 외부에 인증될만한 정보로 교체할 수 있도록 한다. IP와 MAC Address가 이에 해당한다.
    1. Network 사용 정보를 수집하기 위한 중간 Gateway 역할을 할 Server를 구축한다. Network 상의 정보를 수집할 수 있는 Snipping이 가능해야 한다.
    2. Web 보안의 경우에 https에 비해서는 매우 낮은 수준의 보안을 제공하는 경우가 대부분이다. ActiveX를 통해서 통신이 이루어지기 때문에 ActiveX를 분석하면 어떻게 해석하고 바꿀 수 있는 지 확인이 가능하다. 이에 대한 다양한 방법은 공개되어 있다.
    3. 가장 어려운 부분이 공인인증서 부분으로 알려져 있는데, 공인 인증서의 보안 취약점은 국내가 아닌 해외에서 이미 공개가 되어 있는 상태이다. 공인 인증서 파일을 취할 수 있다면, 행위 분석을 통해서 동일하게 사용하는 것이 가능하다. 공인 인증서에 대한 내용은 Hacking Simulation 부분에서 직접적으로 다룰 수 없음을 인지하기 바란다. (검색하면 다 나온다, 영어로 번역해서 Google에서 검색해 보면 꽤 많은 자료를 구할 수 있다.)

  1. ActiveX 분석
    1. ActiveX 분석 방법은 여러 가지가 제공되는 데, 가장 쉬운 방법은 Visual Studio를 이용하는 것이다.
    1. Visual Studio의 SPY++ 기능은 해당 실행 파일 및 ActiveX가 어떻게 동작하는지를 알 수 있다.

    1. 해당 DLL이나 OCX를 IDE에서 Loading하면 구조를 파악할 수 있다. 구조 정보는 SPY++를 통해서 얻은 정보를 참조해서 실행에 필요한 관계를 파악할 수 있다.

      1. Core에 가까운 부분은  De-Assembler를 이용하는 방법이다. 방대한 양의 Code로 나타나게 되겠지만, 참조하는 DLL(Object)이나 Library 등의 정보가 있다면, C/C++을 기반으로 한 Pseudo Code 수준까지 얻을 수 있다.

    1. 공격 대상 Site 행위 분석
      1. Network를 중간에 감시할 수 있는 Server가 구축이 되어 있으며, Snipping은 여기서 진행하도록 한다.
      2. ActiveX 보안의 취약성이 가장 극대화되는 Browser는 Internet Explorer 9이다. ActiveX를 처리하는 부분이 Browser Engine에서 분리되어 별도의 Plug-in으로 개발이 되었다.
      1. Internet Explorer 8이나 Internet Explorer 9를 이용해서 해당 사이트에 접근해서 핵심이 되는 업무를 진행하면서 Network에서 처리되는 내용과 호출되는 명령에 대해서 시간을 Matching해서 확인한다.
      1. 행위 분석을 Flow 개념으로 도식화해서 정리한다. 각각의 예외 경우도 테스트를 통해서 확인한다.

    1. Virtualization에 대한 원격 정보 수집 및 교체
      1. Virtualization에 설치된 환경에서 진행되는 정보를 중간에서 수집하거나 변경하는 것을 목적으로 한다.
      2. ActiveX가 주고 받는 정보를 감시해서 원하는 내용을 수집하거나 변경하는 것을 목적으로 한다.
      3. Virtualization에 대한 API를 분석하면 이 과정을 쉽게 수행하는 것이 가능하다.
      4. Virtualization을 직접 원격 제어하는 것이 불가한 경우가 있는데, 이 때는 Snipping을 이용한 Network 상의 정보 수집 및 교체를 수행한다. ActiveX 자체를 변화시킬 경우에 보안에 의해서 실행이 중지되는 경우가 있으며, Network를 통해서 진행되는 정보를 수집하고 변경하는 것은 보안이 감지를 못하는 경우가 많다.

    1. 공격 행위 Modeling
      1. Site에 대한 공격은 목적에 의해서 다양한 방법을 동원하게 된다. 위에서 준비된 재료를 잘 활용해서 Modeling을 해야 한다.
      2. 첫째로 고려해야 할 부분은 추적에 대한 대비이다. IP와 MAC 정보를 변경하는 것으로 1차적인 준비는 끝나 있다고 볼 수 있다.
      3. 국내가 아닌 해외의 VPN을 이용해서 접근함으로써 추적을 피하기 위한 2차적인 준비는 끝난다.
      1. 접근 Scenario 맞춰서 Data Modeling을 기획한다. Data Modeling은 ActiveX를 통해서 이루어지는 모든 Data를 대상으로 해서 이루어진다.
      1. 각 과정에서 발생할 수 있는 예외 상황에 대한 처리를 명시한다.
      2. 목적 달성의 표지를 설정한다. 행위가 종료될 수 있는 표지를 설정하고,흔적 지우기와 결과물 저장 방법을 처리한다.

    1. Program 개발
      1. 공격 행위는 2가지 상황으로 나누어져 있으며, 2개는 개별적인 Program 개발을 요구한다.
      2. 공인 인증서 무력화보다는 정보 변경을 목적으로 한다면, 일반 사용자 System에 침입하고 설치한 후에 작동하는 구조를 선택한다.
      1. 공인 인증서 무력화가 가능하다면, 외부 Network를 통해서 Dummy System을 이용해서 원하는 목적을 달성하는 것이다.
      1. Program 개발 과정에서 회피를 위한 Code 기법을 충분히 구성하며, 자동 소멸될 수 있도록 조건 설정은 필수이다.
      2. 행위의 실행에 관련해서는 기술하지 않는다.

    1. 주의 사항
      1. ActiveX를 통해서 구현되는 경우에도 Site 내에 보안 구조가 설치되어 있는 경우가 있다.이것이 Network를 통하지 않는 보안 구조일 경우(예를 들어 OTP)에 공격을 해도 주요한 요소를 변경시킬 수 없다. 대신, 사용자의 입력 정보를 변경시켜서 목적을 달성할 수도 있다.
      2. 부당한 이익을 위해서 해당 Simulation 방법을 사용하는 일은 없도록 하자.
      1. 본 내용은 정말로 행위에 필요한 대략적인 내용만 다루고 있다. 이유는 실제적인 Code 단위의 내용을 다루면 그건 엄연히 불법이기 때문이다.


    댓글 없음:

    댓글 쓰기