본문 바로가기
정보보안/System Hacking

Wireshark를 이용한 Network snipping 모의해킹

by 우동이 2022. 11. 15.
300x250

작업환경 : Virtual Box 7.0에서 호스트 전용 어댑터로  연결된 가상 서버 Kali Linux 22.3 amd64와 metasploitable

 

지난번 가상머신의 네트워크 설정중 호스트 전용 어댑터로 가상 서버를 서로 연결이 가능하도록 했습니다.

이 환경에서 Kali Linux(공격자), metasploitable(피해자)로 나뉘며

동일 네트워크 선상에 연결되어 있는 두 게스트 간의 네트워크 패킷을 공격자가 스니핑 하는 실습입니다.

 

공격자 : Kali Linux ,192.168.56.107

피해자 : metaploitable, 192.168.56.104

 


1.공격자가 피해자의 웹서버 접속

metasploitable

 

피해자의 서버에서는 웹서버가 구동 중입니다.

이 서버에 공격자가 접속합니다.

 

Kali - wireshark

공격자가 피해자의 웹 서버에 접속한 상태에서 [WireShark]를 실행해줍니다.

Wireshark는 네트워크 패킷 캡처와 분석이 가능한 오픈소스 소프트웨어입니다.

칼리 리눅스에는 기본적으로 내장되어 있습니다.

 

Wireshark의 첫 화면에서는 캡처할 네트워크를 선택(eth0,1, loopback) 그 외 로그 등 기타 기능이 있습니다.

현재 공격자와 피해자는 eth1(192.168.56.X)을 통해 연결되어 있으므로 eth1를 선택해줍니다.


2.WireShark

wireshark 화면

Wireshark의 첫 화면입니다.

별도의 필터링이 설정되어 있지 않아 발생하는 모든 HTTP, TCP, UDP 그 외 프로토콜 패킷이 전부 캡처됩니다.

현재 공격자가 피해자의 웹 서버에 접속해있는 상태이므로 

저희는 80번 포트의 HTTP 패킷을 살펴볼 겁니다.

Wireshark-패킷

패킷들을 자세히 살펴보면 80번 포트를 통해 통신된 패킷이 존재합니다.

80은 HTTP의 포트로 즉 웹 서버에 접속함으로 공격자는 피해자의 웹서버와 request/reply의 HTTP 통신이 진행되었음을 알 수 있습니다.

 

부가적으로 포트 옆에 적혀있는 [SYN], [SYN, ACK], [ACK] 패킷은 TCP 통신의 3-way handshaking이 진행되었다는 걸

확인할 수 있는 패킷입니다.

 

즉 서버와 클라이언트 간의 정상적인 TCP 통신이 진행되었음을 알 수 있습니다.

 

phpmyadmin

이제 피해자 웹서버의 phpmyadmin으로 접속합니다.

phpmyadmin은 php로 구성된 웹 서버의 관리자 페이지입니다.

ID : testname

PW : testpasswd

위 값을 입력해줬습니다. 물론 임의로 정한 값이기에 로그인이 되지는 않지만

저희는 이 입력값을 와이어 샤크에서 확인해볼 수 있습니다.

 

이 계정 입력값이 와이어 샤크에서 노출되는 이유는 php의 낮은 보안성 때문이라고 생각하시면 됩니다. 

 

 

wireshark - http

그전에 먼저 지나치게 많은 패킷을 전부 살펴보는 건 무척 힘든 일입니다.

와이어 샤크의 필터링에 대해 잠깐 배우고 가겠습니다.

 

tcp.port ==80

tcp포트 80번을 통해 통신한 패킷만을 캡처합니다.

 

tcp.port == 80

 

ip.addr == 192.168.56.104

 

특정/범위 내의 IP의 패킷만을 가져올 수 있습니다.

여기서는 192.168.56.104의 IP의 통신이 포함된 모든 내역을 필터링합니다.

 

ip.addr == 192.68.56.104

 

http 필터링

이제 입력된 계정 값을 패킷에서 찾기 위해 웹 통신이 발생한 HTTP 프로토콜 패킷만을 필터링했습니다.

가장 첫 번째로 발생한 HTTP 패킷부터 순서대로 나열됩니다.

Post

많은 HTTP 패킷 중 POST 메서드로 발생한 패킷이 있습니다.

이는 해당 웹서버에서 계정 입력값이 POST 방식으로 넘어갔기 때문입니다.

 

잠깐 여담으로 HTTP 요청에는 GET/POST 두 가지의 방식이 존재하는데

GET 방식은 입력값이 주소에 노출되어 전송되고

POST방식은 입력값이 주소에 노출되지 않게 전송됩니다.

 

하지만 PHP 자체적으로 낮은 보안성을 띄기 때문에 

POST 메서드에 담긴 계정 값을 공격자가 살펴볼 수 있습니다.

 

패킷

POST메서드로 발생한 패킷을 자세히 살펴보면 

빨간 네모 부분에 ID와 PW의 입력값이 드러나는 걸 확인할 수 있습니다.

 

즉 이 시나리오는 동일 네트워크에 존재하는 공격자와 피해자가 있고

공격자는 피해자의 웹 서버를 지속적으로 네트워크 스니핑 하여 서버에서 발생하는 

HTTP Request를 통해 입력되는 계정 값들을 탈취할 수 있다는 내용입니다.

 

 


참고 글

 

 

Virtual Box 가상 서버 동일 네트워크에 두기 - 호스트 어댑터 네트워크 설정법

Virtual Box는 Oracle에서 배포 중인 가상화 프로그램입니다. 특수기능의 확장팩을 제외하면 무료로 사용 가능한 오픈 소프트웨어이며 가상화된 이미지(iso) 파일을 통해 가상 서버를 작동할 수 있습

hobbylists.tistory.com

 

 

CSRF 취약점에 대한 간단한 설명과 그 예시 - CSRF Token, OWASP 10, Referrer

CSRF 취약점의 정의 CSRF(Cross Site Request Forgery) 취약점이란 임의의 사용자 권한으로 임의의 주소에 HTTP 요청을 하는 취약점입니다. 정확히 얘기하면 HTTP 요청에 필요한 서명을 위조, 변조하는 공격

hobbylists.tistory.com

 

 

개인 NAS 서버 보안 관련 주의사항, 이슈

개인 NAS 서버를 운용하다 보통 외부 접속을 위해 QuickConnect나 DDNS를 주로 사용할 겁니다. free DNS나 다른 도메인을 구입해 연결하는 경우도 있겠지만 시놀로지 자체적으로 제공하는 DNS를 사용하지

hobbylists.tistory.com

 

300x250

댓글