20199326 2019-2020-2 《网络攻防实践》第八周作业
实践内容
8.1 Linux操作系统基本框架概述
Linux操作系统在服务器、安全敏感部门以及移动终端市场(Android)上占据重要地位,在桌面操作系统上的市场占有率较低。
Linux的优势:
- 跨平台的硬件支持
- 丰富的软件支持
- 多用户多任务
- 可靠地安全性
- 良好的稳定性
- 完善的网络功能
linux是一种典型的宏内核结构。在硬件抽象层中的各类设备驱动程序可以完全访问硬件设备,方便地以模块化形式设置,并在系统运行期间可直接通过LKM(Loadable Kernel Module)机制装载或卸载。在硬件抽象层上是内核服务功能模块,包括进程管理,内存管理,文件系统,设备控制与网络这五个子系统。而这些内核模块通过系统调用接口向用户态的GNU运行库及工具、命令行Shell、X窗口以及应用软件提供服务。Linux操作系统内核结构图如下图。
8.2 Linux操作系统安全机制
Linux os的核心安全机制也主要是身份认证、授权与访问控制、安全审计这三个部分。
Linux是一个多用户多任务的OS,通过创建多种角色类型的用户以及用户组来实施用户身份管理,来确保多个用户安全地使用Linux OS。
Linux用户信息保存在系统的/etc/passwd文件中,加密口令字则存放在/etc/shadow文件中,只对Root可读。
目前的Linux系统普遍采用SSH服务进行远程用户登录与网络访问,SSH提供两种方式的用户身份认证机制:
- 基于口令的身份认证,就是用户名密码这种
- 基于非对称密钥的身份认证,简单来说,公钥在服务器上,私钥在本地,你想要访问远程服务器,就需要以证书方式进行认证。服务器用公钥加密个东西发给你,你需要用私钥解密下发给服务器
为了能够给不同的应用软件,网络服务提供统一的身份认证机制,Linux系统中提供了PAM(可插入身份认证模块),作为一种验证用户身份的灵活与标准方法。
PAM支持四种管理界面:
- 认证管理
- 账户管理
- 密码管理
- 会话管理
一切皆是文件
通过以下三个主要的日志子系统来实现
- 连接时间日志:管理员能跟踪谁在何时登陆了系统
- 进程统计日志:为系统中的基本服务提供命令使用统计
- 错误日志记录:报告一些值得注意的事件
常用的日志文件如下:
8.3 Linux系统远程攻防技术
-
Linux远程口令字猜测攻击
工具软件: -
Brutus
-
THC HYDRA
-
Cain and Abel
-
Linux网络服务远程渗透攻击
-
攻击Linux客户端程序和用户
-
攻击Linux路由器和监听器
8.4 Linux系统本地安全攻防技术
一是破解出Root用户的口令,然后执行su或sudo命令进行提升
二是发掘并利用su或sudo程序中的安全漏洞
三是攻击用户态SUID特权提升漏洞以及攻击Linux内核代码特权提升漏洞
四是从系统中搜索全局可写的敏感文件与目录位置并加以利用
/etc/shadow文件中的记录行是与/etc/passwd文件一一对应的,每一行都记录着Linux系统中一个用户账户的登录凭证密文信息,字段之间用“:”隔开,如下图
破解软件:John the Ripper
实践过程
前置准备
机子 | ip |
---|---|
kali | 192.168.200.3 |
metasploitable linux | 192.168.200.125 |
实践一
漏洞简介:SambaMS-RPC Shell命令注入漏洞
Samba中负责在SAM数据库更新用户口令的代码未经过滤便将用户输入传输给了/bin/sh。如果在调用smb.conf中定义的外部脚本时,通过对/bin/sh的MS-RPC调用提交了恶意输入的话,就可能允许攻击者以nobody用户的权限执行任意命令。
1:打开msfconsole,然后搜一下usermap这个漏洞,如下图
2:设置负载模块为18(设置哪个都可以,目的都是为了获取shell)
3:设置攻击机ip和靶机ip
4:攻击
5:输入whoami查看你是谁,看到是root,说明我们获取了root权限,无所不能了。
6:查看一下所在组(可有可无的操作)
实践二
搜索metasploitable的漏洞,本来在nessus上扫描,发现扫描出来的都用不了,在网上各种查资料,最后找到了一个叫做distcc的漏洞。这个漏洞是干啥的呢。
Distcc用于大量代码在网络服务器上的分布式编译,但是如果配置不严格,容易被滥用执行命令,该漏洞是XCode1.5版本及其他版本的distcc2.x版本配置对于服务器端口的访问不限制。
下面开始实验。
攻击方
1:先搜一下这个漏洞
2:设置一下靶机IP(无需设置负载模块)
3:渗透攻击
4:攻击成功,输入whoami
看看自己是谁,发现是daemon,
5:然后看一下存用户的那个文件,看一下daemon的信息,不是root,需要提权(暂时不会提权,先搁着)
防守方
1:打开wireshark开始抓包,从下图可以看出源IP,目的IP,端口等信息
2:从包类型可以看出来,除了3个distcc包,剩下的都是tcp包。
3:那我们就看一下这三个distcc包里都有哪些信息。打开这三个包,可以看到明文shell,这个应该就是shellcode了。
4:在后面找一段连续的tcp包跟踪,发现了我输入过的命令等
实验结束。
学习感想和体会
这次实验总体跟上次是一样的,不过需要提权,有点难,暂时还不会提权,需要学习学习。
学习中遇到的问题及解决
问题1:找不到nessus在哪
查了资料后发现,nessus在 /opt/nessus/sbin目录