최근에 지하철에서 WiFi의 보안에 대해서 보고있다.

다양한 부분이 있겠지만 수업시간에 나오기도 하였고, 지하철을 많이 타는 나에게는 흥미로운 부분이여서

여러가지 찾아보면서 공부도 했는데, 알아보고 공부한 내용을 정리해보려한다.



일단 WiFi의 보안을 알려면 가장 기본적인 WiFi가 무엇인지부터 알아야한다.

WiFi는 일반인까지도 알고있는 보편적인 기술로 AP라는 장치를 통해서 무선으로 디바이스를 연결해 인터넷을 사용하는 기술이다.

여기서 AP는 Acess Point의 약자로 WiFi등을 통해 무선으로 디바이스들과 연결해 인터넷을 할 수 있게 해준다.

즉 일반적으로 집에서 사용하는 '공유기'라는 물건이 AP이다.

공유기를 보면 항상 랜선을 연결해야 인터넷이 된다는 것을 알것이다.

즉, AP는 무선을 유선으로 바꿔주는 장치이다. 마법적으로 인터넷을 되게하지는 않는다.


WiFi의 보안에 대해서는 WPA2나 WEP같은 보안을 생각할 경우도 있겠지만, 그런 부분은 나중에

공부해볼생각이다.(다만 관심있는 사람은 참고해보자. : http://www.itworld.co.kr/howto/106771)

여기서 다룰 것은 EAP에 대한 부분이다. 즉 사용자에 대한 인증파트이다.


EAP.

Extensible Authentication Protocol.

한글로 해석하면 확장가능 인증 프로토콜.

TCP/IP 계층 모델에서 Data-link Layer, 데이터링크 계층 바로위에 존재한다고 볼 수 있는

이 프로토콜은 어떠한 메카니즘을 일컫지않는다.

상위에서 사용하는 Authentication methods(인증 수단)과 Data-link layer 사이를 메우는 역할을 EAP가 한다.

따라서 EAP를 찾다보면 EAP-TLS, EAP-AKA, EAP-IKEv2등을 볼 수 있는데 이건 이러한 이유때문이다.

뒤에 붙은 TLS,AKA,IKEv2는 각각 Authentication methods이다. 만약 네트워크 보안에 대해 관심있는 사람이라면

익숙한 단어일것이다. TLS도 매우 많이 쓰이니 이 글은 아니지만 추후에 설명하는 것으로. (이 블로그에서 추후는 믿을게 못된다.)


아무튼 WiFi에서 사용되는 EAP가 이 글의 중심이다.

다만, 일반 가정에서 사용하는 공유기의 WiFi와는 큰 차이가 있을 것이다.

물론 공유기를 사용하는 가정에서도 EAP를 사용할 수도 있으나 이를 위해서는 Authentication Server를 설치해야한다.

일반 가정에서 서버를 설치하기는 매우 어려울 것이다.

그럼 어디에서 쓰이는가?


WiFi의 EAP는 주로 지하철에서 볼 수 있을 것이다.

KT,SKT,LG U+의 잠긴 자물쇠 아이콘의 와이파이가 주로 그것이다.


용도를 알았다면 어떤 EAP가 쓰이는 지에 대한 질문이 있을 것이다.

위에서 말했듯이 EAP는 Authentication method를 필요로한다.

지하철에서 통신사가 운영하는 WiFI는 어떤 Authentication method를 사용할까.


이는 바로 답을 줄수도 있는 부분이지만, 곰곰히 생각해서 추측해보면 더 재밌을 것 같다.


본인의 스마트폰으로 지하철 WiFi를 연결해본적 있는가?

만약 자신이 사용하는 통신사의 WiFi를 연결하면 집에서 공유기 WiFi에 처음 연결시도할 때와는 달리

자동으로 연결되어서 인터넷을 원활하게 사용할 수 있을 것이다.

만약 사용하는 통신사가 아닐 경우에는 창이 하나뜨면서 아이디와 비밀번호 또는 코드를 입력하라고 나온다.

후자는 또 다른 얘기일 것이다. (작성자는 해당 경로로 접속한 적이 없기때문에.. 만약 무료 쿠폰같은게 오면 와이어샤크로 뜯어볼 여지는 있습니다만.)


어떻게 자동으로 연결되는 것인가?

이게 본 글의 핵심 질문이다.

어디서 지금 연결하려는 스마트폰이 해당 통신사를 이용하는 지, 그리고 와이파이 서비스를 이용하는지는 어떻게 알고 연결을 진행해줄까.


아마 눈치 빠르신 분들은 바로 알았을 것이다.

USIM카드다.

출처 :Google Image, can't find.

Universal Subscriber Identity Module.

통신사와 계약을 하게되면 휴대폰 번호등의 정보가 담긴 USIM카드를 받게된다.

이 USIM카드에는 인증에 사용되는 MSK와 IMSI등등을 담고있다.

USIM카드에 기본적으로 저장되어있는 고유의 정보를 통해서(IMSI) 인증 절차가 이루어지고 와이파이에 연결된다.


이러한 USIM, SIM 카드를 사용해서 EAP를 수행하는 프로토콜들은 EAP-AKA,EAP-SIM,EAP-AKA'가 있다.

이 글에서 볼 프로토콜은 EAP-AKA이다.


EAP-AKA에서 Authentication method의 이름이 AKA인것은 알았다.

AKA, Authentication and Key Agreement의 약자이다.

이 method 자체를 보기전에, 무엇과 연결되는지도 중요하다.

EAP는 상위 Authentication method와 Data-link layer 사이를 메워준다는데 그러면 Data-link layer에서는 아무거나 사용해도 되는 것인가?

사실 여기서 잠깐 이해가 안갈 수 있는 문제가 있다.

만약 Data-link Layer에서 IEEE 802 시리즈를 사용한다면, 그냥 EAP만 사용해서는 안된다.

EAPOL이라는 것을 Data-link Layer 바로 상위에서 연결해서 Authentication method - EAP - EAPOL - IEEE802 (Data-link Layer)가 되게한다.


여기서 또 짜증날 수 있겠다.

EAPOL은 또 뭐니!

EAPOL은 EAP over LAN의 약자로 다른 표현으로는 "IEEE 802.1X"이다.


(EAP에 대해서 설명하면 네트워크의 기본적으로 알아야할 용어들을 바로바로 보게되서 좋다. 나도 아직 부족하지만..)


일단 LAN은 Local Area Network의 약자로, 네트워크를 배우면 가장 처음 배우는 단어일 것이다.

영어만 봐도 뜻이 전해질 것이다. 한 공간에서 사용하는 네트워크를 의미한다.

이 말은 즉 집에서 공유기를 들고 인터넷을 사용할때 공유기에 랜선이나 와이파이의 형태로 연결되어있는 공유기 집단의 네트워크가 LAN이다. WLAN이라는 단어는 여기에 Wireless만 붙은 무선에서의 그러한 네트워크.

(참고 : https://en.wikipedia.org/wiki/Local_area_network)

즉 EAPOL은 이러한 네트워크에서 EAP를 사용할 때, 거쳐야하는 EAP 계층의 프로토콜이다.

그렇기때문에 EAPOL은 IEEE 802.1X라고 불린다.

왜 그렇게 불리는지 이해를 못하시는 분들은 해당 주소를 참고하자.(https://en.wikipedia.org/wiki/IEEE_802)

반드시 알아야할 것은 WiFi는 IEEE 802.11로 불리고 이건 상식이다.


여기서 질문이 나올 수 있는 부분은 LAN의 개념만 들으면 모든 네트워크 환경이 그러한 것 같은데 다른 환경도 있는건가?

EAP에서 바로 Data-link Layer로 내려갈 수 있는가?

사실 이러한 부분은 프로토콜이 워낙 많고 대기업들에서는 자체적으로 프로토콜을 개발하고 사용할 수도 있기때문에

완벽한 답변을 주기는 어려우나 기본적으로 PPP라는 것이 EAPOL을 사용안하는 예로 들을 수 있겠다.  (참고 : https://en.wikipedia.org/wiki/Point-to-Point_Protocol)


만약 EAP에서 바로 Data-link Layer로 못내려간다는 얘기가 잘 이해가 안간다면, 다음 링크를 참고하자.

http://www.ktword.co.kr/abbr_view.php?m_temp1=1843

http://www.ktword.co.kr/abbr_view.php?nav=&m_temp1=2241&id=835


따라서 지하철에서의 WiFi를 사용하면 다음과 같은 프로토콜이 사용된다.

EAP-AKA - EAP - EAPOL(IEEE 802.1x) - WiFi(IEEE 802.11)


자, 그러면 EAP-AKA는 어떻게 작동하는 건가?

이에 대한 설명은 구글 이미지나 여러 사이트에서 좋은 이미지가 많았다.

다음 이미지를 참고해보면 좋을 것 같다. 다만 참고이고 간략화되어있는 이미지로서 실제 패킷을 캡쳐하면 다른 내용이 나와있다.

직접 와이어샤크를 사용해서 본 과정에 대해서는 뒷부분에서 이미지와 함께 다시 설명하겠다.

다만 네트워크는 이렇게 그림으로 표현하면 이해에 도움이 된다. 



출처 : https://www.netmanias.com/ko/post/blog/5363/authentication-security-wi-fi/802-1x-based-wi-fi-authentication-and-internet-access

위 그림에서는 아주 친절하게 SmartPhone이라고 쓰여있으나 구글에서 EAP등의 네트워크 자료들을 찾다보면 station이라는 단어도 사용하는 것을 볼 수 있을 것이다.

또한 여기서 보이는 AAA라는 것은 AAA server로서 Authentication,Authorization and Accounting Server의 약자이다.( 참고 : https://en.wikipedia.org/wiki/AAA_(computer_security)) RADIUS라고 하는 자료도 있고, 이 글에서는 통틀어서 Authentication Server로 보면 되겠다.


해당 그림을 통해서 자세히 설명하는 것으로 하겠다.

1) AP에서 스마트폰으로 Beacon을 통해 해당 AP의 존재여부를 알린다.

여기서 Beacon은 Beacon Frame이라는 AP가 Broadcast로 자신의 존재를 알리는 IEEE 802.11의 관리 프레임중 하나이다.

(참고 : http://www.ktword.co.kr/abbr_view.php?nav=&m_temp1=4898&id=1293http://www.ktword.co.kr/abbr_view.php?nav=&m_temp1=2319&mgid=148)

2013년에 Apple에서 발표한 iBeacon기술과 헷갈리지 말자. Bluetooth4.0을 통해 발전한 그것과는 다르다.

또한, Probe 프레임을 스마트폰이 Broadcast로 보내서 AP를 찾는 경우도 있다.


2)스마트폰에서 사용자가 해당 WiFi를 선택한다.

이를 통해서 3)을 수행하게 된다.


3)스마트폰에서 AP에게  WiFi(IEEE 802.11) 프로토콜을 사용해서 Association Request 프레임을 보낸다.

TCP/IP 계층 모델을 막 배운 사람이면 이러한 패킷은 어떻게 Encapsulation되어서 보내지는지 궁금할 것이다.

Wireshark와 같은 프로그램을 통해 스니핑해보면 잘 알 수 있겠지만, (Wireshark를 쓰라고 하였으나 절대 악의적인 목적으로 하지말자.) 

해당 패킷의 내용은 Data-link Layer까지이다. 즉 담겨진 내용에는 Data-link Layer 레벨에서 MAC주소를 통해 패킷 아니.. 프레임이 전송된다고 보는 것이 맞을 것이다. 

이 3)을 통해서 AP는 해당 스마트폰이 AP와의 연결을 원한다는 것을 알게된다.


다음에 쓰여있는 IMSI부분은 앞에서 얘기했던 USIM카드에 대한 내용이다.

USIM에는 처음받을 때 부터 스마트폰 사용자의 LTE등의 정보가 담겨져있어서 EAP-AKA 프로토콜에서 필요한 IMSI의 정보도 있다.


그림에서는 간략화되어있는데 3.1) 과정으로 AP에서 스마트폰에게 Association Response 프레임을 보낸다.

이또한 IEEE 802.11을 통해서 보내지는 것으로 EAP는 전혀 관여를 안한다.

TCP에 대해서 배운 사람이라면 ACK과 유사한 목적이라고 생각하면 편하겠다.


4)EAPOL을 통한 EAP-AKA의 Authentication 수행을 원하는 프레임을 AP에게 전송한다.

그림에는 4가 EAP-AKA의 과정으로 나와있으나 사실 4) 이전에 4.0)부분이 존재한다.


4.0)AP가 스마트폰에게 "EAP"를 사용해서 Request,Identity 프레임을 보낸다.

여기서부터 EAPOL(IEEE 802.1X)가 사용된다.


그리고 사실 4)는 다음과 같다.

4)스마트폰에서 AP에게 EAP를 통해 Response, Identity 프레임을 보낸다.

여기서 IMSI를 스마트폰이 AP에게 보낸다.

이 이후에 5)RADIUS를 통해서 AP가 Authentication Server에게 Acess Request를 보낸다, 6)Authentication Server가 AP에게 Accept를 보낸다. 와 같은 과정이 진행된다. 이는 랜선등을 통해서 이루어지는 과정이라 Wireshark를 통해서 확인은 못해봤으나 맞을 것이다.


7)EAPOL을 통해서 Success 프레임을 AP가 스마트폰에게 보낸다.

라고 적혀있으며 이를 통해 그림에서의 EAP-AKA가 끝이난다.

하지만 이것은 굉장히 간단하게 쓰여있는 부분이다.

나중에 다 고칠거니까 걱정마시길...


얘기를 잠깐 환기시켜서 

애초에 글을 쓰게 된 계기가 IMSI이다. IMSI는 고유의 식별자인데 이 이전에 어떠한 키도 주고받지못해서 IMSI가 그냥 노출되며

IMSI에 전화번호등의 정보들도 담겨있다고해서 확인하고싶었다.

이 IMSI는 4)~6)에서 쓰이는 부분인데, IMSI값을 받은 AP는 Authentication Server에게 보내서 Authentication Server가 데이터베이스에서 해당 IMSI를 가지고있는 스마트폰이 정말 통신사에 등록되어있는지 확인하는 것이다.

ID가 이대로 노출되면 당연히 위험한거 아닌가! 하는 사람도 있겠지만, 패킷변조를 통해 이 부분을 통과한다고 해도 이후의 프로토콜 내용에서 WiFi는 그렇게 멍청하게 작동되지않는다. (즉 제대로 작동한다)

또한 IMSI가 그 자체로 계속 쓰이는 것도 아니다. 이러한 부분은 (2)에서 설명하겠다.

그래도 IMSI가 그대로 노출되는건 조금 걸리는 부분이다. 특히 전화번호가 그대로 담겨져있는 것이라면.. 


얘기를 다시 돌려서 그림은 저런식으로 끝났지만 사실은 EAP-AKA가 실제로 수행되는 부분은 IMSI교환이 이루어지고 난 다음부분이다.

(적어도 Wireshark에서 EAP-AKA라고 보는 부분은 다음 부분이다.)

8)AP에서 스마트폰에게 EAPOL을 사용해서 EAP-AKA Request/AKA-Challenge 프레임을 보낸다.


9)스마트폰에서 AP에게 EAPOL을 통해서 EAP-AKA Response/AKA-Challenge  프레임을 보낸다.

...

등의 과정으로 패킷을 캡쳐해보면 이루어진다.


IMSI와 같은 부분은 AKA에서 앞의 A인 Authentication이라고 생각하면 될것같다.

이후의 Key Agreement부분은 8),9) 이후를 통해 이루어진다.

따라서 이후 부분을 보면 Key-Agreement도 알 수 있을텐데.. 패킷 캡처가 중간에 멈춘 관계로 현재 내가 사용하는 SKT로 다시 캡쳐해보니

EAP-SIM을 사용하더라.



https://wiki.freeradius.org/guide/eap-sim

해당 링크에 가보면 EAP-SIM,AKA,AKA'의 차이점을 알 수 있다.

다만 링크의 내용으로는 EAP-AKA'가 가장 우수하고 EAP-SIM이 가장 별로인편인데,

왜 EAP-SIM을 사용하는 지는, SKT만 알뿐.

모든 SIM에서 사용하고있는 것이나, AP가 구식일뿐일수도 있다.


허나, 찾아본 결과 EAP-SIM과 EAP-AKA는 크게 다르지않다는 걸 알수 있었다.

따라서 EAP-SIM에 대해서 써보자면, 그림 부분에 대해서는 동일하다고 볼 수 있다.


EAP-SIM

출처 : https://supportforums.cisco.com/t5/wireless-mobility-documents/eap-sim-and-eap-aka/ta-p/3143656


링크에서 EAP-AKA와 SIM의 차이에 대해서 자세히 알 수 있다.

"The major differences are the Pseudo-Random Function (PRF) and Key Derivation Function (KDF) used to generate sessions keys, and the type of the authentication vectors used."

또한 그림을 통해서 EAP-SIM과 AKA의 유사함을 볼 수 있다.

여기서 가장 위에있는 IMSI부분만 앞에 EAP-AKA에 쓰여있는 부분이다.

이후 EAP-SIM이 본격적으로 시작되는데, 여기서 Key Agreement로 K를 만들게 된다.

이 K는 Kc로부터 나오게되는데 배운 기억으로는 Kc는 USIM에 내장되어있어서 네트워크를 통해서 교환이 이루어지지않아도 통신사의 서버에서는 Kc를 가지고 K를 만들 수 있고 스마트폰 이용자도 USIM에 내장되어있는 Kc로 같은 K를 만들 수 있다.


여기서 EAP-SIM이 Req/SIM Challenge or Resp/SIM Challenge를 하는 이유는 이를 통해서 상대방이 정확한 데이터를 갖고 있는지 확인하기 위해서이다. Key를 갖고있어도 상대방이 다른 정보를 가지고 있을 수 있다. 아니면 IMSI를 Sniffing해서 차후에 Frame을 변조해 자신이 서비스 이용자인것 처럼 속이거나, 혹은 Key가 바뀌는 이상한 일이 일어날 수 있다.

이러한 오작동을 피하기위해서 상대방이 올바른 키 정보를 갖고 있는 지 확인한다.


이러한 확인은 MAC(MAC주소가 아니다. Message Authentication Code의 약자)을 통해서 이루어진다

그림에서 HMAC이라고 적혀있는 이 MAC은  Message의 Integrity와 Authentication을 위해서 사용된다.

(이 Integrity와 Authentication은 보안에서 매우 중요한 위치를 차지한다.)

H의 의미는 Hash이다. Hash 함수는 기본적으로 Message의 Integrity를 위해서 사용되는 함수인데, Authentication의 일부로

Signature로서 사용되는 경우도 많다. (참고 : https://en.wikipedia.org/wiki/Hash_function)

그림의 HMAC은, Hash-based Message Authentication Code의 약자로,

이는 결국 Hash를 사용해서 MAC을 수행하겠다는 얘기이다.

HMAC_SHA1에서 뒤에 붙어있는 SHA-1은 검색하면 나오겠지만 Hash 함수의 이름이다.


즉 SHA-1이라는 Hash함수로 프레임 데이터와 USIM에 내장되어있는 Key를 넣어서 MAC을 만들고 이것이 서버에서 동일한 과정으로 만든 것과 같은지 확인함으로 Authentication이 이루어지는 것이다. 또한 K값도 같은지 확인할 수 있게 된다.


EAP-SIM이 정상적으로 끝나면 AP에서 정해져있는 암호프로토콜을 사용해서 통신이 이루어지게 된다.

WPA2나 WEP가 그러한 것인데,  지하철에서는 왠만하면 WPA2를 사용할 것이다.


WPA2부분은 맨 마지막에 설명하는 것으로하고, Wireshark를 통해서 실제 지하철에서도 이러한 과정이 이루어지는 지 확인해볼 것이다.


[글이 너무 길어져서 파트를 1,2로 나누게 되었다.]






'컴퓨터' 카테고리의 다른 글

지하철 WiFi 보안 - (2)  (0) 2018.02.15
해킹 도구들 소개 - 0  (0) 2017.09.01
랜섬웨어 만들기  (0) 2017.08.23

WRITTEN BY
타임이
잇 잇 EAT IT

,