- 전체
- 명
- 오늘 찾아주신 분
- 명
보안을 중요시 하는 회사의 경우에는 주기적으로 연마다 보안점검을 할 때가 있다. 점검 사항이 여러가지 있겠지만, 빠질 수 없는 항목이 "통신을 할 때 패킷에 이상한 부분이 있는 지 없는 지 확인"하는 것인데, 이런 사항들을 확인하기 위해 필요한 프로그램인 Burp Suite 를 이용하는 방법에 대해 간단하게 알아보려고 한다.
1. 설치
Burp Suite 에는 유료인 Professional 과 무료인 Community 가 있는데, 특수한 기능을 사용하지 않는 이상 돈을 지불할 바에야 무료버전을 쓰는 게 더 낫지 않겠나.
Web Application Security, Testing, & Scanning - PortSwigger
PortSwigger offers tools for web application security, testing, & scanning. Choose from a range of security tools, & identify the very latest vulnerabilities.
portswigger.net
이메일을 작성하면 다운로드 페이지를 불려오는데, 그냥 다운로드 버튼이 없는 것으로 보아 이메일에다가 홍보 메일을 보내려는 속셈인 걸 알 수 있었다 (역시, 당연한 직감이었다.) 환경에 맞게 다운이 되는 것 같고, 나는 맥 유저이기 때문에 맥 버전을 설치하게 되었다.
2. 실행
무료버전의 특징은 내가 한번 만든 프로젝트에 대해서, Burp Suite 프로그램이 꺼지지 않는 이상 유지가 된다는 것이다. 이말은 Burp Suite 프로그램을 끄게되면 내가 무슨 설정을 하더라도 다시 실행할 때에는 전부 초기화 된다는 것이다 (그러나, 다른 방법이 있지.) 무료버전을 사용하게 되었으니 어쩔 수 없이 들어가본다.

나도 Burp Suite 에 대해서는 잘 알지도 못하고, 점검으로 인해 필요한 부분만 사용했기 때문에 필요한 부분만 설명하고 넘어가도록 하겠다.

일단 프로그램을 준비했고, 패킷 확인에 필요한 메뉴만 먼저 집어보도록 한다면 두 탭만 보면된다.
2-1. Target
타겟탭에 들어가면 서브메뉴로 Sitemap과 Scope, Issue 3가지 가 있는데, 첫번째로 Scope 를 먼저 지정하는 일을 해야 한다.

Scope 는 내가 어떤 API 내에서만 패킷 데이터를 확인할 것인 지 지정해놓는 설정탭으로, 쉽게 얘기하면 URL 필터링이라고 생각하면 된다. 그래서, 내가 디바이스를 통해서 패킷 데이터를 확인하려는데 다른 패킷 데이터들은 신경 안쓰고 안보고 싶다 하면 Scope 로 보고싶은 URL 만 지정하면 된다.
Add 를 누르면 URL 의 Prefix 를 입력하라고 나오고, 체크표시로 서브 도메인의 포함 여부도 다루고 있다. 체크를 하게된다면 다음처럼 되겠지.
Domain: naver.com
Subdomains:
- m.naver.com
- static.naver.com
- cafe.naver.com

Site map 는 패킷 데이터가 어느 URL 에서 호출되었는지 그룹 리스트로 볼 수 있는 탭이라고 할 수 있다. 이 부분은 나중에 프록시가 연결되면 쉽게 확인할 수 있다.
2-2. Proxy
본격적으로 패킷을 확인하기 위해서는 프록시를 설정해야 한다. 서브메뉴에는 4가지가 있는데,
1. Intercept: 패킷이 하나 이동될 때, 사용자가 직접 패킷에 대해 통신을 보낼 지 여부를 컨트롤 할 수 있는 메뉴
2. HTTP / WebSockets history: 서버와 주고 받은 패킷 데이터에 대해서 모니터링 하는 메뉴
3. Match and replace: 서버에 패킷을 주고 받을 때 패킷 데이터를 중간에 조작할 필요가 있는 경우 사용
그리고 Proxy Settings 메뉴가 있다. 먼저 패킷을 모니터링 할 디바이스와의 연결을 위해 "프록시 설정" 을 먼저 해보도록 한다.

다른 거는 잘 모르겠고, Proxy listeners 를 건들여본다. 기본적으로 127.0.0.1:8080 을 추가 해놨으며, 간단하게 바꿀 예정이기 때문에 해당 부분을 바꿔보도록 한다.
내 경우에는 Android 디바이스를 통해 주고 받는 API 들을 후킹하려 했기 때문에 와이파이를 통해 프록시를 연결 시키려고 했다. 127.0.0.1:8080 항목을 클릭한 후, Edit 버튼을 누르면 다음 창이 나오는데, 이 부분에서 Bind to address 를 All Interfaces 로 변경해준다.

만약 이미 사용중인 포트라고 한다면 8080포트를 변경해도 좋다. 변경한 이후에는 Proxy listeners 리스트에 *:8080 으로 변경된 모습을 확인할 수 있을 것이다.

다음에는 기기 설정으로 넘어가도록 한다. Android 환경에서 사용하는데 예시를 보여주기 위해서 에뮬레이터 환경에서 테스트를 해보았다. 먼저, 와이파이 프록시 연결이기 때문에 에뮬레이터의 와이파이 환경설정에 진입하도록 한다.

프록시 연결이 완료되었으면, Chrome 을 통해 다음 URL 를 치도록 한다
http://burp

이 화면이 잘 들어왔다면, 와이파이 프록시 연결이 일단 성립되었다고 얘기할 수 있다. 하지만 아직 끝나지 않았고, Burp Suite 에서 제공하는 CA 인증서를 기기에 설치해야 한다. 이 인증서는 Burp Suite 프로그램의 수명과 같이, 프로그램이 종료되면 사용할 수 없게 되어있다. 설치는, http://burp 페이지의 오른쪽 위에 보이는 "CA Certificate" 버튼을 클릭하면 된다. 다운로드를 하는데 마지막에 다음 경고가 뜰 수 있다.

이 경고는 그냥 무시하고 Keep 을 누르면, 뭐라고 뜨는데 그냥 Close 누르고 작은 Toast 가 뜰 것이다. CA 인증서는 다운로드를 통해서 바로 설치되진 않고, 다른 경로를 통해서 설치해야 하기 때문에 경고성 얼럿이 노출되었고, 본격적 설치를 위해서 디바이스의 설정 앱으로 이동해야 한다 (AVD Manager 가 아님).
설정 화면에서 "certificate" 라고 검색을 하게 되면, CA certificate 라는 메뉴를 확인할 수 있는데,

이 메뉴를 들어가서 방금전에 다운로드 받은 cacert.der 파일을 선택하면 알아서 설치가 된다. 여기까지가 설치 끝!
3. 패킷 확인
Chrome 에서 네이버 URL 을 치고 접속한 후에 Burp Suite 의 HTTP history 에 들어가면 다음의 화면을 볼 수 있다.

Target > Site map 을 확인하면,

뭔가 모르는 사이에 쥬르륵 도메인 묶음들이 생겨났다.
다시 Proxy > HTTP history 를 진입하여 GET/POST 중에 아무항목을 선택해보면 하단에 Request / Response 데이터를 확인할 수 있다.

4. 인터셉트
인터셉트는 Request 하는 패킷 하나하나 사용자가 통제할 수 있는 기능이고, Proxy > Intercept 에서 다룰 수 있다. Intercept on 을 한 이후에는 디바이스에서 동작을 할 때 동작을 포워딩 하지 않으면 에러가 발생된다.

쉽게 이야기 해서 Forward 는 해당 패킷의 전송을 허가한다고 생각하고, Drop 은 해당 패킷 전송을 허가하지 않는다고 생각하면 편하다.
5. 필터링
근데 "너무 많은 데이터들이 보여서, 나는 내가 지정한 도메인만 필터링해서 보고싶다!" 하면, 맨 처음 설정했을 때에 Scope 를 지정했던 기준대로만 리스트를 뿌려줄 수 있다.
서브메뉴 하단에는 필터링 설정 화면이 있는데, 이 화면에서 보고싶은 항목만 설정해서 볼 수 있다. 여기서 가장 첫번째 항목으로 보이는 Filter by request type 섹션에 Show only in-scope items 를 클릭한 후, Apply & close 를 누르면 완료!

6. 데이터 조작
Match and replace 를 통해서 Request 와 Respose 를 조작할 수 있다.

HTTP 통신에 대해서 주어진 조건에 해당되면(Match) 조건에 맞는 결과값으로 변환(Replace) 시키게 되며, 간단한 방식으로 Host 를 변환해보는 작업을 해보도록 하겠다. 일단 Add 를 들어가면,

다음 화면에서 Match 와 Replace 를 주로 다루며, 부가적으로 이 동작에 대한 설명 기입이 필요하면 Comment 를 사용할 수 있다. Type 에 대해서는 본인이 중점적으로 변환할 데이터에 대해 사용하면 된다. 정규식을 사용하려면 Regex match 를 체크하면 되고, 이 부분은 정규식을 조금이라도 다룰 줄 알면 쉽게 사용할 수 있을 것이다.

Host 내용을 그냥 단순하게 "daum.net" 으로 변환하는 조건을 작성해보았다. 그리고 OK 를 누르면 리스트 맨 하단에 방금 추가한 조건을 확인할 수 있다.

이 상태에서 Chrome 을 통해 사용을 하게되면....


Host 가 변경이 된 것을 확인할 수 있다.
이런 방식으로 Burp Suite 를 이용하여 보안 점검 항목을 대처할 수 있기 때문에 참 편한 프로그램이라고 생각한다.
비슷한 프로그램으로 Fiddler 라는 프로그램이 있는데, Fiddler 는 사용해보니 무료버전이 없고 10일 Trial 버전만 사용할 수 있었다. UI 는 Burp Suite 보단 조금 이쁘긴 한데, 뭔가 안맞으면 Response 자체를 받지 못해서 Burp Suite 사용이 더 용이했었다.
시간이 나면 Fiddler 를 간단하게 설정하는 방법도 포스팅해볼까 싶다.
| [Docker] Nginx + PHP-FPM 이미지를 만들어보자 (2편) (0) | 2022.06.27 |
|---|---|
| [Docker] Nginx + PHP-FPM 이미지를 만들어보자 (1편) (0) | 2022.06.27 |
| [Linux] PHP Composer 다른 방식으로 설치하기 (무설치) (0) | 2022.03.14 |
| [Linux] Nginx 소스 컴파일 (베껴)설치하기 (0) | 2022.03.10 |
| [Linux] 자주 쓰는 커맨드 모음 (0) | 2022.03.08 |