說實在的,對於 tcpdump 這個軟體來說,你甚至能够說這個軟體其實就是個駭客軟體, 因為他不但能够分析封包的流向,連封包的內容也能够進行『監聽』, 假设你使用的傳輸資料是明碼的話,不得了,在 router 上面就可能被人家監聽走了! 非常可怕吶!所以,我們也要來瞭解一下這個軟體啊!(註:這個 tcpdump 必須使用 root 的身份執行)

[root@linux ~]# 

[root@linux ~]#
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

01:33:40.41 IP 192.168.1.100.22 > 192.168.1.11.1190: P 232:364(132) ack 1 win 9648

6680 packets captured
14250 packets received by filter
7512 packets dropped by kernel

假设你是第一次看 tcpdump 的 man page 時,肯定一個頭兩個大,因為 tcpdump 幾乎都是分析封包的表頭資料,使用者假设沒有簡易的網路封包基礎,要看懂粉難吶! 所以,至少您得要回到網路基礎裡面去將 TCP 封包的表頭資料理解理解才好啊! ^_^!至於那個範例一所產生的輸出範例中,我們能够約略區分為數個欄位, 我們以範例一當中那個特殊字體行來說明一下:

  • 01:33:40.41:這個是此封包被擷取的時間,『時:分:秒』的單位;
  • IP:透過的通訊協定是 IP ;
  • 192.168.1.100.22 > :傳送端是 192.168.1.100 這個 IP,而傳送的 port number 為 22,您必須要瞭解的是,那個大於 (>) 的符號指的是封包的傳輸方向喔!
  • 192.168.1.11.1190:接收端的 IP 是 192.168.1.11, 且該主機開啟 port 1190 來接收;
  • P 116:232(116):這個封包帶有 PUSH 的資料傳輸標誌, 且傳輸的資料為整體資料的 116~232 byte,所以這個封包帶有 116 bytes 的資料量;
  • ack 1 win 9648:ACK與 Window size 的相關資料。

最簡單的說法,就是該封包是由 192.168.1.100 傳到 192.168.1.11,透過的 port 是由 22 到 1190 , 且帶有 116 bytes 的資料量,使用的是 PUSH 的旗標,而不是 SYN 之類的主動連線標誌。 呵呵!不easy看的懂吧!所以說,上頭才講請務必到 TCP 表頭資料的部分去瞧一瞧的啊!

再來,一個網路狀態非常忙的主機上面,你想要取得某部主機對你連線的封包資料而已時, 使用 tcpdump 配合管線命令與正規表示法也能够,不過,畢竟不好捉取! 我們能够透過 tcpdump 的表示法功能,就能夠輕易的將所须要的資料獨立的取出來。 在上面的範例一當中,我們僅針對 eth0 做監聽,所以整個 eth0 介面上面的資料都會被顯示到螢幕上, 不好分析啊!那麼我們能够簡化嗎?比如仅仅取出 port 21 的連線封包,能够這樣做:

[root@linux ~]#
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
01:54:37.96 IP 192.168.1.11.1240 > 192.168.1.100.21: . ack 1 win 65535
01:54:37.96 IP 192.168.1.100.21 > 192.168.1.11.1240: P 1:21(20) ack 1 win 5840
01:54:38.12 IP 192.168.1.11.1240 > 192.168.1.100.21: . ack 21 win 65515
01:54:42.79 IP 192.168.1.11.1240 > 192.168.1.100.21: P 1:17(16) ack 21 win 65515
01:54:42.79 IP 192.168.1.100.21 > 192.168.1.11.1240: . ack 17 win 5840
01:54:42.79 IP 192.168.1.100.21 > 192.168.1.11.1240: P 21:55(34) ack 17 win 5840

瞧!這樣就僅提出 port 21 的資訊而已,且仔細看的話,你會發現封包的傳遞都是雙向的, client 端發出『要求』而 server 端則予以『回應』,所以,當然是有去有回啊! 而我們也就能够經過這個封包的流向來瞭解到封包運作的過程。 舉例來說:

  1. 我們先在一個終端機視窗輸入『 tcpdump -i lo -nn 』 的監聽,
  2. 再另開一個終端機視窗來對本機 (127.0.0.1) 登入『ssh localhost』

那麼輸出的結果會是怎样?

[root@linux ~]#
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
11:02:54.253777 IP 127.0.0.1. > 127.0.0.1.22:  933696132:933696132(0) win 32767 <mss 16396,sackOK,timestamp 236681316 0,nop,wscale 2>
11:02:54.253831 IP 127.0.0.1.22 > 127.0.0.1.32936:  920046702:920046702(0)  933696133 win 32767 <mss 16396,sackOK,timestamp 236681316 236681316,nop,wscale 2>
11:02:54.253871 IP 127.0.0.1.32936 > 127.0.0.1.22: .  1 win 8192 <nop,nop,timestamp 236681316 236681316>
11:02:54.272124 IP 127.0.0.1.22 > 127.0.0.1.32936: P 1:23(22) ack 1 win 8192 <nop,nop,timestamp 236681334 236681316>
11:02:54.272375 IP 127.0.0.1.32936 > 127.0.0.1.22: . ack 23 win 8192 <nop,nop,timestamp 236681334 236681334>

上表顯示的頭兩行是 tcpdump 的基本說明,然後:

  • 第 3 行顯示的是『來自 client 端,帶有 SYN 主動連線的封包』,
  • 第 4 行顯示的是『來自 server 端,除了回應 client 端之外(ACK),還帶有 SYN 主動連線的標誌;
  • 第 5 行則顯示 client 端回應 server 確定連線建立 (ACK)
  • 第 6 行以後則开始進入資料傳輸的步驟。

從第 3-5 行的流程來看,熟不熟悉啊?沒錯!那就是 三向交握 的基礎流程啦!夠有趣吧! 不過 tcpdump 之所以被稱為駭客軟體之中的一个可不止上頭介紹的功能吶! 上面介紹的功能能够用來作為我們主機的封包連線與傳輸的流程分析, 這將有助於我們瞭解到封包的運作,同時瞭解到主機的防火牆設定規則是否有须要修訂的地方。

更奇妙的使用要來啦!假设我們使用 tcpdump 在 router 上面監聽『明碼』的傳輸資料時, 比如 FTP 傳輸協定,你覺得會發生什麼問題呢? 我們先在主機端下達『 tcpdump -i lo port 21 -nn -X 』然後再以 ftp 登入本機,並輸入帳號與密碼, 結果你就能够發現例如以下的狀況:

[root@linux ~]# 0x0000:  4500 0048 2a28 4000 4006 1286 7f00 0001  E..H*(@.@.......0x0010:  7f00 0001 0015 80ab 8355 2149 835c d825  .........U!I./.%0x0020:  8018 2000 fe3c 0000 0101 080a 0e2e 0b67  .....<.........g0x0030:  0e2e 0b61 3232 3020 2876 7346 5450 6420  ...a220.(0x0040:  322e 302e 3129 0d0a                      2.0.1)..0x0000:  4510 0041 d34b 4000 4006 6959 7f00 0001  E..A.K@.@.iY....0x0010:  7f00 0001 80ab 0015 835c d825 8355 215d  ........./.%.U!]0x0020:  8018 2000 fe35 0000 0101 080a 0e2e 1b37  .....5.........70x0030:  0e2e 0b67 5553 4552 2064 6d74 7361 690d  ...gUSER..0x0040:  0a                                       .0x0000:  4510 004a d34f 4000 4006 694c 7f00 0001  E..J.O@.@.iL....0x0010:  7f00 0001 80ab 0015 835c d832 8355 217f  ........./.2.U!.0x0020:  8018 2000 fe3e 0000 0101 080a 0e2e 3227  .....>........2'0x0030:  0e2e 1b38 5041 5353 206d 7970 6173 7377  ...8PASS.0x0040:  6f72 6469 7379 6f75 0d0a                 ..

上面的輸出結果已經被簡化過了,你必須要自行在你的輸出結果當中搜尋相關的字串才行。 從上面輸出結果的特殊字體中,我們能够發現『該 FTP 軟體使用的是 vsftpd ,並且使用者輸入 dmtsai 這個帳號名稱,且密碼是 mypasswordisyou』 嘿嘿!你說可不可怕啊!假设使用的是明碼的方式來傳輸你的網路資料? 所以我們才经常在講啊,網路是非常不安全低!

另外你得瞭解,為了讓網路介面能够讓 tcpdump 監聽,所以執行 tcpdump 時網路介面會啟動在 『錯亂模式 (promiscuous)』,所以你會在 /var/log/messages 裡面看到非常多的警告訊息, 通知你說你的網路卡被設定成為錯亂模式!別擔心,那是正常的。 至於很多其它的應用,請参考 man tcpdump 囉!

例題:怎样使用 tcpdump 監聽 (1)來自 eth0 介面卡且 (2)通訊協定為 port 22 ,(3)目標來源為 192.168.1.100 的封包資料?

答:

  • tcpdump -i eth0 -nn 'port 22 and src host 192.168.1.100'

ethereal

除了 tcpdump 這個軟體之外,其實你還能够使用 ethereal 這個好用的網路流量分析軟體吶! ethereal 分為文字介面與圖形介面,文字介面的使用方法與 tcpdump 相當的類似,不過他的指令名稱為 tethereal 就是了。因為使用方法差点儿相同,所以建議您直接使用 man tethereal 查閱吧! 在 CentOS 上原本就有 ethereal 了,所以請拿出光碟來安裝就可以喔! 须要安裝 ethereal 與 ethereal-gnome 才行吶!

啟動的方法非常簡單,你必須要在 X Window 底下,先開啟一個終端機,然後直接輸入 ethereal 後, 就會出現例如以下的畫面了:


圖五、ethereal 使用範例圖
簡單的作法,你能够點選如上圖顯示的那個按鈕,會出現挑選監聽的介面視窗,例如以下所看到的:


圖六、ethereal 使用範例圖
你應該選擇要監聽的介面,在這裡因為是测試用的,所以鳥哥使用的是 lo 這個內部介面, 你當然應該要選擇你自己的網路介面才是。然後按下 start 後,就會出現开始偵测的畫面了:


圖七、ethereal 使用範例圖
在這個畫面當中你能够看到非常多類型的封包協定,在等你處理完畢後,就能够按下『stop』結束監聽, 而开始進入例如以下的封包分析畫面。


圖八、ethereal 使用範例圖
封包分析畫面共分為三大區塊,如上圖所看到的,第一區塊主要顯示的是封包的標頭資料, 內容就有點類似 tcpdump 的顯示結果,第二區塊則是詳細的表頭資料, 包含訊框的內容、通訊協定的內容以及 socket pair 等等資訊。 第三區塊則是 16 進位與 ASCII 碼的顯示結果。透過這個 ethereal 您就能够一口氣得到所须要的全部封包內容啦! 并且還是圖形介面的,非常方便吧!透過在第一區塊選擇不同的封包,就能夠查閱每個封包的資料內容囉!


nc, netcat

這個 nc 能够用來作為某些服務的檢测,因為他能够連接到某個 port 來進行溝通, 此外,還能够自行啟動一個 port 來傾聽其它用戶的連線吶!非常的不錯用! 假设在編譯的時候給予『GAPING_SECURITY_HOLE』参數的話,嘿嘿! 這個軟體還能够用來取得用戶端的 bash 哩!可怕吧!我們的 CentOS 比较人性化,並沒有給予上面的参數,所以我們不能夠用來作為駭客軟體~ 可是用來代替 telnet 也是個非常棒的功能了!(有的系統將執行檔改名為 netcat 啦!)

[root@linux ~]#
[root@linux ~]# 

[root@linux ~]#
localhost.localdomain [127.0.0.1] 25 (smtp) open
220 pc.dm.tsai ESMTP Postfix

250-pc.dm.tsai
250-PIPELINING
250-SIZE 40000000
250-ETRN

221 Bye

這個最簡單的功能與 telnet 幾乎一樣吧!能够去檢查某個服務啦!不過,更奇妙的在後面, 我們能够建立兩個連線來傳訊喔!舉個样例來說,我們先在 client 端的地方啟動一個 port 來進行傾聽:

[root@linux ~]#

然後在主機端的地方,也利用 nc 來連線到用戶端,並且輸入一些指令看看喔!

[root@linux ~]#

此時,在主機端我們能够打入一些字,你會發現在 client 端會同時出現你輸入的字眼吶! 假设你同時給予一些額外的参數,比如利用標準輸入與輸出 (stdout, stdin) 的話, 那麼就能够透過這個連線來作非常多事情了! 當然 nc 的功能不仅仅如此,你還能够發現非常多的用途喔! 請自行到您主機內的 /usr/share/doc/nc-1.10/scripts 目錄下看看這些 script ,有幫助的吶! 不過,假设你须要額外的編譯出含有 GAPING_SECURITY_HOLE 功能, 以使兩端

转载于:https://www.cnblogs.com/mengfanrong/p/4022566.html

tcpdump抓包分析具体解释相关推荐

  1. 转 Wireshark和TcpDump抓包分析心得

    1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话 ...

  2. linux 查看握手时间,实战:tcpdump抓包分析三次握手四次挥手

    本文档以实战的形式介绍tcpdump抓包分析三次握手四次挥手的过程. 执行tcpdump命令 tcpdump -n -i ens32 host 192.168.10.10 and 42.186.113 ...

  3. tcpdump抓包分析 https://www.01hai.com/note/av263669

    转:tcpdump抓包分析(强烈推荐) 内容预览: 转自:https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=266...~ .,表示没 ...

  4. Wireshark和 TcpDump抓包分析心得

    1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话 ...

  5. Wireshark和TcpDump抓包分析心得

    为什么80%的码农都做不了架构师?>>>    ‍ 1. Wireshark与tcpdump介绍 ?Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我 ...

  6. tcpdump抓包分析(强烈推荐)

    https://blog.csdn.net/wojiuguowei/article/details/102475262 1 起因 前段时间,一直在调线上的一个问题:线上应用接受POST请求,请求bod ...

  7. 转:tcpdump抓包分析(强烈推荐)

    时间:2017-11-13 19:50:17      阅读:26788      评论:0      收藏:0      [点我收藏+] 标签:部分   cpp   序列   客户   类型   增 ...

  8. tcpdump抓包分析详解

    1 起因 前段时间,一直在调线上的一个问题:线上应用接受POST请求,请求body中的参数获取不全,存在丢失的状况.这个问题是偶发性的,大概发生的几率为5%-10%左右,这个概率已经相当高了.在排查问 ...

  9. linux环境下用TcpDump抓包分析总结

    1.手机IP 怎么知道手机ip,输入下面命令 adb shellifconfig 比如得到手机ip 2.0.0.1 2.目标IP 比如目标地址ip为10.0.0.1 3.抓包命令 我们不带端口命令如下 ...

最新文章

  1. JavaScript 正则表达式的使用
  2. 快速学习使用 Windows Azure 上的 SharePoint Server 2013
  3. [C入门 - 游戏编程系列] 贪吃蛇篇(四) - 食物实现
  4. 微信小程序------MD5加密(支持中文和不支持中文)和网络请求(get和post)
  5. 做系统ghost步骤图解_Ghost 博客搭建超全指南
  6. 我的世界java版tis,我的世界1.7.10~1.8.8 9tis-3d回到汇编的时代mod
  7. Python内置数据类型之Tuple
  8. angular使用动态组件后属性值_Angular动态加载组件
  9. PC,移动端H5实现实现小球加入购物车效果
  10. “crol/cror”函数实现流水灯
  11. ZOJ 3987 Numbers(枚举)
  12. 【css】用css的方法来画一个三角形
  13. 网页+微信小程序UI设计及前端开发(第二周)
  14. 我的世界拔刀剑java要求_我的世界1.7.10拔刀剑MOD下载_我的世界拔刀剑整合包下载-游迅网...
  15. 在Android平台上搭建Qualcomm的FastCv
  16. 2011-2020年北京大学数字普惠金融指数(PKU-DFIIC)
  17. concurrentHashMap代码走读 chm走读
  18. 重大喜讯!精灵云校V5.0家校互通正式上线,助力机构打造完美服务体系!
  19. 分布式理论:CAP 是三选二吗?
  20. markdown甘特图的绘制

热门文章

  1. 字母异位词分组Python解法
  2. html 轮播 平移,网站轮播图的实现-平移版
  3. Linux 查看目录常用命令
  4. html个版本间的特点,了解下什么是HTML5,他与以往的版本有什么区别 什么新元素...
  5. oracle查询orapw文件,oracle学习笔记《一》
  6. python 概率分布_python实现beta分布概率密度函数的方法
  7. excel loc() python_总结:像Excel一样使用python进行数据分析
  8. C语言编程模拟超市抹零结账,STL实践项目之用queue模拟超市结账环节
  9. 史上卖得最多的芯片......原来是这个!
  10. 变频器输出功率_工业电气设计|变频器的输出功率该如何选择?