本书不仅详细阐释了Linux操作系统的基础知识,包括文件系统、终端命令操作、文本操作、网络操作、软件管理、权限管理、服务管理、环境变量管理等,还扩展讲解了一些基础的bash和Python脚本编程技术,以及其他控制Linux系统环境所需的工具和技术,同时还提供了大量实践指导和练习。
如果你在黑客防御、网络安全和渗透测试的有趣旅程上刚刚起步,那么本书会是一个不错的开始。利用Kali Linux系统(一款高级渗透测试Linux发行版),你将学到使用Linux操作系统的基础知识,并获取控制Linux系统环境所需的工具和技术。
前 言
黑客攻防是21世纪网络安全面临的重要挑战之一。近年来,新闻报道的很多事件似乎也都在证明这件事情,例如网络罪犯窃取大量钱财、勒索蠕虫病毒肆虐、敌对势力互相影响选举结果、交战双方互相破解彼此的工具等。这些大都是黑客的“杰作”,而它们对日益数字化的世界所造成的影响才刚刚被察觉。
我接触或者共事过的网络安全人员可能有数万名,涉及Null-Byte网络社区以及政府的几乎每一个部门。通过这些经历我了解到,很多有远大抱负的网络安全人员对于Linux系统都毫无经验或了解甚少,而这种经验上的欠缺正是他们成为安全专家所面临的主要障碍。几乎所有“最好”的黑客工具都是在Linux系统中编写的,因此一些基本的Linux系统操作技能是成为专业网络安全人员的条件。我编写本书的目的正是帮助那些有远大抱负的网络安全人员克服这一障碍。
黑客攻防是IT行业内非常高深的领域。正因如此,从事网络安全工作需要对IT概念和技术有广泛而深入的理解,Linux系统正是其中最基本的一项。如果你想从事网络安全方面的工作,那么我强烈建议你在使用和理解Linux系统方面投入一定的时间和精力。
本书并不是针对资深网络安全人员或经验丰富的Linux系统管理人员而编写的。相反,本书的目标读者是那些在黑客攻防、信息安全和渗透测试领域刚刚起步的人。同时,本书不会对Linux系统或黑客攻防进行完整论述,而只是进行入门级介绍。本书从Linux系统的基本内容开始,扩展讲解了一些基本的bash和Python脚本编程技术。在适当的地方,我会尝试通过一些网络攻防实例来介绍Linux系统原理。
这里,我们将回顾一下信息安全领域白帽黑客行为的发展历程,并且详细介绍安装虚拟机的流程,以便读者能够在不卸载当前操作系统的情况下,在自己的系统上安装Kali Linux系统。
本书内容
在本书的前半部分,你将熟悉Linux系统的基本概念。
第1章将引领你熟悉文件系统和终端,并介绍一些基本命令。第2章将为你展示如何通过文本操作来对软件及文件进行查找、检查和修改。
第3章将介绍如何管理网络,包括网络扫描、查看连接信息以及隐藏网络和DNS
信息。
第4章将介绍如何添加、移除和更新软件,以及如何简化系统。在第5章中,你将学习如何通过文件和目录权限操作来控制访问,以及一些用来实现权限提升的技术。
第6章将介绍如何管理进程,包括启用和停止进程,以及分配资源来实现更高的控制权限。在第7章中,你将学习如何管理环境变量来实现最佳性能、便捷性乃至隐匿性,包括查找和过滤变量,更改PATH变量,以及创建新环境变量。
第8章将介绍bash脚本编程,这对于任何认真钻研的网络安全人员来说都是一项重要的技能。你将学习bash的基本内容,并创建一个脚本,用来对稍后将要进行渗透测试的目标端口进行扫描。
第9章和第10章将介绍一些的文件系统管理技能,教你如何对文件进行压缩和存档以保持系统洁净,如何复制整个存储设备,以及如何获取文件和已连接磁盘的相关信息。
本书后半部分将深入介绍黑客攻防的相关主题,从而针对相应的攻击进行有效的防御。在第11章中,你将了解黑客会如何利用和操控日志系统来获取目标活动信息,并且掩盖行踪。第12章将介绍三个核心Linux系统服务:Apache 网络服务器、OpenSSH和MySQL。你将学习创建一个网络服务器、构建一个树莓派侦察设备,并且学习数据库及其漏洞等相关内容。第13章将展示如何通过代理服务器、Tor网络、VPN连接和加密电子邮件来实现安全和匿名。
第14章将介绍无线网络的相关内容。你将学习基本的网络命令,之后将了解黑客会如何破解Wi-Fi接入点,如何探测并连接蓝牙信号,从而有效遏制这类攻击。
第15章将从内核工作原理以及黑客会如何利用Linux系统驱动的视角来深入剖析Linux系统本身。在第16章中,你将学习的调度技能,以实现脚本自动化。
第17章将讲解Python语言的核心概念,进而引导你学习如何编写两款网络安全工具:一个用于监控TCP/IP连接的扫描器和一个简单的口令破解器。
白帽黑客行为介绍
随着近年来信息安全行业的发展,白帽黑客行为呈现急剧增长的趋势。白帽黑客行为是指以发现脆弱性和改善安全性为目的而尝试对系统进行渗透测试的行为。
渗透测试
随着组织的安全意识越来越强,以及安全漏洞所导致的后果的严重性呈指数级增长,很多大型组织都开始考虑将安全服务承包出去。这些关键的安全服务之一就是渗透测试。从本质上来说,渗透测试就是以揭露一家公司网络和系统的漏洞为目的而进行的一次受委托的合法攻击。
一般来说,组织会先通过漏洞评估来发现其网络、操作系统和服务中的潜在漏洞。这里强调“潜在”,是因为这种漏洞扫描结果中会包含大量的误报(即所谓的漏洞实际并不存在)。而渗透测试人员的任务就是尝试对这些漏洞进行攻击或渗透测试。只有这样,组织才能知道漏洞是否真实存在,然后投入时间和金钱来修复真正的漏洞。
译者序
前言
第1章 基础入门 1
1.1 术语和概念介绍 1
1.2 Kali系统概览 2
1.2.1 终端 3
1.2.2 Linux文件系统 4
1.3 Linux系统基本命令 5
1.3.1 利用pwd命令查看当前位置 5
1.3.2 利用whoami命令查看当前登录
用户 5
1.3.3 在Linux文件系统中进行定位
导览 6
1.3.4 获取帮助 7
1.3.5 利用man命令查阅参考手册页面 8
1.4 查找 9
1.4.1 利用locate命令进行搜索 9
1.4.2 利用whereis命令查找二进制
程序 9
1.4.3 利用which命令在PATH变量中
查找二进制程序 9
1.4.4 利用find命令执行更强大的
搜索 10
1.4.5 利用grep命令进行过滤 11
1.5 文件与目录修改 12
1.5.1 创建文件 12
1.5.2 创建目录 14
1.5.3 复制文件 14
1.5.4 重命名文件 14
1.5.5 删除文件 15
1.5.6 删除目录 15
1.6 总结 15
第2章 文本操作 17
2.1 查看文件 17
2.1.1 获取文件头部内容 18
2.1.2 抓取文件尾部信息 18
2.1.3 标注行号 19
2.2 利用grep命令进行文本过滤 20
2.3 利用sed命令进行查找和替换 21
2.4 利用more和less命令查看文件 22
2.4.1 利用more命令控制显示 22
2.4.2 利用less命令显示和过滤 23
2.5 总结 24
第3章 网络分析与管理 25
3.1 利用ifconfig命令分析网络 25
3.2 利用iwconfig命令检查无线网络
设备 26
3.3 更改网络信息 27
3.3.1 改变IP地址 27
3.3.2 改变网络掩码和广播地址 27
3.3.3 伪造MAC地址 28
3.3.4 从DHCP服务器分配新IP地址 28
3.4 操控域名系统 29
3.4.1 利用dig命令测试DNS 29
3.4.2 改变DNS服务器 30
3.4.3 映射自身IP地址 31
3.5 总结 32
第4章 软件添加与删除 34
4.1 利用apt处理软件 34
4.1.1 搜索软件包 34
4.1.2 添加软件 35
4.1.3 删除软件 35
4.1.4 更新软件包 37
4.1.5 升级软件包 37
4.2 向sources.list文件中添加软件仓库 38
4.3 使用基于GUI的安装器 39
4.4 利用git安装软件 41
4.5 总结 41
第5章 文件与目录权限控制 43
5.1 不同用户类型 43
5.2 赋予权限 43
5.2.1 赋予单独一个用户所有权 44
5.2.2 赋予一个群组所有权 44
5.3 查看权限 45
5.4 更改权限 46
5.4.1 利用八进制记数法更改权限 46
5.4.2 利用UGO方法更改权限 48
5.4.3 为一个新工具赋予根执行权限 48
5.5 利用掩码方法设置更为安全的默认
权限 49
5.6 特殊权限 50
5.6.1 利用SUID赋予临时根权限 50
5.6.2 利用SGID赋予根用户群组权限 51
5.6.3 过时的黏滞位 51
5.6.4 特殊权限和权限提升 51
5.7 总结 53
第6章 进程管理 54
6.1 查看进程 54
6.1.1 通过进程名称进行过滤 55
6.1.2 利用top命令找到占用资源最多的
进程 56
6.2 管理进程 57
6.2.1 利用nice命令修改进程优先级 57
6.2.2 “杀死”进程 59
6.2.3 后台运行进程 60
6.2.4 将进程移至前台运行 60
6.3 调度进程 61
6.4 总结 62
第7章 用户环境变量管理 63
7.1 查看和修改环境变量 63
7.1.1 查看所有环境变量 64
7.1.2 查找特定变量 64
7.1.3 修改一个会话的变量值 65
7.1.4 永久修改变量值 65
7.2 修改shell提示符 66
7.3 修改PATH变量 67
7.3.1 向PATH变量中添加路径 67
7.3.2 替换PATH变量的方式 68
7.4 创建一个用户定义的变量 69
7.5 总结 69
第8章 bash脚本编程 71
8.1 bash速成 71
8.2 第一个脚本程序:"Hello,
Hackers-Arise!" 72
8.2.1 设置执行权限 73
8.2.2 运行HelloHackersArise 73
8.2.3 利用变量和用户输入来添加功能 74
8.3 你的第一个脚本:扫描开放端口 75
8.3.1 任务目标 76
8.3.2 一个简单的扫描器 76
8.3.3 改进MySQL扫描器 77
8.4 常见的内建bash命令 79
8.5 总结 80
第9章 压缩存档 81
9.1 什么是压缩 81
9.2 归档文件 82
9.3 压缩文件 83
9.3.1 利用gzip进行压缩 84
9.3.2 利用bzip2进行压缩 84
9.3.3 利用compress命令进行压缩 85
9.4 创建存储设备的逐位或物理副本 85
9.5 总结 86
第10章 文件系统与存储设备管理 88
10.1 设备目录/dev 88
10.1.1 Linux系统如何表示存储设备 89
10.1.2 驱动器分区 90
10.1.3 字符设备和块设备 91