linux下怎么指定网卡发包收包

linux下怎么指定网卡发包收包,第1张

linux下有命令可直接执行抓包的,命令如下:

1、tcpdump -vv -i ethN -s 10240 -w /root/abc.cap host ip

2、上述命令中,ethN,是你要抓的本机网卡,一般是eth0,可使用ifconfig查看使用的哪个网卡

-s 指定的是抓包数量 -w指定的是抓到的包写到哪个位置 host ip即为抓取哪个ip 的包

以下几种方法检测linux服务器是否被攻击:1、检查系统密码文件首先从明显的入手,查看一下passwd文件,ls–l/etc/passwd查看文件修改的日期。2、查看一下进程,看看有没有奇怪的进程重点查看进程:ps–aef|grepinetdinetd是UNIX系统的守护进程,正常的inetd的pid都比较靠前,如果看到输出了一个类似inetd–s/tmp/.xxx之类的进程,着重看inetd–s后面的内容。在正常情况下,LINUX系统中的inetd服务后面是没有-s参数的,当然也没有用inetd去启动某个文件;而solaris系统中也仅仅是inetd–s,同样没有用inetd去启动某个特定的文件;如果使用ps命令看到inetd启动了某个文件,而自己又没有用inetd启动这个文件,那就说明已经有人入侵了系统,并且以root权限起了一个简单的后门。3、检查系统守护进程检查/etc/inetd.conf文件,输入:cat/etc/inetd.conf|grep–v“^#”,输出的信息就是这台机器所开启的远程服务。一般入侵者可以通过直接替换in.xxx程序来创建一个后门,比如用/bin/sh替换掉in.telnetd,然后重新启动inetd服务,那么telnet到服务器上的所有用户将不用输入用户名和密码而直接获得一个rootshell。4、检查网络连接和监听端口输入netstat-an,列出本机所有的连接和监听的端口,查看有没有非法连接。输入netstat–rn,查看本机的路由、网关设置是否正确。输入ifconfig–a,查看网卡设置。5、检查系统日志命令last|more查看在正常情况下登录到本机的所有用户的历史记录。但last命令依赖于syslog进程,这已经成为入侵者攻击的重要目标。入侵者通常会停止系统的syslog,查看系统syslog进程的情况,判断syslog上次启动的时间是否正常,因为syslog是以root身份执行的,如果发现syslog被非法动过,那说明有重大的入侵事件。在linux下输入ls–al/var/log检查wtmputmp,包括messgae等文件的完整性和修改时间是否正常,这也是手工擦除入侵痕迹的一种方法。6、检查系统中的core文件通过发送畸形请求来攻击服务器的某一服务来入侵系统是一种常规的入侵方法,典型的RPC攻击就是通过这种方式。这种方式有一定的成功率,也就是说并不能100%保证成功入侵系统,而且通常会在服务器相应目录下产生core文件,全局查找系统中的core文件,输入find/-namecore–execls–l{}\依据core所在的目录、查询core文件来判断是否有入侵行为。7、检查系统文件完整性检查文件的完整性有多种方法,通常通过输入ls–l文件名来查询和比较文件,这种方法虽然简单,但还是有一定的实用性。但是如果ls文件都已经被替换了就比较麻烦。在LINUX下可以用rpm–V`rpm–qf文件名`来查询,查询的结果是否正常来判断文件是否完整。在LINUX下使用rpm来检查文件的完整性的方法也很多,这里不一一赘述,可以manrpm来获得的格式。

从ip_finish_output2到dev_queue_xmit路径:

http://www.bluestep.cc/linux%e5%91%bd%e4%bb%a4arping-%e7%bd%91%e7%bb%9c%e7%ae%a1%e7%90%86-%e9%80%9a%e8%bf%87%e5%8f%91%e9%80%81arp%e5%8d%8f%e8%ae%ae%e6%8a%a5%e6%96%87%e6%b5%8b%e8%af%95%e7%bd%91%e7%bb%9c/

arp协议:

(1).硬件类型:

硬件地址类型,该字段值一般为ARPHRD_ETHER,表示以太网。

(2).协议类型:

表示三层地址使用的协议,该字段值一般为ETH_P_IP,表示IP协议

(3)硬件地址长度,以太网MAC地址就是6;

(4)协议地址长度,IP地址就是4;

(5) *** 作码

常见的有四种,arp请求,arp相应,rarp请求,rarp相应。

(6)发送方硬件地址与IP地址,(7)目标硬件地址与目标IP地址。

arp头数据结构:

arp模块的初始化函数为arp_init(),这个函数在ipv4协议栈的初始化函数inet_init()中被调用。

1.初始化arp表arp_tbl

2.注册arp协议类型;

3.建立arp相关proc文件,/proc/net/arp;

4.注册通知事件

一个neigh_table对应一种邻居协议,IPv4就是arp协议。用来存储于邻居协议相关的参数、功能函数、邻居项散列表等。

一个neighbour对应一个邻居项,就是一个arp条目

邻居项函数指针表,实现三层和二层的dev_queue_xmit()之间的跳转。

用来存储统计信息,一个结构实例对应一个网络设备上的一种邻居协议。

注册arp报文类型 :dev_add_pack(&arp_packet_type)

就是把arp_packet_type添加到ptype_base哈希表中。

注册新通知事件的时候,在已经注册和UP的设备上,会调用一次这个通知事件。

设备事件类型:

创建一个邻居项,并将其添加到散列表上,返回指向该邻居项的指针。

tbl:待创建的邻居项所属的邻居表,即arp_tbl;

pkey:三层协议地址(IP地址)

dev:输出设备

want_ref:??

创建邻居项

1.设置邻居项的类型

2.设置邻居项的ops指针

3.设置邻居项的output函数指针

调用dst_link_failure()函数向三层报告错误,当邻居项缓存中还有未发送的报文,而该邻居却无法访问时被调用。不懂。

用来发送arp请求,在邻居项状态定时器处理函数中被调用。

neigh:arp请求的目的邻居项

skb:缓存在该邻居项中的待发送报文,用来获取该skb的源ip地址。

将得到的硬件源、目的地址,IP源、目的地址等作为参数,调用arp_send()函数创建一个arp报文并将其输出。

创建及发送arp报文

创建arp报文,填充字段。

发送arp报文

用来从二层接收并处理一个arp报文。这个函数中就是做了一些参数检查,然后调用arp_process()函数。

neigh_event_ns

neigh_update

这个函数的作用就是更新邻居项硬件地址和状态。分支比较多。

neigh_update_notify

代理arp(proxy arp),通常像路由器这样的设备才使用,用来代替处于另一个网段的主机回答本网段主机的arp请求。

感觉代码ARP好像没啥用呀。

网络主机发包的一般过程:

1.当目的IP和自己在同一网段时,直接arp请求该目的IP的MAC。

2.当目的IP和自己不再同一网段时,arp请求默认网关的MAC。

https://www.cnblogs.com/taitai139/p/12336554.html

https://www.cnblogs.com/Widesky/p/10489514.html

当主机没有默认网关的时候,arp请求别的网段的报文,到达路由器后,本来路由器是要隔离广播的,把这个arp请求报文给丢弃,这样就没法通信了。当路由器开启arp proxy后,路由器发现请求的目的IP在其他网段,就自己给主机回复一个arp响应报文,这样源主机就把路由器的MAC当成目的IP主机对应的MAC,可以通信了。这样可能会造成主机arp表中,多个IP地址都对应于路由器的同一个MAC地址。

可以使用arping命令发送指定IP的arp请求报文。

写完了发现这个老妹写的arp代理文章蛮好的,不过她好像是转载的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6076305.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-13
下一篇 2023-03-13

发表评论

登录后才能评论

评论列表(0条)

保存