
Paros 툴은 웹 프록시 툴의 하나로써 해킹도구로 사용하고 있지만 원래의 목적은 개발자가 웹 취약점을 알아내서 보완 할 수 있도록 해주는 툴이다. 모든 취약성 점검 툴들은 해킹 도구로 사용할 수 있는 양날의 검과 같다고 할 수 있다. 특히 HTTP 프로토콜은 대부분의 다른 프로토콜들과 마찬가지로 보안에 대해서는 전혀 고려되지 않고 작성된 프로토콜이며 구조가 단순하여 쉽게 해킹이 가능하다.
paros 툴은 HTTP 프로토콜의 요청과 응답을 모두 기록하며 웹 사이트의 구조 또한 트리로 표현함으로써 웹 사이트의 취약점을 분석 할 수 있다. 또한 HTTP 프로토콜을 변조, 위장이 가능하며 여러 Encoding과 HASH 값들을 encoding/decoding할 수 있다.
http://www.parosproxy.org/ 에서 paros를 다운로드 받을 수 있으며 실행을 위해서는 jdk가 설치되어 있어야 한다.
Paros를 실행 시킨 후 웹 브라우저의 프록시 설정으로 paros를 사용 가능하다. 익스플로어를 기준으로 보면 도구->인터넷 옵션->연결->LAN 설정->프록시 설정 항목에서 paros의 Listen 포트를 지정하면 된다. paros의 기본설정은 local에서 8080포트를 Listen하고 있다.

프록시 설정
간단히 메뉴를 살펴보면 좌측 상단에는 Sites항목이 방문한 웹사이트의 구조를 보여주며 우측 상단에는 Request, Response, Trap 메뉴가 존재한다. 하단에는 진행했던 HTTP 프로토콜의 히스토리를 보여주고 있다.

Paros의 메인 화면
여기서 가장 많이 사용되는 메뉴는 Trap 메뉴이다. 이 메뉴는 요청이나 응답을 보내기 전에 메시지를 가로채어 변조 할 수 있도록 제공 되는 메뉴이다. JavaScript를 우회할 때를 보면 Trap response를 체크하고 요청을 진행하면 응답메시지를 웹브라우저로 보내기 전에 메시지를 가로채어 일시 정지를 시킨다. 이 때 전송되어 온 요청메시지의 자바스크립트를 변조 또는 파괴하여 JavaScript를 무용지물로 만들 수 있다. 보통 JavaScript에 입력값을 검증하는 부분을 없앨 때 주로 사용되는 방법이다.

Trap한 요청 메시지의 JavaScript를 변조하는 모습
Tools->Encoder/Hash... 항목을 보면 웹에서 많이 사용하는 인코딩이나 해쉬를 볼 수 있다. 웹에서 정보를 보호하거나 데이터 전송의 편의를 위해 인코딩이나 해쉬를 많이 사용하는데 이를 보안의 목적으로 사용하는 경우가 종종있다. 인코딩이나 해쉬는 절대로 보안을 위해서는 사용하면 안되는 것들이다. 인코딩의 경우는 어떤 인코딩인지만 알면 디코딩이 가능하며 해쉬의 경우는 입력값이 동일하면 같은 결과가 나오는 취약점을 가지고 있다.

'Encode Test'라는 문자열을 Base64 Encoding한 화면. 역변환으로 원래의 문자열을 알아낼 수 있다.
지금까지 Paros에 대해서 조금의 사용법을 알아 보았다. 이외에도 더 많은 사용법이 있지만 지금까지 배운 것만으로도 매우 많은 취약점을 우회할 수 있다. 입력값 검증을 회피하거나 SQL Injection, DOM Injection과 같은 Injection공격, Cross-Site Scripting 등등 많은 공격을 하거나 시발점이 될 수 있다.
We wrote a program called "Paros" for people who need to evaluate the security of their web applications.
Posted by 느긋나긋

