一、Linux下抓包工具tcpdump详细介绍
(一)简介
Tcpdump是Linux平台下一个以命令行方式运行的网络流量监测工具,它能截获网卡上收到的数据包,并能够协助网络管理员对其中的内容进行相应的分析,它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
(二)使用场景
在win系统上,我们可以利用wireshark工具来抓包,可是在没有界面的Linux系统终端,我们需要进行抓包分析,就需要用到Tcpdump。
栗子:在复现Metasploit类型的poc,当我们想分析其生成的数据包,这个时候在没有wireshark工具下,我们就可以使用tcpdump来抓包分析。
(三)参数
[外链图片转存失败(img-bdcZolbI-1565613361490)(assets/1565177024854.png)]
1.常见参数:-i
功能:指定要抓取数据包的网卡名称
栗子:
tcpdump -i eth0 # 只抓取eth0网卡的数据包,可以通过ifconfig命令来查看有什么网卡
2.常见参数:-c
功能:指定抓取包的个数
栗子:
tcpdump -i eth0 -c 10 # 只抓取eth0网卡下10个数据包
3.常见参数:-w
功能:保存抓好的数据包到xxx.pcap
栗子:
tcpdump -i eth0 -c 10 -w packets.pcap # 只抓取eth0网卡下10个数据包并保存到packes.pcap文件下
4.数据过滤参数
-
过滤主机
tcpdump -i eth0 host 192.168.1.1 # 只抓取源ip和目的ip是192.168.1.1的数据包 tcpdump -i eth0 src host 192.168.1.1 # 只抓取源ip是192.168.1.1的数据包 tcpdump -i eth0 dst host 192.168.1.1 # 只抓取目的ip是192.168.1.1的数据包
-
过滤端口
tcpdump -i eth0 port 25 # 只抓取源端口和目的端口是25的数据包 tcpdump -i eth0 src port 25 # 只抓取源端口是25的数据包 tcpdump -i eth0 dst port 25 # 只抓取目的端口是25的数据包
-
过滤协议
tcpdump -i eth0 arp # 只抓取arp协议 tcpdump -i eth0 ip # 只抓取ip协议 tcpdump -i eth0 tcp # 只抓取tcp协议 tcpdump -i eth0 udp # 只抓取udp协议 tcpdump -i eth0 icmp # 只抓取icmp协议
-
栗子
# 抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数据包 tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'
二、linux下发包工具curl详细介绍
(一)简介
curl 是一种命令行工具,作用是发出网络请求,然后获取数据,显示在"标准输出"(stdout)上面。
(二)使用场景
在无界面的linux终端系统中,如果我们需要发送http数据包,没有浏览器工具情况下,我们就可以用到curl命令行工具,自定义发送http请求包,功能同python中使用requests模块来自定义发送数据包。
(三)参数
1. 查看网页源码
curl www.sina.com # 直接在 curl 命令后加上网址,就可以看到请求返回来的网页源码
curl -o sina.html www.sina.com # 如果要把这个网页保存下来,可以使用-o参数
2.自动跳转
# 使用-L参数,curl就会跳转到新的网址
curl -L www.sina.com
# 输入上面的命令,结果自动跳转为www.sina.com.cn,如果不加-L,会显示302状态码
3. 请求头与相应头信息
# curl的-v查看请求响应头部信息
curl -v www.sina.com
# -i 参数可以显示 http response 的头信息,连同网页代码一起。-I 参数则只显示 http response 的头信息。
# curl -i www.sina.com
4.显示通信过程
# -v 参数可以显示一次 http 通信的整个过程,包括端口连接和 http request 头信息。
curl -v www.sina.com
# 如果觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。
curl --trace output.txt www.sina.com
curl --trace-ascii output.txt www.sina.com
# 运行后,打开 output.txt 文件查看。
5.发送表单
# GET请求
curl www.sina.com/form.cgi?data=ls
# POST请求
# curl就要用到--data或者-d参数
curl -X POST --data "data=xxx" www.sina.com/form.cgi
# 如果你的数据没有经过表单编码,还可以让curl为你编码,参数是--data-urlencode
curl -X POST --data-urlencode "data=xx" www.sina.com/form.cgi
6. HTTP动词
# curl 默认的 HTTP 动词是 GET,使用 -X 参数可以支持其他动词。
curl -X POST www.sina.com
curl -X DELETE www.sina.com
7. User-Agent字段
# 这个字段是用来表示客户端的设备信息。服务器有时会根据这个字段,针对不同设备,返回不同格式的网页
curl --user-agent "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36" www.sina.com
8. 增加头信息
# 使用--cookie参数,可以让curl发送cookie
curl --cookie "name=xxx" www.sina.com
9. 增加头信息
# 有时需要在 http request 之中,自行增加一个头信息。--header 参数就可以起到这个作用。
curl --header "Content-Type:application/json www.sina.com
10. HTTP认证
# 有些网域需要 HTTP 认证,这时 curl 需要用到 --user 或者 -u 参数。
curl --user name:password www.sina.com