20212805 2021-2022-2 《网络攻防实践》第七次(第九周)作业

一、知识点梳理与总结

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

  • Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构

  • 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性

  • Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理

1.1.1 Linux系统进程和线程管理机制

  • Linux内核采用抢占式多用户多进程(multiprocessing)模式,多个进程并发活动,由内核的进程管理模块负责调度

  • 内核通过 SCI 提供了一个应用程序编程接口(API)来创建一个新进程、停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)

1.1.2 Linux系统内存管理机制

  • 内存管理:是Linux内核中最重要的子系统,它主要提供对内存资源的访问控制。每个进程有自己单独的地址空间,并且只能由这一进程访问,这样,操作系统避免了进程之间的互相干扰以及“坏”程序对系统可能造成的危害

  • Linux将虚拟地址空间划分为两个部分,分别为内核空间和用户空间

  • 虚拟内存:在32位的i386机器上,每个进程拥有独立的4GB虚拟内存空间,内核的代码与数据段被映射到3GB以上的空间,而用户态代码申请的虚拟内存空间为0-3GB区间,每个进程使用两套段描述符来访问内核态和用户态的内存空间

1.1.3 Linux系统的文件系统管理机制

  • 使用虚拟文件管理机制VFS

  • 支持的逻辑文件系统:ext2,ext3,ext4,vfat,ntfs

  • 通过设备驱动程序访问特定硬件设备

1.1.4 Linux系统的设备处理机制

  • 设备驱动程序:Linux内核中处理或者管理硬件控制器的软件

  • 基本特点是:抽象了设备的处理

  • Linux支持三类硬件设备:字符设备、块设备和网络设备

1.1.5 Linux系统的网络机制

Linux内核中的网络模块提供了对各种网络标准的存取和各种网络硬件的支持,网络接口分为网络协议栈和网络驱动程序。网络协议栈负责实现每一种可能的网络传输协议,其结构如图

1.1.6 Linux系统的调用机制

  • 系统调用:程序透过访问接口来访问硬件设备和其他系统资源

  • Linux系统的系统调用通过软中断来实现

1.2 Linux操作系统安全机制

1.2.1 Linux身份认证机制

  • Linux是一个多用户多任务的操作系统,通过创建多种角色类型的用户和用户组来实施用户身份管理

  • Linux用户的类型有:

用户类型权限
root用户 拥有最高权限的用户,因此很受攻击者青睐
普通用户 由使用者创建并使用的用户,权限受限
系统用户 没有登陆的能力,用于系统运行的用户

 

  • Linux用户组:具有相同特征的用户集合,同一组内的用户有相同的权限

  • 登录认证机制:通过init进程执行启动getty产生若干个虚拟控制台,每个控制台执行login进程进入认证过程。login进程通过Crypt()函数对用户输入的口令进行验证,认证通过之后,login进程会fork响应的Shell子进程,至此完成登录过程

  • Linux的远程登录认证机制:第一种是基于口令的身份认证机制;第二种是基于非对称密码的身份认证机制。此外Linux系统中的大量网络服务都实现了自己的身份认证机制,如MD5散列、LANMAN\NTLM散列算法等等

1.2.2 Linux授权与访问控制机制

  • Linux所有文件与设备资源的访问控制都是通过VFS虚拟文件系统来实现的

  • 文件所有者:使用文件所有者的uid和gid来指明文件的所有者,在用户创建文件的时候自动进行写入

  • 文件访问权限:文件访问权限通过附带的10个标志位来来进行设置。 第一位表示文件类型,二至九位每三位分成一组。组内三位分别表示,读取权限、写入权限和执行权限。三组分别代表所有者、所有组和所有用户

模式权限
R(Read,读取) 具有读取文件内容的权限
W(Write,写入) 具有新增、修改文件内容的权限
X(eXecute,执行) 具有执行文件的权限

 

  • 特殊执行权限:设置了SUID或SGID的文件。SUID允许执行文件在运行时刻从运行者的身份提升至文件所有者权限。SGID与SUID类似,仅仅是以权限组的形式进行运行

  • 不足及改进:访问权限的细粒度不足,不支持完整的ACL访问控制列表设置

1.2.3 Linux安全审计机制

三个日志子系统:连接时间日志、进程统计日志和错误日志纪录

 

1.3 Linux系统远程攻防技术

从远程网络侵入linux有如下几种

  • 对linux的网络服务的身份验证过程中用户口令进行猜测攻击

  • 发现系统某个监听网络服务的漏洞并进行利用,注入攻击负载模块代码,获得本地shell的访问权

  • 通过网页木马、发送欺诈邮件、提供特洛伊木马程序等技术,加以社会工程学手段开展攻击,由用户主动安装执行恶意程序

  • Linux作为连接多个网络的路由器,或者开启“混杂模式”实施网络嗅探,可能遭受特意构造的数据包攻击,从而获得访问权

1.3.1 远程口令字猜测攻击

  • 通过前面提到的服务嗅探用户账户名或者使用缺省内件账户的用户名进行密码猜测

  • 口令字猜测攻击通常针对使用弱口令的的账户破解

  • 除了SSH网络服务之外,还可以通过对HTTP/HTTPS、FTP等用于自己账户体系和身份认证机制的网络服务进行猜测

  • 口令猜测的常用工具如下:Brutus、THC Hydra、Cain and Abel等工具

1.3.2 网络服务远程渗透攻击

  • Linux内核中的网络协议栈攻击

  • LAMP WEB网站中的网络服务攻击

  • FTP、Samba等文件共享服务

  • 电子邮件收发服务

  • 其他网络服务的攻击

书上列举的Linux系统常用网络服务最近的安全漏洞过于陈旧,这里更新了一些

服务安全漏洞名称CVE编号
Kernel Linux Kernel权限提升安全漏洞 CVE-2018-16276
Apache Apache Tomcat安全绕过漏洞 CVE-2018-1305
Samba Samba远程命令执行漏洞 CVE-2017-7494

 

1.3.3 网络服务远程渗透攻击的安全防范措施

  • 禁用不必要的网络服务

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

  • 及时更新网络服务版本

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

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

1.3.4 攻击Linux客户端程序和用户

应用软件安全漏洞名称CVE编号
Firefox 利用Firefox的堆漏洞进行攻击 CVE-2018-18500
IE IE浏览器远程代码执行高危漏洞 CVE-2019-1367

 

  • 攻击Linux系统用户:在难以攻破服务器的时候,可以通过电话、电子邮件等各种方式来用社会工程学的方法向服务器管理员套取各种信息,或者让其执行某些恶意程序

1.3.5 攻击linux路由器和监听器

  • 针对使用Linux作为路由器系统的路由器的攻击

  • 针对Linux下运行的监听器的攻击,如wireshark、dumpcap等等

1.3.6 针对攻击路由器和监听器的防范

  • 增强安全意识,关注厂商的安全威胁报告

  • 及时进行固件的升级

  • 掌握攻击者的入侵渗透手段,并进行渗透测试

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

1.4.1 Linux本地特权提升

  • 本地特权提升的四种常用方式:破解Root用户的口令、发掘su和sudo程序中的安全漏洞、攻击用户态SUID特权提升漏洞和攻击Linux内核代码特权提升漏洞、从系统中搜搜全局可写的敏感文件与目录位置并加以利用

  • Linux口令字破解:通过/etc/shadow文件中纪录的口令的hash值,获取口令的加密值,后通过已知密文暴力猜测明文

  • sudo缺陷进行特权提升:通过sudo程序的漏洞,绕过程序的身份认证机制,获取权限

  • 利用用户态SUID程序:主要包括利用程序漏洞进行特权提升、本地缓冲区溢出攻击、符号连接攻击、竞争条件攻击、共享函数库攻击等

1.4.2 本地特权提升的防范措施

  • 在安装软件的过程中评估风险

  • 及时对服务器进行升级维护

  • 安全的配置系统,设置强口令字

  • 使用SELinux等安全增强模块

1.4.3 Linux系统上的消踪灭迹

  • 通过对message、auth、secure和xferlog等日志文件进行修改做到日志的清理

  • 通过对.bahs_history文件的清理,清理shell的命令痕迹

  • 防范日志消除

  • 将日志信息写道难以修改的媒体介质上

  • 将日志信息使用syslog网络机制写道防护严密的安全日志服务器上去

1.4.4 Linux系统远程控制后门程序

  • 通过替换对系统原有的远程登录程序进行替换实现后门

  • 通过图形化远程控制软件例如VNC实现攻击

二、实践过程

虚拟机IP
Kali(攻击机) 192.168.13.69
Metasploitable_ubuntu(靶机) 192.168.13.79

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

1、尝试ping通靶机,可以连接

 

 2、打开kali,输入msfconsole,启动msfconsole

 3、选择渗透攻击模块:输入use exploit/multi/samba/usermap_script 选择针对usermap_script 漏洞的渗透攻击模块。

 4、输入show payloads,列举负载模块。

5、 输入set payload cmd/unix/reverse,选择18号攻击负载模块TCP(reverse),使用show options 查看参数,可见我们需要配置靶机和攻击机IP

6、 输入show options查看是否配置成功

 7、输入exploit

 输入ifconfig查看靶机IP与真实IP一致,说明渗透攻击成功。输入whoami查看获得权限为root

2.2 实践作业:攻防对抗实践

1、攻击方式如上述实验所示,此处不再赘述

2、防守方启动wireshark抓包,为更清晰的分析攻击,建议在攻击方run之前启动抓包。

3、首先可以看到攻击机向靶机发送一个SMB的Negotiate Protocol Request(协商协议请求)数据报,服务器响应一个SMB的Negotiate Protocol Response(协商协议响应)数据报

4、 然后攻击机向靶机发起一个Session setup X request(会话设置请求)数据报,靶机确认身份后发送一个Session Setup X Response(会话设置响应)数据报同意本次连接

 5、查看攻击发起时间,时间是2022年4月25日20:42:18

6、 通过命令shellid查看shell权限账户及其所在的权限组,通过命令whomai查看当前权限账户,可以看到权限为root,无所不能

 7、回到wireshark,找到TCP协议密集的地方,追踪TCP流可以看见之前我们输入的命令

三、遇到的问题

在对靶机进行攻击时,一直显示Exploit completed, but no session was created.

请教老师后发现是

如果你使用的是NAT模式,虽然你能访问(远程)目标机器,但是(远程)目标机器却无法访问你,所以导致会话创建失败。

故将靶机网络适配器改为桥接模式

成功解决问题 

posted @ 2022-04-26 22:03  20212805  阅读(56)  评论(0编辑  收藏  举报