PostList

2016년 2월 3일 수요일

Burp Suite를 이용한 웹페이지 내용변경 테스트



Burp Suite를 이용한 웹페이지 내용변경 테스트


*본 포스팅의 내용은 네이버에 전혀 영향을 주지 않으며 본인의 PC, 브라우저에서만 순위
 변경을 적용/확인 할 수있는 방법이니 오해 없으시기 바랍니다.
*본 포스팅에 사용된 Burp Suite 버전은 1.4.01 이며 현재 최신 버전은 1.6.32 로 확인
 됩니다. GUI가 다를 수도 있는 부분은 양해 부탁 드립니다.


[Burp Suite 소개]
Burp Suite는 PC에서 외부로 나가는 패킷과 외부에서 PC로 들어오는 패킷을 제어할수있는
Proxy Tool 이며 이와 같은 Tool로는 Odysseus, Paros 등이 있습니다. 그림과 함께 자세한
실습 방법을 보면 아 이런게 Proxy Tool 이구나 하고 기능을 금방 알 수 있습니다.
중요한것은 들어오고 나가는 패킷을 제어한다는 것인데 이 '제어' 에는 확인,변경,패킷허가,
패킷드랍 등의 기능을 의미하며 이러한 Proxy Tool은 주로 웹 페이지 테스트/점검 등에
사용 됩니다.
본 포스팅에서는 Burp Suite 의 기본적인 기능을 이해하기 위한 간단한 내용을 다루지만
Burp Suite 는 HTTP Request, Response Data의 변경뿐 아니라 Smart Decoder, Compare,
다양한 부가기능을 지원
하는 유용한 Tool 이며 기타 기능은 차후에 순차적으로 포스팅 하겠습니다.


[Burp Suite 설치 및 사용환경 구성]
앞서 설명한대로 Proxy Tool인 Burp Suite를 이용하면 PC에서 웹페이지에 접근할때 오고
가는 모든 패킷을 중간에 가로채서 '제어' 할수있습니다. 서두에 오늘 포스팅의 네이버
실시간 검색어 변경은 네이버에는 전혀 영향을 주지않고, 본인의 PC에서만 확인가능하다고
하였는데 그 이유는 Burp Suite로 가로챈 패킷중 네이버 서버에서 사용자의 PC로 보내는
패킷을 가로채 그 내용을 수정하기 때문입니다.
네이버에서는 사용자에게 정상적인 내용의 패킷을 보낸것이고 이미 받은것을 변경해서
사용자 PC화면에 띄우기만 하는것이기 때문에 본인만 확인가능하고 네이버에 영향은 전혀
없습니다.

실습을 위한 Burp Suite는 무료버전과 유료버전이 제공되며 개인사용에 제한은 없습니다.
참고로 Burp Suite의 실행을 위해서는 Java를 설치해야 합니다. Burp Suite 와 Java 다운
로드는 아래 링크를 참조하시기 바랍니다.

Burp Suite 다운로드 링크
https://portswigger.net/burp/download.html



Java 다운로드 링크
https://www.java.com/ko/download/



[Burp Suite 실습]
실습 환경에 맞게 Burp Suite 옵션과 브라우저의 프록시를 설정한뒤 원하는 내용대로
네이버 메인페이지 실시간 검색어를 변경하는 방법을 알아보겠습니다.
원활한 실습을 위하여 Burp Suit의 옵션을 2가지 설정해야 하는데 네이버 페이지가 한글
이기 때문에 한글지원을 위한 글자폰트 설정, Request 와 Response 패킷 모두 제어하기
위한 Burp Suite 설정이 필요합니다.

Burp Suite 글자폰트 설정을 위해서는 Burp Suite 실행 후 'Option -> Display' 메뉴의 Message Display 를 변경 해야 하며, Request, Response 패킷 제어 설정은 해당 항목의
체크박스만 활성화 하면 됩니다.


Burpsuite 폰트 변경
*폰트가 한글로 되어있는 경우 해당 과정은 생략 해도 됩니다.





Burpsuite Request/Response 패킷제어 설정
Default 로는 Request 패킷만 활성화 되어있는데 웹페이지 내용 변경을 위해서는 Response
내용을 변경해야 하기 때문에 둘다 활성화 해야 합니다. 설정 방법은 'Proxy -> Options'
메뉴에서 Intercept server response 항목의 intercept 체크박스를 선택 하면 됩니다.
참고로 Proxy Tool 을 사용하기 위한 Port 번호도 'Proxy -> Options' 항목에서 변경 할 수
있습니다.

*참조
- intercept client requests
  사용자가 Request 하는 패킷을 Intercept 할 것인지 체크하는 옵션
- intercept server responses
  Request 이후 서버에서 보내는 Response 패킷을 Intercept 할 것인지 체크 하는 옵션




브라우저 설정
Response 설정이 끝났다면 이제 브라우저를 설정해야 합니다. 저는 크롬 브라우저를 사용
하였고, Internet Explorer, Fire Fox, 기타 웹브라우저 모두 메뉴는 다를수 있지만 설정방법
은 동일합니다. 각 브라우저의 '설정' 메뉴에서 Proxy 관련 부분을 Burpsuite 에서 사용하는
8080 Port 를 입력하여 설정 할 수 있으며, Burpsuite 에서 Port 정보를 바꾼 경우 변경한
Port 번호를 적용해야 합니다.

*설정정보
- 주소 : localhost
- 포트 : 8080








Burpsuite Intercept 실행
여기까지 Burp Suite 와 브라우저 설정을 완료 하였다면 HTTP Request, Response Data
변경 실습준비가 모두 완료 된 것입니다. 사이트 접속 시 작업표시줄 화면에 Burp Suite
아이콘이 반짝 이고, Intercept 된 정보를 제어할 수 있습니다.

실습으로 진행해 볼 네이버 실시간 검색어 내용변경을 위해 Burp Suite 로 Proxy 설정이
완료된 브라우저에서 www.naver.com 에 접속 합니다.
반짝이는 Burp Suite 아이콘을 클릭하면 'Request to http://www.naver.com:80' 내용을
확인 할 수 있으며 naver.com에게 80번 port 로 요청을 보내는 패킷이라는 의미 입니다.
해당 Request 의 Raw Data를 확인하면 'GET / HTTP/1.1 host:www.naver.com' 이라는 내용
을 확인할 수 있는데 간략하게는 naver에게 메인 페이지를 요청한다는 내용 입니다.
Forward 와 Drop 은 브라우저와 웹서버간의 통신을 허용(Forward) 할 것인지 차단(Drop)
할 것인지 선택하는 내용이며 최초 웹페이지 접속시 Request 는 사용자가 네이버에 보내는
'요청' 이기 때문에 아무런 변경없이 'Forward'를 선택합니다.

브라우저나 웹서버 환경에 따라 차이는 조금 있겠지만 몇번의 Forward 를 하다보면 Naver
메인 페이지의 Response Data 가 Intercept 됩니다.
'Response From http://www.naver.com:80' naver.com 웹서버에서 발생한 Response Data
가 확인 되면 실시간 검색어 내용 변경을 위해 '실시간 검색 순위' 문구를 찾아야 합니다.

소스코드를 훑으며 스크롤을 내리다보면 '실시간 급상승 검색어' 부분을 확인할 수 있으며
그 아래에는 실시간 급상승 검색어에 입력된 내용을 확인할 수 있고, 이 내용을 변경하면
사용자의 웹 브라우저는 변경된 내용을 반영하여 출력할 것이기 때문에 결과적으로 실시간
검색어 순위를 마음대로 변경할 수 있게 됩니다. 저는 재미삼아 상위 검색어 4개에 대한
변경을 시도 해 보았습니다.

데이터 변경이 끝나면 'Forward'를 클릭하여 변경한 패킷을 웹브라우저에서 출력하도록
합니다. 이때 더이상 'Forward'가 나타나지 않을 때 까지 'Forward'를 클릭해 줘야 하는데
네이버 메인 페이지 하나 열리는데 엄청난 데이터가 오고 가는것을 확인할 수 있습니다.
따라서 네이버라는 메인 웹 페이지가 하나의 소스코드로 되어있는 것이 아니라 광고, 뉴스,
로그인창, 검색어창 등의 각 Part로 나누어져 있다는것을 알 수 있습니다.

변경후 모든 패킷을 Forward 한 후에 웹브라우저 화면을 보면 그림과같이 변경한대로 순위
정보가 바뀌어 있음을 확인 할 수 있습니다.









[Proxy Tool의 안전한 사용권고]
본 포스팅에서는 Response 내용만 변경하였기 때문에 아무런 문제가 없지만 만약 Request
Data 에 공격코드를 삽입하는 등 악의적인 변조를 한다면 웹서버에 전송하는 패킷을 변조
하는 것이기 때문에 경우에 따라 심각한 문제가 될 수 있으며 범죄행위가 될 수도 있으니
아무 사이트에나 이러한 Proxy Tool을 사용하면 안됩니다.
권장하는 방법으로는 VM 등을 이용한 실습환경을 구축해놓고 실습환경 내에서 Proxy Tool
을 이용하며 공부 목적으로 사용하는것을 권고 합니다.


웹서버와 브라우저의 Request, Response 패킷을 제어할 수 있는 이러한 Proxy Tool 들은
변조된 데이터를 서버에서 어떻게 처리하는지를 시뮬레이션 해볼 수 있기 때문에 웹페이지
의 보안점검을 하는데도 굉장히 유용하고, 많이 사용 되고 있습니다.

관련 Tool 들은 GUI만 다를 뿐 구동방식은 모두 비슷하기 때문에 여러가지 Proxy Tool 을
사용 해보고 본인에게 편리한 Tool을 사용하는 것이 좋습니다.

관련 내용이 공부나 업무에 도움이 되었으면 좋겠습니다.

감사합니다.


댓글 없음:

댓글 쓰기