백엔드/네트워크

[네트워크기초이론]#22. Proxy의 활용 두 번째, 분석

묘걍 2023. 10. 17. 13:43

Web으로 통신

- 기본적으로 HTTP 통신

- 하지만 이건 평문!

- 인터넷으로 내 정보가 다 돌아다니게됨

- SSL 적용

     - 소켓에 PKI기술 등을 적용, 암호화

- HTTPS를 사용

- PC에서 Google 통신할 때 암호화, 마치 터널 속에 들어간 것 처럼 트래픽이 보이지 않게 됨

- 내 정보가 보호됨

 

통신 상태 분석

- Wireshark 등을 통해 Google과 나의 통신 상태를 분석하고자 할 때

- IP와 Driver 사이에 필터 → 필터링은 안 하고 센서로 사용

     - 관련 내용: https://dev-study-501.tistory.com/123 참고

- 수집해서 트래픽 빨아올려서 위로 끌어올려주고 위에서 분석 (검은 화살표)

- Process부터 socket통신이 타고 내려오는데 (주황색 화살표)

- SSL이 적용되다보니 센서가 수집하는 패킷에 암호화가 되어 있음

     - 암호를 해석해야만 무슨 말인지 알 수 있다 (Session key를 찾아내서,,)

- 분석하려는 트래픽 자체가 HTTP, User mode application 레이어

- 날라다니는 데이터가 기본적으로 Stream인데 그걸 굳이 Packet수준에서 뜯어서 분석하는 게 적절할까?

     - Stream을 직접 분석하면 좋겠다

 

 

Proxy Server

- 암호화 되기 전에 분석하자

- Proxy server를 하나 둔다

- Stream에다 대고 "Proxy 서버가 127.0.0.1"라고 설정

     - 자기 자신을 뜻한다

     - 거기에 8080번을 Proxy로 하기로 했다 이렇게 하기로 했다(여기 이해가 안 감)

- Proxy Server에도 Socket이 열림

- Chrome이 Proxy 설정을 로컬로 하면

- 원래대로 쭉 내려 오는 게 아니라 Chrome 소켓을 통해서 Proxy 서버로 감

     → 그러고 나서 Proxy 소켓을 타고 나감

- 암호화는 Proxy server에서 함

- Chrome에서 Proxy로 가는 곳의 내용이 평문

     - 암호화 안돼있어

     - 여기서 분석

     - Stream 수준, Packet으로 쪼갠 상태에서 분석/조립할 필요도 없어

     - 여기서 보면 돼!!

 

Fiddler

더보기

Fiddler는 웹 트래픽을 캡처, 분석 및 조작할 수 있는 인기 있는 웹 디버깅 도구입니다. 웹 브라우저와 서버 간의 통신을 "가로채서" 볼 수 있기 때문에 많은 개발자와 테스터들이 이 도구를 사용합니다.

간단히 말하면, Fiddler를 사용하면 다음과 같은 작업을 할 수 있습니다:

  1. 트래픽 모니터링: 웹사이트를 방문할 때 브라우저와 서버 사이에서 오가는 모든 데이터를 확인할 수 있습니다.
  2. 요청 및 응답 수정: 실시간으로 웹 요청이나 응답을 수정하여 어떤 결과가 나오는지 테스트할 수 있습니다.
  3. 성능 분석: 웹 페이지 로딩 시간을 분석하여 성능 문제를 찾을 수 있습니다.
  4. 보안 테스팅: 웹 애플리케이션의 보안 취약점을 확인하는 데 도움을 줍니다.

간단한 예를 들면, Fiddler를 사용하여 웹 페이지가 이미지나 스크립트, 스타일 시트 등 어떤 리소스들을 요청하는지, 그리고 그 리소스들이 얼마나 빨리 또는 느리게 로드되는지를 확인할 수 있습니다.

Fiddler를 사용하면 브라우저에서 일어나는 "백스테이지" 작업을 들여다보고, 웹 애플리케이션의 작동 방식을 더 잘 이해할 수 있습니다.

- 소켓 통신을 스스로 분석할 수 있다

- 분석 용이

- 조작도 가능

     - Chrome이 구글 접속할 때 '나는 chrome 이다'라고 HTTP안에 써 있음

     - Fiddler를 이용해 조작 → 모바일 환경인 마냥 조작 (실제로는 PC인데 모바일인 척)

     - 브라우저가 모바일에 붙었을 때 처럼 콘텐츠가 날라옴

- 개발시 도움

 

 

 

출처: https://youtu.be/fkJx3T26BL0?si=jRrC7qPkT7LvEItO