목차
1. 상황
2. 문제
3. 패킷 캡처 문제
4. 모바일 데이터 접속 문제
▶ 상황
1. 내 서버: 우분투 가상머신, 어댑터 브릿지 네트워크, 호스팅 안함, http
2. 호스트머신: 윈도우, 노트북이라 와이파이 사용
3. 목적: http 평문 데이터 캡처 (나중에 https와 비교하고 싶음)
▶ 문제
- http, https 데이터 차이 보려고 호스트머신에 있는 와이어샤크로 로그인 요청을 캡처하려고 했으나 캡처되지 않음 (패킷 캡처)
- 스마트폰으로 같은 네트워크(와이파이)에서 서버 접속할 땐 접속이 되었으나 와이파이 끄고 데이터를 통해 접속할 땐 접속되지 않음. (네트워크 접속)
▶ 패킷 캡처 문제
≫ 원래 내 생각
어댑터 브릿지 모드면 다른 장치로 취급하니까 패킷 캡처할 수 있겠지? 이히히힣
≫ 실제
- 호스트머신 -> 와이파이 네트워크 인터페이스 -> VM 방식으로 요청 전달
결론적으로 virtualbox 내부 최적화 때문에 네트워크 인터페이스를 물리적으로 통과하지 못해 와이어샤크가 캡처하지 못하는 것 같음 (이론적으로는 캡처되는 게 맞는 듯)
이때 각 패킷은 네트워크 인터페이스를 논리적으로는 통과함.
하지만 브릿지 모드일 때 VM은 새 IP를 받고 별개의 장치로 작동하더라도 호스트머신의 네트워크 인터페이스를 통해 인터넷 통신이 이루어지기 때문에 물리적으로는 호스트머신 내부에서 처리되는 경우가 많음. (최적화)
아래 접은글에서 볼 수 있듯이 브릿지 모드는 정상적으로 작동하고 있음.
1) ifconfig

2) ipconfig /all + ip route

*대충 아이피 대역이 192.168.x.x이고 호스트머신 게이트웨이와 가상머신 디폴트 아이피 (기본 게이트웨이)가 같음
그런데 호스트 머신에서 가상머신으로 보내는 패킷이 죽어도 캡처되지 않는 걸 보면 최적화가 이루어지고 있는 거 아닐까 싶음. (네트워크 공부는 이게 처음이라 아닐 수 있음... 아니라면 제대로 알게 되는 날이 오길 바람..)
++어댑터에 브릿지++
가상머신이 독립적인 다른 장치로서 호스트머신과 다른 네트워크 인터페이스를 가지게 함.
++NAT++
호스트머신의 NAT 엔진을 통해 인터넷과 통신함 (네트워크 인터페이스 따로 없음)
≫ 다른 방법
1. 우분투에서 패킷 캡처
네트워크 연결 방식과 상관없이 캡처 가능
sudo tcpdump -i any port 80 -vv
#모든 인터페이스에서 80번 포트로 오가는 데이터를 겁나 상세하게 출력
#-X 옵션 추가하면 와이어샤크처럼 html 본문도 볼 수 있음

2. nat로 포트포워딩 후 다른 기기로 요청 전송 (호스트머신에서 패킷 캡처)
- 스마트폰 요청 -> 와이파이 -> 호스트머신(3333포트) -> 가상머신(80포트)
가상머신에 패킷을 전달하려면 호스트머신의 내부 네트워크 인터페이스를 거쳐가야하기 때문에 패킷 캡처됨

http:// 호스트머신 ip:3333 /login.php -> 가상머신 80포트 (웹 http)로 전달

반면 이 경우 호스트머신->가상머신 패킷은 캡처할 수 없음.
네트워크 인터페이스를 거치지 않고 NAT 엔진을 통해 내부에서 처리되어 와이어샤크가 캡처 못함.
3. 호스팅
....호스팅은 아직 애껴둘래..
이외에 와이파이 설정 변경해서 어떻게 하는 것도 있는 것 같은데 와이파이 나 혼자 쓰는 게 아니라 일단 사림..
뻘짓 보관
아니 근데 호스트 머신 내부 네트워크 인터페이스를 거쳐서 캡처 가능한 거면 어댑터에 브릿지 모드일 때 호스트머신->가상머신 패킷도 캡처돼야하는 거 아님?? 왜 안되는 거임??
맞음. 브릿지 모드에서도 패킷을 캡처할 수 있음. 얘는 host-only 이더넷 어댑터를 사용하는 게 아니고 virtualbox의 브릿지 네트워킹 드라이브를 사용해서 호스트머신의 와이파이 네트워크 인터페이스를 통해 인터넷을 연결함.
명령 프롬프트에 ipconfig /all을 입력했을 때 나오는 인터페이스들 중 아래의 것을 사용 중인 거임.

얘를 통과하는 애들은 와이어샤크로 잡을 수 있음 |
호스트 전용 어댑터는 이거 말고 virtualbox host-only 이더넷 어댑터를 사용하는데 얘를 통과하는 애들은 호스트머신 - VM 사이 통신만 가능하고 외부 인터넷과 연결이 안되기 때문에 와이어샤크로 못 잡음 (와이파이 포트포워딩, 미러링 등 다른 게 더 필요할 수 있음) |
그니까 내 가상머신은 지금 브릿지로 연결해도 브릿지 어댑터가 작동이 안되고 있는 거임
아래 접은 글에서 볼 수 있듯이 브릿지 모드로 연결됐다는 증거가 수두룩빽빽인데 이상하게 패킷 캡처가 안됨
(접은글 잘라내서 저 위에다 갖다붙임)
전제
1. 가상머신은 확실히 브릿지 모드로 연결됨
2. 브릿지 모드에선 호스트머신<->가상머신 패킷이 캡처되는 게 맞음
위 두 전제가 무조건 참이라고 할 때 현재 호스트 머신과 가상머신 사이의 패킷이 캡처되지 않는 건 뭔가 이상함.
혹시나 싶어서 같은 와이파이 쓰는 스마트폰으로 요청했더니 패킷 잡힘. 이거 완전 nat 때랑 똑같잖아.
그래서 지금 브릿지 모드가 뭔가 작동이 안되고 있는갑다 하고 클로드랑 얘기한 결과 이때 분명 물리적 네트워크 인터페이스가 사용되는 게 맞으나 virtualbox가 이걸 가로채서 직접 가상머신으로 전달할 수 있다는 결론이 나옴.
virtualbox 공식 문서에도 와이파이 환경에서 브릿지 모드가 잘 작동 안될 수 있다는 말이 있다고 함.
https://www.virtualbox.org/manual/topics/networkingdetails.html#network_bridged
"Bridging to a wireless interface is done differently from bridging to a wired interface, because most wireless adapters do not support promiscuous mode. All traffic has to use the MAC address of the host's wireless adapter, and therefore Oracle VirtualBox needs to replace the source MAC address in the Ethernet header of an outgoing packet to make sure the reply will be sent to the host interface. When Oracle VirtualBox sees an incoming packet with a destination IP address that belongs to one of the virtual machine adapters it replaces the destination MAC address in the Ethernet header with the VM adapter's MAC address and passes it on. Oracle VirtualBox examines ARP and DHCP packets in order to learn the IP addresses of virtual machines."
"대부분의 와이파이 공유기는 무작위 모드를 지원하지 않음. 모든 트래픽은 공유기의 mac 주소를 사용해야해서 virtualbox는 나가는 패킷의 이더넷 헤더 mac 주소를 바꿔야함. 그래야 응답이 호스트머신 네트워크 인터페이스로 들어옴.
virtualbox는 목적지 ip가 가상머신의 어댑터 중 하나인 들어오는 패킷을 딱! 마주치면 패킷의 이더넷 헤더에 있는 목적지 mac주소를 vm 어댑터의 mac 주소로 바꿔서 받음.
virtualbox는 가상머신의 ip주소를 알아내기 위해 arp, dhcp 패킷을 조사함."
그니까 보낼 때 가상머신 어댑터로 되어있던 mac 주소를 공유기 mac 주소로 바꿔서 보내고
받을 때 공유기 mac 주소로 되어있던 목적지 ip를 가상머신 어댑터의 mac 주소로 바꾼다는 건가
스마트폰(외부)과 통신할 때
- 스마트폰: 웹 서버 내놔 (와이파이 mac 주소로 패킷 보냄)
---와이파이 인터페이스를 통과---
- virtualbox: 엇쒸 저거 내껀데 (와이파이 mac 주소를 가상머신 mac 주소로 바꿈)
- 우분투 가상머신: 오케바리스타~ (응답 만들어서 가상머신 mac 주소로 보냄)
- virtualbox: 엇쒸 거기로 가면 안되는데 (가상머신 mac 주소를 와이파이 mac 주소로 바꿈)
---와이파이 인터페이스를 통과---
- 스마트폰: 꿀잼~
호스트머신(내부)과 통신할 때
- 호스트머신: 웹 서버 내놔 (와이파이 mac 주소로 패킷 보냄)
- virtualbox: 내꺼야잇 (와이파이 mac 주소를 가상머신 mac 주소로 바꿈)
--여기서 와이파이 인터페이스를 통과하지 못함--
- 우분투 가상머신: 오케바리바리스타~ (응답 만들어서 가상머신 mac 주소로 보냄)
- virtualbox: 멈춰봐 (가상머신 mac 주소를 공유기 mac 주소로 바꿈)
--여기서 와이파이 인터페이스에 갔다가 어 이거 우리집인데? 하고 통과를 못하나?--
- 호스트머신: 꿀잼~
이렇게 보니 그럴싸..하지만 확신은 없다.
[+] 도서관에서 테스트할 때와 집에서 테스트할 때 기록
도서관의 경우
가상머신 네트워크 설정: 브릿지 모드 스마트폰, 호스트머신, 가상머신 모두 아이피가 10.50.x.x로 시작함 -> nat로 연결됨 스마트폰으로 사이트 접속하면 호스트머신의 와이어샤크에 잡힘(완전히 nat로구만..) 호스트머신으로 사이트 접속하면 와이어샤크에 안 잡힘(네트워크 인터페이스가 아니라 nat 엔진으로 통신하나봄) |
만약 집에서 브릿지모드로 연결했을 때 또 안 읽히고 스마트폰으로 접속했을 때만 읽히면 이건 내부에서 nat로 처리하고 있다는 게 되..지 않을까 싶음
집의 경우
가상머신 네트워크 설정: 브릿지 모드 스마트폰, 호스트머신, 가상머신 모두 아이피가 192.168.x.x로 시작함 -> 브릿지 모드 호스트머신으로 사이트 접속하면 와이어샤크에 안 잡힘 스마트폰으로 사이트에 접속하면 호스트머신의 와이어샤크에 패킷 잡힘 |
▶ 모바일 데이터 접속 문제
≫ 스마트폰 와이파이로는 접속된 이유
같은 로컬 환경이라
≫ 스마트폰 데이터로는 접속 안된 이유
우분투가 어댑터 브릿지 설정으로 받은 IP는 와이파이 공유기를 통해 받은 내부 네트워크용 사설 IP
모바일 데이터는 외부 네트워크(와이파이 네트워크 대역 벗어남)에 연결되어 내부 네트워크 IP에 접근할 수 없음
≫ 방법
1. 호스팅
2. 우분투 웹 서버 SSH 터널링 등
[+] 버그헌팅 2회차에서도 비슷한 일을 겪음.
대상 사이트 cors 헤더 설정이 이상하길래 내 서버 사용해서 CSRF나 iframe을 통한 XSS를 시도하려고 했음.
노트북으로 서버 열어두고 기관에서 사용하는 컴퓨터로 접속하려고 해보니 접속할 수가 없었음.
내 가상머신 서버는 와이파이로 사설 ip를 받고 있었기 때문에 유선랜으로 연결된 기관 컴퓨터로 접속할 수 없었던 것 같음.
'자습' 카테고리의 다른 글
프로젝트 2, 3주차 파일 다운로드 실험 (0) | 2025.03.27 |
---|---|
3일간 진행한 버그 헌팅 실습 훈련 후기 (0) | 2025.02.15 |
CTF: SQL Injection 포인트 찾기 (0) | 2025.01.08 |
CTF: 어드민은 내 것이다. (0) | 2024.11.23 |