SSL-MITM(man-in-the

Download Report

Transcript SSL-MITM(man-in-the

HTTP보안
18. HTTP 보안
-dsniff
2004. 11. 02
실시간 정보 시스템 LAB
이영주
RTIS LAB.
HTTP보안
HTTP란?
HTTP 보안
SSL
Dsniff 란?
Dsniff 사용 예
dnsspoof 사용 예
Reference
HTTP보안
HTTP란?
• WWW(World Wide Web.)에서 쓰이는 프로토콜
- 1989년 3월, 스위스의 CERN 연구소(입자물리 연구소)에서 처음 시작한 프로젝트
기존의 텍스트 기반 인터페이스 대신 그래픽 인터페이스를 통해 정보를 교환하기 위해
만들었다.
- Client/Sever 구조로 동작(웹브라우저/웹서버)
- 비연결 프로토콜
: 요청할 때마다 매번 서버에 접속했다가 연결을 끊는 과정 반복
- Client : Ms 익스플로러, netscape, Lynx
- Server: Apache, IIS
HTTP보안
HTTP란? Web Application의 구조
• 전형적인 웹 어플리케이션 구성 요소
N-tiers
Request
Web
client
Transport
SQL Query
Web
app
Web
Server
Response
HTTP Response
Connector
Connector
DB
DB
HTTP보안
HTTP란?
• URL의 형식
프로토콜:// 서버_주소[:포트번호]/파일_경로
ex> 야후 사이트의 index.html파일에 접근하고자 할 때
http://www.yahoo.co.kr/index.html
 포트를 지정하지 않으면 자동으로 TCP 80번 포트 사용
특정포트를 사용하고자 할 경우는 포트번호를 지정
http://www.yahoo.co.kr:9000/index.html
HTTP보안
HTTP란?
• 웹브라우저가 URL요청을 보낼 때
1. Client는 서버에 접속한 뒤 다음과 같은 메시지를 보낸다.
: GET /index.html HTTP/1.0 \r\n
\r\n
GET : 자료요청 (ex>POST,PUT,HEAD)
/index.html : 자료의 경로
HTTP/1.0 : HTTP 프로토콜의 버전
모든 메시지는 헤더+본문 으로 구성
\r\n : 헤더와 본문을 구분
HTTP보안
HTTP란?
2. Sever 응답( 헤더+본문) : 본문 내용을 화면에 보여줌
: HTTP/1.1 200 OK \r\n
Server: Apache/1.3.26 (Unix) PHP/4.2.3 \r\n
Last-Modified: Tue, 07 Jan 2003 12:57:38 GMT \r\n
Connection: Close \r\n
Content-Type: text/html \r\n
\r\n
<html> \r\n
Hello, Web Browser! \r\n
</html> \r\n
HTTP보안
HTTP 보안
• HTTP보안 문제
- CGI 문제
- DDoS문제
- 쿠키
- 웹 스푸핑
- 입력 검증
HTTP보안
HTTP 보안 문제 – HTTP쿠키
• HTTP쿠키
- Sever가 Client에게 저장하는 어떤 정보
-처음 로그인 할 때 사용한 정보를 계속 유지하기 위한 해결책
( 로그인 후, 재인증 필요 없음)
- 비연결 프로토콜에서 연결 지향형 프로토콜의 효과
문제
• HTTP쿠키의 문제점
- Client에서 변경 가능
HTTP보안
HTTP 보안 문제 – HTTP쿠키
EX> 웹브라우저를 통해 http://www.google.co.kr에 접속
새로 생성된
쿠키파일
HTTP보안
HTTP 보안 문제 – HTTP쿠키
쿠키파일의 내용은
- 두번째 줄에 있는 것이 쿠키이며,
사용자가 내용을 고친후, 다시 www.google.co.kr을 요청하면
- 웹브라우저는 사용자가 변경한 쿠키를 웹서버로 보낸다.
HTTP보안
HTTP 보안 문제 – Web spoofing
• Web spoofing
- Client에게 가짜 웹페이지를 보내는 공격
1. 가짜 웹페이지를 보내주는 방법
2. 가짜 서버(공격자의 서버)를 진짜 서버로 믿게 하는 방법
- DNS spoofing
- ARP spoofing
※ MITM(man-in-the-middle)공격
HTTP보안
HTTP 보안 문제 – Web spoofing
• MITM(man-in-the-middle)공격을 이용한 웹 스푸핑
4.내용을 바꿔서 전송
1.웹페이지 요청
2.중간에서 가로챈 뒤,
실제 웹서버에 요청
3.요청한 내용 전송
HTTP보안
HTTP 보안 문제 – Input validation
• 입력검증(Input validation)
- Client가 보낸 입력을 제대로 검사하지 않아서 생기는 문제
ex) 버퍼오버플로우, 포맷 스트링 버그 등
• 검사 방법
1. Sever측 검사
- 클라이언트가 보낸 입력을 일일이 검사(데이터 포맷 검사)
- 장점: 가장 안전함
- 단점: 서버측에서 많은 검사코드를 작성하여야 함.
2. Client 측 검사
- 클라이언트 웹 브라우저의 스크립트를 이용하여 입력을 제한
단점: 클라이언트측 스크립트는 완벽하지 않다.(소스를 읽기 쉬움)
HTTP보안
HTTP 보안 문제 – Input validation
•웹 페이지 소스저장 방법
-Window에서 : 익스플로러의 저장기능 이용
- Unix에서
: wget, lynx 를 사용
UNIX에서 구글페이지를 읽어오고 싶다면
lynx에서 구글페이지를 읽어오고 싶다면
[bastion]$ wget http://www.google.co.kr/
[bastion]$ lynx -source http://www.google.co.kr
--17:55:05-- http://www.google.co.kr/
<html><head><meta http-equiv=“content-type”
content=“text/html;charset=EUCKR”><title>Google</title><style><!—body,
td,a,p,.h{fonr-family:굴림,돋움,arial,sans-serif;lineheight=120%;}
=> ‘index.html’
Connectiong to www.google.co.kr:80... Connected!
HTTP request sent, awaiting response… 200 OK
.ko{font-size:9pt;}
Length: 3,111 [text/html]
.h{font-size:20px;}
OK -> · · ·
[100%]
17:55:07 (506.35 KB/s) – ‘index.html’saved[3111/3111]
.q{text-decoration:none; color:#0000cc;} //-->
</style><script><!—
Funtion sf(){document.f.q.focus();}
// -->(생략)
HTTP보안
HTTP 보안 문제 – Input validation
•공격자가 원하는 서버에게 데이터를 보낼 때
- 스크립트 언어 : cURL, Perl, PHP
- 직접 만든 프로그램
• cURL(Client URL Library Functions )
- FTP, TELNET, HPPT, HTTPS 등 지원
- 라이브러리 형태로 제공
Example: (page located at http://www.formpost.com/getthis/
<form action="post.cgi" method="post"> <input name=user size=10>
<input name=pass type=password size=10> <input name=id type=hidden value="blablabla">
<input name=ding value="submit"> </form>
ID:foobar PW:'12345
curl -d "user=foobar&pass=12345&id=blablabla&ding=submit"
(continues) http://www.formpost.com/getthis/post.cgi
curl -F "[email protected]" -F "yourname=Daniel"
HTTP보안
SSL / Secure Socket Layer
•SSL /Secure Socket Layer
- HTTP 에서 동작하며 터널을 형성
- OSI 중 4계층(트랜스포트)과 5계층(세션) 사이
- 웹에서 데이터 암호화에 쓰임
- 암호화 가능하여 기밀성을 제공 <공개키 암호화 방식>
: 스니핑을 통한 공격에 안전
문제
• SSL암호화의 문제점
- SSL-MITM(man-in-the-middle)공격
HTTP보안
SSL - MITM 공격
•SSL – MITM 공격
1.google.com요청
인증서:attact.com
클라이언트
2.google.com요청
인증서:google.com
3.attack.com으로 응답
4.클라이언트에게 응답
Attack.com
google.com
1.클라이언트는 SSL을 통해 google.com 요청(DNS 스푸핑: IP착각)
=> DNS스푸핑공격으로 인해 attack.com에 이 요청이 전송됨.
attack.com에서는 클라이언트에게 자신의 인증서를 보여주며 통신.(유효성 판단하지 않아서 생김)
2.Attack.com에 있는 공격자는 클라이언트가 보낸 메시지의 내용을 평문으로 볼 수 있다. 이
내용을 저장한 뒤, 공격자는 같은 요청을 google.com으로 보냄.
=> google.com의 인증서를 이용하여 통신
3.Google.com에서는 attack.com에 응답
4.Attack.com에서는 google.com에서 보낸 암호화된 메시지를 평문 형태로 변환한 다음 다시
암호화하여 클라이언트에게 보냄.
HTTP보안
SSL - MITM 공격
•SSL – MITM 공격을 방지하는 방법
- 유효하지 않은 인증서를 사용하는 웹 사이트와는 통신을 하지 않는 것
•SSL-MITM 공격에 사용할 수 있는 툴
- dsniff
(wemitm툴과 dnsspoof를 이용)
HTTP보안
Dsniff 란?
•Dsniff란?
- 한국계 미국인 송덕준이 개발한 해킹도구.
- 미국 연방수사국(FBI)의 범죄 용의자 추적용인 카니보어(carnivore),
이 카니보어에 맞서기 위해 해커들이 개발한 알트보어(altvore)와 함께
대표적인 스니핑(sniffing) 소프트웨어로 꼽힌다.
- 상대방의 암호(ID)·비밀번호·메일 내용 탐지
- 해커가 원하는 정보를 선택하여 탐지
다운로드
http://www.monkey.org/~dugsong/dsniff/dsniff-2.3.tar.gz
HTTP보안
Dsniff 설치
•Dsniff
- 스위치 환경과 SSL, SSH의 사용을 무색하게 만드는 패스워드 스니퍼.
- SSL과 SSH 버전 1의 패스워드를 가로챈다.
* OS : OpenBSD (i386), Redhat Linux (i386), and Solaris (sparc)
- 스위칭 환경에서 효율적인 스니핑을 하기 위한 매우 다양한 유틸들이 포함
*유틸: Arpspoof, dnsspoof, mailsnarf, filesnarf 등
•dsniff를 사용하기 위해서는
Berkeley DB, OpenSSL-, libpcap, libnids, libnet 등을 설치
설치순서는
Berkeley DB -> libnet -> libnids -> dsniff
※ Berkely DB설치 – ver 2.7.7만을 사용하여야 하고, 꼭 ver 1.8.5와의 호환모드로 컴파일
되어야 함.
HTTP보안
Dsniff 설치
1. Berkeley DB설치
3. Libnids라이브러리 설치
#tar xvfz db-2.7.7.tar.gz
#cd /root/lecture/dsniff/db-2.7.7/dist
#./configure –enable-compat185
……………..
반드시 ver 1.8.5 호환모드로 설치
#make
#make install
#tar xvfz libnids-1.16.tar.gz
#cd libnids-1.16
#./configure
………………
#make
#make install
2. Libnet라이브러리 설치
#tar xvfz libnet-1.0.2.tar.gz
#cd libnet-1.0.2a
#./configure
…………….
#make
#make install
4. dsniff 설치
#tar xvfz dsniff-2.3.tar.gz
#cd dsniff-2.3
#./configure
…….
#make
#make install
HTTP보안
Dsniff 매뉴얼
DSNIFF(8)
DSNIFF(8)
NAME
dsniff - password sniffer
SYNOPSIS
dsniff [-c] [-d] [-m] [-n] [-i interface] [-s snaplen] [-f services]
[-t trigger[,...]]] [-r|-w savefile] [expression]
DESCRIPTION
dsniff is a password sniffer which handles FTP,
Telnet, SMTP,
POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP MS-CHAP,
NFS, VRRP, YP/NIS, SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL,
Meeting Maker, Citrix ICA, Symantec pcAnywhere, NAI Sniffer, Microsoft
SMB, Oracle SQL*Net, Sybase and Microsoft SQL protocols.
HTTP,
HTTP보안
Dsniff 에서의 스니핑 방법
ARP Redirect 방법에 의한
1. 네트워크 상에서 패킷이 보내질 때 목적지의 IP 주소를 갖고 해당 목적지가 어떤 MAC 주소를 사
용하는지를 요청
2. ARP request는 네트워크 상에 브로드캐스팅되어 모든 호스트가 그 패킷을 받게 되고 해당 IP를
가진 호스트는 그런 IP를 사용하는 것은 나라고 ARP reply를 주게 된다
[그림 1] ARP request 과정
[그림 2] ARP reply 과정
HTTP보안
Dsniff 에서의 스니핑 방법
3. 하지만 공격자는 거짓된 ARP reply를 계속하여 보낼 수 있다
아래와 같이 두 개의 Reply를 받게 되는 경우, 패킷이 도달한 순서에 따라 둘 중 하나의 응답을 믿게
된다. 10.1.1.3의 응답을 믿었다면 패킷은 10.1.1.1로 보내지는 것이 아니라 10.1.1.3으로 보내진다.
문제는, ARP Request가 오기 전에 ARP reply가 위와
같은 식으로 보내지게 되었을 때
공격 대상이 되는 시스템의 ARP cache에 그런 내용
이 저장이 되고 ARP cache에 10.1.1.1에 대한 정보가
있다면 굳이 ARP request를 하지는 않는다
•이 점을 이용하여 공격자는 ARP Request가 있기 전
부터 거짓 응답을 주기적으로 계속 보냄.
10.1.1.1로 가게 될 패킷은 10.1.1.3으로 가게 된다.
[그림 3] 조작된 ARP reply 과정
10.1.1.3은 해당 패킷의 내용을 받고 저장한 후 바로
아무 일 없었다는 듯이 10.1.1.1로 포워딩 하므로 통
신에는 문제 없다 (10.1.1.1은 못알아차린다.)
HTTP보안
Dsniff 실행 결과
Applicance dsniff # dsniff
Dsniff: listening on eht0
----------------- 10/26/04 20:14:21 tcp 168.188.129.184.2454 -> 168.188.130.30.21 (ftp)
USER adoregnu
PASS smile99
----------------- 10/26/04 20:14:32 tcp 168.188.129.184.2458 -> 168.188.130.30.21 (ftp)
USER adoregnu
PASS smile99
----------------- 10/26/04 20:15:32 tcp 168.188.129.184.2464 -> 168.188.129.2.23 (telnet)
adoregnu
smile99
HTTP보안
Dsniff를 이용한 해킹의 방지
디스니프를 이용한 해킹이 가능한 이유
1. plan text
2. broadcast
*arp위조
텔넷의 패스워드가 abc라고 가정하면,
스니퍼를 이용하여 볼 수 있는 내용은 a, b, c 각
각 보이지만, 디코드 기능을 이용하면 abc를 모
두 조합시켜 보여준다.
 수집된 수많은 패킷들을 사용자가 하나하나
찾아서 조합하는 과정을 툴이 자동적으로 해결
디스니프를 이용한 해킹을 막기 위해서는
1.퍼스널컴퓨터용 보안도구들을 사용해 메일에 암호를 건다.
( 다른 사람이 내용을 볼 수 없도록 )
ex>PGP(pretty good privacy)로 메일에 암호를 걸어 다른 사람이 내용을 볼 수 없도록.
2. 웹메일을 이용한 뒤 윈도 시스템 폴더에 있는 캐시폴더의 내용들을 삭제한다.
(정보유출방지)
ex>캐시분석용 도구를 이용하면 ID 및 패스워드를 외부인이 손쉽게 알아낼 수 있기 때문.
HTTP보안
dnsspoof 이용한 MITM
dnsspoof.hosts 파일에 써준다.(MITM할 주소를)
# $Id: dnsspoof.hosts,v 1.2 2000/08/28 13:28:21 dugsong Exp $
#
# Sample hosts file for dnsspoof - kill web banner ads for Niels. :-)
#
127.0.0.1 ad.*
127.0.0.1 ads*.*
127.0.0.1 adbot*.*
127.0.0.1 adcount*.*
127.0.0.1 adfinity*.*
127.0.0.1 adforce*.*
127.0.0.1 adimage*.*
127.0.0.1 adlink*.*
127.0.0.1 adserv*.*
127.0.0.1 adremote*.*
127.0.0.1 adv.*
127.0.0.1 advert*.*
127.0.0.1 banner*.*
127.0.0.1 count*.*
127.0.0.1 promo*.*
127.0.0.1 werbung*.*
127.0.0.1 *ads*.*.com
127.0.0.1 *.adbot.com
127.0.0.1 *.adone.com
127.0.0.1 *.adforce.com
127.0.0.1 *.ad-up.com
127.0.0.1 *.advert*.*
127.0.0.1 *.banner*.*
127.0.0.1 *.bfast.com
127.0.0.1 *.burstnet.com
127.0.0.1 *.doubleclick.net
127.0.0.1 *.focalink.com
127.0.0.1 *.flycast.com
127.0.0.1 *.freestats.com
127.0.0.1 *.hitbox.com
127.0.0.1 *.globaltrack.com
127.0.0.1 *.globaltrak.net
127.0.0.1 *.imagine-inc.com
127.0.0.1 *.imgis.com
127.0.0.1 *.link*.com
127.0.0.1 *.memory.net
127.0.0.1 *.preferences.com
127.0.0.1 *.smartclicks.com
127.0.0.1 *.sponsorpool.net
127.0.0.1 *.stats.net
127.0.0.1 *.stattrax.com
127.0.0.1 *.*tracker.com
127.0.0.1 *.valueclick.com
127.0.0.1 *.wisewire.com
127.0.0.1 *.yahoo.com
168.188.129.191 www.daum.net
HTTP보안
dnsspoof 이용한 MITM
Applicance dsniff # dnsspoof -i dev-br –f /etc/dsniff/dnsspoof.hosts
dnsspoof: listening on dev-br [udp dst port 53 and not src 168.188.129.188]
Applicance dsniff # dnsspoof -i dev-br –f /etc/dsniff/dnsspoof.hosts
dnsspoof: listening on dev-br [udp dst port 53 and not src 168.188.129.188]
168.188.129.184.4159 > 168.188.1.1.53: 2+ A? www.daum.net
Applicance dsniff # dnsspoof -i dev-br –f /etc/dsniff/dnsspoof.hosts
dnsspoof: listening on dev-br [udp dst port 53 and not src 168.188.129.188]
168.188.129.184.4159 > 168.188.1.1.53: 2+ A? www.yahoo.com
-
HTTP보안
dnsspoof 이용한 MITM의 실행 결과
www.daum.net 을 요청했으나, dnsspoof에 의해 공격자가 지정한 페이지인 가짜 페이
지가 뜨게 된다.
HTTP보안
Wemitm&dnsspoof 이용한 MITM의 실행 결과
Command로 보면…
HTTP보안
Reference
•강유의 해킹과 보안 18장
•http://www.securitytechnet.com/resource/rsc-center/presentation
/NetFocus2003/2.pdf
•http://elyjinni.com.ne.kr/hacking/sniffing.htm
•http://www.pgpnet.com/community
•http://curl.oc1.mirrors.redwire.net/docs/manual.html