일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 멤버십
- 빅데이터
- SSM
- 삼성전자 소프트웨어멤버십 SSM
- 인공지능
- 갤럭시탭S8울트라
- Neural Network
- Google App Engine
- NarwalFreo
- Python
- 패턴인식
- 동아리
- 물걸레로봇청소기추천
- Friendship
- hopfield network
- 가상화
- 구글 앱 엔진
- 신경회로망
- 파이썬
- 증강현실
- BAM
- 패턴 인식
- 신경망
- 나르왈프레오
- 고려대학교
- 하이퍼바이저
- 삼성소프트웨어멤버십
- 물걸레자동세척로봇청소기
- Bidirectional Associative Memory
- 삼성
- Today
- Total
정보공간_1
[2기 강북 강정인] 스마트폰 환경에서의 SSL Strip 공격 본문
1. 개요
2009년 블랙햇 데프콘[1]에서 발표된 SSL Strip공격은 일종의 MITM(Man In The Middle) Attack 으로써, HTTP웹 페이지에서 생성하는 HTTPS 페이지로의 Redirect나 링크를 HTTP로 변환함으로써 SSL을 사용하지 않도록 하는 공격이었다. 이러한 공격 기법은 수년이 지난 현재 여전히 많은 경우에 대해 유효하다. 특히 802.11 WLAN이용의 증가로 인해 FakeAP와 같이 MITM 공격을 쉽게 수행할 수 있는 환경이 조성됨으로써 그 위험성이 다시 높아지고 있다. 본 문서에서는 SSL Strip 공격 및 관련된 기반 지식을 다룬다.
2. MITM 공격
Man in the middle attack은, 공격자가 두 네트워크 노드 사이에 위치하여 공격을 수행하는 경우를 지칭하는 단어이다.
그림 1 MITM 공격
그림 1과 같이 공격자가 두 네트워크 노드 사이에 위치하게 되면, 두 노드 사이의 네트워크 트래픽을 모두 수신할 수 있게 된다. 만약 트래픽이 암호화되어 있지 않다면, 공격자는 두 대상 노드 사이에 어떠한 내용이 오고 가는지 매우 쉽게 도청할 수 있다. 더 나아가, 중간에서 가로챈 패킷을 변조시킴으로써 더욱 심화된 공격을 수행할 수 있게 된다.
TCP/IP 네트워크에서 이러한 MITM 상황은, 주로 ARP Spoof 공격을 통해 이루어진다. ARP Spoof 공격은 네트워크의 IP 주소와 MAC주소 매칭에 필요한 ARP Cache를 오염시키는 것(ARP cache poisoning)이다. 이는 ARP패킷에 공격 대상 노드의 IP주소와 공격 대상의 MAC주소 대신, 공격 대상 노드의 IP주소와 공격자의 MAC주소를 삽입하고 Broadcast함으로써, 다른 네트워크 노드 들이 공격 대상 노드의 MAC주소 대신 공격자의 MAC 주소로 ARP Cache를 업데이트 하도록 한다. 공격이 성공한다면, 네트워크 노드들은 공격 대상 노드로 가야 할 패킷을 공격자에게 보내게 된다.
MITM공격을 하기 위해서는, 공격자가 네트워크 게이트웨이와 네트워크 노드를 대상으로 ARP Spoof 공격을 수행하면 된다. 네트워크 토폴로지는 단순하게 게이트웨이(32.2)-공격자(32.136)-공격대상(32.135)로 이루어져 있으며, 그림 2는 공격 수행 전/후의 네트워크 상태 및 각 노드의 ARP Cache 를 보여준다.
그림 2 ARP Spoofing 공격 전/후 노드 상태
그림 3은Backtrack[2]의 ARPSpoof툴을 이용하여 Spoofing 공격을 수행하는 화면이다.
공격이 성공하면 공격 대상 노드의 ARP Cache 중 게이트웨이의 MAC주소 (그림 3)및 게이트웨이의 ARP Cache 중 공격 대상 노드의 MAC주소가 공격자 주소로 변경되게 된다.
그림 3 Backtrack의 ARPSpoof툴을 이용한 ARP Spoofing 공격
그림 4 ARP Spoofing 공격 대상의 ARP 테이블
3. SSL
MITM과 같은 공격을 통해, 공격자가 쉽게 네트워크 트래픽을 도청하는 것을 막고자 SSL(Secure Sockets Layer) 프로토콜이 등장하였다. 이는 두 노드 사이의 네트워크 트래픽을 암호화함으로써, 공격자가 트래픽을 도청하더라도 쉽게 그 내용을 알 수 없도록 한다.
그림 5 SSL Handshake (출처:IBM[3])
SSL프로토콜의 세션 생성 과정은 그림 5를 참조하도록 한다. 클라이언트 노드에서 SSL 세션 요청을 보내면, 서버에서는 서버의 공개키 및 인증서를 클라이언트로 전송한다. 클라이언트는 서버의 인증서를 CA(Certificate authority) 에서 조회하여 올바른 인증서인지 확인한다. 만약 인증서가 올바르지 않다면, 사용자에게 해당 사실을 통보한다. 그 다음, 클라이언트는 트래픽 암호화를 위한 대칭키를 생성하고 이를 서버의 공개키로 암호화한뒤 서버로 보내며, 서버는 획득한 대칭키를 통해 역시 트래픽을 암호화함으로써 SSL세션을 형성하게 된다.
4. SSL Sniff
SSL의 Handshaking 과정에서, 서버에서 잘못된 인증서를 보냈을 때 사용자에게 해당 사실을 고지하고 잘못된 인증서를 사용할지 여부를 묻는다. 즉, 사이트의 위험성 판단을 여전히 사용자에게 맡기는 취약성을 안고 있다. SSL Sniff는 SSL의 이러한 취약점을 공격한다.
SSLSniff공격은 ARP Spoofing공격후 패킷 포워딩을 통한 MITM 환경을 만드는 것으로 시작한다. 공격자가 성공적으로 노드 사이에 위치하게 되면, 트래픽을 모니터링하며 SSL Handshake가 시작되기를 기다린다.
SSL
Handshake가 시작되고, 서버에서 자신의 인증서를 클라이언트로 전송할 때, 공격자는 중간 노드에서 서버의 정상 인증서를 가로챈 뒤 이를 가짜 인증서로 대체하고, 공격자의 공개키를 클라이언트에게 보낸다. 즉, 서버와 공격자 사이에 서버의 정상 인증서 기반의 SSL 세션을 수립하고, 공격자와 클라이언트 사이에 공격자의 가짜 인증서 기반의 SSL세션을
별도로 수립하게 된다.
그림 6 SSL Sniff
이때, 공격을 받은 클라이언트는 다음과 같이 잘못된 인증서 사실을 통보 받으며 세션수립 여부를 응답한다. 공격자의 인증서를 이용하여 SSL세션을 수립하게 되는 경우, 네트워크 암호화 키를 공격자와 공유하게 되며 따라서 공격자가 통신 내용을 도청/변조 할 수 있게 된다.
그림 7 MS IE의 SSL 인증서 오류 화면
5. SSL Strip
기존 SSL Sniff의 한계점은, 클라이언트에서 인증서가 잘못되었다는 사실을 사용자에게 통보한다는 것에 있다. 비록 많은 사용자들이 여전히 인증서 오류 여부에 관계 없이 사이트에 접속하지만, 보다 주의 깊은 사용자들도 공격하기 위해 SSL Strip공격이 개발되었다.
SSL Strip은 공격대상이 요청하고, 서버에서 공격대상으로 향하는 모든 암호화된 https 데이터를 평문의 http로 변조하여 공격대상으로 전달한다.
그림 8 SSL Strip
다음과 같은 Facebook의 로그인 링크를 예로 들어보면, http로 접속한 웹페이지에서, 정상적인 경우 로그인 버튼을 누른 경우 SSL프로토콜을 사용하여 암호화된 계정/비밀번호 전송을 하게 된다. 하지만 공격자가 중간 노드에서 SSL Strip 공격을 하는 경우, 서버에서 로그인 링크를 https가 아닌 http로 변조함으로써, SSL프로토콜이 아닌 일반 평문으로 계정 정보를 전송하도록 한다.
그림 9 SSL Strip 의 Facebook 예시
공격이 성공적으로 수행되면 공격 대상에서 사용자가 보내는 모든 정보들을 확인할 수 있다. 다음 그림은 Gmail로그인 아이디/비밀번호가 ssl strip에 의해 노출되는 것을 보여준다.
그림 10 원본 https 페이지 주소 |
그림 11 http로 변조된 페이지 주소 |
그림 12공격자에게 노출된 Gmail계정 정보
6. 스마트폰 대상 SSL공격
SSL Strip공격이 유선 환경이 아닌 무선 환경에서 수행되는 경우, MITM 환경을 만들기 위해 ARPSpoof뿐만 아니라 Fake AP공격 기법을 이용할 수 있다.
Fake AP는 공격자가 무선 AP를 공격적인 의도를 가지고 설치하는 공격이다. 이미 사용되고 있는 AP와 동일한 SSID∙암호를 사용하거나 혹은 공개 AP를 배치함으로써 공격 대상이 FakeAP로 접속하도록 한다. 이는 ARPSpoof에 비해 공격 대상을 명확히 설정하기 어렵다는 단점이 있으나, 무작위 사용자들에게서 더 많은 민감 정보를 획득할 수 있다.
FakeAP 공격은 AirCrack-ng[4]를 이용하여 수행한다. 다만 현재 암호화된 FakeAP의 제공은 WEP 방식만 가능한 상태이다. AirCrack-ng를 이용하여 AP를 만들면, DHCP Service를 실행하여 연결되는 클라이언트들에게 사설IP를 부여한다. 이후 SSL Strip을 이용하여 FakeAP로 들어오는 트래픽에 대한 공격을 진행한다. 이와 같은 일련의 공격 환경 세팅은 AirSSL[5]이라고 불리는 쉘 스크립트를 통해 쉽게 설정이 가능하다.
그림 13 FakeAP의 설치
그림 14 AirSSL을 이용한 SSL Strip공격 (Facebook 계정/비밀번호 추출)
설치된 FakeAP에 스마트폰이 접속하여 웹 브라우징을 하는 경우, 위와 같이 SSL Strip 공격에 의해 유선의 경우와 같이 민감한 정보가 유출될 수 있다.
다만 스마트폰 환경의 경우 일반적으로 특정 서비스에 특화된 어플리케이션을 설치하여 해당 서비스를 이용한다는 특징이 있다. 하지만 SSL Strip의 경우 웹 브라우저는https와 http 모두를 구분 없이 렌더링 한다는 취약성을 이용하여 공격한다. 즉, 메신저와 어플리케이션에서 특정 SSL인증서를 이용하여 진행하는 SSL통신에 대한 공격은 여전히 불가능한 상태라고 할 수 있다. 다만, SSL이 아닌 어플리케이션 자체의 취약점을 이용하여 공격하는 사례는 지속적으로 보고되고 있다. (예: Facebook App Session Hijacking[6])
7. 공격 플랫폼으로써의 스마트폰
현재 스마트폰의 성능은 실제 ARM기반의 Linux가 OS로써 동작할 정도로 향상되어 있는 상태이며, 이는 휴대성 이라는 측면에서 공격 도구로써 매우 높은 가치를 지니고 있다. 하지만 여전히 기기의 개발이 특정 하드웨어 벤더들에 의해 특화되어 이루어 지면서, 완전한 범용 하드웨어 플랫폼으로써는 부족하다. 특히 네트워크 공격에 사용되는 기술 대부분은 통신 도청과 패킷 조작과 같은 기능을 필요로 하며, 이는 네트워크 카드의 기능에 매우 의존적이며 대부분 카드 드라이버를 수정함으로써 공격에 이용한다. 하지만 하드웨어 벤더들은 보안/기술유출 방지와 같은 여러 가지 이유로 기능을 제공하지 않을 뿐만 아니라 드라이버 조작과 같은 행위에 협조적이지 않다는 문제를 가지고 있다.
다만 일부 스마트폰 모델의 경우 등 공격 도구로 사용하기에 적합한 기능을 제공하고 있다. 대표적인 예로 Linux Maemo를 운영체제로써 사용하는 Nokia의 N900의 경우, 무선랜 인터페이스를 통해 통신 도청 및 조작 패킷 발생과 같은 작업이 수행 가능하다. 즉, FakeAP, ARPSpoof, SSL strip 공격을 스마트폰으로 수행할 수 있다.
그림 15 N900스마트폰에서 SSL Strip공격을 수행하는 화면[7])
8. 결론
SSL Strip 공격은 스마트폰을 대상으로 한 무선 환경에서의 공격에 적용 가능하며 여전히 위협적이다. 특히 N900의 경우와 같이 스마트폰 플랫폼에서 또한 효과적인 공격이 가능하다. 현재 많은 해커들에 의해 네트워크 공격 툴을Android OS와 같은 ARM기반의 휴대용 기기로 이식하는 작업이 활발하게 수행되고 있다는 점으로 미루어, 미래의 네트워크 공격 시나리오에서는 스마트폰의 휴대하기 편하고 크기가 작다는 특징을 이용한 공격 또한 큰 부분을 차지할 것으로 생각된다.
9. 참고문헌
[1] Moxie Marlinspike, “New Tricks For Defeating
SSL In Practice”, http://www.blackhat.com/
presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf, 2009
[2] BackTrack, http://www.backtrack-linux.org/
[3] IBM, “The SSL handshake”, http://pic.dhe.ibm.com/infocenter/tivihelp/
v2r1/topic/com.ibm.itame2.doc_5.1/ss7aumst18.htm?path=3_6_0_6_0_5_0_4_6_3_1_0#wq20
[4] AirCrack-ng, http://www.aircrack-ng.org/
[5] killadaninja, “NEW SCRIPT Capturing Passwords With sslstrip AIRSSL.sh”, http://www.backtrack-linux.org/forums/showthread.php?t=28111, 2010
[6] DroidSheep, http://droidsheep.de/
[7] pcsci3nce.info, “Sniffing with sslstrip+ettercap on the N900”, http://pcsci3nce.info/?p=11, 2011
'IT 놀이터 > Elite Member Tech & Talk' 카테고리의 다른 글
[2기 광주 박이근] Feature Extraction (Canny Edge) (0) | 2012.08.18 |
---|---|
[2기 광주 조영진] C++ Template기초와 MetaProgramming (0) | 2012.08.18 |
[2기 대전 김호원]Concerto MCU 1. 개발환경 구축 (0) | 2012.08.17 |
[2기 강남 이인표]증강현실의 이해 I (0) | 2012.08.14 |
[2기 광주 박정태]C language - type cast (0) | 2012.08.14 |