기계적 인조 인간

예제가 포함 된 Netcat (nc) 명령

Netcat Tutorial | Introduction to Netcat | Cybersecurity Certification Training | Edureka

Netcat Tutorial | Introduction to Netcat | Cybersecurity Certification Training | Edureka

차례:

Anonim

Netcat (또는 nc)은 TCP 또는 UDP 프로토콜을 사용하여 네트워크 연결을 통해 데이터를 읽고 쓰는 명령 줄 유틸리티입니다. 그것은 네트워크 및 시스템 관리자 무기고에서 가장 강력한 도구 중 하나이며 네트워킹 도구의 스위스 군용 칼로 간주됩니다.

Netcat은 크로스 플랫폼이며 Linux, macOS, Windows 및 BSD에서 사용할 수 있습니다. Netcat을 사용하여 네트워크 연결을 디버그 및 모니터링하고, 열린 포트를 스캔하고, 데이터를 프록시 등으로 전송할 수 있습니다. Netcat 패키지는 macOS 및 Ubuntu와 같은 널리 사용되는 Linux 배포판에 사전 설치되어 있습니다.

넷캣 구문

Netcat 유틸리티의 가장 기본적인 구문은 다음과 같습니다.

nc host port

우분투에서는 netcat 또는 nc 사용할 수 있습니다. 둘 다 OpenBSD 버전의 Netcat에 대한 심볼릭 링크입니다.

기본적으로 Netcat은 지정된 호스트 및 포트에 대한 TCP 연결을 시작하려고합니다. UDP 연결을 설정하려면 -u 옵션을 사용하십시오.

nc -u host port

포트 스캐닝

스캔 포트는 Netcat의 가장 일반적인 용도 중 하나입니다. 단일 포트 또는 포트 범위를 스캔 할 수 있습니다.

예를 들어 20-80 범위의 열린 포트를 검색하려면 다음 명령을 사용하십시오.

nc -z -v 10.10.8.8 20-80

-z 옵션은 nc 에게 데이터를 보내지 않고 열린 포트만 스캔하고 -v 옵션은 더 자세한 정보를 제공하도록 지시합니다.

결과는 다음과 같습니다.

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded! nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused… nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

Netcat을 사용하여 서버 소프트웨어 및 해당 버전을 찾을 수도 있습니다. 예를 들어, 기본 SSH 포트 22의 서버에 "EXIT"명령을 보내는 경우:

echo "EXIT" | nc 10.10.8.8 22

결과는 다음과 같습니다.

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 Protocol mismatch.

UDP 포트를 스캔하려면 아래에 표시된대로 명령에 -u 옵션을 추가하십시오.

nc -z -v -u 10.10.8.8 20-80

대부분의 상황에서 Nmap은 복잡한 포트 스캔을 위해 Netcat보다 나은 도구입니다.

Netcat을 통한 파일 전송

기본 클라이언트 / 서버 모델을 생성하여 Netcat을 사용하여 한 호스트에서 다른 호스트로 데이터를 전송할 수 있습니다.

이는 수신 호스트의 특정 포트에서 청취하도록 Netcat을 설정 한 후 ( -l 옵션 사용) 다른 호스트와 정기적으로 TCP 연결을 설정하고 파일을 통해 전송함으로써 작동합니다.

수신시 다음 명령을 실행하면 수신 연결을 위해 포트 5555가 열리고 출력이 파일로 경로 재 지정됩니다.

nc -l 5555 > file_name

보내는 호스트에서받는 호스트에 연결하고 파일을 보내십시오.

nc receiving.host.com 5555 < file_name

디렉토리를 전송하려면 tar를 사용하여 소스 호스트에서 디렉토리를 아카이브하고 대상 호스트에서 아카이브를 추출 할 수 있습니다.

수신 호스트에서 Netcat 도구를 설정하여 포트 5555에서 수신 연결을 수신하십시오. 수신 데이터는 tar 명령으로 파이프되어 아카이브를 추출합니다.

nc -l 5555 | tar xzvf -

송신 호스트 팩에서 디렉토리를 수신하고 수신 호스트의 수신 nc 프로세스에 연결하여 데이터를 송신하십시오.

tar czvf - /path/to/dir | nc receiving.host.com 5555

양쪽에서 전송 진행 상황을 볼 수 있습니다. 완료되면 CTRL+C 를 입력하여 연결을 닫으십시오.

간단한 채팅 서버 만들기

둘 이상의 호스트간에 온라인 채팅을 작성하는 절차는 파일을 전송할 때와 동일합니다.

첫 번째 호스트에서 Netcat 프로세스를 시작하여 포트 5555에서 청취하십시오.

nc -l 5555

두 번째 호스트에서 다음 명령을 실행하여 청취 포트에 연결하십시오.

nc first.host.com 5555

이제 메시지를 ENTER 하고 Enter 키를 누르면 두 호스트 모두에 표시됩니다.

연결을 닫으 CTRL+C 입력하십시오.

HTTP 요청 수행

curl과 같은 HTTP 요청을위한 훨씬 더 나은 도구가 있지만 Netcat을 사용하여 다양한 요청을 원격 서버로 보낼 수도 있습니다.

예를 들어, OpenBSD 웹 사이트에서 Netcat 매뉴얼 페이지를 검색하려면 다음을 입력하십시오.

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

HTTP 헤더 및 HTML 코드를 포함한 전체 응답이 터미널에 인쇄됩니다.

결론

이 학습서에서는 Netcat 유틸리티를 사용하여 TCP 및 UDP 연결을 설정하고 테스트하는 방법을 배웠습니다.

자세한 내용은 Netcat 매뉴얼 페이지를 방문하여 Netcat 명령의 다른 모든 강력한 옵션에 대해 읽으십시오.

넷캣 터미널