이번글은 일상 Web 사용 중 종종 만나게 되는 어이없는 웹 보안 프로그램을 회피 하는 방법 한가지를 소개 드립니다.

이미 시중에 여러 솔루션이 나와 있는 내용으로, 특정 웹 페이지에 대해서 선택 하여 복사 하거나, 화면 자체를 외부 캡쳐 프로그램으로 담는 것을 막는 이상한 방해 프로그램들이 사용되기 시작 했습니다.

문제는 이런 프로그램 때문에 가상화 컴퓨터(VMWare, VirtualBox, VirtualPC)에서는 아예 웹사이트가 막혀 버리는 상황입니다.
가상화 컴퓨터의 화면은 이것을 실행하는 Host 컴퓨터에서 쉽게 캡쳐가 가능 하기에 나온 '궁여지책'이죠!

그래서 쉽고 간단하게 이러한 이상한 프로그램의 방해를 극복하는 비교적 쉬운 방법을 소개 드립니다.

[2011-03-23]
** 한 웹보안 업체가 Fiddler 프로세스를 인식 하기 시작 했네요!
    제 블로그에 출근 도장란이라도 만들어 드려야 겠습니다.
    미안하지만 아래 내용대로 Fiddler를 먼저 실행하고, IE를 실행하면 Fiddler 인식을 못하는데요?!
    그나저나 고생 많습니다!
    사용자의 고통소리도 듣고 계시죠? 누구는 부팅만 수십번 했다던데요?


 


법적 책임에 대해
아래 내용은 일반적으로 허용된 방법을 포함한 적법한 내용이며,
이 방법을 사용하여 발생하는 결과에 대해서는 개별 사용자의 책임을 알려 드립니다.
혹시나 보안관련회사의 문의, 요청은 적법한 절차를 이용하여 주시길 바랍니다.

예> 컬러 복사기 사용법을 알려 드리는 것이며, 복사기를 이용한 위조지폐 유통은 당사자의 책임입니다.


목적
  웹 보안 프로그램에 의한 캡쳐 방지 극복, 가상화 컴퓨터에서 사용 방지 극복

해결방법
  웹 보안 프로그램의 스크립트 실행을 막음

필요한 솔루션
  웹 디버깅 프락시(Web debugging proxy) 유틸리티인 Fiddler를 사용




1~3은 배경 지식 설명이며
4~5는 최종 공략 입니다. 

1. Fiddler 를 다운로드 받고, 설치 합니다.
사용방법은 해당 웹페이지에 나와있는 동영상 설명과, 관련 예제를 참고 하시기 바랍니다.
유연한 기능이 많으나, 짧은시간에 설명이 힘든 내용이라, 상세 사용법을 여기서 언급 드리지 못합니다.


2. 웹 보안 프로그램의 동작 원리를 파악 합니다.
웹 이란는 환경 자체가 PC/Mac 에서 직접 실행되는 Native code와는 달리 마음대로 개별 컴퓨터를 조작 하는 것은 허용 되지 않습니다. 특히나 Web이라는 환경은 개별 브라우저를 사용하여 접속하기 때문에 PC 보안 프로그램처럼 마음대로 하는 것은 더욱 힘이 듭니다.
그러나 한국에서 아주 일반화된 ActiveX 기술 즉 IE(Internet Explorer)에 Add-on을 이용한 보안 기법을 사용하고 있는데, 역시나 웹 켭쳐 방지 솔루션도 이 ActiveX를 이용하고 있는 경우가 대부분 입니다.

제가 사용 해야하는 사이트에서도 ActiveX를 사용하고(별도의 프로그램을 설치), 이 ActiveX를 이용하여 개별 컴퓨터를 조작 하여 원하는 동작을 수행 하고 있습니다.
이 조작을 막아야 하는 것이 우리가 해야 할 일입니다.

Fiddler2를 설치 하고, Capture된 패턴을 보면서 분석을 해야 하는데 일반인이라면 이 부분은 skip하시고 계속 아래글을 읽어 보세요~


3. 웹 보안 프로그램의 일반적인 패턴
Web이라는 기술에는 script 기술이 허용이 되어, 매우 능동적인 동작이 가능하게 - 즉 프로그래밍 기법이 적용 되고 있습니다.
웹(Web) 보안 프로그램은 이 script를 이용해, 개별 ActiveX를 설치, 설치 여부 확인, 설치한 기능 실행을 수행 합니다.
자 그렇다면, 명확합니다. 이 요상한 웹 보안 프로그램의 설치, 설치여부 확인, 설치 기능 실행을 막으면 우리가 원하는 목적을 달 성 할 수 있습니다.
제가 대상으로 하는 웹 보안 프로그램은 하나의 함수만 실행을 막아 버리면, 설치확인, 설치까지 막히더군요.
왜냐면 script가 있고, 결국 이 script가 실행 되어야 하는데, 이 실행 기회를 막아 버리면 아주 쉽게 목적이 달성 된다는 것입니다.

여기서 중요한 내용하나를 언급 드리면~
HTML은 code가 위에서, 아래로 쭈욱~ 실행이 됩니다.
즉 Script가 위치하고, 호출 하는 부분이 있다면, 해당 부분의 스크립트가 실행이 되고 난 뒤에 아래에 나오는 HTML 혹은 추가 스크립트가 실행이 됩니다.
웹 보안 프로그램은 보통 BODY 가 처리 되기 전 단계인 HEAD 혹은 BODY 맨 윗 부분에 위치하여 해당 page가 보이기 전에, 막음 처리 등등을 하게 됩니다.


4. 공략 대상의 관련 코드와 구성
저의 공략대상에 대해서 HTML을 뒤져 보았습니다.
보통, 기존에 잘 돌아가는 웹 페이지에, 추가로 설치하는 방식이라 이전과 비교 혹은 비 보안 페이지와 소스를 살짝만 비교해도 금방 찾아 낼 수 있더군요.

기존 HTML 이라면 보통 아래 정도의 구성을 가집니다.
<HTML>
<HEAD>
<SCRIPT> ~ </SCRIPT>
</HEAD>
<BODY>
~
~
</BODY>
</HTML>


여기에 웹기반 보안프로그램이 포함된다면 아래와 유사하게, HEAD section 혹은 BODY section 에 '괴물 code'가 위치 하게 됩니다. 대충 아래 처럼 말이죠 (은행 등등의 솔루션은 별도 script URL에서 읽어 옵니다. 결국 구성은 비슷 합니다)

<HTML>
<HEAD>
<SCRIPT> ~ </SCRIPT>
</HEAD>
<BODY>
~
<SCRIPT>
  웹 기반 보안 프로그램을 위한 기괴한 스크립트들이 와장창 위치 합니다.
  괴물용-변수선언
  괴물용-변수선언들 ...
  ......
  괴물용-함수선언
  괴물용-최초동작을위한 함수
  괴물용-함수선언들 ...
  ......
  괴물용-최초동작을위한 함수호출!      [--> 위에 등장한 '괴물용-함수선언' 중의 하나로 호출 합니다.]
</SCRIPT>

~
</BODY>
</HTML>



5. Fiddler2를 이용한 실시간 HTML 변경 처리 하기
앞서 이론적인 부분이 지겨웠을 텐데요~ 결국 우리가 해야 할 일은 한줄 요약이 가능합니다.
웹보안 기동 함수를 찾아서 해당 함수 호출을 막아 버리면 됩니다.
앞서 언급한 "괴물용-최초동작을 위함 함수호출1" 이 부분만 확인하고 Fiddler2에 "Rule"을 추가하여 '없는 것으로' 처리 하면, 아주 깔끔하게 마무리가 됩니다.

저의 공략 대상 보안프로그램은 이 함수면이 아래와 '유사' 합니다.
  SecurePage();  

즉 위 함수가 <BODY> 아래 부터 나오는 요상한 스크립트에 정의 되어 있고, 해당 스크립터 덩어리의 맨 아래 부분에 보면 호출 하는 것으로 끝을 맺게 되는 것이죠.
최신 IE 등 에서 제공하는 스크립터 디버깅 기능을 이용해서 의심가는 함수에 break를 걸고, skip하여 동작을 사전 확인도 가능 합니다.

말이 길었습니다. 아래 처럼 Fiddler2 실행 상태에서 조작을 하세요

5.1. 'Ctrl'+'R' 을 누르거나 메뉴의 'Rules' - 'Customize Rules...' 를 선택합니다
   메모장이 실행이 되고, 'CustomRules.js' 파일이 열려지게 됩니다.

5.2. static function OnBeforeResponse(oSession: Session) 섹션으로 이동 합니다.
OnBeforeResponse는 WebBrowser에서 개별 웹 요청에 대한 결과를 받기 직전에 수행되어, 필요에 의해서 특정 부분을 바꾸거나 다른 결과를 브라우저로 전달 하게 됩니다.

SecurePage();를 없애 버리는 것이 목적이므로 아래처럼 OnBeforeResponse 맨 아래에 추가 하시면 됩니다.
"www.공략대상.사이트" 는 'SecurePage();' 함수가 위치한 HTML code의 host입니다.
Fiddler 캡쳐 내용에서 Ctrl+F 등으로 찾기하시면 개별 Host이름 확인은 바로 가능 합니다.

if (oSession.HostnameIs("www.공략대상.사이트") ) {
    oSession.utilDecodeResponse();
    oSession.utilReplaceInResponse('SecurePage();',' ');
}

결과적으로 "SecurePage();" 는 Fiddler2에 의해 실시간으로 삭제(공백으로 변경)되고 이 내용이 브라우저로 전달됩니다.
결과적으로 브라우저는 해당 함수가 호출되지 않게 되어, 요상한 보안 프로그램의 기동을 막게 됩니다.

위 내용을 추가 하고 저장(Ctrl+S) 하시고, 해당 웹페이지를 다시금 탐색하면, 원하는 목적을 달성 하게 됩니다.


오늘도 즐 역공 되시길 바라며~ 편하고 유용한 웹서핑 되시길!


블로그 이미지

532

처음 프로그래밍을 시작한 개발자들은 Hello World!를 기억 할 것이다. Hello world가 Hell World가 될 줄 몰랐던 한 개발자의 이야기. 게시글의 출처를 표기하며, 출처를 남기지 않고 펌을 하는것에 대해 법적 책임을 묻지 않습니다.

,