zoukankan      html  css  js  c++  java
  • 20199324 2019-2020-2 《网络攻防实践》第9周作业

    作业说明

    • 这个作业属于哪个课程:课程链接
    • 这个作业的要求在哪里:作业要求链接
    • 我在这个课程的目标是 :学习网络攻防相关技术并进行实践
    • 这个作业在哪个具体方面帮助我实现目标:学习恶意代码安全攻防,提高对恶意代码逆向工程分析技术的知识,并提高逆向工程分析的方法、工具和技术

    作业正文

    1.实践内容+知识点总结

    恶意代码基础知识

    恶意代码定义与分类

    • 恶意代码:使计算机按照攻击者的意图执行以达到恶意目的的指令集。
    • 类型

    计算机病毒

    • 计算机病毒基本特性
      • 感染性:指的是计算机病毒具有吧自身复制到其他程序中的特性。
      • 潜伏性:计算机病毒一旦感染目标程序后,一般情况下除了感染外,并不会立即进行破坏行为,而是在系统中潜伏。
      • 可触发性:在满足特定的触发条件后,激活其感染机制或破坏机制。
      • 破坏性:在触发后会执行一定的破坏性动作来达到病毒编写者的目标。
      • 衍生性:计算机病毒的编写者或者其他了解此病毒的人可以根据其个人意图,对某一个已知的病毒程序作出修改,从而衍生出另外一种或多种病毒变种。
    • 计算机病毒的感染及引导机制
      • 可执行文件
        • 前缀感染机制:指的是病毒将自身复制到宿主程序的开始;
        • 后缀感染机制:指的是病毒将自身复制到宿主程序的末端;
        • 中间插入感染机制:指的是病毒在感染宿主程序中能把它拦腰折断,把病毒代码放在宿主程序的中间。
      • 引导扇区:通过BIOS定位到磁盘的主引导区,运行存储在那的主引导记录,主引导记录接着从分区表中找到第一个活动分区,然后读取并执行这个活动分区的分区引导记录,而分区引导记录复制装载操作系统。
      • 支持宏指令的数据文件:目前许多流行的数据文件格式支持在数据文件中包含的一些执行代码,使得应用软件在打开这些数据文件时自动执行所包含的代码从而完成一些自动化数据处理的功能。
    • 计算机病毒的传播机制:包括移动存储、电子邮件及下载、共享目录等。

    网络蠕虫

    • 定义:是一种它能够给网络自主传播的恶意代码。出现相对于计算机病毒、木马、后门来说比较晚,但是传播速度、传播范围和破坏程度都是以往的恶意代码无法比拟的。
    • 基本特性
    • 组成结构
      • 弹头:为了侵占一个目标系统,蠕虫必须首先获得计算机的访问权,它可以使用一些渗透攻击代码作为“弹头”,侵入目标系统,为了能够占领更多的系统,蠕虫可以利用目标系统尽可能多的安全漏洞实施攻击。
      • 传播引擎:在通过“弹头”获得目标系统的访问权之后,蠕虫必须传输自身复制样本到目标系统上,一些蠕虫能够在弹头攻击的通道中同时装载全部代码。传播引擎通常利用的网络传输机制包括文件传输协议FTP、小文件传输协议TFTP、超文本传输协议HTTP,服务信息块协议SMB以及原始SOCKET套接字。
      • 目标扫描算法和扫描引擎:一旦蠕虫在受害计算机中运行,目标选择算法开始寻找新的攻击目标,然后利用扫描引擎扫描每一个由目标选择算法确定的地址,确定其是否可以被攻击。
      • 有效载荷:蠕虫的有效载荷就是附加的攻击代码,为攻击者在目标系统上执行一些特殊目的的操作。除了没有有效载荷的蠕虫之外,其他蠕虫常常携带的有效载荷有植入后面、安装分布式拒绝服务攻击代理、组建僵尸网络等等。

    后门与木马

    • 后门:是允许攻击者绕过系统常规安全控制机制的程序,能够按照攻击者自己的意图提供访问通道。提供对受害计算机远程控制的任何程序或受害计算机上的远程命令解释器应该被视为后门。
      • 为攻击者提供的不同类型的访问通道:
        • 本地权限提升和本地账号;
        • 单个命令的远程执行;
        • 远程命令解释器访问;
        • 远程控制GUI;
        • 无端口后门。
    • 木马:是特洛伊木马的简称,指一类看起来具有某个有用或善意目的,但实际上掩盖着一些隐藏恶意功能的程序。如果将后门工具伪装成良性程序才具备真正的木马特性。

    僵尸程序与僵尸网络

    • 僵尸网络:在网络蠕虫、特洛伊木马、后门等传统恶意代码形态的基础上发展融入而产生的一种新型攻击方式。
    • 功能结构
    • 工作机制
    • 命令和控制机构:主要分为三大类
      • 基于IRC协议的命令和控制机构
      • 基于HTTP协议的命令和控制机构
      • 基于P2P协议的命令与控制机构。

    Rootkit

    • 这是一种技术更加高超的恶意代码形态。能够通过控制目标计算机操作系统的关键组件,来为攻击者提供强有力的手段,来获取访问并隐藏在系统中。
    • 定义:一类特洛伊木马后门工具,通过修改现有的操作系统软件,使攻击者获得访问权并隐藏在计算机中。
    • 分类:用户模式Rootkit、内核模式Rookit

    恶意代码分析方法

    • 代码分析:又称程序分析,是按需求使用的一定的规则、方法和工具对计算机程序进行分析,以推导出其程序结构、数据流程和程序行为的处理过程。
    • 恶意代码分析技术的方法
      • 静态分析:在不实际执行软件代码情况下对恶意代码进行自动化或辅助分析,通常包括使用反病毒引擎扫描识别已知的恶意代码家族和变种,逆向分析获取恶意代码的关键程序信息、模块构成、内部数据结构和关键控制流程。主要技术手段:反病毒软件扫描、文件格式识别、字符串提取分析、二进制结构分析、反汇编、反编译、代码结构与逻辑分析、加壳识别和代码脱壳。
      • 动态分析:通过在受控环境中执行待分析的目标恶意代码,并利用系统、网络、甚至指令层次上的监控技术手段,来获取目标代码的行为机理和运行结果。主要技术手段:快照比对、系统动态行为监控、网络协议栈监控、沙箱、动态调试。

    2.实践过程

    动手实践:恶意代码文件类型识别、脱壳与字符串提取

    实践任务:对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:

    1. 使用文件格式和类型识别工具,给出rada恶意码样本的文件格式、运行平台和加壳工具。
    2. 使用超级巡警脱壳机等脱壳软件,对rada恶意代码样本进行脱壳处理。
    3. 使用字符串提取工具,对脱壳后的rada恶意代码样本进行分析,从中发现rada恶意代码的编写作者是谁?
    • 在cmd中切换到恶意程序所在的目录,使用 file 命令查看 RaDa.exe 的文件类型,可以看到 RaDa.exe 是一个 Windows PE 可执行文件,并且有图形化窗口:

    • 其中 PE32 表示这是一个32位的运行在windows操作系统上的程序, GUI 表示这个程序是一个有图形界面的程序, intel 80386 表示处理器架构.

    • 使用 PEiD 工具查看 RaDa.exe 的基本信息

      PEiD是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳

    • 这里可以看到文件的入口点、偏移、文件类型、EP段、汇编程序以及加壳类型(UPX壳)

    • 使用 strings RaDa.exe 命令查看 RaDa.exe 中可打印字符串

    • 这里出现乱码的原因是因为文件被加壳,正常字符无法显示,所以下一步是我们要进行脱壳

    • 使用超级巡警工具对文件进行脱壳,该工具有这个壳的样本库,可以自动脱壳,省去了手工脱壳的麻烦,并在恶意程序同目录下生成了一个脱壳以后的程序

    • 再用 strings RaDa_unpacked.exe 查看脱壳后的RaDa.exe,可以看到产生大量函数调用名以及其他有用字符串,但是并未查找到作者信息。

    • 打开监视工具 process explorer,这是进行进程监控的一个程序,当打开这个工具,同时运行恶意程序,在进程监控里点击该恶意程序,右键选择 Properties 查看详细信息,发现恶意程序的作者信息,是Raul siles和David Perze于2004年编写的:

    动手实践:分析Crackme程序

    实践挑战:使用IDA Pro静态或动态分析 crackme1.execrackme2.exe ,寻找特定的输入,使其能够输出成功信息。

    • 首先使用 file 命令来分析该恶意程序的大概信息,切换到恶意程序所在目录,分别执行 file crackme1.exefile crackme2.exe 来查看两个文件信息:
    • 可以看到这两个文件均为windows系统下运行的32位可执行程序,没有图形界面,是命令行程序。

    对 crackme1.exe 进行分析

    • 在cmd中尝试运行该程序,试探其输入格式。
    • 可以发现,在接受1个参数时,程序的反馈与众不同,所以先猜测该程序接受一个参数。
    • 接着我们使用 IDA pro 工具来打开 crackme1.exe 进行分析,选择文件类型为PE。通过 Strings 页面可以查看到该程序中出现的明文字符串,发现了刚刚测试之外的两个字符串 I know the secretYou know how to speak to programs, Mr.Reverse-Engineer 。猜测前者是我们需要的口令,后者是输入口令正确时程序的反馈信息。
    • 验证一下,上面的猜测正确:
    • 接着看函数调用图(Function Call),view——.graphs——>function calls
    • 可以得出结论:程序是用 C 语言写的,可以发现字符串比较函数 strcmp 和输出函数 fprintfprintf ,估计是使用 strcmp 函数来比较口令
      的。那么关键部分就在 sub_401280 函数中。
    • 打开 sub_401280函数的流程图,

    • cmp [ebo+arg_0],2 为判断程序是否有两个参数。如在命令行输入 crackme1.exe 1 ,那么参数对应的值为 argc=2,argv={”crackme1.exe”,”1”} 。如果有两个参数,那么进行下一步判断,程序用 I know the secret 对应的字符串和用户输入的口令相比较,通过比较的结果反馈口令是否正确。

    对 crackme2.exe 进行分析

    • 直接使用 IDA pro 工具来打开 crackme2.exe 进行分析,可以看到明文字符串如下:
    • 再来看函数调用图,发现核心函数还是 sub_401280
    • 主要查看 sub_401280
    • cmp [ebp+arg_0],2 判断程序参数是否为两个;通过参数个数的判断后,接着用strcmp函数对argc里面的第一个字符串,即程序名,和 crackmeplease.exe 进行判断:
    • 通过程序名判断后,用户输入的口令与 I know the secret 判断。
    • 通过口令判断后,通过一定规则输出通过测试的信息。具体是 unk_403080 中的字符串分别与0x42h进行异或运算。
    • 进行测试:

    样本分析实践:分析一个自制恶意代码样本rada

    任务:分析一个自制的恶意代码样本,以提高对恶意代码逆向工程分析技术的知识,并提高逆向工程分析的方法、工具和技术。深入分析二进制文件,并获得尽可能多的信息,包括它是如何工作的,它的目的以及具有的能力,最为重要的,请展示你获取所有信息所采取的恶意代码分析技术。

    • 使用 md5sum 命令对该恶意程序进行摘要信息分析,得到md5摘要值为 caaa6985a43225a0b3add54f44a0d4c7

    • 然后和上面的实践一样,获取文件类型,检测壳,以及脱壳

    • 和前面的实践一样,打开之前用过的监视工具 process explorerwireshark 开启监听,并运行恶意程序RaDa.exe,分析其程序运行详细信息:

    • 通过HTTP协议请求 10.10.10.10RaDaRaDa_commands.html ,连接到目标为10.10.10.10的主机下的一个名为RaDa_commands的网页,之后又下载和上传文件到 C:/RaDa/tmp

    • 将文件 RaDa.exe 复制到了 C:RaDain 目录下,可以看出该恶意代码将其自我复制到主机系统盘,并激活了自启动,还试图从一个HTML页面获取并解析命令,故猜测这应该是一个后门程序。往下看可以发现该恶意程序对主机实行了DDos拒绝服务攻击(不确定,猜测)

    • 再往下看可以发现该恶意程序对主机的注册表进行了读写和删除操作。

    • 再往下看可以看到一些指令,exe 在宿主主机中执行指定的命令, get 下载, put 上传, screenshot 截屏, sleep 休眠。

    • 使用wireshark进行分析:

    • 可以看到受害主机向目标主机 10.10.10.10 发送了大量的数据包

    • 感觉上面的分析不太全面具体,再打开 IDA Pro 进行简单分析,首先查看字符串 string ,string里把unicode选中查看字符串。这时可以查看到很多的字符串:

    • 点击这些字符串就可以找到调用的函数。如 --authors 查阅资料发现这个参数的作用是:如果确认不是在VMware的虚拟机中运行,则显示样本的作者;否则显示参数不存在。进入调用函数:

    • 看一下VMware tools这个是啥意思,双击选中的字符串进行定位:

    • 发现其调用函数 sub_404FB0,这个函数中,这个字符串被拷贝到变量 dword_40C070 中,搜索到这个变量对应的函数是 sub_40AAA0


    • 查看函数 sub_40AAA0 流程图,这个函数首先进行网卡配置信息的查询,然后确认 dword_40C070 对应的字符是否存在,若存在则判断vmware tools是不是在注册表里面。

    • 可以发现这只是作者为了防止通过参数得到作者信息的手段。

    1. 提供对这个二进制文件的摘要,包括可以帮助识别同一样本的基本信息。

      • MD5摘要信息: caaa6985a43225a0b3add54f44a0d4c7
      • 是一个 Windows PE 可执行文件
      • 使用了UPX加壳工具进行了加壳处理,加壳方式 UPX 0.89.6 - 1.02 / 1.05 - 2.90 -> Markus & Laszlo
    2. 找出并解释这个二进制文件的目的。

      • 通过上面的分析可知,连接互联网时,该恶意程序就会通过http请求连接到指定主机,进行接受攻击者指令操作,并且攻击者可以完全控制该系统,所以这应该是一个后门程序。
    3. 识别并说明这个二进制文件所具有的不同特性。

      • 该程序启动之后将自己复制到c盘之中,并且每过一段时间就会尝试与10.10.10.10建立tcp连接。
    4. 识别并解释这个二进制文件中所采用的防止被分析或逆向工程的技术。

      • 使用了UPX加壳工具进行了加壳处理
    5. 对这个恶意代码样本进行分类(病毒、蠕虫等),并给出你的理由。

      • 猜测是后门程序,因为该恶意代码不具有自主传播模块,故不属于病毒和蠕虫,也并未进行伪装,故不是木马,并且该程序执行需攻击者远程发送指令。
    6. 给出过去已有的具有相似功能的其他工具。

      • Bobax——2004也是使用HTTP协议从指定的服务器下载命令文件,然后解析并执行其中的指令。
    7. 可能调查出这个二进制文件的开发作者吗?如果可以,在什么样的环境和什么样的限定条件下?

      • 可以,恶意程序的作者信息,是Raul siles和David Perze于2004年编写的。

    取证分析实践:Windows 2000系统被攻破并加入僵尸网络

    任务:分析的数据源是用Snort工具收集的蜜罐主机5天的网络数据源,并通过编辑去除了一些不相关的流量并将其组合到了单独的一个二进制网络日志文件中,同时IP地址和其他特定敏感信息都已经被混淆以隐藏蜜罐主机的实际身份和位置。回答下列问题

    1. IRC是什么?当IRC客户端申请加入一个IRC网络时将发送哪个消息?IRC一般使用哪些TCP端口?

      • IRC是Internet Relay Chat的英文缩写,中文一般称为互联网中继聊天。IRC的工作原理非常简单,您只要在自己的PC上运行客户端软件,然后通过因特网以IRC协议连接到一台IRC服务器上即可。它的特点是速度非常之快,聊天时几乎没有延迟的现象,并且只占用很小的带宽资源。
      • IRC是一种公开的协议,采用TCP和SSL协议。一个IRC服务器可以连接其他的IRC服务器以扩展为一个IRC网络。
      • IRC用户通过客户端软件和服务器相连。大多数的IRC服务器不需要客户注册登录,但在连接前必须设定好昵称(nickname)。IRC是一个分布式的客户端/服务器结构。通过连接到一个IRC服务器,我们可以访问这个服务器以及它所连接的其他服务器上的频道。IRC频道存在于一个IRC服务器上。一个频道类似于一个聊天室,频道名称必须以#符号开始,例如#irchelp。IRC机器人是一些运行在后台或者服务器上的程序,通过登陆某一个频道,分析接受到的内容并做出相应的动作。
      • 当IRC客户端申请加入一个IRC网络时,发送nickname。一般使用6667(6660~6669)端口。
    2. 僵尸网络是什么?僵尸网络通常用于干什么?

      • IRC语境下的僵尸网络是指IRC机器人连接成的IRC网络;采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络 。
      • 通常用于DDos攻击、分布式扫描、暴力密码破解等。
    3. 蜜罐主机(IP:172.16.134.191)与哪些IRC服务器进行了通信?

      • 由于IRC协议使用TCP连接,要找出与蜜罐主机通讯的IRC主机,可以利用建立TCP连接的三次握手过程进行分析。只需要找出蜜罐主机向哪些机器的IRC端口发送过SYN包,即可找出蜜罐主机试图通讯的IRC服务器。
      • IRC协议最常用的端口为6667,在WireShark中对日志文件进行分析,可以看到除了6667外其他端口上没有数据包,因此这里所有的IRC数据都使用的是6667端口。于是可以利用如下表达式过滤出蜜罐主机向6667端口发送的SYN包: ip.src == 172.16.134.191 and tcp.dstport == 6667 and tcp.flags.syn == 1
      • 共过滤得到21个tcp包,利用此表达式进行IP Address统计,得到如下结果:
      • 从上述结果中可以看到,蜜罐主机试图与5台机器进行联系,其中向 63.241.174.144217.199.175.10209.196.44.172 这三台机器发各送了一个SYN包,向 209.126.161.2966.33.65.58 这两台机器各发送了9个SYN包。
    4. 在这段观察期间,多少不同的主机访问了以209.196.44.172为服务器的僵尸网络。

      • 首先在wireshark中尝试利用 ip.src ==209.196.44.172 || ip.dst ==209.196.44.172 进行筛选,结果只有蜜罐主机:
      • 使用tcpflow分流(筛选指定host与端口),命令 tcpflow -r botnet_pcap_file.dat "host 209.196.44.172 and port 6667" ,可以看到产生了三个文件: 209.196.044.172.06667-172.016.134.191.01152172.016.134.191.01152-209.196.044.172.06667report.xml
      • 因为要找的是访问 209.196.44.172 的主机,故此处着重看第一个文件。
      • 使用以下代码对 209.196.044.172.06667-172.016.134.191.01152 这个文件进行筛选:
        cat 209.196.044.172.06667-172.016.134.191.01152 | grep "^:irc5.aol.com 353" | sed "s/^:irc5.aol.com 353 rgdiuggac @ #x[^x]*x ://g" | tr ' ' ' ' | tr -d "15" | grep -v "^$" | sort -u | wc -l
      • 这个指令是管道连接的,第一条是 cat 命令,连接209.输出文件。第二条 grep 搜索获取昵称输出行。第三条 sed 去除前缀,最后的 g 是全局的意思。第三条 tr 将空格转换为换行。第四条 tr -d 删除 。第五条 grep -v 就是NOT指令,去除空行。第六条 sort -u 排序并去除重复。最后一条 wc -l 输出行数。
      • 得到的结果:3089
    5. 哪些IP地址被用于攻击蜜罐主机?

      • 首先,我们认为进入蜜罐的流量都是攻击。使用以下命令查找端口并输出到 1.txt 中:tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | grep -v 'reply' | cut -d '.' -f 10 | cut -d ':' -f 1 | sort | uniq | more >1.txt; wc -l 1.txt ,其中 tcpdump -nn : 指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示; grep -v :排除指定字符串; cut -d '.' -f 10 :截取以'.'为分隔符的第 10 列; uniq 命令用于检查及删除文本文件中重复出现的行列; wc -l 用于统计文件的行数
      • 可以看到共有148个端口被攻击了:
      • 接着使用如下指令找出所有的可能连接的主机的IP地址。这个指令的作用就是将连接IP地址输出到2.txt中: tcpdump -n -nn -r botnet_pcap_file.dat 'dst host 172.16.134.191' | awk -F " " '{print $3}' | cut -d '.' -f 1-4 | sort | uniq | more > 2.txt;wc -l 2.txt (其中 awk -F 就是指定分隔符,可指定一个或多个, print 后面做字符串的拼接。)
      • 可以看到一共有165个主机被用于蜜罐入侵:
    6. 攻击者尝试了哪些安全漏洞?哪些攻击成功了?是如何成功的

      • 使用tcpdump命令找到攻击者扫描且蜜罐有响应的端口
      tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and tcp[tcpflags]== 0x12 | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq //TCP端口
      tcpdump -r botnet_pcap_file.dat -nn 'src host 172.16.134.191' and udp | cut -d ' ' -f 3 | cut -d '.' -f 5 | sort | uniq  //udp端口
      

      • 得到的TCP端口有 135(rpc)、 139(netbios-ssn)、 25(smtp)、 445(smb)、 4899(radmin)、 80(http) ;udp端口有 137(netbios-ns)
      • 逐个分析所用的端口,首先是 udp 137 号端口,这个是在局域网中提供计算机的IP地址查询服务,处于自动开放状态,所以访问这个端口肯定就是 NetBIOS 查点了。
      • 接下来看 tcp 135 号端口和 25 号端口,我们看到只是进行了连接,但是是没有数据传输,所以这攻击者可能是对这两个端口进行了 connect 扫描。
      • 查看 TCP 80 端口,首先利用 Wireshark 进行筛选 tcp.dstport==80 && ip.dst == 172.16.134.191 ,首先连接最多的就是 24.197.194.106 这个IP,他的行为就是不停的用脚本在攻击 IIS 服务器的漏洞,从而获取系统权限。
      • 接下来是 210.22.204.101 访问的80端口,攻击者是想通过缓冲区溢出攻击来获得一个命令行
      • 下一个访问 80 端口的是 218.25.147.83 ,这里会看到 c: otworm ,说明这是一个蠕虫攻击。上网搜索发现是红色代码(red code)病毒
      • 其余的 ip 地址均为正常访问蜜罐.
      • 通过蜜罐主机80端口向外的流量进行分析,发现蜜罐主机做的回应均为一个 iis 服务器的默认页面,所以80端口的这些攻击均失败。
      • 然后关注 TCP 139 号端口。这个也比较简单,虽然有很多主机连接到这个端口的,但是基本都是一样的,大部分都是连接,然后很多空会话,同样也没有成功,所以应该是SMB查点。
      • 然后分析 TCP 445 端口。这个端口连接非常多,可以看到许多 samr , srvsvc 字符串,查询字符串后很容易发现一个 PSEXESVC.EXE 字符串,是由 61.111.101.78 发起的,通过对这种字符串的搜索,发现这是一种Dv1dr32蠕虫,这种蠕虫正是通过IRC进行通信。
      • 找出口流量,发现每个IP地址连入的连接都有响应的回应,并且返回信息中含有 PIPE tsvcs,通过搜索可知,这是一个远程调用,所以攻击者肯定是获得了权限,因此这个攻击成功的。
      • 最后一个 TCP 4899 端口。只有 IP 地址 210.22.204.101 访问过。可以查到 4899 端口是一个远程控制软件 radmin 服务端监听端口,这个软件不是木马,应该是上面攻击成功后上传这个软件方便控制。

    3.学习中遇到的问题及解决

    • 问题1:虚拟机繁忙。。。。

    • 问题1解决方案:这个问题我已经操作得很熟练了,附上参考的链接

    • https://blog.csdn.net/cute_boy_/article/details/102211471

    • https://blog.csdn.net/huanglin6/article/details/103658104

    • 问题2:安装tcpflow出现如下问题:

    • 问题2解决方案:未解决

    • 问题3:由于问题二未解决,然后我准备换个虚拟机,用来VM下的Ubuntu,然后又出现了如下问题:

    • 问题3解决方案:未解决

    • 问题4:由于上一个问题还没有解决,我又换了一个虚拟机,在VB中打开Ubuntu,发现没有装wireshark,在安装的过程中,又。。。

    • 问题4解决方案:如下,还好这次可以

    sudo rm /var/cache/apt/archives/lock  
    sudo rm /var/lib/dpkg/lock  
    sudo rm /var/lib/dpkg/lock-frontend 
    

    4.实践总结

    这次实践真的太烧脑了,机器也不太给力,阅读课本根本不够写这个作业,通过上网搜索,以及参考孙启龙同学和解建国同学两位大佬的博客下才勉强完成,很多内容只是照着操作,对于背后的原理以及到底为什么要这样操作还是马马虎虎,期待上课的讲解。

    5.参考资料

  • 相关阅读:
    4.9cf自训9..
    数位dp-入门模板题 hdu2089
    熟能生巧 汽车停车入位技巧解析-倒车入库--侧边停车
    MyBatis参数传入集合之foreach动态sql
    jquery如何判断checkbox(复选框)是否被选中
    Mybatis关联查询(嵌套查询)
    Mysql 分页语句Limit用法
    $.ajax返回的JSON格式的数据后无法执行success的解决方法
    JavaWeb学习总结(十二)——Session
    Spring MVC中Session的正确用法之我见
  • 原文地址:https://www.cnblogs.com/yangdd/p/12795929.html
Copyright © 2011-2022 走看看