20212905 2021-2022-2 《网络攻防实践》第七次作业
20212905 2021-2022-2 《网络攻防实践》第七次作业
1.实验内容
- 使用Metasploit进行Linux远程渗透攻击
- 实践作业:攻防对抗实践
Linux 系统结构
内存管理
对任何一台计算机而言,其内存以及其它资源都是有限的。为了让有限的物理内存满足应用程序对内存的大需求量,Linux 采用了称为“虚拟内存”的内存管理方式。Linux 将内存划分为容易处理的“内存页”(对于大部分体系结构来说都是 4KB)。Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。
不过内存管理要管理的可不止 4KB 缓冲区。Linux 提供了对 4KB 缓冲区的抽象,例如 slab 分配器。这种内存管理模式使用 4KB 缓冲区为基数,然后从中分配结构,并跟踪内存页使用情况,比如哪些内存页是满的,哪些页面没有完全使用,哪些页面为空。这样就允许该模式根据系统需要来动态调整内存使用。
为了支持多个用户使用内存,有时会出现可用内存被消耗光的情况。由于这个原因,页面可以移出内存并放入磁盘中。这个过程称为交换,因为页面会被从内存交换到硬盘上。内存管理的源代码可以在./linux/mm中找到。
进程管理
进程实际是某特定应用程序的一个运行实体。在 Linux 系统中,能够同时运行多个进程,Linux 通过在短的时间间隔内轮流运行这些进程而实现“多任务”。这一短的时间间隔称为“时间片”,让进程轮流运行的方法称为“进程调度”,完成调度的程序称为调度程序。
进程调度控制进程对 CPU 的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待 CPU 资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux 使用了比较简单的基于优先级的进程调度算法选择新的进程。
通过多任务机制,每个进程可认为只有自己独占计算机,从而简化程序的编写。每个进程有自己单独的地址空间,并且只能由这一进程访问,这样,操作系统避免了进程之间的互相干扰以及“坏”程序对系统可能造成的危害。 为了完成某特定任务,有时需要综合两个程序的功能,例如一个程序输出文本,而另一个程序对文本进行排序。为此,操作系统还提供进程间的通讯机制来帮助完成这样的任务。Linux 中常见的进程间通讯机制有信号、管道、共享内存、信号量和套接字等。
内核通过 SCI 提供了一个应用程序编程接口(API)来创建一个新进程(fork、exec 或 Portable Operating System Interface (POSⅨ) 函数),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)。
文件系统
和 DOS 等操作系统不同,Linux 操作系统中单独的文件系统并不是由驱动器号或驱动器名称(如 A: 或 C: 等)来标识的。相反,和 UNIX 操作系统一样,Linux 操作系统将独立的文件系统组合成了一个层次化的树形结构,并且由一个单独的实体代表这一文件系统。Linux 将新的文件系统通过一个称为“挂装”或“挂上”的操作将其挂装到某个目录上,从而让不同的文件系统结合成为一个整体。Linux 操作系统的一个重要特点是它支持许多不同类型的文件系统。Linux 中最普遍使用的文件系统是 Ext2,它也是 Linux 土生土长的文件系统。但 Linux 也能够支持 FAT、VFAT、FAT32、MINIX 等不同类型的文件系统,从而可以方便地和其它操作系统交换数据。由于 Linux 支持许多不同的文件系统,并且将它们组织成了一个统一的虚拟文件系统.
Linux 授权与访问控制机制
Linux 通过 VFS 虚拟文件系统来实现对不同类别文件系统格式的支持,并同时通过设备义件类型来统一集成对其他类型系统资源的管理。”一切皆是文件” 是 Linux 的基本哲学之一。 不仅普通的文件,目录、字符设备、块设备、套接字等在 UNIX/Linux 中都是以文件被对待,它们虽然类型不同,但是对其提供的却是同一套操作界面。
文件的所有者:每个 Linux 文件都拥有其所有者,表明了该文件属于哪个用户所有,以文件所有者的 uid 以及文件所有者所在组的 gid 来指明,在用户创建文件时,文件系统将自动设置新文件的所有者及其所在组,并自动地赋予文件所有者读/写的权限。文件的所有者可以通过 chown 命令进行修改。
文件的访问权限:
R (Read, 读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
W (Write, 写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
X (execute,执行):对文件而言,具有执行文件的权限;对目录来说该用户具有进入目录的权限。
Linux 访问控制机制的不足及改进:Linux所采用的这种访间控制机制非常简单高效,但也存在着一些不足,最重要的是只能将用户分为所有者、所有者所在组和其他用户这三种类别分配权限,而无法做到更细粒度的权限控制,如不支待完整的 ACL(访问控制列表)设置。
Linux 系统远程攻防技术
从远程网络上侵入 Linux 系统的主要方法在目前来说,不外乎如下四种:
对 Linux 系统各种网络服务的身份认证过程所涉及的用户口令字进行猜测攻击,期望破解出某一服务真实有效的用户账户和口令,从而假冒该用户的身份进入系统。
发掘 Linux 系统某个监听网络服务的安全漏洞并进行利用,在攻击目标服务进程中注入攻击负载模块代码进行执行,从而为攻击者提供本地 Shell 的访问权。
通过网页木马、发送欺诈邮件、提供特洛伊木马程序等技术和社会工程学手段,来攻击客户端程序和用户,由客户端软件或用户来安装和执行恶意程序,从而主动向攻击者打开 Linux 系统的大门。
在 Linux 系统作为连接多个网络的路由器,或者打开“混杂模式”实施网络嗅探的监听器时,可能遭受攻击者特意构造的数据包攻击,从而被攻击者取得访问权。
针对网络服务远程渗透攻击的安全防范措施
禁用所有不必要的网络服务;
尽量选择更安全的网络协议与服务软件,并使用最佳安全实践进行部署;
及时更新网络服务版本;
使用 xinetd、防火墙为 Linux 网络服务添加网络访问控制机制;
建立入侵检测与应急响应计划流程。
2.实验过程
2.1 使用Metasploit进行Linux远程渗透攻击
任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;
②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);
④设置渗透攻击参数(RHOST,LHOST,TARGET等);
⑤执行渗透攻击;
⑥查看是否正确得到远程Shell,并查看获得的权限。
用到的主机和IP地址为:
主机 | IP地址 |
---|---|
靶机A(Metasploitable-Linux) | 192.168.200.197 |
攻击机B(kali) | 192.168.200.195 |
首先使用nmap对靶机进行扫描
发现开启了139和445端口,使用msf尝试对samba服务进行攻击
打开msf,搜索并使用usermap_script模块
使用options查看需要设置的选项,设置rhosts为靶机的ip地址
设置payload为cmd/unix/reverse_netcat
,执行exploit,反向连接获得了一个root shell
实践作业:攻防对抗实践
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
防守方:使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
用到的主机和IP地址为:
主机 | IP地址 |
---|---|
防守方(Metasploitable-Linux) | 192.168.237.194 |
攻击方(kali) | 192.168.237.98 |
我作为防守方,20212906作为攻击方,将防守方的靶机与攻击方的攻击机连接至同一局域网
首先使用tcpdump捕获流量,命令为sudo tcpdump -i eth0 -w 333.cap
然后攻击方使用msf攻击防守方
在靶机上使用ctrl-c停止捕获数据包,然后使用http或ftp将数据包下载下来
在本机使用wireshark打开数据包,进行分析
发现攻击机的ip为192.168.237.98,攻击机的4444端口与靶机进行了连接
发起攻击的时间是Apr 25, 2022 19:50:02.733151000 CST
然后攻击机执行了id命令,发现获得了一个root权限的shell。接着攻击机又执行了pwd
,ls
,并且使用mkdir 111
在根目录创建了一个文件夹
3.学习中遇到的问题及解决
使用渗透模块攻击后无法建立会话,不断地试别的漏洞总算找到了成功的
4.实践总结
通过本次实验,学习掌握了使用使用Metasploit进行Linux远程渗透攻击,并且进行了攻防对抗实践,然后通过取证分析,分析了了一次成功的Linux远程渗透攻击,对Linux系统攻防有了更加深入的体会。