오픈소스) SOCKS Protocol 01

Logging·2023년 2월 16일
0

개발새발쿼카발

목록 보기
6/7

✍🏻 00. intro

  • [RFC 1928] SOCKS Protocol Version 5
  • [오픈소스] SOCKS Client/Server

✍🏻 01. SOCKS Protocol 란...

  • 일반적으로 포트 1080 활용
  • TCP/UDP 지원

장점/단점

  • 암호화 없이 IP 주소를 변경하여 VPN보다 속도가 빠름
  • 트래픽 암호화 하지 않음

✍🏻 02. 동작 과정

1) Negotiation

  • SOCKS 통신 인증 과정

  • 클라이언트 사용할 인증 방식 갯수/ 인증 방식 을 서버에게 알려줌

  • 클라이언트 패킷 구조 : VER/ NMETHODS/ METHODS

  • 서버 패킷 구조 : VER / METHODS

  • METHODS 종류들 (RFC 참고)
    o X'00' NO AUTHENTICATION REQUIRED
    o X'01' GSSAPI
    o X'02' USERNAME/PASSWORD
    o X'03' to X'7F' IANA ASSIGNED
    o X'80' to X'FE' RESERVED FOR PRIVATE METHODS
    o X'FF' NO ACCEPTABLE METHODS

2) Request/Reply

  • 인증이 완료되면, 클라이언트는 서버에게 자신의 요청을 보다 자세히 알려줌

Request

  • 클라이언트 패킷 구조 : VER/CMD/RSV/ATYP/DST.ADDR/DST.PORT
  • CDM (RFC 참고)
    o CONNECT X'01'
    o BIND X'02'
    o UDP ASSOCIATE X'03'
  • ATYP (RFC 참고) address type of following addres
    o IP V4 address: X'01'
    o DOMAINNAME: X'03'
    o IP V6 address: X'04'

Reply

  • 서버 패킷 구조 : VER/REP/RSV/ATYP/BND.ADDR/BND.PORT
  • REP (Reply Field)
    o X'00' succeeded
    o X'01' general SOCKS server failure
    o X'02' connection not allowed by ruleset
    o X'03' Network unreachable
    o X'04' Host unreachable
    o X'05' Connection refused
    o X'06' TTL expired
    o X'07' Command not supported
    o X'08' Address type not supported
    o X'09' to X'FF' unassigned

UDP 기반 클라이언트

  • 클라언트 패킷 구조 : RSV/FRAG/ATYP/DST.ADDR/DST.PORT/DATA

    +----+------+------+----------+----------+----------+
    |RSV | FRAG | ATYP | DST.ADDR | DST.PORT |   DATA   |
    +----+------+------+----------+----------+----------+
    | 2  |  1   |  1   | Variable |    2     | Variable |
    +----+------+------+----------+----------+----------+

    RSV Reserved X'0000'


✍🏻 03. Next Plan

1) 오픈소스 활용한 proxy 서버 구축

[서버] https://github.com/Lozy/danted
[클라이언트] https://github.com/darkk/redsocks

2) iperf 테스트

proxy 서버 - 클라이언트 간 통신 테스트

3) 트래픽 분석 정리


참고자료
[출처] https://www.rfc-editor.org/rfc/rfc1928
[출처] https://github.com/Lozy/danted
[출처] https://github.com/darkk/redsocks

profile
개발새발쿼카발로 기록중💾

0개의 댓글