Ubuntu20.04配置CuckooSandbox环境

news2025/3/3 4:19:49

Ubuntu20.04配置CuckooSandbox环境

因为最近要做恶意软件分析,阅读论文发现动态分析的效果普遍比静态分析的效果要好一些,所以需要搭建一个动态分析的环境,查阅资料发现Cuckoo Sandbox是不错的自动化分析环境,但是搭建起来还是比较复杂的,主要是在配置虚拟机环境以及网络配置方面。

基础环境

文中的环境是Ubuntu 20.04 Server,也就是服务器版,后来为了配置虚拟机尝试过GNOME还有xfce4桌面环境,其实纯服务器环境即可完成配置,但是在配置虚拟机环境时可能会卡,所以还是有必要装一个桌面环境的。
在配置环境的时候建议配置一个新用户出来,Cuckoo官方不建议使用root权限搭建环境,最好是配置一个有sudo权限的用户,在本文中我配置的新用户名为Czy,注意要使用有sudo权限的用户创建,比如root等,对了别忘了在创建好新用户后在/etc/passwd将创建用户的默认的bash环境/bin/sh更改为/bin/bash,默认的/bin/sh在登陆后只有一个$不太好用。

sudo useradd -m Czy # 添加Czy用户并生成home目录
sudo usermod -aG sudo Czy # 添加到超级用户组即sudo权限
# /etc/passwd
Czy:x:1001:1001::/home/Czy:/bin/bash

SSH软件使用的是MobaXterm,可以直接在本地实现virtualbox的图形界面,不过还是比较卡,肯定是不如直接使用图形界面的快,但是也只是配置过程中需要使用,真正使用Cuckoo时就不需要手动启动虚拟机环境了,如果用Xbash的话需要配合Xmanager才能在本地拉起virtualbox的图形界面,此外建议安装WinSCP用来传输文件,这个为了方便可以用root登录,不过要注意用root登录后传输后的文件的所有者都是root,写文件的话需要更改权限。

在这里插入图片描述

安装Anaconda

首先来说明为什么要安装Anaconda ,首先在Cuckoo不建议直接使用主python环境进行配置,建议使用venv,还有一个更重要的原因,在Ubuntu 20.04已经不建议使用python2了,而到目前为止Cuckoo只支持python2,之前在16.04使用pyhton就能拉起的环境现在需要安装python2并且必须使用python2命令才能唤起,所以为了避免出现各种问题,还是选择使用Anaconda进行环境配置。
首先下载Anaconda安装包,我下载的版本为Anaconda3-2019.03-Linux-x86_64.sh,在清华的镜像站https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载即可,之后便是直接./运行该可执行文件,如果不能执行的话可能是没有x权限,直接sudo chmod 755 Anaconda3-2019.03-Linux-x86_64.sh运行即可安装,安装过程不再赘述,可以参考其他的文章 。
conda环境中安装python 2.7,然后这个虚拟环境我命名为python2,在下边的脚本要用到。
Conda安装的最后会提示你是否加入到环境变量,如果加入到环境变量的话那么每次ssh到服务器都会自动运行conda环境的,我个人不是很喜欢,于是我自行写了一个.sh文件,需要的时候我再去执行这个.sh文件即可唤醒环境,注意该文件的x执行权限,755一把梭就行。
其实这些都不算重点,能跑起来python 2.7的环境都是胜利。

#!/bin/bash

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/Czy/application/conda/bin/conda' 'bash.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/Czy/application/conda/etc/profile.d/conda.sh" ]; then
        . "/home/Czy/application/conda/etc/profile.d/conda.sh"
    else
        export PATH="/home/Czy/application/conda/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<
conda activate python2
source ./python2-conda.sh

在这里插入图片描述

安装Cuckoo

安装python库

我是直接执行了sudo pip install -U cuckoo,然后执行过程中告诉我缺啥我都再装,虽然这样不太好但是也不是不行哈哈,文档对于这块说的还是比较清楚的,这里借鉴一下其他博客说明的安装环境,如果安装失败,搜索一下错误,我就遇到过一个编译image什么的错误,是在github issue中找到一个用apt安装的依赖才解决的,但是具体记不清了。

sudo apt-get install python python-pip python-dev libffi-dev libssl-dev
sudo apt-get install python-virtualenv python-setuptools
sudo apt-get install libjpeg-dev zlib1g-dev swig

安装MongoDB

为了使用基于DjangoWeb界面,需要使用MongoDB,也就是为了启动cuckoo web runserver 0.0.0.0:8000的环境依赖,之后还需要配置用户名密码与数据库信息,这个在下一节会细说。

sudo apt-get install mongodb

安装PostgreSQL

CuckooWeb服务需要一个数据库,在配置文件中可以看出sqlitepostgresqlmysql都是可以的,由于我比较熟悉Mysql的操作本来想指定Mysql作为选定数据库来着,但是由于装python_mysql的驱动一直出问题,我估计是因为我装的Mysql 8.0,而Python 2.7早已不再维护了,所以无法正常使用驱动了,所以最终还是选择PostgreSQL,当然这个也需要配置用户名密码等,这个下一节再说明。

sudo apt-get install postgresql libpq-dev

安装virtualbox

首先需要安装virtualbox,直接使用apt-get安装即可。

sudo apt-get install virtualbox

如果像我一样是使用的服务器而没有实体机,而且我的服务器在实体机上是使用VMware Workstation管理的,那么这个状态就相当于在虚拟机中安装虚拟机,那么就需要在主体实体机的VMware Workstation中修改虚拟机配置在,Processors中启用VT-XAMD-V,也就是启动虚拟化才可以。

在这里插入图片描述

安装tcpdump

为了在执行期间转储恶意软件执行的网络活动,需要正确配置网络嗅探器以捕获流量并将其转储到文件中。

sudo apt-get install tcpdump apparmor-utils
sudo aa-disable /usr/sbin/tcpdump

请注意,只有在使用默认目录时才需要apparmor禁用配置文件(aa-disable命令),CWD因为apparmor会阻止创建实际的PCAP文件(另请参阅tcpdump的权限被拒绝),对于禁用apparmorLinux平台(例如,Debian),以下命令就足以安装tcpdump

sudo apt-get install tcpdump

tcpdump需要root权限,但由于不希望Cuckooroot身份运行,因此必须为二进制文件设置特定的Linux功能。

sudo groupadd pcap
sudo usermod -a -G pcap Czy # 这里是用户名
sudo chgrp pcap /usr/sbin/tcpdump
sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

可以使用以下命令验证上一个命令的结果。

getcap /usr/sbin/tcpdump
# /usr/sbin/tcpdump = cap_net_admin,cap_net_raw+eip

如果没有安装setcap则安装。

sudo apt-get install libcap2-bin

或者以其他方式(不推荐)的做法。

sudo chmod +s /usr/sbin/tcpdump

安装Volatility

Volatility是一种可选工具,可对内存转储进行取证分析,与Cuckoo结合使用,它可以自动提供对操作系统深度修改的额外可视性,并检测逃脱Cuckoo分析器监控域的rootkit技术的存在。

git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
sudo python setup.py build
sudo python setup.py install

安装M2Crypto

目前M2Crypto只有在安装SWIG时才支持该库,在Ubuntu /Debian的系统上,可以按如下方式完成。

sudo apt-get install swig
sudo pip install m2crypto==0.24.0

Cuckoo环境配置

cuckoo默认安装在当前用户目录下,即~/.cuckoo,我们可以使用cuckoo -d来启动cuckoo

配置virtualbox虚拟机

这是个比较大的工程,为了方便我们直接在图形界面上完成这个操作。
首先我们需要准备好一个XP镜像,镜像需要自行下载,可以去MSDN下载,之后还要准备一个密钥,这个可以自行百度,多试试总有能用的。
点击新建,这边的namecuckoo1,因为我有一个重名的了所以写了个2,这边一定要写好是cuckoo1,选择好windows XP 32-bit系统。

在这里插入图片描述
之后便是分配内存和硬盘存储等,可以一路next,接下来要启动安装镜像。

在这里插入图片描述

在此处选择下载好的xp系统镜像,接下来就跟随着系统进行安装,安装完成后将虚拟机关机,在Setting中的Storage中将光盘形状的这个位置的启动位置移除即可,否则每次开机都会提示你按任意键从光盘启动,那么便又会启动一次安装程序。

在这里插入图片描述
接下来需要配置网络环境,在启动的virtualbox中新建一个虚拟网卡,配置的ip地址等如下所示。

在这里插入图片描述

之后在我们新建的cuckoo1的虚拟机设置网络,如下所示,Host-only是代表只允许与宿主机通信,如果需要访问外网的话,请继续看下边的网络配置。

在这里插入图片描述

之后我们要配置一下虚拟机的外网网络环境,刚才我们新建了这个虚拟网卡,之后为了通信我们还需要将虚拟机里设置一个固定的ip地址,也就是刚才我们设置的虚拟网卡网关的子网,但是我们如果我们直接在xp系统里设置虚拟机的ip地址之后是无法上网的,所以我们需要在ubuntu中配置一个NAT网络转发,在这里我们直接使用iptables 进行网络转发,这里每次开机都会重置,如果想要开机自动可以使用systemctl进行开机自启动管理,需要编写UNIT,在这里就不赘述了,在这里我们还是写到一个sh文件中需要的时候再执行即可。
注意在下边这个ens160是我的网卡,可以使用ifconfig查看网卡名称,之后的192.168.56.0/24就是主机以及网络号划分的子网,如果上边的ip配置都是根据文章来的话,那就只需要修改这个网卡名称即可。

在这里插入图片描述

echo 1 | sudo tee -a /proc/sys/net/ipv4/ip_forward
sudo sysctl -w net.ipv4.ip_forward=1

sudo iptables -t nat -A POSTROUTING -o ens160 -s 192.168.56.0/24 -j MASQUERADE # 网卡名称 ens160 
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT
sudo iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT
sudo iptables -A FORWARD -j LOG
sudo ./network-transform.sh

在这里插入图片描述

接下来启动这个虚拟机,我们需要在这里关闭防火墙与自动更新,并且配置好ip地址。

在这里插入图片描述

在这里插入图片描述

另外还需要在虚拟机中进行网络配置以及启动一个agent.py,这个文件在~/.cuckoo/agent/agent.py,也就是说在虚拟机中也必须安装python 2.7环境,如果需要截图的话,还需要PIL包,在这里就不赘述安装过程了,无论是使用虚拟机共享磁盘还是搭建文件服务器环境等方式,或者是直接在xp虚拟机中下载python安装包并安装即可,使用python3启动简单的文件服务器命令如下。

python3 -m http.server --bind 0.0.0.0 8088

在这里插入图片描述

之后我们可以直接双击启动agent.py,另外也可以在C:\Document and Settings\Administrator\start menu\program\start设置让其开机自启,当然这个也没要必要,因为我们只需要创建快照即可,在运行agent.py之后,我们可以使用netstat命令查看8000端口是否被占用,如果已经占用就说明agent.py成功启动。

在这里插入图片描述

等环境全部搭建完成之后,我们需要创建快照,务必注意名字要命名为snapshot1,默认的为Snapshot 1,注意是首字母大写以及1之前有个空格的,所以我们要命名为snapshot1

在这里插入图片描述
之后我们就关闭虚拟机即可,在运行cuckoo过程中不需要手动启动虚拟机。

创建数据库

之前我们安装了MongoDBPostgreSQL,接下来我们需要为其创建一个用户以及创建数据库,这里统一一下用户名都为cuckoo,密码都为1234567890-=,数据库名都为cuckoo,下边的配置文件要用得到,具体过程请参照各自的数据库命令。

配置文件

所有的配置文件都在~/.cuckoo/conf/目录下,cuckoo.conf配置文件,重要位置已标出。

[cuckoo]
version_check = yes
ignore_vulnerabilities = no
api_token = uIfx
web_secret = 
delete_original = no
delete_bin_copy = no
machinery = virtualbox
memory_dump = no
terminate_processes = no
reschedule = no
process_results = yes
max_analysis_count = 0
max_machines_count = 0
max_vmstartup_count = 10
freespace = 1024
tmppath = 
rooter = /tmp/cuckoo-rooter

[feedback]
enabled = no
name = 
company = 
email = 

[resultserver]
ip = 192.168.109.206 ### 主机地址
port = 2042 ### 端口
upload_max_size = 134217728

[processing].
analysis_size_limit = 134217728
resolve_dns = yes
sort_pcap = yes

[database]
connection = postgresql://cuckoo:1234567890-=@localhost:5432/cuckoo ### 数据库链接
timeout = 60

[timeouts]
default = 120
critical = 60
vm_state = 60

[remotecontrol]
enabled = no
guacd_host = localhost
guacd_port = 4822

virtualbox.conf配置文件,重要位置已标出。

[virtualbox]
mode = headless
path = /usr/bin/VBoxManage
interface = vboxnet0 ### 默认网卡
machines = cuckoo1 ### 虚拟机名称
controlports = 5000-5050

[cuckoo1]
label = cuckoo1 ### label
platform = windows
ip = 192.168.56.101 ### 虚拟机ip地址
snapshot = snapshot1 ### 快照名
interface = vboxnet0 ### 虚拟网卡
resultserver_ip = 
resultserver_port = 
tags = 
options = 
osprofile = 

[honeyd]
label = honeyd
platform = linux
ip = 192.168.56.102
tags = service, honeyd
options = nictrace noagent

reporting.conf配置文件,重要位置已标出。

[feedback]
enabled = no ### 启动

[jsondump]
enabled = yes
indent = 4
calls = yes

[singlefile]
enabled = no
html = no
pdf = no

[misp]
enabled = no
url = 
apikey = 
mode = maldoc ipaddr hashes url
distribution = 0
analysis = 0
threat_level = 4
min_malscore = 0
tag = Cuckoo
upload_sample = no

[mongodb]
enabled = yes ### 启用mongodb
host = 127.0.0.1
port = 27017
db = cuckoo ### 数据库名
store_memdump = yes
paginate = 100
username = cuckoo ### 账号
password = 1234567890-= ### 密码

[elasticsearch]
enabled = no
hosts =  127.0.0.1
timeout = 300
calls = no
index = cuckoo
index_time_pattern = yearly
cuckoo_node = 

[moloch]
enabled = no
host = 
insecure = no
moloch_capture = /data/moloch/bin/moloch-capture
conf = /data/moloch/etc/config.ini
instance = cuckoo

[notification]
enabled = no
url = 
identifier = 

[mattermost]
enabled = no
url = 
myurl = 
username = cuckoo
show_virustotal = no
show_signatures = no
show_urls = no
hash_filename = no
hash_url = no

启动Cuckoo

启动Cuckoo需要两个终端,一个终端启动cuckoo,另外一个终端启动cuckoo web runserver

cuckoo
cuckoo web runserver 0.0.0.0:8000

在这里插入图片描述
在这里插入图片描述
之后打开该web服务,在我的服务器的地址为http://192.168.109.206:8000/

在这里插入图片描述
在右上角的Submit提交文件,点击Analyze即可,现在就可以在执行cuckoo的终端查看到分析进度了,在Dashboard可以整体查看概览,也可以在Rencent中查看已经完成的任务。

在这里插入图片描述

另外在正常情况下在分析的时候$HOME/.cuckoo/storage/analyses会出现很多xxx.exe_xxx.dmp文件,可以使用crontab执行一些定时任务出来一下,例如我不需要则在存在时间大于6分钟的直接删除。

*/6 * * * * cd $HOME/.cuckoo/storage/analyses && find ./ -regex .*/memory/.*\.exe_  -mmin +6 -delete && find ./ -regex .*/memory/.*\.dmp  -mmin +6 -delete

参考

https://zh.codeprj.com/blog/a9f9bd1.html
https://cuckoo.sh/docs/introduction/community.html
https://blog.csdn.net/root__user/article/details/89251386
https://blog.csdn.net/qq_42569334/article/details/107212245

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习相关建议

1、开发机器学习系统或者优化的路径 训练数据量的增加对机器学习系统的影响增加特征集或减少特征集改变正则化参数尝试增加多项式特征 | 高偏差、欠拟合 | 高方差、过拟合 | | ------------------ | ------------------------------ | | 尝试增加多项式特征 | 尝试减少特征的数…

30-60K,转型云原生架构师和SRE需要哪些能力?

你好&#xff0c;我是王炜&#xff0c;欢迎和我一起学习云原生的核心技术。 先来简单介绍一下我自己吧。作为前腾讯云 CODING 架构师&#xff0c;现在深圳氦三科技的联合创始人&#xff0c;同时也是中国云原生社区深圳站的负责人&#xff0c;我见证了云原生在国内从萌芽到蓬勃…

【k8s完整实战教程6】完整实践-部署一个federated_download项目

系列文章&#xff1a;这个系列已完结&#xff0c;如对您有帮助&#xff0c;求点赞收藏评论。 读者寄语&#xff1a;再小的帆&#xff0c;也能远航&#xff01; 【k8s完整实战教程0】前言【k8s完整实战教程1】源码管理-Coding【k8s完整实战教程2】腾讯云搭建k8s托管集群【k8s完…

【算法的复杂度】

算法的时间复杂度和空间复杂度一、算法效率二、时间复杂度1. 时间复杂度的概念2. 大O的渐进表示法3. 常见时间复杂度计算举例三、空间复杂度一、算法效率 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏&#xff0c;一…

采用多种方式实现项目的查询多级缓存(六)

4.7.Nginx本地缓存 现在&#xff0c;整个多级缓存中只差最后一环&#xff0c;也就是nginx的本地缓存了。如图&#xff1a; 4.7.1.本地缓存API OpenResty为Nginx提供了shard dict的功能&#xff0c;可以在nginx的多个worker之间共享数据&#xff0c;实现缓存功能。 1&#xf…

【创建者模式】原型模式

文章目录优秀借鉴1、简介2、结构3、浅拷贝和深拷贝4、浅拷贝实现4.1、实现步骤4.2、结果分析5、深拷贝思路5.1、clone方法5.2、序列化与反序列化6、应用场景优秀借鉴 什么是原型模式&#xff08;Prototype&#xff09;&#xff1f;应用场景是什么&#xff1f; 【设计模式】原…

PointNN:一种无参数化的高效点云特征提取方法

前言 本文需要一些三维点云相关基础&#xff0c;非常适合深蓝学院修过相关课程的同学阅读。 点云处理从最早期的手工设计特征&#xff0c;到之后渐渐有一些深度学习的尝试&#xff0c;经历了 multi-view或者3D卷积等等的混沌时期&#xff0c;知道 pointnet 的横空出世&#x…

微服务治理框架(Istio)的认证服务与访问控制

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/130152887 一、认证服务 1.1、基于JWT的认证 在微服务架构下&#xff0c;每个服务是无状态的&#xff0c;由于服务端需要存储客户端的登录状态&#xff0c;因此传统的session认证方式在微服务中不再适…

分享:前端开发使用基于 ChatGPT 的各类 AI Copilot 辅助开发

前言 现在谁还没听过 ChatGPT&#xff0c;通没通网我不确定&#xff0c;但一定不是搞开发的 网上各种教注册OpenAI账号的、卖key的&#xff0c;然后就可以去各类基于ChatGPT api的插件、应用使用。但是这类都属于不合规的方式&#xff0c;这里不推荐 虽然因为种种原因&#x…

nuxt.js - 【最新】简单快捷的 element ui 组件库的主题色更改,批量统一覆盖替换解决方法,无需npm装包。(适用于新手小白的方法,很简单)

效果图 最新解决方案,简单便捷且不用npm安装任何第三方包就能搞定。 原来的主题色是蓝色 ,可以通过本篇博客提供的方法,统一变成其他主题颜色,比如下面的紫色: 下面就是真实的运行效果,保证可行~ 这样就不用每个组件单独去写样式覆盖颜色了! 定制主

【C++】STL理解【容器】

【C】STL理解【容器】 1. STL概念引入 长久以来&#xff0c;软件界一直希望建立一种可重复利用的东西&#xff0c;以及一种得以制造出”可重复运用的东西”的方法&#xff0c;从函数(functions)&#xff0c;类别(classes),函数库(function libraries),类别库(class libraries…

Python中的type与isinstance的区别

Python中的type()函数和isinstance()函数是两个常用的类型判断函数&#xff0c;它们可以用来判断变量的类型&#xff0c;接下来让我们一起来看一下它们的用法。type()函数type()函数用于获取一个变量的类型&#xff0c;它的语法是&#xff1a;type(变量)。调之后会返回变变量的…

关于修改压缩包内的文件(Excel...)内容的解决方法

关于修改压缩包内的文件&#xff08;Excel…&#xff09;内容的解决方法 前提&#xff1a; &#x1f4a9; 如果能在压缩前就修改完成就不需要修改压缩包内的文件 &#x1f4a9; 如果能在压缩前就修改完成就不需要修改压缩包内的文件 &#x1f4a9; 如果能在压缩前就修改完成…

通讯框架与Netty

一、网络通讯基础 1、OSI七层模型 2、一个域名底层是如何解析 浏览器访问域名&#xff0c;根据域名先从本地host文件C:\Windows\System32\drivers\etc\hosts文件 查找匹配对应的ip与域名&#xff0c;如果本地Host文件 没有的情况下&#xff0c;则联网去电信运营商查找。 3、什…

拉曼光谱的airPLS处理算法原理及MATLAB示例

一、拉曼光谱及airPLS算法 拉曼光谱被称作物质的“指纹谱”&#xff0c;能够表征分子的特征官能团&#xff0c;具有极高的特异性&#xff0c;在检测传感领域有极大的应用前景。但拉曼散射强度低&#xff0c;在实际的检测应用过程中还会受到噪声的影响。 为减少拉曼光谱中的…

程序员的“灵魂笔记本“:五款高效笔记软件推荐

大家好&#xff0c;我是 jonssonyan。作为一名程序员&#xff0c;我们经常需要记录和整理大量的代码、知识和项目信息&#xff0c;以便在日后能够高效地进行查阅和复用。而好用的笔记软件则成为了我们的"灵魂笔记本"&#xff0c;帮助我们提高工作效率。在这篇文章中&…

十一、存储技术基础

&#xff08;一&#xff09;独立磁盘冗余阵列RAID RAID级别 特点 需要磁盘 磁盘利用率 容错性 冗余性 热备盘选项 典型应用 RAID0 条带 2 全部 无 无 无 无故障的迅速读写&#xff0c;要求安全性不高&#xff0c;如图形工作站等 RAID1 镜像 2 50% 有 复制…

代码随想录_二叉树_leetcode112、113

leetcode112 路径总和 112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返…

【血泪建议】软件测试岗位现状,可惜之前没人告诉我,肠子都晦青了....

谈到现状&#xff0c;国内的软件测试行情目前呈现了两极分化的极端情况。 一个是早期的手工测试人员吐槽工作不好做&#xff0c;即使有工作也是外包&#xff0c;而且薪资太低&#xff1b;一方面是很多互联网企业感叹自动化测试人才难找&#xff0c;有技术的自动化测试工程师&a…

Linux中执行命令

目录 一、命令格式 二、查看命令帮助 三、date命令 四、timedatectl命令 五、查看目录下的文件&#xff1a;ls&#xff08;list&#xff09; 一、命令格式 命令格式&#xff1a;主命令 选项 参数&#xff08;操作对象&#xff09; 命令分为两类&#xff1a; 内置命…