TryHackMe 第4天 | Pre Security (三)

news2024/9/23 23:52:02

该学习路径讲解了网络安全入门的必备技术知识,比如计算机网络、网络协议、Linux命令、Windows设置等内容。过去两篇已经对计算机网络和网络协议进行了简单介绍,本篇博客将记录 Linux命令 部分。

Linux 系统的优点就是其轻量级,有些 Linux 系统为了达到更加轻量级的目的甚至没有 GUI (Graphical user interface,用户图形界面) 或者 桌面环境。因此与这种系统交互绝大一部分通过 Terminal (终端) 完成。

终端就是一个黑框框,和 Windows 上的 CMD 很像。

先介绍两个最基本的两个命令:echowhoami

echo 命令与编程语言的输出很像,都是直接输出内容

whoami ,直译过来意思是“我是谁”,的确该命令用于显示当前登录的用户

Linux Fundamentals Part 1

Interacting with the filesystem

在操作系统中,我们经常需要要对文件系统进行操作。对于文件系统,我们经常会用到下面几个命令:ls、cd、cat、pwd

ls 命令用于列出工作目录下的文件:

cd 命令用于进入另一个目录:

cat 命令用于输出文件内容:

pwd 命令用于展示当前工作目录的完整路径,pwd 是 print working directory 的缩写:

Searching for files

在与文件系统进行交互时,我们有时候会想去直接搜索某些文件。搜索文件常用如下两个命令:find、grep

find 命令用于在当前目录下寻找指定文件:

find 查找指定文件名文件

find 使用通配符查找文件

grep 命令用于搜索文件内容,查找需要的特定值:

Shell operators

在终端输入命令时,我们经常会用到几个操作符,这些操作符可以在一定程度上方便我们的工作:&、&&、>、>>

& 操作符允许我们将该命令置于后台执行。当我们需要复制一个大文件时,将其置于后台执行,我们就可以做其他事情了。

图上可以看出,当我们使用了 & 操作符时,系统会给我们返回该任务的进程号。

&& 操作符用于创建一个要运行的命令列表。例如我们可以构建一串命令 command 1 && command 2,当 command 1 被成功执行后,紧接着就会执行 command 2.

> 操作符被称为输出重定向器,它可以从运行的命令中获取输出,然后将输出发送到其他地方。

>> 操作符也是输出重定向器,它与 > 操作符的作用一样。二者不同之处在于,> 操作符会将输出覆盖,而 >>  操作符会把输出追加。下面进行举例对比:

如图所示,operatortest 文件中有一个数字 1。现在使用 > 操作符给该文件中写入内容,发现文件中的内容被覆盖:

此时再用 >> 操作符给该文件写入内容,发现内容追加到文件尾部:

Linux Fundamentals Part 2

Flags & switches

大多数命令都允许提供参数,在使用命令时除非另有说明,否则该命令将执行其默认行为。比如,ls 命令默认会列出工作目录的内容,但不会显示隐藏文件。所以我们可以使用 flags (标志) 和 switches (开关)来扩展命令的功能。

以 ls 命令为例,当我们输入 ls -a 时,输出结果多了一些文件和文件夹,其中以 . 开头的就是隐藏文件。

要想知道命令有哪些选项可供选择,则可以输入 --help 选项来查看:

实际上,通过 --help 输出的内容是 man (manual 的缩写) 页的格式化输出,其中包含 Linux 命令和应用程序的文档。下图就是 man ls 这一命令的输出结果:

Filesystem interaction continued

在前面我们已经知晓了部分文件系统相关的命令。接下来将继续介绍几个关于文件系统的命令,它们主要围绕者 增加、删除、移动 这些操作。

首先讲用于“增加”的命令:touch、mkdir

touch 命令用于创建一个新文件,mkdir 命令用于创建一个新文件夹

然后是用于“移动”的命令:cp、mv

cp 命令用于复制一个文件或文件夹。cp 命令需要两个参数,第一个参数是已存在文件的名字,第二个参数希望在复制后为新文件指定的名字。

mv 命令也需要两个参数,并且它不是复制或创建一个新文件,而是合并或修改我们作为参数提供的第二个文件。我们可以使用该命令将文件移动到不同文件夹下,也可以对文件进行重命名。

移动文件

重命名文件

接下来就是“删除”命令:rm 

想必大家或多或少都听过关于 rm -rf 的传奇故事,在此不过多赘述。它的使用示例:

实际上,通过上述图片可以发现,Linux 的文件系统默认是不显示文件扩展名的,这种情况下要推测文件用途和内容比较麻烦。因此我们需要一个命令来展示文件类型,这个命令就是 file:

上图中显示,当前目录下的 code 是一个文件夹类型。

Permissions

在使用 Linux 的过程中,我们会发现有时候某些用户无法访问一些文件或文件夹,这就是访问权限所导致的。

前面已经讲过命令的 flags 和 switches,在此我们可以使用 ls -lh 来查看关于当前目录下文件的更多内容。其中,-l 表示以长列表格式输出,-h 表示用便于人类阅读的形式展示:

在红圈圈起来的地方,有一串字符串。这串字符串声明了当前文件的访问权限:

  • read,可读,由 r 表示
  • write,可写,由 w 表示
  • execute,可执行,由 x 表示

最前面的 d 表示这是个文件夹,如果是个文件则使用 “ - ” 来表示。总结来说,这一串字符串的含义如下图所示:

此处引入了 属主 和 属组 的概念。在 Linux 中,用户是按组来分类的,一个用户可以属于一个或多个组。简单来说,属主 就是该文件的拥有者,属组 就是 属主 所在的组。如果一个用户既不是属主,也不在属组内,那他就是其他用户。一个文件的 属主 和 属组 也显示在了 ls -lh 的输出结果中。

用一张图总结:

Switching between users

既然不同用户有不同访问权限,那么有时候可能就会通过切换到对应的用户来获得相应权限。用户切换要使用命令:su

使用 su 命令时,需要事先知道:

  1. 我们要切换的用户的用户名
  2. 该用户的密码

su 命令也有许多 flags 和 switches 供使用。

Common directories

Linux 在根目录下有许许多多的文件夹,与 Windows 操作系统一样,它们各司其职。下面简要地介绍其中几个常见文件夹的用途。

  • /etc 目录。该目录是 Linux 中重要的根目录之一,它是存储操作系统使用的系统文件的常用位置。需要重点介绍的就是该目录下的 passwd 和 shadow 文件,这两个文件展示了 Linux 如何使用 SHA512 的加密算法来存储每个用户的密码。
  • /var 目录。“var” 是变量的缩写,该目录是 Linux 的主要根目录之一。该目录存储系统上运行的服务或应用程序经常访问与写入的数据。比如,服务和应用程序的日志文件会被写入该目录。
  • /root 目录。与 /home 目录不同,/root 是系统用户 root 的主目录。
  • /tmp 目录。“tmp” 是单词 “temporary” 的缩写,意为“临时”。该目录是 Linux 系统中一个独特的根目录,它是易失性的,如同电脑内存,一旦电脑重启,其中的内容就会被清除。因此该目录一般用于存储只需访问一两次的数据。由于该目录任何用户都能写入,所以在渗透测试中,一旦获取了访问机器的权限,就可以将脚本文件存于该目录下。

Linux Fundamentals Part 3

Text editors

之前对于文本编辑,我们只知道使用 echo 命令加 > / >> 操作符来将内容写入文件中。但是在处理多行文本和对文本内容进行排序时,这个方法就不能很有效地去处理了。因此,text editor (文本编辑器) 就有了用武之地。

Nano

Nano 非常容易上手,想使用 Nano 创建或编辑文件,只需要输入 nano + {filename} 即可。

使用 nano 后的页面

就如同 Windows 上的记事本,nano 的操作也很类似,且它还支持许多额外功能,都写在界面最底下。其中,^ 符号表示 Ctrl 键。因此假如我们想退出时,只需要按下 Ctrl + X 即可。

VIM

VIM 是一款更高级的文本编辑器。VIM 的优点有很多:

  • 可定制化,可以根据自己需要修改键盘快捷键。
  • 语法高亮,这对维护和编写代码很有用。
  • VIM 可在所有终端上运行,nano 不行
  • VIM 有许多教学资源可供学习和使用。

总而言之,VIM 可能难以入手,但熟悉后能极高地提升我们的 Linux 水平。

General/Useful utilities

Downloding files

计算机的一个基本功能就是传输文件,在 Linux 中,我们可以使用 wget 命令来借助 HTTP 协议从网页上下载文件,就如同在浏览器中访问文件一样。

假如我们知道一个资源所在的页面,那么我们就可以使用 wget + {文件所在页面} 即可下载。

Transferring files from your host

Secure copy (SCP,安全复制) 是一种安全复制文件的方法。与普通的 cp 命令不同,scp 命令允许用户使用 SSH 协议在两台电脑间传输文件,并提供身份验证和加密功能。

SCP 能让我们从当前主机上将文件复制到远程服务器上,反过来也可以。

使用 SCP 时,我们需要知晓远程服务器的用户名和 IP 地址。假设当前远程服务器的 IP 地址为 192.168.1.30,用户名为 ubuntu。现在我们本地有个叫 important.txt 的文件,我们想把它传输到远程服务器上,并重命名为 transferred.txt。那么所写的命令如下:

scp important.txt ubuntu@192.168.1.30:/home/ubuntu/transferred.txt

总结就是 scp {要传输的文件名} {远程服务器用户名}@{远程服务器 IP 地址}:{文件传输后的路径}

Serving files from your host

Ubuntu 系统预装了 Python 3,而 Python 提供了一个名为 HTTPServer 的轻量级易用模块,该模块能使你的主机变为一个快速、简便的 Web 服务器。我们可以借助这个服务器来提供自己的文件,其他主机可以通过 curl 或 wget 命令来将这些文件下载到它们的机器上。

HTTPServer 只为当前的工作目录提供服务。在确定工作目录后,当该目录下输入 python3  -m http.server 即可启动 Web 服务:

以上图为例,我在本地的 /home/wcy 路径下启动了一个小型的 Web 服务器。

这时其他主机就可以通过我们的 IP 地址下载文件(这里的其他主机我用的是另一个 terminal,所以后续的两个图片 IP 地址都是相同的):

可以看到本地主机也会返回出远程主机的访问记录:

HTTPServer 的缺点就在于,你必须事先知道要下载的文件的确切名称和位置才能获取。

Processes

进程是在机器上运行的程序,它们由内核管理,每个进程都有一个与之相关的 ID,叫做 PID。PID 会按照进程启动顺序递增。

Viewing processes

在 Linux 中,可以使用 ps 命令查看用户会话中正在运行的进程列表和一些其他信息,比如进程的状态代码、运行进程的会话、使用 CPU 的时间和正在执行的实际程序:

若要查看其他用户运行的进程不在会话中运行的进程(比如系统进程),则需要使用 ps aux 命令:

另一个有用的命令是 top 。该命令可以提供系统上运行进程的实时统计数据,这些数据会每 10 秒刷新一次:

Managing processes

我们可以发送终止某个进程的命令,这个命令就是 kill 命令。该命令有多种类型的终止信号可用于终止进程,具体选择取决于内核处理进程的“干净”程度。

简单介绍其中最常用的:

  • SIGTERM,-15,杀死进程,但允许它先执行一些清理任务。
  • SIGKILL,-9,杀死进程,但事后不做任何清理。
  • SIGSTOP,-19,停止/暂停进程。
Getting processes/services to start on boot

对于有些应用程序我们希望它能在系统启动时启动,比如 Web 服务器、数据库服务器、文件传输服务器等。用于配置开机自启的命令为 systemctl。它的格式为 systemctl {选项} {服务名}。

其中,比较常用的选项为如下四种:

  • start,启动服务
  • stop,停止服务
  • enable,开机自启服务
  • disable,关闭开机自启
Backgrounding & foregrounding

在 Linux 系统中,进程可以在两个状态下运行:后台和前台。

前面我们学到,可以使用 & 操作符使命令后台执行。除此之外,我们还可以使用 Ctrl + Z 把正在执行的命令进行“暂停”并丢到后台。

而不管是使用了 & 操作符还是使用 Ctrl + Z 将进程置于后台后,我们都可以使用 fg 命令使居于后台的进程置于前台执行:

Maintaining your system

Automation

用户可能会希望在某段时间内,系统会自动执行安排的某项操作或任务,比如运行命令、备份数据或启动程序等。

这个可以通过 crontab 来实现。Crontab 是系统启动时会自动启动的进程之一,负责管理 cron 作业。

图上的 crontab 是一个特殊文件,其格式会被 cron 进程识别,以逐步执行每一行。Crontab 有 6 个设定值:

  • MIN,在哪分钟执行
  • HOUR,在哪小时执行
  • DOM,在每月哪一天执行
  • MON,在每年哪一月执行
  • DOW,在每周哪一天执行
  • CMD,要执行的命令

写在 crontab 文件中的指令格式如下图所示:

我们可以使用 crontab -e 来编辑 crontab 文件,编辑完内容后保存,crontab 就创建了一个定时任务。

如上图所示,我们添加了一个每 12 小时执行一次的定时任务,它用于备份文件。

Package management

当开发者希望向社区提交软件时,他们会将其提交到 “apt 软件仓库”。如果获得批准,他们的程序和工具就会被广泛发布。

我们可以通过 ls 命令查看到当前操作系统的软件源。虽然操作系统供应商会维护自己的软件源,但我们也可以添加社区软件源。添加软件源需要依靠命令 add-apt-repository 来实现。

除了使用命令添加软件源外,还可以通过手动来添加/删除软件源。虽然安装软件可以通过软件包安装程序(如 dpkg)完成,但 apt 的好处在于:当我们更新系统时,我们添加的软件的软件源也会被检查更新。

下面是将 Sublime Text 添加到 Ubuntu 机器上的软件源的手动操作步骤:

  1. 为 Sublime Text 3 的开发人员添加 GPG 密钥并使用 apt-key 信任它。GPG (Gnu privacy guard) 密钥可以保证下载内容的完整性,这些密钥本质上是安全检查,表示这是由开发人员做出来的软件。假如密钥和系统信任的密钥或者和开发人员使用的密钥不一致,则软件无法下载。命令如下:wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
  2. 现在我们将密钥添加到了可信列表中,可以把 Sublime Text 3 的软件源添加到 apt 源列表中了。推荐为每个添加的第三方软件源都建立一个单独的文件:
  3. 在新创建的文件中添加 Sublime Text 3 的仓库地址:
  4. 添加完成后,就可以使用 apt-update 命令进行更新。更新完成后,就可以使用 apt install sublime-text 安装该软件了。

移除软件源就比较简单了,用命令添加的可以使用 apt-repository --remove ppa:{PPA_Name}/ppa 命令移除;手动添加的只需删除前面步骤中第 2 步创建的文件即可。删除后,要使用 apt remove {软件名} 来移除程序。

Logs

在前面我们知道 Linux 日志一般位于 /var/log 目录下,该目录包含了系统上运行的应用程序和服务的日志信息。

在日志目录下,我们需要重要关注的是 Web 服务器日志、登录失败的日志、防火墙日志等重要日志。如下图所示,就需要关注 Apache 日志、fail2ban (用于监控暴力尝试) 日志和用作防火墙的 UFW 服务日志。

这些服务和日志是监控系统健康状况和保护系统的好帮手。像 Web 服务器等服务的日志还会包含每个请求的相关信息,这使得开发人员或管理员可以诊断性能问题或调查入侵者活动。以上图中 Apache 服务器日志为例,我们需要重点关注 access log 和 error log:

当然,除了 Web 服务器日志以外,也有一些日志会存储有关操作系统如何运行以及用户执行的操作(比如身份验证尝试)的信息。

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

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

相关文章

通过spring-boot创建web项目

依赖的软件 maven 1. 官网下载zip 文件,比如apache-maven-3.9.9-bin.zip 2. 解压到某个盘符,必须保证父亲目录的名字包含英文,数字,破折号(-) 3. 设置环境变量M2_HOME, 并将%M2_HOME%\bin添加到windown…

Linux:Bash中的文件描述符详解

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Linux中的所有进程,都拥有自己的文件描述符(File Descriptor, FD),它是操作系统在管理进程和文件时的一种抽象概念。每个文件描述符由一个非负整…

2012-2019全球地表平均夜光年度数据

数据详情 2012-2019全球地表平均夜光年度数据 数据属性 数据名称:全球地表平均夜光年度数据 数据时间:2012-2019 空间位置:全球 数据格式:tif 空间分辨率:1500米 时间分辨率:年 坐标系:…

【自学笔记】支持向量机(3)——软间隔

引入 上一回解决了SVM在曲线边界的上的使用,使得非线性数据集也能得到正确的分类。然而,对于一个大数据集来说,极有可能大体呈线性分类趋势,但是边界处混杂,若仍采用原来的方式,会得到极其复杂的超平面边界…

高效高质量SCI论文撰写及投稿

第一章、论文写作准备即为最关键 1、科技论文写作前期的重要性及其分类 2、AI工具如何助力学术论文 3、研究主题确定及提高创新性 兴趣与背景:选择一个您感兴趣且有背景知识的研究领域。 创新性:选题和研究设计阶段如何提高学术创新性的方法。 研究缺…

FreeMarker 禁止自动转义标签-noautoesc

💖简介 FreeMarker 是一个用 Java 语言编写的模板引擎,它被设计用来生成文本输出(HTML 网页、电子邮件、配置文件等)。在 FreeMarker 中,默认情况下,当你在模板中输出变量时,如果这些变量包含 …

应用密码学第一次作业(9.23)

一、Please briefly describe the objectives of information and network security,such as confidentiality, integrity, availability , authenticity , and accountability The objectives of information and network security include: Confidentiality: Protecting se…

在线思维导图怎么制作?只需要台这些组合分析法!

思维导图经历了漫长的进化,现已成为信息组织、记忆和头脑风暴的重要工具。其制作方式主要有手绘和软件两种,随着互联网的发展,软件制作因其便捷性和易于保存逐渐占据主导。如今,在线工具使得用户能够免费创建思维导图。本文将以即…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Redis集群

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Redis集群 Redis 集群是一种分布式的 Redis 解决方案,能够在多个节点之间分片存储数据,实现水平扩展和高可用性。与传统的主从架构不同,Redis 集群支持数据自动分片、主节点故…

基于SpringBoot+Vue+MySQL的教学资料管理系统

系统展示 管理员后台界面 教师后台界面 系统背景 在当今信息化高速发展的时代,教育机构面临着日益增长的教学资料管理需求。为了提升教学管理的效率,优化资源的配置与利用,开发一套高效、便捷的教学资料管理系统显得尤为重要。基于SpringBoot…

通信工程学习:什么是MANO管理编排

MANO:管理编排 MANO:Management and Network Orchestration(管理和网络编排)在网络功能虚拟化(NFV)架构中扮演着至关重要的角色。MANO是一个由多个功能实体组合而成的层次,这些功能实体负责管理…

嘉宾云集旌城 只为大赛而来 2024ISGC国际烈酒(中国)大奖赛在德阳落下帷幕

秋高气爽、古蜀之源,迎来第六届国际烈酒(中国)大奖赛;五谷丰登、重装之都,齐聚百名国际烈酒大奖赛评委。 9月18日,由德阳市人民政府、国家葡萄酒及白酒露酒产品质量检验检测中心、上海合作组织多功能经贸平…

数据结构之图的遍历

文章目录 广度优先遍历深度优先遍历 广度优先遍历 广度优先遍历过程类似于二叉树的层序遍历,从起始顶点开始一层一层向外进行遍历 比如现在要找东西,假设有三个抽屉,东西在那个抽屉不清楚,现在要将其找到,广度优先遍历…

【第十二周】李宏毅机器学习笔记10:生成式对抗网络2

目录 摘要Abstract1.GAN is Still Challenging2.Evaluation of Generation2.1 Mode Collapse2.2.Mode Dropping2.3.Diversity 3.Conditional GAN4.Learning from Unpaired Data总结 摘要 本周主要学习了上周关于生成式对抗网络的剩余知识,了解了为什么 GAN 难以训练…

2024全球超模大赛(北京|山东|内蒙三城联动)顺利举办

近日,2024 全球超模大赛(北京|山东|内蒙)三城联动暨新国潮文化赛事主题发布会在紫薇美力集团国贸鲁采赋盛大举行。此次发布会旨在鼓励优质模特共同传播中国传统文化,让其在全球范围内绽放光彩,展现中国人的骄傲与风采&…

怎么开通GitHub Copilot?不会开通GitHub Copilot?一文看懂

GitHub Copilot 简介 GitHub Copilot 是由 GitHub 推出的一种人工智能编程助手,旨在帮助开发者更快速、更高效地编写代码。GitHub Copilot 是基于 OpenAI 的 GPT(Generative Pre-trained Transformer)模型开发的,它能够通过理解编…

艾迈斯欧司朗与小象光显联合发布全新uLED智能投影灯,打造多元、交互的智慧城市新视像

艾迈斯欧司朗今日宣布,艾迈斯欧司朗携手微型投影模块供应商小象光显在第二十五届中国国际光电博览会(以下简称:CIOE)期间联合发布全新uLED智能投影灯MLP3000。这款极具创新的uLED智能投影灯由小象设计,采用了艾迈斯欧司…

Linux高级I/O:多路转接模型

目录 一.常见的IO模型介绍二.多路转接I/O1.select1.1.函数解析1.2. select特点和缺点1.3.基于 select 的多客户端网络服务器 2.poll2.1.poll函数解析2.2.poll特点和缺点2.3.基于poll的tcp服务器 3.epoll3.1.系列函数解析3.2.epoll原理解析2.3.基于 select 的多客户端网络服务器…

石油高压胶管的种类和测量方法

关键字:石油高压胶管,高压胶管测径仪,高压胶管种类,高压胶管生产线, 高压钢丝缠绕胶管, 高压钢丝编织胶管,胶管测径仪,非接触测径仪, 石油高压胶管在石油行业中扮演着至关重要的角色,主要用于高压流体输送,特别是在矿井液压支架、油田开发、工程建筑等领…

文件(打开关闭读写) C语言

一、文件 二、打开文件 关闭文件 FILE *fopen(const char *path, const char *mode); 功能: 打开文件,获得对应的流指针数: "r" 只读方式,文件必须存在,不存在则报错 "r" 读写方式&…