tcpdump、nc 分手后的思念是犯贱 2022-09-17 05:29 189阅读 0赞 -------------------- tcpdump 说实在的,对于 tcpdump 这个软体来说,你甚至可以说这个软体其实就是个骇客软体,因为他不但可以分析封包的流向,连封包的内容也可以进行‘监听’,如果你使用的传输资料是明码的话,不得了,在 router 上面就可能被人家监听走了!很可怕呐!所以,我们也要来了解一下这个软体啊!(注:这个 tcpdump 必须使用 root 的身份执行) ![20130928172608125][] 如果你是第一次看 tcpdump 的 man page 时,肯定一个头两个大,因为 tcpdump 几乎都是分析封包的表头资料,使用者如果没有简易的网路封包基础,要看懂粉难呐!所以,至少您得要回到[网路基础][Link 1]里面去将 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 之类的主动连线标志。呵呵!不容易看的懂吧!所以说,上头才讲请务必到[TCP 表头资料][TCP]的部分去瞧一瞧的啊! 再来,一个网路状态很忙的主机上面,你想要取得某部主机对你连线的封包资料而已时,使用 tcpdump 配合管线命令与正规表示法也可以,不过,毕竟不好捉取!我们可以透过 tcpdump 的表示法功能,就能够轻易的将所需要的资料独立的取出来。在上面的范例一当中,我们仅针对 eth0 做监听,所以整个 eth0 介面上面的资料都会被显示到荧幕上,不好分析啊!那么我们可以简化吗?例如只取出 port 21 的连线封包,可以这样做: ![20130928172705921][] 瞧!这样就仅提出 port 21 的资讯而已,且仔细看的话,你会发现封包的传递都是双向的,client 端发出‘要求’而 server 端则予以‘回应’,所以,当然是有去有回啊!而我们也就可以经过这个封包的流向来了解到封包运作的过程。举例来说: 1. 我们先在一个终端机视窗输入‘ tcpdump -i lo -nn ’ 的监听, 2. 再另开一个终端机视窗来对本机 (127.0.0.1) 登入‘ssh localhost’ 那么输出的结果会是如何? ![20130928172812000][] 上表显示的头两行是 tcpdump 的基本说明,然后: * 第 3 行显示的是‘来自 client 端,带有 SYN 主动连线的封包’, * 第 4 行显示的是‘来自 server 端,除了回应 client 端之外(ACK),还带有 SYN 主动连线的标志; * 第 5 行则显示 client 端回应 server 确定连线建立 (ACK) * 第 6 行以后则开始进入资料传输的步骤。 从第 3-5 行的流程来看,熟不熟悉啊?没错!那就是[三向交握][Link 2] 的基础流程啦!够有趣吧!不过 tcpdump 之所以被称为骇客软体之一可不止上头介绍的功能呐!上面介绍的功能可以用来作为我们主机的封包连线与传输的流程分析,这将有助于我们了解到封包的运作,同时了解到主机的防火墙设定规则是否有需要修订的地方。 更神奇的使用要来啦!如果我们使用 tcpdump 在 router 上面监听‘明码’的传输资料时,例如 FTP 传输协定,你觉得会发生什么问题呢?我们先在主机端下达‘ tcpdump -i lo port 21 -nn -X ’然后再以 ftp 登入本机,并输入帐号与密码,结果你就可以发现如下的状况: ![20130928172902187][] 上面的输出结果已经被简化过了,你必须要自行在你的输出结果当中搜寻相关的字串才行。从上面输出结果的特殊字体中,我们可以发现‘该 FTP 软体使用的是 vsftpd ,并且使用者输入 dmtsai 这个帐号名称,且密码是 mypasswordisyou’嘿嘿!你说可不可怕啊!如果使用的是明码的方式来传输你的网路资料?所以我们才常常在讲啊,网路是很不安全低! 另外你得了解,为了让网路介面可以让 tcpdump 监听,所以执行 tcpdump 时网路介面会启动在‘错乱模式 (promiscuous)’,所以你会在 /var/log/messages 里面看到很多的警告讯息,通知你说你的网路卡被设定成为错乱模式!别担心,那是正常的。至于更多的应用,请参考 man tcpdump 啰! ![20130928172947750][] -------------------- nc, netcat 这个 nc 可以用来作为某些服务的检测,因为他可以连接到某个 port 来进行沟通,此外,还可以自行启动一个 port 来倾听其他用户的连线呐!非常的不错用!如果在编译的时候给予‘GAPING\_SECURITY\_HOLE’参数的话,嘿嘿!这个软体还可以用来取得用户端的 bash 哩!可怕吧!我们的 CentOS 比较人性化,并没有给予上面的参数,所以我们不能够用来作为骇客软体~但是用来取代 telnet 也是个很棒的功能了!(有的系统将执行档改名为 netcat 啦!) ![20130928173039312][] 这个最简单的功能与 telnet 几乎一样吧!可以去检查某个服务啦!不过,更神奇的在后面,我们可以建立两个连线来传讯喔!举个例子来说,我们先在 client 端的地方启动一个 port 来进行倾听: ![20130928173123000][] 然后在主机端的地方,也利用 nc 来连线到用户端,并且输入一些指令看看喔! ![20130928173207843][] 此时,在主机端我们可以打入一些字,你会发现在 client 端会同时出现你输入的字眼呐!如果你同时给予一些额外的参数,例如利用标准输入与输出 (stdout, stdin) 的话,那么就可以透过这个连线来作很多事情了!当然 nc 的功能不只如此,你还可以发现很多的用途喔!请自行到您主机内的 /usr/share/doc/nc-1.10/scripts 目录下看看这些 script ,有帮助的呐!不过,如果你需要额外的编译出含有 GAPING\_SECURITY\_HOLE 功能,以使两端连线可以进行额外指令的执行时,就得要自行下载原始码来编译了! [20130928172608125]: /images/20220828/87bbeed3c18946aa95f69fb32c9a4b2a.png [Link 1]: http://www.ha97.com/book/vbird_linux/linux_server/0110network_basic.htm [TCP]: http://www.ha97.com/book/vbird_linux/linux_server/0110network_basic.htm#protocol_tcp [20130928172705921]: /images/20220828/942048c0b0dc4713b0582bc116149bf0.png [20130928172812000]: /images/20220828/8dfe2f8f4432470fa893798b7436d1b1.png [Link 2]: http://www.ha97.com/book/vbird_linux/linux_server/0110network_basic.htm#protocol_tcp_3_handshake [20130928172902187]: /images/20220828/204925f0f1aa43c6a36cdc4556ddffd2.png [20130928172947750]: /images/20220828/0333c8d47011494fb887ab58df0f2aa3.png [20130928173039312]: /images/20220828/bf0c9f21ad634f15a044b403a3e3c799.png [20130928173123000]: /images/20220828/8fe3e56b9070459da5e277762ce3a679.png [20130928173207843]: /images/20220828/8ae072e16932444db51587d4d44d21ce.png
还没有评论,来说两句吧...