命令合集
ARP
0x01 ARP原理及功能
ARP协议的全称为 Address Resolution Protocol
——->地址解析协议
能够实现IP地址到MAC地址的映射,也可以询问目标IP地址对应的MAC地址
ARP协议只用于IPv4协议中
1A.ARP的工作原理
分两种情况——->A与B处于同一链路,A与B不处于同一链路
工作原理A·处于同一链路中
- 假设有两台主机A与B,A的ip地址为192.168.1.2;B的ip地址为192.168.1.3
而主机A想要向B发送数据时,要先在ARP高速缓存
中检查是否有网络设备B的IP地址。如果有,则直接在ARP高速缓存
查出其对应的物理地址。
若高速缓存中没有设备B,则A会通过ARP广播
的方式向以太网发出ARP请求包
而主机A发送的ARP请求包会被同一链路上的所有其他设备接收并进行解析。每台设备都会检查ARP请求包中的信息,如果ARP请求包中的目标 IP 地址
和自己的相同,就会将自己主机的MAC地址写入响应包返回主机A
工作原理B·不处于同一链路中
- 需要使用
ARP代理
,通常ARP会被路由器隔离,但是采用代理ARP(ARP Proxy) 的路由器可以将ARP请求转发给临近的网段。使多个网段中的节点像是在同一网段内通信。
1B.ARP缓存
- 类似于web中的cookie
通过ARP缓存,降低了网络流量的使用,在一定程度上防止了ARP的大量广播。
1C.ARP结构/ARP Packet
上面说到,ARP想要知道对方MAC地址的信息之前,需要发送ARP请求包,我们接下来就详细拆解一下ARP请求包。前面 14 个字节构成标准以太网的首部,前两个字段 DST和SRC分别表示以太网的目的地址
和以太网的源地址
,以太网的目的地址如果是 ff:ff:ff:ff:ff:ff
全部为1表示广播地址,在同一广播域中的所有以太网接口可以接收这些帧。后面紧跟着的是ARP请求的长度/类型,ARP请求和ARP应答这个值为0x0806
。
硬件类型
表示硬件地址的类型,硬件地址常见的有MAC物理或者以太网地址,对于以太网来说,此值为1。协议类型
指出映射的协议地址类型,对于IPv4地址,这个值是0x0800`。硬件大小
和协议大小
分别指出硬件地址和协议地址的字节数。对于以太网中使用IPv4的ARP请求或应答,它们的值分别是6和4。Op
字段指出如果是ARP请求,Op=1,ARP应答,Op=2,RARP请求Op=3,RARP应答,Op=4。紧跟在 Op 之后的是
发送方硬件地址(MAC 地址)
,发送方的协议地址(IPv4 地址)
,目的硬件地址
和目的协议地址
。摘自大佬博客
0x02 ARP全参数详解
在CLI
下输入arp /?
1.arp -a/ arp -g
作用:显示ARP表——–>arp出来的就是网卡信息
可以通过arp –a –Ninterface_address
来显示指定网络接口的ARP信息
2.arp -v
作用:在详细模式下显示当前arp项。所有无效项和环回接口上的项都将显示。
-v
只能和arp -a
一起使用
3.arp -s
作用:添加主机并且将Internet地址与物理地址相关联。
执行成功后无提示信息。
输入“arp -a”命令可以看到刚刚添加的信息,状态为静态。
4.arp -d
作用:删除指定的主机地址
inet_addr可以是通配符 *,以删除所有主机
下图所示为删除前面添加的157.55.85.212项。
Arp –d
或arp –d *
命令可以删除所有的ARP缓存信息。
ARP攻击的使用范围:局域网内
ARP 攻击
0x01 ARP攻击过程
首先我们知道,ARP攻击
针对于局域网内,所以ARP攻击带来的影响,可以是突然使网吧内断网、可以是让机房内的所有机器上不了网,那画面简直“太美”。
而ARP攻击最重要的是——————中间人
先来回忆一下ARP协议是干什么的,具体原理见ARP协议
在局域网(同一链路中),我们将场景定义为机房吧。
在图中,A是我的同学,M是我自己,而T是老师的机子
在交作业的时候A同学需要向教师T发送消息,文件也好,其他也罢
而A同学要向老师发消息,需要先通过ARP协议确定教师T的MAC地址
然而这时候M——————我自己,想干坏事儿了。利用ARP欺骗~~
现在的我————主机M处于监听状态,我发现A同学要向教师T提交作业了,那我就在A同学主机对教师T主机的ARP请求包中掺杂我自己的请求包。那么对于A同学会收到什么样的回复呢?
A同学收到两个ARP回应包,内容分别如下:
我是教师T,我的IP地址是IP2,我的MAC地址是MAC2;
我是教师,我的IP地址是IP2,我的MAC地址是MAC3;
A同学一脸懵:咋回事?还有这操作?不管了,我选最新的!(后到优先)
而这时候的A同学还心存疑惑,我们疯狂的发送ARP包给A同学,让他信以为真。
稳健的ARP嗅探/渗透工具,能在短时间内高并发做网络扫描(例如1秒钟成千上百的数据包),能够持续对外发送欺骗包。
那对于A同学来说,他认定了教师T的IP为IP2,MAC地址为MAC3,也就是我电脑的地址,他原本要发给教师T的信息,也就自然而然的发到了我手上。
可以使用Wireshark来抓取ARP包
ARP攻击过程描述完毕
此时的我们已经成为了“A同学眼中的教师T”
那我们利用这一点可以干什么坏事呢?——————这里就讲到了ARP攻击后果
0x02 ARP攻击后果
- 简单存在的几个后果
1. 原本A同学要传给教师T的信息被我截胡了
2. 如果A同学不是向教师T传信息,如果A同学是向路由器发包,在阻拦之后,可以造成对方断网
0x03 ARP攻击的工具
三、常见ARP渗透工具与底层原理分析
基于ARP欺骗原理设计出来的渗透/攻击工具非常多,而最终能实现什么功能则各有差异,简单举几个例子:
1.无毒无害型的仅具备ARP扫描功能,用来发现内网主机;例如Metasploit里面的arping/arpscan相关模块;
**2.**ARP扫描+流量控制(限速或限制能上哪些网站和应用)例如Windows下的P2P终结者;
3.ARP扫描+账号窃取(网站、邮箱、各种);最强的莫过于Windows下的Cain,当然还有跨平台的Ettercap(需配合其他工具);
讲到攻击,那么防护也是不得不提的一件事
0x04 ARP防御
自带ARP防御功能:腾讯电脑管家、360安全卫士……
专业的ARP防火墙:彩影ARP、金山贝壳、360ARP防火墙……
记一次在学校机房的ARP攻击实战
开始前,先交代一下使用到的工具
- 使用kail机,进行ARP攻击的软件为arpspoof,无其他脚本
1.安装:
1 | sudo apt-get install -y dsniff ssldump |
在命令行下运行arpspoof
即可
- 作为局域网内最简单的攻击手段之一,话不多说,进入实战。
2.实战
连着网线打开kali机。将虚拟机的网络连接方式设为桥接。
1.查看虚拟机的端口号
和IP地址
1 | sudo ipconfig |
2.批量查看ip地址
1 | fping -asg 10.1.62.1/24 |
- 针对不同的ip地址进行扫描
3.攻击
1 | sudo arpspoof -i eth0 -t <victim IP> <victim Subnet> |
这里有一些小细节需要讲的,eth0是网卡的意思,也就是有线连接,如果是无线连接的话,这里的eth0应当替换成wth0。
像我这里的实战来说,比如我扫出来了10.1.62.75这一台的ip地址存在,则可以直接:
1 | sudo arpspoof -i eth0 -t 10.1.62.75 10.1.62.254 |
- 攻击成功
3.一些debug
问题1:在arp攻击的时候会遇到
arpspoof: couldn’t arp for host
1 | arpspoof: couldn't arp for host |
看了网上一些解答,并没有给出很详细的解决方法。
有四点:
1、网卡不对,一般来说默认的网卡就是eth0,也有可能是其它的,具体需要查看了才知道。
2、IP不存在或者IP地址错误,这里主要说的是192.168.1.104,有可能你的物理电脑局域网IP不是这个。
3、IP之间不能相互通信,这个是非常重要的。
4、IP不在同一网段,arpspoof此命令必须要保证IP都是同一网段的。
- 第一条就是前面说到的
eth0
与wth0
的区别 - 第二条是说对方的ip可能是非存活状态
- 第三条的主要原因是dns劫持的问题
- 第四条则是最重要的,我一开始也是卡在这儿。
我们来详细说一说第四条,注意看到前面的ifconfig的图片
如图所示,eth0是只有ipv6地址,和局域网根本不在同一网段下啊
这里主要有两种方法。
第一种设置虚拟机为桥接,(90%的kali都是这样就好了)
第二种我们鼠标右键点击kali机的右上角,手动配置ipv4的地址和dns服务器
再进行arp攻击,起飞!
至于是内网,就不挂截图咯,大家玩的开心!
4.批量攻击
前面说到的fping -asg ip地址
是为了探测ip用的
探测完后,开始批量攻击
ipconfig全参数命令详解
0x01 Ipconfig /all
先附上操作截图
中间省略了一些内容,因为那是虚拟机的网络配置,就先略过啦,直接看本机的
无线局域网适配器 WLAN:
1 | 连接特定的 DNS 后缀 . . . . . . . : |
1.连接特定的DNS
- 这一点集中体现在Linux下,有些时候Ubuntu机,或者一些虚拟机,右上角显示网络连接,但是却出现了问号。
一般这种情况是出现了DNS劫持的问题
所以需要连接特定的DNS
sudo vim /etc/resolv.conf
打开文件后修改配置
nameserver 8.8.8.8 // google的DNS
nameserver 8.8.4.4
这就是连接特定的DNS
2.物理地址
- 即MAC地址
长度为48位(6个字节),通常表示为12个16进制数
MAC地址在一定程度上与硬件一致,是基于物理的,能够标识具体的网络节点。
ip地址通过ARP协议的对应关系,映射为MAC地址
3.DHCP
DHCP
自动获取网络配置
- 例如在Linux机下,
sudo dhcp
自动获取网络配置
4.子网掩码
子网掩码也称为网络掩码,地址掩码和子网遮罩。
它用于指示IP地址的哪些位标识主机所在的子网,哪些位标识为主机的位掩码。
子网掩码是一个32位地址,它具有两个主要功能。
一种是屏蔽IP地址的一部分,以区分网络ID和主机ID,并指示IP地址是在局域网上还是在远程网络上。
第二个是将大型IP网络划分为若干个小型子网,能够减少IP的浪费。
5.获得租约的时间与租约过期的时间
- 是DHCP自动获取网络配置,以及重新刷新网络配置的时间
6.默认网关
网关用来接收数据包,并将其转发至收信息的网关处,实现信息发送
比如有网络A和网络B,
网络A的IP地址范围为“192.168.1.1~192.168.1.254”,子网掩码为255.255.255.0
网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0
要实现这两个网络之间的通信,则必须通过网关。
如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。
7.DHCP服务器
指由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
8.ip地址
IP是32位二进制数据,通常以十进制表示,并以“.”分隔。IP地址是一种逻辑地地址,用来标识网络中一个个主机,IP有唯一性,即每台机器的IP在全世界是唯一的。
电脑之间要实现网络通信,就必须要有一个合法的ip地址。IP地址=网络地址+主机地址,(又称:主机号和网络号组成)ip地址的结构使我们可以在Internet上很方便的寻址。
Linux chmod 命令
0x01 问题出发
为什么学chmod这个命令
最近在使用服务器跑一些程序,但是发现有时候跑程序可以,有时候会收到报错
在我设置的crontab定时任务中,跑的程序命令是python3 run.py
这样子一来,没有权限,加上不知道可不可以定时输入sudo的密码,这程序死循环了,根本跑不了。
想了想好一点的方法就是将文件的权限改一改,就想到了Linux这个命令chmod
0x02 解决方法
先说解决方法吧,有时候原理并不是那么重要
1 | sudo chmod 777 run.py |
通过这两个命令对文件的权限进行修改
0x03 命令详解
用法1:数字表示法
sudo chmod +parameter filename
那么这个参数parameter
都可以是什么呢?
chmod+参数,参数的三位数分别代表不同的含义
- 777有3位,最高位7是设置文件所有者访问权限,第二位是设置群组访问权限,最低位是设置其他人访问权限。
其中每一位的权限用数字来表示。具体有这些权限:
1 | r(Read,读取,权限值为4):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。 |
当数字为7时,7用“rwx”表示{4(r)+2(w)+1(x)=7}
如果数值为6,则用“rw-”表示{4(r)+2(w)+0(x)=6}
,”-”表示不具备权限,这里表示不具备“执行”权限。
假如我们设定其他用户的访问权限为 “r–”,则数值为4+0+0=4
用法2:用户表示法
who | 用户类型 | 说明 |
---|---|---|
u | user | 文件所有者 |
g | group | 文件所有者所在组 |
o | others | 所有其他用户 |
a | all | 所用用户, 相当于 ugo |
例如:让file.txt给所有人可读的权限
1 | chmod ugo+r file.txt |
operator 的符号模式表:
Operator | 说明 |
---|---|
+ | 为指定的用户类型增加权限 |
- | 去除指定用户类型的权限 |
= | 设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
permission 的符号模式表:
模式 | 名字 | 说明 |
---|---|---|
r | 读 | 设置为可读权限 |
w | 写 | 设置为可写权限 |
x | 执行权限 | 设置为可执行权限 |
X | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s | setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t | 粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
crontab命令的使用
讲解一下crontab命令的使用,先说说为什么要使用crontab吧
crontab,能够定时的进行某项任务,例如跑某个程序,脚本等等
那么如何使用呢?
1. crontab的安装
1 | sudo yum install crontab |
安装完crontab之后,在命令行输入crontab -h
进行验证,如图所示
可以通过一系列命令查看crontab服务状态(类似查看ssh状态一样)
1 | sudo service crond status // 查看crontab服务状态 |
2. crontab的基本使用教程
一般来说,使用crontab最简单的就是定时跑一个程序,而crontab是以vim为载体,获取vim文件中的信息,作为整个定时运行的数据,所以这里我们要先进行命令
1 | crontab -e |
运行完这个命令之后,会自动进入到一个vim文件当中,具体的文件名因人而异
然后在vim文件当中编辑需要的信息——-> 具体的时间格式如下
1 | f1 f2 f3 f4 f5 program |
f1:分钟 f2:小时 f3:表示一个月份中的第几天
f4:月份 f5:表示一个星期中的第几天
- 当f1为 * 时表示每分钟都要执行program,f2为 * 时表示每小时都要执行程序,其余类推
- 当f1为a-b时表示从第a分钟到第b分钟这段时间内要执行,f2为a-b时表示从第a到第b小时都要执行,其余类推
- 当f1为 */n 时表示每n分钟个时间间隔执行一次,f2为 */n 表示每n小时个时间间隔执行一次,其余类推
- 当f1为a,b,c,… 时表示第a,b,c,…分钟要执行,f2为a,b,c,…时表示第a,b,c…个小时要执行,其余类推
这里以我自己为例,我想让这个py程序在每天早上7点自动运行
已经设置好的crontab可以通过该命令查看
1 | crontab -l |
删除定时任务
1 | crontab -r |
备份crontab文件
1 | crontab -l > &PATH |
快尝试一下使用crontab吧!
Linux之基础cp命令
Linux的基础cp命令,cp的全称为copy
,为复制
那么回想一下在Windows在我们是如何进行复制粘贴任务的?先选中一个文件,然后Ctrl+c,再到需要粘贴的文件夹里面进行Ctrl+v。
一般来说,我们需要先创建一个新的文件夹
1 | mkdir new file |
接着执行cp命令
1 | cp dir1 dir2 |
这里解释一下cp命令,dir1表示的是需要选中复制的文件(或者文件夹)
dir2表示的是被粘贴的文件(或者文件夹)
并且,可以在dir1之下复制想要的文件,例如,将baby.txt复制为file文件
1 | cp /home/baby.txt /bin/file |
小坑,复制完成之后,文件baby.txt名为file,需要修改名字
- 这里使用mv命令
例如,将file文件修改为baby.txt
1 | mv file baby.txt |
- 当我们想要将一整个文件夹的内容复制到另一个时,需要加上-r参数
1 | cp -r /home /bin |
traceroute命令各参数详解
Traceroute详解
理解一个命令要知其然再知其所以然
从‘这个命令有什么用’——–>‘这个命令实现的原理’
0x01 traceroute的作用与原理
- trace&&route,机翻一下,追踪路线,能够探测自己主机到对方主机经过了多少路由。
- 用法
traceroute + ip地址
这里我们以 traceroute baidu.com
为例
解释一下这里出现的几个数据
- 前面三个数据表示
icmp
包从电脑发出到该路由器的“最快时间”,“平均时间”和“最慢时间”。 - 那为什么会出现”*”呢?
那这就要追溯一下traceroute命令的实现原理了
Step1:从源地址发送一个UDP/ICMP(Linux用UDP,Win用ICMP)探测包到目的地址,并设置TTL=1
Step2:到达路由器时,将TTL减1;
Step3:当TTL变为0时,包被丢弃,路由器向源地址发回一个ICMP超时通知(ICMP Time Exceeded Message),内含发送IP包的源地址,IP包的所有内容及路由器的IP地址;
Step4:当源地址收到该ICMP包时,显示这一跳路由信息;
Step5: 重复1~5,并每次设置TTL加1;
Step6: 直至目标地址收到探测数据包,并返回端口不可达通知(ICMP Port Unreachable);
Step7: 当源地址收到ICMP Port Unreachable包时停止traceroute。
而出现’*’是超时,没有返回任何时间信息,所以用星号代替
0x02 traceroute命令全参数详解
我们先在CLI下输入traceroute /?
- 得到的结果
1.traceroute -d
作用:不将地址解析成主机名
(虽然我没看出来有什么区别)
2.traceroute -h
作用:设置最多的跃点跟踪
- 用法
traceroute -h +hostname
3.traceroute -w
作用:设置对外发探测包的等待响应时间
用法traceroute -w +time +hostname
提高等待响应时间,能够提高探测的正确性
ping命令
- 首先先在terminal中敲入
ping /?
出现的是ping命令的参数一览表
一个个看
1.Ping -t
ping -t
的作用于ping
作用大同小异,只不过ping -t
命令需要手动Control+c停止下来
ping
命令用来检测网络的连通情况和分析网络速度
这里的TTL=49—–> TTL:Time To Leave 也就是存活时间,当信息包在网络中被传输时,TTL的域值通过一个路由器时递减1;当TTL递减到0时,信息包被路由器抛弃。
对于TTL值:
有时可以通过TTL的值来判断操作系统
前提在于用户不修改TTL值
1、WINDOWS NT/2000 TTL:128
2、WINDOWS 95/98 TTL:32
3、UNIX TTL:255
4、LINUX TTL:64
5、WIN7 TTL:64
- 修改TTL的值:在cmd中输入
regedit
,修改DefaultTTL里面的TTL默认值
2.Ping -a
用法:ping -a +ip地址
作用:解析出主机名
- 这里以ping自己主机为例
3.Ping -n
- 作用:用来自定义发送数据包的数量,用来衡量网络速度—–>根据时间
用法:ping -n +parameter +ip地址
这里的最快时间为31ms,最慢时间为36ms。说明网络质量良好
那么网络质量不好又是一种什么样的状况呢
- 举例
1 | ping -n 10 withd-raw.github.io |
得到的结果如下图
关于数据包的时间非常慢,其次,还有丢包。说明访问该url的网络不好。
4.Ping -l size
- 用法
Ping -l +parameter +ip地址
number范围在32~65500之内
作用:发送size指定大小的到目标主机的数据包
当一次发送的数据包大于或等于65500bytes时
将可能导致接收方计算机宕机。
因为发送数据包过大时会导致计算机宕机,参考[DOS攻击](DOS攻击 - 唤起一天明月 (withd-raw.github.io))
5.Ping -f
- 用法
ping -f +ip地址
作用:一般情况下发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理;在接收数据的主机没有足够资源来重组片段的情况下,这可以用来禁止分片。
6.Ping -i
- 用法
Ping +ip地址 -i +parameter
作用:设置源地址(发送端)发送的Ping的包的TTL值
如果-i的参数大于TTL值,则可以成功发包
如果-i的参数小于TTL值,则会发包失败 (有点筛选的意思了)
7.Ping -v
作用:详细输出整个ping命令结果
- 用法
ping v -parameter +ip地址
参数范围在0~255之间
8.Ping -r
- 用法
ping -r + parameter +ip地址
作用:感觉和traceroute差不多,用来追踪路由
一般和ping -n
结合起来使用
参数设置为1时的情况
参数设置为9时的情况
追踪到了9个路由
9.Ping -s
类似于ping -r,但是参数只能是1-4,也就是只能追踪的路由数在1-4内
- 用法:
ping -s +parameter +ip地址
10.Ping -j与Ping -k
- 用法:
Ping -j +ip
与Ping -k +ip
-j:统计与主机列表一起使用的松散源路由
-k:统计与主机列表一起使用的严格源路由
松散源路由与严格源路由
松散源路由:松散源路由选项只是给出IP数据报必须经过的一些”要点”,并不给出一条完备的路径,无直接连接的路由器之间的路由尚需IP软件的寻址。
严格源路由:严格源路由选项规定IP数据报要经过路径上的每一个路由器,相邻路由器之间不得有中间路由器,并且所经过路由器的顺序不可更改。
11.Ping -w
- 用法:
Ping -w +parameter +ip地址
作用:等待每次回复的超时时间,容易理解
12.Ping -R
13.Ping -s
计算机网络之互联网
0x01互联网的组成部分
互联网的核心:路由
互联网的边缘:端系统
A端系统的两种模式
- 客户端/服务器方式(C/S方式)
客户端:接受服务的终端,是服务的请求方
服务器:服务的提供方
- 对等方式(P2P方式)
即Peer-to-Peer——>如迅雷,就是P2P的连接方式
B互联网/网络边缘的四种接入网
1.数字用户线(DSL)
- 通俗的说法是拨号上网
客户端发出信号——>分为虚拟信号与数字信号,而经过耦合器耦合之后,将一部分信号分出去,传给电话信号,将另外一部分传给ISP,作为网络信号。
- < 2.5 Mbps上行传输速率(通常< 1mbps)
- < 24 Mbps下行传输速率(通常< 10mbps)
2.电缆接入
- 电缆接入,使用电视的线进入网络连接
同样是客户端发出信号,经过耦合之后分成TV信号与网络信号。
3.Wifi
4.光纤到户(FTTH)
分为PON与TON两种模式
- 本文标题:命令合集
- 创建时间:2022-08-09 20:05:33
- 本文链接:2022/08/09/命令合集/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!