zoukankan      html  css  js  c++  java
  • 20199133 2019-2020-2 《网络攻防实践》第八周作业

    这个作业属于哪个课程 《网络攻防实践》
    这个作业的要求在哪里 网络攻防第八周作业
    我在这个课程的目标是 学习和了解各类对Linux系统的攻击技术的原理和防范措施,进而维护Linux系统。
    这个作业在哪个具体方面帮助我实现目标 学习Linux系统框架、安全安全机制;使用metasploit软件对Linux系统进行远程渗透攻击;防守方使用wireshark软件获得攻击方的数据包,分析利用了哪种漏洞进行攻击。
    作业正文 见作业
    其他参考文献 见文末

    一.实践内容

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

    1.系统结构

    • 进程与线程管理机制:采用抢占式多用户进程模式,多个进程并发活动,由内核schedule进程调度函数来依据进程优先级来选择进程执行。

    • 内存管理机制:内存管理模块允许进程安全地共享物理内存区域,用户态如果要访问内核空间,必须通过系统调用或者中断。

    • 文件系统管理机制:使用了虚拟文件管理机制,能支持数十种不同类型的逻辑文件系统。通用的文件调用函数包括open、close、read、write等,可对不同文件进行统一操作。

    • 设备控制机:处理或管理硬件控制器的软件叫设备驱动程序,Linux支持三类硬件设备:字符设备、块设备、网络设备。

    • 网络机制:网络模块提供了对各种网络标准存取和各种网络硬件的支持;网络接口分为网络协议栈和网络驱动程序,下图是网络协议栈的结构图。

    • 系统调用机制:Linux的系统调用接口允许应用程序透过这些接口层来访问硬件设备和系统资源。

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

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

    • 身份认证机制:

      • 用户:root根用户、普通用户、系统用户
      • 用户组:具有相同特征的用户账号集合。
      • 本地登录用户认证机制:登录login进程通过Crypt()函数进行验证。
      • 远程登录用户认证机制: 现在Linux普遍使用SSH服务,有基于口令的身份认证和基于非对称密钥的身份认证。
      • 统一身份认证的中间件:PAM可插入身份认证模块,给不同的服务配置不同的认证方式,结构如下图。
    • 授权与访问控制机制

      • 文件所有者:每个Linux文件都拥有其所有者,创建文件时,文件系统会自动赋予文件所有者的读/写权限,chown命令可修改。
      • 文件的访问权限:R读写权限;W写入权限;X执行权限。
      • 文件的特殊执行权限:SUID权限允许可执行文件在执行时将运行者身份提升为所有者权限。
      • 访问控制机制的不足及改进:只能将用户分为所有者、所有者所在组、其他用户三种分配权限,无法做到更细度的权限控制。POSIX ACKLs for Linux内核补丁软件能够帮助实现ACL权限管理。
    • 安全审计机制
      安全审计机制主要通过三个日志子系统来实现。

      • 连接时间日志:由多个程序执行。管理员能追踪谁在何时登录系统。
      • 进程统计日志:当一个进程终止时,为每个进程往进程统计文件中写一个记录。
      • 错误日志记录:由通用的日志记录服务/var/log目录,常用日志文件如下所示:
    日志文件 [日志文件内容
    acct/pacct 记录用户命令
    aculog 记录MODEM的活动
    btmp 记录登录失败的记录
    lastlog 记录最近几次成功登录和最后一次失败的登录。
    sudolog 记录使用sudo发出的命令
    sulog 记录使用su发出的命令
    utmp 记录当前登录的每一个用户

    (三)远程攻防技术

    最长见的攻击技术有四种:远程口令字猜测攻击;网络服务远程渗透攻击;攻击Linux客户端和用户;攻击路由器和监视器。

    • 远程口令字猜测攻击:

      • Linux系统主要支持telnet、rlogin、rsh和SSH协议的网络远程控制,攻击者如果能通过网络协议远程猜测成功一组用户名和口令,那么就可远程登录到Linux系统上,获得本地访问权。
      • 防御措施:使用不易猜中的强口令字;对特权账户应避免远程登录,在多次无效登录后断开连接;最好不用口令字,用基于公钥的身份认证机制。
    • 网络服务远程渗透攻击:

      • 网络协议栈的实现:是每个网络服务依赖的基础平台,一旦这些代码具有远程执行的安全漏洞,那么开放任何网络服务都将会被渗透攻击。
      • WEB网站构建解决方案中的网络服务:LAMP是目前最流行的web网站构建解决方案;Apache提供网页服务;MySQL作为后台数据存储(服务监听于TCP3306);PHP语言开发应用程序。
      • FTP、Samba等文件共享服务:Linux支持多种不同文件共享服务协议,如FTP和Samba服务。FTP一般监听于TCP20和21端口;somba是让UNIX类系统与Windows系统的SMB/CIFS网络协议相连接的网络服务,监听于TCP445端口。
      • 电子邮件收发服务:Sendmail存在大量不安全的漏洞。
      • 防范措施:禁用所有不必要的网络服务;及时更新网络服务版本;尽量使用安全的网络协议和应用程序;使用防火墙添加网络访问控制机制;建立入侵检测与应急响应计划流程。
    • 攻击Linux客户端程序和用户

      • 客户端程序:火狐浏览器和雷鸟电子邮件客户端均存在不安全的漏洞。在一些站点上植入包含恶意渗透攻击的代码链接,客户端如果存在漏洞地访问这些链接,将会被植入一些恶意可执行程序。
      • 攻击Linux系统用户
      • 防范措施:尽量保证网络客户端及时更新;了解各种社会工程学技术防止被骗。
    • 攻击路由器和监听器:包括libcap抓包库、tcpdump命令行程序、wireshark网络监听与协议分析软件、snort入侵检测系统。

      • 防范措施:意识到网络与安全设备自身的安全性也很重要。

    (四)本地安全攻防技术

    • 本地特权提升:攻击者方法有破解root用户的口令;发掘并利用su或sudo提权;攻击用户态SUID特权提升漏洞。
      • 用户口令字破解:系统在设置用户口令时,根据配置选择加密或哈希算法对用户进行加密,这些算法可以使攻击者无法直接从密文反推明文口令。
      • 利用sudo的缺陷进行特权提升:存在绕过身份认证的漏洞;存在sudoedit路径误配置提权漏洞。
      • 利用SUID程序漏洞进行特权提升:在普通用户修改文件的权限时,会被提升至root权限,攻击者可以利用这个时候进行攻击。
      • 针对SUID还有本地缓冲区溢出攻击:符号链接攻击;竞争条件攻击;共享函数库攻击。还有利用内核态空间代码漏洞进行特权提升:利用系统配置不当实施本地特权提升。
      • 防范措施:对一些不必要设置SUID特权的程序,应尽量加以移除;使用SELinux等安全增强模块;及时更新和维护系统。
    • 消踪灭迹:审计日志主要在/var/log下,攻击者要想办法清除自己的活动轨迹。
    • 远程控制后门程序:包括特洛伊化的木马程序、命令行后门程序和图形化的后门程序。

    二.实践过程

    实践一:使用Metasploit软件攻击靶机上的Samba服务usermap_script漏洞,获取目标主机的访问权。

    虚拟机 [IP地址
    kali 192.168.200.3
    SEED 192.168.200.4(攻击不成功)
    Metasploitable 192.168.200.125
    • 使用kali作为攻击机,SEED作为靶机进行实践。在kali中打开Metasploit软件,输入search somba
      查找攻击samba服务模块,找到exploit/multi/samba/usermap_script。
    • 输入use multi/samba/usermap_script
    • 再输入show payloads查看攻击载荷,我们选择攻击载荷bind_netcat,该攻击载荷运行后启动netcat并绑定shell到一个开放端口上。
    • 输入set payload cmd/unix/bind_netcat设置好载荷,show options查看配置,刚使用的seed靶机攻击不成功,可能是因为他不含有这个漏洞,下面换一个Linux靶机Metasploitable192.168.200.125,输入set RHOST 192.168.200.125设置靶机IP地址。发动攻击,返回来一个session,表明攻击成功。
    • 看一下权限和IP地址,都是靶机的内容。

    实践二:攻击方使用Metasploit软件对Linux靶机网络攻击,防御方使用Wireshark捕获攻击流,分析攻击者利用那个漏洞进行攻击。

    攻击方尽可能获得获得远程控制权,尝试获得root权限;
    防守方结合分析过程获得攻击者IP地址、目标IP和端口、发起攻击的时间、攻击利用漏洞、使用的Shellcode和成功之后在本地执行命令输入的信息。
    
    • 攻击实践如实验一所示;下面对实验一的攻击进行分析,打开wireshark进行抓包,看到首先三次TCP握手连接,可知攻击机是192.168.200.3,靶机是192.168.200.125;源端口是43555,目的端口是139。
    • 发起攻击的时间为三次握手后的第一个SMB服务协议请求,SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。
    • 查看停TCP流,发现攻击者攻击成功后输入了ifconfigwhoami指令。
    • 本次攻击只有两个TCP流,发现有登录靶机的一些代码,shellcode;其中nohup是不挂断的意思,该命令可以在你退出帐户/关闭终端之后继续运行相应的进程;关于分析所用漏洞和shellcode还需要进一步学习。

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

    • 问题1:实践一不能成功攻击SEED虚拟机
    • 问题1解决方案:查找资料,发现Metasploitable虚拟机才是含有许多漏洞的机子,SEED可能不含有此漏洞,换了一台靶机后成功。
    • 问题2:启动msfconsole时,出现错误。
    • 问题2解决方案:网上查找原因发现是没有带启动数据库支持的MSF服务,后面输入如下代码后可以打开。

    四.实践总结

    • 本次实践大多由自己完成,已有之前的经验参考一下资料还OK,对于wireshark分析的那里,我只有两个tcp流,第二个是会话,第一个应该可以分析出使用的漏洞,但在网上搜索不到结果。如果再能抓几个包分析就好了,可能是这个漏洞太容易被攻破了吧。
    • 最后一次实践作业了,从刚开始的煎熬,到如今的习以为常,其实还是蛮有收获的,至少对网络攻击防御的一个大体流程有了了解,为今后实际操作打下了基础。但是对于网络的原理、基础知识啊实在是太弱了,有待于加强!
    • 有许多无奈和困难都挺过来了,想想也挺开心的,希望后面的分析论文的实践也能顺利吧!

    参考资料

  • 相关阅读:
    关于宏定义与内联函数
    vsv
    nginx与php之间的通信
    php高级
    PHP基础知识
    php结合redis实现高并发下的抢购、秒杀功能
    MySQL索引优化
    PHP基础(谈一谈Session&Cookie)
    Yii2框架查询指定字段和获取添加数据的id
    linux常用命令
  • 原文地址:https://www.cnblogs.com/dkyzsm/p/12724941.html
Copyright © 2011-2022 走看看