Investigate and write! :D


서버와 클라이언트가 네트워크 세션 확립 또는 통신이 되려면 소켓이 필요합니다.


코딩을 하는 사람(코더)는 소켓 프로그래밍을 해야 하는데 간단한 소켓 통신이라도


그 프로그램을 만드는데 의외로 적지 않은 시간이 걸립니다.




그래서 이 기능을 제공해주는 프로그램 Netcat이 있습니다.


간단한 소켓(통신)을 할 수 있는 기능을 제공해주는 프로그램이라고 생각하시면 됩니다.


이 프로그램은 백도어나 간단한 통신 테스트를 할 때 주로 활용되고 있습니다.




< 공통 >


ncat -h

- Netcat 메뉴얼 보기


C:\>ncat -h

Ncat 7.40 ( https://nmap.org/ncat )

Usage: ncat [options] [hostname] [port]


Options taking a time assume seconds. Append 'ms' for milliseconds,

's' for seconds, 'm' for minutes, or 'h' for hours (e.g. 500ms).

  -4                         Use IPv4 only

  -6                         Use IPv6 only

  -C, --crlf                 Use CRLF for EOL sequence

  -c, --sh-exec <command>    Executes the given command via /bin/sh

  -e, --exec <command>       Executes the given command

      --lua-exec <filename>  Executes the given Lua script

  -g hop1[,hop2,...]         Loose source routing hop points (8 max)

  -G <n>                     Loose source routing hop pointer (4, 8, 12, ...)

  -m, --max-conns <n>        Maximum <n> simultaneous connections

  -h, --help                 Display this help screen

  -d, --delay <time>         Wait between read/writes

  -o, --output <filename>    Dump session data to a file

  -x, --hex-dump <filename>  Dump session data as hex to a file

  -i, --idle-timeout <time>  Idle read/write timeout

  -p, --source-port port     Specify source port to use

  -s, --source addr          Specify source address to use (doesn't affect -l)

  -l, --listen               Bind and listen for incoming connections

  -k, --keep-open            Accept multiple connections in listen mode

  -n, --nodns                Do not resolve hostnames via DNS

  -t, --telnet               Answer Telnet negotiations

  -u, --udp                  Use UDP instead of default TCP

      --sctp                 Use SCTP instead of default TCP

  -v, --verbose              Set verbosity level (can be used several times)

  -w, --wait <time>          Connect timeout

  -z                         Zero-I/O mode, report connection status only

      --append-output        Append rather than clobber specified output files

      --send-only            Only send data, ignoring received; quit on EOF

      --recv-only            Only receive data, never send anything

      --allow                Allow only given hosts to connect to Ncat

      --allowfile            A file of hosts allowed to connect to Ncat

      --deny                 Deny given hosts from connecting to Ncat

      --denyfile             A file of hosts denied from connecting to Ncat

      --broker               Enable Ncat's connection brokering mode

      --chat                 Start a simple Ncat chat server

      --proxy <addr[:port]>  Specify address of host to proxy through

      --proxy-type <type>    Specify proxy type ("http" or "socks4" or "socks5")

      --proxy-auth <auth>    Authenticate with HTTP or SOCKS proxy server

      --ssl                  Connect or listen with SSL

      --ssl-cert             Specify SSL certificate file (PEM) for listening

      --ssl-key              Specify SSL private key (PEM) for listening

      --ssl-verify           Verify trust and domain name of certificates

      --ssl-trustfile        PEM file containing trusted SSL certificates

      --ssl-ciphers          Cipherlist containing SSL ciphers to use

      --version              Display Ncat's version information and exit


See the ncat(1) manpage for full options, descriptions and usage examples




< 서버(IP : 10.0.0.2) >


ncat -l 8888

- 8888포트로 Listen

- 클라이언트와 1:1 소켓통신을 할 수 있음.

- 클라이언트측에서 소켓을 끊어버리면 서버측에서도 netcat이 종료된다.


ncat -lk 8888

- 8888포트로 (Multi)Listen

- 클라이언트들과 N:1 소켓통신을 할 수 있음

- 클라이언트측에서 소켓을 끊어도 서버측에서는 netcat이 종료되지 않음.



ncat -l 8888 -c cmd

ncat -l 8888 -e cmd

- 8888포트로 Listen

- 이 서버로 접속하는 클라이언트에게 서버의 cmd 원격 실행 권한을 부여


ncat -lv 8888

- 8888포트로 Listen

- 해당포트에 세션확립이 되었던 클라이언트의 아이피를 출력



< 클라이언트 >


ncat 10.0.0.2 8888

- 10.0.0.2 서버의 8888포트로 접속


ncat 10.0.0.2 8888 -c cmd

ncat 10.0.0.2 8888 -e cmd

- 10.0.0.2 서버의 8888포트로 접속

- 접속하는 서버(10.0.0.2)에게 자신(클라이언트)의 cmd 원격 실행 권한을 부여



'Network > Network' 카테고리의 다른 글

[네트워크] 사설아이피  (0) 2017.04.02
[네트워크] 포트포워딩 테스트 사이트  (0) 2017.03.26