코딩하는 문과생
[정보보안] 와이파이 해킹 본문
[과제명]: 와이파이 비밀번호 해킹
[과제목표]
1. 와이파이 암호화 프로토콜 WPA2 패킷 스니핑
2. 사전 파일을 이용해 비밀번호 크랙하기 - Brute Force
[수행 환경]
- 무선 랜카드 : 모니터 모드를 지원하는 ‘Chipset'이 내장된 랜카드를 통해 패킷을 모니터링할 수 있다.

- 칼리 Linux : 정보보안을 테스트하기 위한 오픈소스 리눅스 배포판 백트랙의 후속버전이다. 이 안에는 수많은 해킹과 관련된 도구와 설명서가 내포되어 있어 모의 침투 테스트나 취약점 분석에 사용된다.

- Aircrack-ng 패키지: Detector, 패킷 스니퍼, WEP와 WPA2-PSK 802.11 무선 LAN에 대한 크래킹와 분석 도구가 탑재된 네트워크 소프트웨어이다. 모니터모드를 지원하고, 패킷 스니핑이 가능하다. 해당 패키지는 리눅스와 윈도우 환경에서 작동한다.
[관련 개념]
- 패킷 스니핑: 이더넷은 데이터를 주고받을 때 모든 컴퓨터에게 정보를 전달한다. 그러나 네트워크 카드에서 자신의 MAC 주소로 온 데이터가 아닌 것은 폐기한다. 이를 악용하여 랜카드로 모니터 모드(promiscuous mode)로 접속해 중간에서(mitm attack)다른 컴퓨터로 전송되는 패킷들을 감청하는 것을 패킷스니핑이라고 한다.
- WPA2-AES : 다양한 암호화 알고리즘 중 하나이며, 현재 개인이 쓰기에 가장 발전된 무선 암호화 방식이다. WPA2-AES 중 앞부분인 WPA2는 단말기와 AP 간에 데이터 암호화와 무결성을 위한 ‘키교환 프로토콜’을, 뒷부분인 AES는 실제 ‘암호화’를 위해 사용하는 알고리즘을 뜻한다. 이전 버전인 WPA는 60초 내에 해킹할 수 있지만 WPA2-AES는 훨씬 뛰어난 보안성을 가지며, 이를 크랙하는 방법은 Brute Force방법이 유일하다.

- Aircrack-ng
1. airmon-ng : 랜카드는 해당 시스템이 속한 네트워크에서 오고 가는 모든 패킷을 인식하지만, 패킷의 목적지 주소와 자신의 맥 주소를 비교해 같지 않은 경우 해당 패킷들을 폐기시켜버린다. 모니터 모드를 지원하는 무선랜카드를 이용해 이러한 패킷들을 버리지 않고 모니터링할 수 있다.
2. airodump-ng : 패킷을 캡쳐할 수 있는 기능을 가지고 있다. 무선 데이터 트래픽을 cap이나 IVs 형태로 저장하고 네트워크 정보를 보여주는 역할을 한다.
3. aireplay-ng: 임의적인 패킷을 만들 때 사용한다. 주로 WEP이나 WPA-PSK의 키를 구하기 위한 크래킹 용도로 쓴다. 와이파이와 사용자 간의 인증을 해제하는 패킷을 임의로 전송함으로써 크래킹에 필요한 정보를 얻을 수 있다.
4. airdecap-ng : 무선랜 패킷에는 무선통신 프로토콜에 관한 헤더가 붙는다. 해당 도구를 이용해 무선 통신 프로토콜과 관련 헤더를 없애면 평문 패킷의 정보를 얻을 수 있다.
- Brute Force
무차별 대입공격은 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미한다. 암호학에서 취약점이란 무차별 대입공격보다 더 빠른 공격 방법이 존재한다는 것을 의미하는데, 무차별 공격만이 암호를 해독하기 위한 유일한 방법이라면 해커는 실용적이지 못한 비용이나 시간을 소요해야만 한다.
- BSSID: 물리적 식별로 사용되는 숫자값
- SSID: 논리적 식별로 사용되는 문자값
- HandShake
통신의 양측 간에 조건에 합의해가는 정보 교환 과정
- cap파일
패킷 캡처 파일
[수행 내용 및 진행 내용]
1. 필요한 패키지 설치
정식버전이 아닌 Light버전을 사용하기 때문에, 크랙에 필요한 몇 가지 패키지를 설치해야한다.
- ifconfig와 iwconfig 명령어를 사용하기 위해 wireless-tools 패키지를 설치한다.

- aircrack-ng 패키지 또한 설치

- 사전 파일을 만들기 위해 crunch 패키지 설치

2. 무선랜카드 인터페이스 확인 및 모니터 모드로 접속(wlan0)
- iwconfig를 이용해 현재 연결된 네트워크를 확인, 무선 인터페이스 wlan0 확인

- 모니터 모드로 시작하기

- 문제가 될 수 있는 프로세스 Kill

- 모니터 모드가 적용된 무선 인터페이스 wlan0mon 확인

- 모니터 모드를 이용해 주변의 무선네트워크(AP) 보기, BSSID, CH, ENC 확인
모니터모드로 확인되는 많은 AP중에 Samsung_*** AP의 비밀번호를 알아내고자 한다.

3. 목표 AP의 패킷 캡처
- 해당 AP에 접속된 디바이스를 확인할 수 있다.
이 디바이스 연결을 해지하고 재연결되는 과정에서 4 hand-shake를 캡처한다.

# airodump-ng --bssid [AP MAC address] -c [채널번호] -w [파일이름] [무선랜카드]

4. 4-way handshake를 캡처하기 위해 연결 끊기

# aireplay -0 5 [AP MAC address] -c [연결을 끊을 무선기기] [무선랜카드]
-0 5: 연결을 5번 끊음
- 4-way handshake 캡처 성공

- 캡처된 wpa-01.cap 파일에 4-way handshake가 기록되어 있다.

5. 사전 파일 제작
시간과 비용 소모를 최소화하기 위해 숫자로 구성된 비밀번호 10자리 중 5자리를 고정시켜 사전파일을 제작했다.

#crunch [최소자릿수] [최대자릿수] [조합할문자] [옵션]
-t: 숫자지정, -o: 결과 내용 파일로 저장

6. 사전파일을 이용해 Brute Force 공격하기

약 10만개 비밀번호를 투입했고, 크랙한 지 2분 20초가 지나고 ‘2563256311’라는 비밀번호 추출에 성공했다.
본 팀에서는 aircrack-ng를 활용하여 하였지만, 해쉬캣을 사용해서 하는 방안도 있다는 것 또한 알려둔다.
[활용방안]
본 팀이 크랙하기 위해 사용한 사전파일은 시간과 비용적 소모를 최소화하기 위해 비밀번호는 10자리, 앞부분은 25632, 문자를 제외한 숫자로 이루어져 있다는 것을 가정해 진행했다. 다시 말해 비밀번호 경우의 수는 10만개로, 약 2분 20초의 크랙을 통해 비밀번호를 알아낼 수 있었다. 만약 비밀번호 10자리 모두 랜덤하게 설정하고 이를 크랙하고자 했다면 비밀번호 한 자리당 28개의 경우의 수, 그리고 이 경우의 수가 10번 반복되므로 280의 수가 생기고, 이를 크랙하고자 한다면 엄청난 시간과 비용이 소모될 것이다. 즉, 280의 경우의 수는 현실적으로 크랙이 불가능한 수다.
따라서 무차별 공격만이 비밀번호를 크랙할 수 있는 WPA2-AES에서는 ‘1234567890’과 같은 단순한 비밀번호는 쉽게 해킹될 수 있으므로 Brute Force 공격에 시간이 오래 걸리도록 비밀번호를 복잡하고 길게 구성하는 것이 좋다.
[결론]
WPA2-AES는 현재 개인이 쓰기 가장 안전한 WiFi 암호화 방식으로 평가받고 있다. 하지만 이 암호화 방식에도 보안상 취약점이 있는데, 공공 와이파이가 그 예이다. 공공 와이파이 비밀번호는 고객들이 쉽게 입력할 수 있도록 ‘12345678’이나 'qwert12345'과 같이 일정한 패턴을 사용하기 때문에 선하지 못한 3자가 비밀번호를 알아낸다면 이를 악의적으로 사용할 가능성이 있다. 따라서 공공 와이파이 중 암호화 통신기능을 갖춘 와이파이 서비스를 이용하는 것이 좋다. 가령 스타벅스는 보안 SSID(KT_starbucks_secure)를 제공함으로써 Wifi 단말과 Wifi AP 간에 데이터 암호화를 지원하고 있는데, 이러한 인증을 갖춘 와이파이를 사용한다면 공공장소에서도 안전한 와이파이를 사용할 수 있다.

[참고자료]
- KALI LINUX 설치하기
- aircrack-ng를 이용해 wifi 해킹하기(WPA2/PSK)
-WiFi 공유기 암호방식, 꼭 WPA2-AES를 써야하는 이유는?
https://www.bodnara.co.kr/bbs/article.html?num=106786
-와아파이 비밀번호 알아내기
https://www.youtube.com/watch?v=NUNgnUTsNtM
-정보통신기술용어해설
http://www.ktword.co.kr/index.php
'CS > 정보보안' 카테고리의 다른 글
| [정보보안] Real-World Protocols(2) (4) | 2019.12.09 |
|---|---|
| [정보보안] Real-World Protocols(1) (0) | 2019.12.09 |
| [정보보안] Simple Authentication Protocols (0) | 2019.12.08 |
| [정보보안] Authorization (0) | 2019.12.08 |