본문 바로가기
3학년 학사/네트워크 보안

[네트워크 보안] #10. VPN 실습

by whiteTommy 2024. 12. 5.
반응형

터널링

  • 정의 : 인터넷의 특정 구간에 별도의 채널을 생성하여 데이터를 전송하는 기법
  • 목적 : 암호화 채널을 통해 보안성을 높이기 위해
  • 특징 
    • 캡슐화
      • 원래 패킷을 터널링 프로토콜에 캡슐화하여 전송
      • 원래 데이터는 변경되지 않고, 터널링 프로토콜로 보호됨

 

VPN (Virtual Private Network)

  • 정의 : 터널링을 통해 전용회선을 가진것 처럼 동작하는 가상 네트워크 구축
  • 특징
    • 터널링 사용
      • VPN 은 터널링 기술을 활용하여 암호화된 통신을 제공 
        ex) SSL, IPSec, PPTP 와 같은 프로토콜 사용
  • 응용
    • 외부 접속 : 회사 네트워크에 안전하게 접속하거나, 회사 지점 간에 안전한 통신을 제공
    • 우회 접속 : 해외 VPN 서버를 통해 제한된 사이트나 자원에 접근
      • 접속 사이트 변경 및 통신 내용 보안

 

  • 왼쪽 그림 (클라이언트-서버 VPN)
    • 개별 사용자가 VPN 서버를 통해 회사의 내부 네트워크에 안전하게 접근하는 구조이다.
  • 오른쪽 그림(사이트-투-사이트 VPN)
    • 두 사설 네트워크 간에 암호화된 터널을 설정하여 안전한 데이터 전송을 보장한다.
  • 이 두 방식 모두 데이터를 암호화하여 안전하게 통신하며, 사용 목적에 따라 선택된다.

 

VPN 실습

SSH Tunneling 을 이용한 Web Proxy 구축

이 그림은 SSH Tunneling을 사용하여 데이터를 암호화된 터널을 통해 전송하는 과정을 보여준다.

 

  • 동작 과정
    • 브라우저 → SSH 클라이언트 (PuTTY) : 브라우저는 HTTP 요청을 생성하여 SSH 클라이언트로 전달.
    • SSH 클라이언트 → AWS 서버 : SSH 클라이언트는 HTTP 요청을 암호화하여 AWS 서버로 전달. (SSH 터널링)
    • AWS 서버  : AWS 서버는 HTTP 요청을 해독하고, 이를 웹사이트로 전달.
    • 웹사이트 → AWS 서버 : 웹사이트는 요청에 대한 응답을 생성하여 AWS 서버로 반환.
    • AWS 서버 → SSH 클라이언트 → 브라우저
      • AWS 서버는 웹사이트 응답을 SSH 터널을 통해 클라이언트로 암호화된 형태로 전송.
      • SSH 클라이언트는 이를 복호화한 후 브라우저로 전달.
  • 실습 순서
    1. AWS 인스턴스 생성
    2. Putty SSH Tunnel 설정
    3. SSH 재접속
    4. 브라우저 Proxy 설정
    5. 브라우저로 웹사이트 접속

 

AWS 인스턴스 생성

  • SSH 클라이언트 인증용 키 쌍
    • 잘 보관해야 함 => test.ppk
  • 서버 IP 주소 획득
  • 터미널 실행
    • Putty 에서 서버 주소 저장
    • 클라이언트 개인키 지정
    • 서버 공개키 fingerprint 확인
  • 로그인
    • login as : ubuntu 입력
    • SSH 터널을 위한 필요 프로그램 설치
      • sudo snap install root-framework
  • Putty SSH 터널 설정
    • 5000번 포트를 SSH 서버로 forwarding 하도록 설정
  • SSH 재접속
    • window console 에서 터널링 확인
    • netstat -an
    • 127.0.0.1 : 5000 listening 이 나오면 됨
  • Proxy 설정
    • 윈도우즈 인터넷 옵션에서 프록시 서버 활성화
    • socket(C) : localhost : 5000
  • 브라우저로 웹사이트 접속
    • ip 주소가 AWS 콘솔 주소로 바뀜

 

MITM (Man In The Middle) 공격

  • 정의
    • 통신 중간에 끼어들어 통신 상대방인 것처럼 위장하여 데이터를 도청하거나 변조하는 공격
    • 공격자는 중간에서 사용자와 서버 간의 모든 통신 내용을 볼 수 있으며, 심지어 데이터를 수정하거나 위조 가능

 

SSL MITM

  • 정의
    • SSL/TLS 를 사용하는 HTTPS 통신 환경에서 이루어지는 중간자 공격
    • 공격자는 HTTPS 의 암호화 연결을 우회하거나 위조 인증서를 사용해 데이터를 가로챈다.
  • 공격 과정
    1. 클라이언트 → 공격자 서버 (AWS로 위장):
      • 클라이언트는 HTTPS를 통해 안전한 서버에 연결하려고 하지만, 공격자의 서버(AWS로 위장)와 먼저 연결됨
      • 공격자는 위조된 HTTPS 인증서를 사용하여 자신이 신뢰할 수 있는 서버인 것처럼 속임
    2. 공격자 서버 → 웹사이트:
      • 공격자는 클라이언트의 요청을 받아 실제 웹사이트로 전달.
      • 웹사이트의 응답 데이터를 다시 클라이언트로 전달하지만, 중간에서 데이터를 열람하거나 수정할 수 있음.

 

공격자 서버로 유도하는 방법

  • ARP 스푸핑
    • 정의 (Address Resolution Protocol) 
      • IP 주소를 MAC 주소로 매핑하기 위한 네트워크 프로토콜 
    • ARP 프로토콜의 취약점을 이용해 공격자가 클라이언트와 서버 사이의 트래픽을 중간에서 가로챔
    • 공격자는 클라이언트가 자신을 서버로 인식하도록 ARP 테이블 변조
  • DNS 스푸핑
    • DNS 요청을 변조하여 공격자의 서버로 연결되도록 유도
  • hosts 파일 변경
    • 클라이언트 로컬 hosts 파일을 수정하여 특정 도메인이 공격자의 서버를 가리키도록 설정 
      ex) 192.168.1.100 www.example.com
      • 위와 같이 설정하면 클라이언트가 www.example.com 에 접근 시 공격자의 서버(IP : 192.168.1.100) 로 연결
    • DNS 보다 먼저 참조하는 hosts 파일을 변경

 

hosts 파일 변경으로 SSL MITM 실습

  • 관리자 권한으로 메모장 실행
  • C:\window\system32\drivers\etc\hosts 열기
    • 자기 aws ip 주소 hosting.whois.co.kr
    • 자기 aws ip 주소 member.whois.co.kr
  • MITM 프로그램 설치 및 실행
    • sudo apt install dsniff
    • sudo webmitm
      • 처음 실행 시 SSL 서버용 인증서 생성 (webmitm.crt)
        • 키와 인증서 모두 포함
      • 이후 실행 시 위 인증서 사용하여 웹서버처럼 동작
        • 오류 발생, 키 길이 부족
  • CA 키 쌍 생성, 인증서 SS
    • openssl 간략화 도구 설치
      • sudo apt install easy-rsa
    • 폴더 및 script 설치
      • make-cadir ca
    • pki 폴더 설치
      • cd ca (이후 명령어는 다 ca 에서 진행)
      • ./easyrsa init-pki
    • CA 키 쌍 생성 및 인증서 (ca/pki/ca.crt)
      • ./easyrsa build-ca nopass
  • 서버 인증서 생성
    • 서버 키 쌍, 인증요청서 생성 : CN 은 자기 이니셜
      • ./easyrsa gen-req 자기이름 nopass
    • 서버 인증서 발행
      • ./easyrsa sign-req server 자기이름
  • 인증서와 키 파일 내용 (PEM 부분) 을 webmitm.crt 의 PEM 부분에 overwrite 하기
    • 키 : /ca/pki/private/자기이름.key
    • 인증서: /ca/pki/issued/자기이름.crt
    • sudo sh -c 'cat pki/private/자기이름.key > ../webmitm.crt'
    • sudo sh -c 'awk '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/' pki/issued/자기이름.crt >> ../webmitm.crt'
      • sudo sh -c 로 하는 이유는 리다렉션(>, >>) 에 sudo 권한이 적용되지 않기 때문이다.
      • awk 명령 : 특정부분 추출 가능
  • MITM 실행 및 포트 열기
    • sudo webmitm 실행
      • sudo webmitm -dd : 더 많은 정보 출력
    • AWS https 포트 개방
  • 다시 접속하기
  • SSL 서버 인증서 오류 2가지
    • 신뢰하지 못하는 CA 가 발행
    • CN domain name 과 다름
  • CN 을 도메인 이름과 맞추고
  • CA 인증서를 가져와서 trust list 에 넣은 후 사이트 접속하면, 인증서 신뢰됨

 

피싱, 파밍

  • 사용자를 가짜 웹사이트로 유도하여 민감한 정보를 탈취하는 공격 방식
  • 가짜 사이트를 만들어서 운용
    • 하지만, MITM 은 진짜 사이트 중계
      • MITM 은 relay 이기 때문에 모든 인증 수단을 중계할 수 있음
        • 대응 방안은 지정 단말
        •  -> IP spoofing, MAC spoofing 에 의해 무력화됨
반응형