콘텐츠로 이동
Search

Netcat

lastmod 2025-02-14created 2018-09-148 edits

넷캣(Netcat)은 TCP나 UDP 프로토콜을 사용하는 네트워크 연결에서 데이터를 읽고 쓰는 간단한 유틸리티 프로그램이다. 일반적으로는 UNIX의 cat과 비슷한 사용법을 가지고 있지만 cat이 파일에 쓰거나 읽듯이 nc는 network connection 에 읽거나 쓴다. 이것은 스크립트와 병용하여 network에 대한 debugging, testing tool로써 매우 편리하지만 반면 해킹에도 이용범위가 넓다.

Simple listen server

포트 1234에서 리슨(listen)하는 간단한 채팅 서버를 만들어 보자.

Server:

$ nc -l -p 1234

Client:

$ telnet localhost 1234

Telnet 연결

-t을 사용하면 TELNET negotiation 답변을 전송.

Hex 출력

xxd를 같이 사용.

$ nc -l -p 1234 | xxd

파일 전송

클라이언트에서 넷캣 리스너로 파일을 전송할 수도 있고 역방향으로 파일을 전송할 수도 있다. Server:

$ nc -l -p 1234 > pstest.out

Client:

$ ps auxf | nc -w3 10.0.2.15 1234
## 또는
$ nc -w3 10.0.2.15 < filename

클라이언트에서 명령의 결과를 바로 서버 측으로 전송하거나 파일을 전송할 수 있다.

포트 스캐닝

$ nc -n -v -z -w 1 10.0.2.100 1-1023
(UNKNOWN) [10.0.2.100] 80 (www) open
(UNKNOWN) [10.0.2.100] 22 (ssh) open
  • 상세 출력(-v),
  • DNS 이름 주소 변환 실시 안 함(-n),
  • 데이터 전송 안 함(-z),
  • 최대 1초의 연결 리슨 시간(-w 1)을 옵션으로
  • TCP 프로토콜을 사용해서 1-1023 사이의 포트를 스캔

80, 22번 포트가 열려있음을 확인할 수 있다:

WARNING

넷캣이 포트 스캐닝을 지원하긴 하지만 포트 스캐닝을 실시할 때는 엔맵(nmap)을 권장.

Example

성공의 경우:

$ nc -zv api.yourid.run 16379
Connection to api.yourid.run (140.238.18.241) 16379 port [tcp/*] succeeded!

실패의 경우:

$ nc -zv api.yourid.run 443
nc: connect to api.yourid.run (140.238.18.241) port 443 (tcp) failed: No route to host

See also

Favorite site

author Zer0 sitemap