1. VPN의 이해

VPN (Virtual Private Network) : client와 어떤 intranet 사이에 private channel을 만들어서 그 intrante에 접속하는 시스템. 그 intranet에서 다시 인터넷으로 접속할 수도 있다.

 

예) 회사 내부망을 구축했을때, 만약 직원이 회사외부로 출장을 나가 있는 상황인데 내부망에 접속해야 할 일이 발생하면

회사에서 VPN 서버를 작동시키고 직원에게 VPN 계정을 할당하여 내부망에 접속하도록 할 수 있다.

 

2. VPN을 통한 차단 사이트 우회

만약 특정 게임회사가 자사의 게임이 중국에서는 실행되지 않도록 해놓았다면 이는 중국 쪽의 ip주소를 막아놓은 것이다.

이때 중국의 사용자는 한국에서 작동하는 VPN 서비스에 연결한 뒤 해당 게임을 실행하면 된다.

게임회사 쪽에서 봤을 때 이 커넥션은 한국에서 접속한 것으로 보이기 때문에 접속을 차단하지 않는다.

 

회사에서 직원들의 트래픽이 모두 web proxy를 거쳐서 나가도록 한다음 특정 사이트에 대한 접속을 막았을 때를 생각해보자.

이때 직원은 자신의 VPN 서버에 연결한다.

그럼 회사의 web proxy 입장에서 이 트래픽은 blacklist에 대한 접속을 요청하는 것이 아니기 때문에 접속을 허가한다.

그럼 이 직원이 VPN에 연결한 다음 회사가 막은 그 사이트에 접속을 시도할 수 있다.

 

VPN을 이용하면 특정 inbound ip나 outbound ip를 차단한 시스템을 우회하여 원하는 네트워크 접속을 수행할 수 있다.

 

3. VPN을 통한 보안 강화와 암호화

어떤 공용 WIFI를 사용할 때 누군가에 의해 내 컴퓨터에서 나가는 트래픽이 ARP spoofing을 통해 감시당할 수 있다.

이때 VPN 서버를 하나 열고 여기에 연결해서 외부 인터넷을 사용한다.

단, 내 컴퓨터와 해당 VPN 서버 사이의 트래픽을 암호화해서 처리한다면 트래픽이 감시당한다 하더라도 그 내용은 알 수 없게 된다.

 

 - site-to-site VPN

VPN은 멀리 떨어져 있는 회사 본부 간의 정보전달을 위해서도 사용된다. (예 : 한국 지사와 미국지사)

이때 각 지사의 네트워크를 연결하는 VPN을 하나 만들고 암호화 방식을 정한다.

그리고 VPN터널은 암호화된 데이터를 주고받음으로써 보안이 확보된 상태에서 양 지사간의 통신을 할 수 있다.

 

4. VPN의 보안 취약점

외부에서 VPN에 접속하려면 VPN 서버는 최상단에 listen을 위한 포트를 하나 개방해야 한다.

만약 listen을 하는 application에 보안 취약점이 있다면 이를 통해 외부에서 exploit을 통해 내부로 침투할 수 있게된다.

또한 정상적인 경우 인증과정 후에 VPN 서비스에 연결해줄텐데 이때 Brute Forcing과 같은 방법으로 인증에 성공할 수도 있다.

 

VPN을 이용해 해커가 내부망 침투에 성공할 경우 다른 포트에 적용해놓은 보안 솔루션은 모두 무용지물이 된다.

예를 들어, 80번 포트에서 각종 웹 공격에 대비해 방화벽을 세우고 보안 기술을 적용해냈다 하더라도 해커가 VPN 포트로 내부망에 들어오면 아무런 쟁애물 없이 웹서버에 접근할 수 있게 된다는 것이다.

 

VPN에서 암호화된 트래픽을 복호화할 때 이 과정에 DMZ 영역에서 일어나기 때문에 암복호화에 사용되는 키가 노출될 수 있다.

 

5. VPN의 종류

1) PPTP (Point to Point Tunneling Protocol)

  • 오래된 프로토콜의 하나이며 PPP 기술을 확장하여 나온 프로토콜이다.
  • 암호화는 마이크로소프트가 만든 MS-CHAP 그리고 암호업계에서 할아버지 격인 RC4의 합성 방법인데, 너무 오래된 방법이라 복호화가 가능한 취약점이 많은 상태
  • VPN 서비스를 하거나 VPN 에이전트 등에서 거의 기본적으로 제공하던 프로토콜 이었으나 (iptime 등의 공유기에서 몇 번의 클릭만으로 손쉽게 VPN을 설정하기 위해 선호되는 방법이었다.) 하지만 현재는 애플에서 지원중단된 상태
  •  

     

    2) L2TP (Layer 2 Tunneling Protocol)

  • L2F (Layer 2 Forwarding)와 PPTP가 합쳐진, PPTP의 업그레이드 버전
  • 정확히는 L2TP는 터널을 만드는 그 자체 역할에 집중되어 있고 암호화 방식은 IPSec을 사용한다.
  • IPSec은 IKE (Internet Key Exchange)와 ESP(Encapsulation Security Payload)가 사용되는데 어쨌든 L2TP에서도 같은 기술을 쓰기 때문에 만약 IPSec 기능을 쓸 수 없다면 L2TP VPN도 쓸 수가 없다. PPTP와 마찬가지로 대부분의 OS나 장비에서 기본적으로 지원하고 있다.
  •  

    3) IPSEC

  • 전통적인 VPN 기술 중 하나로, 토큰에 의한 이중인증을 기반으로 한다. 빠른 속도와 강력한 보안이 장접이지만 공급업체에 따라 매번 달라지는 설정방법 때문에 장비가 바뀔 때마다 번거로운 면이 있다.
  • 주로 장비와 장비를 (지사와 지사 사이를) 항시 연결해 두어야 하는 경우에 주로 활용
  •  

    4) OpenVPN

  • 오픈소스 VPN, 기본 골격은 L2TP와 유사하지만 조금 더 업그레이드된 기능 제공
  • 프로파일로 쉽게 VPN 설정 가능, windows나 linux agent에 profile 정보만 import하면 쉽게 연결되고 iOS나 안드로이드 OS도 앱 지원이 잘 되어 있는 편
  • 상용 VPN서비스를 하는 곳 중 OpenVPN을 제공하는 곳이 압도적으로 많음, 개인 VPN으로 활용도 높음 -> 기업용 보안장비에서 OpenVPN 자체를 막아두는 경우가 많다.
  •  

    5) SSL-VPN

  • 전자인증서 기반 (모든 브라우저나 장비에는 인증서를 가지고 있기 때문에 표주화된 웹 브라우저 기반으로 편의성 높은 암호화 가능)
  • 별도의 client agent 없이 일반 VPN 사용자에게 인터페이스 제공 쉽다 (IPSEC의 단점 보강)
  • 사용자 측에서 agent 설치/관리 등의 비용이 없기 때문에 직원들의 사내망 접속 용 VPN에 많이 이용됨
  •  

    6) SSTP (Secure Socket Tunneling Protocol)

  • 마이크로소프트에서 내놓은 프로토콜의 하나, 리눅스 쪽에서 사용가능하나 아직 많이 활용되지 않음
  •  

    기타

    1) Tor 브라우저

    익명으로 인터넷 연결을 해주는 브라우저

    VPN과 같이 속도 문제가 발생할 수 있다.

    자바스크립트나 플래시는 Tor를 타지 않고 직접 전달될 수도 있다.

     

    2) Proxy 접속

    VPN과 다른 기술이지만 마찬가지로 익명성을 가지고 인터넷에 연결할 수 있다.

     

    *) 다만 Tor 브라우저나 Prxoy 접속을 이용하더라도 http/https 트래픽만 우회할 수 있고 프록시는 내 IP가 보인다.

    또한 프록시 서버가 로그를 남기면 내가 어떤 사이트에 접속하는지 로깅이 가능하다.

     

    3) 덕덕고

    사용자의 검색정보를 남기지 않는 검색엔진

     

    악성코드 분석가에게 트래픽 우회란?

    1) 감염 테스트용으로 사용해볼 외부 VPN 클라이언트를 세팅해두자!

  • 무료 VPN 서비스도 좋지만 정기적으로 서비스가 끊어질 가능성
  • 가상환경이나 테스트용 스마트폰에 감염용 VPN 설정을 해두자
  • 코딩이 가능하다면 VPN 스크립트를 만들어서 분석툴에 자동화 시켜놓는 것도 좋은 생각
  •  

    2)  온라인 Proxy Server 이용

  • 의심스러운 사이트는 free anonymous proxy server를 통해 접속해볼 것
  • proxy server는 사이트나 url의 일차원적인 체크를 위해서만 사용, 실제 악성코드 감염 테스트에는 감염용 VPN을 사용
  • + Recent posts