1. 서론
1.1 프로젝트 기획 배경
올해 초부터 CCNP를 공부하게 되면서 무선 네트워크에 대해 관심을 가지게 되었습니다. 유선 네트워크에 대해서는 어느정도 공부했는데 정작 무선 네트워크에 대해서 전혀 알지 못했다는 사실을 알았고 CCNP의 무선 네트워크 문제에서 Rogue AP라는 무선 네트워크 취약점을 알게 됐습니다. Rogue AP에 연계해서 Evil twin attack공격에 대해 알게돼 실습해보고 싶었습니다.
1.2 프로젝트 목표
Evil twin attack 무선 네트워크 취약점을 공부하면서 무선 네트워크의 작동 방식과 취약점에 대한 공격 방식과 보안 대응 방법을 알아보고 이 분야에서 사용되고 있는 무선 네트워크 기술들을 배우면서 가지를 뻗어 무선 네트워크 분야에 발을 들이는 것이 이번 프로젝트의 목표입니다.
2. 배경 지식
2.1 Evil twin attack
Evil twin attack은 무선 네트워크 취약점으로 간단하면서도 직관적인 무선 네트워크의 구조적 문제점에서 출발합니다. 아래의 표는 유선 네트워크와 무선 네트워크의 네트워크 식별 방식을 나타냅니다.
유선 네트워크 | 무선 네트워크 | |
네트워크 식별 방법 | 중복되지 않는 IPv4 기반의 주소 서브넷팅 | AP에서 제공하는 중복될 수 있는 WIFI의 이름(SSID) |
무선 네트워크는 표와 같이 SSID를 이용해서 네트워크를 구분하기 때문에 만약 다른 네트워크의 AP 2대가 같은 SUNRIN이라는 SSID를 제공하게 된다면 노트북, 핸드폰 같은 호스트들은 다른 네트워크지만 같은 네트워크로 취급하게 됩니다.
이런 무선 네트워크의 구조적인 취약점을 이용해 공격자가 공공장소의 공공 WIFI와 같은 이름의 가짜 AP를 생성해 피해자가 접속하게 유도 하는 공격기법입니다. 같은 이름의 악성 AP를 설치하고 피해자를 유도하는 점에서 Evil twin attack이라고 하고 공격에 사용되는 악성 AP를 Evil twin AP라고 합니다.
Evil twin Attack이 이뤄지는 과정은 치밀하면서도 간단합니다. 공격자는 접근하기 쉬운 공공장소의 WIFI(비밀번호가 없는 카페 등의 공공 WIFI)와 동일한 SSID를 가진 가짜 AP를 생성합니다. 또한 가짜 AP를 본래의 AP보다 고성능, 고출력으로 제공하여 피해자들이 가짜 AP가 정상적인 공공 WIFI인줄 알게 되고 접속하게 됩니다. 이 과정에서 공공 WIFI를 이용하고 있는 이용자들이 가짜 AP를 사용하도록 방해 전파를 쏘아 공공 WIFI에서의 연결을 끊도록 할 수도 있습니다. 이를 통해 중간자 공격과 연계하면 금융정보 탈취 등의 큰 취약점으로 이어질 수 있기 때문에 경각심을 가져야 하는 취약점입니다.
2.2 무선 LAN 카드 모니터 모드
무선 네트워크를 통하여 취약점진단, 모의해킹, 크랙킹, 무선 네트워크 스캔 등을 위해 해야할 일은 모니터 모드를 통한 주변 무선 네트워크 정보 취득입니다.
모니터 모드는 유선랜의 무차별 모드(각 포트별 다른 세그먼트로 작동해 패킷 수집을 위한 추가적인 절차가 필요)와 다르게 공기 즉 RF를 이용하기 때문에 안테나만 있다면 다른 호스트의 프레임도 모두 스니핑할 수 있습니다. 모니터 모드의 특징은 기기(호스트)가 AP에 연결돼 있지 않더라도(또는 AD-HOC 네트워크에 참여하고 있지 않더라도) 랜카드를 통해 수신 범위 내 모든 무선 프레임을 수집할 수 있다는 것입니다. 위 사진을 보시면 모니터 모드를 활성화 함으로써 무선 신호를 모두 캡쳐하고 있는 것을 확인할 수 있습니다.
여기서 모니터 모드를 언급한 이유는 프로젝트에서 무선 LAN 카드의 모니터 모드를 활성화하여 패킷을 캡쳐하고 가상 AP를 생성할 것이기 때문입니다.
2.3 dnsmasq
Dnsmasq는 리눅스의 DNS 캐시 서버의 일종입니다. 일반적으로 운영하는 DNS 서버인 BIND는 설정이 어렵고 무겁기 때문에 대형 서비스까지는 필요 없는 운영 서버 1000여대 이하의 소규모 네트워크에서 내부 DNS 서버로 자주 이용하는 툴입니다.
dnsmasq는 DHCP와 DNS 서비스를 지원하며 서비스가 가볍고 설정이 간편하다는 점이 특징입니다. dnsmasq가 이렇게 가볍게 DNS 구성을 지원할 수 있는 이유는 BIND처럼 ZONE파일을 생성하는 방식이 아닌 /etd/hosts 파일에 정적으로 적혀있는 Domain을 제공해주기 때문입니다. 따라서 외부 호스트들의 DNS 서버를 dnsmasq가 설치된 호스트로 잡아주면 /etc/hosts의 파일을 열람하고 dns 서비스를 해줍니다. 만약 파일에 요청 쿼리의 내용이 존재하지 않는다면 원래 DNS 쿼리의 작동방식처럼 퍼블릭 DNS로 리다이렉트 해줍니다. dnsmasq 툴을 통해 피해자가 악성 AP에 접속했을때 피싱 사이트를 제공하는 악성 DNS를 구축할 것입니다.
2.4 aircrack-ng
Linux, Windows, macOS 등등에서 사용할 수 있는 802.11 무선 네트워크에 대해 보안을 평가하는 패키지입니다. 무선 네트워크를 모니터링하거나 WEP,WPA-PSK 암호화 방식의 키를 복호화할 수 있습니다. 또한 모니터링, 크래킹, 랜카드 및 드라이버 기능 테스트 등등의 기술을 지원합니다. aircrack-ng 하위에는 그 기능별로 airmon-ng, airdecap-ng, aireplay-ng 등등 다양한 구성들이 있지만 저희는 모니터 모드를 활성화 시켜주는 airmon-ng, 가짜 AP를 생성해주는 airbase-ng를 이용할 것입니다.
이러한 특성의 패키지로써 이번 프로젝트에서 Evil twin AP 생성에 있어 가장 중요한 패키지입니다.
3. 구성
3.1 사전 요구 사항
3.1.1 네트워크 어댑터
무선 네트워크 취약점으로 무선 네트워크를 실행해야하기 때문에 먼저 VM을 실행하는 호스트에 무선 LAN 카드가 필요합니다. 저는 그 중 USB 형식의 랜카드를 이용했습니다. 현재로써는 VM환경(패킷 트레이서, GNS, CML)에서는 무선 네트워크 실습이 불가능하기 때문에 악성 VM을 구축하고 외부의 기기를 무선 랜 카드를 통해 악성 VM에 접속하는 방식으로 구성해야합니다. 따라서 이번 프로젝트의 핵심 부분입니다.
3.1.2 사용 OS 및 툴
사용 OS 및 툴 | 사용 목 |
dnsmasq | 악성 DNS 서버와 DHCP를 위한 툴 |
aircrack-ng | Evil twin access point 생성을 위한 툴 |
Node.js | 피싱 사이트용 백엔드 구성 |
mysql | 계정 탈취용 DB |
ubuntu 22.04 desktop | 악성 Access point가 될 가상머신 |
wireshark | 패킷 분석을 위한 패킷 스니퍼 |
3.2 Evil twin access point 생성
3.2.1 악성 Virtual Machine 세팅
ISO는 22.04 ubuntu desktop을 이용했습니다. 위 사진을 보시면 우측 하단에 호스트의 USB를 VM에 연결하도록 합니다. lsusb 명령어를 통해 USB 목록이 나타나야 하며 무선 LAN 카드가 설치되어 있다면 WIFI connect가 떠야 합니다. 또는 iwconfig 명령어를 통해 랜카드가 나타나야 합니다. 나타나지 않는다면 사용하는 USB 네트워크 어댑터에 맞는 드라이버를 설치해야합니다. 또한 원할한 포워딩 설정을 위해 가상머신의 기본 랜카드를 Bridge모드로 설정합니다.
3.2.2 dnsmasq를 통한 악성 DNS 구성 및 DHCP 구성
원하는 디렉토리에 dnsmasq.conf의 파일을 생성합니다. 위와 같이 피해자가 사용할 DHCP 파일을 구성하게 됩니다.
interface=at0 는 실행되는 DHCP 파일의 정보대로 DHCP 정보를 뿌려줄 인터페이스를 지정하는 옵션입니다. at0는 aircrack-ng를 통해 생성되는 가상의 인터페이스로 at0로 지정해주어야 피해자들이 AP에 접속하여 IP 정보를 받아갈 수 있습니다. 또한 listen-address는 악성 AP가 받아들여야하기 때문에 localhost IP를 입력합니다.
dhcp-range 는 DHCP 요청에 맞게 IP를 배포해줄 범위입니다. 여기서의 IP는 무작위 임의의 IP로 선택하면 됩니다. 마지막의 12H는 IP의 임대기간입니다.
dhcp-option 을 통해서 라우터와 DNS 서버를 지정해줍니다. DHCP 패킷에는 옵션 유형이 존재하는데 각각 3번은 라우터 IP 주소 즉 게이트웨이이며, 6번은 DNS 서버의 주소입니다. dhcp-option으로 통해서 라우터의 주소와 DNS 서버의 주소를 192.168.10.1로 주었기 때문에 나중에 있을 가상 인터페이스 설정에서 at0의 인터페이스를 192.168.10.1로 설정해야 합니다.
server=8.8.8.8 은 /etc/hosts에 도메인이 없을 경우 원할한 네트워크 이용을 위해 8.8.8.8로 DNS 쿼리를 보낸다는 뜻입니다. 이 설정이 필요한 이유는 피싱 사이트외의 다른 사이트를 접속했을때 인터넷이 정상적으로 작동하게 함으로서 피해자가 악성 AP에 접속한 사실을 모르도록 하는 것에 있습니다.
log-quries,log-dhcp 를 통해 DHCP 상태와 DNS 쿼리 요청과 응답을 로깅합니다.
피해자를 피싱 사이트로 연결하기 위해서 /etc/hosts에 사람들이 많이 접속하는 도메인을 악성 사이트로 연결되도록 작성합니다.
3.2.3 aircrack-ng를 통한 모니터 모드 활성화
iwconfig 명령어를 통해 무선 랜카드의 이름을 복사합니다. airmon-ng start <무선 랜카드 이름>을 통해 무선 랜카드를 모니터 모드로 활성화 해줍니다. iwconfig를 다시 입력했을때 Mode : Monitor라면 정상 작동한 것입니다. airmon-ng check kill 명령어를 통해 모니터 모드를 종료할 수 있습니다.
실제 Evil twin AP를 생성하는 부분은 4장 공격 부분에서 다루도록 하겠습니다.
3.2.4 리눅스 IP forward를 통한 Evil twin AP를 인터넷에 연결
가상 머신을 라우터처럼 이용하여 피해자가 외부와의 통신을 가능하게 해주려면 포워딩이 필요합니다. 먼저 커널 기반의 라우팅 포워딩이 가능하도록 sysctl.conf로 이동해 IP 포워딩을 허용해줍니다. 또한 실제 라우팅 과정 없이 피해자들이 인터넷 이용을 위해 iptables 방화벽을 통해 NAT를 적용해줍니다.
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUING -o ens33 -j MASQUERADE
위의 과정을 통해서 앞서 설명했던 IP forwarding 과정을 진행해줍니다. 이제 at0 인터페이스를 통해 들어오는 192.168.10.0/24의 호스트의 요청은 nat되어 ens33 인터페이스로 포워딩됩니다.
3.3 피싱사이트 구축
Node.js를 이용하여 피싱 사이트는 간단하게 로그인 창만 구현해봤습니다. test.com, naver.com 등으로 접속하게 되면 피싱 사이트로 연결되고 로그인 내역을 입력하면 공격자의 데이터베이스에 로그인 정보가 저장되는 방식으로 공격자가 피해자의 개인정보를 탈취할 수 있습니다.
4. 공격
4.1 Evil twin AP 접속
악성 VM에서 3가지 절차를 시행해야 합니다. 첫번째 airbase-ng를 이용하여 가짜 AP 신호를 생성합니다. 두번째 생성된 at0를 활성화합니다. 세번째 접속하는 피해자들의 기기에 IP와 DNS를 할당해 줄 dnsmasq를 실행합니다.
airbase-ng 를 통하여 실제 존재하는 WIFI인 senWiFi_Free를 이용해 공격해보겠습니다.
airbase-ng를 통해 Evil twin AP를 생성하면 at0 인터페이스를 이용할 수 있게 됩니다. 피해자들은 이 인터페이스로 접속하게 되기 때문에 at0 인터페이스를 활성화 해줍니다.
실제 senWiFi_Free와 같은 Evil twin AP가 생성됐습니다.
이제 피해자의 기기는 Evil twin AP를 원래의 senWiFi_Free로 여기게 되고 Evil twin AP에 접속하게됩니다. 위 사진은 피해자가 접속을 요청하는 로그입니다.
또한 dnsmasq의 콘솔 창에서도 로그를 통해 피해자에게 설정된 dhcp가 할당되고 있는 것을 확인할 수 있습니다.
4.2 계정 탈취
4.2.1 피해자의 피싱 사이트 접속
dnsmasq에 피해자가 인터넷을 이용하게 되면 쿼리에 대한 로그가 생성됩니다.
www.test.com에 접속하게 되면 미리 설정한 악성 DNS에 의해 피싱 사이트에 접속하게 되고 피해자는 피싱 사이트에 접속한 사실조차 모른채 로그인하게 됩니다.
악성 공격자의 데이터베이스에 피해자의 ID와 PASSWORD가 저장됐습니다. 이런 식으로 Evil twin attack은 중간자 공격과 연계되어 금융 정보 탈취등에 이용될 수 있어 위험도가 높은 공격입니다.
위 자료를 보시면 공격자가 설정한 피싱 사이트 이외의 인터넷 사용에는 지장이 없는 것을 확인할 수 있습니다. 피해자가 이런 류의 간단한 중간자 공격에 쉽게 당하는 이유는 Evil twin attack은 악성 WIFI를 이용해 인터넷을 이용하는데 어떠한 장애도 없기 때문입니다. 오히려 정상적으로 설치돼있던 AP보다 좋은 성능의 네트워크를 제공할 수 있기 때문에 공격에 당하고 있다는 사실을 인지하기 어렵습니다.
4.3 패킷 분석
wireshark를 통해 at0 인터페이스를 분석해보겠습니다. 패킷 분석 목차가 공격에 포함되어 있는 이유는 Evil twin AP에 접속했을때 당할 수 있는 공격 방식 중 하나이기 때문입니다. 앞에서 피해자가 접속할 시 악성 가상머신에 피해자의 행위가 모두 로그로 남았듯이 몇 가지의 보안 절차를 거치지 않으면 AP를 이용할때의 트래픽은 모두 암호화되지 않기 때문에 정보 유출 위험이 있습니다.
위의 사진을 보시면 피해자가 접속한 해당 사이트의 html 페이지부터, css, javascript 파일까지 모두 공격자가 정보를 열람할 수 있는 것을 볼 수 있습니다. wireshark를 통해 페이지의 구성 파일들을 모두 다운받을 수도 있습니다.
5. 공격 예방
Evil twin Attack의 근본적인 방어는 공공 WIFI에 접속하지 않는 것입니다. 또한 공공장소에선 WIFI를 연결하기 보다 Cellular data(모바일 데이터)를 사용하는 것을 권장합니다. 이외에도 다양한 방어 기법이 있습니다.
5.1 WIFI 자동 연결 비활성화하기
Evil twin Attack의 기본 원리 중 하나는 같은 이름의 악성 AP를 기기가 원본 AP로 착각하는 점에 있었습니다. 이런 취약점을 원천에서 차단하기 위해 알고 있는 WIFI에 대해서 자동으로 다시 연결하는 설정을 비활성화하여 악성 AP로 잘못 연결되는 것을 방지할 수 있습니다.
5.2 https 또는 vpn 이용하기
패킷 분석에서 봤듯이 악성 AP를 이용하는 사용자의 패킷은 암호화되지 않습니다. 따라서 이용하는 사이트와 정보등을 탈취당할 수 있지만 HTTPS와 VPN을 이용하면 얘기가 달라집니다. HTTPS가 구축된 사이트를 이용하면 클라이언트와 서버 사이의 통신이 암호화되기 때문에 패킷 분석에서처럼 인터넷에서의 활동이 공격자에게 저장된다거나 하는 행위를 막을 수 있습니다. VPN을 이용하는 것을 적극 권장하는데 VPN을 이용하면 네트워크 상에서의 모든 통신이 암호화되기 때문에 공격자가 정보를 탈취하거나 피해자의 행위를 유추할 수 없습니다.
5.3 암호 통신을 지원하지 않는 WIFI 접속 피하기
처음 얘기드렸던 것과 비슷한 결이지만 중요합니다. 대부분의 이런 악성 AP는 WEP,WPA 같은 무선 보안 인증체제가 존재하지 않습니다. 이런 무선랜 보안체제가 갖추어 지지 않은 WIFI는 접속을 피하는 것이 좋습니다. 하지만 hostpad와 같은 툴을 이용하여 악성 AP들도 보안 체제를 갖춘 것처럼 보일 수 있게 할 수 있기 때문에 공공 WIFI 접속 자체를 피하는 것이 좋습니다.
또는 인터넷에 연결할때 종종 보이는 cative portal page 즉 WIFI 사용자 인증 페이지가 없는 WIFI라면 사용을 피하는 것이 좋습니다.
5.4 기기의 경고문 신뢰하기
현재 이러한 악성 AP로 의심되는 WIFI에 연결하려고 한다면 기기에서 경고문을 보내게 됩니다. 이러한 경고문을 무시하지 않고 신뢰하는 것이 좋습니다.
6. 결론
결론 및 느낀점
간단한 방법으로 무선 네트워크를 이용하여 사람들의 개인정보를 탈취할 수 있었습니다. 다행인 점은 유선 네트워크를 이용하면서 겪는 공격보다 확실하게 대응할 수 있는 방법이 많다는 점입니다. 무선 네트워크가 우리 사회에 이미 뿌리깊이 들어선 이상 우리의 정보를 완벽하게 이런 위협들로부터 차단하긴 어렵겠지만 무선 네트워크를 이용하기만 함으로써도 보안에 위협을 받을 수 있다는 사실을 깨닫고 경각심을 가질 필요가 있습니다. 이런 취약점을 공부하면서 무선 네트워크를 익히고 대응 방법에 대해 알아볼 수 있어 좋았습니다.
'네트워크 > 무선 네트워크' 카테고리의 다른 글
무선 랜 기초(AP vs WRouter, 비콘프레임, 로밍, WLC) (0) | 2024.02.11 |
---|---|
Rogue AP와 Evil twin Attack (0) | 2023.03.02 |