20199119 2019-2020-2 《网络攻防实践》第8周作业
linux攻防
1.实践内容
Linux的优势:
- 跨平台的硬件支持
- 丰富的软件支持
- 多用户多任务
- 可靠的安全性
- 良好的稳定性
- 完善的网络功能
linux系统结构
linux操作系统内核结构属于一种典型的宏内核结构。
linux操作系统安全机制
身份认证机制
- linux是一个多用户多任务的操作系统,通过创建多种角色类型的用户及用户组来实施用户身份管理,来确保多个用户安全地使用linux操作系统。
- linux用户分为:root根用户、普通用户、系统用户;用户信息保存在/etc/passwd文件中。
- linux用户组:是具有相同特征的用户账号集合,用户组信息保存在系统的/etc/group文件中
- linux本地登录用户认证机制和远程登录用户认证机制。
- linux的统一身份认证中间件——PAM(可插入身份认证模块)。
授权与访问控制机制
- 所有文件与设备资源的访问控制都通过VFS虚拟文件系统来实现。
- 在linux的虚拟文件系统安全模型中,主要通过文件所有者,文件访问权限和一些特殊权限位来进行系统的授权与访问控制。
- 不足:只能将用户分为所有者、所有者所在组和其他用户,无法做到更细划分。
安全审计机制
主要通过三个主要的日志子系统来实现。
- 连接时间日志:由多个程序执行,使系统管理员能够跟踪谁在何时登录到系统。
- 进程统计日志:由系统内核执行,当一个进程终止时,为每个进程往进程统计文件中写一个记录。
- 错误日志记录:由通用的日志记录服务syslogd(8)执行 。
Linux系统远程攻防技术
远程口令字猜测攻击
防范:
- 确保每个用户都有自己的有效账户和口令字,而不是使用一个Root账户。
- 对于特权账户应避免直接远程登录,只能在本地登录。
- 口令长度至少达到8字符,包含字母、数字和标点符号。
- 对多次认证失败进行纪录,并在多次无效登录之后断掉连接
- 不要在自己可登录的所有系统上都使用相同的口令字
- 不要笔录自己的口令字,不告知他人
- 使用基于公开密钥证书的身份认证机制。
- 修改端口,使用防御软件
网络服务远程渗透攻击
防范:
- 禁用所有不需要的网络服务
- 选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署
- 及时更新网络服务版本
- 使用xinetd、防火墙为Linux网络服务添加网络访问控制机制
- 建立入侵检测与应急响应计划流程
攻击Linux客户端程序和用户
防范:
- 常用软件及时更新
攻击路由器和监听器
防范:
- 及时修补设备和软件已知的安全漏洞和弱点
Linux系统本地安全攻防技术
本地特权提升
-
破解根用户口令;利用su或sudo程序中的安全漏洞;攻击具有root权限的代码执行漏洞,分为攻击用户态SUID特权提升漏洞和攻击Linux内核代码特权提升漏洞;搜索全局可写的敏感文件。
-
口令猜测:破解/etc/shadow文件中口令字段密文(获取权限后获取文件,进而破解口令)。
-
sudo缺陷:设计漏洞及文件配置漏洞。
-
针对SUID程序漏洞的提权:利用所有者为root的SUID程序漏洞读取加密口令文件,并进行破解。
-
利用内核空间代码漏洞
-
利用系统配置不当的漏洞:包括敏感文件的全局可写等。
防范措施:移除不必要设置SUID特权的程序,更新维护linux内核,实施强访问控制。
消踪灭迹
- 抹除活动日志,禁止shell的历史记录功能。
防范:将日志信息写入难以修改的媒介上或发送到安全的服务器上。
远程控制后门
- Linux系统上植入远程控制后门程序的类型:特洛伊木马化的系统程序、命令行后门工具、图形化后门工具。使用Rootkit技术隐藏后门程序
防范:使用LIDS等程序帮助抵抗。
2.实践过程
显示出所有能用的payload,选择与上次使用的reverse
得到正确远程shell,权限为root
首先通过Nessus扫描Linux靶机
选择6667端口服务漏洞,通过nmap扫描得到服务版本
用msfconsole使用命令search +服务版本
,即可查出可利用的漏洞,之后就是将options中的yes选项设置一下,之后run
,得到shell
查看权限,为root,不用提权...
从运行run之前打开wireshark,第一个TCP包,kali向linux靶机发起请求连接,为攻击开始时间,攻击机IP则为192.168.200.4
,目标IP为192.168.200.125
,端口为6667
抓包查看到是向靶机6667端口发起请求,通过搜索查询知道在Metasploitable2 的6667端口上运行着UnreaIRCD IRC的守护进程。这个版本包含一个后门,通过在一个系统命令后面添加两个字母”AB“发送给被攻击服务器任意一个监听该端口来触发。于是通过查看IRC协议数据包追踪TCP流,可以看到shellcode
linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1
的作用就是让标准输出重定向到/dev/null
中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null
中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。我理解是消除踪迹?
查看TCP流,发现攻击机在本地输入执行命令为查询权限
通过去厂商网站下载升级补丁可以修复这个漏洞
3.学习中遇到的问题及解决
问题1:分析shellcode相当困难?
解决:通过搜索引擎,似懂非懂
4.实践总结
又是一个坎坷的实验,动手简单,用命令即可,分析确实要了老命,难受的是写的博客又双叒叕没有保存,只好再次写了一遍,还是原理理解着相当困难,需要补基础...