무선랜 서비스 AP가 요즘 지나다니다보면 정말 많이 잡힙니다. -o- 아 이거 등록을 해서 쓰기는 또 너무 쓸 일이 없고.. 가끔가다가 한번 쓰면 정말 좋은데.. 하고 참 아쉬운데, 언젠가 미국의 어느 호텔에서 IETF 회의가 있었을 때 IP over DNS 같은 ㅂㅌ 프로토콜들이 마구 만들어져서 단체로 돈을 안 내고 인터넷 했다는 얘기가 생각나서 해 봤습니다. 므흐흐
원리
원래 무선랜은 이런 과정을 통해서 접속하도록 되어 있습니다.
서플리컨트(고객측 기계)가 AP를 스캔한 뒤에 접속할 AP에 접속(Associate)요청.
AP가 서플리컨트에 EAP-Start 보냄.
서플리컨트가 원하는 인증 프로토콜과 껍데기 ID를 적어서 EAP-Response를 보냄.
AP가 받은 EAP-Response를 AAA(인증/과금서버)에 전송해서 답을 서플리컨트로 전송.
인증이 완전히 끝날 때까지 3-4를 반복. (EAP-MD5는 2회, EAP-TLS류는 8~10회)
AAA측에서 EAP-Success가 오면 서플리컨트에 EAP-Success를 보내주고, 접속을 완전히 열어 줌.
서플리컨트가 DHCP요청.
정식으로 라우팅돼서 해당 망을 담당한 DHCP 서버가 IP 할당.
끝.
그런데, 우리나라 무선랜 서비스들은 사용자 가입 페이지를 보여주게 하기 위해서 자동 접속하게 하는 편법을 이용하느라 이런 방식으로 되어 있습니다.
서플리컨트가 AP에 접속 요청.
AP는 가인증 상태로 서플리컨트의 접속을 열어 줌.
서플리컨트가 DHCP서버에 IP 할당 요청.
DHCP서버에서 IP 할당.
CM(접속관리자)를 띄워서 AAA와 EAP 인증을 함. (물론 중간에 AP는 거침.)
AAA에서 EAP-Success를 보내주면 중간에 막아 놨던 포트들을 모두 열어 줌.
끝.
여기서 바로 문제가 되는 것은, 완전히 인증도 되기 전에 IP를 주고, CM 다운로드나 가입 신청 페이지같은 것을 제공해 주기 위해서, 몇몇 포트를 열어준다는 것인데, 국산 AP들은 대부분 53 udp, tcp를 그냥 열어버리고 80번은 투명 프락시로 어떤 호스트에 접속하던 ISP의 가입 페이지로 리다이렉트하도록 하고 있습니다. 여기서 바로 53번 포트가 열려 있다는 점에 주목! +_+
응용
53번 포트가 열려있으니 이제는 뭐 거기로 나가는 방법만! 우선 제일 세팅이 간단한 방법은 sshd를 53번 포트에 열어서 쓰는 방법.ssh -p 53 -L 8080:127.0.0.1:8080 대상호스트이런 식으로 하면 로컬 호스트의 8080번 포트가 sshd가 띄워져 있는 서버측의 8080로 포워딩되기 때문에, 서버측에 HTTP 프락시가 띄워져 있다면 웹도 다 쓸 수 있게 됩니다. 물론 좀 다르게 응용해서 53번 포트에 VNC나 rdesktop을 띄워놓는 방법도 있겠고.. 아예 L2TP를 어떻게 엮어버리면 완전히 VPN 터널로 응용도 가능하겠죠. 믓흥;
현실적인 한계현실적으로는 53번 TCP 포트에 뭔가 터널에 응용할 수 있을만한 서버를 띄울 수 있는 사람을 대상이 제한됩니다. 따라서, 거의 대부분의 일반인은 사용할 수가 없고, 자기 서버를 갖고 있고, DNS 서비스를 안 하고 있는 경우에만 이런 방법이 사용이 가능하겠죠.
해결책
이런 방법을 막기 위해서는 53번을 모두 열어버리는 것이 아니라, AP의 기본 설정 DNS로 리다이렉트해버리는 방법을 접속을 허용하기 전에 사용해야 합니다. 그렇게 되면 53번을 아무리 열심히 시도를 해도 결국은 ISP측 네임 서버로 갈 것이기 때문에 딱히 방법이 없어집니다..