비트(bit)주세요

netcat과 포트포워딩 본문

정보보안/웹보안

netcat과 포트포워딩

yglee730 2021. 5. 23. 00:43
728x90

먼저 보고 오시면 조금이나마 도움이 되는 게시물입니다.

https://standardh.tistory.com/40

 

방화벽

방화벽(firewall) : 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을  모니터링하고 제어하는 네트워크 보안 시스템  즉, 방화벽은 IP/Port 를 기반으로 패킷을 차단/허용하는

standardh.tistory.com

 

 

netcat : 네트워크 연결을 읽고 쓰는 데 사용되는 컴퓨터 네트워킹 유틸리티

 

 

접속할 서버의 ip 확인

서버의 방화벽 상태 확인

 

서버 측 명령어 : nc -l -p 2222

                         -> 2222번 포트의 접속을 기다리고 있겠다.

 

클라이언트측 명령어 : nc 192.168.35.191 2222

                               -> 서버측 ip[192.168.35.191]를 2222번 포트로 들어가겠다.

클라이언트가 서버에게 메시지를 남기면

서버에서 그 메시지를 전달받아 출력합니다.

 

 

하지만 서버측에서 방화벽을 키고 nc 명령어를 사용하면

클라이언트가 서버에게 메시지를 남겨도 

방화벽때문에 서버는 클라이언트의 메시지를 받지 못합니다.

 

 

여기서 서버가 2222번 포트만 허용하고 nc 명령어를 사용하면

클라이언트가 서버에게 메시지를 남길때

서버는 클라이언트의 메시지를 받을 수 있습니다.

 

 

반대로 칼리리눅스가 서버가 되어 nc 명령어를 사용하고

클라이언트가 된 우분투가 메시지를 서버에게 남기면

칼리는 우분투의 메시지를 받지 못합니다.

 

이유는 칼리는 NAT이고 우분투는 어댑터에 브리지이기 때문입니다.

NAT : 클라이언트의 역할만 할 수 있다

어댑터에 브리지 : 서버와 클라이언트의 역할을 한다.

 

하지만 포트포워딩으로 이 문제를 해결할 수 있습니다.

 

포트포워딩 : 특정한 공유기의 포트를 내부 PC의 특정 포트로 전달해주는 방법

 

동작방식 : 클라이언트가 A로 던지면 A는 다시 서버로 던져줌

 

칼리리눅스 [설정] -> [네트워크] -> [고급] -> [포트포워딩]

호스트 IP -> 윈도우 IP

게스트 IP -> 칼리 리눅스 IP 

포트 -> 아무거나

nc -l -p 3333

       -> 3333번 포트를 기다리겠다.

포트포워딩을 성공한 모습입니다.

 

클라이언트(우분투)가 호스트(윈도우)로 메시지를 남기면

호스트(윈도우)는 서버(칼리)에게 메시지를 던져줍니다.

칼리가 NAT임에도 불구하고 서버의 역할이 가능해진 이유입니다.

 

포트가 서로 다를땐 어떻게 해야 할까요?

 

 

서버(칼리)는 8888포트의 접속을 기다리고

클라이언트(우분투)는 7777로 들어간다 합니다.

 

호스트ip는 윈도우의 ip로 설정이 되었고

호스트의 포트는 7777로 설정이 되어있습니다.

 

게스트ip는 칼리의 ip로 설정이 되었고

게스트의 포트는 8888로 설정이 되어있습니다.

 

여기서 호스트는 윈도우라고 했습니다.

그래서 클라이언트(우분투)는 호스트(윈도우)에게 메시지를 남깁니다.

            -> nc [host ip] 7777

클라이언트(우분투)로부터 메시지를 받은 호스트(윈도우)는 다시 서버(칼리)에게 메시지를 전달합니다.

 

요약 :

 nc -l -p 8888 

          -> 8888번 포트를 기다리겠다.

 nc [host ip] 7777

          -> 7777번 포트로 호스트를 들어가겠다.

 

호스트포트 : 7777

게스트포트 : 8888

 

포트포워딩으로 NAT 설정이였던 칼리가 서버 역할을 할 수 있었습니다.

원래 서버였던 우분투의 방화벽 설정과 상관없이 통신을 할 수 있고

즉, 방화벽을 우회 할 수 있습니다. 

이 점을 이용하여 공격을 진행할 수 있는데 이 때의 공격을 리버스 쉘 이라고 합니다.

 

다음엔 바인드 쉘과 리버스 쉘을 간단하게 실습하도록 하겠습니다.

 

 

번외 : L1 ~ L7 스위치의 주요 기능

 L1 스위치(허브, 더미허브) : 모든 포트에 데이터를 다 전달한다.

                                    -> 브로드캐스트

 

 L2 스위치(스위칭허브) : 스위칭기능을 한다.

                                    -> 누구에게 보낼지 판단할 수 있다.

 

 L3 스위치(라우터) :  라우팅 기능을 포함한다.

                                    -> MAC 주소 + IP 주소

 

 L4 스위치 : 들어오는 트래픽을 적절히 서버에게 분배한다.

                                    -> 로드밸런싱 기능

                                    -> IP, TCP/UDP 포트 정보를 본다.

 

 L7 스위치 : L3 ~ L7에 속하는 모든 정보를 보고 스위칭해준다.

                                    -> IP, TCP/UDP 포트 정보, URL, FTP 쿠키 정보, 바이러스 패턴 분석

                                    -> 보안에 유리하고, 정교한 로드밸런싱 가능

                                    

'정보보안 > 웹보안' 카테고리의 다른 글

SQL Injection을 위한 SQL  (0) 2021.06.02
Web Shell  (0) 2021.05.27
방화벽  (0) 2021.05.22
Command Injection  (0) 2021.05.06
Brute Force Attack(전수공격)  (0) 2021.04.24