2018深信服“醒狮计划”笔记
第3周(5.07-5.13)
课程 | 必修 | 选修 | 基本要求 |
---|---|---|---|
网络基础 | TCP/IP模型,协议特点 | 《策略路由,Netfilter,iptables 开发知识培训讲义》 | TCP、UDP、ARP、NAT、网关、网桥、VLAN、路由、抓包工具tcpdump/winshark |
第一部分 Wireshark的使用
1. Wireshark安装
Ubuntu 16.04下安装网络流量分析工具 Wireshark 的方法
sudo apt-add-repository ppa:wireshark-dev/stable
sudo apt-get update
sudo apt-get install wireshark
如果没有弹出上面窗口,就运行下面命令行
sudo dpkg-reconfigure wireshark-common
如果想要使用命令行版本时,需要安装tshark
sudo apt-get install tshark
命令行抓取特定网卡和端口的包,
sudo tshark -i eth0 port 8080
现在是不成功的,需要先进行下面步骤,把权限先设置好
2. 权限/用户组设置
GUI:普通用户不能够打开网卡设备进行抓包,Wireshark不建议用户通过sudo在root权限下运行
解决方法
sudo vim /etc/group
在
“wireshark:x:130:”
后面输入当前登录的用户名,我这里为“luojie”
。提示:按i为插入,然后输入用户名,按esc
,然后输入“:wq
”进行保存。完成以上步骤之后,需要注销后重新登录来使设置生效,再次打开即可。
重启之后就能正常使用
3. 打开
键入wireshark就可以打开
wireshark
每次键入的话很不方便,所以可以右键图标,lock from Launcher就可以固定在桌面上了
4. Wireshark基本用法
Wireshark会捕捉系统发送和接收的每一个报文。如果抓取的接口是无线并且选项选取的是混合模式,那么也会看到网络上其他报文。
TCP/IP通过三次握手建立一个连接。这一过程中的三种报文是:SYN,SYN/ACK,ACK,第一步是找到PC发送到网络服务器的第一个SYN报文,这标识了TCP三次握手的开始。
如果你找不到第一个SYN报文,选择Display Filter,输入过滤条件tcp.flags.syn==1
,回车,显示的就是筛选之后的内容了。
因为学校限流量20G完全不够用,穷逼没钱上网,所以我的电脑配置了shadowsocks+ipv6来进行(免流量上网+同时还自带梯子),所以截图里面的数据包都走的是本地ip,外部走的都是ipv6
第二部分 tcpdump的使用
0_0 不小心看岔了,Linux原来不用看wireshark…..
1. tcpdump -D 获取网络适配器列表
tcpdump -D
2. 抓取所有数据
sudo tcpdump -i <需要监控的网络适配器编号>
sudo tcpdump -i any
tcpdump
详细命令
参数 | 命令 |
---|---|
-i | 参数指定监听网口 |
-c | 参数指定监听的数据包数量 |
-s | 参数指定监听数据包大小 |
-w | 参数指定监听数据包写入文件 |
如果要监听某几台主机数据包 例如
10.10.10.10
、20.20.20.20
、30.30.30.30
tcpdump host 10.10.10.10 and \(20.20.20.20 or 30.30.30.30\)
试一下抓取一下网页数据包,就拿
CSDN
试一下 IP是47.95.47.253
开始监听
sudo tcpdump host 47.95.47.253
刷新一下页面
如果想要获取主机
210.27.48.1
除了和主机210.27.48.2
之外所有主机通信的ip包
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
如果获取
10.10.10.10:80
发出去的数据包
tcpdump -i eth0 src host 10.10.10.10 and src port 80
如果获取发往
10.10.10.10:80
的数据包
tcpdump -i eth0 dst host 10.10.10.10 and dst port 80
只抓取
syn
包
tcpdump -i eth0 tcp[13]==2
只抓取
fin
包
tcpdump -i eth2 tcp[13]==1
只抓取
synack
包
tcpdump -i eth2 tcp[13]==18
抓取
10.10.10.10:80
的syn
、synack
包
tcpdump -i eth2 tcp[13]==2 or tcp[13]==18 and port 80 and host 10.10.10.10