20211906 2021-2022-2 《网络攻防实践》第七周作业
1.实践内容
1.1 Linux操作系统基本框架概述
Process Scheduler:进程管理或进程调度,负责管理CPU资源,以便让各个进程可以尽量公平的方式访问CPU;
Memory Manager:内存管理,负责管理内存资源,以便让各个进程可以安全地共享机器的内存资源,内存管理还提供虚拟内存的机制,可以让进程使用多余物理内存大小的内存,即不用的内存通过文件系统保存在外存中,而需要使用的时候则加载到内存中;
VFS(Virtual File System):虚拟文件系统,Linux将不同功能的外围设备(比如硬盘/磁盘、输入输出设备、显示设备等)抽象为可以通过统一的文件操作接口(比如open、read、write、close)来访问,这就是Linux系统“一切皆是文件”的体现;(但是并不彻底,因为CPU、内存、网络等还不是文件)
Network:网络子系统,负责管理熊的网络设备,实现多种多样的网络标准;
IPC:进程间通信,IPC不管理任何的硬件,仅仅是负责Linux系统中的进程间通信;
Linux系统进程和线程管理机制
传统上UNIX操作系统下运行的应用程序、服务器及其他程序都称为进程。每个进程都在CPU的虚拟内存中分配地址空间。各个进程的地址空间是完全独立的。Linux是多任务系统,支持并发执行的若干进程。
Linux的文件系统管理机制
Linux内核使用了虚拟管理VFS机制,可支持数十种不同类型的逻辑文件系统
Linux的设备控制机制
Linux内核中处理或者管理硬件控制器的软件叫做设备驱动程序,本质上是特权的、驻留内存的低级的硬件控制例程的共享库。
Linux的网络机制
Linux的系统调用机制
Linux提供系统调用接口,来允许应用程序通过这层的接口访问硬件设备和其他系统资源
Linux系统的系统调用通过软中断来实现
1.2 Linux操作系统安全机制
Linux身份认证机制
用户:是Linux身份认证的主题,按照不同的角色类型具体分为以下三类:Root根用户、普通用户和系统用户
Linux用户组:具有相同特征的用户账户集合,用于简化整个系统的用户权限管理。
登录认证机制:Linux通过init进程执行启动getty产生若干个虚拟控制台,每个控制台执行login进程执行认证过程,认证通过之后,login进程会fork响应的Shell子进程,至此完成登录过程。再这个过程中,使用带salt的密文保存密码,加密算法为若干种加密算法的选择。
Linux的远程登录认证机制:第一种是基于口令的身份认证机制;第二种是基于非对称密码的身份认证机制。此外Linux系统中的大量网络服务都实现了自己的身份认证机制,如MD5散列、LANMAN\NTLM散列算法等等。
PAM: Linux统一身份认证中间件。PAM的核心部分是库(libpam)和PAM模块的集合,它们是位于文件夹/lib/security/中的动态链接库(.so)文件,以及位于/etc/pam.d/目录中的各个PAM模块配置文件。PAM为认证任务提供四种可用的模块接口。
Linux授权与访问控制机制
Linux通过上文提到的VFS虚拟文件系统来实现对不同类别文件系统格式的支持,
文件所有者:使用文件所有者的uid和gid来指明文件的所有者,在用户创建文件的时候自动进行写入。
文件访问权限:文件访问权限通过附带的10个标志位来来进行设置。 第一位表示文件类型,二至九位每三位分成一组。组内三位分别表示,读取权限、写入权限和执行权限。三组分别代表所有者、所有组和所有用户。
特殊执行权限:设置了SUID或SGID的文件。SUID允许执行文件在运行时刻从运行者的身份提升至文件所有者权限。SGID与SUID类似,仅仅是以权限组的形式进行运行。
不足及改进:访问权限的细粒度不足,不支持完整的ACL访问控制列表设置。
Linux安全审计机制
三个日志子系统:连接时间日志、进程统计日志和错误日志纪录。
1.3 Linux系统远程攻防技术
Linux远程口令字猜测攻击
通过前面提到的服务嗅探用户账户名或者使用缺省内件账户的用户名进行密码猜测。
口令字猜测攻击通常针对使用弱口令的的账户破解。
除了SSH网络服务之外,还可以通过对HTTP/HTTPS、FTP等用于自己账户体系和身份认证机制的网络服务进行猜测。
口令猜测的常用工具如下:Brutus、THC Hydra、Cain and Abel等工具。
防御远程口令猜测技术
确保每个用户都有自己的有效账户和口令字,而不是使用一个账户。
特权账户应避免远程直接登录,只能在本地登录。
口令长度至少达到8位,包含字母、数字和标点符号。
对多次认证失败进行纪录,并在多次无效登录之后断掉连接
不要再自己登录的所有系统上都使用相同的口令字
并要笔录自己的口令字
使用基于公开密钥证书的身份认证机制。
修改网络服务的默认端口。
网络服务远程渗透攻击
Linux内核中的网络协议栈攻击
LAMP WEB网站中的网络服务攻击
FTP、Samba等文件共享服务
电子邮件收发服务
其他网络服务的攻击
1.4 Linux系统本地安全攻防技术
Linux本地特权提升:本地特权提升的三种常用方式:破解Root用户的口令、发掘su和sudo程序中的安全漏洞以及攻击用户态SUID特权提升漏洞和攻击Linux内核代码特权提升漏洞。
本地特权提升的防范措施:
在安装软甲的过程中评估风险
及时对服务器进行升级维护
安全的配置系统,设置强口令字,
使用SELinux等安全增强模块
Linux系统上的消踪灭迹
通过对message、auth、secure和xferlog等日志文件进行修改做到日志的清理
通过对.bahs_history文件的清理,清理shell的命令痕迹
2.实践过程
2.1使用Metasploit进行Linux远程渗透攻击
任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;
②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);
④设置渗透攻击参数(RHOST,LHOST,TARGET等);
⑤执行渗透攻击;
⑥查看是否正确得到远程Shell,并查看获得的权限。
攻击机kali:192.168.192.5
靶机Metasploitable:192.168.192.6
然后确定两者可以ping通。
在kali里启动Metaspolit作为渗透测试软件
输入search samba ,找到针对usermap_script安全漏洞的渗透攻击模块名称为8.exploirt/multi/usermap_script
通过命令use exploit/multi/samba/usermap_script使用渗透攻击模块。
然后输入show options
设置攻击的PAYLOAD为cmd/unix/reverse
设置攻击参数RHOST为靶机地址192.168.192.6,并通过run开始攻击
shell
通过id查看shell权限账户及其所在的权限组,故攻击成功
2.2实践作业:攻防对抗实践
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
防守方:使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
重复一次之前的实践用kali攻击靶机。这次打开wireshark进行监听
攻击者的IP地址192.168.192.5,端口44621;目标IP192.168.192.6,端口139
攻击利用了139端口漏洞。139端口属于TCP服务,在Unix中用于Samba服务。开启139端口虽然可以提供共享服务,但是常常被攻击者利用,以此获取用户名和密码。
还找到了我输入的命令ls
攻击过程:
首先攻击机向靶机发送一个SMB的Negotiate Protocol Request(协商协议请求)数据包
然后服务器响应一个SMB的Negotiate Protocol Response(协商协议响应)数据包
攻击机向靶机发起一个Session setup X request(会话设置请求)数据包
靶机确认身份后发送一个Session Setup X Response(会话设置响应)数据报同意本次连接。
3.遇到问题
问题:在攻击的时候 run的时候出了问题
解决方案:将靶机的网络连接模式改为NAT模式,就好了
4.参考资料
https://www.cnblogs.com/xiongjia/p/12728794.html
https://www.cnblogs.com/sunmoyi/p/12729516.html
https://blog.csdn.net/Birldlee/article/details/78914506
https://www.cnblogs.com/holyxp/p/9760084.html