Skip to content

Netcat

넷캣(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