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。

graph LR A[Linux用户] -->B[Root根用户 权限最大] A[Linux用户] -->C[普通用户 受限] A[Linux用户] -->D[系统用户 不能登陆系统]

Linux用户信息保存在系统的/etc/passwd文件中,加密口令字则存放在/etc/shadow文件中,只对Root可读。
目前的Linux系统普遍采用SSH服务进行远程用户登录与网络访问,SSH提供两种方式的用户身份认证机制:

  1. 基于口令的身份认证,就是用户名密码这种
  2. 基于非对称密钥的身份认证,简单来说,公钥在服务器上,私钥在本地,你想要访问远程服务器,就需要以证书方式进行认证。服务器用公钥加密个东西发给你,你需要用私钥解密下发给服务器

为了能够给不同的应用软件,网络服务提供统一的身份认证机制,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

实践1要求

实践一

漏洞简介: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:查看一下所在组(可有可无的操作)

实践二

实践2要求

搜索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目录

参考文献

大神总结的metaspolitable的漏洞列表
Linux who命令详解

posted @ 2020-04-19 22:46  不摸鱼  阅读(223)  评论(0编辑  收藏  举报