20199126 2019-2020-2 《网络攻防实践》第8周作业

前言

这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/19attackdefense
这个作业的要求在哪里:https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10635
我在这个课程的目标是:学习网络攻防技术相关知识,掌握相关技能。
这个作业在哪个具体方面帮助我实现目标 :初步学习Linux操作系统安全攻防技术。

1.实践内容

1.1 Linux操作系统基本框架概述

1.1.1Linux系统结构

上图是Linux操作系统内核的总体结构,包括了

  • Linux进程与线程管理机制:Linux内核采用抢占式多用户进程(multiprocessing)模式,多个进程并发活动,由内核的进程管理模块来负责调度硬件资源进行使用。
  • Linux内存管理机制:Linux内存管理模块(MM)允许多个进程安全地共享物理内存区域。
  • Linux文件系统管理机制:VFS(Virtual File System)机制为用户进程提供了一组通用的文件系统调用系统,可以对不同文件系统中的文件进行统一的操作。
  • Linux设备控制机制
  • Linux网络机制

  • Linux系统调用机制:Linux的系统调用通过软中断实现。

1.2 Linux操作系统安全机制

1.2.1 Linux身份认证机制
  • Linux用户:包括Root根用户、普通用户、系统用户。

  • Linux用户组:具有相同特征的用户账号集合,用于简化整个系统的用户权限管理。

  • Linux 的本地登录用户认证机制

  • Linux 的远程登录用户认证机制

  • Linux 的统一身份认证中间件——PAM

1.2.2 Linux授权与访问控制机制

在Linux的虚拟文件系统安全模型中,主要通过文件所有者、文件访问权限和一些特殊权限位来进行系统的授权与访问控制。

  • 文件的所有者(ownership):在用户创建文件时,文件系统将自动设置新文件的所有者及其所在组,并自动地赋予文件所有者读/写的权限。
  • 文件的访问权限(access rights):包括读、写、执行权限。
  • 文件的特殊执行权限:常见的有SUID与SGID权限,SUID权限允许可执行文件在运行时刻从运行者身份提升至文件所有者权限;设置了SGID位的程序执行时是以所有者的组的权限进行运行,该程序就可以任意存取整个用户组能够使用的系统资源。
  • Linux访问控制机制的不足及改进:
    • 不足:无法做到更细粒度的权限控制
    • 改进:POSIX ACLs for Linux 内核补丁软件包能够帮助Linux内核实现ACL权限管理。
1.2.3 Linux安全审计机制

主要通过三个日志子系统来实现,包括:

  • 连接时间日志
  • 进程统计日志
  • 错误日志记录

1.3 Linux系统远程攻防技术

1.3.1 Linux远程口令字猜测攻击

较为流行的远程口令猜测工具包括:

  • Brutus
  • THC Hydra
  • Cain and Abel

针对远程口令猜测攻击的防御措施是通过严格的口令字管理制度和措施来保证使用不易猜测的强口令字,具体包括:

  • 确保每个用户都有自己的有效账户和口令字,而不是都使用一个Root特权账户来进行登录和管理,避免使用容易猜测的用户名
  • 对于特权账户应避免直接远程登录,而只能在本地登录,或使用普通账户登录之后进行su提升
  • 口令长度应至少达到8个字符,并包含字母、数字和标点符号:
  • 对多次认证失败进行记录,并在多次无效登录之后断掉连接:
  • 不要在自己可登录的每个系统上都使用相同的口令字:
  • 不要笔录自己的口令字,更不能将它告知他人:
  • 最好根本不用口令字,而使用基于公开密钥证书的身份认证机制。
  • 在非标准端口上运行容易遭受远程口令猜测攻击的服务,如SSH的标准端口为TCP22端口,可以将其配置在高于1024的任一个不在使用的动态端口上,就可以大幅度地减少遭受口令猜测攻击的可能;
  • 使用一些口令猜测攻击检测与防御软件,如DenyHosts、BlockHosts 和fail2ban等。
  • 使用Linux防火墙IPTables来限制SsH等易受远程口令猜测攻击网络服务的访问源入IP地址范围,来阻止非授权网络地址来访问这些服务。
1.3.2Linux网络服务远程渗透攻击
  • 针对Linux系统网络服务的远程渗透攻击
  • 针对Linux内核中网络协议栈实现中安全漏洞的攻击
  • 针对LAMP Web 网站构建解决方案中的网络服务攻击
  • 针对FTP、Samba 等文件共享服务攻击
  • 针对电子邮件收发服务攻击
  • 针对其他网络服务攻击

安全防范措施

  • 禁用所有不必要的网络服务
  • 尽量选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署
  • 及时更新网络服务版本
  • 使用xinetd、防火墙为Linux网络服务添加网络访问控制机制
  • 建立入侵检测与应急响应计划流程
1.3.3攻击Linux客户端程序和用户
  • 攻击Linux平台上的客户端程序
  • 攻击Linux系统用户
  • 针对客户端与用户攻击的安全防范措施
1.3.4攻击Linux路由器和监听器
  • 攻击Linux路由器与防火墙
  • 攻击监听器&入侵检测器

1.4 Linux系统本地安全攻防技术

1.4.1 Linux本地特权提升

常用方法:

  • 破解出Root用户的口令,然后执行su或sudu命令进行提升
  • 发掘并利用su或sudo程序中的安全漏洞
  • 攻击用户态SUID特权提升漏洞及攻击Linux内核代码特权提升漏洞
  • 利用系统中不当配置,从系统中搜索全局可写的敏感文件与目录位置并加以利用
1.4.2 Linux系统上的消踪灭迹

抹除Linux系统行为记录日志:

  • 改变当前活动的日志
  • 清除在shell程序中所输入的命令历史记录
  • 删除执行过的命令历史记录
1.4.3Linux系统远程控制后门程序

主要类型有:特洛伊木马化的系统程序、命令行后门工具、图形化后门工具。

2.实践过程

2.1 使用metasploit进行Linux远程渗透攻击

这个实践我在上一个博文的团队实践里做过了,这里就简单再过一遍。

1、打开msfconsole查找一下usermap_script攻击模块,use它。

2、show payloads查找一下能用的载荷,实践要求远程shell,这边没找到,就挑一个常用的反向reverse。

3、设置使用的payload,然后看一下options,要求为yes的填一填,RHOSTS为靶机地址,LHOST为本机地址。

4、run,可以看到攻击成功了,输入ls返回了文件目录

5、shell可以看到正确获得了,输入su提权可以看到成功获得root权限,之后就可以为所欲为了。

2.2 攻防实践

1、首先,nmap -sV 192.168.200.125看看目标靶机开放端口

2、然后去nessus查查靶机的漏洞,结果发现high的只有4个,其中两还就是Samba,其他的有Firefox的漏洞或者ssh的漏洞,metaploit不太好利用。

3、看看其他的,然后找到5432端口的postgresql的漏洞。

4、安照前面的攻击方法再来一遍

5、攻击完了后,同时开启的wireshark的监听的结束了,进行防守方分析。

6、首先跟踪下数据流,发现主要就这两。

7、可以看到二部分数据流,此时攻击已经成功,攻击机进行了lsshell甚至尝试获得root权限。那么第一部分可以认为攻击机正在对靶机发起攻击,看一下数据流的流向如下图。

8、结合第二部分的流向可以清楚看到是192.168.200.2针对192.168.200.125的5432端口发起的攻击。

9、由于运行在5432端口上的是postgresql服务,那么攻击机必定是利用服务相关漏洞发起攻击。

10、上图可以看到攻击机查询数据库版本,而靶机如实返回了版本号,甚至攻击机进行了删除,然后攻击机进行了注入

11、经过攻击机的注入之后,又进行了创建和替换函数,我们把它注入的内容经过base64解码,嗯。。看不懂,反正之后攻击机就获取了靶机的控制权。

12、然后攻击进行了shell连接,如下

13、对exec内容进行base64解码,得到如下,查询知是通过借用python的权限弹出具有高权限的窗口

14、攻击机尝试获取root权限,可惜没有成功

4.实践总结

虽然完成了实践,但是还是不少不完全理解的内容,需要进一步消化。

参考资料

posted on 2020-04-21 11:40  符原  阅读(128)  评论(0编辑  收藏  举报