20212931 2021-2022-2 《网络攻防实践》第七次实验任务
一、实践内容
(一)基础知识
Linux操作系统基本框架概述
-
Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。
内核:内核是操作系统的核心。Linux内核的模块分为以下几个部分:存储管理、CPU进程管理、文件系统、设备管理、网络通信、系统调用等。内存管理:Linux采用了称为虚拟内存的内存管理方式。允许多个进程安全地共享物理内存区域,在32位机器上,每个进程拥有独立的4GB虚拟内存空间,其中内核的代码与数据段被映射到3GB以上的空间,用户态代码申请的虚拟内存空间为0-3GB区间。
进程管理:进程实际是某特定应用程序的一个运行实体。Linux采用抢占式多用户进程模式,,由内核的进程管理模块来负责调度硬件资源进行使用,进程作为最基本的调度单元,维护一个进程控制块结构。
文件系统:Linux将独立的文件系统组合成了一个层次化的树形结构,并且由一个单独的实体代表这一文件系统。虚拟文件系统(VFS)是Linux内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象(一切皆文件的特性)。
网络接口:网络接口可分为网络协议和网络驱动程序。网络接口提供了对各种网络标准的存取和各种网络硬件的支持。网络协议部分负责实现每一种可能的网络传输协议。Linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。
系统调用:Linux提供系统调用接口,允许应用程序透过接口访问硬件设备和其他系统资源,有助于保证Linux系统的稳定可靠和安全,并为用户空间提供了一种统一的抽象接口,有助于应用程序的跨平台移植。
Linux操作系统安全机制
-
1.身份认证
用户:root用户、普通用户、系统用户。用户信息保存在/etc/password文件中,加密口令存放在/etc/shadow/中,只对root可读。
用户组:具有相同特征的用户账户集合,用于简化整个系统的用户权限管理,通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限。用户组的信息保存在系统的/etc/group/文件中,加密口令保存在/etc/gshadow/中。
统一身份认证中间件—PAM:一种验证用户身份的灵活与标准的方法。PAM通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要,给不同的服务配置不同的认证方式,同时也便于向系统中添加新的认证手段。
-
2.授权与访问控制
每个文件都拥有其所有者,表明了该文件属于哪个用户所有,以文件所有者的uid以及文件所有者所在组的gid来指明。
每个用户的专属初始目录权限为rwx------,即只有所有者拥有浏览、删除、修改和进入的权限。r=4,w=2,x=1,所以通常的使用修改权限命令chmod后面跟着的数字777就是rwxrwxrwx。
SUID和SGID被称为特权。SUID权限允许可执行文件在运行时刻从运行者的身份提升至文件所有者权限,可以任意存取文件所有者能使用的全部系统资源。SGID在程序执行时以所有者的组的权限进行运行,该程序就可以任意存取整个用户组能够使用的系统资源。
Linux远程安全攻防技术
> 远程网络侵入Linux系统的主要有四种方法:
> 口令字猜测攻击,假冒该用户的身份进入系统(原始而实用,彩虹表的提出是一个重大的突破)。
> 寻找Linux系统某个监听网络服务的安全漏洞并进行利用攻击(注入攻击负载模块代码)。
> 通过网页木马、发送诈欺邮件、提供特洛伊木马程序等技术和社会工程学手段,获取用户口令。
> 在Linux系统作为连接多个网络的路由器,或者打开“混杂模式”实施网络嗅探的监听器时,可能遭受攻击者特意构造的数据包攻击。
-
- 远程口令字猜测攻击(暴力爆破、字典爆破)
攻击工具:Brutus(不再更新)、THC Hydra(支持多种协议)、Caun and Abel(针对Windows和Linux)。
防御方法:使用强口令字、使用一些口令猜测的防攻击软件、不要在多个地方用同一个密码(这点很重要,因为用户可以捕获某些比较弱的网站从而得到密码)、现在已经有很多新技术可以有效防止被爆破(彩虹表、盐、胡椒等)。 -
- 网络服务远程渗透攻击(针对Linux内核中的网络协议栈的代码漏洞攻击)
典型代表:
LAMP Web网站构建解决方案中的组合服务拓展模块、FTP Samba等文件共享服务、openssh tcp22、openssl tcp443、nfs tcp/udp2049等
防范措施:
禁用所有不需要的网络服务。
尽量选择更加安全的网络协议与服务软件。
及时更新网络服务版本。
使用xinetd、防火墙为Linux网络服务添加网络访问控制机制。
建立入侵检测机制与应急响应计划流程。 -
- 攻击Linux客户端程序和用户(应用程序漏洞、社工针对用户个体进行诱导)
防范措施:
Linux用户应尽量保证常用网络客户端软件的及时更新(开启自动更新机制)。
了解各种社会工程学技术,提高自身的抗欺骗能力。 -
- 攻击Linux路由器和监听器
攻击Linux路由器与防火墙:主要是攻击netfilter模块的漏洞。
攻击监听器及入侵检测器:tcpdump中存在在大量的拒绝服务、缓冲区溢出、本地特权提升等漏洞。
防范措施:
网络与安全设备自身的安全性与可用性非常重要,对于维护网络中的设备,应及时关注厂商的安全威胁报告,并对已发现的安全问题进行修补。
网络管理员在构建网络安全防御、检测与相应体系时,应站在攻击者角度,掌握攻击者的渗透入侵技术手段。
Linux本地安全攻防技术
-
- 本地特权提升:
破解root口令
发掘sudo程序漏洞
攻击用户态带有SUID特殊权限位的软件 - 2.清理痕迹:
清除审计日志(/var/log)和shell命令历史记录
-
- 防范技术:
查看系统的SUID特权程序。
提升对抗入侵的防护水平。
定期进行软件的更新。
使用强口令字。
使用SELinux。
(二)实践内容
针对Linux系统存在漏洞进行远程渗透攻击,使用工具Metasploit,对靶机进行渗透,获取权限,同时与同学进行模拟实际攻防对抗过程,攻防角色互换。
二、实践过程
(一)实践一:使用Metasploit进行Linux远程渗透攻击
> 攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。
- 1.攻击机信息:Kali 192.168.60.3 靶机信息:Metasploit Ubuntu 192.168.60.6
- 2.首先使用nmap扫描靶机,确定攻击的端口是否开放
-
- 启动Metasploit,search samba寻找合适的渗透模块,然后调用模块exploit/multi/samba/usermap_script
-
- 设置攻击载荷set payload cmd/unix/bind_netcat并配置IP选项
-
- 攻击并获取权限,查看当前IP和权限账户(whoami),确认为root权限
(一)实践二:攻防对抗实践
攻击方
-
- 攻击机(ry)信息:Kali 192.168.11.126 靶机(zx)信息:Metasploit Ubuntu 192.168.11.149
-
- 类似于实践一,首先使用nmap扫描靶机,获取靶机的基本情况
-
- 使用Nessus对其进行漏洞扫描,在等待过程中,我去搜索了一下metasploitable的相关漏洞,确定尝试Usermap_script安全漏洞和Root用户弱口令漏洞(SSH爆破)。
Usermap_script安全漏洞和实践一相同
Root用户弱口令漏洞要复杂一点
首先搜索一下相关模块ssh_login
然后调用攻击模块use auxiliary/scanner/ssh/ssh_login,设置IP配置,设置攻击的用户名,设置攻击所使用的字典文件,以及线程数
其中使用的字典文件需要提前生成,kali虽然自带有(路径:/usr/share/wordlists/),但是常用的都试了一遍,没一个成功的,建议还是自己根据信息生成一下,我用的crunch工具,注意设置好长度和字符范围,否则计算机能跑炸。
最后成功攻入靶机(爆破是真的慢,而且痕迹太多,一抓包全是痕迹),留了点小痕迹以表回敬。
防守方
-
- 攻击机(zx)信息:Kali 192.168.11.165 靶机(ry)信息:Metasploit Ubuntu 192.168.11.130
-
- 捕获的数据包如下,可以很明显看到其中一个SMB数据包数据信息异常
-
- 查看其数据信息,可以获得一些系统信息,同时追踪其信息流,可以发现其攻击的code,查询其code可以判断使用的漏洞为Samba服务 usermap_script安全漏洞。
nohup:就是no hangup,不要挂断,忽略hup信号。标准输出内容会输出到当前目录的nohup.out日志文件中而不终端显示。
2&>1:linux中的文件号,1是标准输出流,2是错误输出流,此处&>的意思是合并 标准输出和错误输出并重定向。 -
- 而后续攻入的操作便很简单。
三、实验所遇问题
- 问题:使用字典攻击时生成字典文件过于庞大
- 解决方案:重新搜集靶机信息,缩小字典生成范围
四、实践总结
本次实验使用Metasploit进行对Linux的远程渗透攻击,同时实践了进一步实践了从信息搜集到攻击的完整攻击过程,分析了攻击方被捕获的数据,加深了对攻击的分析和认知,与此同时也深刻感受到,无处不在的漏洞和攻击数据流的明显特征。